38 std::string inputMETCollectionLabel(inputMETLabel_.label());
46 if (isCaloMET) caloMETsToken_ = consumes<reco::CaloMETCollection> (inputMETLabel_);
47 if (isPFMET) pfMETsToken_ = consumes<reco::PFMETCollection> (inputMETLabel_);
48 if(isMiniAODMET) patMETToken_ = consumes<pat::METCollection> (inputMETLabel_);
49 if (isGenMET) genMETsToken_ = consumes<reco::GenMETCollection> (inputMETLabel_);
51 genMETsTrueToken_ = consumes<reco::GenMETCollection> (
edm::InputTag(
"genMetTrue"));
52 genMETsCaloToken_ = consumes<reco::GenMETCollection> (
edm::InputTag(
"genMetCalo"));
66 mMETDifference_GenMETTrue = 0;
67 mMETDeltaPhi_GenMETTrue = 0;
68 mMETDifference_GenMETCalo = 0;
69 mMETDeltaPhi_GenMETCalo = 0;
72 mCaloMaxEtInEmTowers = 0;
73 mCaloMaxEtInHadTowers = 0;
74 mCaloEtFractionHadronic = 0;
75 mCaloEmEtFraction = 0;
88 mNeutralEMEtFraction=0;
89 mNeutralHadEtFraction=0;
90 mChargedEMEtFraction=0;
91 mChargedHadEtFraction=0;
93 mInvisibleEtFraction=0;
98 mMETDifference_GenMETTrue_MET0to20=0;
99 mMETDifference_GenMETTrue_MET20to40=0;
100 mMETDifference_GenMETTrue_MET40to60=0;
101 mMETDifference_GenMETTrue_MET60to80=0;
102 mMETDifference_GenMETTrue_MET80to100=0;
103 mMETDifference_GenMETTrue_MET100to150=0;
104 mMETDifference_GenMETTrue_MET150to200=0;
105 mMETDifference_GenMETTrue_MET200to300=0;
106 mMETDifference_GenMETTrue_MET300to400=0;
107 mMETDifference_GenMETTrue_MET400to500=0;
108 mMETDifference_GenMETTrue_METResolution=0;
118 mNvertex = ibooker.
book1D(
"Nvertex",
"Nvertex",80,0,80);
119 mMEx = ibooker.
book1D(
"MEx",
"MEx",160,-800,800);
120 mMEy = ibooker.
book1D(
"MEy",
"MEy",160,-800,800);
121 mMETSig = ibooker.
book1D(
"METSig",
"METSig",25,0,24.5);
122 mMET = ibooker.
book1D(
"MET",
"MET (20 GeV binning)" , 100,0,2000);
123 mMETFine = ibooker.
book1D(
"METFine",
"MET (2 GeV binning)" , 1000,0,2000);
124 mMET_Nvtx = ibooker.
bookProfile(
"MET_Nvtx",
"MET vs. nvtx", 60, 0., 60., 0., 2000.,
" ");
125 mMETPhi = ibooker.
book1D(
"METPhi",
"METPhi",80,-4,4);
126 mSumET = ibooker.
book1D(
"SumET" ,
"SumET" , 200,0,4000);
127 mMETDifference_GenMETTrue = ibooker.
book1D(
"METDifference_GenMETTrue",
"METDifference_GenMETTrue", 500,-500,500);
128 mMETDeltaPhi_GenMETTrue = ibooker.
book1D(
"METDeltaPhi_GenMETTrue",
"METDeltaPhi_GenMETTrue", 80,0,4);
130 mMETDifference_GenMETCalo = ibooker.
book1D(
"METDifference_GenMETCalo",
"METDifference_GenMETCalo", 500,-500,500);
131 mMETDeltaPhi_GenMETCalo = ibooker.
book1D(
"METDeltaPhi_GenMETCalo",
"METDeltaPhi_GenMETCalo", 80,0,4);
134 mMETDifference_GenMETTrue_MET0to20 = ibooker.
book1D(
"METResolution_GenMETTrue_MET0to20" ,
"METResolution_GenMETTrue_MET0to20" , 500,-500,500);
135 mMETDifference_GenMETTrue_MET20to40 = ibooker.
book1D(
"METResolution_GenMETTrue_MET20to40" ,
"METResolution_GenMETTrue_MET20to40" , 500,-500,500);
136 mMETDifference_GenMETTrue_MET40to60 = ibooker.
book1D(
"METResolution_GenMETTrue_MET40to60" ,
"METResolution_GenMETTrue_MET40to60" , 500,-500,500);
137 mMETDifference_GenMETTrue_MET60to80 = ibooker.
book1D(
"METResolution_GenMETTrue_MET60to80" ,
"METResolution_GenMETTrue_MET60to80" , 500,-500,500);
138 mMETDifference_GenMETTrue_MET80to100 = ibooker.
book1D(
"METResolution_GenMETTrue_MET80to100" ,
"METResolution_GenMETTrue_MET80to100" , 500,-500,500);
139 mMETDifference_GenMETTrue_MET100to150 = ibooker.
book1D(
"METResolution_GenMETTrue_MET100to150",
"METResolution_GenMETTrue_MET100to150", 500,-500,500);
140 mMETDifference_GenMETTrue_MET150to200 = ibooker.
book1D(
"METResolution_GenMETTrue_MET150to200",
"METResolution_GenMETTrue_MET150to200", 500,-500,500);
141 mMETDifference_GenMETTrue_MET200to300 = ibooker.
book1D(
"METResolution_GenMETTrue_MET200to300",
"METResolution_GenMETTrue_MET200to300", 500,-500,500);
142 mMETDifference_GenMETTrue_MET300to400 = ibooker.
book1D(
"METResolution_GenMETTrue_MET300to400",
"METResolution_GenMETTrue_MET300to400", 500,-500,500);
143 mMETDifference_GenMETTrue_MET400to500 = ibooker.
book1D(
"METResolution_GenMETTrue_MET400to500",
"METResolution_GenMETTrue_MET400to500", 500,-500,500);
146 float bins[] = {0.,20.,40.,60.,80.,100.,150.,200.,300.,400.,500.};
147 mMETDifference_GenMETTrue_METResolution = ibooker.
book1D(
"METResolution_GenMETTrue_InMETBins",
"METResolution_GenMETTrue_InMETBins",nBins, bins);
150 mCaloMaxEtInEmTowers = ibooker.
book1D(
"CaloMaxEtInEmTowers",
"CaloMaxEtInEmTowers",300,0,1500);
151 mCaloMaxEtInHadTowers = ibooker.
book1D(
"CaloMaxEtInHadTowers",
"CaloMaxEtInHadTowers",300,0,1500);
152 mCaloEtFractionHadronic = ibooker.
book1D(
"CaloEtFractionHadronic",
"CaloEtFractionHadronic",100,0,1);
153 mCaloEmEtFraction = ibooker.
book1D(
"CaloEmEtFraction",
"CaloEmEtFraction",100,0,1);
154 mCaloHadEtInHB = ibooker.
book1D(
"CaloHadEtInHB",
"CaloHadEtInHB", 200, 0, 2000);
155 mCaloHadEtInHE = ibooker.
book1D(
"CaloHadEtInHE",
"CaloHadEtInHE", 100, 0, 500);
156 mCaloHadEtInHO = ibooker.
book1D(
"CaloHadEtInHO",
"CaloHadEtInHO", 100, 0, 200);
157 mCaloHadEtInHF = ibooker.
book1D(
"CaloHadEtInHF",
"CaloHadEtInHF", 100, 0, 200);
158 mCaloSETInpHF = ibooker.
book1D(
"CaloSETInpHF",
"CaloSETInpHF",100, 0, 500);
159 mCaloSETInmHF = ibooker.
book1D(
"CaloSETInmHF",
"CaloSETInmHF",100, 0, 500);
160 mCaloEmEtInEE = ibooker.
book1D(
"CaloEmEtInEE",
"CaloEmEtInEE",100, 0, 500);
161 mCaloEmEtInEB = ibooker.
book1D(
"CaloEmEtInEB",
"CaloEmEtInEB",100, 0, 500);
162 mCaloEmEtInHF = ibooker.
book1D(
"CaloEmEtInHF",
"CaloEmEtInHF",100, 0, 500);
166 mNeutralEMEtFraction = ibooker.
book1D(
"GenNeutralEMEtFraction",
"GenNeutralEMEtFraction", 120, 0.0, 1.2 );
167 mNeutralHadEtFraction = ibooker.
book1D(
"GenNeutralHadEtFraction",
"GenNeutralHadEtFraction", 120, 0.0, 1.2 );
168 mChargedEMEtFraction = ibooker.
book1D(
"GenChargedEMEtFraction",
"GenChargedEMEtFraction", 120, 0.0, 1.2);
169 mChargedHadEtFraction = ibooker.
book1D(
"GenChargedHadEtFraction",
"GenChargedHadEtFraction", 120, 0.0,1.2);
170 mMuonEtFraction = ibooker.
book1D(
"GenMuonEtFraction",
"GenMuonEtFraction", 120, 0.0, 1.2 );
171 mInvisibleEtFraction = ibooker.
book1D(
"GenInvisibleEtFraction",
"GenInvisibleEtFraction", 120, 0.0, 1.2 );
174 if (isPFMET || isMiniAODMET){
175 mPFphotonEtFraction = ibooker.
book1D(
"photonEtFraction",
"photonEtFraction", 100, 0, 1);
176 mPFneutralHadronEtFraction = ibooker.
book1D(
"neutralHadronEtFraction",
"neutralHadronEtFraction", 100, 0, 1);
177 mPFelectronEtFraction = ibooker.
book1D(
"electronEtFraction",
"electronEtFraction", 100, 0, 1);
178 mPFchargedHadronEtFraction = ibooker.
book1D(
"chargedHadronEtFraction",
"chargedHadronEtFraction", 100, 0, 1);
179 mPFHFHadronEtFraction = ibooker.
book1D(
"HFHadronEtFraction",
"HFHadronEtFraction", 100, 0, 1);
180 mPFmuonEtFraction = ibooker.
book1D(
"muonEtFraction",
"muonEtFraction", 100, 0, 1);
181 mPFHFEMEtFraction = ibooker.
book1D(
"HFEMEtFraction",
"HFEMEtFraction", 100, 0, 1);
184 mPFphotonEt = ibooker.
book1D(
"photonEt",
"photonEt", 100, 0, 1000);
185 mPFneutralHadronEt = ibooker.
book1D(
"neutralHadronEt",
"neutralHadronEt", 100, 0, 1000);
186 mPFelectronEt = ibooker.
book1D(
"electronEt",
"electronEt", 100, 0, 1000);
187 mPFchargedHadronEt = ibooker.
book1D(
"chargedHadronEt",
"chargedHadronEt", 100, 0, 1000);
188 mPFmuonEt = ibooker.
book1D(
"muonEt",
"muonEt", 100, 0, 1000);
189 mPFHFHadronEt = ibooker.
book1D(
"HFHadronEt",
"HFHadronEt", 100, 0, 500);
190 mPFHFEMEt = ibooker.
book1D(
"HFEMEt",
"HFEMEt", 100, 0, 300);
203 std::cout << __FUNCTION__ <<
":" << __LINE__ <<
":pvHandle handle not found!" << std::endl;
206 const int nvtx = pvHandle->size();
207 mNvertex->Fill(nvtx);
215 if (isCaloMET) iEvent.
getByToken(caloMETsToken_, caloMETs);
216 if (isPFMET) iEvent.
getByToken(pfMETsToken_, pfMETs);
217 if (isGenMET) iEvent.
getByToken(genMETsToken_, genMETs);
218 if (isMiniAODMET) iEvent.
getByToken(patMETToken_, patMET);
219 if ((isCaloMET) and !caloMETs.
isValid())
return;
220 if ((isPFMET) and !pfMETs.
isValid())
return;
221 if ((isGenMET) and !genMETs.
isValid())
return;
222 if ((isMiniAODMET) and !patMET.
isValid())
return;
225 if (isCaloMET) { met = caloMETs->front();}
226 if (isPFMET) { met = pfMETs->front() ;}
227 if (isGenMET) { met = genMETs->front() ;}
228 if (isMiniAODMET) { met = patMET->front() ;}
230 const double SumET = met.
sumEt();
231 const double METSig = met.
mEtSig();
232 const double MET = met.
pt();
233 const double MEx = met.
px();
234 const double MEy = met.
py();
235 const double METPhi = met.
phi();
240 mMET_Nvtx->Fill((
double)nvtx, MET);
241 mMETPhi->Fill(METPhi);
243 mMETSig->Fill(METSig);
247 bool isvalidgenmet=
false;
251 iEvent.
getByToken(genMETsTrueToken_, genTrue);
255 genMetTrue = &(genmetcol->front());
258 genMetTrue=patMET->front().genMET();
262 double genMET = genMetTrue->
pt();
263 double genMETPhi = genMetTrue->
phi();
265 mMETDifference_GenMETTrue->Fill( MET - genMET );
266 mMETDeltaPhi_GenMETTrue->Fill( TMath::ACos( TMath::Cos( METPhi - genMETPhi ) ) );
270 if (MET > 0 && MET < 20) mMETDifference_GenMETTrue_MET0to20->Fill( MET - genMET );
271 else if (MET > 20 && MET < 40) mMETDifference_GenMETTrue_MET20to40->Fill( MET - genMET );
272 else if (MET > 40 && MET < 60) mMETDifference_GenMETTrue_MET40to60->Fill( MET - genMET );
273 else if (MET > 60 && MET < 80) mMETDifference_GenMETTrue_MET60to80->Fill( MET - genMET );
274 else if (MET > 80 && MET <100) mMETDifference_GenMETTrue_MET80to100->Fill( MET - genMET );
275 else if (MET >100 && MET <150) mMETDifference_GenMETTrue_MET100to150->Fill( MET - genMET );
276 else if (MET >150 && MET <200) mMETDifference_GenMETTrue_MET150to200->Fill( MET - genMET );
277 else if (MET >200 && MET <300) mMETDifference_GenMETTrue_MET200to300->Fill( MET - genMET );
278 else if (MET >300 && MET <400) mMETDifference_GenMETTrue_MET300to400->Fill( MET - genMET );
279 else if (MET >400 && MET <500) mMETDifference_GenMETTrue_MET400to500->Fill( MET - genMET );
282 edm::LogInfo(
"OutputInfo") <<
" failed to retrieve data required by MET Task: genMetTrue";
287 iEvent.
getByToken(genMETsCaloToken_, genCalo);
291 const double genMET = genMetCalo->
pt();
292 const double genMETPhi = genMetCalo->
phi();
294 mMETDifference_GenMETCalo->Fill( MET - genMET );
295 mMETDeltaPhi_GenMETCalo->Fill( TMath::ACos( TMath::Cos( METPhi - genMETPhi ) ) );
297 edm::LogInfo(
"OutputInfo") <<
" failed to retrieve data required by MET Task: genMetCalo";
307 const double caloEmEtFraction = calomet->
emEtFraction();
308 const double caloHadEtInHB = calomet->
hadEtInHB();
309 const double caloHadEtInHO = calomet->
hadEtInHO();
310 const double caloHadEtInHE = calomet->
hadEtInHE();
311 const double caloHadEtInHF = calomet->
hadEtInHF();
312 const double caloEmEtInEB = calomet->
emEtInEB();
313 const double caloEmEtInEE = calomet->
emEtInEE();
314 const double caloEmEtInHF = calomet->
emEtInHF();
318 mCaloMaxEtInEmTowers->Fill(caloMaxEtInEMTowers);
319 mCaloMaxEtInHadTowers->Fill(caloMaxEtInHadTowers);
320 mCaloEtFractionHadronic->Fill(caloEtFractionHadronic);
321 mCaloEmEtFraction->Fill(caloEmEtFraction);
322 mCaloHadEtInHB->Fill(caloHadEtInHB);
323 mCaloHadEtInHO->Fill(caloHadEtInHO);
324 mCaloHadEtInHE->Fill(caloHadEtInHE);
325 mCaloHadEtInHF->Fill(caloHadEtInHF);
326 mCaloEmEtInEB->Fill(caloEmEtInEB);
327 mCaloEmEtInEE->Fill(caloEmEtInEE);
328 mCaloEmEtInHF->Fill(caloEmEtInHF);
329 mCaloSETInpHF->Fill(caloSETInpHF);
330 mCaloSETInmHF->Fill(caloSETInmHF);
336 genmet = &(genMETs->front());
345 mNeutralEMEtFraction->Fill( NeutralEMEtFraction );
346 mNeutralHadEtFraction->Fill( NeutralHadEtFraction );
347 mChargedEMEtFraction->Fill( ChargedEMEtFraction );
348 mChargedHadEtFraction->Fill( ChargedHadEtFraction );
349 mMuonEtFraction->Fill( MuonEtFraction );
350 mInvisibleEtFraction->Fill( InvisibleEtFraction );
356 mPFphotonEt->Fill(pfmet->
photonEt());
364 mPFmuonEt->Fill(pfmet->
muonEt());
368 mPFHFEMEt->Fill(pfmet->
HFEMEt());
373 const pat::MET *patmet = &(patMET->front());
392 mMETDifference_GenMETTrue_METResolution->setBinContent(1, mMETDifference_GenMETTrue_MET0to20->getMean());
393 mMETDifference_GenMETTrue_METResolution->setBinContent(2, mMETDifference_GenMETTrue_MET20to40->getMean());
394 mMETDifference_GenMETTrue_METResolution->setBinContent(3, mMETDifference_GenMETTrue_MET40to60->getMean());
395 mMETDifference_GenMETTrue_METResolution->setBinContent(4, mMETDifference_GenMETTrue_MET60to80->getMean());
396 mMETDifference_GenMETTrue_METResolution->setBinContent(5, mMETDifference_GenMETTrue_MET80to100->getMean());
397 mMETDifference_GenMETTrue_METResolution->setBinContent(6, mMETDifference_GenMETTrue_MET100to150->getMean());
398 mMETDifference_GenMETTrue_METResolution->setBinContent(7, mMETDifference_GenMETTrue_MET150to200->getMean());
399 mMETDifference_GenMETTrue_METResolution->setBinContent(8, mMETDifference_GenMETTrue_MET200to300->getMean());
400 mMETDifference_GenMETTrue_METResolution->setBinContent(9, mMETDifference_GenMETTrue_MET300to400->getMean());
401 mMETDifference_GenMETTrue_METResolution->setBinContent(10, mMETDifference_GenMETTrue_MET400to500->getMean());
404 mMETDifference_GenMETTrue_METResolution->setBinError(1, mMETDifference_GenMETTrue_MET0to20->getRMS());
405 mMETDifference_GenMETTrue_METResolution->setBinError(2, mMETDifference_GenMETTrue_MET20to40->getRMS());
406 mMETDifference_GenMETTrue_METResolution->setBinError(3, mMETDifference_GenMETTrue_MET40to60->getRMS());
407 mMETDifference_GenMETTrue_METResolution->setBinError(4, mMETDifference_GenMETTrue_MET60to80->getRMS());
408 mMETDifference_GenMETTrue_METResolution->setBinError(5, mMETDifference_GenMETTrue_MET80to100->getRMS());
409 mMETDifference_GenMETTrue_METResolution->setBinError(6, mMETDifference_GenMETTrue_MET100to150->getRMS());
410 mMETDifference_GenMETTrue_METResolution->setBinError(7, mMETDifference_GenMETTrue_MET150to200->getRMS());
411 mMETDifference_GenMETTrue_METResolution->setBinError(8, mMETDifference_GenMETTrue_MET200to300->getRMS());
412 mMETDifference_GenMETTrue_METResolution->setBinError(9, mMETDifference_GenMETTrue_MET300to400->getRMS());
413 mMETDifference_GenMETTrue_METResolution->setBinError(10, mMETDifference_GenMETTrue_MET400to500->getRMS());
Analysis-level MET class.
T getParameter(std::string const &) const
T getUntrackedParameter(std::string const &, T const &) const
double HFEMEtFraction() const
double ChargedHadEtFraction() const
virtual void analyze(const edm::Event &, const edm::EventSetup &)
double CaloSETInmHF() const
double MuonEtFraction() const
MonitorElement * bookProfile(Args &&...args)
bool getByToken(EDGetToken token, Handle< PROD > &result) const
double maxEtInHadTowers() const
double neutralHadronEtFraction() const
tuple genMetCalo
____________________________________________________________________________||
double MuonEtFraction() const
double NeutralEMFraction() const
double ChargedEMEtFraction() const
double maxEtInEmTowers() const
double Type6EtFraction() const
double Type7EtFraction() const
double NeutralHadEtFraction() const
virtual double pt() const
transverse momentum
bool isPFMET() const
True if this pat::MET was made from a reco::pfMET.
void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
double HFHadronEtFraction() const
double muonEtFraction() const
double HFHadronEt() const
double photonEtFraction() const
double ChargedEMEtFraction() const
MonitorElement * book1D(Args &&...args)
double CaloSETInpHF() const
double InvisibleEtFraction() const
double electronEt() const
void setCurrentFolder(const std::string &fullpath)
double etFractionHadronic() const
T const * product() const
virtual double px() const
x coordinate of momentum vector
double NeutralEMEtFraction() const
double electronEtFraction() const
double chargedHadronEtFraction() const
METTester(const edm::ParameterSet &)
double NeutralHadEtFraction() const
double neutralHadronEt() const
double ChargedHadEtFraction() const
virtual double phi() const
momentum azimuthal angle
virtual double py() const
y coordinate of momentum vector
double emEtFraction() const
double chargedHadronEt() const