168 minPhotonAbsEta_ = ps.
getParameter<
double>(
"minPhotonAbsEta");
169 maxPhotonAbsEta_ = ps.
getParameter<
double>(
"maxPhotonAbsEta");
171 maxPhotonHoverE_ = ps.
getParameter<
double>(
"maxPhotonHoverE");
175 createPhotonTTree_ = ps.
getParameter<
bool>(
"createPhotonTTree");
178 rootFile_ = TFile::Open(outputFile_.c_str(),
"RECREATE");
200 h_isoEcalRecHit_ =
new TH1F(
"photonEcalIso",
"Ecal Rec Hit Isolation", 300, 0, 300);
201 h_isoHcalRecHit_ =
new TH1F(
"photonHcalIso",
"Hcal Rec Hit Isolation", 300, 0, 300);
202 h_trk_pt_solid_ =
new TH1F(
"photonTrackSolidIso",
"Sum of track pT in a cone of #DeltaR", 300, 0, 300);
203 h_trk_pt_hollow_ =
new TH1F(
"photonTrackHollowIso",
"Sum of track pT in a hollow cone", 300, 0, 300);
204 h_ntrk_solid_ =
new TH1F(
"photonTrackCountSolid",
"Number of tracks in a cone of #DeltaR", 100, 0, 100);
205 h_ntrk_hollow_ =
new TH1F(
"photonTrackCountHollow",
"Number of tracks in a hollow cone", 100, 0, 100);
206 h_ebetagap_ =
new TH1F(
"photonInEBEtagap",
"Ecal Barrel eta gap flag", 2, -0.5, 1.5);
207 h_ebphigap_ =
new TH1F(
"photonInEBEtagap",
"Ecal Barrel phi gap flag", 2, -0.5, 1.5);
208 h_eeringGap_ =
new TH1F(
"photonInEERinggap",
"Ecal Endcap ring gap flag", 2, -0.5, 1.5);
209 h_eedeeGap_ =
new TH1F(
"photonInEEDeegap",
"Ecal Endcap dee gap flag", 2, -0.5, 1.5);
210 h_ebeeGap_ =
new TH1F(
"photonInEEgap",
"Ecal Barrel/Endcap gap flag", 2, -0.5, 1.5);
211 h_r9_ =
new TH1F(
"photonR9",
"R9 = E(3x3) / E(SuperCluster)", 300, 0, 3);
214 h_photonEt_ =
new TH1F(
"photonEt",
"Photon E_{T}", 200, 0, 200);
215 h_photonEta_ =
new TH1F(
"photonEta",
"Photon #eta", 800, -4, 4);
216 h_photonPhi_ =
new TH1F(
"photonPhi",
"Photon #phi", 628, -1. *
TMath::Pi(),
TMath::Pi());
217 h_hadoverem_ =
new TH1F(
"photonHoverE",
"Hadronic over EM", 200, 0, 1);
220 h_photonScEt_ =
new TH1F(
"photonScEt",
"Photon SuperCluster E_{T}", 200, 0, 200);
221 h_photonScEta_ =
new TH1F(
"photonScEta",
"Photon #eta", 800, -4, 4);
222 h_photonScPhi_ =
new TH1F(
"photonScPhi",
"Photon #phi", 628, -1. *
TMath::Pi(),
TMath::Pi());
223 h_photonScEtaWidth_ =
new TH1F(
"photonScEtaWidth",
"#eta-width", 100, 0, .1);
226 h_photonInAnyGap_ =
new TH1F(
"photonInAnyGap",
"Photon in any gap flag", 2, -0.5, 1.5);
227 h_nPassingPho_ =
new TH1F(
"photonLoosePhoton",
"Total number photons (0=NotPassing, 1=Passing)", 2, -0.5, 1.5);
228 h_nPassEM_ =
new TH1F(
"photonLooseEM",
"Total number photons (0=NotPassing, 1=Passing)", 2, -0.5, 1.5);
229 h_nPho_ =
new TH1F(
"photonCount",
"Number of photons passing cuts in event", 10, 0, 10);
232 if (createPhotonTTree_) {
233 tree_PhotonAll_ =
new TTree(
"TreePhotonAll",
"Reconstructed Photon");
234 tree_PhotonAll_->Branch(
"recPhoton",
235 &recPhoton.isolationEcalRecHit,
236 "isolationEcalRecHit/"
237 "F:isolationHcalRecHit:isolationSolidTrkCone:isolationHollowTrkCone:nTrkSolidCone:"
238 "nTrkHollowCone:isEBGap:isEEGap:isEBEEGap:r9:et:eta:phi:hadronicOverEm");
254 evt.
getByLabel(
"PhotonIDProd",
"PhotonCutBasedIDLoose", loosePhotonQual);
256 evt.
getByLabel(
"PhotonIDProd",
"PhotonCutBasedIDLooseEM", looseEMQual);
265 int photonCounter = 0;
267 reco::PhotonCollection::const_iterator pho;
268 for (pho = (*photons).begin(); pho != (*photons).end(); pho++) {
274 float photonEt = pho->et();
275 float superClusterEt = (pho->superCluster()->energy()) / (cosh(pho->superCluster()->position().eta()));
276 Bool_t LoosePhotonQu = (*phoMap)[photonref];
277 h_nPassingPho_->Fill(LoosePhotonQu);
278 Bool_t LooseEMQu = (*lEMMap)[photonref];
279 h_nPassEM_->Fill(LooseEMQu);
281 bool passCuts = (photonEt > minPhotonEt_) && (fabs(pho->eta()) > minPhotonAbsEta_) &&
282 (fabs(pho->eta()) < maxPhotonAbsEta_) && (pho->r9() > minPhotonR9_) &&
283 (pho->hadronicOverEm() < maxPhotonHoverE_);
290 h_isoEcalRecHit_->Fill(pho->ecalRecHitSumEtConeDR04());
291 h_isoHcalRecHit_->Fill(pho->hcalTowerSumEtConeDR04());
292 h_trk_pt_solid_->Fill(pho->trkSumPtSolidConeDR04());
293 h_trk_pt_hollow_->Fill(pho->trkSumPtHollowConeDR04());
294 h_ntrk_solid_->Fill(pho->nTrkSolidConeDR04());
295 h_ntrk_hollow_->Fill(pho->nTrkHollowConeDR04());
296 h_ebetagap_->Fill(pho->isEBEtaGap());
297 h_ebphigap_->Fill(pho->isEBPhiGap());
298 h_eeringGap_->Fill(pho->isEERingGap());
299 h_eedeeGap_->Fill(pho->isEEDeeGap());
300 h_ebeeGap_->Fill(pho->isEBEEGap());
301 h_r9_->Fill(pho->r9());
304 h_photonEt_->Fill(photonEt);
305 h_photonEta_->Fill(pho->eta());
306 h_photonPhi_->Fill(pho->phi());
307 h_hadoverem_->Fill(pho->hadronicOverEm());
312 h_photonScEt_->Fill(superClusterEt);
313 h_photonScEta_->Fill(pho->superCluster()->position().eta());
314 h_photonScPhi_->Fill(pho->superCluster()->position().phi());
315 h_photonScEtaWidth_->Fill(pho->superCluster()->etaWidth());
322 if (createPhotonTTree_) {
323 recPhoton.isolationEcalRecHit = pho->ecalRecHitSumEtConeDR04();
324 recPhoton.isolationHcalRecHit = pho->hcalTowerSumEtConeDR04();
325 recPhoton.isolationSolidTrkCone = pho->trkSumPtSolidConeDR04();
326 recPhoton.isolationHollowTrkCone = pho->trkSumPtHollowConeDR04();
327 recPhoton.nTrkSolidCone = pho->nTrkSolidConeDR04();
328 recPhoton.nTrkHollowCone = pho->nTrkHollowConeDR04();
329 recPhoton.isEBEtaGap = pho->isEBEtaGap();
330 recPhoton.isEBPhiGap = pho->isEBPhiGap();
331 recPhoton.isEERingGap = pho->isEERingGap();
332 recPhoton.isEEDeeGap = pho->isEEDeeGap();
333 recPhoton.isEBEEGap = pho->isEBEEGap();
334 recPhoton.r9 = pho->r9();
335 recPhoton.et = pho->et();
336 recPhoton.eta = pho->eta();
337 recPhoton.phi = pho->phi();
338 recPhoton.hadronicOverEm = pho->hadronicOverEm();
342 tree_PhotonAll_->Fill();
347 bool inAnyGap = pho->isEBEEGap() || (pho->isEB() && pho->isEBEtaGap()) || (pho->isEB() && pho->isEBPhiGap()) ||
348 (pho->isEE() && pho->isEERingGap()) || (pho->isEE() && pho->isEEDeeGap());
350 h_photonInAnyGap_->Fill(1.0);
352 h_photonInAnyGap_->Fill(0.0);
361 h_nPho_->Fill(photonCounter);
372 h_isoEcalRecHit_->Write();
373 h_isoHcalRecHit_->Write();
374 h_trk_pt_solid_->Write();
375 h_trk_pt_hollow_->Write();
376 h_ntrk_solid_->Write();
377 h_ntrk_hollow_->Write();
378 h_ebetagap_->Write();
379 h_ebphigap_->Write();
380 h_eeringGap_->Write();
381 h_eedeeGap_->Write();
386 h_photonEt_->Write();
387 h_photonEta_->Write();
388 h_photonPhi_->Write();
389 h_hadoverem_->Write();
392 h_photonScEt_->Write();
393 h_photonScEta_->Write();
394 h_photonScPhi_->Write();
395 h_photonScEtaWidth_->Write();
398 h_photonInAnyGap_->Write();
399 h_nPassingPho_->Write();