CMS 3D CMS Logo

L1TUtmTriggerMenuDumper.cc
Go to the documentation of this file.
1 // -*- C++ -*-
2 //
3 // L1TUtmTriggerMenuDumper: Dump the menu to screen...
4 //
5 
6 #include <iostream>
7 #include <unistd.h>
8 #include <cstdio>
9 #include <cstdlib>
10 
11 #include "tmEventSetup/tmEventSetup.hh"
12 
19 #include "tmGrammar/Algorithm.hh"
20 
29 
32 
33 using namespace edm;
34 using namespace std;
35 using namespace tmeventsetup;
36 
37 class L1TUtmTriggerMenuDumper : public one::EDAnalyzer<edm::one::WatchRuns> {
38 public:
39  explicit L1TUtmTriggerMenuDumper(const ParameterSet&);
40 
41  static void fillDescriptions(ConfigurationDescriptions& descriptions);
42 
43 private:
44  void beginJob() override;
45  void analyze(Event const&, EventSetup const&) override;
46  void endJob() override;
47 
48  void beginRun(Run const&, EventSetup const&) override;
49  void endRun(Run const&, EventSetup const&) override;
51 };
52 
55 
57 
58 void L1TUtmTriggerMenuDumper::beginJob() { cout << "INFO: L1TUtmTriggerMenuDumper module beginJob called.\n"; }
59 
60 void L1TUtmTriggerMenuDumper::endJob() { cout << "INFO: L1TUtmTriggerMenuDumper module endJob called.\n"; }
61 
62 void L1TUtmTriggerMenuDumper::beginRun(Run const& run, EventSetup const& iSetup) {
64 
65  const std::map<std::string, L1TUtmAlgorithm>& algoMap = hmenu->getAlgorithmMap();
66  const std::map<std::string, L1TUtmCondition>& condMap = hmenu->getConditionMap();
67  //We use es types for scale map to use auxiliary functions without having to duplicate code
68  const std::map<std::string, tmeventsetup::esScale> scaleMap(std::begin(hmenu->getScaleMap()),
69  std::end(hmenu->getScaleMap()));
70 
71  bool hasPrecision = false;
72  std::map<std::string, unsigned int> precisions;
73  getPrecisions(precisions, scaleMap);
74  for (std::map<std::string, unsigned int>::const_iterator cit = precisions.begin(); cit != precisions.end(); cit++) {
75  std::cout << cit->first << " = " << cit->second << "\n";
76  hasPrecision = true;
77  }
78 
79  if (hasPrecision) {
80  std::map<std::string, tmeventsetup::esScale>::iterator it1, it2;
81  const tmeventsetup::esScale* scale1 = &scaleMap.find("EG-ETA")->second;
82  const tmeventsetup::esScale* scale2 = &scaleMap.find("MU-ETA")->second;
83 
84  std::vector<long long> lut_eg_2_mu_eta;
85  getCaloMuonEtaConversionLut(lut_eg_2_mu_eta, scale1, scale2);
86 
87  scale1 = &scaleMap.find("EG-PHI")->second;
88  scale2 = &scaleMap.find("MU-PHI")->second;
89 
90  std::vector<long long> lut_eg_2_mu_phi;
91  getCaloMuonPhiConversionLut(lut_eg_2_mu_phi, scale1, scale2);
92 
93  scale1 = &scaleMap.find("EG-ETA")->second;
94  scale2 = &scaleMap.find("MU-ETA")->second;
95 
96  std::vector<double> eg_mu_delta_eta;
97  std::vector<long long> lut_eg_mu_delta_eta;
98  size_t n = getDeltaVector(eg_mu_delta_eta, scale1, scale2);
99  setLut(lut_eg_mu_delta_eta, eg_mu_delta_eta, precisions["PRECISION-EG-MU-Delta"]);
100 
101  std::vector<long long> lut_eg_mu_cosh;
102  applyCosh(eg_mu_delta_eta, n);
103  setLut(lut_eg_mu_cosh, eg_mu_delta_eta, precisions["PRECISION-EG-MU-Math"]);
104 
105  scale1 = &scaleMap.find("EG-PHI")->second;
106  scale2 = &scaleMap.find("MU-PHI")->second;
107 
108  std::vector<double> eg_mu_delta_phi;
109  std::vector<long long> lut_eg_mu_delta_phi;
110  n = getDeltaVector(eg_mu_delta_phi, scale1, scale2);
111  setLut(lut_eg_mu_delta_phi, eg_mu_delta_phi, precisions["PRECISION-EG-MU-Delta"]);
112 
113  std::vector<long long> lut_eg_mu_cos;
114  applyCos(eg_mu_delta_phi, n);
115  setLut(lut_eg_mu_cos, eg_mu_delta_phi, precisions["PRECISION-EG-MU-Math"]);
116 
117  scale1 = &scaleMap.find("EG-ET")->second;
118  std::vector<long long> lut_eg_et;
119  getLut(lut_eg_et, scale1, precisions["PRECISION-EG-MU-MassPt"]);
120 
121  scale1 = &scaleMap.find("MU-ET")->second;
122  std::vector<long long> lut_mu_et;
123  getLut(lut_mu_et, scale1, precisions["PRECISION-EG-MU-MassPt"]);
124  for (size_t ii = 0; ii < lut_mu_et.size(); ii++) {
125  std::cout << lut_mu_et.at(ii) << "\n";
126  }
127  }
128 
129  for (std::map<std::string, L1TUtmAlgorithm>::const_iterator cit = algoMap.begin(); cit != algoMap.end(); cit++) {
130  const L1TUtmAlgorithm& algo = cit->second;
131  std::cout << "algo name = " << algo.getName() << "\n";
132  std::cout << "algo exp. = " << algo.getExpression() << "\n";
133  std::cout << "algo exp. in cond. = " << algo.getExpressionInCondition() << "\n";
134 
135  const std::vector<std::string>& rpn_vec = algo.getRpnVector();
136  for (size_t ii = 0; ii < rpn_vec.size(); ii++) {
137  const std::string& token = rpn_vec.at(ii);
138  if (Algorithm::isGate(token))
139  continue;
140  const L1TUtmCondition& condition = condMap.find(token)->second;
141  std::cout << " cond type = " << condition.getType() << "\n";
142 
143  const std::vector<L1TUtmCut>& cuts = condition.getCuts();
144  for (size_t jj = 0; jj < cuts.size(); jj++) {
145  const L1TUtmCut& cut = cuts.at(jj);
146  std::cout << " cut name = " << cut.getName() << "\n";
147  std::cout << " cut target = " << cut.getObjectType() << "\n";
148  std::cout << " cut type = " << cut.getCutType() << "\n";
149  std::cout << " cut min. value index = " << cut.getMinimum().value << " " << cut.getMinimum().index << "\n";
150  std::cout << " cut max. value index = " << cut.getMaximum().value << " " << cut.getMaximum().index << "\n";
151  std::cout << " cut data = " << cut.getData() << "\n";
152  }
153 
154  const std::vector<L1TUtmObject>& objects = condition.getObjects();
155  for (size_t jj = 0; jj < objects.size(); jj++) {
156  const L1TUtmObject& object = objects.at(jj);
157  std::cout << " obj name = " << object.getName() << "\n";
158  std::cout << " obj type = " << object.getType() << "\n";
159  std::cout << " obj op = " << object.getComparisonOperator() << "\n";
160  std::cout << " obj bx = " << object.getBxOffset() << "\n";
161  if (object.getType() == esObjectType::EXT) {
162  std::cout << " ext name = " << object.getExternalSignalName() << "\n";
163  std::cout << " ext ch id = " << object.getExternalChannelId() << "\n";
164  }
165 
166  const std::vector<L1TUtmCut>& cuts = object.getCuts();
167  for (size_t kk = 0; kk < cuts.size(); kk++) {
168  const L1TUtmCut& cut = cuts.at(kk);
169  std::cout << " cut name = " << cut.getName() << "\n";
170  std::cout << " cut target = " << cut.getObjectType() << "\n";
171  std::cout << " cut type = " << cut.getCutType() << "\n";
172  std::cout << " cut min. value index = " << cut.getMinimum().value << " " << cut.getMinimum().index
173  << "\n";
174  std::cout << " cut max. value index = " << cut.getMaximum().value << " " << cut.getMaximum().index
175  << "\n";
176  std::cout << " cut data = " << cut.getData() << "\n";
177  }
178  }
179  }
180  }
181 }
182 
184 
186  //The following says we do not know what parameters are allowed so do no validation
187  // Please change this to state exactly what you do use, even if it is no parameters
189  desc.setUnknown();
190  descriptions.addDefault(desc);
191 }
192 
ESGetTokenH3DDVariant esConsumes(std::string const &Record, edm::ConsumesCollector &)
Definition: DeDxTools.cc:283
const int getType() const
void analyze(Event const &, EventSetup const &) override
const std::vector< L1TUtmObject > & getObjects() const
const std::map< std::string, L1TUtmScale > & getScaleMap() const
static void fillDescriptions(ConfigurationDescriptions &descriptions)
example_stream void analyze(const edm::Event &, const edm::EventSetup &) override
void beginJob()
Definition: Breakpoints.cc:14
int iEvent
Definition: GenABIO.cc:224
void addDefault(ParameterSetDescription const &psetDescription)
Transition
Definition: Transition.h:12
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:16
L1TUtmTriggerMenuDumper(const ParameterSet &)
const std::map< std::string, L1TUtmCondition > & getConditionMap() const
void endRun(Run const &, EventSetup const &) override
ESHandle< T > getHandle(const ESGetToken< T, R > &iToken) const
Definition: EventSetup.h:130
ii
Definition: cuy.py:589
edm::ESGetToken< L1TUtmTriggerMenu, L1TUtmTriggerMenuRcd > m_l1TriggerMenuToken
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
const std::vector< L1TUtmCut > & getCuts() const
void beginRun(Run const &, EventSetup const &) override
HLT enums.
const std::map< std::string, L1TUtmAlgorithm > & getAlgorithmMap() const
Definition: Run.h:45