64 delete _HighPtJetEventFlag;
65 delete _LowPtJetEventFlag;
66 delete _MinBiasEventFlag;
67 delete _HighMETEventFlag;
68 delete _LowMETEventFlag;
70 delete _MuonEventFlag;
80 HLTPathsJetMBByName_ =
parameters.getParameter<std::vector<std::string > >(
"HLTPathsJetMB");
86 _techTrigsAND = theCleaningParameters.getParameter<std::vector<unsigned > >(
"techTrigsAND");
87 _techTrigsOR = theCleaningParameters.getParameter<std::vector<unsigned > >(
"techTrigsOR");
88 _techTrigsNOT = theCleaningParameters.getParameter<std::vector<unsigned > >(
"techTrigsNOT");
90 _doHLTPhysicsOn = theCleaningParameters.getParameter<
bool>(
"doHLTPhysicsOn");
91 _hlt_PhysDec = theCleaningParameters.getParameter<std::string>(
"HLT_PhysDec");
93 _tightBHFiltering = theCleaningParameters.getParameter<
bool>(
"tightBHFiltering");
94 _tightJetIDFiltering = theCleaningParameters.getParameter<
int>(
"tightJetIDFiltering");
95 _tightHcalFiltering = theCleaningParameters.getParameter<
bool>(
"tightHcalFiltering");
103 _doPVCheck = theCleaningParameters.getParameter<
bool>(
"doPrimaryVertexCheck");
104 vertexTag = theCleaningParameters.getParameter<
edm::InputTag>(
"vertexLabel");
107 _nvtx_min = theCleaningParameters.getParameter<
int>(
"nvtx_min");
108 _nvtxtrks_min = theCleaningParameters.getParameter<
int>(
"nvtxtrks_min");
109 _vtxndof_min = theCleaningParameters.getParameter<
int>(
"vtxndof_min");
110 _vtxchi2_max = theCleaningParameters.getParameter<
double>(
"vtxchi2_max");
111 _vtxz_max = theCleaningParameters.getParameter<
double>(
"vtxz_max");
118 _source =
parameters.getParameter<std::string>(
"Source");
128 _verbose =
parameters.getParameter<
int>(
"verbose");
129 _etThreshold =
parameters.getParameter<
double>(
"etThreshold");
130 _allhist =
parameters.getParameter<
bool>(
"allHist");
131 _allSelection=
parameters.getParameter<
bool>(
"allSelection");
132 _cleanupSelection=
parameters.getParameter<
bool>(
"cleanupSelection");
134 _highPtPFJetThreshold =
parameters.getParameter<
double>(
"HighPtJetThreshold");
135 _lowPtPFJetThreshold =
parameters.getParameter<
double>(
"LowPtJetThreshold");
136 _highPFMETThreshold =
parameters.getParameter<
double>(
"HighMETThreshold");
137 _lowPFMETThreshold =
parameters.getParameter<
double>(
"LowMETThreshold");
144 std::string
DirName =
"JetMET/MET/"+_source;
147 metME = dbe->
book1D(
"metReco",
"metReco", 4, 1, 5);
152 _FolderNames.push_back(
"All");
153 _FolderNames.push_back(
"BasicCleanup");
154 _FolderNames.push_back(
"ExtraCleanup");
155 _FolderNames.push_back(
"HcalNoiseFilter");
156 _FolderNames.push_back(
"HcalNoiseFilterTight");
157 _FolderNames.push_back(
"JetIDMinimal");
158 _FolderNames.push_back(
"JetIDLoose");
159 _FolderNames.push_back(
"JetIDTight");
160 _FolderNames.push_back(
"BeamHaloIDTightPass");
161 _FolderNames.push_back(
"BeamHaloIDLoosePass");
162 _FolderNames.push_back(
"Triggers");
163 _FolderNames.push_back(
"PV");
165 for (std::vector<std::string>::const_iterator ic = _FolderNames.begin();
166 ic != _FolderNames.end(); ic++){
167 if (*ic==
"All") bookMESet(DirName+
"/"+*ic);
168 if (_cleanupSelection){
169 if (*ic==
"BasicCleanup") bookMESet(DirName+
"/"+*ic);
170 if (*ic==
"ExtraCleanup") bookMESet(DirName+
"/"+*ic);
173 if (*ic==
"HcalNoiseFilter") bookMESet(DirName+
"/"+*ic);
174 if (*ic==
"HcalNoiseFilterTight") bookMESet(DirName+
"/"+*ic);
175 if (*ic==
"JetIDMinimal") bookMESet(DirName+
"/"+*ic);
176 if (*ic==
"JetIDLoose") bookMESet(DirName+
"/"+*ic);
177 if (*ic==
"JetIDTight") bookMESet(DirName+
"/"+*ic);
178 if (*ic==
"BeamHaloIDTightPass") bookMESet(DirName+
"/"+*ic);
179 if (*ic==
"BeamHaloIDLoosePass") bookMESet(DirName+
"/"+*ic);
180 if (*ic==
"Triggers") bookMESet(DirName+
"/"+*ic);
181 if (*ic==
"PV") bookMESet(DirName+
"/"+*ic);
198 bool bLumiSecPlot=
false;
199 if (DirName.find(
"All")!=std::string::npos) bLumiSecPlot=
true;
201 bookMonitorElement(DirName,bLumiSecPlot);
203 if ( _HighPtJetEventFlag->on() ) {
204 bookMonitorElement(DirName+
"/"+
"HighPtJet",
false);
205 meTriggerName_HighPtJet = _dbe->bookString(
"triggerName_HighPtJet", _hlt_HighPtJet);
208 if ( _LowPtJetEventFlag->on() ) {
209 bookMonitorElement(DirName+
"/"+
"LowPtJet",
false);
210 meTriggerName_LowPtJet = _dbe->bookString(
"triggerName_LowPtJet", _hlt_LowPtJet);
213 if ( _MinBiasEventFlag->on() ) {
214 bookMonitorElement(DirName+
"/"+
"MinBias",
false);
215 meTriggerName_MinBias = _dbe->bookString(
"triggerName_MinBias", _hlt_MinBias);
218 if ( _HighMETEventFlag->on() ) {
219 bookMonitorElement(DirName+
"/"+
"HighMET",
false);
220 meTriggerName_HighMET = _dbe->bookString(
"triggerName_HighMET", _hlt_HighMET);
223 if ( _LowMETEventFlag->on() ) {
224 bookMonitorElement(DirName+
"/"+
"LowMET",
false);
225 meTriggerName_LowMET = _dbe->bookString(
"triggerName_LowMET", _hlt_LowMET);
228 if ( _EleEventFlag->on() ) {
229 bookMonitorElement(DirName+
"/"+
"Ele",
false);
230 meTriggerName_Ele = _dbe->bookString(
"triggerName_Ele", _hlt_Ele);
233 if ( _MuonEventFlag->on() ) {
234 bookMonitorElement(DirName+
"/"+
"Muon",
false);
235 meTriggerName_Muon = _dbe->bookString(
"triggerName_Muon", _hlt_Muon);
243 if (_verbose)
std::cout <<
"booMonitorElement " << DirName << std::endl;
244 _dbe->setCurrentFolder(DirName);
246 meNevents = _dbe->book1D(
"METTask_Nevents",
"METTask_Nevents" ,1,0,1);
247 mePfMEx = _dbe->book1D(
"METTask_PfMEx",
"METTask_PfMEx" ,500,-500,500);
248 mePfMEx->setAxisTitle(
"MEx [GeV]",1);
249 mePfMEy = _dbe->book1D(
"METTask_PfMEy",
"METTask_PfMEy" ,500,-500,500);
250 mePfMEy->setAxisTitle(
"MEy [GeV]",1);
251 mePfEz = _dbe->book1D(
"METTask_PfEz",
"METTask_PfEz" ,500,-500,500);
252 mePfEz->setAxisTitle(
"MEz [GeV]",1);
253 mePfMETSig = _dbe->book1D(
"METTask_PfMETSig",
"METTask_PfMETSig",51,0,51);
254 mePfMETSig->setAxisTitle(
"METSig",1);
255 mePfMET = _dbe->book1D(
"METTask_PfMET",
"METTask_PfMET" ,500,0,1000);
256 mePfMET->setAxisTitle(
"MET [GeV]",1);
257 mePfMETPhi = _dbe->book1D(
"METTask_PfMETPhi",
"METTask_PfMETPhi",80,-
TMath::Pi(),
TMath::Pi());
258 mePfMETPhi->setAxisTitle(
"METPhi [rad]",1);
259 mePfSumET = _dbe->book1D(
"METTask_PfSumET",
"METTask_PfSumET" ,500,0,2000);
260 mePfSumET->setAxisTitle(
"SumET [GeV]",1);
262 mePfMET_logx = _dbe->book1D(
"METTask_PfMET_logx",
"METTask_PfMET_logx" ,40,-1.,7.);
263 mePfMET_logx->setAxisTitle(
"log(MET) [GeV]",1);
264 mePfSumET_logx = _dbe->book1D(
"METTask_PfSumET_logx",
"METTask_PfSumET_logx" ,40,-1.,7.);
265 mePfSumET_logx->setAxisTitle(
"log(SumET) [GeV]",1);
267 mePfNeutralEMFraction = _dbe->book1D(
"METTask_PfNeutralEMFraction",
"METTask_PfNeutralEMFraction" ,50,0.,1.);
268 mePfNeutralEMFraction->setAxisTitle(
"Pf Neutral EM Fraction",1);
269 mePfNeutralHadFraction = _dbe->book1D(
"METTask_PfNeutralHadFraction",
"METTask_PfNeutralHadFraction",50,0.,1.);
270 mePfNeutralHadFraction->setAxisTitle(
"Pf Neutral Had Fraction",1);
271 mePfChargedEMFraction = _dbe->book1D(
"METTask_PfChargedEMFraction",
"METTask_PfChargedEMFraction" ,50,0.,1.);
272 mePfChargedEMFraction->setAxisTitle(
"Pf Charged EM Fraction",1);
273 mePfChargedHadFraction = _dbe->book1D(
"METTask_PfChargedHadFraction",
"METTask_PfChargedHadFraction",50,0.,1.);
274 mePfChargedHadFraction->setAxisTitle(
"Pf Charged Had Fraction",1);
275 mePfMuonFraction = _dbe->book1D(
"METTask_PfMuonFraction",
"METTask_PfMuonFraction" ,50,0.,1.);
276 mePfMuonFraction->setAxisTitle(
"Pf Muon Fraction",1);
278 mePfMETIonFeedbck = _dbe->book1D(
"METTask_PfMETIonFeedbck",
"METTask_PfMETIonFeedbck" ,500,0,1000);
279 mePfMETIonFeedbck->setAxisTitle(
"MET [GeV]",1);
280 mePfMETHPDNoise = _dbe->book1D(
"METTask_PfMETHPDNoise",
"METTask_PfMETHPDNoise" ,500,0,1000);
281 mePfMETHPDNoise->setAxisTitle(
"MET [GeV]",1);
282 mePfMETRBXNoise = _dbe->book1D(
"METTask_PfMETRBXNoise",
"METTask_PfMETRBXNoise" ,500,0,1000);
283 mePfMETRBXNoise->setAxisTitle(
"MET [GeV]",1);
287 mePfMExLS = _dbe->book2D(
"METTask_PfMEx_LS",
"METTask_PfMEx_LS",200,-200,200,50,0.,500.);
288 mePfMExLS->setAxisTitle(
"MEx [GeV]",1);
289 mePfMExLS->setAxisTitle(
"Lumi Section",2);
290 mePfMEyLS = _dbe->book2D(
"METTask_PfMEy_LS",
"METTask_PfMEy_LS",200,-200,200,50,0.,500.);
291 mePfMEyLS->setAxisTitle(
"MEy [GeV]",1);
292 mePfMEyLS->setAxisTitle(
"Lumi Section",2);
300 if ( _HighPtJetEventFlag->on() ) _HighPtJetEventFlag->initRun( iRun, iSetup );
301 if ( _LowPtJetEventFlag ->on() ) _LowPtJetEventFlag ->initRun( iRun, iSetup );
302 if ( _MinBiasEventFlag ->on() ) _MinBiasEventFlag ->initRun( iRun, iSetup );
303 if ( _HighMETEventFlag ->on() ) _HighMETEventFlag ->initRun( iRun, iSetup );
304 if ( _LowMETEventFlag ->on() ) _LowMETEventFlag ->initRun( iRun, iSetup );
305 if ( _EleEventFlag ->on() ) _EleEventFlag ->initRun( iRun, iSetup );
306 if ( _MuonEventFlag ->on() ) _MuonEventFlag ->initRun( iRun, iSetup );
317 std::string
dirName =
"JetMET/MET/"+_source+
"/";
318 _dbe->setCurrentFolder(dirName);
323 meLumiSec = _dbe->get(
"JetMET/lumisec");
328 tlumisec = meLumiSec->
getTH1F();
329 for (
int i=0;
i<500;
i++){
330 if (tlumisec->GetBinContent(
i+1)) totlsec++;
332 totltime = double(totlsec*90);
335 if (totltime==0.) totltime=1.;
340 for (std::vector<std::string>::const_iterator ic = _FolderNames.begin(); ic != _FolderNames.end(); ic++)
344 DirName = dirName+*ic;
346 makeRatePlot(DirName,totltime);
347 if ( _HighPtJetEventFlag->on() )
348 makeRatePlot(DirName+
"/"+
"triggerName_HighJetPt",totltime);
349 if ( _LowPtJetEventFlag->on() )
350 makeRatePlot(DirName+
"/"+
"triggerName_LowJetPt",totltime);
351 if ( _MinBiasEventFlag->on() )
352 makeRatePlot(DirName+
"/"+
"triggerName_MinBias",totltime);
353 if ( _HighMETEventFlag->on() )
354 makeRatePlot(DirName+
"/"+
"triggerName_HighMET",totltime);
355 if ( _LowMETEventFlag->on() )
356 makeRatePlot(DirName+
"/"+
"triggerName_LowMET",totltime);
357 if ( _EleEventFlag->on() )
358 makeRatePlot(DirName+
"/"+
"triggerName_Ele",totltime);
359 if ( _MuonEventFlag->on() )
360 makeRatePlot(DirName+
"/"+
"triggerName_Muon",totltime);
368 _dbe->setCurrentFolder(DirName);
379 tPfMETRate = (TH1F*) tPfMET->Clone(
"METTask_PfMETRate");
380 for (
int i = tPfMETRate->GetNbinsX()-1;
i>=0;
i--){
381 tPfMETRate->SetBinContent(
i+1,tPfMETRate->GetBinContent(
i+2)+tPfMET->GetBinContent(
i+1));
383 for (
int i = 0;
i<tPfMETRate->GetNbinsX();
i++){
384 tPfMETRate->SetBinContent(
i+1,tPfMETRate->GetBinContent(
i+1)/double(totltime));
387 tPfMETRate->SetName(
"METTask_PfMETRate");
388 tPfMETRate->SetTitle(
"METTask_PfMETRate");
389 mePfMETRate = _dbe->book1D(
"METTask_PfMETRate",tPfMETRate);
398 if (_verbose)
std::cout <<
"PfMETAnalyzer analyze" << std::endl;
416 if(&triggerResults) {
423 int ntrigs = triggerResults.
size();
424 if (_verbose)
std::cout <<
"ntrigs=" << ntrigs << std::endl;
434 for (
unsigned int i=0;
i!=HLTPathsJetMBByName_.size();
i++) {
435 unsigned int triggerIndex = triggerNames.
triggerIndex(HLTPathsJetMBByName_[
i]);
436 if (triggerIndex<triggerResults.
size()) {
437 if (triggerResults.
accept(triggerIndex)) {
443 if (HLTPathsJetMBByName_.size()==0) _trig_JetMB=triggerResults.
size()-1;
446 if (_verbose)
std::cout <<
"triggerNames size" <<
" " << triggerNames.
size() << std::endl;
447 if (_verbose)
std::cout << _hlt_HighPtJet <<
" " << triggerNames.
triggerIndex(_hlt_HighPtJet) << std::endl;
448 if (_verbose)
std::cout << _hlt_LowPtJet <<
" " << triggerNames.
triggerIndex(_hlt_LowPtJet) << std::endl;
449 if (_verbose)
std::cout << _hlt_MinBias <<
" " << triggerNames.
triggerIndex(_hlt_MinBias) << std::endl;
450 if (_verbose)
std::cout << _hlt_HighMET <<
" " << triggerNames.
triggerIndex(_hlt_HighMET) << std::endl;
451 if (_verbose)
std::cout << _hlt_LowMET <<
" " << triggerNames.
triggerIndex(_hlt_LowMET) << std::endl;
454 if (_verbose)
std::cout << _hlt_PhysDec <<
" " << triggerNames.
triggerIndex(_hlt_PhysDec) << std::endl;
456 if ( _HighPtJetEventFlag->on() && _HighPtJetEventFlag->accept( iEvent, iSetup ) )
459 if ( _LowPtJetEventFlag->on() && _LowPtJetEventFlag->accept( iEvent, iSetup ) )
462 if ( _MinBiasEventFlag->on() && _MinBiasEventFlag->accept( iEvent, iSetup ) )
465 if ( _HighMETEventFlag->on() && _HighMETEventFlag->accept( iEvent, iSetup ) )
468 if ( _LowMETEventFlag->on() && _LowMETEventFlag->accept( iEvent, iSetup ) )
471 if ( _EleEventFlag->on() && _EleEventFlag->accept( iEvent, iSetup ) )
474 if ( _MuonEventFlag->on() && _MuonEventFlag->accept( iEvent, iSetup ) )
482 edm::LogInfo(
"PFMetAnalyzer") <<
"TriggerResults::HLT not found, "
483 "automatically select events";
494 iEvent.
getByLabel(thePfMETCollectionLabel, pfmetcoll);
496 if(!pfmetcoll.
isValid())
return;
500 pfmet = &(pfmetcol->front());
507 iEvent.
getByLabel(HcalNoiseRBXCollectionTag,HRBXCollection);
508 if (!HRBXCollection.
isValid()) {
509 LogDebug(
"") <<
"PfMETAnalyzer: Could not find HcalNoiseRBX Collection" << std::endl;
510 if (_verbose)
std::cout <<
"PfMETAnalyzer: Could not find HcalNoiseRBX Collection" << std::endl;
514 iEvent.
getByLabel(HcalNoiseSummaryTag,HNoiseSummary);
515 if (!HNoiseSummary.
isValid()) {
516 LogDebug(
"") <<
"PfMETAnalyzer: Could not find Hcal NoiseSummary product" << std::endl;
517 if (_verbose)
std::cout <<
"PfMETAnalyzer: Could not find Hcal NoiseSummary product" << std::endl;
521 iEvent.
getByLabel(theJetCollectionLabel, caloJets);
523 LogDebug(
"") <<
"PFMETAnalyzer: Could not find jet product" << std::endl;
524 if (_verbose)
std::cout <<
"PFMETAnalyzer: Could not find jet product" << std::endl;
528 iEvent.
getByLabel(PFCandidatesTag, pfCandidates);
530 LogDebug(
"") <<
"PfMETAnalyzer: Could not find pfcandidates product" << std::endl;
531 if (_verbose)
std::cout <<
"PfMETAnalyzer: Could not find pfcandidates product" << std::endl;
535 iEvent.
getByLabel(thePfJetCollectionLabel, pfJets);
537 LogDebug(
"") <<
"PFMETAnalyzer: Could not find pfjet product" << std::endl;
538 if (_verbose)
std::cout <<
"PFMETAnalyzer: Could not find pfjet product" << std::endl;
543 if (_source==
"PfMET") validateMET(*pfmet, pfCandidates);
548 if (_verbose)
std::cout <<
"JetID starts" << std::endl;
553 bool bJetIDMinimal=
true;
554 for (reco::CaloJetCollection::const_iterator cal = caloJets->begin();
555 cal!=caloJets->end(); ++cal){
556 jetID->calculate(iEvent, *cal);
558 if (fabs(cal->eta())<=2.6 &&
559 cal->emEnergyFraction()<=0.01) bJetIDMinimal=
false;
566 bool bJetIDLoose=
true;
567 for (reco::CaloJetCollection::const_iterator cal = caloJets->begin();
568 cal!=caloJets->end(); ++cal){
569 jetID->calculate(iEvent, *cal);
570 if (_verbose)
std::cout << jetID->n90Hits() <<
" "
571 << jetID->restrictedEMF() <<
" "
572 << cal->pt() << std::endl;
576 if (jetID->n90Hits()<2) bJetIDLoose=
false;
577 if (jetID->fHPD()>=0.98) bJetIDLoose=
false;
581 if (fabs(cal->eta())<2.55){
582 if (cal->emEnergyFraction()<=0.01) bJetIDLoose=
false;
586 if (cal->emEnergyFraction()<=-0.9) bJetIDLoose=
false;
588 if (cal->emEnergyFraction()>= 1.0) bJetIDLoose=
false;
597 bool bJetIDTight=
true;
598 bJetIDTight=bJetIDLoose;
599 for (reco::CaloJetCollection::const_iterator cal = caloJets->begin();
600 cal!=caloJets->end(); ++cal){
601 jetID->calculate(iEvent, *cal);
605 if (jetID->fHPD()>=0.95) bJetIDTight=
false;
608 if (fabs(cal->eta())>=1.00 && fabs(cal->eta())<1.75){
609 if (cal->pt()>80. && cal->emEnergyFraction()>=1.) bJetIDTight=
false;
613 else if (fabs(cal->eta())>=1.75 && fabs(cal->eta())<2.55){
614 if (cal->pt()>80. && cal->emEnergyFraction()>=1.) bJetIDTight=
false;
618 else if (fabs(cal->eta())>=2.55 && fabs(cal->eta())<3.25){
619 if (cal->pt()< 50. && cal->emEnergyFraction()<=-0.3) bJetIDTight=
false;
620 if (cal->pt()>=50. && cal->pt()< 80. && cal->emEnergyFraction()<=-0.2) bJetIDTight=
false;
621 if (cal->pt()>=80. && cal->pt()<340. && cal->emEnergyFraction()<=-0.1) bJetIDTight=
false;
622 if (cal->pt()>=340. && cal->emEnergyFraction()<=-0.1
623 && cal->emEnergyFraction()>=0.95) bJetIDTight=
false;
627 else if (fabs(cal->eta())>=3.25){
628 if (cal->pt()< 50. && cal->emEnergyFraction()<=-0.3
629 && cal->emEnergyFraction()>=0.90) bJetIDTight=
false;
630 if (cal->pt()>=50. && cal->pt()<130. && cal->emEnergyFraction()<=-0.2
631 && cal->emEnergyFraction()>=0.80) bJetIDTight=
false;
632 if (cal->pt()>=130. && cal->emEnergyFraction()<=-0.1
633 && cal->emEnergyFraction()>=0.70) bJetIDTight=
false;
638 if (_verbose)
std::cout <<
"JetID ends" << std::endl;
644 bool bHcalNoiseFilter = HNoiseSummary->passLooseNoiseFilter();
645 bool bHcalNoiseFilterTight = HNoiseSummary->passTightNoiseFilter();
650 iEvent.
getByLabel(BeamHaloSummaryTag, TheBeamHaloSummary) ;
652 bool bBeamHaloIDTightPass =
true;
653 bool bBeamHaloIDLoosePass =
true;
655 if(!TheBeamHaloSummary.
isValid()) {
661 bBeamHaloIDLoosePass =
false;
665 bBeamHaloIDTightPass =
false;
672 bool bPrimaryVertex =
true;
674 bPrimaryVertex =
false;
680 LogDebug(
"") <<
"CaloMETAnalyzer: Could not find vertex collection" << std::endl;
681 if (_verbose)
std::cout <<
"CaloMETAnalyzer: Could not find vertex collection" << std::endl;
686 int vertex_number = vertexCollection.size();
687 VertexCollection::const_iterator
v = vertexCollection.begin();
688 double vertex_chi2 = v->normalizedChi2();
689 double vertex_ndof = v->ndof();
690 bool fakeVtx = v->isFake();
691 double vertex_Z = v->z();
694 && vertex_number>=_nvtx_min
695 && vertex_ndof >_vtxndof_min
696 && vertex_chi2 <_vtxchi2_max
697 && fabs(vertex_Z)<_vtxz_max ) bPrimaryVertex =
true;
705 if (!gtReadoutRecord.
isValid()) {
706 LogDebug(
"") <<
"CaloMETAnalyzer: Could not find GT readout record" << std::endl;
707 if (_verbose)
std::cout <<
"CaloMETAnalyzer: Could not find GT readout record product" << std::endl;
710 bool bTechTriggers =
true;
711 bool bTechTriggersAND =
true;
712 bool bTechTriggersOR =
false;
713 bool bTechTriggersNOT =
false;
715 if (gtReadoutRecord.
isValid()) {
716 const TechnicalTriggerWord& technicalTriggerWordBeforeMask = gtReadoutRecord->technicalTriggerWord();
718 if (_techTrigsAND.size() == 0)
719 bTechTriggersAND =
true;
721 for (
unsigned ttr = 0; ttr != _techTrigsAND.size(); ttr++) {
722 bTechTriggersAND = bTechTriggersAND && technicalTriggerWordBeforeMask.at(_techTrigsAND.at(ttr));
725 if (_techTrigsAND.size() == 0)
726 bTechTriggersOR =
true;
728 for (
unsigned ttr = 0; ttr != _techTrigsOR.size(); ttr++) {
729 bTechTriggersOR = bTechTriggersOR || technicalTriggerWordBeforeMask.at(_techTrigsOR.at(ttr));
731 if (_techTrigsNOT.size() == 0)
732 bTechTriggersNOT =
false;
734 for (
unsigned ttr = 0; ttr != _techTrigsNOT.size(); ttr++) {
735 bTechTriggersNOT = bTechTriggersNOT || technicalTriggerWordBeforeMask.at(_techTrigsNOT.at(ttr));
740 bTechTriggersAND =
true;
741 bTechTriggersOR =
true;
742 bTechTriggersNOT =
false;
745 if (_techTrigsAND.size()==0)
746 bTechTriggersAND =
true;
747 if (_techTrigsOR.size()==0)
748 bTechTriggersOR =
true;
749 if (_techTrigsNOT.size()==0)
750 bTechTriggersNOT =
false;
752 bTechTriggers = bTechTriggersAND && bTechTriggersOR && !bTechTriggersNOT;
757 bool bHcalNoise = bHcalNoiseFilter;
758 bool bBeamHaloID = bBeamHaloIDLoosePass;
759 bool bJetID = bJetIDMinimal;
761 bool bPhysicsDeclared =
true;
762 if(_doHLTPhysicsOn) bPhysicsDeclared =_trig_PhysDec;
764 if (_tightHcalFiltering) bHcalNoise = bHcalNoiseFilterTight;
765 if (_tightBHFiltering) bBeamHaloID = bBeamHaloIDTightPass;
767 if (_tightJetIDFiltering==1) bJetID = bJetIDMinimal;
768 else if (_tightJetIDFiltering==2) bJetID = bJetIDLoose;
769 else if (_tightJetIDFiltering==3) bJetID = bJetIDTight;
770 else if (_tightJetIDFiltering==-1) bJetID =
true;
772 bool bBasicCleanup = bTechTriggers && bPrimaryVertex && bPhysicsDeclared;
773 bool bExtraCleanup = bBasicCleanup && bHcalNoise && bJetID && bBeamHaloID;
775 std::string
DirName =
"JetMET/MET/"+_source;
777 for (std::vector<std::string>::const_iterator ic = _FolderNames.begin();
778 ic != _FolderNames.end(); ic++){
779 if (*ic==
"All") fillMESet(iEvent, DirName+
"/"+*ic, *pfmet);
780 if (DCSFilter->filter(iEvent, iSetup)) {
781 if (_cleanupSelection){
782 if (*ic==
"BasicCleanup" && bBasicCleanup) fillMESet(iEvent, DirName+
"/"+*ic, *pfmet);
783 if (*ic==
"ExtraCleanup" && bExtraCleanup) fillMESet(iEvent, DirName+
"/"+*ic, *pfmet);
786 if (*ic==
"HcalNoiseFilter" && bHcalNoiseFilter ) fillMESet(iEvent, DirName+
"/"+*ic, *pfmet);
787 if (*ic==
"HcalNoiseFilterTight" && bHcalNoiseFilterTight ) fillMESet(iEvent, DirName+
"/"+*ic, *pfmet);
788 if (*ic==
"JetIDMinimal" && bJetIDMinimal) fillMESet(iEvent, DirName+
"/"+*ic, *pfmet);
789 if (*ic==
"JetIDLoose" && bJetIDLoose) fillMESet(iEvent, DirName+
"/"+*ic, *pfmet);
790 if (*ic==
"JetIDTight" && bJetIDTight) fillMESet(iEvent, DirName+
"/"+*ic, *pfmet);
791 if (*ic==
"BeamHaloIDTightPass" && bBeamHaloIDTightPass) fillMESet(iEvent, DirName+
"/"+*ic, *pfmet);
792 if (*ic==
"BeamHaloIDLoosePass" && bBeamHaloIDLoosePass) fillMESet(iEvent, DirName+
"/"+*ic, *pfmet);
793 if (*ic==
"Triggers" && bTechTriggers) fillMESet(iEvent, DirName+
"/"+*ic, *pfmet);
794 if (*ic==
"PV" && bPrimaryVertex) fillMESet(iEvent, DirName+
"/"+*ic, *pfmet);
820 double cosphi =
cos(phi);
821 double sinphi =
sin(phi);
824 double sintheta =
sin(theta);
826 double et = E*sintheta;
827 double ex = et*cosphi;
828 double ey = et*sinphi;
835 double Et =
sqrt( sumEx*sumEx + sumEy*sumEy);
839 if (sumEt!=pfmet.
sumEt() || sumEx!=pfmet.
px() || sumEy!=pfmet.
py() || missingEt.T()!=pfmet.
pt() )
841 std::cout<<
"PFSumEt: " << sumEt <<
", "<<
"PFMETBlock: "<<pfmet.
pt()<<std::endl;
842 std::cout<<
"PFMET: " << missingEt.T() <<
", "<<
"PFMETBlock: "<<pfmet.
pt()<<std::endl;
843 std::cout<<
"PFMETx: " << missingEt.X() <<
", "<<
"PFMETBlockx: "<<pfmet.
pt()<<std::endl;
844 std::cout<<
"PFMETy: " << missingEt.Y() <<
", "<<
"PFMETBlocky: "<<pfmet.
pt()<<std::endl;
853 _dbe->setCurrentFolder(DirName);
855 bool bLumiSecPlot=
false;
856 if (DirName.find(
"All")) bLumiSecPlot=
true;
858 if (_trig_JetMB) fillMonitorElement(iEvent,DirName,
"",pfmet, bLumiSecPlot);
859 if (_hlt_HighPtJet.size() && _trig_HighPtJet) fillMonitorElement(iEvent,DirName,
"HighPtJet",pfmet,
false);
860 if (_hlt_LowPtJet.size() && _trig_LowPtJet) fillMonitorElement(iEvent,DirName,
"LowPtJet",pfmet,
false);
861 if (_hlt_MinBias.size() && _trig_MinBias) fillMonitorElement(iEvent,DirName,
"MinBias",pfmet,
false);
862 if (_hlt_HighMET.size() && _trig_HighMET) fillMonitorElement(iEvent,DirName,
"HighMET",pfmet,
false);
863 if (_hlt_LowMET.size() && _trig_LowMET) fillMonitorElement(iEvent,DirName,
"LowMET",pfmet,
false);
864 if (_hlt_Ele.size() && _trig_Ele) fillMonitorElement(iEvent,DirName,
"Ele",pfmet,
false);
865 if (_hlt_Muon.size() && _trig_Muon) fillMonitorElement(iEvent,DirName,
"Muon",pfmet,
false);
870 std::string TriggerTypeName,
874 if (TriggerTypeName==
"HighPtJet") {
875 if (!selectHighPtJetEvent(iEvent))
return;
877 else if (TriggerTypeName==
"LowPtJet") {
878 if (!selectLowPtJetEvent(iEvent))
return;
880 else if (TriggerTypeName==
"HighMET") {
881 if (pfmet.
pt()<_highPFMETThreshold)
return;
883 else if (TriggerTypeName==
"LowMET") {
884 if (pfmet.
pt()<_lowPFMETThreshold)
return;
886 else if (TriggerTypeName==
"Ele") {
887 if (!selectWElectronEvent(iEvent))
return;
889 else if (TriggerTypeName==
"Muon") {
890 if (!selectWMuonEvent(iEvent))
return;
894 double pfSumET = pfmet.
sumEt();
895 double pfMETSig = pfmet.
mEtSig();
898 double pfMEx = pfmet.
px();
899 double pfMEy = pfmet.
py();
900 double pfMETPhi = pfmet.
phi();
910 int myLuminosityBlock;
915 if (TriggerTypeName!=
"") DirName = DirName +
"/"+TriggerTypeName;
917 if (_verbose)
std::cout <<
"_etThreshold = " << _etThreshold << std::endl;
918 if (pfSumET>_etThreshold){
920 mePfMEx = _dbe->get(DirName+
"/"+
"METTask_PfMEx");
if (mePfMEx && mePfMEx->getRootObject()) mePfMEx->Fill(pfMEx);
921 mePfMEy = _dbe->get(DirName+
"/"+
"METTask_PfMEy");
if (mePfMEy && mePfMEy->getRootObject()) mePfMEy->Fill(pfMEy);
922 mePfMET = _dbe->get(DirName+
"/"+
"METTask_PfMET");
if (mePfMET && mePfMET->getRootObject()) mePfMET->Fill(pfMET);
923 mePfMETPhi = _dbe->get(DirName+
"/"+
"METTask_PfMETPhi");
if (mePfMETPhi && mePfMETPhi->getRootObject()) mePfMETPhi->Fill(pfMETPhi);
924 mePfSumET = _dbe->get(DirName+
"/"+
"METTask_PfSumET");
if (mePfSumET && mePfSumET->getRootObject()) mePfSumET->Fill(pfSumET);
925 mePfMETSig = _dbe->get(DirName+
"/"+
"METTask_PfMETSig");
if (mePfMETSig && mePfMETSig->getRootObject()) mePfMETSig->Fill(pfMETSig);
926 mePfEz = _dbe->get(DirName+
"/"+
"METTask_PfEz");
if (mePfEz && mePfEz->getRootObject()) mePfEz->Fill(pfEz);
928 mePfMET_logx = _dbe->get(DirName+
"/"+
"METTask_PfMET_logx");
if (mePfMET_logx && mePfMET_logx->getRootObject()) mePfMET_logx->Fill(log10(pfMET));
929 mePfSumET_logx = _dbe->get(DirName+
"/"+
"METTask_PfSumET_logx");
if (mePfSumET_logx && mePfSumET_logx->getRootObject()) mePfSumET_logx->Fill(log10(pfSumET));
931 mePfMETIonFeedbck = _dbe->get(DirName+
"/"+
"METTask_PfMETIonFeedbck");
if (mePfMETIonFeedbck && mePfMETIonFeedbck->getRootObject()) mePfMETIonFeedbck->Fill(pfMET);
932 mePfMETHPDNoise = _dbe->get(DirName+
"/"+
"METTask_PfMETHPDNoise");
if (mePfMETHPDNoise && mePfMETHPDNoise->getRootObject()) mePfMETHPDNoise->Fill(pfMET);
933 mePfMETRBXNoise = _dbe->get(DirName+
"/"+
"METTask_PfMETRBXNoise");
if (mePfMETRBXNoise && mePfMETRBXNoise->getRootObject()) mePfMETRBXNoise->Fill(pfMET);
935 mePfNeutralEMFraction = _dbe->get(DirName+
"/"+
"METTask_mePfNeutralEMFraction");
936 if (mePfNeutralEMFraction && mePfNeutralEMFraction->getRootObject()) mePfNeutralEMFraction->Fill(pfNeutralEMFraction);
937 mePfNeutralHadFraction = _dbe->get(DirName+
"/"+
"METTask_mePfNeutralHadFraction");
938 if (mePfNeutralHadFraction && mePfNeutralHadFraction->getRootObject()) mePfNeutralHadFraction->Fill(pfNeutralHadFraction);
939 mePfChargedEMFraction = _dbe->get(DirName+
"/"+
"METTask_mePfChargedEMFraction");
940 if (mePfChargedEMFraction && mePfChargedEMFraction->getRootObject()) mePfChargedEMFraction->Fill(pfChargedEMFraction);
941 mePfChargedHadFraction = _dbe->get(DirName+
"/"+
"METTask_mePfChargedHadFraction");
942 if (mePfChargedHadFraction && mePfChargedHadFraction->getRootObject()) mePfChargedHadFraction->Fill(pfChargedHadFraction);
943 mePfMuonFraction = _dbe->get(DirName+
"/"+
"METTask_mePfMuonFraction");
944 if (mePfMuonFraction && mePfMuonFraction->getRootObject()) mePfMuonFraction->Fill(pfMuonFraction);
948 mePfMExLS = _dbe->get(DirName+
"/"+
"METTask_PfMExLS");
if (mePfMExLS && mePfMExLS->getRootObject()) mePfMExLS->Fill(pfMEx,myLuminosityBlock);
949 mePfMEyLS = _dbe->get(DirName+
"/"+
"METTask_PfMEyLS");
if (mePfMEyLS && mePfMEyLS->getRootObject()) mePfMEyLS->Fill(pfMEy,myLuminosityBlock);
958 bool return_value=
false;
961 iEvent.
getByLabel(thePfJetCollectionLabel, pfJets);
963 LogDebug(
"") <<
"PFMETAnalyzer: Could not find pfjet product" << std::endl;
964 if (_verbose)
std::cout <<
"PFMETAnalyzer: Could not find pfjet product" << std::endl;
967 for (reco::PFJetCollection::const_iterator pf = pfJets->begin();
968 pf!=pfJets->end(); ++pf){
969 if (pf->pt()>_highPtPFJetThreshold){
980 bool return_value=
false;
983 iEvent.
getByLabel(thePfJetCollectionLabel, pfJets);
985 LogDebug(
"") <<
"PFMETAnalyzer: Could not find jet product" << std::endl;
986 if (_verbose)
std::cout <<
"PFMETAnalyzer: Could not find jet product" << std::endl;
989 for (reco::PFJetCollection::const_iterator cal = pfJets->begin();
990 cal!=pfJets->end(); ++cal){
991 if (cal->pt()>_lowPtPFJetThreshold){
1003 bool return_value=
true;
1009 return return_value;
1016 bool return_value=
true;
1022 return return_value;
const bool EcalTightHaloId() const
T getParameter(std::string const &) const
double e_longitudinal() const
virtual edm::TriggerNames const & triggerNames(edm::TriggerResults const &triggerResults) const
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
double ChargedEMFraction() const
Sin< T >::type sin(const T &t)
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
Geom::Theta< T > theta() const
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
const bool HcalLooseHaloId() const
std::vector< PFCandidatePtr > pfCandidates(const PFJet &jet, int particleId, bool sort=true)
const bool CSCTightHaloId() const
XYZTLorentzVectorD XYZTLorentzVector
Lorentz vector with cylindrical internal representation using pseudorapidity.
virtual double energy() const
energy
unsigned int triggerIndex(std::string const &name) const
unsigned int size() const
Get number of paths stored.
Cos< T >::type cos(const T &t)
std::vector< bool > TechnicalTriggerWord
technical trigger bits (64 bits)
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
virtual double theta() const
momentum polar angle
double ChargedHadFraction() const
TObject * getRootObject(void) const
virtual double px() const
x coordinate of momentum vector
virtual double pt() const
transverse momentum
double NeutralEMFraction() const
TH1F * getTH1F(void) const
T const * product() const
const bool CSCLooseHaloId() const
Particle reconstructed by the particle flow algorithm.
double NeutralHadFraction() const
double MuonFraction() const
virtual double phi() const
momentum azimuthal angle
const bool EcalLooseHaloId() const
virtual double py() const
y coordinate of momentum vector
void setCurrentFolder(const std::string &fullpath)