CMS 3D CMS Logo

L1O2OTestAnalyzerExt.cc
Go to the documentation of this file.
1 #include <iostream>
2 #include <memory>
3 #include <sstream>
4 
7 
12 
14 
21 
24 
25 //
26 // class decleration
27 //
28 
30 public:
31  explicit L1O2OTestAnalyzerExt(const edm::ParameterSet&);
32  ~L1O2OTestAnalyzerExt() override;
33 
34 private:
35  void beginJob() override;
36  void analyze(const edm::Event&, const edm::EventSetup&) override;
37  void endJob() override;
38 
39  // ----------member data ---------------------------
44  std::vector<std::string> m_recordsToPrint;
45 };
46 
48  : m_printL1TriggerKeyExt(iConfig.getParameter<bool>("printL1TriggerKeyExt")),
49  m_printL1TriggerKeyListExt(iConfig.getParameter<bool>("printL1TriggerKeyListExt")),
50  m_printESRecords(iConfig.getParameter<bool>("printESRecords")),
51  m_printPayloadTokens(iConfig.getParameter<bool>("printPayloadTokens")),
52  m_recordsToPrint(iConfig.getParameter<std::vector<std::string> >("recordsToPrint")) {
53  //now do what ever initialization is needed
54 }
55 
57  // do anything here that needs to be done at desctruction time
58  // (e.g. close files, deallocate resources etc.)
59 }
60 
61 // ------------ method called to for each event ------------
63  using namespace edm;
64 
66  // ESHandle< L1TriggerKeyListExt > pList ;
67  // iSetup.get< L1TriggerKeyListExtRcd >().get( pList ) ;
68  L1TriggerKeyListExt pList;
69  l1t::DataWriterExt dataWriter;
70  if (!dataWriter.fillLastTriggerKeyList(pList)) {
71  edm::LogError("L1-O2O") << "Problem getting last L1TriggerKeyListExt";
72  }
73 
74  std::cout << "Found " << pList.tscKeyToTokenMap().size() << " TSC keys:" << std::endl;
75 
76  L1TriggerKeyListExt::KeyToToken::const_iterator iTSCKey = pList.tscKeyToTokenMap().begin();
77  L1TriggerKeyListExt::KeyToToken::const_iterator eTSCKey = pList.tscKeyToTokenMap().end();
78  for (; iTSCKey != eTSCKey; ++iTSCKey) {
79  std::cout << iTSCKey->first;
81  std::cout << " " << iTSCKey->second;
82  }
83  std::cout << std::endl;
84  }
85  std::cout << std::endl;
86 
87  L1TriggerKeyListExt::RecordToKeyToToken::const_iterator iRec = pList.recordTypeToKeyToTokenMap().begin();
88  L1TriggerKeyListExt::RecordToKeyToToken::const_iterator eRec = pList.recordTypeToKeyToTokenMap().end();
89  for (; iRec != eRec; ++iRec) {
90  const L1TriggerKeyListExt::KeyToToken& keyTokenMap = iRec->second;
91  std::cout << "For record@type " << iRec->first << ", found " << keyTokenMap.size() << " keys:" << std::endl;
92 
93  L1TriggerKeyListExt::KeyToToken::const_iterator iKey = keyTokenMap.begin();
94  L1TriggerKeyListExt::KeyToToken::const_iterator eKey = keyTokenMap.end();
95  for (; iKey != eKey; ++iKey) {
96  std::cout << iKey->first;
98  std::cout << " " << iKey->second;
99  }
100  std::cout << std::endl;
101  }
102  std::cout << std::endl;
103  }
104  }
105 
107  try {
109  iSetup.get<L1TriggerKeyExtRcd>().get(pKey);
110 
111  std::cout << std::endl;
112  std::cout << "Current TSC key = " << pKey->tscKey() << std::endl << std::endl;
113 
114  std::cout << "Current subsystem keys:" << std::endl;
115  std::cout << "TSP0 " << pKey->subsystemKey(L1TriggerKeyExt::kuGT) << std::endl << std::endl;
116 
117  std::cout << "Object keys:" << std::endl;
118  const L1TriggerKeyExt::RecordToKey& recKeyMap = pKey->recordToKeyMap();
119  L1TriggerKeyExt::RecordToKey::const_iterator iRec = recKeyMap.begin();
120  L1TriggerKeyExt::RecordToKey::const_iterator eRec = recKeyMap.end();
121  for (; iRec != eRec; ++iRec) {
122  std::cout << iRec->first << " " << iRec->second << std::endl;
123  }
124  } catch (cms::Exception& ex) {
125  std::cout << "No L1TriggerKeyExt found." << std::endl;
126  }
127  }
128 
129  if (m_printESRecords) {
130  // ESHandle< L1TriggerKeyListExt > pList ;
131  // iSetup.get< L1TriggerKeyListExtRcd >().get( pList ) ;
132 
133  L1TriggerKeyListExt pList;
134  l1t::DataWriterExt dataWriter;
135  if (!dataWriter.fillLastTriggerKeyList(pList)) {
136  edm::LogError("L1-O2O") << "Problem getting last L1TriggerKeyListExt";
137  }
138 
139  // Start log string, convert run number into string
140  unsigned long long run = iEvent.id().run();
141  std::stringstream ss;
142  ss << run;
143  std::string log = "runNumber=" + ss.str();
144 
146 
147  std::cout << std::endl << "Run Settings keys:" << std::endl;
148 
149  std::vector<std::string>::const_iterator iRec = m_recordsToPrint.begin();
150  std::vector<std::string>::const_iterator iEnd = m_recordsToPrint.end();
151  for (; iRec != iEnd; ++iRec) {
152  std::string payloadToken = writer.payloadToken(*iRec, iEvent.id().run());
154 
155  if (*iRec == "L1TriggerKeyExtRcd") {
156  key = pList.tscKey(payloadToken);
157  } else {
158  key = pList.objectKey(*iRec, payloadToken);
159  }
160 
161  std::cout << *iRec << " " << key;
162  if (m_printPayloadTokens) {
163  std::cout << " " << payloadToken;
164  }
165  std::cout << std::endl;
166 
167  // Replace spaces in key with ?s. Do reverse substitution when
168  // making L1TriggerKeyExt.
169  replace(key.begin(), key.end(), ' ', '?');
170  log += " " + *iRec + "Key=" + key;
171  }
172 
173  std::cout << std::endl << log << std::endl;
174  }
175 }
176 
177 // ------------ method called once each job just before starting event loop ------------
179 
180 // ------------ method called once each job just after ending the event loop ------------
182 
183 //define this as a plug-in
RunNumber_t run() const
Definition: EventID.h:38
bool fillLastTriggerKeyList(L1TriggerKeyListExt &output)
void analyze(const edm::Event &, const edm::EventSetup &) override
def replace(string, replacements)
std::vector< std::string > m_recordsToPrint
const KeyToToken & tscKeyToTokenMap() const
L1O2OTestAnalyzerExt(const edm::ParameterSet &)
const RecordToKey & recordToKeyMap() const
int iEvent
Definition: GenABIO.cc:224
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:16
const std::string & subsystemKey(L1Subsystems subsystem) const
std::string payloadToken(const std::string &recordName, edm::RunNumber_t runNumber)
std::string tscKey(const std::string &triggerKeyPayloadToken) const
std::map< std::string, std::string > RecordToKey
std::string objectKey(const std::string &recordName, const std::string &payloadToken) const
edm::EventID id() const
Definition: EventBase.h:59
HLT enums.
T get() const
Definition: EventSetup.h:73
const RecordToKeyToToken & recordTypeToKeyToTokenMap() const
std::map< std::string, std::string > KeyToToken
const std::string & tscKey() const