CMS 3D CMS Logo

DQMSourcePi0.cc
Go to the documentation of this file.
5 
6 // DQM include files
7 
9 
10 // work on collections
14 
16 
18 
24 
30 
33 
34 #include "TVector3.h"
35 
36 #define TWOPI 6.283185308
37 
38 using namespace std;
39 using namespace edm;
40 
41 // ******************************************
42 // constructors
43 // *****************************************
44 
45 DQMSourcePi0::DQMSourcePi0(const edm::ParameterSet &ps) : eventCounter_(0) {
46  folderName_ = ps.getUntrackedParameter<string>("FolderName", "HLT/AlCaEcalPi0");
47  prescaleFactor_ = ps.getUntrackedParameter<int>("prescaleFactor", 1);
49  consumes<EcalRecHitCollection>(ps.getUntrackedParameter<edm::InputTag>("AlCaStreamEBpi0Tag"));
51  consumes<EcalRecHitCollection>(ps.getUntrackedParameter<edm::InputTag>("AlCaStreamEBetaTag"));
53  consumes<EcalRecHitCollection>(ps.getUntrackedParameter<edm::InputTag>("AlCaStreamEEpi0Tag"));
55  consumes<EcalRecHitCollection>(ps.getUntrackedParameter<edm::InputTag>("AlCaStreamEEetaTag"));
56 
57  isMonEBpi0_ = ps.getUntrackedParameter<bool>("isMonEBpi0", false);
58  isMonEBeta_ = ps.getUntrackedParameter<bool>("isMonEBeta", false);
59  isMonEEpi0_ = ps.getUntrackedParameter<bool>("isMonEEpi0", false);
60  isMonEEeta_ = ps.getUntrackedParameter<bool>("isMonEEeta", false);
61 
62  saveToFile_ = ps.getUntrackedParameter<bool>("SaveToFile", false);
63  fileName_ = ps.getUntrackedParameter<string>("FileName", "MonitorAlCaEcalPi0.root");
64 
65  clusSeedThr_ = ps.getParameter<double>("clusSeedThr");
66  clusSeedThrEndCap_ = ps.getParameter<double>("clusSeedThrEndCap");
67  clusEtaSize_ = ps.getParameter<int>("clusEtaSize");
68  clusPhiSize_ = ps.getParameter<int>("clusPhiSize");
69  if (clusPhiSize_ % 2 == 0 || clusEtaSize_ % 2 == 0)
70  edm::LogError("AlCaPi0RecHitsProducerError") << "Size of eta/phi for simple clustering should be odd numbers";
71 
72  seleXtalMinEnergy_ = ps.getParameter<double>("seleXtalMinEnergy");
73  seleXtalMinEnergyEndCap_ = ps.getParameter<double>("seleXtalMinEnergyEndCap");
74 
76  selePtGamma_ = ps.getParameter<double>("selePtGamma");
77  selePtPi0_ = ps.getParameter<double>("selePtPi0");
78  seleMinvMaxPi0_ = ps.getParameter<double>("seleMinvMaxPi0");
79  seleMinvMinPi0_ = ps.getParameter<double>("seleMinvMinPi0");
80  seleS4S9Gamma_ = ps.getParameter<double>("seleS4S9Gamma");
81  selePi0Iso_ = ps.getParameter<double>("selePi0Iso");
82  ptMinForIsolation_ = ps.getParameter<double>("ptMinForIsolation");
83  selePi0BeltDR_ = ps.getParameter<double>("selePi0BeltDR");
84  selePi0BeltDeta_ = ps.getParameter<double>("selePi0BeltDeta");
85 
87  selePtGammaEndCap_ = ps.getParameter<double>("selePtGammaEndCap");
88  selePtPi0EndCap_ = ps.getParameter<double>("selePtPi0EndCap");
89  seleS4S9GammaEndCap_ = ps.getParameter<double>("seleS4S9GammaEndCap");
90  seleMinvMaxPi0EndCap_ = ps.getParameter<double>("seleMinvMaxPi0EndCap");
91  seleMinvMinPi0EndCap_ = ps.getParameter<double>("seleMinvMinPi0EndCap");
92  ptMinForIsolationEndCap_ = ps.getParameter<double>("ptMinForIsolationEndCap");
93  selePi0BeltDREndCap_ = ps.getParameter<double>("selePi0BeltDREndCap");
94  selePi0BeltDetaEndCap_ = ps.getParameter<double>("selePi0BeltDetaEndCap");
95  selePi0IsoEndCap_ = ps.getParameter<double>("selePi0IsoEndCap");
96 
98  selePtGammaEta_ = ps.getParameter<double>("selePtGammaEta");
99  selePtEta_ = ps.getParameter<double>("selePtEta");
100  seleS4S9GammaEta_ = ps.getParameter<double>("seleS4S9GammaEta");
101  seleS9S25GammaEta_ = ps.getParameter<double>("seleS9S25GammaEta");
102  seleMinvMaxEta_ = ps.getParameter<double>("seleMinvMaxEta");
103  seleMinvMinEta_ = ps.getParameter<double>("seleMinvMinEta");
104  ptMinForIsolationEta_ = ps.getParameter<double>("ptMinForIsolationEta");
105  seleEtaIso_ = ps.getParameter<double>("seleEtaIso");
106  seleEtaBeltDR_ = ps.getParameter<double>("seleEtaBeltDR");
107  seleEtaBeltDeta_ = ps.getParameter<double>("seleEtaBeltDeta");
108 
110  selePtGammaEtaEndCap_ = ps.getParameter<double>("selePtGammaEtaEndCap");
111  selePtEtaEndCap_ = ps.getParameter<double>("selePtEtaEndCap");
112  seleS4S9GammaEtaEndCap_ = ps.getParameter<double>("seleS4S9GammaEtaEndCap");
113  seleS9S25GammaEtaEndCap_ = ps.getParameter<double>("seleS9S25GammaEtaEndCap");
114  seleMinvMaxEtaEndCap_ = ps.getParameter<double>("seleMinvMaxEtaEndCap");
115  seleMinvMinEtaEndCap_ = ps.getParameter<double>("seleMinvMinEtaEndCap");
116  ptMinForIsolationEtaEndCap_ = ps.getParameter<double>("ptMinForIsolationEtaEndCap");
117  seleEtaIsoEndCap_ = ps.getParameter<double>("seleEtaIsoEndCap");
118  seleEtaBeltDREndCap_ = ps.getParameter<double>("seleEtaBeltDREndCap");
119  seleEtaBeltDetaEndCap_ = ps.getParameter<double>("seleEtaBeltDetaEndCap");
120 
121  // Parameters for the position calculation:
124 }
125 
127 
128 //--------------------------------------------------------
129 void DQMSourcePi0::bookHistograms(DQMStore::IBooker &ibooker, edm::Run const &irun, edm::EventSetup const &isetup) {
130  // create and cd into new folder
131  ibooker.setCurrentFolder(folderName_);
132 
133  // book some histograms 1D
134 
135  hiPhiDistrEBpi0_ = ibooker.book1D("iphiDistributionEBpi0", "RechitEB pi0 iphi", 361, 1, 361);
136  hiPhiDistrEBpi0_->setAxisTitle("i#phi ", 1);
137  hiPhiDistrEBpi0_->setAxisTitle("# rechits", 2);
138 
139  hiXDistrEEpi0_ = ibooker.book1D("iXDistributionEEpi0", "RechitEE pi0 ix", 100, 0, 100);
140  hiXDistrEEpi0_->setAxisTitle("ix ", 1);
141  hiXDistrEEpi0_->setAxisTitle("# rechits", 2);
142 
143  hiPhiDistrEBeta_ = ibooker.book1D("iphiDistributionEBeta", "RechitEB eta iphi", 361, 1, 361);
144  hiPhiDistrEBeta_->setAxisTitle("i#phi ", 1);
145  hiPhiDistrEBeta_->setAxisTitle("# rechits", 2);
146 
147  hiXDistrEEeta_ = ibooker.book1D("iXDistributionEEeta", "RechitEE eta ix", 100, 0, 100);
148  hiXDistrEEeta_->setAxisTitle("ix ", 1);
149  hiXDistrEEeta_->setAxisTitle("# rechits", 2);
150 
151  hiEtaDistrEBpi0_ = ibooker.book1D("iEtaDistributionEBpi0", "RechitEB pi0 ieta", 171, -85, 86);
152  hiEtaDistrEBpi0_->setAxisTitle("i#eta", 1);
153  hiEtaDistrEBpi0_->setAxisTitle("#rechits", 2);
154 
155  hiYDistrEEpi0_ = ibooker.book1D("iYDistributionEEpi0", "RechitEE pi0 iY", 100, 0, 100);
156  hiYDistrEEpi0_->setAxisTitle("iy", 1);
157  hiYDistrEEpi0_->setAxisTitle("#rechits", 2);
158 
159  hiEtaDistrEBeta_ = ibooker.book1D("iEtaDistributionEBeta", "RechitEB eta ieta", 171, -85, 86);
160  hiEtaDistrEBeta_->setAxisTitle("i#eta", 1);
161  hiEtaDistrEBeta_->setAxisTitle("#rechits", 2);
162 
163  hiYDistrEEeta_ = ibooker.book1D("iYDistributionEEeta", "RechitEE eta iY", 100, 0, 100);
164  hiYDistrEEeta_->setAxisTitle("iy", 1);
165  hiYDistrEEeta_->setAxisTitle("#rechits", 2);
166 
167  hRechitEnergyEBpi0_ = ibooker.book1D("rhEnergyEBpi0", "Pi0 rechits energy EB", 160, 0., 2.0);
168  hRechitEnergyEBpi0_->setAxisTitle("energy (GeV) ", 1);
169  hRechitEnergyEBpi0_->setAxisTitle("#rechits", 2);
170 
171  hRechitEnergyEEpi0_ = ibooker.book1D("rhEnergyEEpi0", "Pi0 rechits energy EE", 160, 0., 3.0);
172  hRechitEnergyEEpi0_->setAxisTitle("energy (GeV) ", 1);
173  hRechitEnergyEEpi0_->setAxisTitle("#rechits", 2);
174 
175  hRechitEnergyEBeta_ = ibooker.book1D("rhEnergyEBeta", "Eta rechits energy EB", 160, 0., 2.0);
176  hRechitEnergyEBeta_->setAxisTitle("energy (GeV) ", 1);
177  hRechitEnergyEBeta_->setAxisTitle("#rechits", 2);
178 
179  hRechitEnergyEEeta_ = ibooker.book1D("rhEnergyEEeta", "Eta rechits energy EE", 160, 0., 3.0);
180  hRechitEnergyEEeta_->setAxisTitle("energy (GeV) ", 1);
181  hRechitEnergyEEeta_->setAxisTitle("#rechits", 2);
182 
183  hEventEnergyEBpi0_ = ibooker.book1D("eventEnergyEBpi0", "Pi0 event energy EB", 100, 0., 20.0);
184  hEventEnergyEBpi0_->setAxisTitle("energy (GeV) ", 1);
185 
186  hEventEnergyEEpi0_ = ibooker.book1D("eventEnergyEEpi0", "Pi0 event energy EE", 100, 0., 50.0);
187  hEventEnergyEEpi0_->setAxisTitle("energy (GeV) ", 1);
188 
189  hEventEnergyEBeta_ = ibooker.book1D("eventEnergyEBeta", "Eta event energy EB", 100, 0., 20.0);
190  hEventEnergyEBeta_->setAxisTitle("energy (GeV) ", 1);
191 
192  hEventEnergyEEeta_ = ibooker.book1D("eventEnergyEEeta", "Eta event energy EE", 100, 0., 50.0);
193  hEventEnergyEEeta_->setAxisTitle("energy (GeV) ", 1);
194 
195  hNRecHitsEBpi0_ = ibooker.book1D("nRechitsEBpi0", "#rechits in pi0 collection EB", 100, 0., 250.);
196  hNRecHitsEBpi0_->setAxisTitle("rechits ", 1);
197 
198  hNRecHitsEEpi0_ = ibooker.book1D("nRechitsEEpi0", "#rechits in pi0 collection EE", 100, 0., 250.);
199  hNRecHitsEEpi0_->setAxisTitle("rechits ", 1);
200 
201  hNRecHitsEBeta_ = ibooker.book1D("nRechitsEBeta", "#rechits in eta collection EB", 100, 0., 250.);
202  hNRecHitsEBeta_->setAxisTitle("rechits ", 1);
203 
204  hNRecHitsEEeta_ = ibooker.book1D("nRechitsEEeta", "#rechits in eta collection EE", 100, 0., 250.);
205  hNRecHitsEEeta_->setAxisTitle("rechits ", 1);
206 
207  hMeanRecHitEnergyEBpi0_ = ibooker.book1D("meanEnergyEBpi0", "Mean rechit energy in pi0 collection EB", 50, 0., 2.);
208  hMeanRecHitEnergyEBpi0_->setAxisTitle("Mean Energy [GeV] ", 1);
209 
210  hMeanRecHitEnergyEEpi0_ = ibooker.book1D("meanEnergyEEpi0", "Mean rechit energy in pi0 collection EE", 100, 0., 5.);
211  hMeanRecHitEnergyEEpi0_->setAxisTitle("Mean Energy [GeV] ", 1);
212 
213  hMeanRecHitEnergyEBeta_ = ibooker.book1D("meanEnergyEBeta", "Mean rechit energy in eta collection EB", 50, 0., 2.);
214  hMeanRecHitEnergyEBeta_->setAxisTitle("Mean Energy [GeV] ", 1);
215 
216  hMeanRecHitEnergyEEeta_ = ibooker.book1D("meanEnergyEEeta", "Mean rechit energy in eta collection EE", 100, 0., 5.);
217  hMeanRecHitEnergyEEeta_->setAxisTitle("Mean Energy [GeV] ", 1);
218 
219  hMinvPi0EB_ = ibooker.book1D("Pi0InvmassEB", "Pi0 Invariant Mass in EB", 100, 0., 0.5);
220  hMinvPi0EB_->setAxisTitle("Inv Mass [GeV] ", 1);
221 
222  hMinvPi0EE_ = ibooker.book1D("Pi0InvmassEE", "Pi0 Invariant Mass in EE", 100, 0., 0.5);
223  hMinvPi0EE_->setAxisTitle("Inv Mass [GeV] ", 1);
224 
225  hMinvEtaEB_ = ibooker.book1D("EtaInvmassEB", "Eta Invariant Mass in EB", 100, 0., 0.85);
226  hMinvEtaEB_->setAxisTitle("Inv Mass [GeV] ", 1);
227 
228  hMinvEtaEE_ = ibooker.book1D("EtaInvmassEE", "Eta Invariant Mass in EE", 100, 0., 0.85);
229  hMinvEtaEE_->setAxisTitle("Inv Mass [GeV] ", 1);
230 
231  hPt1Pi0EB_ = ibooker.book1D("Pt1Pi0EB", "Pt 1st most energetic Pi0 photon in EB", 100, 0., 20.);
232  hPt1Pi0EB_->setAxisTitle("1st photon Pt [GeV] ", 1);
233 
234  hPt1Pi0EE_ = ibooker.book1D("Pt1Pi0EE", "Pt 1st most energetic Pi0 photon in EE", 100, 0., 20.);
235  hPt1Pi0EE_->setAxisTitle("1st photon Pt [GeV] ", 1);
236 
237  hPt1EtaEB_ = ibooker.book1D("Pt1EtaEB", "Pt 1st most energetic Eta photon in EB", 100, 0., 20.);
238  hPt1EtaEB_->setAxisTitle("1st photon Pt [GeV] ", 1);
239 
240  hPt1EtaEE_ = ibooker.book1D("Pt1EtaEE", "Pt 1st most energetic Eta photon in EE", 100, 0., 20.);
241  hPt1EtaEE_->setAxisTitle("1st photon Pt [GeV] ", 1);
242 
243  hPt2Pi0EB_ = ibooker.book1D("Pt2Pi0EB", "Pt 2nd most energetic Pi0 photon in EB", 100, 0., 20.);
244  hPt2Pi0EB_->setAxisTitle("2nd photon Pt [GeV] ", 1);
245 
246  hPt2Pi0EE_ = ibooker.book1D("Pt2Pi0EE", "Pt 2nd most energetic Pi0 photon in EE", 100, 0., 20.);
247  hPt2Pi0EE_->setAxisTitle("2nd photon Pt [GeV] ", 1);
248 
249  hPt2EtaEB_ = ibooker.book1D("Pt2EtaEB", "Pt 2nd most energetic Eta photon in EB", 100, 0., 20.);
250  hPt2EtaEB_->setAxisTitle("2nd photon Pt [GeV] ", 1);
251 
252  hPt2EtaEE_ = ibooker.book1D("Pt2EtaEE", "Pt 2nd most energetic Eta photon in EE", 100, 0., 20.);
253  hPt2EtaEE_->setAxisTitle("2nd photon Pt [GeV] ", 1);
254 
255  hPtPi0EB_ = ibooker.book1D("PtPi0EB", "Pi0 Pt in EB", 100, 0., 20.);
256  hPtPi0EB_->setAxisTitle("Pi0 Pt [GeV] ", 1);
257 
258  hPtPi0EE_ = ibooker.book1D("PtPi0EE", "Pi0 Pt in EE", 100, 0., 20.);
259  hPtPi0EE_->setAxisTitle("Pi0 Pt [GeV] ", 1);
260 
261  hPtEtaEB_ = ibooker.book1D("PtEtaEB", "Eta Pt in EB", 100, 0., 20.);
262  hPtEtaEB_->setAxisTitle("Eta Pt [GeV] ", 1);
263 
264  hPtEtaEE_ = ibooker.book1D("PtEtaEE", "Eta Pt in EE", 100, 0., 20.);
265  hPtEtaEE_->setAxisTitle("Eta Pt [GeV] ", 1);
266 
267  hIsoPi0EB_ = ibooker.book1D("IsoPi0EB", "Pi0 Iso in EB", 50, 0., 1.);
268  hIsoPi0EB_->setAxisTitle("Pi0 Iso", 1);
269 
270  hIsoPi0EE_ = ibooker.book1D("IsoPi0EE", "Pi0 Iso in EE", 50, 0., 1.);
271  hIsoPi0EE_->setAxisTitle("Pi0 Iso", 1);
272 
273  hIsoEtaEB_ = ibooker.book1D("IsoEtaEB", "Eta Iso in EB", 50, 0., 1.);
274  hIsoEtaEB_->setAxisTitle("Eta Iso", 1);
275 
276  hIsoEtaEE_ = ibooker.book1D("IsoEtaEE", "Eta Iso in EE", 50, 0., 1.);
277  hIsoEtaEE_->setAxisTitle("Eta Iso", 1);
278 
279  hS4S91Pi0EB_ = ibooker.book1D("S4S91Pi0EB", "S4S9 1st most energetic Pi0 photon in EB", 50, 0., 1.);
280  hS4S91Pi0EB_->setAxisTitle("S4S9 of the 1st Pi0 Photon ", 1);
281 
282  hS4S91Pi0EE_ = ibooker.book1D("S4S91Pi0EE", "S4S9 1st most energetic Pi0 photon in EE", 50, 0., 1.);
283  hS4S91Pi0EE_->setAxisTitle("S4S9 of the 1st Pi0 Photon ", 1);
284 
285  hS4S91EtaEB_ = ibooker.book1D("S4S91EtaEB", "S4S9 1st most energetic Eta photon in EB", 50, 0., 1.);
286  hS4S91EtaEB_->setAxisTitle("S4S9 of the 1st Eta Photon ", 1);
287 
288  hS4S91EtaEE_ = ibooker.book1D("S4S91EtaEE", "S4S9 1st most energetic Eta photon in EE", 50, 0., 1.);
289  hS4S91EtaEE_->setAxisTitle("S4S9 of the 1st Eta Photon ", 1);
290 
291  hS4S92Pi0EB_ = ibooker.book1D("S4S92Pi0EB", "S4S9 2nd most energetic Pi0 photon in EB", 50, 0., 1.);
292  hS4S92Pi0EB_->setAxisTitle("S4S9 of the 2nd Pi0 Photon", 1);
293 
294  hS4S92Pi0EE_ = ibooker.book1D("S4S92Pi0EE", "S4S9 2nd most energetic Pi0 photon in EE", 50, 0., 1.);
295  hS4S92Pi0EE_->setAxisTitle("S4S9 of the 2nd Pi0 Photon", 1);
296 
297  hS4S92EtaEB_ = ibooker.book1D("S4S92EtaEB", "S4S9 2nd most energetic Pi0 photon in EB", 50, 0., 1.);
298  hS4S92EtaEB_->setAxisTitle("S4S9 of the 2nd Eta Photon", 1);
299 
300  hS4S92EtaEE_ = ibooker.book1D("S4S92EtaEE", "S4S9 2nd most energetic Pi0 photon in EE", 50, 0., 1.);
301  hS4S92EtaEE_->setAxisTitle("S4S9 of the 2nd Eta Photon", 1);
302 }
303 
304 //-------------------------------------------------------------
305 void DQMSourcePi0::analyze(const Event &iEvent, const EventSetup &iSetup) {
307  return;
308  eventCounter_++;
309 
310  edm::ESHandle<CaloTopology> theCaloTopology;
311  iSetup.get<CaloTopologyRecord>().get(theCaloTopology);
312 
313  std::vector<EcalRecHit> seeds;
314  seeds.clear();
315 
316  vector<EBDetId> usedXtals;
317  usedXtals.clear();
318 
319  detIdEBRecHits.clear();
320  EBRecHits.clear();
321 
326 
327  if (isMonEBpi0_)
328  iEvent.getByToken(productMonitoredEBpi0_, rhEBpi0);
329  if (isMonEBeta_)
330  iEvent.getByToken(productMonitoredEBeta_, rhEBeta);
331  if (isMonEEpi0_)
332  iEvent.getByToken(productMonitoredEEpi0_, rhEEpi0);
333  if (isMonEEeta_)
334  iEvent.getByToken(productMonitoredEEeta_, rhEEeta);
335 
336  // Initialize the Position Calc
337 
338  edm::ESHandle<CaloGeometry> geoHandle;
339  iSetup.get<CaloGeometryRecord>().get(geoHandle);
340  const CaloSubdetectorGeometry *geometry_p = geoHandle->getSubdetectorGeometry(DetId::Ecal, EcalBarrel);
341  const CaloSubdetectorGeometry *geometryEE_p = geoHandle->getSubdetectorGeometry(DetId::Ecal, EcalEndcap);
342  const CaloSubdetectorGeometry *geometryES_p = geoHandle->getSubdetectorGeometry(DetId::Ecal, EcalPreshower);
343 
344  const CaloSubdetectorTopology *topology_p = theCaloTopology->getSubdetectorTopology(DetId::Ecal, EcalBarrel);
345  const CaloSubdetectorTopology *topology_ee = theCaloTopology->getSubdetectorTopology(DetId::Ecal, EcalEndcap);
346 
348 
349  // fill EB pi0 histos
350  if (isMonEBpi0_) {
351  if (rhEBpi0.isValid() && (!rhEBpi0->empty())) {
352  const EcalRecHitCollection *hitCollection_p = rhEBpi0.product();
353  float etot = 0;
354  for (itb = rhEBpi0->begin(); itb != rhEBpi0->end(); ++itb) {
355  EBDetId id(itb->id());
356  double energy = itb->energy();
358  continue;
359 
360  EBDetId det = itb->id();
361 
362  detIdEBRecHits.push_back(det);
363  EBRecHits.push_back(*itb);
364 
365  if (energy > clusSeedThr_)
366  seeds.push_back(*itb);
367 
368  hiPhiDistrEBpi0_->Fill(id.iphi());
369  hiEtaDistrEBpi0_->Fill(id.ieta());
370  hRechitEnergyEBpi0_->Fill(itb->energy());
371 
372  etot += itb->energy();
373  } // Eb rechits
374 
375  hNRecHitsEBpi0_->Fill(rhEBpi0->size());
376  hMeanRecHitEnergyEBpi0_->Fill(etot / rhEBpi0->size());
377  hEventEnergyEBpi0_->Fill(etot);
378 
379  // cout << " EB RH Pi0 collection: #, mean rh_e, event E
380  // "<<rhEBpi0->size()<<" "<<etot/rhEBpi0->size()<<" "<<etot<<endl;
381 
382  // Pi0 maker
383 
384  // cout<< " RH coll size: "<<rhEBpi0->size()<<endl;
385  // cout<< " Pi0 seeds: "<<seeds.size()<<endl;
386 
387  int nClus;
388  vector<float> eClus;
389  vector<float> etClus;
390  vector<float> etaClus;
391  vector<float> thetaClus;
392  vector<float> phiClus;
393  vector<EBDetId> max_hit;
394 
395  vector<vector<EcalRecHit>> RecHitsCluster;
396  vector<vector<EcalRecHit>> RecHitsCluster5x5;
397  vector<float> s4s9Clus;
398  vector<float> s9s25Clus;
399 
400  nClus = 0;
401 
402  // Make own simple clusters (3x3, 5x5 or clusPhiSize_ x clusEtaSize_)
403  sort(seeds.begin(), seeds.end(), ecalRecHitGreater);
404 
405  for (std::vector<EcalRecHit>::iterator itseed = seeds.begin(); itseed != seeds.end(); itseed++) {
406  EBDetId seed_id = itseed->id();
407  std::vector<EBDetId>::const_iterator usedIds;
408 
409  bool seedAlreadyUsed = false;
410  for (usedIds = usedXtals.begin(); usedIds != usedXtals.end(); usedIds++) {
411  if (*usedIds == seed_id) {
412  seedAlreadyUsed = true;
413  // cout<< " Seed with energy "<<itseed->energy()<<" was used
414  // !"<<endl;
415  break;
416  }
417  }
418  if (seedAlreadyUsed)
419  continue;
420  std::vector<DetId> clus_v = topology_p->getWindow(seed_id, clusEtaSize_, clusPhiSize_);
421  std::vector<std::pair<DetId, float>> clus_used;
422  // Reject the seed if not able to build the cluster around it correctly
423  // if(clus_v.size() < clusEtaSize_*clusPhiSize_){cout<<" Not enough
424  // RecHits "<<endl; continue;}
425  vector<EcalRecHit> RecHitsInWindow;
426  vector<EcalRecHit> RecHitsInWindow5x5;
427 
428  double simple_energy = 0;
429 
430  for (std::vector<DetId>::iterator det = clus_v.begin(); det != clus_v.end(); det++) {
431  EBDetId EBdet = *det;
432  // cout<<" det "<< EBdet<<" ieta "<<EBdet.ieta()<<" iphi
433  // "<<EBdet.iphi()<<endl;
434  bool HitAlreadyUsed = false;
435  for (usedIds = usedXtals.begin(); usedIds != usedXtals.end(); usedIds++) {
436  if (*usedIds == *det) {
437  HitAlreadyUsed = true;
438  break;
439  }
440  }
441  if (HitAlreadyUsed)
442  continue;
443 
444  std::vector<EBDetId>::iterator itdet = find(detIdEBRecHits.begin(), detIdEBRecHits.end(), EBdet);
445  if (itdet == detIdEBRecHits.end())
446  continue;
447 
448  int nn = int(itdet - detIdEBRecHits.begin());
449  usedXtals.push_back(*det);
450  RecHitsInWindow.push_back(EBRecHits[nn]);
451  clus_used.push_back(std::make_pair(*det, 1));
452  simple_energy = simple_energy + EBRecHits[nn].energy();
453  }
454 
455  if (simple_energy <= 0)
456  continue;
457 
458  math::XYZPoint clus_pos =
459  posCalculator_.Calculate_Location(clus_used, hitCollection_p, geometry_p, geometryES_p);
460  // cout<< " Simple Clustering: Total energy for this simple
461  // cluster : "<<simple_energy<<endl; cout<< " Simple Clustering:
462  // eta phi : "<<clus_pos.eta()<<" "<<clus_pos.phi()<<endl; cout<< "
463  // Simple Clustering: x y z : "<<clus_pos.x()<<" "<<clus_pos.y()<<"
464  // "<<clus_pos.z()<<endl;
465 
466  float theta_s = 2. * atan(exp(-clus_pos.eta()));
467  // float p0x_s = simple_energy * sin(theta_s) *
468  // cos(clus_pos.phi()); float p0y_s = simple_energy * sin(theta_s) *
469  // sin(clus_pos.phi());
470  // float p0z_s = simple_energy * cos(theta_s);
471  // float et_s = sqrt( p0x_s*p0x_s + p0y_s*p0y_s);
472 
473  float et_s = simple_energy * sin(theta_s);
474  // cout << " Simple Clustering: E,Et,px,py,pz: "<<simple_energy<<"
475  // "<<et_s<<" "<<p0x_s<<" "<<p0y_s<<" "<<endl;
476 
477  // Compute S4/S9 variable
478  // We are not sure to have 9 RecHits so need to check eta and phi:
480  float s4s9_tmp[4];
481  for (int i = 0; i < 4; i++)
482  s4s9_tmp[i] = 0;
483 
484  int seed_ieta = seed_id.ieta();
485  int seed_iphi = seed_id.iphi();
486 
487  convxtalid(seed_iphi, seed_ieta);
488 
489  float e3x3 = 0;
490  float e5x5 = 0;
491 
492  for (unsigned int j = 0; j < RecHitsInWindow.size(); j++) {
493  EBDetId det = (EBDetId)RecHitsInWindow[j].id();
494 
495  int ieta = det.ieta();
496  int iphi = det.iphi();
497 
498  convxtalid(iphi, ieta);
499 
500  float en = RecHitsInWindow[j].energy();
501 
502  int dx = diff_neta_s(seed_ieta, ieta);
503  int dy = diff_nphi_s(seed_iphi, iphi);
504 
505  if (dx <= 0 && dy <= 0)
506  s4s9_tmp[0] += en;
507  if (dx >= 0 && dy <= 0)
508  s4s9_tmp[1] += en;
509  if (dx <= 0 && dy >= 0)
510  s4s9_tmp[2] += en;
511  if (dx >= 0 && dy >= 0)
512  s4s9_tmp[3] += en;
513 
514  if (std::abs(dx) <= 1 && std::abs(dy) <= 1)
515  e3x3 += en;
516  if (std::abs(dx) <= 2 && std::abs(dy) <= 2)
517  e5x5 += en;
518  }
519 
520  if (e3x3 <= 0)
521  continue;
522 
523  float s4s9_max = *max_element(s4s9_tmp, s4s9_tmp + 4) / e3x3;
524 
526  std::vector<DetId> clus_v5x5 = topology_p->getWindow(seed_id, 5, 5);
527  for (std::vector<DetId>::const_iterator idItr = clus_v5x5.begin(); idItr != clus_v5x5.end(); idItr++) {
528  EBDetId det = *idItr;
529 
530  std::vector<EBDetId>::iterator itdet0 = find(usedXtals.begin(), usedXtals.end(), det);
531 
533  if (itdet0 != usedXtals.end())
534  continue;
535 
536  // inside collections
537  std::vector<EBDetId>::iterator itdet = find(detIdEBRecHits.begin(), detIdEBRecHits.end(), det);
538  if (itdet == detIdEBRecHits.end())
539  continue;
540 
541  int nn = int(itdet - detIdEBRecHits.begin());
542 
543  RecHitsInWindow5x5.push_back(EBRecHits[nn]);
544  e5x5 += EBRecHits[nn].energy();
545  }
546 
547  if (e5x5 <= 0)
548  continue;
549 
550  eClus.push_back(simple_energy);
551  etClus.push_back(et_s);
552  etaClus.push_back(clus_pos.eta());
553  thetaClus.push_back(theta_s);
554  phiClus.push_back(clus_pos.phi());
555  s4s9Clus.push_back(s4s9_max);
556  s9s25Clus.push_back(e3x3 / e5x5);
557  RecHitsCluster.push_back(RecHitsInWindow);
558  RecHitsCluster5x5.push_back(RecHitsInWindow5x5);
559 
560  // std::cout<<" EB pi0 cluster (n,nxt,e,et eta,phi,s4s9)
561  //"<<nClus<<" "<<int(RecHitsInWindow.size())<<" "<<eClus[nClus]<<" "<<"
562  //"<<etClus[nClus]<<" "<<etaClus[nClus]<<" "<<phiClus[nClus]<<"
563  //"<<s4s9Clus[nClus]<<std::endl;
564 
565  nClus++;
566  }
567 
568  // cout<< " Pi0 clusters: "<<nClus<<endl;
569 
570  // Selection, based on Simple clustering
571  // pi0 candidates
572  int npi0_s = 0;
573 
574  // if (nClus <= 1) return;
575  for (Int_t i = 0; i < nClus; i++) {
576  for (Int_t j = i + 1; j < nClus; j++) {
577  // cout<<" i "<<i<<" etClus[i] "<<etClus[i]<<" j "<<j<<"
578  // etClus[j] "<<etClus[j]<<endl;
579  if (etClus[i] > selePtGamma_ && etClus[j] > selePtGamma_ && s4s9Clus[i] > seleS4S9Gamma_ &&
580  s4s9Clus[j] > seleS4S9Gamma_) {
581  float p0x = etClus[i] * cos(phiClus[i]);
582  float p1x = etClus[j] * cos(phiClus[j]);
583  float p0y = etClus[i] * sin(phiClus[i]);
584  float p1y = etClus[j] * sin(phiClus[j]);
585  float p0z = eClus[i] * cos(thetaClus[i]);
586  float p1z = eClus[j] * cos(thetaClus[j]);
587 
588  float pt_pair = sqrt((p0x + p1x) * (p0x + p1x) + (p0y + p1y) * (p0y + p1y));
589 
590  if (pt_pair < selePtPi0_)
591  continue;
592 
593  float m_inv = sqrt((eClus[i] + eClus[j]) * (eClus[i] + eClus[j]) - (p0x + p1x) * (p0x + p1x) -
594  (p0y + p1y) * (p0y + p1y) - (p0z + p1z) * (p0z + p1z));
595  if ((m_inv < seleMinvMaxPi0_) && (m_inv > seleMinvMinPi0_)) {
596  // New Loop on cluster to measure isolation:
597  vector<int> IsoClus;
598  IsoClus.clear();
599  float Iso = 0;
600  TVector3 pairVect = TVector3((p0x + p1x), (p0y + p1y), (p0z + p1z));
601  for (Int_t k = 0; k < nClus; k++) {
602  if (etClus[k] < ptMinForIsolation_)
603  continue;
604 
605  if (k == i || k == j)
606  continue;
607  TVector3 ClusVect =
608  TVector3(etClus[k] * cos(phiClus[k]), etClus[k] * sin(phiClus[k]), eClus[k] * cos(thetaClus[k]));
609 
610  float dretacl = fabs(etaClus[k] - pairVect.Eta());
611  float drcl = ClusVect.DeltaR(pairVect);
612  // cout<< " Iso: k, E, drclpi0, detaclpi0, dphiclpi0
613  // "<<k<<" "<<eClus[k]<<" "<<drclpi0<<"
614  // "<<dretaclpi0<<endl;
615  if ((drcl < selePi0BeltDR_) && (dretacl < selePi0BeltDeta_)) {
616  // cout<< " ... good iso cluster #: "<<k<<"
617  // etClus[k] "<<etClus[k] <<endl;
618  Iso = Iso + etClus[k];
619  IsoClus.push_back(k);
620  }
621  }
622 
623  // cout<<" Iso/pt_pi0 "<<Iso/pt_pi0<<endl;
624  if (Iso / pt_pair < selePi0Iso_) {
625  // for(unsigned int
626  // Rec=0;Rec<RecHitsCluster[i].size();Rec++)pi0EBRecHitCollection->push_back(RecHitsCluster[i][Rec]);
627  // for(unsigned int
628  // Rec2=0;Rec2<RecHitsCluster[j].size();Rec2++)pi0EBRecHitCollection->push_back(RecHitsCluster[j][Rec2]);
629 
630  hMinvPi0EB_->Fill(m_inv);
631  hPt1Pi0EB_->Fill(etClus[i]);
632  hPt2Pi0EB_->Fill(etClus[j]);
633  hPtPi0EB_->Fill(pt_pair);
634  hIsoPi0EB_->Fill(Iso / pt_pair);
635  hS4S91Pi0EB_->Fill(s4s9Clus[i]);
636  hS4S92Pi0EB_->Fill(s4s9Clus[j]);
637 
638  // cout <<" EB Simple Clustering: pi0 Candidate
639  // pt, eta, phi, Iso, m_inv, i, j : "<<pt_pair<<"
640  //"<<pairVect.Eta()<<" "<<pairVect.Phi()<<" "<<Iso<<"
641  //"<<m_inv<<" "<<i<<" "<<j<<" "<<endl;
642 
643  npi0_s++;
644  }
645  }
646  }
647  } // End of the "j" loop over Simple Clusters
648  } // End of the "i" loop over Simple Clusters
649 
650  // cout<<" (Simple Clustering) EB Pi0 candidates #: "<<npi0_s<<endl;
651 
652  } // rhEBpi0.valid() ends
653 
654  } // isMonEBpi0 ends
655 
656  //------------------ End of pi0 in EB --------------------------//
657 
658  // fill EB eta histos
659  if (isMonEBeta_) {
660  if (rhEBeta.isValid() && (!rhEBeta->empty())) {
661  const EcalRecHitCollection *hitCollection_p = rhEBeta.product();
662  float etot = 0;
663  for (itb = rhEBeta->begin(); itb != rhEBeta->end(); ++itb) {
664  EBDetId id(itb->id());
665  double energy = itb->energy();
667  continue;
668 
669  EBDetId det = itb->id();
670 
671  detIdEBRecHits.push_back(det);
672  EBRecHits.push_back(*itb);
673 
674  if (energy > clusSeedThr_)
675  seeds.push_back(*itb);
676 
677  hiPhiDistrEBeta_->Fill(id.iphi());
678  hiEtaDistrEBeta_->Fill(id.ieta());
679  hRechitEnergyEBeta_->Fill(itb->energy());
680 
681  etot += itb->energy();
682  } // Eb rechits
683 
684  hNRecHitsEBeta_->Fill(rhEBeta->size());
685  hMeanRecHitEnergyEBeta_->Fill(etot / rhEBeta->size());
686  hEventEnergyEBeta_->Fill(etot);
687 
688  // cout << " EB RH Eta collection: #, mean rh_e, event E
689  // "<<rhEBeta->size()<<" "<<etot/rhEBeta->size()<<" "<<etot<<endl;
690 
691  // Eta maker
692 
693  // cout<< " RH coll size: "<<rhEBeta->size()<<endl;
694  // cout<< " Eta seeds: "<<seeds.size()<<endl;
695 
696  int nClus;
697  vector<float> eClus;
698  vector<float> etClus;
699  vector<float> etaClus;
700  vector<float> thetaClus;
701  vector<float> phiClus;
702  vector<EBDetId> max_hit;
703 
704  vector<vector<EcalRecHit>> RecHitsCluster;
705  vector<vector<EcalRecHit>> RecHitsCluster5x5;
706  vector<float> s4s9Clus;
707  vector<float> s9s25Clus;
708 
709  nClus = 0;
710 
711  // Make own simple clusters (3x3, 5x5 or clusPhiSize_ x clusEtaSize_)
712  sort(seeds.begin(), seeds.end(), ecalRecHitGreater);
713 
714  for (std::vector<EcalRecHit>::iterator itseed = seeds.begin(); itseed != seeds.end(); itseed++) {
715  EBDetId seed_id = itseed->id();
716  std::vector<EBDetId>::const_iterator usedIds;
717 
718  bool seedAlreadyUsed = false;
719  for (usedIds = usedXtals.begin(); usedIds != usedXtals.end(); usedIds++) {
720  if (*usedIds == seed_id) {
721  seedAlreadyUsed = true;
722  // cout<< " Seed with energy "<<itseed->energy()<<" was used
723  // !"<<endl;
724  break;
725  }
726  }
727  if (seedAlreadyUsed)
728  continue;
729  std::vector<DetId> clus_v = topology_p->getWindow(seed_id, clusEtaSize_, clusPhiSize_);
730  std::vector<std::pair<DetId, float>> clus_used;
731  // Reject the seed if not able to build the cluster around it correctly
732  // if(clus_v.size() < clusEtaSize_*clusPhiSize_){cout<<" Not enough
733  // RecHits "<<endl; continue;}
734  vector<EcalRecHit> RecHitsInWindow;
735  vector<EcalRecHit> RecHitsInWindow5x5;
736 
737  double simple_energy = 0;
738 
739  for (std::vector<DetId>::iterator det = clus_v.begin(); det != clus_v.end(); det++) {
740  EBDetId EBdet = *det;
741  // cout<<" det "<< EBdet<<" ieta "<<EBdet.ieta()<<" iphi
742  // "<<EBdet.iphi()<<endl;
743  bool HitAlreadyUsed = false;
744  for (usedIds = usedXtals.begin(); usedIds != usedXtals.end(); usedIds++) {
745  if (*usedIds == *det) {
746  HitAlreadyUsed = true;
747  break;
748  }
749  }
750  if (HitAlreadyUsed)
751  continue;
752 
753  std::vector<EBDetId>::iterator itdet = find(detIdEBRecHits.begin(), detIdEBRecHits.end(), EBdet);
754  if (itdet == detIdEBRecHits.end())
755  continue;
756 
757  int nn = int(itdet - detIdEBRecHits.begin());
758  usedXtals.push_back(*det);
759  RecHitsInWindow.push_back(EBRecHits[nn]);
760  clus_used.push_back(std::make_pair(*det, 1));
761  simple_energy = simple_energy + EBRecHits[nn].energy();
762  }
763 
764  if (simple_energy <= 0)
765  continue;
766 
767  math::XYZPoint clus_pos =
768  posCalculator_.Calculate_Location(clus_used, hitCollection_p, geometry_p, geometryES_p);
769  // cout<< " Simple Clustering: Total energy for this simple
770  // cluster : "<<simple_energy<<endl; cout<< " Simple Clustering:
771  // eta phi : "<<clus_pos.eta()<<" "<<clus_pos.phi()<<endl; cout<< "
772  // Simple Clustering: x y z : "<<clus_pos.x()<<" "<<clus_pos.y()<<"
773  // "<<clus_pos.z()<<endl;
774 
775  float theta_s = 2. * atan(exp(-clus_pos.eta()));
776  // float p0x_s = simple_energy * sin(theta_s) *
777  // cos(clus_pos.phi()); float p0y_s = simple_energy * sin(theta_s) *
778  // sin(clus_pos.phi());
779  // float p0z_s = simple_energy * cos(theta_s);
780  // float et_s = sqrt( p0x_s*p0x_s + p0y_s*p0y_s);
781 
782  float et_s = simple_energy * sin(theta_s);
783  // cout << " Simple Clustering: E,Et,px,py,pz: "<<simple_energy<<"
784  // "<<et_s<<" "<<p0x_s<<" "<<p0y_s<<" "<<endl;
785 
786  // Compute S4/S9 variable
787  // We are not sure to have 9 RecHits so need to check eta and phi:
789  float s4s9_tmp[4];
790  for (int i = 0; i < 4; i++)
791  s4s9_tmp[i] = 0;
792 
793  int seed_ieta = seed_id.ieta();
794  int seed_iphi = seed_id.iphi();
795 
796  convxtalid(seed_iphi, seed_ieta);
797 
798  float e3x3 = 0;
799  float e5x5 = 0;
800 
801  for (unsigned int j = 0; j < RecHitsInWindow.size(); j++) {
802  EBDetId det = (EBDetId)RecHitsInWindow[j].id();
803 
804  int ieta = det.ieta();
805  int iphi = det.iphi();
806 
807  convxtalid(iphi, ieta);
808 
809  float en = RecHitsInWindow[j].energy();
810 
811  int dx = diff_neta_s(seed_ieta, ieta);
812  int dy = diff_nphi_s(seed_iphi, iphi);
813 
814  if (dx <= 0 && dy <= 0)
815  s4s9_tmp[0] += en;
816  if (dx >= 0 && dy <= 0)
817  s4s9_tmp[1] += en;
818  if (dx <= 0 && dy >= 0)
819  s4s9_tmp[2] += en;
820  if (dx >= 0 && dy >= 0)
821  s4s9_tmp[3] += en;
822 
823  if (std::abs(dx) <= 1 && std::abs(dy) <= 1)
824  e3x3 += en;
825  if (std::abs(dx) <= 2 && std::abs(dy) <= 2)
826  e5x5 += en;
827  }
828 
829  if (e3x3 <= 0)
830  continue;
831 
832  float s4s9_max = *max_element(s4s9_tmp, s4s9_tmp + 4) / e3x3;
833 
835  std::vector<DetId> clus_v5x5 = topology_p->getWindow(seed_id, 5, 5);
836  for (std::vector<DetId>::const_iterator idItr = clus_v5x5.begin(); idItr != clus_v5x5.end(); idItr++) {
837  EBDetId det = *idItr;
838 
839  std::vector<EBDetId>::iterator itdet0 = find(usedXtals.begin(), usedXtals.end(), det);
840 
842  if (itdet0 != usedXtals.end())
843  continue;
844 
845  // inside collections
846  std::vector<EBDetId>::iterator itdet = find(detIdEBRecHits.begin(), detIdEBRecHits.end(), det);
847  if (itdet == detIdEBRecHits.end())
848  continue;
849 
850  int nn = int(itdet - detIdEBRecHits.begin());
851 
852  RecHitsInWindow5x5.push_back(EBRecHits[nn]);
853  e5x5 += EBRecHits[nn].energy();
854  }
855 
856  if (e5x5 <= 0)
857  continue;
858 
859  eClus.push_back(simple_energy);
860  etClus.push_back(et_s);
861  etaClus.push_back(clus_pos.eta());
862  thetaClus.push_back(theta_s);
863  phiClus.push_back(clus_pos.phi());
864  s4s9Clus.push_back(s4s9_max);
865  s9s25Clus.push_back(e3x3 / e5x5);
866  RecHitsCluster.push_back(RecHitsInWindow);
867  RecHitsCluster5x5.push_back(RecHitsInWindow5x5);
868 
869  // std::cout<<" EB Eta cluster (n,nxt,e,et eta,phi,s4s9)
870  //"<<nClus<<" "<<int(RecHitsInWindow.size())<<" "<<eClus[nClus]<<" "<<"
871  //"<<etClus[nClus]<<" "<<etaClus[nClus]<<" "<<phiClus[nClus]<<"
872  //"<<s4s9Clus[nClus]<<std::endl;
873 
874  nClus++;
875  }
876 
877  // cout<< " Eta clusters: "<<nClus<<endl;
878 
879  // Selection, based on Simple clustering
880  // eta candidates
881  int npi0_s = 0;
882 
883  // if (nClus <= 1) return;
884  for (Int_t i = 0; i < nClus; i++) {
885  for (Int_t j = i + 1; j < nClus; j++) {
886  // cout<<" i "<<i<<" etClus[i] "<<etClus[i]<<" j "<<j<<"
887  // etClus[j] "<<etClus[j]<<endl;
888  if (etClus[i] > selePtGammaEta_ && etClus[j] > selePtGammaEta_ && s4s9Clus[i] > seleS4S9GammaEta_ &&
889  s4s9Clus[j] > seleS4S9GammaEta_) {
890  float p0x = etClus[i] * cos(phiClus[i]);
891  float p1x = etClus[j] * cos(phiClus[j]);
892  float p0y = etClus[i] * sin(phiClus[i]);
893  float p1y = etClus[j] * sin(phiClus[j]);
894  float p0z = eClus[i] * cos(thetaClus[i]);
895  float p1z = eClus[j] * cos(thetaClus[j]);
896 
897  float pt_pair = sqrt((p0x + p1x) * (p0x + p1x) + (p0y + p1y) * (p0y + p1y));
898 
899  if (pt_pair < selePtEta_)
900  continue;
901 
902  float m_inv = sqrt((eClus[i] + eClus[j]) * (eClus[i] + eClus[j]) - (p0x + p1x) * (p0x + p1x) -
903  (p0y + p1y) * (p0y + p1y) - (p0z + p1z) * (p0z + p1z));
904  if ((m_inv < seleMinvMaxEta_) && (m_inv > seleMinvMinEta_)) {
905  // New Loop on cluster to measure isolation:
906  vector<int> IsoClus;
907  IsoClus.clear();
908  float Iso = 0;
909  TVector3 pairVect = TVector3((p0x + p1x), (p0y + p1y), (p0z + p1z));
910  for (Int_t k = 0; k < nClus; k++) {
911  if (etClus[k] < ptMinForIsolationEta_)
912  continue;
913 
914  if (k == i || k == j)
915  continue;
916  TVector3 ClusVect =
917  TVector3(etClus[k] * cos(phiClus[k]), etClus[k] * sin(phiClus[k]), eClus[k] * cos(thetaClus[k]));
918 
919  float dretacl = fabs(etaClus[k] - pairVect.Eta());
920  float drcl = ClusVect.DeltaR(pairVect);
921  // cout<< " Iso: k, E, drclpi0, detaclpi0, dphiclpi0
922  // "<<k<<" "<<eClus[k]<<" "<<drclpi0<<"
923  // "<<dretaclpi0<<endl;
924  if ((drcl < seleEtaBeltDR_) && (dretacl < seleEtaBeltDeta_)) {
925  // cout<< " ... good iso cluster #: "<<k<<"
926  // etClus[k] "<<etClus[k] <<endl;
927  Iso = Iso + etClus[k];
928  IsoClus.push_back(k);
929  }
930  }
931 
932  // cout<<" Iso/pt_pi0 "<<Iso/pt_pi0<<endl;
933  if (Iso / pt_pair < seleEtaIso_) {
934  // for(unsigned int
935  // Rec=0;Rec<RecHitsCluster[i].size();Rec++)pi0EBRecHitCollection->push_back(RecHitsCluster[i][Rec]);
936  // for(unsigned int
937  // Rec2=0;Rec2<RecHitsCluster[j].size();Rec2++)pi0EBRecHitCollection->push_back(RecHitsCluster[j][Rec2]);
938 
939  hMinvEtaEB_->Fill(m_inv);
940  hPt1EtaEB_->Fill(etClus[i]);
941  hPt2EtaEB_->Fill(etClus[j]);
942  hPtEtaEB_->Fill(pt_pair);
943  hIsoEtaEB_->Fill(Iso / pt_pair);
944  hS4S91EtaEB_->Fill(s4s9Clus[i]);
945  hS4S92EtaEB_->Fill(s4s9Clus[j]);
946 
947  // cout <<" EB Simple Clustering: Eta Candidate
948  // pt, eta, phi, Iso, m_inv, i, j : "<<pt_pair<<"
949  //"<<pairVect.Eta()<<" "<<pairVect.Phi()<<" "<<Iso<<"
950  //"<<m_inv<<" "<<i<<" "<<j<<" "<<endl;
951 
952  npi0_s++;
953  }
954  }
955  }
956  } // End of the "j" loop over Simple Clusters
957  } // End of the "i" loop over Simple Clusters
958 
959  // cout<<" (Simple Clustering) EB Eta candidates #: "<<npi0_s<<endl;
960 
961  } // rhEBeta.valid() ends
962 
963  } // isMonEBeta ends
964 
965  //------------------ End of Eta in EB --------------------------//
966 
967  //----------------- End of the EB --------------------------//
968 
969  //----------------- Start of the EE --------------------//
970 
971  // fill pi0 EE histos
972  if (isMonEEpi0_) {
973  if (rhEEpi0.isValid() && (!rhEEpi0->empty())) {
974  const EcalRecHitCollection *hitCollection_ee = rhEEpi0.product();
975  float etot = 0;
976 
977  detIdEERecHits.clear();
978  EERecHits.clear();
979 
980  std::vector<EcalRecHit> seedsEndCap;
981  seedsEndCap.clear();
982 
983  vector<EEDetId> usedXtalsEndCap;
984  usedXtalsEndCap.clear();
985 
988  for (ite = rhEEpi0->begin(); ite != rhEEpi0->end(); ite++) {
989  double energy = ite->energy();
991  continue;
992 
993  EEDetId det = ite->id();
994  EEDetId id(ite->id());
995 
996  detIdEERecHits.push_back(det);
997  EERecHits.push_back(*ite);
998 
999  hiXDistrEEpi0_->Fill(id.ix());
1000  hiYDistrEEpi0_->Fill(id.iy());
1001  hRechitEnergyEEpi0_->Fill(ite->energy());
1002 
1003  if (energy > clusSeedThrEndCap_)
1004  seedsEndCap.push_back(*ite);
1005 
1006  etot += ite->energy();
1007  } // EE rechits
1008 
1009  hNRecHitsEEpi0_->Fill(rhEEpi0->size());
1010  hMeanRecHitEnergyEEpi0_->Fill(etot / rhEEpi0->size());
1011  hEventEnergyEEpi0_->Fill(etot);
1012 
1013  // cout << " EE RH Pi0 collection: #, mean rh_e, event E
1014  // "<<rhEEpi0->size()<<" "<<etot/rhEEpi0->size()<<" "<<etot<<endl;
1015 
1016  int nClusEndCap;
1017  vector<float> eClusEndCap;
1018  vector<float> etClusEndCap;
1019  vector<float> etaClusEndCap;
1020  vector<float> thetaClusEndCap;
1021  vector<float> phiClusEndCap;
1022  vector<vector<EcalRecHit>> RecHitsClusterEndCap;
1023  vector<vector<EcalRecHit>> RecHitsCluster5x5EndCap;
1024  vector<float> s4s9ClusEndCap;
1025  vector<float> s9s25ClusEndCap;
1026 
1027  nClusEndCap = 0;
1028 
1029  // Make own simple clusters (3x3, 5x5 or clusPhiSize_ x clusEtaSize_)
1030  sort(seedsEndCap.begin(), seedsEndCap.end(), ecalRecHitGreater);
1031 
1032  for (std::vector<EcalRecHit>::iterator itseed = seedsEndCap.begin(); itseed != seedsEndCap.end(); itseed++) {
1033  EEDetId seed_id = itseed->id();
1034  std::vector<EEDetId>::const_iterator usedIds;
1035 
1036  bool seedAlreadyUsed = false;
1037  for (usedIds = usedXtalsEndCap.begin(); usedIds != usedXtalsEndCap.end(); usedIds++) {
1038  if (*usedIds == seed_id) {
1039  seedAlreadyUsed = true;
1040  break;
1041  }
1042  }
1043 
1044  if (seedAlreadyUsed)
1045  continue;
1046  std::vector<DetId> clus_v = topology_ee->getWindow(seed_id, clusEtaSize_, clusPhiSize_);
1047  std::vector<std::pair<DetId, float>> clus_used;
1048 
1049  vector<EcalRecHit> RecHitsInWindow;
1050  vector<EcalRecHit> RecHitsInWindow5x5;
1051 
1052  float simple_energy = 0;
1053 
1054  for (std::vector<DetId>::iterator det = clus_v.begin(); det != clus_v.end(); det++) {
1055  EEDetId EEdet = *det;
1056 
1057  bool HitAlreadyUsed = false;
1058  for (usedIds = usedXtalsEndCap.begin(); usedIds != usedXtalsEndCap.end(); usedIds++) {
1059  if (*usedIds == *det) {
1060  HitAlreadyUsed = true;
1061  break;
1062  }
1063  }
1064 
1065  if (HitAlreadyUsed)
1066  continue;
1067 
1068  std::vector<EEDetId>::iterator itdet = find(detIdEERecHits.begin(), detIdEERecHits.end(), EEdet);
1069  if (itdet == detIdEERecHits.end())
1070  continue;
1071 
1072  int nn = int(itdet - detIdEERecHits.begin());
1073  usedXtalsEndCap.push_back(*det);
1074  RecHitsInWindow.push_back(EERecHits[nn]);
1075  clus_used.push_back(std::make_pair(*det, 1));
1076  simple_energy = simple_energy + EERecHits[nn].energy();
1077  }
1078 
1079  if (simple_energy <= 0)
1080  continue;
1081 
1082  math::XYZPoint clus_pos =
1083  posCalculator_.Calculate_Location(clus_used, hitCollection_ee, geometryEE_p, geometryES_p);
1084 
1085  float theta_s = 2. * atan(exp(-clus_pos.eta()));
1086  float et_s = simple_energy * sin(theta_s);
1087  // float p0x_s = simple_energy * sin(theta_s) *
1088  // cos(clus_pos.phi()); float p0y_s = simple_energy * sin(theta_s) *
1089  // sin(clus_pos.phi()); float et_s = sqrt( p0x_s*p0x_s + p0y_s*p0y_s);
1090 
1091  // Compute S4/S9 variable
1092  // We are not sure to have 9 RecHits so need to check eta and phi:
1093  float s4s9_tmp[4];
1094  for (int i = 0; i < 4; i++)
1095  s4s9_tmp[i] = 0;
1096 
1097  int ixSeed = seed_id.ix();
1098  int iySeed = seed_id.iy();
1099  float e3x3 = 0;
1100  float e5x5 = 0;
1101 
1102  for (unsigned int j = 0; j < RecHitsInWindow.size(); j++) {
1103  EEDetId det_this = (EEDetId)RecHitsInWindow[j].id();
1104  int dx = ixSeed - det_this.ix();
1105  int dy = iySeed - det_this.iy();
1106 
1107  float en = RecHitsInWindow[j].energy();
1108 
1109  if (dx <= 0 && dy <= 0)
1110  s4s9_tmp[0] += en;
1111  if (dx >= 0 && dy <= 0)
1112  s4s9_tmp[1] += en;
1113  if (dx <= 0 && dy >= 0)
1114  s4s9_tmp[2] += en;
1115  if (dx >= 0 && dy >= 0)
1116  s4s9_tmp[3] += en;
1117 
1118  if (std::abs(dx) <= 1 && std::abs(dy) <= 1)
1119  e3x3 += en;
1120  if (std::abs(dx) <= 2 && std::abs(dy) <= 2)
1121  e5x5 += en;
1122  }
1123 
1124  if (e3x3 <= 0)
1125  continue;
1126 
1127  eClusEndCap.push_back(simple_energy);
1128  etClusEndCap.push_back(et_s);
1129  etaClusEndCap.push_back(clus_pos.eta());
1130  thetaClusEndCap.push_back(theta_s);
1131  phiClusEndCap.push_back(clus_pos.phi());
1132  s4s9ClusEndCap.push_back(*max_element(s4s9_tmp, s4s9_tmp + 4) / e3x3);
1133  s9s25ClusEndCap.push_back(e3x3 / e5x5);
1134  RecHitsClusterEndCap.push_back(RecHitsInWindow);
1135  RecHitsCluster5x5EndCap.push_back(RecHitsInWindow5x5);
1136 
1137  // std::cout<<" EE pi0 cluster (n,nxt,e,et eta,phi,s4s9)
1138  //"<<nClusEndCap<<" "<<int(RecHitsInWindow.size())<<"
1139  //"<<eClusEndCap[nClusEndCap]<<" "<<" "<<etClusEndCap[nClusEndCap]<<"
1140  //"<<etaClusEndCap[nClusEndCap]<<" "<<phiClusEndCap[nClusEndCap]<<"
1141  //"<<s4s9ClusEndCap[nClusEndCap]<<std::endl;
1142 
1143  nClusEndCap++;
1144  }
1145 
1146  // Selection, based on Simple clustering
1147  // pi0 candidates
1148  int npi0_se = 0;
1149 
1150  for (Int_t i = 0; i < nClusEndCap; i++) {
1151  for (Int_t j = i + 1; j < nClusEndCap; j++) {
1152  if (etClusEndCap[i] > selePtGammaEndCap_ && etClusEndCap[j] > selePtGammaEndCap_ &&
1153  s4s9ClusEndCap[i] > seleS4S9GammaEndCap_ && s4s9ClusEndCap[j] > seleS4S9GammaEndCap_) {
1154  float p0x = etClusEndCap[i] * cos(phiClusEndCap[i]);
1155  float p1x = etClusEndCap[j] * cos(phiClusEndCap[j]);
1156  float p0y = etClusEndCap[i] * sin(phiClusEndCap[i]);
1157  float p1y = etClusEndCap[j] * sin(phiClusEndCap[j]);
1158  float p0z = eClusEndCap[i] * cos(thetaClusEndCap[i]);
1159  float p1z = eClusEndCap[j] * cos(thetaClusEndCap[j]);
1160 
1161  float pt_pair = sqrt((p0x + p1x) * (p0x + p1x) + (p0y + p1y) * (p0y + p1y));
1162  if (pt_pair < selePtPi0EndCap_)
1163  continue;
1164  float m_inv = sqrt((eClusEndCap[i] + eClusEndCap[j]) * (eClusEndCap[i] + eClusEndCap[j]) -
1165  (p0x + p1x) * (p0x + p1x) - (p0y + p1y) * (p0y + p1y) - (p0z + p1z) * (p0z + p1z));
1166 
1167  if ((m_inv < seleMinvMaxPi0EndCap_) && (m_inv > seleMinvMinPi0EndCap_)) {
1168  // New Loop on cluster to measure isolation:
1169  vector<int> IsoClus;
1170  IsoClus.clear();
1171  float Iso = 0;
1172  TVector3 pairVect = TVector3((p0x + p1x), (p0y + p1y), (p0z + p1z));
1173  for (Int_t k = 0; k < nClusEndCap; k++) {
1174  if (etClusEndCap[k] < ptMinForIsolationEndCap_)
1175  continue;
1176 
1177  if (k == i || k == j)
1178  continue;
1179 
1180  TVector3 clusVect = TVector3(etClusEndCap[k] * cos(phiClusEndCap[k]),
1181  etClusEndCap[k] * sin(phiClusEndCap[k]),
1182  eClusEndCap[k] * cos(thetaClusEndCap[k]));
1183  float dretacl = fabs(etaClusEndCap[k] - pairVect.Eta());
1184  float drcl = clusVect.DeltaR(pairVect);
1185 
1186  if (drcl < selePi0BeltDREndCap_ && dretacl < selePi0BeltDetaEndCap_) {
1187  Iso = Iso + etClusEndCap[k];
1188  IsoClus.push_back(k);
1189  }
1190  }
1191 
1192  if (Iso / pt_pair < selePi0IsoEndCap_) {
1193  // cout <<" EE Simple Clustering: pi0 Candidate pt, eta, phi,
1194  // Iso, m_inv, i, j : "<<pt_pair<<" "<<pairVect.Eta()<<"
1195  // "<<pairVect.Phi()<<" "<<Iso<<" "<<m_inv<<" "<<i<<" "<<j<<"
1196  // "<<endl;
1197 
1198  hMinvPi0EE_->Fill(m_inv);
1199  hPt1Pi0EE_->Fill(etClusEndCap[i]);
1200  hPt2Pi0EE_->Fill(etClusEndCap[j]);
1201  hPtPi0EE_->Fill(pt_pair);
1202  hIsoPi0EE_->Fill(Iso / pt_pair);
1203  hS4S91Pi0EE_->Fill(s4s9ClusEndCap[i]);
1204  hS4S92Pi0EE_->Fill(s4s9ClusEndCap[j]);
1205 
1206  npi0_se++;
1207  }
1208  }
1209  }
1210  } // End of the "j" loop over Simple Clusters
1211  } // End of the "i" loop over Simple Clusters
1212 
1213  // cout<<" (Simple Clustering) EE Pi0 candidates #:
1214  // "<<npi0_se<<endl;
1215 
1216  } // rhEEpi0
1217  } // isMonEEpi0
1218 
1219  //================End of Pi0 endcap=======================//
1220 
1221  //================ Eta in EE===============================//
1222 
1223  // fill pi0 EE histos
1224  if (isMonEEeta_) {
1225  if (rhEEeta.isValid() && (!rhEEeta->empty())) {
1226  const EcalRecHitCollection *hitCollection_ee = rhEEeta.product();
1227  float etot = 0;
1228 
1229  detIdEERecHits.clear();
1230  EERecHits.clear();
1231 
1232  std::vector<EcalRecHit> seedsEndCap;
1233  seedsEndCap.clear();
1234 
1235  vector<EEDetId> usedXtalsEndCap;
1236  usedXtalsEndCap.clear();
1237 
1240  for (ite = rhEEeta->begin(); ite != rhEEeta->end(); ite++) {
1241  double energy = ite->energy();
1243  continue;
1244 
1245  EEDetId det = ite->id();
1246  EEDetId id(ite->id());
1247 
1248  detIdEERecHits.push_back(det);
1249  EERecHits.push_back(*ite);
1250 
1251  hiXDistrEEeta_->Fill(id.ix());
1252  hiYDistrEEeta_->Fill(id.iy());
1253  hRechitEnergyEEeta_->Fill(ite->energy());
1254 
1255  if (energy > clusSeedThrEndCap_)
1256  seedsEndCap.push_back(*ite);
1257 
1258  etot += ite->energy();
1259  } // EE rechits
1260 
1261  hNRecHitsEEeta_->Fill(rhEEeta->size());
1262  hMeanRecHitEnergyEEeta_->Fill(etot / rhEEeta->size());
1263  hEventEnergyEEeta_->Fill(etot);
1264 
1265  // cout << " EE RH Eta collection: #, mean rh_e, event E
1266  // "<<rhEEeta->size()<<" "<<etot/rhEEeta->size()<<" "<<etot<<endl;
1267 
1268  int nClusEndCap;
1269  vector<float> eClusEndCap;
1270  vector<float> etClusEndCap;
1271  vector<float> etaClusEndCap;
1272  vector<float> thetaClusEndCap;
1273  vector<float> phiClusEndCap;
1274  vector<vector<EcalRecHit>> RecHitsClusterEndCap;
1275  vector<vector<EcalRecHit>> RecHitsCluster5x5EndCap;
1276  vector<float> s4s9ClusEndCap;
1277  vector<float> s9s25ClusEndCap;
1278 
1279  nClusEndCap = 0;
1280 
1281  // Make own simple clusters (3x3, 5x5 or clusPhiSize_ x clusEtaSize_)
1282  sort(seedsEndCap.begin(), seedsEndCap.end(), ecalRecHitGreater);
1283 
1284  for (std::vector<EcalRecHit>::iterator itseed = seedsEndCap.begin(); itseed != seedsEndCap.end(); itseed++) {
1285  EEDetId seed_id = itseed->id();
1286  std::vector<EEDetId>::const_iterator usedIds;
1287 
1288  bool seedAlreadyUsed = false;
1289  for (usedIds = usedXtalsEndCap.begin(); usedIds != usedXtalsEndCap.end(); usedIds++) {
1290  if (*usedIds == seed_id) {
1291  seedAlreadyUsed = true;
1292  break;
1293  }
1294  }
1295 
1296  if (seedAlreadyUsed)
1297  continue;
1298  std::vector<DetId> clus_v = topology_ee->getWindow(seed_id, clusEtaSize_, clusPhiSize_);
1299  std::vector<std::pair<DetId, float>> clus_used;
1300 
1301  vector<EcalRecHit> RecHitsInWindow;
1302  vector<EcalRecHit> RecHitsInWindow5x5;
1303 
1304  float simple_energy = 0;
1305 
1306  for (std::vector<DetId>::iterator det = clus_v.begin(); det != clus_v.end(); det++) {
1307  EEDetId EEdet = *det;
1308 
1309  bool HitAlreadyUsed = false;
1310  for (usedIds = usedXtalsEndCap.begin(); usedIds != usedXtalsEndCap.end(); usedIds++) {
1311  if (*usedIds == *det) {
1312  HitAlreadyUsed = true;
1313  break;
1314  }
1315  }
1316 
1317  if (HitAlreadyUsed)
1318  continue;
1319 
1320  std::vector<EEDetId>::iterator itdet = find(detIdEERecHits.begin(), detIdEERecHits.end(), EEdet);
1321  if (itdet == detIdEERecHits.end())
1322  continue;
1323 
1324  int nn = int(itdet - detIdEERecHits.begin());
1325  usedXtalsEndCap.push_back(*det);
1326  RecHitsInWindow.push_back(EERecHits[nn]);
1327  clus_used.push_back(std::make_pair(*det, 1));
1328  simple_energy = simple_energy + EERecHits[nn].energy();
1329  }
1330 
1331  if (simple_energy <= 0)
1332  continue;
1333 
1334  math::XYZPoint clus_pos =
1335  posCalculator_.Calculate_Location(clus_used, hitCollection_ee, geometryEE_p, geometryES_p);
1336 
1337  float theta_s = 2. * atan(exp(-clus_pos.eta()));
1338  float et_s = simple_energy * sin(theta_s);
1339  // float p0x_s = simple_energy * sin(theta_s) *
1340  // cos(clus_pos.phi()); float p0y_s = simple_energy * sin(theta_s) *
1341  // sin(clus_pos.phi()); float et_s = sqrt( p0x_s*p0x_s + p0y_s*p0y_s);
1342 
1343  // Compute S4/S9 variable
1344  // We are not sure to have 9 RecHits so need to check eta and phi:
1345  float s4s9_tmp[4];
1346  for (int i = 0; i < 4; i++)
1347  s4s9_tmp[i] = 0;
1348 
1349  int ixSeed = seed_id.ix();
1350  int iySeed = seed_id.iy();
1351  float e3x3 = 0;
1352  float e5x5 = 0;
1353 
1354  for (unsigned int j = 0; j < RecHitsInWindow.size(); j++) {
1355  EEDetId det_this = (EEDetId)RecHitsInWindow[j].id();
1356  int dx = ixSeed - det_this.ix();
1357  int dy = iySeed - det_this.iy();
1358 
1359  float en = RecHitsInWindow[j].energy();
1360 
1361  if (dx <= 0 && dy <= 0)
1362  s4s9_tmp[0] += en;
1363  if (dx >= 0 && dy <= 0)
1364  s4s9_tmp[1] += en;
1365  if (dx <= 0 && dy >= 0)
1366  s4s9_tmp[2] += en;
1367  if (dx >= 0 && dy >= 0)
1368  s4s9_tmp[3] += en;
1369 
1370  if (std::abs(dx) <= 1 && std::abs(dy) <= 1)
1371  e3x3 += en;
1372  if (std::abs(dx) <= 2 && std::abs(dy) <= 2)
1373  e5x5 += en;
1374  }
1375 
1376  if (e3x3 <= 0)
1377  continue;
1378 
1379  eClusEndCap.push_back(simple_energy);
1380  etClusEndCap.push_back(et_s);
1381  etaClusEndCap.push_back(clus_pos.eta());
1382  thetaClusEndCap.push_back(theta_s);
1383  phiClusEndCap.push_back(clus_pos.phi());
1384  s4s9ClusEndCap.push_back(*max_element(s4s9_tmp, s4s9_tmp + 4) / e3x3);
1385  s9s25ClusEndCap.push_back(e3x3 / e5x5);
1386  RecHitsClusterEndCap.push_back(RecHitsInWindow);
1387  RecHitsCluster5x5EndCap.push_back(RecHitsInWindow5x5);
1388 
1389  // std::cout<<" EE Eta cluster (n,nxt,e,et eta,phi,s4s9)
1390  //"<<nClusEndCap<<" "<<int(RecHitsInWindow.size())<<"
1391  //"<<eClusEndCap[nClusEndCap]<<" "<<" "<<etClusEndCap[nClusEndCap]<<"
1392  //"<<etaClusEndCap[nClusEndCap]<<" "<<phiClusEndCap[nClusEndCap]<<"
1393  //"<<s4s9ClusEndCap[nClusEndCap]<<std::endl;
1394 
1395  nClusEndCap++;
1396  }
1397 
1398  // Selection, based on Simple clustering
1399  // pi0 candidates
1400  int npi0_se = 0;
1401 
1402  for (Int_t i = 0; i < nClusEndCap; i++) {
1403  for (Int_t j = i + 1; j < nClusEndCap; j++) {
1404  if (etClusEndCap[i] > selePtGammaEtaEndCap_ && etClusEndCap[j] > selePtGammaEtaEndCap_ &&
1405  s4s9ClusEndCap[i] > seleS4S9GammaEtaEndCap_ && s4s9ClusEndCap[j] > seleS4S9GammaEtaEndCap_) {
1406  float p0x = etClusEndCap[i] * cos(phiClusEndCap[i]);
1407  float p1x = etClusEndCap[j] * cos(phiClusEndCap[j]);
1408  float p0y = etClusEndCap[i] * sin(phiClusEndCap[i]);
1409  float p1y = etClusEndCap[j] * sin(phiClusEndCap[j]);
1410  float p0z = eClusEndCap[i] * cos(thetaClusEndCap[i]);
1411  float p1z = eClusEndCap[j] * cos(thetaClusEndCap[j]);
1412 
1413  float pt_pair = sqrt((p0x + p1x) * (p0x + p1x) + (p0y + p1y) * (p0y + p1y));
1414  if (pt_pair < selePtEtaEndCap_)
1415  continue;
1416  float m_inv = sqrt((eClusEndCap[i] + eClusEndCap[j]) * (eClusEndCap[i] + eClusEndCap[j]) -
1417  (p0x + p1x) * (p0x + p1x) - (p0y + p1y) * (p0y + p1y) - (p0z + p1z) * (p0z + p1z));
1418 
1419  if ((m_inv < seleMinvMaxEtaEndCap_) && (m_inv > seleMinvMinEtaEndCap_)) {
1420  // New Loop on cluster to measure isolation:
1421  vector<int> IsoClus;
1422  IsoClus.clear();
1423  float Iso = 0;
1424  TVector3 pairVect = TVector3((p0x + p1x), (p0y + p1y), (p0z + p1z));
1425  for (Int_t k = 0; k < nClusEndCap; k++) {
1426  if (etClusEndCap[k] < ptMinForIsolationEtaEndCap_)
1427  continue;
1428 
1429  if (k == i || k == j)
1430  continue;
1431 
1432  TVector3 clusVect = TVector3(etClusEndCap[k] * cos(phiClusEndCap[k]),
1433  etClusEndCap[k] * sin(phiClusEndCap[k]),
1434  eClusEndCap[k] * cos(thetaClusEndCap[k]));
1435  float dretacl = fabs(etaClusEndCap[k] - pairVect.Eta());
1436  float drcl = clusVect.DeltaR(pairVect);
1437 
1438  if (drcl < seleEtaBeltDREndCap_ && dretacl < seleEtaBeltDetaEndCap_) {
1439  Iso = Iso + etClusEndCap[k];
1440  IsoClus.push_back(k);
1441  }
1442  }
1443 
1444  if (Iso / pt_pair < seleEtaIsoEndCap_) {
1445  // cout <<" EE Simple Clustering: Eta Candidate pt, eta,
1446  // phi, Iso, m_inv, i, j : "<<pt_pair<<" "<<pairVect.Eta()<<"
1447  //"<<pairVect.Phi()<<" "<<Iso<<" "<<m_inv<<" "<<i<<" "<<j<<"
1448  //"<<endl;
1449 
1450  hMinvEtaEE_->Fill(m_inv);
1451  hPt1EtaEE_->Fill(etClusEndCap[i]);
1452  hPt2EtaEE_->Fill(etClusEndCap[j]);
1453  hPtEtaEE_->Fill(pt_pair);
1454  hIsoEtaEE_->Fill(Iso / pt_pair);
1455  hS4S91EtaEE_->Fill(s4s9ClusEndCap[i]);
1456  hS4S92EtaEE_->Fill(s4s9ClusEndCap[j]);
1457 
1458  npi0_se++;
1459  }
1460  }
1461  }
1462  } // End of the "j" loop over Simple Clusters
1463  } // End of the "i" loop over Simple Clusters
1464 
1465  // cout<<" (Simple Clustering) EE Eta candidates #:
1466  // "<<npi0_se<<endl;
1467 
1468  } // rhEEeta
1469  } // isMonEEeta
1470 
1471  //================End of Pi0 endcap=======================//
1472 
1474 }
1475 
1476 void DQMSourcePi0::convxtalid(Int_t &nphi, Int_t &neta) {
1477  // Barrel only
1478  // Output nphi 0...359; neta 0...84; nside=+1 (for eta>0), or 0 (for eta<0).
1479  // neta will be [-85,-1] , or [0,84], the minus sign indicates the z<0 side.
1480 
1481  if (neta > 0)
1482  neta -= 1;
1483  if (nphi > 359)
1484  nphi = nphi - 360;
1485 
1486 } // end of convxtalid
1487 
1488 int DQMSourcePi0::diff_neta_s(Int_t neta1, Int_t neta2) {
1489  Int_t mdiff;
1490  mdiff = (neta1 - neta2);
1491  return mdiff;
1492 }
1493 
1494 // Calculate the distance in xtals taking into account the periodicity of the
1495 // Barrel
1496 int DQMSourcePi0::diff_nphi_s(Int_t nphi1, Int_t nphi2) {
1497  Int_t mdiff;
1498  if (std::abs(nphi1 - nphi2) < (360 - std::abs(nphi1 - nphi2))) {
1499  mdiff = nphi1 - nphi2;
1500  } else {
1501  mdiff = 360 - std::abs(nphi1 - nphi2);
1502  if (nphi1 > nphi2)
1503  mdiff = -mdiff;
1504  }
1505  return mdiff;
1506 }
DQMSourcePi0::seleMinvMaxEtaEndCap_
double seleMinvMaxEtaEndCap_
Definition: DQMSourcePi0.h:261
DQMSourcePi0::hRechitEnergyEBpi0_
MonitorElement * hRechitEnergyEBpi0_
Energy Distribution of rechits EB (pi0)
Definition: DQMSourcePi0.h:71
DQMSourcePi0::bookHistograms
void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
Definition: DQMSourcePi0.cc:129
DQMSourcePi0::hS4S91Pi0EE_
MonitorElement * hS4S91Pi0EE_
S4S9 of the 1st most energetic pi0 photon EE.
Definition: DQMSourcePi0.h:182
DQMSourcePi0::selePi0BeltDetaEndCap_
double selePi0BeltDetaEndCap_
Definition: DQMSourcePi0.h:241
neta
const int neta
Definition: CMTRawAnalyzer.h:423
Handle.h
EBDetId::ieta
int ieta() const
get the crystal ieta
Definition: EBDetId.h:49
ecalRecHitGreater
bool ecalRecHitGreater(EcalRecHit x, EcalRecHit y)
Definition: DQMSourcePi0.h:27
mps_fire.i
i
Definition: mps_fire.py:428
edm::SortedCollection< EcalRecHit >::const_iterator
std::vector< EcalRecHit >::const_iterator const_iterator
Definition: SortedCollection.h:80
MessageLogger.h
edm::Handle::product
T const * product() const
Definition: Handle.h:70
ESHandle.h
DQMSourcePi0::seleEtaBeltDR_
double seleEtaBeltDR_
Definition: DQMSourcePi0.h:253
DQMSourcePi0::hNRecHitsEEeta_
MonitorElement * hNRecHitsEEeta_
Distribution of number of RecHits EE (eta)
Definition: DQMSourcePi0.h:104
DQMSourcePi0::ptMinForIsolation_
double ptMinForIsolation_
Definition: DQMSourcePi0.h:231
DQMSourcePi0::selePtEta_
double selePtEta_
Definition: DQMSourcePi0.h:246
DQMSourcePi0::hPt2EtaEB_
MonitorElement * hPt2EtaEB_
Pt of the 2nd most energetic Eta photon in EB.
Definition: DQMSourcePi0.h:149
edm::Run
Definition: Run.h:45
BasicCluster.h
DQMSourcePi0::hRechitEnergyEBeta_
MonitorElement * hRechitEnergyEBeta_
Energy Distribution of rechits EB (eta)
Definition: DQMSourcePi0.h:77
CaloGeometryRecord
Definition: CaloGeometryRecord.h:30
DQMSourcePi0::isMonEEeta_
bool isMonEEeta_
Definition: DQMSourcePi0.h:294
EBDetId
Definition: EBDetId.h:17
edm
HLT enums.
Definition: AlignableModifier.h:19
EBDetId.h
EEDetId.h
DQMSourcePi0::hS4S92Pi0EB_
MonitorElement * hS4S92Pi0EB_
S4S9 of the 2nd most energetic pi0 photon.
Definition: DQMSourcePi0.h:191
dqm::implementation::NavigatorBase::setCurrentFolder
virtual void setCurrentFolder(std::string const &fullpath)
Definition: DQMStore.cc:32
DQMSourcePi0::hMeanRecHitEnergyEEeta_
MonitorElement * hMeanRecHitEnergyEEeta_
Distribution of Mean energy per rechit EE (eta)
Definition: DQMSourcePi0.h:116
DQMSourcePi0::selePtGammaEtaEndCap_
double selePtGammaEtaEndCap_
for eta->gg endcap
Definition: DQMSourcePi0.h:257
CaloGeometry::getSubdetectorGeometry
const CaloSubdetectorGeometry * getSubdetectorGeometry(const DetId &id) const
access the subdetector geometry for the given subdetector directly
Definition: CaloGeometry.cc:34
edm::SortedCollection< EcalRecHit >
DQMStore.h
edm::SortedCollection::size
size_type size() const
Definition: SortedCollection.h:215
DQMSourcePi0::EBRecHits
std::vector< EcalRecHit > EBRecHits
Definition: DQMSourcePi0.h:276
edm::ParameterSet::getUntrackedParameter
T getUntrackedParameter(std::string const &, T const &) const
CaloTopologyRecord
Definition: CaloTopologyRecord.h:10
DQMSourcePi0::hiEtaDistrEBpi0_
MonitorElement * hiEtaDistrEBpi0_
Distribution of rechits in iEta (pi0)
Definition: DQMSourcePi0.h:59
DQMSourcePi0::convxtalid
void convxtalid(int &, int &)
Definition: DQMSourcePi0.cc:1476
DQMSourcePi0::seleEtaIsoEndCap_
double seleEtaIsoEndCap_
Definition: DQMSourcePi0.h:264
MonitorAlCaEcalPi0_cfi.posCalcParameters
posCalcParameters
Definition: MonitorAlCaEcalPi0_cfi.py:72
spr::find
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
Definition: FindCaloHit.cc:19
DQMSourcePi0::ptMinForIsolationEta_
double ptMinForIsolationEta_
Definition: DQMSourcePi0.h:251
DQMSourcePi0::hNRecHitsEBpi0_
MonitorElement * hNRecHitsEBpi0_
Distribution of number of RecHits EB (pi0)
Definition: DQMSourcePi0.h:95
EEDetId::ix
int ix() const
Definition: EEDetId.h:77
edm::Handle
Definition: AssociativeIterator.h:50
DQMSourcePi0::seleS9S25GammaEtaEndCap_
double seleS9S25GammaEtaEndCap_
Definition: DQMSourcePi0.h:259
DQMSourcePi0::hRechitEnergyEEpi0_
MonitorElement * hRechitEnergyEEpi0_
Energy Distribution of rechits EE (pi0)
Definition: DQMSourcePi0.h:74
DQMSourcePi0::diff_neta_s
int diff_neta_s(int, int)
Definition: DQMSourcePi0.cc:1488
DQMSourcePi0::ptMinForIsolationEtaEndCap_
double ptMinForIsolationEtaEndCap_
Definition: DQMSourcePi0.h:263
EcalBarrel
Definition: EcalSubdetector.h:10
EcalRecHitCollections.h
DQMSourcePi0::hNRecHitsEEpi0_
MonitorElement * hNRecHitsEEpi0_
Distribution of number of RecHits EE (pi0)
Definition: DQMSourcePi0.h:98
DQMSourcePi0::hiPhiDistrEBeta_
MonitorElement * hiPhiDistrEBeta_
Distribution of rechits in iPhi (eta)
Definition: DQMSourcePi0.h:53
DQMSourcePi0::hRechitEnergyEEeta_
MonitorElement * hRechitEnergyEEeta_
Energy Distribution of rechits EE (eta)
Definition: DQMSourcePi0.h:80
DQMSourcePi0::seleEtaBeltDeta_
double seleEtaBeltDeta_
Definition: DQMSourcePi0.h:254
DQMSourcePi0::clusPhiSize_
int clusPhiSize_
Definition: DQMSourcePi0.h:218
funct::sin
Sin< T >::type sin(const T &t)
Definition: Sin.h:22
LEDCalibrationChannels.iphi
iphi
Definition: LEDCalibrationChannels.py:64
DQMSourcePi0::selePtGamma_
double selePtGamma_
Definition: DQMSourcePi0.h:223
DQMSourcePi0::hEventEnergyEEeta_
MonitorElement * hEventEnergyEEeta_
Distribution of total event energy EE (eta)
Definition: DQMSourcePi0.h:92
nphi
const int nphi
Definition: CMTRawAnalyzer.h:424
DQMSourcePi0::seleMinvMaxEta_
double seleMinvMaxEta_
Definition: DQMSourcePi0.h:249
DQMSourcePi0::seleS9S25GammaEta_
double seleS9S25GammaEta_
Definition: DQMSourcePi0.h:248
DQMSourcePi0::hMeanRecHitEnergyEEpi0_
MonitorElement * hMeanRecHitEnergyEEpi0_
Distribution of Mean energy per rechit EE (pi0)
Definition: DQMSourcePi0.h:110
DQMSourcePi0::seleEtaBeltDetaEndCap_
double seleEtaBeltDetaEndCap_
Definition: DQMSourcePi0.h:266
funct::cos
Cos< T >::type cos(const T &t)
Definition: Cos.h:22
edm::EventSetup::get
T get() const
Definition: EventSetup.h:80
DQMSourcePi0::selePi0BeltDREndCap_
double selePi0BeltDREndCap_
Definition: DQMSourcePi0.h:240
DQMSourcePi0::hMinvEtaEB_
MonitorElement * hMinvEtaEB_
Eta invariant mass in EB.
Definition: DQMSourcePi0.h:125
edm::SortedCollection::begin
const_iterator begin() const
Definition: SortedCollection.h:262
DQMSourcePi0::productMonitoredEBeta_
edm::EDGetTokenT< EcalRecHitCollection > productMonitoredEBeta_
Definition: DQMSourcePi0.h:204
Service.h
DQMSourcePi0::EERecHits
std::vector< EcalRecHit > EERecHits
Definition: DQMSourcePi0.h:279
PositionCalc::Calculate_Location
math::XYZPoint Calculate_Location(const HitsAndFractions &iDetIds, const edm::SortedCollection< HitType > *iRecHits, const CaloSubdetectorGeometry *iSubGeom, const CaloSubdetectorGeometry *iESGeom=nullptr)
Definition: PositionCalc.h:65
DQMSourcePi0::seleEtaBeltDREndCap_
double seleEtaBeltDREndCap_
Definition: DQMSourcePi0.h:265
DQMSourcePi0::hPt1EtaEE_
MonitorElement * hPt1EtaEE_
Pt of the 1st most energetic Eta photon in EE.
Definition: DQMSourcePi0.h:140
DQMSourcePi0::hEventEnergyEBpi0_
MonitorElement * hEventEnergyEBpi0_
Distribution of total event energy EB (pi0)
Definition: DQMSourcePi0.h:83
mathSSE::sqrt
T sqrt(T t)
Definition: SSEVec.h:19
dqm::impl::MonitorElement::Fill
void Fill(long long x)
Definition: MonitorElement.h:290
edm::ESHandle< CaloTopology >
DQMSourcePi0::ptMinForIsolationEndCap_
double ptMinForIsolationEndCap_
Definition: DQMSourcePi0.h:242
HCALHighEnergyHPDFilter_cfi.energy
energy
Definition: HCALHighEnergyHPDFilter_cfi.py:5
DQMSourcePi0::hMinvPi0EB_
MonitorElement * hMinvPi0EB_
Pi0 invariant mass in EB.
Definition: DQMSourcePi0.h:119
dqmdumpme.k
k
Definition: dqmdumpme.py:60
DQMSourcePi0::hPt1EtaEB_
MonitorElement * hPt1EtaEB_
Pt of the 1st most energetic Eta photon in EB.
Definition: DQMSourcePi0.h:137
DQMSourcePi0::hPtEtaEB_
MonitorElement * hPtEtaEB_
Eta Pt in EB.
Definition: DQMSourcePi0.h:161
DQMSourcePi0::prescaleFactor_
unsigned int prescaleFactor_
Monitor every prescaleFactor_ events.
Definition: DQMSourcePi0.h:282
EEDetId
Definition: EEDetId.h:14
DQMSourcePi0::isMonEBeta_
bool isMonEBeta_
Definition: DQMSourcePi0.h:292
DQMSourcePi0::~DQMSourcePi0
~DQMSourcePi0() override
Definition: DQMSourcePi0.cc:126
DQMSourcePi0::hS4S92Pi0EE_
MonitorElement * hS4S92Pi0EE_
S4S9 of the 2nd most energetic pi0 photon EE.
Definition: DQMSourcePi0.h:194
EcalEndcap
Definition: EcalSubdetector.h:10
DQMSourcePi0::hPt2Pi0EE_
MonitorElement * hPt2Pi0EE_
Pt of the 2nd most energetic Pi0 photon in EE.
Definition: DQMSourcePi0.h:146
InitialStep_cff.seeds
seeds
Definition: InitialStep_cff.py:230
DQMSourcePi0::hiXDistrEEeta_
MonitorElement * hiXDistrEEeta_
Distribution of rechits in ix EE (eta)
Definition: DQMSourcePi0.h:56
DQMSourcePi0::seleMinvMinPi0EndCap_
double seleMinvMinPi0EndCap_
Definition: DQMSourcePi0.h:237
DQMSourcePi0::hNRecHitsEBeta_
MonitorElement * hNRecHitsEBeta_
Distribution of number of RecHits EB (eta)
Definition: DQMSourcePi0.h:101
LEDCalibrationChannels.ieta
ieta
Definition: LEDCalibrationChannels.py:63
DQMSourcePi0::detIdEBRecHits
std::vector< EBDetId > detIdEBRecHits
Definition: DQMSourcePi0.h:275
edm::ParameterSet
Definition: ParameterSet.h:47
math::XYZPoint
XYZPointD XYZPoint
point in space with cartesian internal representation
Definition: Point3D.h:12
DQMSourcePi0::DQMSourcePi0
DQMSourcePi0(const edm::ParameterSet &)
Definition: DQMSourcePi0.cc:45
Event.h
DQMSourcePi0::hMinvPi0EE_
MonitorElement * hMinvPi0EE_
Pi0 invariant mass in EE.
Definition: DQMSourcePi0.h:122
DQMSourcePi0::selePi0IsoEndCap_
double selePi0IsoEndCap_
Definition: DQMSourcePi0.h:239
DQMSourcePi0::hiEtaDistrEBeta_
MonitorElement * hiEtaDistrEBeta_
Distribution of rechits in iEta (eta)
Definition: DQMSourcePi0.h:65
edm::SortedCollection::end
const_iterator end() const
Definition: SortedCollection.h:267
DQMSourcePi0::diff_nphi_s
int diff_nphi_s(int, int)
Definition: DQMSourcePi0.cc:1496
DQMSourcePi0::hiYDistrEEpi0_
MonitorElement * hiYDistrEEpi0_
Distribution of rechits in iy EE (pi0)
Definition: DQMSourcePi0.h:62
DQMSourcePi0::selePi0BeltDeta_
double selePi0BeltDeta_
Definition: DQMSourcePi0.h:229
CaloTopology::getSubdetectorTopology
const CaloSubdetectorTopology * getSubdetectorTopology(const DetId &id) const
access the subdetector Topology for the given subdetector directly
Definition: CaloTopology.cc:17
DQMSourcePi0::posCalculator_
PositionCalc posCalculator_
Definition: DQMSourcePi0.h:44
DQMSourcePi0::hS4S91EtaEE_
MonitorElement * hS4S91EtaEE_
S4S9 of the 1st most energetic eta photon EE.
Definition: DQMSourcePi0.h:188
PositionCalc
Definition: PositionCalc.h:29
createfilelist.int
int
Definition: createfilelist.py:10
iEvent
int iEvent
Definition: GenABIO.cc:224
DQMSourcePi0::seleMinvMaxPi0_
double seleMinvMaxPi0_
Definition: DQMSourcePi0.h:225
DQMSourcePi0::seleS4S9GammaEndCap_
double seleS4S9GammaEndCap_
Definition: DQMSourcePi0.h:238
DQMSourcePi0.h
DQMSourcePi0::selePtGammaEta_
double selePtGammaEta_
for eta->gg barrel
Definition: DQMSourcePi0.h:245
DQMSourcePi0::hPt2Pi0EB_
MonitorElement * hPt2Pi0EB_
Pt of the 2nd most energetic Pi0 photon in EB.
Definition: DQMSourcePi0.h:143
DQMSourcePi0::hiYDistrEEeta_
MonitorElement * hiYDistrEEeta_
Distribution of rechits in iy EE (eta)
Definition: DQMSourcePi0.h:68
DQMSourcePi0::hPtEtaEE_
MonitorElement * hPtEtaEE_
Eta Pt in EE.
Definition: DQMSourcePi0.h:164
DQMSourcePi0::seleXtalMinEnergyEndCap_
double seleXtalMinEnergyEndCap_
Definition: DQMSourcePi0.h:214
PVValHelper::dy
Definition: PVValidationHelpers.h:49
DQMSourcePi0::seleS4S9GammaEtaEndCap_
double seleS4S9GammaEtaEndCap_
Definition: DQMSourcePi0.h:258
edm::EventSetup
Definition: EventSetup.h:57
DQMSourcePi0::folderName_
std::string folderName_
DQM folder name.
Definition: DQMSourcePi0.h:285
CaloSubdetectorTopology
Definition: CaloSubdetectorTopology.h:17
DQMSourcePi0::selePtPi0EndCap_
double selePtPi0EndCap_
Definition: DQMSourcePi0.h:235
DQMSourcePi0::hPtPi0EE_
MonitorElement * hPtPi0EE_
Pi0 Pt in EE.
Definition: DQMSourcePi0.h:158
edm::LogError
Log< level::Error, false > LogError
Definition: MessageLogger.h:123
DetId::Ecal
Definition: DetId.h:27
DQMSourcePi0::clusSeedThrEndCap_
double clusSeedThrEndCap_
Definition: DQMSourcePi0.h:220
get
#define get
DQMSourcePi0::hMinvEtaEE_
MonitorElement * hMinvEtaEE_
Eta invariant mass in EE.
Definition: DQMSourcePi0.h:128
EEDetId::iy
int iy() const
Definition: EEDetId.h:83
DQMSourcePi0::seleXtalMinEnergy_
double seleXtalMinEnergy_
Definition: DQMSourcePi0.h:213
DQMSourcePi0::seleS4S9Gamma_
double seleS4S9Gamma_
Definition: DQMSourcePi0.h:227
DQMSourcePi0::hS4S92EtaEE_
MonitorElement * hS4S92EtaEE_
S4S9 of the 2nd most energetic eta photon EE.
Definition: DQMSourcePi0.h:200
EcalRecHit.h
DQMSourcePi0::hS4S91Pi0EB_
MonitorElement * hS4S91Pi0EB_
S4S9 of the 1st most energetic pi0 photon.
Definition: DQMSourcePi0.h:179
DQMSourcePi0::hEventEnergyEBeta_
MonitorElement * hEventEnergyEBeta_
Distribution of total event energy EB (eta)
Definition: DQMSourcePi0.h:89
groupFilesInBlocks.nn
nn
Definition: groupFilesInBlocks.py:150
CaloSubdetectorTopology::getWindow
virtual std::vector< DetId > getWindow(const DetId &id, const int &northSouthSize, const int &eastWestSize) const
Definition: CaloSubdetectorTopology.cc:4
DQMSourcePi0::clusSeedThr_
double clusSeedThr_
Definition: DQMSourcePi0.h:216
EcalPreshower
Definition: EcalSubdetector.h:10
DQMSourcePi0::selePtEtaEndCap_
double selePtEtaEndCap_
Definition: DQMSourcePi0.h:260
DQMSourcePi0::productMonitoredEBpi0_
edm::EDGetTokenT< EcalRecHitCollection > productMonitoredEBpi0_
object to monitor
Definition: DQMSourcePi0.h:203
DQMSourcePi0::seleMinvMinEtaEndCap_
double seleMinvMinEtaEndCap_
Definition: DQMSourcePi0.h:262
DQMSourcePi0::fileName_
std::string fileName_
Output file name if required.
Definition: DQMSourcePi0.h:297
std
Definition: JetResolutionObject.h:76
DQMSourcePi0::productMonitoredEEeta_
edm::EDGetTokenT< EcalRecHitCollection > productMonitoredEEeta_
Definition: DQMSourcePi0.h:208
RecoEcalCandidate.h
DQMSourcePi0::hMeanRecHitEnergyEBpi0_
MonitorElement * hMeanRecHitEnergyEBpi0_
Distribution of Mean energy per rechit EB (pi0)
Definition: DQMSourcePi0.h:107
DetId.h
triggerObjects_cff.id
id
Definition: triggerObjects_cff.py:31
DQMSourcePi0::selePi0Iso_
double selePi0Iso_
Definition: DQMSourcePi0.h:230
DQMSourcePi0::analyze
void analyze(const edm::Event &e, const edm::EventSetup &c) override
Definition: DQMSourcePi0.cc:305
DQMSourcePi0::saveToFile_
bool saveToFile_
Write to file.
Definition: DQMSourcePi0.h:288
DQMSourcePi0::hIsoPi0EE_
MonitorElement * hIsoPi0EE_
Pi0 Iso EE.
Definition: DQMSourcePi0.h:170
Point3D.h
DQMSourcePi0::selePi0BeltDR_
double selePi0BeltDR_
Definition: DQMSourcePi0.h:228
EventSetup.h
DQMSourcePi0::hIsoEtaEE_
MonitorElement * hIsoEtaEE_
Eta Iso EE.
Definition: DQMSourcePi0.h:176
CaloSubdetectorGeometry
Definition: CaloSubdetectorGeometry.h:22
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
DQMSourcePi0::hMeanRecHitEnergyEBeta_
MonitorElement * hMeanRecHitEnergyEBeta_
Distribution of Mean energy per rechit EB (eta)
Definition: DQMSourcePi0.h:113
DQMSourcePi0::hEventEnergyEEpi0_
MonitorElement * hEventEnergyEEpi0_
Distribution of total event energy EE (pi0)
Definition: DQMSourcePi0.h:86
DQMSourcePi0::hIsoPi0EB_
MonitorElement * hIsoPi0EB_
Pi0 Iso EB.
Definition: DQMSourcePi0.h:167
dqm::implementation::IBooker
Definition: DQMStore.h:43
RecoEcalCandidateFwd.h
DQMSourcePi0::selePtGammaEndCap_
double selePtGammaEndCap_
for pi0->gg endcap
Definition: DQMSourcePi0.h:234
DQMSourcePi0::productMonitoredEEpi0_
edm::EDGetTokenT< EcalRecHitCollection > productMonitoredEEpi0_
object to monitor
Definition: DQMSourcePi0.h:207
EBDetId::iphi
int iphi() const
get the crystal iphi
Definition: EBDetId.h:51
DQMSourcePi0::hiPhiDistrEBpi0_
MonitorElement * hiPhiDistrEBpi0_
Distribution of rechits in iPhi (pi0)
Definition: DQMSourcePi0.h:47
funct::abs
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
ParameterSet.h
DQMSourcePi0::detIdEERecHits
std::vector< EEDetId > detIdEERecHits
Definition: DQMSourcePi0.h:278
dqmiolumiharvest.j
j
Definition: dqmiolumiharvest.py:66
JetChargeProducer_cfi.exp
exp
Definition: JetChargeProducer_cfi.py:6
DQMSourcePi0::hPt2EtaEE_
MonitorElement * hPt2EtaEE_
Pt of the 2nd most energetic Eta photon in EE.
Definition: DQMSourcePi0.h:152
DQMSourcePi0::isMonEEpi0_
bool isMonEEpi0_
Definition: DQMSourcePi0.h:293
DQMSourcePi0::selePtPi0_
double selePtPi0_
Definition: DQMSourcePi0.h:224
DQMSourcePi0::clusEtaSize_
int clusEtaSize_
Definition: DQMSourcePi0.h:217
edm::HandleBase::isValid
bool isValid() const
Definition: HandleBase.h:70
DQMSourcePi0::seleMinvMinPi0_
double seleMinvMinPi0_
Definition: DQMSourcePi0.h:226
DQMSourcePi0::seleEtaIso_
double seleEtaIso_
Definition: DQMSourcePi0.h:252
edm::Event
Definition: Event.h:73
DQMSourcePi0::seleMinvMaxPi0EndCap_
double seleMinvMaxPi0EndCap_
Definition: DQMSourcePi0.h:236
DQMSourcePi0::eventCounter_
int eventCounter_
Definition: DQMSourcePi0.h:43
DQMSourcePi0::seleS4S9GammaEta_
double seleS4S9GammaEta_
Definition: DQMSourcePi0.h:247
DQMSourcePi0::hiXDistrEEpi0_
MonitorElement * hiXDistrEEpi0_
Distribution of rechits in ix EE (pi0)
Definition: DQMSourcePi0.h:50
DQMSourcePi0::hPtPi0EB_
MonitorElement * hPtPi0EB_
Pi0 Pt in EB.
Definition: DQMSourcePi0.h:155
DQMSourcePi0::hIsoEtaEB_
MonitorElement * hIsoEtaEB_
Eta Iso EB.
Definition: DQMSourcePi0.h:173
DQMSourcePi0::hPt1Pi0EE_
MonitorElement * hPt1Pi0EE_
Pt of the 1st most energetic Pi0 photon in EE.
Definition: DQMSourcePi0.h:134
dqm::impl::MonitorElement::setAxisTitle
virtual void setAxisTitle(const std::string &title, int axis=1)
set x-, y- or z-axis title (axis=1, 2, 3 respectively)
Definition: MonitorElement.cc:800
DQMSourcePi0::seleMinvMinEta_
double seleMinvMinEta_
Definition: DQMSourcePi0.h:250
DQMSourcePi0::isMonEBpi0_
bool isMonEBpi0_
which subdet will be monitored
Definition: DQMSourcePi0.h:291
edm::InputTag
Definition: InputTag.h:15
PVValHelper::dx
Definition: PVValidationHelpers.h:48
DQMSourcePi0::hPt1Pi0EB_
MonitorElement * hPt1Pi0EB_
Pt of the 1st most energetic Pi0 photon in EB.
Definition: DQMSourcePi0.h:131
DQMSourcePi0::hS4S92EtaEB_
MonitorElement * hS4S92EtaEB_
S4S9 of the 2nd most energetic eta photon.
Definition: DQMSourcePi0.h:197
DQMSourcePi0::hS4S91EtaEB_
MonitorElement * hS4S91EtaEB_
S4S9 of the 1st most energetic eta photon.
Definition: DQMSourcePi0.h:185
dqm::implementation::IBooker::book1D
MonitorElement * book1D(TString const &name, TString const &title, int const nchX, double const lowX, double const highX, FUNC onbooking=NOOP())
Definition: DQMStore.h:98
edm::SortedCollection::empty
bool empty() const
Definition: SortedCollection.h:210