73 minPhotonAbsEta_ = ps.
getParameter<
double>(
"minPhotonAbsEta");
74 maxPhotonAbsEta_ = ps.
getParameter<
double>(
"maxPhotonAbsEta");
76 maxPhotonHoverE_ = ps.
getParameter<
double>(
"maxPhotonHoverE");
80 createPhotonTTree_ = ps.
getParameter<
bool>(
"createPhotonTTree");
83 rootFile_ = TFile::Open(outputFile_.c_str(),
"RECREATE");
111 h_isoEcalRecHit_ =
new TH1F(
"photonEcalIso",
"Ecal Rec Hit Isolation", 300, 0, 300);
112 h_isoHcalRecHit_ =
new TH1F(
"photonHcalIso",
"Hcal Rec Hit Isolation", 300, 0, 300);
113 h_trk_pt_solid_ =
new TH1F(
"photonTrackSolidIso",
"Sum of track pT in a cone of #DeltaR" , 300, 0, 300);
114 h_trk_pt_hollow_ =
new TH1F(
"photonTrackHollowIso",
"Sum of track pT in a hollow cone" , 300, 0, 300);
115 h_ntrk_solid_ =
new TH1F(
"photonTrackCountSolid",
"Number of tracks in a cone of #DeltaR", 100, 0, 100);
116 h_ntrk_hollow_ =
new TH1F(
"photonTrackCountHollow",
"Number of tracks in a hollow cone", 100, 0, 100);
117 h_ebetagap_ =
new TH1F(
"photonInEBEtagap",
"Ecal Barrel eta gap flag", 2, -0.5, 1.5);
118 h_ebphigap_ =
new TH1F(
"photonInEBEtagap",
"Ecal Barrel phi gap flag", 2, -0.5, 1.5);
119 h_eeringGap_ =
new TH1F(
"photonInEERinggap",
"Ecal Endcap ring gap flag", 2, -0.5, 1.5);
120 h_eedeeGap_ =
new TH1F(
"photonInEEDeegap",
"Ecal Endcap dee gap flag", 2, -0.5, 1.5);
121 h_ebeeGap_ =
new TH1F(
"photonInEEgap",
"Ecal Barrel/Endcap gap flag", 2, -0.5, 1.5);
122 h_r9_ =
new TH1F(
"photonR9",
"R9 = E(3x3) / E(SuperCluster)", 300, 0, 3);
125 h_photonEt_ =
new TH1F(
"photonEt",
"Photon E_{T}", 200, 0, 200);
126 h_photonEta_ =
new TH1F(
"photonEta",
"Photon #eta", 800, -4, 4);
127 h_photonPhi_ =
new TH1F(
"photonPhi",
"Photon #phi", 628, -1.*
TMath::Pi(),
TMath::Pi());
128 h_hadoverem_ =
new TH1F(
"photonHoverE",
"Hadronic over EM", 200, 0, 1);
131 h_photonScEt_ =
new TH1F(
"photonScEt",
"Photon SuperCluster E_{T}", 200, 0, 200);
132 h_photonScEta_ =
new TH1F(
"photonScEta",
"Photon #eta", 800, -4, 4);
133 h_photonScPhi_ =
new TH1F(
"photonScPhi",
"Photon #phi",628, -1.*
TMath::Pi(),
TMath::Pi());
134 h_photonScEtaWidth_ =
new TH1F(
"photonScEtaWidth",
"#eta-width", 100, 0, .1);
137 h_photonInAnyGap_ =
new TH1F(
"photonInAnyGap",
"Photon in any gap flag", 2, -0.5, 1.5);
138 h_nPassingPho_ =
new TH1F(
"photonLoosePhoton",
"Total number photons (0=NotPassing, 1=Passing)", 2, -0.5, 1.5);
139 h_nPassEM_ =
new TH1F(
"photonLooseEM",
"Total number photons (0=NotPassing, 1=Passing)", 2, -0.5, 1.5);
140 h_nPho_ =
new TH1F(
"photonCount",
"Number of photons passing cuts in event", 10, 0, 10);
143 if ( createPhotonTTree_ ) {
144 tree_PhotonAll_ =
new TTree(
"TreePhotonAll",
"Reconstructed Photon");
145 tree_PhotonAll_->Branch(
"recPhoton", &recPhoton.isolationEcalRecHit,
"isolationEcalRecHit/F:isolationHcalRecHit:isolationSolidTrkCone:isolationHollowTrkCone:nTrkSolidCone:nTrkHollowCone:isEBGap:isEEGap:isEBEEGap:r9:et:eta:phi:hadronicOverEm");
164 evt.
getByLabel(
"PhotonIDProd",
"PhotonCutBasedIDLoose", loosePhotonQual);
166 evt.
getByLabel(
"PhotonIDProd",
"PhotonCutBasedIDLooseEM",looseEMQual);
175 int photonCounter = 0;
177 reco::PhotonCollection::const_iterator pho;
178 for (pho = (*photons).begin(); pho!= (*photons).end(); pho++){
185 float photonEt = pho->et();
186 float superClusterEt = (pho->superCluster()->energy())/(cosh(pho->superCluster()->position().eta()));
187 Bool_t LoosePhotonQu = (*phoMap)[photonref];
188 h_nPassingPho_->Fill(LoosePhotonQu);
189 Bool_t LooseEMQu = (*lEMMap)[photonref];
190 h_nPassEM_->Fill(LooseEMQu);
192 bool passCuts = ( photonEt > minPhotonEt_ ) &&
193 ( fabs(pho->eta()) > minPhotonAbsEta_ ) &&
194 ( fabs(pho->eta()) < maxPhotonAbsEta_ ) &&
195 ( pho->r9() > minPhotonR9_ ) &&
196 ( pho->hadronicOverEm() < maxPhotonHoverE_ ) ;
204 h_isoEcalRecHit_->Fill(pho->ecalRecHitSumEtConeDR04());
205 h_isoHcalRecHit_->Fill(pho->hcalTowerSumEtConeDR04());
206 h_trk_pt_solid_ ->Fill(pho->trkSumPtSolidConeDR04());
207 h_trk_pt_hollow_->Fill(pho->trkSumPtHollowConeDR04());
208 h_ntrk_solid_->
Fill(pho->nTrkSolidConeDR04());
209 h_ntrk_hollow_->
Fill(pho->nTrkHollowConeDR04());
210 h_ebetagap_->
Fill(pho->isEBEtaGap());
211 h_ebphigap_->
Fill(pho->isEBPhiGap());
212 h_eeringGap_->
Fill(pho->isEERingGap());
213 h_eedeeGap_->
Fill(pho->isEEDeeGap());
214 h_ebeeGap_->
Fill(pho->isEBEEGap());
215 h_r9_->
Fill(pho->r9());
218 h_photonEt_->
Fill(photonEt);
219 h_photonEta_->
Fill(pho->eta());
220 h_photonPhi_->
Fill(pho->phi());
221 h_hadoverem_->
Fill(pho->hadronicOverEm());
226 h_photonScEt_->
Fill(superClusterEt);
227 h_photonScEta_->
Fill(pho->superCluster()->position().eta());
228 h_photonScPhi_->
Fill(pho->superCluster()->position().phi());
229 h_photonScEtaWidth_->Fill(pho->superCluster()->etaWidth());
236 if ( createPhotonTTree_ ) {
237 recPhoton.isolationEcalRecHit = pho->ecalRecHitSumEtConeDR04();
238 recPhoton.isolationHcalRecHit = pho->hcalTowerSumEtConeDR04();
239 recPhoton.isolationSolidTrkCone = pho->trkSumPtSolidConeDR04();
240 recPhoton.isolationHollowTrkCone = pho->trkSumPtHollowConeDR04();
241 recPhoton.nTrkSolidCone = pho->nTrkSolidConeDR04();
242 recPhoton.nTrkHollowCone = pho->nTrkHollowConeDR04();
243 recPhoton.isEBEtaGap = pho->isEBEtaGap();
244 recPhoton.isEBPhiGap = pho->isEBPhiGap();
245 recPhoton.isEERingGap = pho->isEERingGap();
246 recPhoton.isEEDeeGap = pho->isEEDeeGap();
247 recPhoton.isEBEEGap = pho->isEBEEGap();
248 recPhoton.r9 = pho->r9();
249 recPhoton.et = pho->et();
250 recPhoton.eta = pho->eta();
251 recPhoton.phi = pho->phi();
252 recPhoton.hadronicOverEm = pho->hadronicOverEm();
256 tree_PhotonAll_->Fill();
261 bool inAnyGap = pho->isEBEEGap() || (pho->isEB()&&pho->isEBEtaGap()) ||(pho->isEB()&&pho->isEBPhiGap()) || (pho->isEE()&&pho->isEERingGap()) || (pho->isEE()&&pho->isEEDeeGap()) ;
263 h_photonInAnyGap_->Fill(1.0);
265 h_photonInAnyGap_->Fill(0.0);
277 h_nPho_->Fill(photonCounter);
292 h_isoEcalRecHit_->Write();
293 h_isoHcalRecHit_->Write();
294 h_trk_pt_solid_-> Write();
295 h_trk_pt_hollow_->Write();
296 h_ntrk_solid_-> Write();
297 h_ntrk_hollow_-> Write();
298 h_ebetagap_-> Write();
299 h_ebphigap_-> Write();
300 h_eeringGap_-> Write();
301 h_eedeeGap_-> Write();
302 h_ebeeGap_-> Write();
306 h_photonEt_-> Write();
307 h_photonEta_-> Write();
308 h_photonPhi_-> Write();
309 h_hadoverem_-> Write();
312 h_photonScEt_-> Write();
313 h_photonScEta_-> Write();
314 h_photonScPhi_-> Write();
315 h_photonScEtaWidth_->Write();
318 h_photonInAnyGap_->Write();
319 h_nPassingPho_-> Write();
320 h_nPassEM_-> Write();
T getParameter(std::string const &) const
~PhotonIDSimpleAnalyzer() override
PhotonIDSimpleAnalyzer(const edm::ParameterSet &)
void Fill(HcalDetId &id, double val, std::vector< TH2F > &depth)
void analyze(const edm::Event &, const edm::EventSetup &) override
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
T const * product() const
std::vector< Photon > PhotonCollection
collectin of Photon objects