45 #include "TDirectory.h"
66 virtual void endJob() ;
92 LogTrace (
"HLTMuonVal") <<
"\n\n Inside MuonTriggerRate Constructor\n\n";
95 (
"TriggerRegExpStrings");
99 for (vector<string>::const_iterator iTrigName =
triggerNames.begin();
103 trigRegExps.push_back( TPRegexp((*iTrigName).c_str()) );
105 LogTrace (
"HLTMuonVal") <<
"Trigger Reg Exp = " <<
trigRegExps.back().GetPattern() << endl;
136 vector<edm::ParameterSet>::iterator iPSet;
139 <<
"looping over entries" << std::endl;
149 vector < MuonSelectionStruct > customSelectors;
150 vector < string > customNames;
155 string customCuts = iPSet->getUntrackedParameter<
string> (
"recoCuts");
156 string customName = iPSet->getUntrackedParameter<
string> (
"collectionName");
157 string hltCuts = iPSet->getUntrackedParameter<
string> (
"hltCuts");
158 string targetTrackCollection = iPSet->getUntrackedParameter<
string> (
"trackCollection");
159 double customD0Cut = iPSet->getUntrackedParameter<
double> (
"d0cut");
160 double customZ0Cut = iPSet->getUntrackedParameter<
double> (
"z0cut");
162 vector<string> requiredTriggers = iPSet->getUntrackedParameter< vector<string> > (
"requiredTriggers");
164 LogTrace(
"HLTMuonVal") <<
"customTargetCollection = " << customName << std::endl
165 <<
"customCuts = " << customCuts << std::endl
166 <<
"targetTrackCollection = " << targetTrackCollection << std::endl
167 <<
"d0 cut = " << customD0Cut << std::endl
168 <<
"z0 cut = " << customZ0Cut << std:: endl ;
172 string description = customName +
", reco cuts = " + customCuts
173 +
", hlt cuts = " + hltCuts +
", trackCollection = " + targetTrackCollection
174 +
", required triggers, ";
177 for (vector <string>::const_iterator trigit = requiredTriggers.begin();
178 trigit != requiredTriggers.end();
180 description += (*trigit) +
", ";
184 ostringstream ossd0, ossz0, osschi2, osshits;
187 ossd0 << customD0Cut;
188 ossz0 << customZ0Cut;
192 description +=
"|d0| < " + ossd0.str() +
", |z0| < " + ossz0.str();
195 LogTrace (
"HLTMuonVal") <<
"Storing description = " << description << endl;
209 customName, customD0Cut, customZ0Cut,
210 targetTrackCollection, requiredTriggers);
213 customNames.push_back ( customName);
214 customSelectors.push_back(tempStruct);
227 bool hltConfigChanged;
228 bool hltConfigInitSuccess = hltConfig.
init(currentRun, currentEventSetup,
theHltProcessName, hltConfigChanged);
231 vector<string> validTriggerNames;
233 if (hltConfigInitSuccess)
236 if (validTriggerNames.size() < 1) {
237 LogInfo (
"HLTMuonVal") << endl << endl << endl
238 <<
"---> WARNING: The HLT Config Provider gave you an empty list of valid trigger names" << endl
239 <<
"Could be a problem with the HLT Process Name (you provided " <<
theHltProcessName <<
")" << endl
240 <<
"W/o valid triggers we can't produce plots, exiting..."
241 << endl << endl << endl;
247 vector<string>::const_iterator iDumpName;
248 unsigned int numTriggers = 0;
250 vector<string> parsedMuonTrigNames;
256 TPRegexp l1l2MuTrigExp (
"HLT_L[12]Mu[^_]*$");
257 TPRegexp isoMuTrigExp (
"HLT_[iI]soMu[^_]*$");
258 TPRegexp normalMuExp (
"HLT_Mu[^_]*$");
259 TPRegexp l1l2DoubleExp (
"HLT_L[12]DoubleMu[^_]*$");
260 TPRegexp normalDoubleExp (
"HLT_DoubleMu[^_]*$");
265 for (iDumpName = validTriggerNames.begin();
266 iDumpName != validTriggerNames.end();
269 LogTrace (
"HLTMuonVal") <<
"Trigger " << numTriggers
270 <<
" is called " << (*iDumpName)
274 TString tempTStringModName(*iDumpName);
276 bool matchesAnyRegexp =
false;
277 for (vector<TPRegexp>::const_iterator iTrigRegExp =
trigRegExps.begin();
280 TPRegexp tempRegExp((*iTrigRegExp));
281 if (tempTStringModName.Contains(tempRegExp))
282 matchesAnyRegexp =
true;
285 if (matchesAnyRegexp) {
287 LogTrace (
"HLTMuonVal") <<
"------> This is a muon trigger"
290 parsedMuonTrigNames.push_back(*iDumpName);
299 vector<MuonSelectionStruct>::iterator iMuonSelector;
300 vector<string>::iterator iName = customNames.begin();
302 LogTrace (
"HLTMuonVal") <<
"Looping over custom selectors" << endl;
303 unsigned numSelectors = 0;
304 for ( iMuonSelector = customSelectors.begin();
305 iMuonSelector != customSelectors.end();
308 LogTrace (
"HLTMuonVal") <<
"Num selectors = " << numSelectors << endl;
310 for(
size_t i = 0;
i < parsedMuonTrigNames.size();
i++) {
312 LogTrace (
"HLTMuonVal") <<
"PARSED: Making match and plot for trigger " << parsedMuonTrigNames[
i] << endl;
314 vector<string> moduleNames = hltConfig.
moduleLabels( parsedMuonTrigNames[
i] );
316 analyzer =
new HLTMuonMatchAndPlot(
initialPset, parsedMuonTrigNames[i], moduleNames, (*iMuonSelector), (*iName), validTriggerNames, currentRun, currentEventSetup );
327 <<
" trigger analyzers" << endl;
333 vector<HLTMuonMatchAndPlot *>::iterator thisAnalyzer;
334 int nTotalAnalyzers = 0;
341 <<
"Calling begin for analyzer " << nTotalAnalyzers;
343 (*thisAnalyzer)->begin();
350 <<
"OfflineDQMMuonTrigAnalyzer: Calling being for overlap analyzer" << endl;
360 <<
"Inside OfflineDQMMuonTrigAnalyzer destructor" << endl;
362 vector<HLTMuonMatchAndPlot *>::iterator thisAnalyzer;
367 delete *thisAnalyzer;
382 <<
"Inside OfflineDQMMuonTrigAnalyzer analyze" << endl;
384 vector<HLTMuonMatchAndPlot *>::iterator thisAnalyzer;
388 (*thisAnalyzer)->analyze(iEvent);
400 <<
"Inside OfflineDQMMuonTrigAnalyzer beginJob" << endl;
414 <<
"Inside OfflineDQMMuonTrigAnalyzer endRun()" << endl;
417 vector<HLTMuonMatchAndPlot *>::iterator thisAnalyzer;
422 (*thisAnalyzer)->endRun(theRun, theEventSetup);
433 <<
"Inside OfflineDQMMuonTrigAnalyzer endJob()" << endl;
436 vector<HLTMuonMatchAndPlot *>::iterator thisAnalyzer;
441 (*thisAnalyzer)->finish();
T getParameter(std::string const &) const
T getUntrackedParameter(std::string const &, T const &) const
bool weHaveProcessedTheFirstRun
#define DEFINE_FWK_MODULE(type)
const std::vector< std::string > & triggerNames() const
names of trigger paths
const ParameterSet & initialPset
OfflineDQMMuonTrigAnalyzer(const edm::ParameterSet &)
virtual void analyze(const edm::Event &, const edm::EventSetup &)
MonitorElement * bookString(const char *name, const char *value)
Book string.
~OfflineDQMMuonTrigAnalyzer()
vector< string > triggerNames
void setVerbose(unsigned level)
std::vector< HLTMuonMatchAndPlot * > theTriggerAnalyzers
const std::vector< std::string > & moduleLabels(unsigned int trigger) const
label(s) of module(s) on a trigger path
bool init(const edm::Run &iRun, const edm::EventSetup &iSetup, const std::string &processName, bool &changed)
vector< TPRegexp > trigRegExps
virtual void endRun(const edm::Run &r, const edm::EventSetup &c)
vector< edm::ParameterSet > customCollection
virtual void beginRun(edm::Run const ¤tRun, edm::EventSetup const ¤tEventSetup)
void setCurrentFolder(const std::string &fullpath)