45 HLTPathsJetMBByName_ =
parameters.getParameter<std::vector<std::string > >(
"HLTPathsJetMB");
47 _hlt_HighPtJet =
parameters.getParameter<std::string>(
"HLT_HighPtJet");
48 _hlt_LowPtJet =
parameters.getParameter<std::string>(
"HLT_LowPtJet");
49 _hlt_HighMET =
parameters.getParameter<std::string>(
"HLT_HighMET");
50 _hlt_LowMET =
parameters.getParameter<std::string>(
"HLT_LowMET");
51 _hlt_Ele =
parameters.getParameter<std::string>(
"HLT_Ele");
52 _hlt_Muon =
parameters.getParameter<std::string>(
"HLT_Muon");
56 _source =
parameters.getParameter<std::string>(
"Source");
64 _verbose =
parameters.getParameter<
int>(
"verbose");
65 _etThreshold =
parameters.getParameter<
double>(
"etThreshold");
66 _allhist =
parameters.getParameter<
bool>(
"allHist");
67 _allSelection=
parameters.getParameter<
bool>(
"allSelection");
69 _highPtTcJetThreshold =
parameters.getParameter<
double>(
"HighPtTcJetThreshold");
70 _lowPtTcJetThreshold =
parameters.getParameter<
double>(
"LowPtTcJetThreshold");
71 _highTcMETThreshold =
parameters.getParameter<
double>(
"HighTcMETThreshold");
72 _lowTcMETThreshold =
parameters.getParameter<
double>(
"LowTcMETThreshold");
79 std::string
DirName =
"JetMET/MET/"+_source;
82 metME = dbe->
book1D(
"metReco",
"metReco", 4, 1, 5);
87 _FolderNames.push_back(
"All");
88 _FolderNames.push_back(
"Cleanup");
89 _FolderNames.push_back(
"HcalNoiseFilter");
90 _FolderNames.push_back(
"HcalNoiseFilterTight");
91 _FolderNames.push_back(
"JetID");
92 _FolderNames.push_back(
"JetIDTight");
94 for (std::vector<std::string>::const_iterator ic = _FolderNames.begin();
95 ic != _FolderNames.end(); ic++){
96 if (*ic==
"All") bookMESet(DirName+
"/"+*ic);
97 if (*ic==
"Cleanup") bookMESet(DirName+
"/"+*ic);
99 if (*ic==
"HcalNoiseFilter") bookMESet(DirName+
"/"+*ic);
100 if (*ic==
"HcalNoiseFilterTight") bookMESet(DirName+
"/"+*ic);
101 if (*ic==
"JetID") bookMESet(DirName+
"/"+*ic);
102 if (*ic==
"JetIDTight") bookMESet(DirName+
"/"+*ic);
118 bool bLumiSecPlot=
false;
119 if (DirName.find(
"All")!=std::string::npos) bLumiSecPlot=
true;
121 bookMonitorElement(DirName,bLumiSecPlot);
123 if (_hlt_HighPtJet.size()){
124 bookMonitorElement(DirName+
"/"+
"HighPtJet",
false);
125 meTriggerName_HighPtJet = _dbe->bookString(
"triggerName_HighPtJet", _hlt_HighPtJet);
128 if (_hlt_LowPtJet.size()){
129 bookMonitorElement(DirName+
"/"+
"LowPtJet",
false);
130 meTriggerName_LowPtJet = _dbe->bookString(
"triggerName_LowPtJet", _hlt_LowPtJet);
133 if (_hlt_HighMET.size()){
134 bookMonitorElement(DirName+
"/"+
"HighMET",
false);
135 meTriggerName_HighMET = _dbe->bookString(
"triggerName_HighMET", _hlt_HighMET);
138 if (_hlt_LowMET.size()){
139 bookMonitorElement(DirName+
"/"+
"LowMET",
false);
140 meTriggerName_LowMET = _dbe->bookString(
"triggerName_LowMET", _hlt_LowMET);
143 if (_hlt_Ele.size()){
144 bookMonitorElement(DirName+
"/"+
"Ele",
false);
145 meTriggerName_Ele = _dbe->bookString(
"triggerName_Ele", _hlt_Ele);
148 if (_hlt_Muon.size()){
149 bookMonitorElement(DirName+
"/"+
"Muon",
false);
150 meTriggerName_Muon = _dbe->bookString(
"triggerName_Muon", _hlt_Muon);
159 if (_verbose)
std::cout <<
"booMonitorElement " << DirName << std::endl;
160 _dbe->setCurrentFolder(DirName);
162 meNevents = _dbe->book1D(
"METTask_Nevents",
"METTask_Nevents" ,1,0,1);
163 meTcMEx = _dbe->book1D(
"METTask_TcMEx",
"METTask_TcMEx" ,500,-500,500);
164 meTcMEy = _dbe->book1D(
"METTask_TcMEy",
"METTask_TcMEy" ,500,-500,500);
165 meTcEz = _dbe->book1D(
"METTask_TcEz",
"METTask_TcEz" ,500,-500,500);
166 meTcMETSig = _dbe->book1D(
"METTask_TcMETSig",
"METTask_TcMETSig",51,0,51);
167 meTcMET = _dbe->book1D(
"METTask_TcMET",
"METTask_TcMET" ,500,0,1000);
168 meTcMETPhi = _dbe->book1D(
"METTask_TcMETPhi",
"METTask_TcMETPhi",80,-
TMath::Pi(),
TMath::Pi());
169 meTcSumET = _dbe->book1D(
"METTask_TcSumET",
"METTask_TcSumET" ,500,0,2000);
171 meTcNeutralEMFraction = _dbe->book1D(
"METTask_TcNeutralEMFraction",
"METTask_TcNeutralEMFraction" ,50,0.,1.);
172 meTcNeutralHadFraction = _dbe->book1D(
"METTask_TcNeutralHadFraction",
"METTask_TcNeutralHadFraction",50,0.,1.);
173 meTcChargedEMFraction = _dbe->book1D(
"METTask_TcChargedEMFraction",
"METTask_TcChargedEMFraction" ,50,0.,1.);
174 meTcChargedHadFraction = _dbe->book1D(
"METTask_TcChargedHadFraction",
"METTask_TcChargedHadFraction",50,0.,1.);
175 meTcMuonFraction = _dbe->book1D(
"METTask_TcMuonFraction",
"METTask_TcMuonFraction" ,50,0.,1.);
177 meTcMETIonFeedbck = _dbe->book1D(
"METTask_TcMETIonFeedbck",
"METTask_TcMETIonFeedbck" ,500,0,1000);
178 meTcMETHPDNoise = _dbe->book1D(
"METTask_TcMETHPDNoise",
"METTask_TcMETHPDNoise" ,500,0,1000);
179 meTcMETRBXNoise = _dbe->book1D(
"METTask_TcMETRBXNoise",
"METTask_TcMETRBXNoise" ,500,0,1000);
183 meTcMExLS = _dbe->book2D(
"METTask_TcMEx_LS",
"METTask_TcMEx_LS",200,-200,200,50,0.,500.);
184 meTcMEyLS = _dbe->book2D(
"METTask_TcMEy_LS",
"METTask_TcMEy_LS",200,-200,200,50,0.,500.);
202 std::string
dirName =
"JetMET/MET/"+_source+
"/";
203 _dbe->setCurrentFolder(dirName);
208 meLumiSec = _dbe->get(
"JetMET/lumisec");
213 tlumisec = meLumiSec->
getTH1F();
214 for (
int i=0;
i<500;
i++){
215 if (tlumisec->GetBinContent(
i+1)) totlsec++;
217 totltime = double(totlsec*90);
220 if (totltime==0.) totltime=1.;
225 for (std::vector<std::string>::const_iterator ic = _FolderNames.begin(); ic != _FolderNames.end(); ic++)
229 DirName = dirName+*ic;
231 makeRatePlot(DirName,totltime);
232 if (_hlt_HighPtJet.size()) makeRatePlot(DirName+
"/"+_hlt_HighPtJet,totltime);
233 if (_hlt_LowPtJet.size()) makeRatePlot(DirName+
"/"+_hlt_LowPtJet,totltime);
234 if (_hlt_HighMET.size()) makeRatePlot(DirName+
"/"+_hlt_HighMET,totltime);
235 if (_hlt_LowMET.size()) makeRatePlot(DirName+
"/"+_hlt_LowMET,totltime);
236 if (_hlt_Ele.size()) makeRatePlot(DirName+
"/"+_hlt_Ele,totltime);
237 if (_hlt_Muon.size()) makeRatePlot(DirName+
"/"+_hlt_Muon,totltime);
246 _dbe->setCurrentFolder(DirName);
257 tTcMETRate = (TH1F*) tTcMET->Clone(
"METTask_TcMETRate");
258 for (
int i = tTcMETRate->GetNbinsX()-1;
i>=0;
i--){
259 tTcMETRate->SetBinContent(
i+1,tTcMETRate->GetBinContent(
i+2)+tTcMET->GetBinContent(
i+1));
261 for (
int i = 0;
i<tTcMETRate->GetNbinsX();
i++){
262 tTcMETRate->SetBinContent(
i+1,tTcMETRate->GetBinContent(
i+1)/double(totltime));
265 meTcMETRate = _dbe->book1D(
"METTask_TcMETRate",tTcMETRate);
275 if (_verbose)
std::cout <<
"TcMETAnalyzer analyze" << std::endl;
289 if(&triggerResults) {
296 int ntrigs = triggerResults.
size();
297 if (_verbose)
std::cout <<
"ntrigs=" << ntrigs << std::endl;
307 for (
unsigned int i=0;
i!=HLTPathsJetMBByName_.size();
i++) {
308 unsigned int triggerIndex = triggerNames.
triggerIndex(HLTPathsJetMBByName_[
i]);
309 if (triggerIndex<triggerResults.
size()) {
310 if (triggerResults.
accept(triggerIndex)) {
316 if (HLTPathsJetMBByName_.size()==0) _trig_JetMB=triggerResults.
size()-1;
319 if (_verbose)
std::cout <<
"triggerNames size" <<
" " << triggerNames.
size() << std::endl;
320 if (_verbose)
std::cout << _hlt_HighPtJet <<
" " << triggerNames.
triggerIndex(_hlt_HighPtJet) << std::endl;
321 if (_verbose)
std::cout << _hlt_LowPtJet <<
" " << triggerNames.
triggerIndex(_hlt_LowPtJet) << std::endl;
322 if (_verbose)
std::cout << _hlt_HighMET <<
" " << triggerNames.
triggerIndex(_hlt_HighMET) << std::endl;
323 if (_verbose)
std::cout << _hlt_LowMET <<
" " << triggerNames.
triggerIndex(_hlt_LowMET) << std::endl;
347 edm::LogInfo(
"TcMetAnalyzer") <<
"TriggerResults::HLT not found, "
348 "automatically select events";
359 iEvent.
getByLabel(theTcMETCollectionLabel, tcmetcoll);
361 if(!tcmetcoll.
isValid())
return;
365 tcmet = &(tcmetcol->front());
372 iEvent.
getByLabel(HcalNoiseRBXCollectionTag,HRBXCollection);
373 if (!HRBXCollection.
isValid()) {
374 LogDebug(
"") <<
"TcMETAnalyzer: Could not find HcalNoiseRBX Collection" << std::endl;
375 if (_verbose)
std::cout <<
"TcMETAnalyzer: Could not find HcalNoiseRBX Collection" << std::endl;
379 iEvent.
getByLabel(HcalNoiseSummaryTag,HNoiseSummary);
380 if (!HNoiseSummary.
isValid()) {
381 LogDebug(
"") <<
"TcMETAnalyzer: Could not find Hcal NoiseSummary product" << std::endl;
382 if (_verbose)
std::cout <<
"TcMETAnalyzer: Could not find Hcal NoiseSummary product" << std::endl;
386 iEvent.
getByLabel(theJetCollectionLabel, caloJets);
388 LogDebug(
"") <<
"TcMETAnalyzer: Could not find jet product" << std::endl;
389 if (_verbose)
std::cout <<
"TcMETAnalyzer: Could not find jet product" << std::endl;
400 if (_verbose)
std::cout <<
"JetID starts" << std::endl;
406 for (reco::CaloJetCollection::const_iterator cal = caloJets->begin();
407 cal!=caloJets->end(); ++cal){
408 jetID->calculate(iEvent, *cal);
409 if (_verbose)
std::cout << jetID->n90Hits() <<
" "
410 << jetID->restrictedEMF() <<
" "
411 << cal->pt() << std::endl;
415 if (jetID->n90Hits()<2) bJetID=
false;
416 if (jetID->fHPD()>=0.98) bJetID=
false;
420 if (fabs(cal->eta())<2.55){
421 if (cal->emEnergyFraction()<=0.01) bJetID=
false;
425 if (cal->emEnergyFraction()<=-0.9) bJetID=
false;
427 if (cal->emEnergyFraction()>= 1.0) bJetID=
false;
436 bool bJetIDTight=
true;
438 for (reco::CaloJetCollection::const_iterator cal = caloJets->begin();
439 cal!=caloJets->end(); ++cal){
440 jetID->calculate(iEvent, *cal);
444 if (jetID->fHPD()>=0.95) bJetIDTight=
false;
447 if (fabs(cal->eta())>=1.00 && fabs(cal->eta())<1.75){
448 if (cal->pt()>80. && cal->emEnergyFraction()>=1.) bJetIDTight=
false;
452 else if (fabs(cal->eta())>=1.75 && fabs(cal->eta())<2.55){
453 if (cal->pt()>80. && cal->emEnergyFraction()>=1.) bJetIDTight=
false;
457 else if (fabs(cal->eta())>=2.55 && fabs(cal->eta())<3.25){
458 if (cal->pt()< 50. && cal->emEnergyFraction()<=-0.3) bJetIDTight=
false;
459 if (cal->pt()>=50. && cal->pt()< 80. && cal->emEnergyFraction()<=-0.2) bJetIDTight=
false;
460 if (cal->pt()>=80. && cal->pt()<340. && cal->emEnergyFraction()<=-0.1) bJetIDTight=
false;
461 if (cal->pt()>=340. && cal->emEnergyFraction()<=-0.1
462 && cal->emEnergyFraction()>=0.95) bJetIDTight=
false;
466 else if (fabs(cal->eta())>=3.25){
467 if (cal->pt()< 50. && cal->emEnergyFraction()<=-0.3
468 && cal->emEnergyFraction()>=0.90) bJetIDTight=
false;
469 if (cal->pt()>=50. && cal->pt()<130. && cal->emEnergyFraction()<=-0.2
470 && cal->emEnergyFraction()>=0.80) bJetIDTight=
false;
471 if (cal->pt()>=130. && cal->emEnergyFraction()<=-0.1
472 && cal->emEnergyFraction()>=0.70) bJetIDTight=
false;
477 if (_verbose)
std::cout <<
"JetID ends" << std::endl;
483 bool bHcalNoiseFilter = HNoiseSummary->passLooseNoiseFilter();
484 bool bHcalNoiseFilterTight = HNoiseSummary->passTightNoiseFilter();
489 std::string
DirName =
"JetMET/MET/"+_source;
491 for (std::vector<std::string>::const_iterator ic = _FolderNames.begin();
492 ic != _FolderNames.end(); ic++){
493 if (*ic==
"All") fillMESet(iEvent, DirName+
"/"+*ic, *tcmet);
494 if (*ic==
"Cleanup" && bHcalNoiseFilter && bJetID) fillMESet(iEvent, DirName+
"/"+*ic, *tcmet);
496 if (*ic==
"HcalNoiseFilter" && bHcalNoiseFilter ) fillMESet(iEvent, DirName+
"/"+*ic, *tcmet);
497 if (*ic==
"HcalNoiseFilterTight" && bHcalNoiseFilterTight ) fillMESet(iEvent, DirName+
"/"+*ic, *tcmet);
498 if (*ic==
"JetID" && bJetID) fillMESet(iEvent, DirName+
"/"+*ic, *tcmet);
499 if (*ic==
"JetIDTight" && bJetIDTight) fillMESet(iEvent, DirName+
"/"+*ic, *tcmet);
509 _dbe->setCurrentFolder(DirName);
511 bool bLumiSecPlot=
false;
512 if (DirName.find(
"All")) bLumiSecPlot=
true;
514 if (_trig_JetMB) fillMonitorElement(iEvent,DirName,
"",tcmet, bLumiSecPlot);
515 if (_hlt_HighPtJet.size() && _trig_HighPtJet) fillMonitorElement(iEvent,DirName,
"HighPtJet",tcmet,
false);
516 if (_hlt_LowPtJet.size() && _trig_LowPtJet) fillMonitorElement(iEvent,DirName,
"LowPtJet",tcmet,
false);
517 if (_hlt_HighMET.size() && _trig_HighMET) fillMonitorElement(iEvent,DirName,
"HighMET",tcmet,
false);
518 if (_hlt_LowMET.size() && _trig_LowMET) fillMonitorElement(iEvent,DirName,
"LowMET",tcmet,
false);
519 if (_hlt_Ele.size() && _trig_Ele) fillMonitorElement(iEvent,DirName,
"Ele",tcmet,
false);
520 if (_hlt_Muon.size() && _trig_Muon) fillMonitorElement(iEvent,DirName,
"Muon",tcmet,
false);
525 std::string TriggerTypeName,
526 const reco::MET& tcmet,
bool bLumiSecPlot)
529 if (TriggerTypeName==
"HighPtJet") {
530 if (!selectHighPtJetEvent(iEvent))
return;
532 else if (TriggerTypeName==
"LowPtJet") {
533 if (!selectLowPtJetEvent(iEvent))
return;
535 else if (TriggerTypeName==
"HighMET") {
536 if (tcmet.
pt()<_highTcMETThreshold)
return;
538 else if (TriggerTypeName==
"LowMET") {
539 if (tcmet.
pt()<_lowTcMETThreshold)
return;
541 else if (TriggerTypeName==
"Ele") {
542 if (!selectWElectronEvent(iEvent))
return;
544 else if (TriggerTypeName==
"Muon") {
545 if (!selectWMuonEvent(iEvent))
return;
549 double tcSumET = tcmet.
sumEt();
550 double tcMETSig = tcmet.
mEtSig();
552 double tcMET = tcmet.
pt();
553 double tcMEx = tcmet.
px();
554 double tcMEy = tcmet.
py();
555 double tcMETPhi = tcmet.
phi();
558 int myLuminosityBlock;
563 if (TriggerTypeName!=
"") DirName = DirName +
"/"+TriggerTypeName;
565 if (_verbose)
std::cout <<
"_etThreshold = " << _etThreshold << std::endl;
566 if (tcMET>_etThreshold){
568 meTcMEx = _dbe->get(DirName+
"/"+
"METTask_TcMEx");
if (meTcMEx && meTcMEx->getRootObject()) meTcMEx->Fill(tcMEx);
569 meTcMEy = _dbe->get(DirName+
"/"+
"METTask_TcMEy");
if (meTcMEy && meTcMEy->getRootObject()) meTcMEy->Fill(tcMEy);
570 meTcMET = _dbe->get(DirName+
"/"+
"METTask_TcMET");
if (meTcMET && meTcMET->getRootObject()) meTcMET->Fill(tcMET);
571 meTcMETPhi = _dbe->get(DirName+
"/"+
"METTask_TcMETPhi");
if (meTcMETPhi && meTcMETPhi->getRootObject()) meTcMETPhi->Fill(tcMETPhi);
572 meTcSumET = _dbe->get(DirName+
"/"+
"METTask_TcSumET");
if (meTcSumET && meTcSumET->getRootObject()) meTcSumET->Fill(tcSumET);
573 meTcMETSig = _dbe->get(DirName+
"/"+
"METTask_TcMETSig");
if (meTcMETSig && meTcMETSig->getRootObject()) meTcMETSig->Fill(tcMETSig);
574 meTcEz = _dbe->get(DirName+
"/"+
"METTask_TcEz");
if (meTcEz && meTcEz->getRootObject()) meTcEz->Fill(tcEz);
576 meTcMETIonFeedbck = _dbe->get(DirName+
"/"+
"METTask_TcMETIonFeedbck");
if (meTcMETIonFeedbck && meTcMETIonFeedbck->getRootObject()) meTcMETIonFeedbck->Fill(tcMET);
577 meTcMETHPDNoise = _dbe->get(DirName+
"/"+
"METTask_TcMETHPDNoise");
if (meTcMETHPDNoise && meTcMETHPDNoise->getRootObject()) meTcMETHPDNoise->Fill(tcMET);
578 meTcMETRBXNoise = _dbe->get(DirName+
"/"+
"METTask_TcMETRBXNoise");
if (meTcMETRBXNoise && meTcMETRBXNoise->getRootObject()) meTcMETRBXNoise->Fill(tcMET);
582 meTcMExLS = _dbe->get(DirName+
"/"+
"METTask_TcMExLS");
if (meTcMExLS && meTcMExLS->getRootObject()) meTcMExLS->Fill(tcMEx,myLuminosityBlock);
583 meTcMEyLS = _dbe->get(DirName+
"/"+
"METTask_TcMEyLS");
if (meTcMEyLS && meTcMEyLS->getRootObject()) meTcMEyLS->Fill(tcMEy,myLuminosityBlock);
592 bool return_value=
false;
595 iEvent.
getByLabel(theJetCollectionLabel, caloJets);
597 LogDebug(
"") <<
"TcMETAnalyzer: Could not find jet product" << std::endl;
598 if (_verbose)
std::cout <<
"TcMETAnalyzer: Could not find jet product" << std::endl;
601 for (reco::CaloJetCollection::const_iterator cal = caloJets->begin();
602 cal!=caloJets->end(); ++cal){
603 if (cal->pt()>_highPtTcJetThreshold){
614 bool return_value=
false;
617 iEvent.
getByLabel(theJetCollectionLabel, caloJets);
619 LogDebug(
"") <<
"TcMETAnalyzer: Could not find jet product" << std::endl;
620 if (_verbose)
std::cout <<
"TcMETAnalyzer: Could not find jet product" << std::endl;
623 for (reco::CaloJetCollection::const_iterator cal = caloJets->begin();
624 cal!=caloJets->end(); ++cal){
625 if (cal->pt()>_lowPtTcJetThreshold){
637 bool return_value=
false;
650 bool return_value=
false;
double e_longitudinal() const
virtual edm::TriggerNames const & triggerNames(edm::TriggerResults const &triggerResults) const
MonitorElement * book1D(const char *name, const char *title, int nchX, double lowX, double highX)
Book 1D histogram.
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
Strings::size_type size() const
unsigned int triggerIndex(std::string const &name) const
unsigned int size() const
Get number of paths stored.
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
TObject * getRootObject(void) const
virtual double px() const
x coordinate of momentum vector
virtual double pt() const
transverse momentum
TH1F * getTH1F(void) const
T const * product() const
virtual double phi() const
momentum azimuthal angle
virtual double py() const
y coordinate of momentum vector
void setCurrentFolder(const std::string &fullpath)