11 #define BOOK1D(name, title, nbinsx, lowx, highx) \
13 DQM ? DQM->book1D(#name, title, nbinsx, lowx, highx)->getTH1F() : new TH1F(#name, title, nbinsx, lowx, highx)
16 #define BOOK2D(name, title, nbinsx, lowx, highx, nbinsy, lowy, highy) \
17 h##name = DQM ? DQM->book2D(#name, title, nbinsx, lowx, highx, nbinsy, lowy, highy)->getTH2F() \
18 : new TH2F(#name, title, nbinsx, lowx, highx, nbinsy, lowy, highy)
23 #define SETAXES(name, xtitle, ytitle) \
24 h##name->GetXaxis()->SetTitle(xtitle); \
25 h##name->GetYaxis()->SetTitle(ytitle)
27 #define ET (PlotAgainstReco_) ? "reconstructed E_{T} [GeV]" : "generated E_{T} [GeV]"
28 #define ETA (PlotAgainstReco_) ? "reconstructed #eta" : "generated #eta"
29 #define PHI (PlotAgainstReco_) ? "reconstructed #phi (rad)" : "generated #phi (rad)"
38 bool PlotAgainstReco_,
83 BOOK2D(DeltaEtOverEtvsEt,
"#DeltaE_{T}/E_{T} vsE_{T}", nbinsEt,
minEt,
maxEt, nbinsEt, -1, 1);
85 BOOK2D(DeltaEtOverEtvsEta,
"#DeltaE_{T}/E_{T} vs #eta", nbinsEta,
minEta,
maxEta, 100, -1, 1);
87 BOOK2D(DeltaEtOverEtvsPhi,
"#DeltaE_{T}/E_{T} vs #Phi", 200, -
M_PI,
M_PI, 100, -1, 1);
89 BOOK2D(DeltaEtOverEtvsDeltaR,
"#DeltaE_{T}/E_{T} vs #DeltaR", 100, 0, 1, 100, -1, 1);
106 BOOK1D(NRec,
"Number of reconstructed objects", 20, 0, 20);
109 BOOK1D(EtaSeen,
"seen #eta", 100, -5, 5);
110 BOOK1D(PhiSeen,
"seen #phi", 100, -3.5, 3.5);
112 BOOK2D(EtvsEtaSeen,
"seen E_{T} vs eta", 100, -5, 5, 200, 0, 200);
113 BOOK2D(EtvsPhiSeen,
"seen E_{T} vs seen #phi", 100, -3.5, 3.5, 200, 0, 200);
115 BOOK1D(PhiRec,
"Rec #phi", 100, -3.5, 3.5);
121 BOOK2D(EtRecOverTrueEtvsTrueEt,
"Rec E_{T} / E_{T} vs E_{T}", nbinsEt,
minEt,
maxEt, 1000, 0., 100.);
123 BOOK1D(EtaGen,
"generated #eta", 100, -5, 5);
124 BOOK1D(PhiGen,
"generated #phi", 100, -3.5, 3.5);
126 BOOK2D(EtvsEtaGen,
"generated E_{T} vs generated #eta", 100, -5, 5, 200, 0, 200);
127 BOOK2D(EtvsPhiGen,
"generated E_{T} vs generated #phi", 100, -3.5, 3.5, 200, 0, 200);
129 BOOK1D(NGen,
"Number of generated objects", 20, 0, 20);
132 BOOK1D(SumEt,
"SumEt", 1000, 0., 3000.);
133 BOOK1D(TrueSumEt,
"TrueSumEt", 1000, 0., 3000.);
134 BOOK2D(DeltaSetvsSet,
"#DeltaSEt vs trueSEt", 3000, 0., 3000., 1000, -1000., 1000.);
135 BOOK2D(DeltaMexvsSet,
"#DeltaMEX vs trueSEt", 3000, 0., 3000., 1000, -400., 400.);
136 BOOK2D(DeltaSetOverSetvsSet,
"#DeltaSetOverSet vs trueSet", 3000, 0., 3000., 1000, -1., 1.);
137 BOOK2D(RecSetvsTrueSet,
"Set vs trueSet", 3000, 0., 3000., 3000, 0., 3000.);
138 BOOK2D(RecSetOverTrueSetvsTrueSet,
"Set/trueSet vs trueSet", 3000, 0., 3000., 500, 0., 2.);
139 BOOK2D(TrueMexvsTrueSet,
"trueMex vs trueSet", 3000, 0., 3000., nbinsEt, -
maxEt,
maxEt);
147 SETAXES(DeltaEt,
"#DeltaE_{T} [GeV]",
"");
148 SETAXES(DeltaEx,
"#DeltaE_{X} [GeV]",
"");
149 SETAXES(DeltaEy,
"#DeltaE_{Y} [GeV]",
"");
150 SETAXES(DeltaEtvsEt,
ET,
"#DeltaE_{T} [GeV]");
151 SETAXES(DeltaEtOverEtvsEt,
ET,
"#DeltaE_{T}/E_{T}");
152 SETAXES(DeltaEtvsEta,
ETA,
"#DeltaE_{T} [GeV]");
153 SETAXES(DeltaEtOverEtvsEta,
ETA,
"#DeltaE_{T}/E_{T}");
154 SETAXES(DeltaEtvsPhi,
PHI,
"#DeltaE_{T} [GeV]");
155 SETAXES(DeltaEtOverEtvsPhi,
PHI,
"#DeltaE_{T}/E_{T}");
156 SETAXES(DeltaEtvsDeltaR,
"#DeltaR",
"#DeltaE_{T} [GeV]");
157 SETAXES(DeltaEtOverEtvsDeltaR,
"#DeltaR",
"#DeltaE_{T}/E_{T}");
166 SETAXES(DeltaPhivsEt,
ET,
"#Delta#phi [rad]");
167 SETAXES(DeltaPhivsEta,
ETA,
"#Delta#phi [rad]");
174 SETAXES(NRec,
"Number of Rec Objects",
"");
176 SETAXES(EtaSeen,
"seen #eta",
"");
177 SETAXES(PhiSeen,
"seen #phi [rad]",
"");
178 SETAXES(EtSeen,
"seen E_{T} [GeV]",
"");
179 SETAXES(EtvsEtaSeen,
"seen #eta",
"seen E_{T}");
180 SETAXES(EtvsPhiSeen,
"seen #phi [rad]",
"seen E_{T}");
182 SETAXES(PhiRec,
"#phi [rad]",
"");
183 SETAXES(EtRec,
"E_{T} [GeV]",
"");
184 SETAXES(ExRec,
"E_{X} [GeV]",
"");
185 SETAXES(EyRec,
"E_{Y} [GeV]",
"");
186 SETAXES(EtRecvsEt,
ET,
"Rec E_{T} [GeV]");
187 SETAXES(EtRecOverTrueEtvsTrueEt,
ET,
"Rec E_{T} / E_{T} [GeV]");
189 SETAXES(EtaGen,
"generated #eta",
"");
190 SETAXES(PhiGen,
"generated #phi [rad]",
"");
191 SETAXES(EtGen,
"generated E_{T} [GeV]",
"");
192 SETAXES(EtvsPhiGen,
"generated #phi [rad]",
"generated E_{T} [GeV]");
193 SETAXES(EtvsEtaGen,
"generated #eta",
"generated E_{T} [GeV]");
195 SETAXES(NGen,
"Number of Gen Objects",
"");
198 SETAXES(SumEt,
"SumEt [GeV]",
"");
199 SETAXES(TrueSumEt,
"TrueSumEt [GeV]",
"");
200 SETAXES(DeltaSetvsSet,
"TrueSumEt",
"#DeltaSumEt [GeV]");
201 SETAXES(DeltaMexvsSet,
"TrueSumEt",
"#DeltaMEX [GeV]");
202 SETAXES(DeltaSetOverSetvsSet,
"TrueSumEt",
"#DeltaSumEt/trueSumEt");
203 SETAXES(RecSetvsTrueSet,
"TrueSumEt",
"SumEt");
204 SETAXES(RecSetOverTrueSetvsTrueSet,
"TrueSumEt",
"SumEt/trueSumEt");
205 SETAXES(TrueMexvsTrueSet,
"TrueSumEt",
"TrueMEX");
208 TDirectory* oldpwd = gDirectory;
210 TIter
next(gROOT->GetListOfFiles());
212 const bool debug =
false;
214 while (TFile*
file = (TFile*)
next()) {
216 cout <<
"file " <<
file->GetName() << endl;
219 cout <<
"DQM subdir" << endl;
220 cout <<
DQM->pwd().c_str() << endl;
226 cout <<
"current dir" << endl;
241 double maxEtaCut)
const {
246 if (fabs(particle->
eta()) > maxEtaCut and maxEtaCut > 0)
248 if (fabs(particle->
eta()) < minEtaCut and minEtaCut > 0)
260 double et = genParticle->
et();
261 double eta = genParticle->
eta();
262 double phi = genParticle->
phi();
271 et = recParticle->
et();
273 phi = recParticle->
phi();
277 double deltaEt = algo_->deltaEt(recParticle, genParticle);
278 double deltaR = algo_->deltaR(recParticle, genParticle);
279 double deltaEta = algo_->deltaEta(recParticle, genParticle);
280 double deltaPhi = algo_->deltaPhi(recParticle, genParticle);
285 if (
deltaR > deltaR_cut && deltaR_cut != -1.)
288 hDeltaEt->Fill(deltaEt);
289 hDeltaEx->Fill(recParticle->
px() - genParticle->
px());
290 hDeltaEy->Fill(recParticle->
py() - genParticle->
py());
291 hDeltaEtvsEt->Fill(
et, deltaEt);
292 hDeltaEtOverEtvsEt->Fill(
et, deltaEt /
et);
293 hDeltaEtvsEta->Fill(
eta, deltaEt);
294 hDeltaEtOverEtvsEta->Fill(
eta, deltaEt /
et);
295 hDeltaEtvsPhi->Fill(phi, deltaEt);
296 hDeltaEtOverEtvsPhi->Fill(phi, deltaEt /
et);
297 hDeltaEtvsDeltaR->Fill(
deltaR, deltaEt);
298 hDeltaEtOverEtvsDeltaR->Fill(
deltaR, deltaEt /
et);
313 entry.deltaEt = deltaEt;
319 const reco::MET* met1 = static_cast<const reco::MET*>(genParticle);
320 const reco::MET* met2 = static_cast<const reco::MET*>(recParticle);
321 if (met1 !=
nullptr && met2 !=
nullptr) {
323 hTrueSumEt->Fill((*met1).sumEt());
324 hSumEt->Fill((*met2).sumEt());
325 hDeltaSetvsSet->Fill((*met1).sumEt(), (*met2).sumEt() - (*met1).sumEt());
326 hDeltaMexvsSet->Fill((*met1).sumEt(), recParticle->
px() - genParticle->
px());
327 hDeltaMexvsSet->Fill((*met1).sumEt(), recParticle->
py() - genParticle->
py());
328 if ((*met1).sumEt() > 0.01)
329 hDeltaSetOverSetvsSet->Fill((*met1).sumEt(), ((*met2).sumEt() - (*met1).sumEt()) / (*met1).sumEt());
330 hRecSetvsTrueSet->Fill((*met1).sumEt(), (*met2).sumEt());
331 hRecSetOverTrueSetvsTrueSet->Fill((*met1).sumEt(), (*met2).sumEt() / ((*met1).sumEt()));
332 hTrueMexvsTrueSet->Fill((*met1).sumEt(), (*met1).px());
333 hTrueMexvsTrueSet->Fill((*met1).sumEt(), (*met1).py());
335 std::cout <<
"Warning : reco::MET* == NULL" << std::endl;
343 if (!Filename.empty() && file_)
344 file_->Write(Filename.c_str());