54 highPtJetExpr_ = highptjetparms.
getParameter<std::vector<std::string> >(
"hltPaths");
55 lowPtJetExpr_ = lowptjetparms .getParameter<std::vector<std::string> >(
"hltPaths");
56 highMETExpr_ = highmetparms .getParameter<std::vector<std::string> >(
"hltPaths");
58 muonExpr_ = muonparms .getParameter<std::vector<std::string> >(
"hltPaths");
59 elecExpr_ = eleparms .getParameter<std::vector<std::string> >(
"hltPaths");
60 minbiasExpr_ = minbiasparms .getParameter<std::vector<std::string> >(
"hltPaths");
67 delete _HighPtJetEventFlag;
68 delete _LowPtJetEventFlag;
69 delete _MinBiasEventFlag;
70 delete _HighMETEventFlag;
73 delete _MuonEventFlag;
83 HLTPathsJetMBByName_ =
parameters.getParameter<std::vector<std::string > >(
"HLTPathsJetMB");
89 _techTrigsAND = theCleaningParameters.getParameter<std::vector<unsigned > >(
"techTrigsAND");
90 _techTrigsOR = theCleaningParameters.getParameter<std::vector<unsigned > >(
"techTrigsOR");
91 _techTrigsNOT = theCleaningParameters.getParameter<std::vector<unsigned > >(
"techTrigsNOT");
93 _doHLTPhysicsOn = theCleaningParameters.getParameter<
bool>(
"doHLTPhysicsOn");
94 _hlt_PhysDec = theCleaningParameters.getParameter<
std::string>(
"HLT_PhysDec");
96 _tightBHFiltering = theCleaningParameters.getParameter<
bool>(
"tightBHFiltering");
97 _tightJetIDFiltering = theCleaningParameters.getParameter<
int>(
"tightJetIDFiltering");
105 _doPVCheck = theCleaningParameters.getParameter<
bool>(
"doPrimaryVertexCheck");
106 vertexTag = theCleaningParameters.getParameter<
edm::InputTag>(
"vertexLabel");
109 _nvtx_min = theCleaningParameters.getParameter<
int>(
"nvtx_min");
110 _nvtxtrks_min = theCleaningParameters.getParameter<
int>(
"nvtxtrks_min");
111 _vtxndof_min = theCleaningParameters.getParameter<
int>(
"vtxndof_min");
112 _vtxchi2_max = theCleaningParameters.getParameter<
double>(
"vtxchi2_max");
113 _vtxz_max = theCleaningParameters.getParameter<
double>(
"vtxz_max");
120 if (theMETCollectionLabel.label() ==
"tcMet" ) {
134 _verbose =
parameters.getParameter<
int>(
"verbose");
135 _etThreshold =
parameters.getParameter<
double>(
"etThreshold");
136 _allhist =
parameters.getParameter<
bool>(
"allHist");
137 _allSelection =
parameters.getParameter<
bool>(
"allSelection");
138 _cleanupSelection =
parameters.getParameter<
bool>(
"cleanupSelection");
142 _highPtJetThreshold =
parameters.getParameter<
double>(
"HighPtJetThreshold");
143 _lowPtJetThreshold =
parameters.getParameter<
double>(
"LowPtJetThreshold");
144 _highMETThreshold =
parameters.getParameter<
double>(
"HighMETThreshold");
155 hmetME = dbe->
book1D(
"metReco",
"metReco", 4, 1, 5);
160 _FolderNames.push_back(
"All");
161 _FolderNames.push_back(
"BasicCleanup");
162 _FolderNames.push_back(
"ExtraCleanup");
163 _FolderNames.push_back(
"HcalNoiseFilter");
164 _FolderNames.push_back(
"JetIDMinimal");
165 _FolderNames.push_back(
"JetIDLoose");
166 _FolderNames.push_back(
"JetIDTight");
167 _FolderNames.push_back(
"BeamHaloIDTightPass");
168 _FolderNames.push_back(
"BeamHaloIDLoosePass");
169 _FolderNames.push_back(
"Triggers");
170 _FolderNames.push_back(
"PV");
172 for (std::vector<std::string>::const_iterator ic = _FolderNames.begin();
173 ic != _FolderNames.end(); ic++){
174 if (*ic==
"All") bookMESet(DirName+
"/"+*ic);
175 if (_cleanupSelection){
176 if (*ic==
"BasicCleanup") bookMESet(DirName+
"/"+*ic);
177 if (*ic==
"ExtraCleanup") bookMESet(DirName+
"/"+*ic);
180 if (*ic==
"HcalNoiseFilter") bookMESet(DirName+
"/"+*ic);
181 if (*ic==
"JetIDMinimal") bookMESet(DirName+
"/"+*ic);
182 if (*ic==
"JetIDLoose") bookMESet(DirName+
"/"+*ic);
183 if (*ic==
"JetIDTight") bookMESet(DirName+
"/"+*ic);
184 if (*ic==
"BeamHaloIDTightPass") bookMESet(DirName+
"/"+*ic);
185 if (*ic==
"BeamHaloIDLoosePass") bookMESet(DirName+
"/"+*ic);
186 if (*ic==
"Triggers") bookMESet(DirName+
"/"+*ic);
187 if (*ic==
"PV") bookMESet(DirName+
"/"+*ic);
204 bool bLumiSecPlot=
false;
205 if (DirName.find(
"All")!=std::string::npos) bLumiSecPlot=
true;
207 bookMonitorElement(DirName,bLumiSecPlot);
209 if ( _HighPtJetEventFlag->on() ) {
210 bookMonitorElement(DirName+
"/"+
"HighPtJet",
false);
211 hTriggerName_HighPtJet = _dbe->bookString(
"triggerName_HighPtJet", highPtJetExpr_[0]);
214 if ( _LowPtJetEventFlag->on() ) {
215 bookMonitorElement(DirName+
"/"+
"LowPtJet",
false);
216 hTriggerName_LowPtJet = _dbe->bookString(
"triggerName_LowPtJet", lowPtJetExpr_[0]);
219 if ( _MinBiasEventFlag->on() ) {
220 bookMonitorElement(DirName+
"/"+
"MinBias",
false);
221 hTriggerName_MinBias = _dbe->bookString(
"triggerName_MinBias", minbiasExpr_[0]);
222 if (_verbose)
std::cout <<
"_MinBiasEventFlag is on, folder created\n";
225 if ( _HighMETEventFlag->on() ) {
226 bookMonitorElement(DirName+
"/"+
"HighMET",
false);
227 hTriggerName_HighMET = _dbe->bookString(
"triggerName_HighMET", highMETExpr_[0]);
235 if ( _EleEventFlag->on() ) {
236 bookMonitorElement(DirName+
"/"+
"Ele",
false);
237 hTriggerName_Ele = _dbe->bookString(
"triggerName_Ele", elecExpr_[0]);
238 if (_verbose)
std::cout <<
"_EleEventFlag is on, folder created\n";
241 if ( _MuonEventFlag->on() ) {
242 bookMonitorElement(DirName+
"/"+
"Muon",
false);
243 hTriggerName_Muon = _dbe->bookString(
"triggerName_Muon", muonExpr_[0]);
244 if (_verbose)
std::cout <<
"_MuonEventFlag is on, folder created\n";
251 if (_verbose)
std::cout <<
"bookMonitorElement " << DirName << std::endl;
253 _dbe->setCurrentFolder(DirName);
256 hMEx = _dbe->book1D(
"METTask_MEx",
"METTask_MEx", 200, -500, 500);
257 hMEy = _dbe->book1D(
"METTask_MEy",
"METTask_MEy", 200, -500, 500);
258 hMET = _dbe->book1D(
"METTask_MET",
"METTask_MET", 200, 0, 1000);
259 hSumET = _dbe->book1D(
"METTask_SumET",
"METTask_SumET", 400, 0, 4000);
260 hMETSig = _dbe->book1D(
"METTask_METSig",
"METTask_METSig", 51, 0, 51);
261 hMETPhi = _dbe->book1D(
"METTask_METPhi",
"METTask_METPhi", 60, -3.2, 3.2);
262 hMET_logx = _dbe->book1D(
"METTask_MET_logx",
"METTask_MET_logx", 40, -1, 7);
263 hSumET_logx = _dbe->book1D(
"METTask_SumET_logx",
"METTask_SumET_logx", 40, -1, 7);
265 hMEx ->setAxisTitle(
"MEx [GeV]", 1);
266 hMEy ->setAxisTitle(
"MEy [GeV]", 1);
267 hMET ->setAxisTitle(
"MET [GeV]", 1);
268 hSumET ->setAxisTitle(
"SumET [GeV]", 1);
269 hMETSig ->setAxisTitle(
"CaloMETSig", 1);
270 hMETPhi ->setAxisTitle(
"METPhi [rad]", 1);
271 hMET_logx ->setAxisTitle(
"log(MET) [GeV]", 1);
272 hSumET_logx->setAxisTitle(
"log(SumET) [GeV]", 1);
277 hMExLS = _dbe->book2D(
"METTask_MEx_LS",
"METTask_MEx_LS",200,-200,200,50,0.,500.);
278 hMExLS->setAxisTitle(
"MEx [GeV]",1);
279 hMExLS->setAxisTitle(
"Lumi Section",2);
280 hMEyLS = _dbe->book2D(
"METTask_MEy_LS",
"METTask_MEy_LS",200,-200,200,50,0.,500.);
281 hMEyLS->setAxisTitle(
"MEy [GeV]",1);
282 hMEyLS->setAxisTitle(
"Lumi Section",2);
286 if (theMETCollectionLabel.label() ==
"tcMet" ) {
287 htrkPt = _dbe->book1D(
"METTask_trackPt",
"METTask_trackPt", 50, 0, 500);
288 htrkEta = _dbe->book1D(
"METTask_trackEta",
"METTask_trackEta", 60, -3.0, 3.0);
289 htrkNhits = _dbe->book1D(
"METTask_trackNhits",
"METTask_trackNhits", 50, 0, 50);
290 htrkChi2 = _dbe->book1D(
"METTask_trackNormalizedChi2",
"METTask_trackNormalizedChi2", 20, 0, 20);
291 htrkD0 = _dbe->book1D(
"METTask_trackD0",
"METTask_trackd0", 50, -1, 1);
292 helePt = _dbe->book1D(
"METTask_electronPt",
"METTask_electronPt", 50, 0, 500);
293 heleEta = _dbe->book1D(
"METTask_electronEta",
"METTask_electronEta", 60, -3.0, 3.0);
294 heleHoE = _dbe->book1D(
"METTask_electronHoverE",
"METTask_electronHoverE", 25, 0, 0.5);
295 hmuPt = _dbe->book1D(
"METTask_muonPt",
"METTask_muonPt", 50, 0, 500);
296 hmuEta = _dbe->book1D(
"METTask_muonEta",
"METTask_muonEta", 60, -3.0, 3.0);
297 hmuNhits = _dbe->book1D(
"METTask_muonNhits",
"METTask_muonNhits", 50, 0, 50);
298 hmuChi2 = _dbe->book1D(
"METTask_muonNormalizedChi2",
"METTask_muonNormalizedChi2", 20, 0, 20);
299 hmuD0 = _dbe->book1D(
"METTask_muonD0",
"METTask_muonD0", 50, -1, 1);
302 hMExCorrection = _dbe->book1D(
"METTask_MExCorrection",
"METTask_MExCorrection", 100, -500.0,500.0);
303 hMEyCorrection = _dbe->book1D(
"METTask_MEyCorrection",
"METTask_MEyCorrection", 100, -500.0,500.0);
304 hMuonCorrectionFlag = _dbe->book1D(
"METTask_CorrectionFlag",
"METTask_CorrectionFlag", 5, -0.5, 4.5);
311 if ( _HighPtJetEventFlag->on() ) _HighPtJetEventFlag->initRun( iRun, iSetup );
312 if ( _LowPtJetEventFlag ->on() ) _LowPtJetEventFlag ->initRun( iRun, iSetup );
313 if ( _MinBiasEventFlag ->on() ) _MinBiasEventFlag ->initRun( iRun, iSetup );
314 if ( _HighMETEventFlag ->on() ) _HighMETEventFlag ->initRun( iRun, iSetup );
316 if ( _EleEventFlag ->on() ) _EleEventFlag ->initRun( iRun, iSetup );
317 if ( _MuonEventFlag ->on() ) _MuonEventFlag ->initRun( iRun, iSetup );
319 if (_HighPtJetEventFlag->on() && _HighPtJetEventFlag->expressionsFromDB(_HighPtJetEventFlag->hltDBKey(), iSetup)[0] !=
"CONFIG_ERROR")
320 highPtJetExpr_ = _HighPtJetEventFlag->expressionsFromDB(_HighPtJetEventFlag->hltDBKey(), iSetup);
321 if (_LowPtJetEventFlag->on() && _LowPtJetEventFlag->expressionsFromDB(_LowPtJetEventFlag->hltDBKey(), iSetup)[0] !=
"CONFIG_ERROR")
322 lowPtJetExpr_ = _LowPtJetEventFlag->expressionsFromDB(_LowPtJetEventFlag->hltDBKey(), iSetup);
323 if (_HighMETEventFlag->on() && _HighMETEventFlag->expressionsFromDB(_HighMETEventFlag->hltDBKey(), iSetup)[0] !=
"CONFIG_ERROR")
324 highMETExpr_ = _HighMETEventFlag->expressionsFromDB(_HighMETEventFlag->hltDBKey(), iSetup);
327 if (_MuonEventFlag->on() && _MuonEventFlag->expressionsFromDB(_MuonEventFlag->hltDBKey(), iSetup)[0] !=
"CONFIG_ERROR")
328 muonExpr_ = _MuonEventFlag->expressionsFromDB(_MuonEventFlag->hltDBKey(), iSetup);
329 if (_EleEventFlag->on() && _EleEventFlag->expressionsFromDB(_EleEventFlag->hltDBKey(), iSetup)[0] !=
"CONFIG_ERROR")
330 elecExpr_ = _EleEventFlag->expressionsFromDB(_EleEventFlag->hltDBKey(), iSetup);
331 if (_MinBiasEventFlag->on() && _MinBiasEventFlag->expressionsFromDB(_MinBiasEventFlag->hltDBKey(), iSetup)[0] !=
"CONFIG_ERROR")
332 minbiasExpr_ = _MinBiasEventFlag->expressionsFromDB(_MinBiasEventFlag->hltDBKey(), iSetup);
344 _dbe->setCurrentFolder(dirName);
349 meLumiSec = _dbe->get(
"JetMET/lumisec");
354 tlumisec = meLumiSec->
getTH1F();
355 for (
int i=0;
i<500;
i++){
356 if (tlumisec->GetBinContent(
i+1)) totlsec++;
358 totltime = double(totlsec*90);
361 if (totltime==0.) totltime=1.;
366 for (std::vector<std::string>::const_iterator ic = _FolderNames.begin(); ic != _FolderNames.end(); ic++)
370 DirName = dirName+*ic;
372 makeRatePlot(DirName,totltime);
373 if ( _HighPtJetEventFlag->on() )
374 makeRatePlot(DirName+
"/"+
"triggerName_HighJetPt",totltime);
375 if ( _LowPtJetEventFlag->on() )
376 makeRatePlot(DirName+
"/"+
"triggerName_LowJetPt",totltime);
377 if ( _MinBiasEventFlag->on() )
378 makeRatePlot(DirName+
"/"+
"triggerName_MinBias",totltime);
379 if ( _HighMETEventFlag->on() )
380 makeRatePlot(DirName+
"/"+
"triggerName_HighMET",totltime);
383 if ( _EleEventFlag->on() )
384 makeRatePlot(DirName+
"/"+
"triggerName_Ele",totltime);
385 if ( _MuonEventFlag->on() )
386 makeRatePlot(DirName+
"/"+
"triggerName_Muon",totltime);
395 _dbe->setCurrentFolder(DirName);
406 tMETRate = (TH1F*) tMET->Clone(
"METTask_METRate");
407 for (
int i = tMETRate->GetNbinsX()-1;
i>=0;
i--){
408 tMETRate->SetBinContent(
i+1,tMETRate->GetBinContent(
i+2)+tMET->GetBinContent(
i+1));
410 for (
int i = 0;
i<tMETRate->GetNbinsX();
i++){
411 tMETRate->SetBinContent(
i+1,tMETRate->GetBinContent(
i+1)/double(totltime));
414 tMETRate->SetName(
"METTask_METRate");
415 tMETRate->SetTitle(
"METTask_METRate");
416 hMETRate = _dbe->book1D(
"METTask_METRate",tMETRate);
424 if (_verbose)
std::cout <<
"METAnalyzer analyze" << std::endl;
444 if(&triggerResults) {
451 int ntrigs = triggerResults.
size();
452 if (_verbose)
std::cout <<
"ntrigs=" << ntrigs << std::endl;
461 const unsigned int nTrig(triggerNames.
size());
462 for (
unsigned int i=0;
i<nTrig;++
i)
464 if (triggerNames.
triggerName(
i).find(highPtJetExpr_[0].substr(0,highPtJetExpr_[0].rfind(
"_v")+2))!=std::string::npos && triggerResults.
accept(
i))
465 _trig_HighPtJet=
true;
466 else if (triggerNames.
triggerName(
i).find(lowPtJetExpr_[0].substr(0,lowPtJetExpr_[0].rfind(
"_v")+2))!=std::string::npos && triggerResults.
accept(
i))
468 else if (triggerNames.
triggerName(
i).find(highMETExpr_[0].substr(0,highMETExpr_[0].rfind(
"_v")+2))!=std::string::npos && triggerResults.
accept(
i))
472 else if (triggerNames.
triggerName(
i).find(muonExpr_[0].substr(0,muonExpr_[0].rfind(
"_v")+2))!=std::string::npos && triggerResults.
accept(
i))
474 else if (triggerNames.
triggerName(
i).find(elecExpr_[0].substr(0,elecExpr_[0].rfind(
"_v")+2))!=std::string::npos && triggerResults.
accept(
i))
476 else if (triggerNames.
triggerName(
i).find(minbiasExpr_[0].substr(0,minbiasExpr_[0].rfind(
"_v")+2))!=std::string::npos && triggerResults.
accept(
i))
481 for (
unsigned int i=0;
i!=HLTPathsJetMBByName_.size();
i++) {
482 unsigned int triggerIndex = triggerNames.
triggerIndex(HLTPathsJetMBByName_[
i]);
483 if (triggerIndex<triggerResults.
size()) {
484 if (triggerResults.
accept(triggerIndex)) {
490 if (HLTPathsJetMBByName_.size()==0) _trig_JetMB=triggerResults.
size()-1;
518 edm::LogInfo(
"MetAnalyzer") <<
"TriggerResults::HLT not found, "
519 "automatically select events";
530 iEvent.
getByLabel(theMETCollectionLabel, metcoll);
533 std::cout<<
"Unable to find MET results for MET collection "<<theMETCollectionLabel<<std::endl;
539 met = &(metcol->front());
546 if (theMETCollectionLabel.label() ==
"tcMet" ) {
550 iEvent.
getByLabel(inputElectronLabel, electron_h);
551 iEvent.
getByLabel(inputBeamSpotLabel, beamSpot_h);
552 iEvent.
getByLabel(
"muonTCMETValueMapProducer" ,
"muCorrData", tcMet_ValueMap_Handle);
554 if(!muon_h.isValid())
edm::LogInfo(
"OutputInfo") <<
"falied to retrieve muon data require by MET Task";
555 if(!track_h.isValid())
edm::LogInfo(
"OutputInfo") <<
"falied to retrieve track data require by MET Task";
556 if(!electron_h.isValid())
edm::LogInfo(
"OutputInfo") <<
"falied to retrieve electron data require by MET Task";
557 if(!beamSpot_h.isValid())
edm::LogInfo(
"OutputInfo") <<
"falied to retrieve beam spot data require by MET Task";
559 bspot = ( beamSpot_h.isValid() ) ? beamSpot_h->position() :
math::XYZPoint(0, 0, 0);
567 iEvent.
getByLabel(HcalNoiseRBXCollectionTag,HRBXCollection);
568 if (!HRBXCollection.
isValid()) {
569 LogDebug(
"") <<
"METAnalyzer: Could not find HcalNoiseRBX Collection" << std::endl;
570 if (_verbose)
std::cout <<
"METAnalyzer: Could not find HcalNoiseRBX Collection" << std::endl;
575 iEvent.
getByLabel(HBHENoiseFilterResultTag, HBHENoiseFilterResultHandle);
576 bool HBHENoiseFilterResult = *HBHENoiseFilterResultHandle;
577 if (!HBHENoiseFilterResultHandle.
isValid()) {
578 LogDebug(
"") <<
"METAnalyzer: Could not find HBHENoiseFilterResult" << std::endl;
579 if (_verbose)
std::cout <<
"METAnalyzer: Could not find HBHENoiseFilterResult" << std::endl;
584 iEvent.
getByLabel(theJetCollectionLabel, caloJets);
586 LogDebug(
"") <<
"METAnalyzer: Could not find jet product" << std::endl;
587 if (_verbose)
std::cout <<
"METAnalyzer: Could not find jet product" << std::endl;
598 if (_verbose)
std::cout <<
"JetID starts" << std::endl;
603 bool bJetIDMinimal=
true;
604 for (reco::CaloJetCollection::const_iterator cal = caloJets->begin();
605 cal!=caloJets->end(); ++cal){
606 jetID->calculate(iEvent, *cal);
608 if (fabs(cal->eta())<=2.6 &&
609 cal->emEnergyFraction()<=0.01) bJetIDMinimal=
false;
616 bool bJetIDLoose=
true;
617 for (reco::CaloJetCollection::const_iterator cal = caloJets->begin();
618 cal!=caloJets->end(); ++cal){
619 jetID->calculate(iEvent, *cal);
621 <<
jetID->restrictedEMF() <<
" "
622 << cal->pt() << std::endl;
626 if (
jetID->n90Hits()<2) bJetIDLoose=
false;
627 if (
jetID->fHPD()>=0.98) bJetIDLoose=
false;
631 if (fabs(cal->eta())<2.55){
632 if (cal->emEnergyFraction()<=0.01) bJetIDLoose=
false;
636 if (cal->emEnergyFraction()<=-0.9) bJetIDLoose=
false;
638 if (cal->emEnergyFraction()>= 1.0) bJetIDLoose=
false;
647 bool bJetIDTight=
true;
648 bJetIDTight=bJetIDLoose;
649 for (reco::CaloJetCollection::const_iterator cal = caloJets->begin();
650 cal!=caloJets->end(); ++cal){
651 jetID->calculate(iEvent, *cal);
655 if (
jetID->fHPD()>=0.95) bJetIDTight=
false;
658 if (fabs(cal->eta())>=1.00 && fabs(cal->eta())<1.75){
659 if (cal->pt()>80. && cal->emEnergyFraction()>=1.) bJetIDTight=
false;
663 else if (fabs(cal->eta())>=1.75 && fabs(cal->eta())<2.55){
664 if (cal->pt()>80. && cal->emEnergyFraction()>=1.) bJetIDTight=
false;
668 else if (fabs(cal->eta())>=2.55 && fabs(cal->eta())<3.25){
669 if (cal->pt()< 50. && cal->emEnergyFraction()<=-0.3) bJetIDTight=
false;
670 if (cal->pt()>=50. && cal->pt()< 80. && cal->emEnergyFraction()<=-0.2) bJetIDTight=
false;
671 if (cal->pt()>=80. && cal->pt()<340. && cal->emEnergyFraction()<=-0.1) bJetIDTight=
false;
672 if (cal->pt()>=340. && cal->emEnergyFraction()<=-0.1
673 && cal->emEnergyFraction()>=0.95) bJetIDTight=
false;
677 else if (fabs(cal->eta())>=3.25){
678 if (cal->pt()< 50. && cal->emEnergyFraction()<=-0.3
679 && cal->emEnergyFraction()>=0.90) bJetIDTight=
false;
680 if (cal->pt()>=50. && cal->pt()<130. && cal->emEnergyFraction()<=-0.2
681 && cal->emEnergyFraction()>=0.80) bJetIDTight=
false;
682 if (cal->pt()>=130. && cal->emEnergyFraction()<=-0.1
683 && cal->emEnergyFraction()>=0.70) bJetIDTight=
false;
688 if (_verbose)
std::cout <<
"JetID ends" << std::endl;
694 bool bHcalNoiseFilter = HBHENoiseFilterResult;
699 iEvent.
getByLabel(BeamHaloSummaryTag, TheBeamHaloSummary) ;
701 if (!TheBeamHaloSummary.
isValid()) {
702 std::cout <<
"BeamHaloSummary doesn't exist" << std::endl;
705 bool bBeamHaloIDTightPass =
true;
706 bool bBeamHaloIDLoosePass =
true;
708 if(!TheBeamHaloSummary.
isValid()) {
714 bBeamHaloIDLoosePass =
false;
718 bBeamHaloIDTightPass =
false;
725 bool bPrimaryVertex =
true;
727 bPrimaryVertex =
false;
733 LogDebug(
"") <<
"CaloMETAnalyzer: Could not find vertex collection" << std::endl;
734 if (_verbose)
std::cout <<
"CaloMETAnalyzer: Could not find vertex collection" << std::endl;
739 int vertex_number = vertexCollection.size();
740 VertexCollection::const_iterator
v = vertexCollection.begin();
741 for ( ; v != vertexCollection.end(); ++
v) {
742 double vertex_chi2 = v->normalizedChi2();
743 double vertex_ndof = v->ndof();
744 bool fakeVtx = v->isFake();
745 double vertex_Z = v->z();
748 && vertex_number>=_nvtx_min
749 && vertex_ndof >_vtxndof_min
750 && vertex_chi2 <_vtxchi2_max
751 && fabs(vertex_Z)<_vtxz_max )
752 bPrimaryVertex =
true;
761 if (!gtReadoutRecord.
isValid()) {
762 LogDebug(
"") <<
"CaloMETAnalyzer: Could not find GT readout record" << std::endl;
763 if (_verbose)
std::cout <<
"CaloMETAnalyzer: Could not find GT readout record product" << std::endl;
766 bool bTechTriggers =
true;
767 bool bTechTriggersAND =
true;
768 bool bTechTriggersOR =
false;
769 bool bTechTriggersNOT =
false;
771 if (gtReadoutRecord.
isValid()) {
772 const TechnicalTriggerWord& technicalTriggerWordBeforeMask = gtReadoutRecord->technicalTriggerWord();
774 if (_techTrigsAND.size() == 0)
775 bTechTriggersAND =
true;
777 for (
unsigned ttr = 0; ttr != _techTrigsAND.size(); ttr++) {
778 bTechTriggersAND = bTechTriggersAND && technicalTriggerWordBeforeMask.at(_techTrigsAND.at(ttr));
781 if (_techTrigsAND.size() == 0)
782 bTechTriggersOR =
true;
784 for (
unsigned ttr = 0; ttr != _techTrigsOR.size(); ttr++) {
785 bTechTriggersOR = bTechTriggersOR || technicalTriggerWordBeforeMask.at(_techTrigsOR.at(ttr));
787 if (_techTrigsNOT.size() == 0)
788 bTechTriggersNOT =
false;
790 for (
unsigned ttr = 0; ttr != _techTrigsNOT.size(); ttr++) {
791 bTechTriggersNOT = bTechTriggersNOT || technicalTriggerWordBeforeMask.at(_techTrigsNOT.at(ttr));
796 bTechTriggersAND =
true;
797 bTechTriggersOR =
true;
798 bTechTriggersNOT =
false;
801 if (_techTrigsAND.size()==0)
802 bTechTriggersAND =
true;
803 if (_techTrigsOR.size()==0)
804 bTechTriggersOR =
true;
805 if (_techTrigsNOT.size()==0)
806 bTechTriggersNOT =
false;
808 bTechTriggers = bTechTriggersAND && bTechTriggersOR && !bTechTriggersNOT;
813 bool bHcalNoise = bHcalNoiseFilter;
814 bool bBeamHaloID = bBeamHaloIDLoosePass;
817 bool bPhysicsDeclared =
true;
818 if(_doHLTPhysicsOn) bPhysicsDeclared =_trig_PhysDec;
821 if (_tightBHFiltering) bBeamHaloID = bBeamHaloIDTightPass;
823 if (_tightJetIDFiltering==1) bJetID = bJetIDMinimal;
824 else if (_tightJetIDFiltering==2) bJetID = bJetIDLoose;
825 else if (_tightJetIDFiltering==3) bJetID = bJetIDTight;
826 else if (_tightJetIDFiltering==-1) bJetID =
true;
828 bool bBasicCleanup = bTechTriggers && bPrimaryVertex && bPhysicsDeclared;
829 bool bExtraCleanup = bBasicCleanup && bHcalNoise && bJetID && bBeamHaloID;
833 for (std::vector<std::string>::const_iterator ic = _FolderNames.begin();
834 ic != _FolderNames.end(); ic++){
835 if (*ic==
"All") fillMESet(iEvent, DirName+
"/"+*ic, *met);
836 if (DCSFilter->filter(iEvent, iSetup)) {
837 if (_cleanupSelection){
838 if (*ic==
"BasicCleanup" && bBasicCleanup) fillMESet(iEvent, DirName+
"/"+*ic, *met);
839 if (*ic==
"ExtraCleanup" && bExtraCleanup) fillMESet(iEvent, DirName+
"/"+*ic, *met);
842 if (*ic==
"HcalNoiseFilter" && bHcalNoiseFilter ) fillMESet(iEvent, DirName+
"/"+*ic, *met);
843 if (*ic==
"JetIDMinimal" && bJetIDMinimal) fillMESet(iEvent, DirName+
"/"+*ic, *met);
844 if (*ic==
"JetIDLoose" && bJetIDLoose) fillMESet(iEvent, DirName+
"/"+*ic, *met);
845 if (*ic==
"JetIDTight" && bJetIDTight) fillMESet(iEvent, DirName+
"/"+*ic, *met);
846 if (*ic==
"BeamHaloIDTightPass" && bBeamHaloIDTightPass) fillMESet(iEvent, DirName+
"/"+*ic, *met);
847 if (*ic==
"BeamHaloIDLoosePass" && bBeamHaloIDLoosePass) fillMESet(iEvent, DirName+
"/"+*ic, *met);
848 if (*ic==
"Triggers" && bTechTriggers) fillMESet(iEvent, DirName+
"/"+*ic, *met);
849 if (*ic==
"PV" && bPrimaryVertex) fillMESet(iEvent, DirName+
"/"+*ic, *met);
861 _dbe->setCurrentFolder(DirName);
863 bool bLumiSecPlot=
false;
864 if (DirName.find(
"All")) bLumiSecPlot=
true;
867 fillMonitorElement(iEvent,DirName,
"",met, bLumiSecPlot);
869 fillMonitorElement(iEvent,DirName,
"HighPtJet",met,
false);
871 fillMonitorElement(iEvent,DirName,
"LowPtJet",met,
false);
873 fillMonitorElement(iEvent,DirName,
"MinBias",met,
false);
875 fillMonitorElement(iEvent,DirName,
"HighMET",met,
false);
879 fillMonitorElement(iEvent,DirName,
"Ele",met,
false);
881 fillMonitorElement(iEvent,DirName,
"Muon",met,
false);
890 if (TriggerTypeName==
"HighPtJet") {
891 if (!selectHighPtJetEvent(iEvent))
return;
893 else if (TriggerTypeName==
"LowPtJet") {
894 if (!selectLowPtJetEvent(iEvent))
return;
896 else if (TriggerTypeName==
"HighMET") {
897 if (met.
pt()<_highMETThreshold)
return;
902 else if (TriggerTypeName==
"Ele") {
903 if (!selectWElectronEvent(iEvent))
return;
905 else if (TriggerTypeName==
"Muon") {
906 if (!selectWMuonEvent(iEvent))
return;
910 double SumET = met.
sumEt();
911 double METSig = met.
mEtSig();
913 double MET = met.
pt();
914 double MEx = met.
px();
915 double MEy = met.
py();
916 double METPhi = met.
phi();
919 int myLuminosityBlock;
924 if (TriggerTypeName!=
"") DirName = DirName +
"/"+TriggerTypeName;
926 if (_verbose)
std::cout <<
"_etThreshold = " << _etThreshold << std::endl;
927 if (SumET>_etThreshold){
929 hMEx = _dbe->get(DirName+
"/"+
"METTask_MEx");
if (hMEx && hMEx->getRootObject()) hMEx ->
Fill(MEx);
930 hMEy = _dbe->get(DirName+
"/"+
"METTask_MEy");
if (hMEy && hMEy->getRootObject()) hMEy ->
Fill(MEy);
931 hMET = _dbe->get(DirName+
"/"+
"METTask_MET");
if (hMET && hMET->getRootObject()) hMET ->
Fill(MET);
932 hMETPhi = _dbe->get(DirName+
"/"+
"METTask_METPhi");
if (hMETPhi && hMETPhi->getRootObject()) hMETPhi ->
Fill(METPhi);
933 hSumET = _dbe->get(DirName+
"/"+
"METTask_SumET");
if (hSumET && hSumET->getRootObject()) hSumET ->
Fill(SumET);
934 hMETSig = _dbe->get(DirName+
"/"+
"METTask_METSig");
if (hMETSig && hMETSig->getRootObject()) hMETSig ->
Fill(METSig);
937 hMET_logx = _dbe->get(DirName+
"/"+
"METTask_MET_logx");
if (hMET_logx && hMET_logx->getRootObject()) hMET_logx->Fill(log10(MET));
938 hSumET_logx = _dbe->get(DirName+
"/"+
"METTask_SumET_logx");
if (hSumET_logx && hSumET_logx->getRootObject()) hSumET_logx->Fill(log10(SumET));
945 hMExLS = _dbe->get(DirName+
"/"+
"METTask_MExLS");
if (hMExLS && hMExLS->getRootObject()) hMExLS->Fill(MEx,myLuminosityBlock);
946 hMEyLS = _dbe->get(DirName+
"/"+
"METTask_MEyLS");
if (hMEyLS && hMEyLS->getRootObject()) hMEyLS->Fill(MEy,myLuminosityBlock);
951 if (theMETCollectionLabel.label() ==
"tcMet" ) {
953 if(track_h.isValid()) {
955 htrkPt = _dbe->get(DirName+
"/"+
"METTask_trackPt");
if (htrkPt && htrkPt->getRootObject()) htrkPt->Fill( trkit->pt() );
956 htrkEta = _dbe->get(DirName+
"/"+
"METTask_trackEta");
if (htrkEta && htrkEta->getRootObject()) htrkEta->Fill( trkit->eta() );
957 htrkNhits = _dbe->get(DirName+
"/"+
"METTask_trackNhits");
if (htrkNhits && htrkNhits->getRootObject()) htrkNhits->Fill( trkit->numberOfValidHits() );
958 htrkChi2 = _dbe->get(DirName+
"/"+
"METTask_trackNormalizedChi2");
if (htrkChi2 && htrkChi2->getRootObject()) htrkChi2->Fill( trkit->chi2() / trkit->ndof() );
959 double d0 = -1 * trkit->dxy( bspot );
960 htrkD0 = _dbe->get(DirName+
"/"+
"METTask_trackD0");
if (htrkD0 && htrkD0->getRootObject()) htrkD0->Fill( d0 );
964 if(electron_h.isValid()) {
966 helePt = _dbe->get(DirName+
"/"+
"METTask_electronPt");
if (helePt && helePt->getRootObject()) helePt->Fill( eleit->p4().pt() );
967 heleEta = _dbe->get(DirName+
"/"+
"METTask_electronEta");
if (heleEta && heleEta->getRootObject()) heleEta->Fill( eleit->p4().eta() );
968 heleHoE = _dbe->get(DirName+
"/"+
"METTask_electronHoverE");
if (heleHoE && heleHoE->getRootObject()) heleHoE->Fill( eleit->hadronicOverEm() );
972 if(muon_h.isValid()) {
973 for( reco::MuonCollection::const_iterator muonit = muon_h->begin(); muonit != muon_h->end(); muonit++ ) {
975 hmuPt = _dbe->
get(DirName+
"/"+
"METTask_muonPt");
if (hmuPt && hmuPt->getRootObject()) hmuPt ->
Fill( muonit->p4().pt() );
976 hmuEta = _dbe->get(DirName+
"/"+
"METTask_muonEta");
if (hmuEta && hmuEta->getRootObject()) hmuEta ->
Fill( muonit->p4().eta() );
977 hmuNhits = _dbe->get(DirName+
"/"+
"METTask_muonNhits");
if (hmuNhits && hmuNhits->getRootObject()) hmuNhits->Fill( siTrack.
isNonnull() ? siTrack->numberOfValidHits() : -999 );
978 hmuChi2 = _dbe->get(DirName+
"/"+
"METTask_muonNormalizedChi2");
if (hmuChi2 && hmuChi2->getRootObject()) hmuChi2 ->
Fill( siTrack.
isNonnull() ? siTrack->chi2()/siTrack->ndof() : -999 );
979 double d0 = siTrack.
isNonnull() ? -1 * siTrack->dxy( bspot) : -999;
980 hmuD0 = _dbe->
get(DirName+
"/"+
"METTask_muonD0");
if (hmuD0 && hmuD0->getRootObject()) hmuD0->Fill( d0 );
983 const unsigned int nMuons = muon_h->size();
984 for(
unsigned int mus = 0; mus < nMuons; mus++ ) {
987 hMExCorrection = _dbe->get(DirName+
"/"+
"METTask_MExCorrection");
if (hMExCorrection && hMExCorrection->getRootObject()) hMExCorrection->
Fill(muCorrData.
corrY());
988 hMEyCorrection = _dbe->get(DirName+
"/"+
"METTask_MEyCorrection");
if (hMEyCorrection && hMEyCorrection->getRootObject()) hMEyCorrection->
Fill(muCorrData.
corrX());
989 hMuonCorrectionFlag = _dbe->get(DirName+
"/"+
"METTask_CorrectionFlag");
if (hMuonCorrectionFlag && hMuonCorrectionFlag->getRootObject()) hMuonCorrectionFlag->
Fill(muCorrData.
type());
1001 bool return_value=
false;
1004 iEvent.
getByLabel(theJetCollectionLabel, caloJets);
1006 LogDebug(
"") <<
"METAnalyzer: Could not find jet product" << std::endl;
1007 if (_verbose)
std::cout <<
"METAnalyzer: Could not find jet product" << std::endl;
1010 for (reco::CaloJetCollection::const_iterator cal = caloJets->begin();
1011 cal!=caloJets->end(); ++cal){
1012 if (cal->pt()>_highPtJetThreshold){
1017 return return_value;
1023 bool return_value=
false;
1026 iEvent.
getByLabel(theJetCollectionLabel, caloJets);
1028 LogDebug(
"") <<
"METAnalyzer: Could not find jet product" << std::endl;
1029 if (_verbose)
std::cout <<
"METAnalyzer: Could not find jet product" << std::endl;
1032 for (reco::CaloJetCollection::const_iterator cal = caloJets->begin();
1033 cal!=caloJets->end(); ++cal){
1034 if (cal->pt()>_lowPtJetThreshold){
1039 return return_value;
1047 bool return_value=
true;
1053 return return_value;
1060 bool return_value=
true;
1066 return return_value;
const bool EcalTightHaloId() const
T getParameter(std::string const &) const
boost::indirect_iterator< typename seq_t::const_iterator > const_iterator
virtual edm::TriggerNames const & triggerNames(edm::TriggerResults const &triggerResults) const
tuple met
____________________________________________________________________________||
const bool HcalTightHaloId() const
MonitorElement * book1D(const char *name, const char *title, int nchX, double lowX, double highX)
Book 1D histogram.
const bool GlobalLooseHaloId() const
const std::string metname
bool accept() const
Has at least one path accepted the event?
void setBinLabel(int bin, const std::string &label, int axis=1)
set bin label for x, y or z axis (axis=1, 2, 3 respectively)
edm::LuminosityBlockNumber_t luminosityBlock() const
std::vector< Vertex > VertexCollection
collection of Vertex objects
Provides a code based selection for trigger and DCS information in order to have no failing filters i...
Strings::size_type size() const
const bool GlobalTightHaloId() const
virtual double py() const GCC11_FINAL
y coordinate of momentum vector
const bool HcalLooseHaloId() const
const bool CSCTightHaloId() const
bool isNonnull() const
Checks for non-null.
virtual float phi() const GCC11_FINAL
momentum azimuthal angle
unsigned int triggerIndex(std::string const &name) const
void Fill(HcalDetId &id, double val, std::vector< TH2F > &depth)
unsigned int size() const
Get number of paths stored.
virtual double px() const GCC11_FINAL
x coordinate of momentum vector
std::vector< bool > TechnicalTriggerWord
technical trigger bits (64 bits)
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
TObject * getRootObject(void) const
std::string const & triggerName(unsigned int index) const
XYZPointD XYZPoint
point in space with cartesian internal representation
static std::string const triggerResults("TriggerResults")
TH1F * getTH1F(void) const
T const * product() const
const bool CSCLooseHaloId() const
T const * get() const
Returns C++ pointer to the item.
virtual float pt() const GCC11_FINAL
transverse momentum
const bool EcalLooseHaloId() const
void setCurrentFolder(const std::string &fullpath)