CMS 3D CMS Logo

EnergyScaleAnalyzer.cc
Go to the documentation of this file.
1 // -*- C++ -*-
2 //
3 // Package: EnergyScaleAnalyzer
4 // Class: EnergyScaleAnalyzer
5 //
14 // Original Author: Keti Kaadze
15 // Created: Thu Jun 21 08:59:42 CDT 2007
16 //
17 
18 //#include "RecoEcal/EnergyScaleAnalyzer/interface/EnergyScaleAnalyzer.h"
21 
22 // Framework
33 
34 // Geometry
41 
42 #include "TFile.h"
43 // Reconstruction classes
52 
56 
64 
65 #include "TString.h"
67 #include <fstream>
68 #include <iomanip>
69 #include <ios>
70 #include <iostream>
71 #include <map>
72 
73 //========================================================================
75 //========================================================================
76 {
77  hepMCLabel_ = consumes<edm::HepMCProduct>(ps.getParameter<std::string>("hepMCLabel"));
78  hybridSuperClusters_token = consumes<reco::SuperClusterCollection>(
79  ps.getUntrackedParameter<edm::InputTag>("hybridSuperClusters", edm::InputTag("hybridSuperClusters")));
80  dynamicHybridSuperClusters_token = consumes<reco::SuperClusterCollection>(ps.getUntrackedParameter<edm::InputTag>(
81  "dynamicHybridSuperClusters", edm::InputTag("dynamicHybridSuperClusters")));
82  correctedHybridSuperClusters_token = consumes<reco::SuperClusterCollection>(ps.getUntrackedParameter<edm::InputTag>(
83  "correctedHybridSuperClusters", edm::InputTag("correctedHybridSuperClusters")));
85  consumes<reco::SuperClusterCollection>(ps.getUntrackedParameter<edm::InputTag>(
86  "correctedDynamicHybridSuperClusters", edm::InputTag("correctedDynamicHybridSuperClusters")));
87  correctedFixedMatrixSuperClustersWithPreshower_token = consumes<reco::SuperClusterCollection>(
88  ps.getUntrackedParameter<edm::InputTag>("correctedFixedMatrixSuperClustersWithPreshower",
89  edm::InputTag("correctedFixedMatrixSuperClustersWithPreshower")));
91  consumes<reco::SuperClusterCollection>(ps.getUntrackedParameter<edm::InputTag>(
92  "fixedMatrixSuperClustersWithPreshower", edm::InputTag("fixedMatrixSuperClustersWithPreshower")));
93 
94  outputFile_ = ps.getParameter<std::string>("outputFile");
95  rootFile_ = TFile::Open(outputFile_.c_str(),
96  "RECREATE"); // open output file to store histograms
97 
98  evtN = 0;
99 }
100 
101 //========================================================================
103 //========================================================================
104 {
105  delete rootFile_;
106 }
107 
108 //========================================================================
110  //========================================================================
111 
112  mytree_ = new TTree("energyScale", "");
113  TString treeVariables =
114  "mc_npar/I:parID:mc_sep/"
115  "F:mc_e:mc_et:mc_phi:mc_eta:mc_theta:"; // MC information
116  treeVariables += "em_dR/F:"; // MC <-> EM matching information
117  treeVariables +=
118  "em_isInCrack/I:em_scType:em_e/F:em_et:em_phi:em_eta:em_theta:em_nCell/"
119  "I:em_nBC:"; // EM SC info
120  treeVariables += "em_pet/F:em_pe:em_peta:em_ptheta:"; // EM SC physics (eta corrected
121  // information)
122 
123  treeVariables += "emCorr_e/F:emCorr_et:emCorr_eta:emCorr_phi:emCorr_theta:"; // CMSSW
124  // standard
125  // corrections
126  treeVariables += "emCorr_pet/F:emCorr_peta:emCorr_ptheta:"; // CMSSW standard physics
127 
128  treeVariables += "em_pw/F:em_ew:em_br"; // EM widths pw -- phiWidth, ew --
129  // etaWidth, ratios of pw/ew
130 
131  mytree_->Branch("energyScale", &(tree_.mc_npar), treeVariables);
132 }
133 
134 //========================================================================
136  using namespace edm; // needed for all fwk related classes
137  using namespace std;
138 
139  // std::cout << "Proceccing event # " << ++evtN << std::endl;
140 
141  // Get containers for MC truth, SC etc.
142  // ===================================================
143  // =======================================================================================
144  // =======================================================================================
147 
148  Labels l;
150 
151  const HepMC::GenEvent *genEvent = hepMC->GetEvent();
152  if (!(hepMC.isValid())) {
153  LogInfo("EnergyScaleAnalyzer") << "Could not get MC Product!";
154  return;
155  }
156 
157  //=======================For Vertex correction
158  std::vector<Handle<HepMCProduct>> evtHandles;
159  evt.getManyByType(evtHandles);
160 
161  for (unsigned int i = 0; i < evtHandles.size(); ++i) {
162  if (evtHandles[i].isValid()) {
163  const HepMC::GenEvent *evt = evtHandles[i]->GetEvent();
164 
165  // take only 1st vertex for now - it's been tested only of PGuns...
166  //
167  HepMC::GenEvent::vertex_const_iterator vtx = evt->vertices_begin();
168  if (evtHandles[i].provenance()->moduleLabel() == std::string(l.module)) {
169  // Corrdinates of Vertex w.r.o. the point (0,0,0)
170  xVtx_ = 0.1 * (*vtx)->position().x();
171  yVtx_ = 0.1 * (*vtx)->position().y();
172  zVtx_ = 0.1 * (*vtx)->position().z();
173  }
174  }
175  }
176  //==============================================================================
177  // Get handle to SC collections
178 
180  try {
182  } catch (cms::Exception &ex) {
183  edm::LogError("EnergyScaleAnalyzer") << "Can't get collection with producer hybridSuperClusters.";
184  }
185 
187  try {
189  } catch (cms::Exception &ex) {
190  edm::LogError("EnergyScaleAnalyzer") << "Can't get collection with producer dynamicHybridSuperClusters.";
191  }
192 
193  Handle<reco::SuperClusterCollection> fixedMatrixSuperClustersWithPS;
194  try {
195  evt.getByToken(fixedMatrixSuperClustersWithPreshower_token, fixedMatrixSuperClustersWithPS);
196  } catch (cms::Exception &ex) {
197  edm::LogError("EnergyScaleAnalyzer") << "Can't get collection with producer "
198  "fixedMatrixSuperClustersWithPreshower.";
199  }
200 
201  // Corrected collections
202  Handle<reco::SuperClusterCollection> correctedHybridSC;
203  try {
204  evt.getByToken(correctedHybridSuperClusters_token, correctedHybridSC);
205  } catch (cms::Exception &ex) {
206  edm::LogError("EnergyScaleAnalyzer") << "Can't get collection with producer correctedHybridSuperClusters.";
207  }
208 
209  Handle<reco::SuperClusterCollection> correctedDynamicHybridSC;
210  try {
211  evt.getByToken(correctedDynamicHybridSuperClusters_token, correctedDynamicHybridSC);
212  } catch (cms::Exception &ex) {
213  edm::LogError("EnergyScaleAnalyzer") << "Can't get collection with producer "
214  "correctedDynamicHybridSuperClusters.";
215  }
216 
217  Handle<reco::SuperClusterCollection> correctedFixedMatrixSCWithPS;
218  try {
219  evt.getByToken(correctedFixedMatrixSuperClustersWithPreshower_token, correctedFixedMatrixSCWithPS);
220  } catch (cms::Exception &ex) {
221  edm::LogError("EnergyScaleAnalyzer") << "Can't get collection with producer "
222  "correctedFixedMatrixSuperClustersWithPreshower.";
223  }
224 
226  const reco::SuperClusterCollection *hSC = hybridSuperClusters.product();
227  const reco::SuperClusterCollection *fmSC = fixedMatrixSuperClustersWithPS.product();
228  const reco::SuperClusterCollection *chSC = correctedHybridSC.product();
229  const reco::SuperClusterCollection *cdSC = correctedDynamicHybridSC.product();
230  const reco::SuperClusterCollection *cfmSC = correctedFixedMatrixSCWithPS.product();
231 
232  // ----------------------- Print outs for debugging
233  /*
234  std::cout << "MC truth" << std::endl;
235  int counterI = 0;
236  for( HepMC::GenEvent::particle_const_iterator p =
237  genEvent->particles_begin(); p != genEvent->particles_end(); ++p ) { if (
238  fabs((*p)->momentum().eta()) < 1.5 ) { std::cout << ++counterI << " " <<
239  (*p)->momentum().e() << " "
240  << (*p)->momentum().phi() << " " << (*p)->momentum().eta() <<
241  std::endl;
242  }
243  }
244 
245  std::cout << "Standard clusters" << std::endl;
246  counterI = 0;
247  for(reco::SuperClusterCollection::const_iterator em = hSC->begin();
248  em != hSC->end(); ++em )
249  std::cout << ++counterI << " " << em->energy() << " " <<
250  em->position().phi() << " " << em->position().eta() << std::endl;
251 
252  std::cout << "Dynamic clusters" << std::endl;
253  counterI = 0;
254  for(reco::SuperClusterCollection::const_iterator em = dSC->begin();
255  em != dSC->end(); ++em )
256  std::cout << ++counterI << " " << em->energy() << " " <<
257  em->position().phi() << " " << em->position().eta() << std::endl;
258 
259  std::cout << "FixedMatrix clusters with PS" << std::endl;
260  counterI = 0;
261  for(reco::SuperClusterCollection::const_iterator em = fmSC->begin();
262  em != fmSC->end(); ++em )
263  std::cout << ++counterI << " " << em->energy() << " " <<
264  em->position().phi() << " " << em->position().eta() << std::endl;
265  */
266  // -----------------------------
267  //=====================================================================
268  // All containers are loaded, perform the analysis
269  //====================================================================
270 
271  // --------------------------- Store MC particles
272  HepMC::GenEvent::particle_const_iterator p = genEvent->particles_begin();
273 
274  // Search for MC electrons or photons that satisfy the criteria
275  float min_eT = 5;
276  float max_eta = 2.5;
277 
278  std::vector<HepMC::GenParticle *> mcParticles;
279  // int counter = 0;
280  for (HepMC::GenEvent::particle_const_iterator p = genEvent->particles_begin(); p != genEvent->particles_end(); ++p) {
281  // LogInfo("EnergyScaleAnalyzer") << "Particle " << ++counter
282  //<< " PDG ID = " << (*p)->pdg_id() << " pT = " << (*p)->momentum().perp();
283  // require photon or electron
284  if ((*p)->pdg_id() != 22 && abs((*p)->pdg_id()) != 11)
285  continue;
286 
287  // require selection criteria
288  bool satisfySelectionCriteria = (*p)->momentum().perp() > min_eT && fabs((*p)->momentum().eta()) < max_eta;
289 
290  if (!satisfySelectionCriteria)
291  continue;
292 
293  // EM MC particle is found, save it in the vector
294  mcParticles.push_back(*p);
295  }
296  // separation in dR between 2 first MC particles
297  // should not be used for MC samples with > 2 em objects generated!
298  if (mcParticles.size() == 2) {
299  HepMC::GenParticle *mc1 = mcParticles[0];
300  HepMC::GenParticle *mc2 = mcParticles[1];
301  tree_.mc_sep =
302  kinem::delta_R(mc1->momentum().eta(), mc1->momentum().phi(), mc2->momentum().eta(), mc2->momentum().phi());
303  } else
304  tree_.mc_sep = -100;
305 
306  // now loop over MC particles, find the match with SC and do everything we
307  // need then save info in the tree for every MC particle
308  for (std::vector<HepMC::GenParticle *>::const_iterator p = mcParticles.begin(); p != mcParticles.end(); ++p) {
309  HepMC::GenParticle *mc = *p;
310 
311  // Fill MC information
312  tree_.mc_npar = mcParticles.size();
313  tree_.parID = mc->pdg_id();
314  tree_.mc_e = mc->momentum().e();
315  tree_.mc_et = mc->momentum().e() * sin(mc->momentum().theta());
316  tree_.mc_phi = mc->momentum().phi();
317  tree_.mc_eta = mc->momentum().eta();
318  tree_.mc_theta = mc->momentum().theta();
319 
320  // Call function to fill tree
321  // scType coprreponds:
322  // HybridSuperCluster -- 1
323  // DynamicHybridSuperCluster -- 2
324  // FixedMatrixSuperClustersWithPreshower -- 3
325 
326  fillTree(hSC, chSC, mc, tree_, xVtx_, yVtx_, zVtx_, 1);
327  // std::cout << " TYPE " << 1 << " : " << tree_.em_e << " : " <<
328  // tree_.em_phi << " : " << tree_.em_eta << std::endl;
329 
330  fillTree(dSC, cdSC, mc, tree_, xVtx_, yVtx_, zVtx_, 2);
331  // std::cout << " TYPE " << 2 << " : " << tree_.em_e << " : " <<
332  // tree_.em_phi << " : " << tree_.em_eta << std::endl;
333 
334  fillTree(fmSC, cfmSC, mc, tree_, xVtx_, yVtx_, zVtx_, 3);
335  // std::cout << " TYPE " << 3 << " : " << tree_.em_e << " : " <<
336  // tree_.em_phi << " : " << tree_.em_eta << std::endl;
337 
338  // mytree_->Fill();
339  } // loop over particles
340 }
341 
343  const reco::SuperClusterCollection *corrSCColl,
346  float xV,
347  float yV,
348  float zV,
349  int scType) {
350  // ----------------------------- SuperClusters before energy correction
351  reco::SuperClusterCollection::const_iterator em = scColl->end();
352  float energyMax = -100.0; // dummy energy of the matched SC
353  for (reco::SuperClusterCollection::const_iterator aClus = scColl->begin(); aClus != scColl->end(); ++aClus) {
354  // check the matching
355  float dR =
356  kinem::delta_R(mc->momentum().eta(), mc->momentum().phi(), aClus->position().eta(), aClus->position().phi());
357  if (dR < 0.4) { // a rather loose matching cut
358  float energy = aClus->energy();
359  if (energy < energyMax)
360  continue;
361  energyMax = energy;
362  em = aClus;
363  }
364  }
365 
366  if (em == scColl->end()) {
367  // std::cout << "No matching SC with type " << scType << " was found for
368  // MC particle! " << std::endl; std::cout << "Going to next type of SC.
369  // " << std::endl;
370  return;
371  }
372  // ------------
373 
374  tree_.em_scType = scType;
375 
376  tree_.em_isInCrack = 0;
377  double emAbsEta = fabs(em->position().eta());
378  // copied from
379  // RecoEgama/EgammaElectronAlgos/src/EgammaElectronClassification.cc
380  if (emAbsEta < 0.018 || (emAbsEta > 0.423 && emAbsEta < 0.461) || (emAbsEta > 0.770 && emAbsEta < 0.806) ||
381  (emAbsEta > 1.127 && emAbsEta < 1.163) || (emAbsEta > 1.460 && emAbsEta < 1.558))
382  tree_.em_isInCrack = 1;
383 
384  tree_.em_dR = kinem::delta_R(mc->momentum().eta(), mc->momentum().phi(), em->position().eta(), em->position().phi());
385  tree_.em_e = em->energy();
386  tree_.em_et = em->energy() * sin(em->position().theta());
387  tree_.em_phi = em->position().phi();
388  tree_.em_eta = em->position().eta();
389  tree_.em_theta = em->position().theta();
390  tree_.em_nCell = em->size();
391  tree_.em_nBC = em->clustersSize();
392 
393  // Get physics e, et etc:
394  // Coordinates of EM object with respect of the point (0,0,0)
395  xClust_zero_ = em->position().x();
396  yClust_zero_ = em->position().y();
397  zClust_zero_ = em->position().z();
398  // Coordinates of EM object w.r.o. the Vertex position
399  xClust_vtx_ = xClust_zero_ - xV;
400  yClust_vtx_ = yClust_zero_ - yV;
401  zClust_vtx_ = zClust_zero_ - zV;
402 
403  energyMax_ = em->energy();
404  thetaMax_ = em->position().theta();
405  etaMax_ = em->position().eta();
406  phiMax_ = em->position().phi();
408  if (phiMax_ < 0)
409  phiMax_ += 2 * 3.14159;
410 
413  etaMaxVtx_ = -log(tan(thetaMaxVtx_ / 2));
416  if (phiMaxVtx_ < 0)
417  phiMaxVtx_ += 2 * 3.14159;
418  //=============================
419  // parametres of EM object after vertex correction
424 
425  //------------------------------- Get SC after energy correction
426  em = corrSCColl->end();
427  energyMax = -100.0; // dummy energy of the matched SC
428  for (reco::SuperClusterCollection::const_iterator aClus = corrSCColl->begin(); aClus != corrSCColl->end(); ++aClus) {
429  // check the matching
430  float dR =
431  kinem::delta_R(mc->momentum().eta(), mc->momentum().phi(), aClus->position().eta(), aClus->position().phi());
432  if (dR < 0.4) {
433  float energy = aClus->energy();
434  if (energy < energyMax)
435  continue;
436  energyMax = energy;
437  em = aClus;
438  }
439  }
440 
441  if (em == corrSCColl->end()) {
442  // std::cout << "No matching corrected SC with type " << scType << " was
443  // found for MC particle! " << std::endl; std::cout << "Going to next
444  // type of SC. " << std::endl;
445  return;
446  }
447  // ------------
448 
450  tree_.emCorr_e = em->energy();
451  tree_.emCorr_et = em->energy() * sin(em->position().theta());
452  tree_.emCorr_phi = em->position().phi();
453  tree_.emCorr_eta = em->position().eta();
454  tree_.emCorr_theta = em->position().theta();
455 
456  // =========== Eta and Theta wrt Vertex does not change after energy
457  // corrections are applied
458  // =========== So, no need to calculate them again
459 
463 
464  tree_.em_pw = em->phiWidth();
465  tree_.em_ew = em->etaWidth();
467 
468  mytree_->Fill();
469 }
470 
471 //==========================================================================
473  //========================================================================
474  // Fill ROOT tree
475  rootFile_->Write();
476 }
477 
EnergyScaleAnalyzer::tree_structure_::em_nBC
int em_nBC
Definition: EnergyScaleAnalyzer.h:96
EnergyScaleAnalyzer::EnergyScaleAnalyzer
EnergyScaleAnalyzer(const edm::ParameterSet &)
Definition: EnergyScaleAnalyzer.cc:74
EnergyScaleAnalyzer::eTMax_
float eTMax_
Definition: EnergyScaleAnalyzer.h:138
HLT_FULL_cff.max_eta
max_eta
Definition: HLT_FULL_cff.py:47170
EnergyScaleAnalyzer::tree_structure_::em_eta
float em_eta
Definition: EnergyScaleAnalyzer.h:93
EnergyScaleAnalyzer::tree_structure_::parID
int parID
Definition: EnergyScaleAnalyzer.h:76
Handle.h
mps_fire.i
i
Definition: mps_fire.py:428
PositionCalc.h
EnergyScaleAnalyzer::correctedFixedMatrixSuperClustersWithPreshower_token
edm::EDGetTokenT< reco::SuperClusterCollection > correctedFixedMatrixSuperClustersWithPreshower_token
Definition: EnergyScaleAnalyzer.h:65
EnergyScaleAnalyzer::tree_structure_::em_et
float em_et
Definition: EnergyScaleAnalyzer.h:91
MessageLogger.h
EnergyScaleAnalyzer::tree_structure_::em_peta
float em_peta
Definition: EnergyScaleAnalyzer.h:101
edm::Handle::product
T const * product() const
Definition: Handle.h:70
EnergyScaleAnalyzer::thetaMax_
float thetaMax_
Definition: EnergyScaleAnalyzer.h:144
ESHandle.h
CaloTowersParam_cfi.mc
mc
Definition: CaloTowersParam_cfi.py:8
EnergyScaleAnalyzer::rootFile_
TFile * rootFile_
Definition: EnergyScaleAnalyzer.h:69
BasicCluster.h
edm
HLT enums.
Definition: AlignableModifier.h:19
AlCaHLTBitMon_ParallelJobs.p
p
Definition: AlCaHLTBitMon_ParallelJobs.py:153
EnergyScaleAnalyzer::tree_structure_::em_dR
float em_dR
Definition: EnergyScaleAnalyzer.h:85
EnergyScaleAnalyzer::zVtx_
float zVtx_
Definition: EnergyScaleAnalyzer.h:125
EnergyScaleAnalyzer::energyMax_
float energyMax_
Definition: EnergyScaleAnalyzer.h:137
EBDetId.h
EnergyScaleAnalyzer::outputFile_
std::string outputFile_
Definition: EnergyScaleAnalyzer.h:58
EnergyScaleAnalyzer::tree_structure_::em_theta
float em_theta
Definition: EnergyScaleAnalyzer.h:94
PreshowerCluster.h
EnergyScaleAnalyzer::tree_structure_::emCorr_peta
float emCorr_peta
Definition: EnergyScaleAnalyzer.h:111
EnergyScaleAnalyzer::correctedDynamicHybridSuperClusters_token
edm::EDGetTokenT< reco::SuperClusterCollection > correctedDynamicHybridSuperClusters_token
Definition: EnergyScaleAnalyzer.h:64
edm::ParameterSet::getUntrackedParameter
T getUntrackedParameter(std::string const &, T const &) const
EDAnalyzer.h
EnergyScaleAnalyzer::tree_structure_::mc_npar
int mc_npar
Definition: EnergyScaleAnalyzer.h:75
edm::LogInfo
Log< level::Info, false > LogInfo
Definition: MessageLogger.h:125
EnergyScaleAnalyzer::thetaMaxVtx_
float thetaMaxVtx_
Definition: EnergyScaleAnalyzer.h:145
AnglesUtil.h
EnergyScaleAnalyzer::xClust_vtx_
float xClust_vtx_
Definition: EnergyScaleAnalyzer.h:131
edm::Event::getManyByType
void getManyByType(std::vector< Handle< PROD >> &results) const
Definition: Event.h:526
ClusterShapeAlgo.h
edm::Handle
Definition: AssociativeIterator.h:50
unifiedSCCollection_cfi.hybridSuperClusters
hybridSuperClusters
Definition: unifiedSCCollection_cfi.py:7
EcalRecHitCollections.h
BasicClusterFwd.h
PreshowerClusterProducer.h
HepMC::GenEvent
Definition: hepmc_rootio.cc:9
kinem::delta_R
double delta_R(double eta1, double phi1, double eta2, double phi2)
Definition: AnglesUtil.h:106
EnergyScaleAnalyzer::tree_structure_::emCorr_theta
float emCorr_theta
Definition: EnergyScaleAnalyzer.h:109
funct::sin
Sin< T >::type sin(const T &t)
Definition: Sin.h:22
reco::SuperClusterCollection
std::vector< SuperCluster > SuperClusterCollection
collection of SuperCluser objectr
Definition: SuperClusterFwd.h:9
MakerMacros.h
EnergyScaleAnalyzer::tree_structure_::em_br
float em_br
Definition: EnergyScaleAnalyzer.h:118
EnergyScaleAnalyzer::tree_structure_::emCorr_ptheta
float emCorr_ptheta
Definition: EnergyScaleAnalyzer.h:112
EnergyScaleAnalyzer::tree_structure_::em_ptheta
float em_ptheta
Definition: EnergyScaleAnalyzer.h:102
DEFINE_FWK_MODULE
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:16
EnergyScaleAnalyzer::rClust_vtx_
float rClust_vtx_
Definition: EnergyScaleAnalyzer.h:135
ClusterShapeFwd.h
mathSSE::sqrt
T sqrt(T t)
Definition: SSEVec.h:19
EnergyScaleAnalyzer::tree_structure_::emCorr_e
float emCorr_e
Definition: EnergyScaleAnalyzer.h:105
HCALHighEnergyHPDFilter_cfi.energy
energy
Definition: HCALHighEnergyHPDFilter_cfi.py:5
EcalRecHit.h
edm::Event::getByToken
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:535
EnergyScaleAnalyzer::tree_structure_
Definition: EnergyScaleAnalyzer.h:73
HybridClusterProducer.h
EnergyScaleAnalyzer::tree_structure_::mc_eta
float mc_eta
Definition: EnergyScaleAnalyzer.h:81
EnergyScaleAnalyzer.h
sistrip::SpyUtilities::isValid
const bool isValid(const Frame &aFrame, const FrameQuality &aQuality, const uint16_t aExpectedPos)
Definition: SiStripSpyUtilities.cc:124
EnergyScaleAnalyzer::tree_structure_::em_scType
int em_scType
Definition: EnergyScaleAnalyzer.h:89
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
EnergyScaleAnalyzer::analyze
void analyze(const edm::Event &, const edm::EventSetup &) override
Definition: EnergyScaleAnalyzer.cc:135
ClusterShape.h
EnergyScaleAnalyzer::hybridSuperClusters_token
edm::EDGetTokenT< reco::SuperClusterCollection > hybridSuperClusters_token
Definition: EnergyScaleAnalyzer.h:61
CaloSubdetectorGeometry.h
EnergyScaleAnalyzer
Definition: EnergyScaleAnalyzer.h:48
GsfElectronFwd.h
EnergyScaleAnalyzer::tree_structure_::em_pw
float em_pw
Definition: EnergyScaleAnalyzer.h:115
edm::ParameterSet
Definition: ParameterSet.h:47
EnergyScaleAnalyzer::yClust_vtx_
float yClust_vtx_
Definition: EnergyScaleAnalyzer.h:132
EnergyScaleAnalyzer::correctedHybridSuperClusters_token
edm::EDGetTokenT< reco::SuperClusterCollection > correctedHybridSuperClusters_token
Definition: EnergyScaleAnalyzer.h:63
Event.h
dynamicHybridSuperClusters_cfi.dynamicHybridSuperClusters
dynamicHybridSuperClusters
Definition: dynamicHybridSuperClusters_cfi.py:5
EnergyScaleAnalyzer::endJob
void endJob() override
Definition: EnergyScaleAnalyzer.cc:472
EnergyScaleAnalyzer::tree_structure_::mc_theta
float mc_theta
Definition: EnergyScaleAnalyzer.h:82
EnergyScaleAnalyzer::xClust_zero_
float xClust_zero_
Definition: EnergyScaleAnalyzer.h:127
EnergyScaleAnalyzer::evtN
int evtN
Definition: EnergyScaleAnalyzer.h:148
EnergyScaleAnalyzer::tree_structure_::em_nCell
int em_nCell
Definition: EnergyScaleAnalyzer.h:95
funct::tan
Tan< T >::type tan(const T &t)
Definition: Tan.h:22
LorentzVector.h
EnergyScaleAnalyzer::tree_structure_::em_pet
float em_pet
Definition: EnergyScaleAnalyzer.h:99
EnergyScaleAnalyzer::tree_structure_::mc_sep
float mc_sep
Definition: EnergyScaleAnalyzer.h:77
EnergyScaleAnalyzer::zClust_zero_
float zClust_zero_
Definition: EnergyScaleAnalyzer.h:129
EnergyScaleAnalyzer::fillTree
void fillTree(const reco::SuperClusterCollection *scColl, const reco::SuperClusterCollection *corrSCColl, HepMC::GenParticle *mc, tree_structure_ &tree_, float xV, float yV, float zV, int scType)
Definition: EnergyScaleAnalyzer.cc:342
IdealGeometryRecord.h
edm::EventSetup
Definition: EventSetup.h:58
EnergyScaleAnalyzer::fixedMatrixSuperClustersWithPreshower_token
edm::EDGetTokenT< reco::SuperClusterCollection > fixedMatrixSuperClustersWithPreshower_token
Definition: EnergyScaleAnalyzer.h:66
EnergyScaleAnalyzer::phiMaxVtx_
float phiMaxVtx_
Definition: EnergyScaleAnalyzer.h:143
edm::LogError
Log< level::Error, false > LogError
Definition: MessageLogger.h:123
EnergyScaleAnalyzer::dynamicHybridSuperClusters_token
edm::EDGetTokenT< reco::SuperClusterCollection > dynamicHybridSuperClusters_token
Definition: EnergyScaleAnalyzer.h:62
EnergyScaleAnalyzer::zClust_vtx_
float zClust_vtx_
Definition: EnergyScaleAnalyzer.h:133
EcalBarrelHardcodedTopology.h
cmsLHEtoEOSManager.l
l
Definition: cmsLHEtoEOSManager.py:204
edm::EDConsumerBase::labelsForToken
void labelsForToken(EDGetToken iToken, Labels &oLabels) const
Definition: EDConsumerBase.cc:338
EnergyScaleAnalyzer::xVtx_
float xVtx_
Definition: EnergyScaleAnalyzer.h:123
EnergyScaleAnalyzer::~EnergyScaleAnalyzer
~EnergyScaleAnalyzer() override
Definition: EnergyScaleAnalyzer.cc:102
EnergyScaleAnalyzer::yClust_zero_
float yClust_zero_
Definition: EnergyScaleAnalyzer.h:128
EnergyScaleAnalyzer::etaMax_
float etaMax_
Definition: EnergyScaleAnalyzer.h:140
CaloCellGeometry.h
EnergyScaleAnalyzer::hepMCLabel_
edm::EDGetTokenT< edm::HepMCProduct > hepMCLabel_
Definition: EnergyScaleAnalyzer.h:60
EnergyScaleAnalyzer::tree_structure_::emCorr_pet
float emCorr_pet
Definition: EnergyScaleAnalyzer.h:110
GenParticle.GenParticle
GenParticle
Definition: GenParticle.py:18
std
Definition: JetResolutionObject.h:76
extraflags_cff.vtx
vtx
Definition: extraflags_cff.py:18
genWeightsTable_cfi.genEvent
genEvent
Definition: genWeightsTable_cfi.py:4
Frameworkfwd.h
SuperCluster.h
CaloGeometry.h
EnergyScaleAnalyzer::yVtx_
float yVtx_
Definition: EnergyScaleAnalyzer.h:124
EnergyScaleAnalyzer::tree_structure_::mc_e
float mc_e
Definition: EnergyScaleAnalyzer.h:78
EventSetup.h
EnergyScaleAnalyzer::mytree_
TTree * mytree_
Definition: EnergyScaleAnalyzer.h:72
EnergyScaleAnalyzer::beginJob
void beginJob() override
Definition: EnergyScaleAnalyzer.cc:109
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
EnergyScaleAnalyzer::tree_structure_::em_isInCrack
int em_isInCrack
Definition: EnergyScaleAnalyzer.h:88
Exception.h
dqm-mbProfile.log
log
Definition: dqm-mbProfile.py:17
EnergyScaleAnalyzer::etaMaxVtx_
float etaMaxVtx_
Definition: EnergyScaleAnalyzer.h:141
EnergyScaleAnalyzer::tree_structure_::em_phi
float em_phi
Definition: EnergyScaleAnalyzer.h:92
EnergyScaleAnalyzer::phiMax_
float phiMax_
Definition: EnergyScaleAnalyzer.h:142
EnergyScaleAnalyzer::tree_structure_::emCorr_phi
float emCorr_phi
Definition: EnergyScaleAnalyzer.h:108
cms::Exception
Definition: Exception.h:70
funct::abs
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
EnergyScaleAnalyzer::tree_structure_::em_pe
float em_pe
Definition: EnergyScaleAnalyzer.h:100
HGC3DClusterGenMatchSelector_cfi.dR
dR
Definition: HGC3DClusterGenMatchSelector_cfi.py:7
EnergyScaleAnalyzer::eTMaxVtx_
float eTMaxVtx_
Definition: EnergyScaleAnalyzer.h:139
ParameterSet.h
HerwigMaxPtPartonFilter_cfi.moduleLabel
moduleLabel
Definition: HerwigMaxPtPartonFilter_cfi.py:4
EnergyScaleAnalyzer::tree_structure_::emCorr_eta
float emCorr_eta
Definition: EnergyScaleAnalyzer.h:107
HepMCProduct.h
EnergyScaleAnalyzer::tree_structure_::mc_phi
float mc_phi
Definition: EnergyScaleAnalyzer.h:80
EnergyScaleAnalyzer::tree_structure_::mc_et
float mc_et
Definition: EnergyScaleAnalyzer.h:79
edm::Event
Definition: Event.h:73
EnergyScaleAnalyzer::tree_structure_::emCorr_et
float emCorr_et
Definition: EnergyScaleAnalyzer.h:106
GlobalPoint.h
EnergyScaleAnalyzer::tree_structure_::em_ew
float em_ew
Definition: EnergyScaleAnalyzer.h:116
edm::InputTag
Definition: InputTag.h:15
BasicClusterShapeAssociation.h
EnergyScaleAnalyzer::tree_
tree_structure_ tree_
Definition: EnergyScaleAnalyzer.h:120
MuonClassifier_cff.hepMC
hepMC
Definition: MuonClassifier_cff.py:13
EnergyScaleAnalyzer::tree_structure_::em_e
float em_e
Definition: EnergyScaleAnalyzer.h:90
edm::ProductLabels
Definition: ProductLabels.h:4