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"));
67 mMETDifference_GenMETTrue = 0;
68 mMETDeltaPhi_GenMETTrue = 0;
69 mMETDifference_GenMETCalo = 0;
70 mMETDeltaPhi_GenMETCalo = 0;
73 mCaloMaxEtInEmTowers = 0;
74 mCaloMaxEtInHadTowers = 0;
75 mCaloEtFractionHadronic = 0;
76 mCaloEmEtFraction = 0;
89 mNeutralEMEtFraction=0;
90 mNeutralHadEtFraction=0;
91 mChargedEMEtFraction=0;
92 mChargedHadEtFraction=0;
94 mInvisibleEtFraction=0;
99 mMETDifference_GenMETTrue_MET0to20=0;
100 mMETDifference_GenMETTrue_MET20to40=0;
101 mMETDifference_GenMETTrue_MET40to60=0;
102 mMETDifference_GenMETTrue_MET60to80=0;
103 mMETDifference_GenMETTrue_MET80to100=0;
104 mMETDifference_GenMETTrue_MET100to150=0;
105 mMETDifference_GenMETTrue_MET150to200=0;
106 mMETDifference_GenMETTrue_MET200to300=0;
107 mMETDifference_GenMETTrue_MET300to400=0;
108 mMETDifference_GenMETTrue_MET400to500=0;
109 mMETDifference_GenMETTrue_MET500=0;
119 mNvertex = ibooker.
book1D(
"Nvertex",
"Nvertex",80,0,80);
120 mMEx = ibooker.
book1D(
"MEx",
"MEx",160,-800,800);
121 mMEy = ibooker.
book1D(
"MEy",
"MEy",160,-800,800);
122 mMETSig = ibooker.
book1D(
"METSig",
"METSig",25,0,24.5);
123 mMET = ibooker.
book1D(
"MET",
"MET (20 GeV binning)" , 100,0,2000);
124 mMETFine = ibooker.
book1D(
"METFine",
"MET (2 GeV binning)" , 1000,0,2000);
125 mMET_Nvtx = ibooker.
bookProfile(
"MET_Nvtx",
"MET vs. nvtx", 60, 0., 60., 0., 2000.,
" ");
126 mMETPhi = ibooker.
book1D(
"METPhi",
"METPhi",80,-4,4);
127 mSumET = ibooker.
book1D(
"SumET" ,
"SumET" , 200,0,4000);
128 mMETDifference_GenMETTrue = ibooker.
book1D(
"METDifference_GenMETTrue",
"METDifference_GenMETTrue", 500,-500,500);
129 mMETDeltaPhi_GenMETTrue = ibooker.
book1D(
"METDeltaPhi_GenMETTrue",
"METDeltaPhi_GenMETTrue", 80,0,4);
131 mMETDifference_GenMETCalo = ibooker.
book1D(
"METDifference_GenMETCalo",
"METDifference_GenMETCalo", 500,-500,500);
132 mMETDeltaPhi_GenMETCalo = ibooker.
book1D(
"METDeltaPhi_GenMETCalo",
"METDeltaPhi_GenMETCalo", 80,0,4);
135 mMETDifference_GenMETTrue_MET0to20 = ibooker.
book1D(
"METResolution_GenMETTrue_MET0to20" ,
"METResolution_GenMETTrue_MET0to20" , 500,-500,500);
136 mMETDifference_GenMETTrue_MET20to40 = ibooker.
book1D(
"METResolution_GenMETTrue_MET20to40" ,
"METResolution_GenMETTrue_MET20to40" , 500,-500,500);
137 mMETDifference_GenMETTrue_MET40to60 = ibooker.
book1D(
"METResolution_GenMETTrue_MET40to60" ,
"METResolution_GenMETTrue_MET40to60" , 500,-500,500);
138 mMETDifference_GenMETTrue_MET60to80 = ibooker.
book1D(
"METResolution_GenMETTrue_MET60to80" ,
"METResolution_GenMETTrue_MET60to80" , 500,-500,500);
139 mMETDifference_GenMETTrue_MET80to100 = ibooker.
book1D(
"METResolution_GenMETTrue_MET80to100" ,
"METResolution_GenMETTrue_MET80to100" , 500,-500,500);
140 mMETDifference_GenMETTrue_MET100to150 = ibooker.
book1D(
"METResolution_GenMETTrue_MET100to150",
"METResolution_GenMETTrue_MET100to150", 500,-500,500);
141 mMETDifference_GenMETTrue_MET150to200 = ibooker.
book1D(
"METResolution_GenMETTrue_MET150to200",
"METResolution_GenMETTrue_MET150to200", 500,-500,500);
142 mMETDifference_GenMETTrue_MET200to300 = ibooker.
book1D(
"METResolution_GenMETTrue_MET200to300",
"METResolution_GenMETTrue_MET200to300", 500,-500,500);
143 mMETDifference_GenMETTrue_MET300to400 = ibooker.
book1D(
"METResolution_GenMETTrue_MET300to400",
"METResolution_GenMETTrue_MET300to400", 500,-500,500);
144 mMETDifference_GenMETTrue_MET400to500 = ibooker.
book1D(
"METResolution_GenMETTrue_MET400to500",
"METResolution_GenMETTrue_MET400to500", 500,-500,500);
145 mMETDifference_GenMETTrue_MET500 = ibooker.
book1D(
"METResolution_GenMETTrue_MET500",
"METResolution_GenMETTrue_MET500", 500,-500,500);
148 mCaloMaxEtInEmTowers = ibooker.
book1D(
"CaloMaxEtInEmTowers",
"CaloMaxEtInEmTowers",300,0,1500);
149 mCaloMaxEtInHadTowers = ibooker.
book1D(
"CaloMaxEtInHadTowers",
"CaloMaxEtInHadTowers",300,0,1500);
150 mCaloEtFractionHadronic = ibooker.
book1D(
"CaloEtFractionHadronic",
"CaloEtFractionHadronic",100,0,1);
151 mCaloEmEtFraction = ibooker.
book1D(
"CaloEmEtFraction",
"CaloEmEtFraction",100,0,1);
152 mCaloHadEtInHB = ibooker.
book1D(
"CaloHadEtInHB",
"CaloHadEtInHB", 200, 0, 2000);
153 mCaloHadEtInHE = ibooker.
book1D(
"CaloHadEtInHE",
"CaloHadEtInHE", 100, 0, 500);
154 mCaloHadEtInHO = ibooker.
book1D(
"CaloHadEtInHO",
"CaloHadEtInHO", 100, 0, 200);
155 mCaloHadEtInHF = ibooker.
book1D(
"CaloHadEtInHF",
"CaloHadEtInHF", 100, 0, 200);
156 mCaloSETInpHF = ibooker.
book1D(
"CaloSETInpHF",
"CaloSETInpHF",100, 0, 500);
157 mCaloSETInmHF = ibooker.
book1D(
"CaloSETInmHF",
"CaloSETInmHF",100, 0, 500);
158 mCaloEmEtInEE = ibooker.
book1D(
"CaloEmEtInEE",
"CaloEmEtInEE",100, 0, 500);
159 mCaloEmEtInEB = ibooker.
book1D(
"CaloEmEtInEB",
"CaloEmEtInEB",100, 0, 500);
160 mCaloEmEtInHF = ibooker.
book1D(
"CaloEmEtInHF",
"CaloEmEtInHF",100, 0, 500);
164 mNeutralEMEtFraction = ibooker.
book1D(
"GenNeutralEMEtFraction",
"GenNeutralEMEtFraction", 120, 0.0, 1.2 );
165 mNeutralHadEtFraction = ibooker.
book1D(
"GenNeutralHadEtFraction",
"GenNeutralHadEtFraction", 120, 0.0, 1.2 );
166 mChargedEMEtFraction = ibooker.
book1D(
"GenChargedEMEtFraction",
"GenChargedEMEtFraction", 120, 0.0, 1.2);
167 mChargedHadEtFraction = ibooker.
book1D(
"GenChargedHadEtFraction",
"GenChargedHadEtFraction", 120, 0.0,1.2);
168 mMuonEtFraction = ibooker.
book1D(
"GenMuonEtFraction",
"GenMuonEtFraction", 120, 0.0, 1.2 );
169 mInvisibleEtFraction = ibooker.
book1D(
"GenInvisibleEtFraction",
"GenInvisibleEtFraction", 120, 0.0, 1.2 );
172 if (isPFMET || isMiniAODMET){
173 mPFphotonEtFraction = ibooker.
book1D(
"photonEtFraction",
"photonEtFraction", 100, 0, 1);
174 mPFneutralHadronEtFraction = ibooker.
book1D(
"neutralHadronEtFraction",
"neutralHadronEtFraction", 100, 0, 1);
175 mPFelectronEtFraction = ibooker.
book1D(
"electronEtFraction",
"electronEtFraction", 100, 0, 1);
176 mPFchargedHadronEtFraction = ibooker.
book1D(
"chargedHadronEtFraction",
"chargedHadronEtFraction", 100, 0, 1);
177 mPFHFHadronEtFraction = ibooker.
book1D(
"HFHadronEtFraction",
"HFHadronEtFraction", 100, 0, 1);
178 mPFmuonEtFraction = ibooker.
book1D(
"muonEtFraction",
"muonEtFraction", 100, 0, 1);
179 mPFHFEMEtFraction = ibooker.
book1D(
"HFEMEtFraction",
"HFEMEtFraction", 100, 0, 1);
182 mPFphotonEt = ibooker.
book1D(
"photonEt",
"photonEt", 100, 0, 1000);
183 mPFneutralHadronEt = ibooker.
book1D(
"neutralHadronEt",
"neutralHadronEt", 100, 0, 1000);
184 mPFelectronEt = ibooker.
book1D(
"electronEt",
"electronEt", 100, 0, 1000);
185 mPFchargedHadronEt = ibooker.
book1D(
"chargedHadronEt",
"chargedHadronEt", 100, 0, 1000);
186 mPFmuonEt = ibooker.
book1D(
"muonEt",
"muonEt", 100, 0, 1000);
187 mPFHFHadronEt = ibooker.
book1D(
"HFHadronEt",
"HFHadronEt", 100, 0, 500);
188 mPFHFEMEt = ibooker.
book1D(
"HFEMEt",
"HFEMEt", 100, 0, 300);
202 std::cout << __FUNCTION__ <<
":" << __LINE__ <<
":pvHandle handle not found!" << std::endl;
205 const int nvtx = pvHandle->size();
206 mNvertex->Fill(nvtx);
214 if (isCaloMET) iEvent.
getByToken(caloMETsToken_, caloMETs);
215 if (isPFMET) iEvent.
getByToken(pfMETsToken_, pfMETs);
216 if (isGenMET) iEvent.
getByToken(genMETsToken_, genMETs);
217 if (isMiniAODMET) iEvent.
getByToken(patMETToken_, patMET);
218 if ((isCaloMET) and !caloMETs.
isValid())
return;
219 if ((isPFMET) and !pfMETs.
isValid())
return;
220 if ((isGenMET) and !genMETs.
isValid())
return;
221 if ((isMiniAODMET) and !patMET.
isValid())
return;
224 if (isCaloMET) { met = caloMETs->front();}
225 if (isPFMET) { met = pfMETs->front() ;}
226 if (isGenMET) { met = genMETs->front() ;}
227 if (isMiniAODMET) { met = patMET->front() ;}
229 const double SumET = met.
sumEt();
230 const double METSig = met.
mEtSig();
231 const double MET = met.
pt();
232 const double MEx = met.
px();
233 const double MEy = met.
py();
234 const double METPhi = met.
phi();
239 mMET_Nvtx->Fill((
double)nvtx, MET);
240 mMETPhi->Fill(METPhi);
242 mMETSig->Fill(METSig);
246 bool isvalidgenmet=
false;
250 iEvent.
getByToken(genMETsTrueToken_, genTrue);
254 genMetTrue = &(genmetcol->front());
257 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 );
280 else if (MET >500) mMETDifference_GenMETTrue_MET500->Fill( MET - genMET );
283 edm::LogInfo(
"OutputInfo") <<
" failed to retrieve data required by MET Task: genMetTrue";
288 iEvent.
getByToken(genMETsCaloToken_, genCalo);
292 const double genMET = genMetCalo->
pt();
293 const double genMETPhi = genMetCalo->
phi();
295 mMETDifference_GenMETCalo->Fill( MET - genMET );
296 mMETDeltaPhi_GenMETCalo->Fill( TMath::ACos( TMath::Cos( METPhi - genMETPhi ) ) );
298 edm::LogInfo(
"OutputInfo") <<
" failed to retrieve data required by MET Task: genMetCalo";
308 const double caloEmEtFraction = calomet->
emEtFraction();
309 const double caloHadEtInHB = calomet->
hadEtInHB();
310 const double caloHadEtInHO = calomet->
hadEtInHO();
311 const double caloHadEtInHE = calomet->
hadEtInHE();
312 const double caloHadEtInHF = calomet->
hadEtInHF();
313 const double caloEmEtInEB = calomet->
emEtInEB();
314 const double caloEmEtInEE = calomet->
emEtInEE();
315 const double caloEmEtInHF = calomet->
emEtInHF();
319 mCaloMaxEtInEmTowers->Fill(caloMaxEtInEMTowers);
320 mCaloMaxEtInHadTowers->Fill(caloMaxEtInHadTowers);
321 mCaloEtFractionHadronic->Fill(caloEtFractionHadronic);
322 mCaloEmEtFraction->Fill(caloEmEtFraction);
323 mCaloHadEtInHB->Fill(caloHadEtInHB);
324 mCaloHadEtInHO->Fill(caloHadEtInHO);
325 mCaloHadEtInHE->Fill(caloHadEtInHE);
326 mCaloHadEtInHF->Fill(caloHadEtInHF);
327 mCaloEmEtInEB->Fill(caloEmEtInEB);
328 mCaloEmEtInEE->Fill(caloEmEtInEE);
329 mCaloEmEtInHF->Fill(caloEmEtInHF);
330 mCaloSETInpHF->Fill(caloSETInpHF);
331 mCaloSETInmHF->Fill(caloSETInmHF);
337 genmet = &(genMETs->front());
346 mNeutralEMEtFraction->Fill( NeutralEMEtFraction );
347 mNeutralHadEtFraction->Fill( NeutralHadEtFraction );
348 mChargedEMEtFraction->Fill( ChargedEMEtFraction );
349 mChargedHadEtFraction->Fill( ChargedHadEtFraction );
350 mMuonEtFraction->Fill( MuonEtFraction );
351 mInvisibleEtFraction->Fill( InvisibleEtFraction );
357 mPFphotonEt->Fill(pfmet->
photonEt());
365 mPFmuonEt->Fill(pfmet->
muonEt());
369 mPFHFEMEt->Fill(pfmet->
HFEMEt());
374 const pat::MET *patmet = &(patMET->front());
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
____________________________________________________________________________||
virtual double phi() const final
momentum azimuthal angle
double MuonEtFraction() const
double NeutralEMFraction() const
double ChargedEMEtFraction() const
double maxEtInEmTowers() const
double Type6EtFraction() const
double Type7EtFraction() const
double NeutralHadEtFraction() const
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)
virtual double py() const final
y coordinate of momentum vector
double CaloSETInpHF() const
double InvisibleEtFraction() const
double electronEt() const
void setCurrentFolder(const std::string &fullpath)
double etFractionHadronic() const
T const * product() const
double NeutralEMEtFraction() const
double electronEtFraction() const
double chargedHadronEtFraction() const
METTester(const edm::ParameterSet &)
double NeutralHadEtFraction() const
virtual double px() const final
x coordinate of momentum vector
double neutralHadronEt() const
double ChargedHadEtFraction() const
double emEtFraction() const
double chargedHadronEt() const
virtual double pt() const final
transverse momentum