CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
HLTTauDQMOfflineSource.cc
Go to the documentation of this file.
2 
3 using namespace std;
4 using namespace edm;
5 using namespace reco;
6 using namespace l1extra;
7 using namespace trigger;
8 
9 //
10 // constructors and destructor
11 //
13  //Get Initialization
14  moduleName_ = ps.getUntrackedParameter<std::string>("ModuleName");
15  dqmBaseFolder_ = ps.getUntrackedParameter<std::string>("DQMBaseFolder");
16  hltProcessName_ = ps.getUntrackedParameter<std::string>("HLTProcessName","HLT");
17  L1MatchDr_ = ps.getUntrackedParameter<double>("L1MatchDeltaR",0.5);
18  HLTMatchDr_ = ps.getUntrackedParameter<double>("HLTMatchDeltaR",0.2);
19  verbose_ = ps.getUntrackedParameter<bool>("Verbose",false);
20  counterEvt_ = 0;
21  hltMenuChanged_ = true;
22  automation_ = HLTTauDQMAutomation(hltProcessName_, L1MatchDr_, HLTMatchDr_);
23  ps_ = ps;
24 }
25 
27  //Clear the plotter collections
28  while (!l1Plotters.empty()) delete l1Plotters.back(), l1Plotters.pop_back();
29  while (!caloPlotters.empty()) delete caloPlotters.back(), caloPlotters.pop_back();
30  while (!trackPlotters.empty()) delete trackPlotters.back(), trackPlotters.pop_back();
31  while (!pathPlotters.empty()) delete pathPlotters.back(), pathPlotters.pop_back();
32  while (!litePathPlotters.empty()) delete litePathPlotters.back(), litePathPlotters.pop_back();
33 }
34 
35 //--------------------------------------------------------
37 }
38 
39 //--------------------------------------------------------
40 void HLTTauDQMOfflineSource::beginRun( const edm::Run& iRun, const EventSetup& iSetup ) {
41  //Evaluate configuration for every new trigger menu
42  if ( HLTCP_.init(iRun, iSetup, hltProcessName_, hltMenuChanged_) ) {
43  if ( hltMenuChanged_ ) {
44  processPSet(ps_);
45  if (verbose_) {
46  std::cout << "Trigger menu '" << HLTCP_.tableName() << "'" << std::endl;
47  HLTCP_.dump("Triggers");
48 
49  std::cout << std::endl << "Configuration of '" << moduleName_ << "' for trigger menu '" << HLTCP_.tableName() << "'" << std::endl;
50  for ( unsigned int i = 0; i < config_.size(); ++i ) {
51  std::cout << config_[i].dump() << std::endl;
52  }
53  std::cout << matching_.dump() << std::endl << std::endl;
54 
55  unsigned int npars = 14;
56  npars += countParameters(matching_);
57  for ( unsigned int i = 0; i < config_.size(); ++i ) {
58  npars += countParameters(config_[i]);
59  }
60 
61  std::cout << "--> Number of parameters: " << npars << std::endl;
62  std::cout << std::endl << "Event content need by this module: " << std::endl;
63 
64  std::vector<edm::InputTag> evtcontent;
65  for ( unsigned int i = 0; i < config_.size(); ++i ) {
66  searchEventContent(evtcontent, config_[i]);
67  }
68  searchEventContent(evtcontent, matching_);
69 
70  for (std::vector<edm::InputTag>::const_iterator iter = evtcontent.begin(); iter != evtcontent.end(); ++iter) {
71  std::cout << " " << iter->encode() << std::endl;
72  }
73  }
74  }
75  } else {
76  edm::LogWarning("HLTTauDQMOfflineSource") << "HLT config extraction failure with process name '" << hltProcessName_ << "'";
77  }
78 }
79 
80 //--------------------------------------------------------
82 }
83 
84 // ----------------------------------------------------------
86  //Apply the prescaler
87  if (counterEvt_ > prescaleEvt_) {
88  //Do Analysis here
89  counterEvt_ = 0;
90 
91  //Create match collections
92  std::map<int,LVColl> refC;
93 
94  if (doRefAnalysis_) {
95  for ( std::vector<edm::ParameterSet>::const_iterator iter = refObjects_.begin(); iter != refObjects_.end(); ++iter ) {
96  int objID = iter->getUntrackedParameter<int>("matchObjectID");
97 
98  Handle<LVColl> collHandle;
99  if ( iEvent.getByLabel(iter->getUntrackedParameter<edm::InputTag>("FilterName"),collHandle) ) {
100  std::map<int,LVColl>::iterator it;
101 
102  if ( std::abs(objID) == 15 ) {
103  it = refC.find(15);
104  if ( it == refC.end() ) {
105  refC.insert(std::pair<int,LVColl>(15,*collHandle));
106  } else {
107  it->second.insert(it->second.end(),collHandle->begin(),collHandle->end());
108  }
109  } else if ( std::abs(objID) == 11 ) {
110  it = refC.find(11);
111  if ( it == refC.end() ) {
112  refC.insert(std::pair<int,LVColl>(11,*collHandle));
113  } else {
114  it->second.insert(it->second.end(),collHandle->begin(),collHandle->end());
115  }
116  } else if ( std::abs(objID) == 13 ) {
117  it = refC.find(13);
118  if ( it == refC.end() ) {
119  refC.insert(std::pair<int,LVColl>(13,*collHandle));
120  } else {
121  it->second.insert(it->second.end(),collHandle->begin(),collHandle->end());
122  }
123  } else {
124  it = refC.find(objID);
125  if ( it == refC.end() ) {
126  refC.insert(std::pair<int,LVColl>(objID,*collHandle));
127  } else {
128  it->second.insert(it->second.end(),collHandle->begin(),collHandle->end());
129  }
130  }
131  }
132  }
133  }
134 
135  //Path Plotters
136  for ( unsigned int i = 0; i < pathPlotters.size(); ++i ) {
137  if (pathPlotters[i]->isValid()) pathPlotters[i]->analyze(iEvent,iSetup,refC);
138  }
139 
140  //Lite Path Plotters
141  for ( unsigned int i = 0; i < litePathPlotters.size(); ++i ) {
142  if (litePathPlotters[i]->isValid()) litePathPlotters[i]->analyze(iEvent,iSetup,refC);
143  }
144 
145  //L1 Plotters
146  for ( unsigned int i = 0; i < l1Plotters.size(); ++i ) {
147  if (l1Plotters[i]->isValid()) l1Plotters[i]->analyze(iEvent,iSetup,refC);
148  }
149 
150  //Calo Plotters
151  for ( unsigned int i = 0; i < caloPlotters.size(); ++i ) {
152  if (caloPlotters[i]->isValid()) caloPlotters[i]->analyze(iEvent,iSetup,refC);
153  }
154 
155  //Track Plotters
156  for ( unsigned int i = 0; i < trackPlotters.size(); ++i ) {
157  if (trackPlotters[i]->isValid()) trackPlotters[i]->analyze(iEvent,iSetup,refC);
158  }
159  } else {
160  counterEvt_++;
161  }
162 }
163 
164 //--------------------------------------------------------
166 }
167 
168 //--------------------------------------------------------
169 void HLTTauDQMOfflineSource::endRun( const Run& r, const EventSetup& context ) {
170 }
171 
172 //--------------------------------------------------------
174  return;
175 }
176 
178  //Get General Monitoring Parameters
179  config_ = pset.getParameter<std::vector<edm::ParameterSet> >("MonitorSetup");
180  matching_ = pset.getParameter<edm::ParameterSet>("Matching");
181  NPtBins_ = pset.getUntrackedParameter<int>("PtHistoBins",20);
182  NEtaBins_ = pset.getUntrackedParameter<int>("EtaHistoBins",25);
183  NPhiBins_ = pset.getUntrackedParameter<int>("PhiHistoBins",32);
184  EtMax_ = pset.getUntrackedParameter<double>("EtHistoMax",100);
185  prescaleEvt_ = pset.getUntrackedParameter<int>("prescaleEvt", -1);
186  doRefAnalysis_ = matching_.getUntrackedParameter<bool>("doMatching");
187  refObjects_ = matching_.getUntrackedParameter<std::vector<edm::ParameterSet> >("matchFilters");
188 
189  //Clear the plotter collections first
190  while (!l1Plotters.empty()) delete l1Plotters.back(), l1Plotters.pop_back();
191  while (!caloPlotters.empty()) delete caloPlotters.back(), caloPlotters.pop_back();
192  while (!trackPlotters.empty()) delete trackPlotters.back(), trackPlotters.pop_back();
193  while (!pathPlotters.empty()) delete pathPlotters.back(), pathPlotters.pop_back();
194  while (!litePathPlotters.empty()) delete litePathPlotters.back(), litePathPlotters.pop_back();
195 
196  //Automatic Configuration
197  automation_.AutoCompleteConfig( config_, HLTCP_ );
198 
199  //Read The Configuration
200  for ( unsigned int i = 0; i < config_.size(); ++i ) {
201  std::string configtype;
202  try {
203  configtype = config_[i].getUntrackedParameter<std::string>("ConfigType");
204  } catch ( cms::Exception &e ) {
205  edm::LogWarning("HLTTauDQMOfflineSource")
206  << e.what() << std::endl;
207  continue;
208  }
209  if (configtype == "L1") {
210  try {
211  l1Plotters.push_back(new HLTTauDQML1Plotter(config_[i],NPtBins_,NEtaBins_,NPhiBins_,EtMax_,doRefAnalysis_,L1MatchDr_,dqmBaseFolder_));
212  } catch ( cms::Exception &e ) {
213  edm::LogWarning("HLTTauDQMSource") << e.what() << std::endl;
214  continue;
215  }
216  } else if (configtype == "Calo") {
217  try {
218  caloPlotters.push_back(new HLTTauDQMCaloPlotter(config_[i],NPtBins_,NEtaBins_,NPhiBins_,EtMax_,doRefAnalysis_,HLTMatchDr_,dqmBaseFolder_));
219  } catch ( cms::Exception &e ) {
220  edm::LogWarning("HLTTauDQMSource") << e.what() << std::endl;
221  continue;
222  }
223  } else if (configtype == "Track") {
224  try {
225  trackPlotters.push_back(new HLTTauDQMTrkPlotter(config_[i],NPtBins_,NEtaBins_,NPhiBins_,EtMax_,doRefAnalysis_,HLTMatchDr_,dqmBaseFolder_));
226  } catch ( cms::Exception &e ) {
227  edm::LogWarning("HLTTauDQMSource") << e.what() << std::endl;
228  continue;
229  }
230  } else if (configtype == "Path") {
231  try {
232  pathPlotters.push_back(new HLTTauDQMPathPlotter(config_[i],doRefAnalysis_,dqmBaseFolder_));
233  } catch ( cms::Exception &e ) {
234  edm::LogWarning("HLTTauDQMSource") << e.what() << std::endl;
235  continue;
236  }
237  } else if (configtype == "LitePath") {
238  try {
239  litePathPlotters.push_back(new HLTTauDQMLitePathPlotter(config_[i],NPtBins_,NEtaBins_,NPhiBins_,EtMax_,doRefAnalysis_,HLTMatchDr_,dqmBaseFolder_));
240  } catch ( cms::Exception &e ) {
241  edm::LogWarning("HLTTauDQMSource") << e.what() << std::endl;
242  continue;
243  }
244  }
245  }
246 }
247 
249  unsigned int num = 0;
250  const std::map<std::string,edm::ParameterSetEntry>& tmppset = pset.psetTable();
251  for ( std::map<std::string,edm::ParameterSetEntry>::const_iterator iter = tmppset.begin(); iter != tmppset.end(); ++iter ) {
252  num += countParameters(iter->second.pset());
253  }
254  const std::map<std::string,edm::VParameterSetEntry>& tmpvpset = pset.vpsetTable();
255  for ( std::map<std::string,edm::VParameterSetEntry>::const_iterator iter = tmpvpset.begin(); iter != tmpvpset.end(); ++iter ) {
256  const std::vector<edm::ParameterSet>& tmpvec = iter->second.vpset();
257  for ( std::vector<edm::ParameterSet>::const_iterator iter2 = tmpvec.begin(); iter2 != tmpvec.end(); ++iter2 ) {
258  num += countParameters(*iter2);
259  }
260  }
261  num += pset.tbl().size();
262  return num;
263 }
264 
265 void HLTTauDQMOfflineSource::searchEventContent(std::vector<edm::InputTag>& eventContent, const edm::ParameterSet& pset) {
266  for (std::map< std::string, edm::Entry >::const_iterator i = pset.tbl().begin(), e = pset.tbl().end(); i != e; ++i) {
267  if (std::string(1,i->second.typeCode()) == "t") {
268  std::vector<edm::InputTag>::iterator iter = std::find(eventContent.begin(), eventContent.end(), i->second.getInputTag());
269  if (iter == eventContent.end()) {
270  eventContent.push_back(i->second.getInputTag());
271  }
272  }
273  }
274  for (std::map< std::string, edm::ParameterSetEntry >::const_iterator i = pset.psetTable().begin(), e = pset.psetTable().end(); i != e; ++i) {
275  searchEventContent(eventContent, i->second.pset());
276  }
277  for (std::map< std::string, edm::VParameterSetEntry >::const_iterator i = pset.vpsetTable().begin(), e = pset.vpsetTable().end(); i != e; ++i) {
278  std::vector<edm::ParameterSet> vpset = i->second.vpset();
279  for (std::vector<edm::ParameterSet>::const_iterator iter = vpset.begin(); iter != vpset.end(); ++iter) {
280  searchEventContent(eventContent, *iter);
281  }
282  }
283 }
virtual char const * what() const
Definition: Exception.cc:141
T getParameter(std::string const &) const
T getUntrackedParameter(std::string const &, T const &) const
int i
Definition: DBlmapReader.cc:9
#define abs(x)
Definition: mlp_lapack.h:159
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
Definition: FindCaloHit.cc:7
int iEvent
Definition: GenABIO.cc:243
void endLuminosityBlock(const edm::LuminosityBlock &lumiSeg, const edm::EventSetup &c)
DQM Client Diagnostic.
HLTTauDQMOfflineSource(const edm::ParameterSet &)
void searchEventContent(std::vector< edm::InputTag > &eventContent, const edm::ParameterSet &pset)
void analyze(const edm::Event &e, const edm::EventSetup &c)
Fake Analyze.
void endRun(const edm::Run &r, const edm::EventSetup &c)
EndRun.
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
Definition: Event.h:356
psettable const & psetTable() const
Definition: ParameterSet.h:258
void processPSet(const edm::ParameterSet &pset)
long long int num
Definition: procUtils.cc:71
void beginRun(const edm::Run &r, const edm::EventSetup &c)
BeginRun.
vpsettable const & vpsetTable() const
Definition: ParameterSet.h:261
tuple cout
Definition: gather_cfg.py:121
void beginLuminosityBlock(const edm::LuminosityBlock &lumiSeg, const edm::EventSetup &context)
Luminosity Block.
unsigned int countParameters(const edm::ParameterSet &pset)
table const & tbl() const
Definition: ParameterSet.h:255
Definition: Run.h:33