62 theTriggerPathToPass_ = parameters.
getParameter<
string>(
"triggerPathToPass");
63 thePlotTheseTriggersToo_ = parameters.
getParameter<vector<string> >(
"plotTheseTriggersToo");
65 trigTagToken_ = consumes<edm::TriggerResults>(
67 thePhotonCollectionToken_ = consumes<reco::PhotonCollection>(
69 theJetCollectionToken_ = consumes<edm::View<reco::Jet> >(
71 theVertexCollectionToken_ = consumes<reco::VertexCollection>(
73 theMinJetPt_ = parameters.
getParameter<
double>(
"minJetPt");
74 theMinPhotonEt_ = parameters.
getParameter<
double>(
"minPhotonEt");
75 theRequirePhotonFound_ = parameters.
getParameter<
bool>(
"requirePhotonFound");
76 thePlotPhotonMaxEt_ = parameters.
getParameter<
double>(
"plotPhotonMaxEt");
77 thePlotPhotonMaxEta_ = parameters.
getParameter<
double>(
"plotPhotonMaxEta");
78 thePlotJetMaxEta_ = parameters.
getParameter<
double>(
"plotJetMaxEta");
81 theBarrelRecHitToken_ = consumes<EcalRecHitCollection>(
83 theEndcapRecHitToken_ = consumes<EcalRecHitCollection>(
86 isValidHltConfig_ =
false;
89 h_deltaEt_photon_jet = 0;
90 h_deltaPhi_jet_jet2 = 0;
91 h_deltaPhi_photon_jet = 0;
92 h_deltaPhi_photon_jet2 = 0;
93 h_deltaR_jet_jet2 = 0;
94 h_deltaR_photon_jet2 = 0;
97 h_jet2_ptOverPhotonEt = 0;
101 h_photon_count_bar = 0;
102 h_photon_count_end = 0;
104 h_photon_et_beforeCuts = 0;
105 h_photon_et_jetco = 0;
106 h_photon_et_jetcs = 0;
107 h_photon_et_jetfo = 0;
108 h_photon_et_jetfs = 0;
109 h_photon_et_ratio_co_cs = 0;
110 h_photon_et_ratio_co_fo = 0;
111 h_photon_et_ratio_co_fs = 0;
112 h_photon_et_ratio_cs_fo = 0;
113 h_photon_et_ratio_cs_fs = 0;
114 h_photon_et_ratio_fo_fs = 0;
116 h_triggers_passed = 0;
128 logTraceName =
"QcdPhotonAnalyzer";
130 LogTrace(logTraceName)<<
"Parameters initialization";
132 theDbe->setCurrentFolder(
"Physics/QcdPhotons");
134 std::stringstream aStringStream;
136 aStringStream << theMinJetPt_;
137 aString = aStringStream.str();
140 int numOfTriggersToMonitor = thePlotTheseTriggersToo_.size();
141 h_triggers_passed = theDbe->book1D(
"triggers_passed",
"Events passing these trigger paths", numOfTriggersToMonitor, 0, numOfTriggersToMonitor);
142 for (
int i=0;
i<numOfTriggersToMonitor;
i++) {
143 h_triggers_passed->setBinLabel(
i+1,thePlotTheseTriggersToo_[
i]);
147 h_photon_et_beforeCuts = theDbe->book1D(
"photon_et_beforeCuts",
"#gamma with highest E_{T};E_{T}(#gamma) (GeV)", 20, 0., thePlotPhotonMaxEt_);
148 h_photon_et = theDbe->book1D(
"photon_et",
"#gamma with highest E_{T};E_{T}(#gamma) (GeV)", 20, 0., thePlotPhotonMaxEt_);
149 h_photon_eta = theDbe->book1D(
"photon_eta",
"#gamma with highest E_{T};#eta(#gamma)", 40, -thePlotPhotonMaxEta_, thePlotPhotonMaxEta_);
150 h_photon_count_bar = theDbe->book1D(
"photon_count_bar",
"Number of #gamma's passing selection (Barrel);Number of #gamma's", 8, -0.5, 7.5);
151 h_photon_count_end = theDbe->book1D(
"photon_count_end",
"Number of #gamma's passing selection (Endcap);Number of #gamma's", 8, -0.5, 7.5);
153 h_jet_pt = theDbe->book1D(
"jet_pt",
"Jet with highest p_{T} (from "+theJetCollectionLabel_.label()+
");p_{T}(1^{st} jet) (GeV)", 20, 0., thePlotPhotonMaxEt_);
154 h_jet_eta = theDbe->book1D(
"jet_eta",
"Jet with highest p_{T} (from "+theJetCollectionLabel_.label()+
");#eta(1^{st} jet)", 20, -thePlotJetMaxEta_, thePlotJetMaxEta_);
155 h_deltaPhi_photon_jet = theDbe->book1D(
"deltaPhi_photon_jet",
"#Delta#phi between Highest E_{T} #gamma and jet;#Delta#phi(#gamma,1^{st} jet)", 20, 0, 3.1415926);
156 h_deltaPhi_jet_jet2 = theDbe->book1D(
"deltaPhi_jet_jet2",
"#Delta#phi between Highest E_{T} jet and 2^{nd} jet;#Delta#phi(1^{st} jet,2^{nd} jet)", 20, 0, 3.1415926);
157 h_deltaEt_photon_jet = theDbe->book1D(
"deltaEt_photon_jet",
"(E_{T}(#gamma)-p_{T}(jet))/E_{T}(#gamma) when #Delta#phi(#gamma,1^{st} jet) > 2.8;#DeltaE_{T}(#gamma,1^{st} jet)/E_{T}(#gamma)", 20, -1.0, 1.0);
158 h_jet_count = theDbe->book1D(
"jet_count",
"Number of "+theJetCollectionLabel_.label()+
" (p_{T} > "+aString+
" GeV);Number of Jets", 8, -0.5, 7.5);
159 h_jet2_pt = theDbe->book1D(
"jet2_pt",
"Jet with 2^{nd} highest p_{T} (from "+theJetCollectionLabel_.label()+
");p_{T}(2^{nd} jet) (GeV)", 20, 0., thePlotPhotonMaxEt_);
160 h_jet2_eta = theDbe->book1D(
"jet2_eta",
"Jet with 2^{nd} highest p_{T} (from "+theJetCollectionLabel_.label()+
");#eta(2^{nd} jet)", 20, -thePlotJetMaxEta_, thePlotJetMaxEta_);
161 h_jet2_ptOverPhotonEt = theDbe->book1D(
"jet2_ptOverPhotonEt",
"p_{T}(2^{nd} highest jet) / E_{T}(#gamma);p_{T}(2^{nd} Jet)/E_{T}(#gamma)", 20, 0.0, 4.0);
162 h_deltaPhi_photon_jet2 = theDbe->book1D(
"deltaPhi_photon_jet2",
"#Delta#phi between Highest E_{T} #gamma and 2^{nd} highest jet;#Delta#phi(#gamma,2^{nd} jet)", 20, 0, 3.1415926);
163 h_deltaR_jet_jet2 = theDbe->book1D(
"deltaR_jet_jet2",
"#DeltaR between Highest Jet and 2^{nd} Highest;#DeltaR(1^{st} jet,2^{nd} jet)", 30, 0, 6.0);
164 h_deltaR_photon_jet2 = theDbe->book1D(
"deltaR_photon_jet2",
"#DeltaR between Highest E_{T} #gamma and 2^{nd} jet;#DeltaR(#gamma, 2^{nd} jet)", 30, 0, 6.0);
167 Float_t bins_et[] = {15,20,30,50,80};
169 h_photon_et_jetcs = theDbe->book1D(
"photon_et_jetcs",
"#gamma with highest E_{T} (#eta(jet)<1.45, #eta(#gamma)#eta(jet)>0);E_{T}(#gamma) (GeV)", num_bins_et, bins_et);
170 h_photon_et_jetco = theDbe->book1D(
"photon_et_jetco",
"#gamma with highest E_{T} (#eta(jet)<1.45, #eta(#gamma)#eta(jet)<0);E_{T}(#gamma) (GeV)", num_bins_et, bins_et);
171 h_photon_et_jetfs = theDbe->book1D(
"photon_et_jetfs",
"#gamma with highest E_{T} (1.55<#eta(jet)<2.5, #eta(#gamma)#eta(jet)>0);E_{T}(#gamma) (GeV)", num_bins_et, bins_et);
172 h_photon_et_jetfo = theDbe->book1D(
"photon_et_jetfo",
"#gamma with highest E_{T} (1.55<#eta(jet)<2.5, #eta(#gamma)#eta(jet)<0);E_{T}(#gamma) (GeV)", num_bins_et, bins_et);
173 h_photon_et_jetcs->getTH1F()->Sumw2();
174 h_photon_et_jetco->getTH1F()->Sumw2();
175 h_photon_et_jetfs->getTH1F()->Sumw2();
176 h_photon_et_jetfo->getTH1F()->Sumw2();
178 h_photon_et_ratio_co_cs = theDbe->book1D(
"photon_et_ratio_00_co_cs",
"D(|#eta(jet)|<1.45, #eta(jet)*#eta(#gamma)<0) / D(|#eta(jet)|<1.45, #eta(jet)*#eta(#gamma)>0);E_{T}(#gamma) (GeV); ratio", num_bins_et, bins_et);
179 h_photon_et_ratio_fo_fs = theDbe->book1D(
"photon_et_ratio_01_fo_fs",
"D(1.55<|#eta(jet)|<2.6, #eta(jet)*#eta(#gamma)<0) / D(1.55<|#eta(jet)|<2.6, #eta(jet)*#eta(#gamma)>0);E_{T}(#gamma) (GeV); ratio", num_bins_et, bins_et);
180 h_photon_et_ratio_cs_fs = theDbe->book1D(
"photon_et_ratio_02_cs_fs",
"D(|#eta(jet)|<1.45, #eta(jet)*#eta(#gamma)>0) / D(1.55<|#eta(jet)|<2.6, #eta(jet)*#eta(#gamma)>0);E_{T}(#gamma) (GeV); ratio", num_bins_et, bins_et);
181 h_photon_et_ratio_co_fs = theDbe->book1D(
"photon_et_ratio_03_co_fs",
"D(|#eta(jet)|<1.45, #eta(jet)*#eta(#gamma)<0) / D(1.55<|#eta(jet)|<2.6, #eta(jet)*#eta(#gamma)>0);E_{T}(#gamma) (GeV); ratio", num_bins_et, bins_et);
182 h_photon_et_ratio_cs_fo = theDbe->book1D(
"photon_et_ratio_04_cs_fo",
"D(|#eta(jet)|<1.45, #eta(jet)*#eta(#gamma)>0) / D(1.55<|#eta(jet)|<2.6, #eta(jet)*#eta(#gamma)<0);E_{T}(#gamma) (GeV); ratio", num_bins_et, bins_et);
183 h_photon_et_ratio_co_fo = theDbe->book1D(
"photon_et_ratio_05_co_fo",
"D(|#eta(jet)|<1.45, #eta(jet)*#eta(#gamma)<0) / D(1.55<|#eta(jet)|<2.6, #eta(jet)*#eta(#gamma)<0);E_{T}(#gamma) (GeV); ratio", num_bins_et, bins_et);
184 h_photon_et_ratio_co_cs->getTH1F()->Sumw2();
185 h_photon_et_ratio_fo_fs->getTH1F()->Sumw2();
186 h_photon_et_ratio_cs_fs->getTH1F()->Sumw2();
187 h_photon_et_ratio_co_fs->getTH1F()->Sumw2();
188 h_photon_et_ratio_cs_fo->getTH1F()->Sumw2();
189 h_photon_et_ratio_co_fo->getTH1F()->Sumw2();
199 bool isConfigChanged =
false;
202 isValidHltConfig_ = hltConfigProvider_.init( iRun, iSet,
"HLT", isConfigChanged );
204 num_events_in_run = 0;
214 LogTrace(logTraceName)<<
"Analysis of event # ";
226 bool passed_HLT=
false;
230 for (
unsigned int i=0;
i<thePlotTheseTriggersToo_.size();
i++) {
232 for (
unsigned int ti=0; (ti<trigNames.
size()) && !passed_HLT; ++ti) {
233 size_t pos = trigNames.
triggerName(ti).find(thePlotTheseTriggersToo_[
i]);
234 if (pos==0) passed_HLT = HLTresults->accept(ti);
236 if (passed_HLT) h_triggers_passed->Fill(
i);
242 iEvent.
getByToken(thePhotonCollectionToken_, photonCollection);
245 if (!photonCollection.
isValid())
return;
252 for (
unsigned int ti=0; ti<trigNames.
size(); ++ti) {
253 size_t pos = trigNames.
triggerName(ti).find(theTriggerPathToPass_);
255 passed_HLT = HLTresults->accept(ti);
262 for (PhotonCollection::const_iterator recoPhoton = photonCollection->begin(); recoPhoton!=photonCollection->end(); recoPhoton++){
264 if ( recoPhoton->et() < theMinPhotonEt_ )
break;
266 h_photon_et_beforeCuts->Fill(recoPhoton->et());
283 iEvent.
getByToken(theVertexCollectionToken_, vertexHandle);
296 for (
unsigned int i=0;
i<vertexCollection.size(); ++
i) {
297 if (vertexCollection[
i].isValid()) nvvertex++;
299 if (nvvertex==0)
return;
315 iEvent.
getByToken(theBarrelRecHitToken_, EBReducedRecHits);
317 iEvent.
getByToken(theEndcapRecHitToken_, EEReducedRecHits);
322 float photon_et = -9.0;
323 float photon_eta = -9.0;
324 float photon_phi = -9.0;
325 bool photon_passPhotonID =
false;
326 bool found_lead_pho =
false;
327 int photon_count_bar = 0;
328 int photon_count_end = 0;
331 auto pho_maxet = std::max_element(photonCollection->begin(),
332 photonCollection->end(),
335 return a.et() <
b.et();
337 if( pho_maxet != photonCollection->end() && pho_maxet->et() >= theMinPhotonEt_ ) {
361 bool pho_current_passPhotonID =
false;
362 bool pho_current_isEB = pho_maxet->isEB();
363 bool pho_current_isEE = pho_maxet->isEE();
365 if ( pho_current_isEB && (pho_maxet->sigmaIetaIeta() < 0.01 || pho_maxet->hadronicOverEm() < 0.05) ) {
367 pho_current_passPhotonID =
true;
369 }
else if ( pho_current_isEE && (pho_maxet->hadronicOverEm() < 0.05) ) {
371 pho_current_passPhotonID =
true;
375 if (!found_lead_pho) {
376 found_lead_pho =
true;
377 photon_passPhotonID = pho_current_passPhotonID;
378 photon_et = pho_maxet->et();
379 photon_eta = pho_maxet->eta();
380 photon_phi = pho_maxet->phi();
388 if ( theRequirePhotonFound_ && (!photon_passPhotonID || photon_et<theMinPhotonEt_) )
return;
394 iEvent.
getByToken (theJetCollectionToken_,jetCollection);
395 if (!jetCollection.
isValid())
return;
398 float jet_eta = -8.0;
399 float jet_phi = -8.0;
401 float jet2_pt = -9.0;
402 float jet2_eta = -9.0;
403 float jet2_phi = -9.0;
405 for (
unsigned int i_jet = 0; i_jet < jetCollection->size(); i_jet++) {
406 const Jet*
jet = & jetCollection->at(i_jet);
408 float jet_current_pt = jet->
pt();
411 if (
deltaR(jet->
eta(), jet->
phi(), photon_eta, photon_phi) < 0.5 )
continue;
413 if (jet_current_pt < theMinJetPt_)
break;
416 if (jet_current_pt > jet_pt) {
420 jet_pt = jet_current_pt;
421 jet_eta = jet->
eta();
422 jet_phi = jet->
phi();
423 }
else if (jet_current_pt > jet2_pt) {
424 jet2_pt = jet_current_pt;
425 jet2_eta = jet->
eta();
426 jet2_phi = jet->
phi();
436 if ( jet_pt > 0.0 ) {
439 h_photon_et ->Fill( photon_et );
440 h_photon_eta ->Fill( photon_eta );
441 h_photon_count_bar->Fill( photon_count_bar );
442 h_photon_count_end->Fill( photon_count_end );
445 if ( fabs(photon_eta)<1.45 && photon_passPhotonID ) {
446 if (fabs(jet_eta)<1.45){
447 if (photon_eta*jet_eta>0) {
448 h_photon_et_jetcs->Fill(photon_et);
450 h_photon_et_jetco->Fill(photon_et);
452 }
else if (jet_eta>1.55 && jet_eta<2.5) {
453 if (photon_eta*jet_eta>0) {
454 h_photon_et_jetfs->Fill(photon_et);
456 h_photon_et_jetfo->Fill(photon_et);
462 h_jet_pt ->Fill( jet_pt );
463 h_jet_eta ->Fill( jet_eta );
464 h_jet_count ->Fill( jet_count );
465 h_deltaPhi_photon_jet ->Fill(
abs(
deltaPhi(photon_phi, jet_phi)) );
466 if (
abs(
deltaPhi(photon_phi,jet_phi))>2.8 ) h_deltaEt_photon_jet->Fill( (photon_et-jet_pt)/photon_et );
469 if ( jet2_pt > 0.0 ) {
470 h_jet2_pt ->Fill( jet2_pt );
471 h_jet2_eta ->Fill( jet2_eta );
472 h_jet2_ptOverPhotonEt ->Fill( jet2_pt/photon_et );
473 h_deltaPhi_photon_jet2->Fill(
abs(
deltaPhi(photon_phi, jet2_phi)) );
474 h_deltaPhi_jet_jet2 ->Fill(
abs(
deltaPhi( jet_phi, jet2_phi)) );
475 h_deltaR_jet_jet2 ->Fill(
deltaR( jet_eta, jet_phi, jet2_eta, jet2_phi) );
476 h_deltaR_photon_jet2 ->Fill(
deltaR(photon_eta, photon_phi, jet2_eta, jet2_phi) );
487 if (num_events_in_run>0) {
488 h_triggers_passed->getTH1F()->Scale(1.0/num_events_in_run);
490 h_photon_et_ratio_co_cs->getTH1F()->Divide( h_photon_et_jetco->getTH1F(), h_photon_et_jetcs->getTH1F() );
491 h_photon_et_ratio_fo_fs->getTH1F()->Divide( h_photon_et_jetfo->getTH1F(), h_photon_et_jetfs->getTH1F() );
492 h_photon_et_ratio_cs_fs->getTH1F()->Divide( h_photon_et_jetcs->getTH1F(), h_photon_et_jetfs->getTH1F() );
493 h_photon_et_ratio_co_fs->getTH1F()->Divide( h_photon_et_jetco->getTH1F(), h_photon_et_jetfs->getTH1F() );
494 h_photon_et_ratio_cs_fo->getTH1F()->Divide( h_photon_et_jetcs->getTH1F(), h_photon_et_jetfo->getTH1F() );
495 h_photon_et_ratio_co_fo->getTH1F()->Divide( h_photon_et_jetco->getTH1F(), h_photon_et_jetfo->getTH1F() );
T getParameter(std::string const &) const
T getUntrackedParameter(std::string const &, T const &) const
virtual edm::TriggerNames const & triggerNames(edm::TriggerResults const &triggerResults) const
virtual float pt() const
transverse momentum
bool getByToken(EDGetToken token, Handle< PROD > &result) const
virtual float phi() const
momentum azimuthal angle
Base class for all types of Jets.
void beginJob()
Inizialize parameters for histo binning.
std::vector< Vertex > VertexCollection
collection of Vertex objects
Strings::size_type size() const
void endRun(const edm::Run &, const edm::EventSetup &)
QcdPhotonsDQM(const edm::ParameterSet &)
Constructor.
virtual float eta() const
momentum pseudorapidity
Abs< T >::type abs(const T &t)
Container::value_type value_type
void endJob(void)
Save the histos.
double deltaR(double eta1, double eta2, double phi1, double phi2)
static const char *const trigNames[]
std::string const & triggerName(unsigned int index) const
void beginRun(const edm::Run &, const edm::EventSetup &)
T const * product() const
virtual ~QcdPhotonsDQM()
Destructor.
void analyze(const edm::Event &, const edm::EventSetup &)
Get the analysis.