CMS 3D CMS Logo

List of all members | Public Member Functions | Protected Member Functions | Private Types | Private Attributes
EcalSimHitsValidation Class Reference

#include <EcalSimHitsValidation.h>

Inheritance diagram for EcalSimHitsValidation:
edm::EDAnalyzer edm::EDConsumerBase

Public Member Functions

 EcalSimHitsValidation (const edm::ParameterSet &ps)
 Constructor. More...
 
 ~EcalSimHitsValidation () override
 Destructor. More...
 
- Public Member Functions inherited from edm::EDAnalyzer
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
 EDAnalyzer ()
 
SerialTaskQueueglobalLuminosityBlocksQueue ()
 
SerialTaskQueueglobalRunsQueue ()
 
ModuleDescription const & moduleDescription () const
 
std::string workerType () const
 
 ~EDAnalyzer () override
 
- Public Member Functions inherited from edm::EDConsumerBase
std::vector< ConsumesInfoconsumesInfo () const
 
void convertCurrentProcessAlias (std::string const &processName)
 Convert "@currentProcess" in InputTag process names to the actual current process name. More...
 
 EDConsumerBase ()
 
 EDConsumerBase (EDConsumerBase const &)=delete
 
 EDConsumerBase (EDConsumerBase &&)=default
 
ESProxyIndex const * esGetTokenIndices (edm::Transition iTrans) const
 
ProductResolverIndexAndSkipBit indexFrom (EDGetToken, BranchType, TypeID const &) const
 
void itemsMayGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
void itemsToGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
std::vector< ProductResolverIndexAndSkipBit > const & itemsToGetFrom (BranchType iType) const
 
void labelsForToken (EDGetToken iToken, Labels &oLabels) const
 
void modulesWhoseProductsAreConsumed (std::vector< ModuleDescription const * > &modules, ProductRegistry const &preg, std::map< std::string, ModuleDescription const * > const &labelsToDesc, std::string const &processName) const
 
EDConsumerBase const & operator= (EDConsumerBase const &)=delete
 
EDConsumerBaseoperator= (EDConsumerBase &&)=default
 
bool registeredToConsume (ProductResolverIndex, bool, BranchType) const
 
bool registeredToConsumeMany (TypeID const &, BranchType) const
 
ProductResolverIndexAndSkipBit uncheckedIndexFrom (EDGetToken) const
 
void updateLookup (BranchType iBranchType, ProductResolverIndexHelper const &, bool iPrefetchMayGet)
 
void updateLookup (eventsetup::ESRecordsToProxyIndices const &)
 
virtual ~EDConsumerBase () noexcept(false)
 

Protected Member Functions

void analyze (const edm::Event &e, const edm::EventSetup &c) override
 Analyze. More...
 
void beginJob () override
 
void endJob (void) override
 
- Protected Member Functions inherited from edm::EDConsumerBase
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
EDGetToken consumes (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken consumes (TypeToGet const &id, edm::InputTag const &tag)
 
ConsumesCollector consumesCollector ()
 Use a ConsumesCollector to gather consumes information from helper functions. More...
 
template<typename ProductType , BranchType B = InEvent>
void consumesMany ()
 
void consumesMany (const TypeToGet &id)
 
template<BranchType B>
void consumesMany (const TypeToGet &id)
 
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes ()
 
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes (ESInputTag const &tag)
 
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > mayConsume (edm::InputTag const &tag)
 
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 

Private Types

typedef std::map< uint32_t, float, std::less< uint32_t > > MapType
 

Private Attributes

DQMStoredbe_
 
edm::EDGetTokenT< edm::PCaloHitContainerEBHitsCollectionToken
 
edm::EDGetTokenT< edm::PCaloHitContainerEEHitsCollectionToken
 
edm::EDGetTokenT< edm::PCaloHitContainerESHitsCollectionToken
 
std::string g4InfoLabel
 
edm::EDGetTokenT< edm::HepMCProductHepMCToken
 
MonitorElementmeEBEnergyFraction_
 
MonitorElementmeEEEnergyFraction_
 
MonitorElementmeESEnergyFraction_
 
MonitorElementmeGunEnergy_
 
MonitorElementmeGunEta_
 
MonitorElementmeGunPhi_
 
std::string outputFile_
 
bool verbose_
 

Additional Inherited Members

- Public Types inherited from edm::EDAnalyzer
typedef EDAnalyzer ModuleType
 
- Public Types inherited from edm::EDConsumerBase
typedef ProductLabels Labels
 
- Static Public Member Functions inherited from edm::EDAnalyzer
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &)
 
static bool wantsGlobalLuminosityBlocks ()
 
static bool wantsGlobalRuns ()
 
static bool wantsStreamLuminosityBlocks ()
 
static bool wantsStreamRuns ()
 

Detailed Description

Definition at line 41 of file EcalSimHitsValidation.h.

Member Typedef Documentation

typedef std::map<uint32_t, float, std::less<uint32_t> > EcalSimHitsValidation::MapType
private

Definition at line 42 of file EcalSimHitsValidation.h.

Constructor & Destructor Documentation

EcalSimHitsValidation::EcalSimHitsValidation ( const edm::ParameterSet ps)

Constructor.

Definition at line 20 of file EcalSimHitsValidation.cc.

References dbe_, EBHitsCollectionToken, EEHitsCollectionToken, ESHitsCollectionToken, g4InfoLabel, edm::ParameterSet::getParameter(), edm::ParameterSet::getUntrackedParameter(), trackerHits::histo, meEBEnergyFraction_, meEEEnergyFraction_, meESEnergyFraction_, meGunEnergy_, meGunEta_, meGunPhi_, Utilities::operator, outputFile_, AlCaHLTBitMon_QueryRunRegistry::string, and verbose_.

21  : g4InfoLabel(ps.getParameter<std::string>("moduleLabelG4")),
22  HepMCToken(consumes<edm::HepMCProduct>(ps.getParameter<std::string>("moduleLabelMC"))) {
24  consumes<edm::PCaloHitContainer>(edm::InputTag(g4InfoLabel, ps.getParameter<std::string>("EBHitsCollection")));
26  consumes<edm::PCaloHitContainer>(edm::InputTag(g4InfoLabel, ps.getParameter<std::string>("EEHitsCollection")));
28  consumes<edm::PCaloHitContainer>(edm::InputTag(g4InfoLabel, ps.getParameter<std::string>("ESHitsCollection")));
29 
30  // DQM ROOT output
31  outputFile_ = ps.getUntrackedParameter<std::string>("outputFile", "");
32 
33  if (!outputFile_.empty()) {
34  edm::LogInfo("OutputInfo") << " Ecal SimHits Task histograms will be saved to " << outputFile_.c_str();
35  } else {
36  edm::LogInfo("OutputInfo") << " Ecal SimHits Task histograms will NOT be saved";
37  }
38 
39  // verbosity switch
40  verbose_ = ps.getUntrackedParameter<bool>("verbose", false);
41 
42  // DQMServices
43  dbe_ = nullptr;
44 
45  // get hold of back-end interface
46  dbe_ = edm::Service<DQMStore>().operator->();
47  if (dbe_) {
48  if (verbose_) {
49  dbe_->setVerbose(1);
50  } else {
51  dbe_->setVerbose(0);
52  }
53  }
54 
55  if (dbe_) {
56  if (verbose_)
57  dbe_->showDirStructure();
58  }
59 
60  meGunEnergy_ = nullptr;
61  meGunEta_ = nullptr;
62  meGunPhi_ = nullptr;
63  meEBEnergyFraction_ = nullptr;
64  meEEEnergyFraction_ = nullptr;
65  meESEnergyFraction_ = nullptr;
66 
67  Char_t histo[200];
68 
69  if (dbe_) {
70  dbe_->setCurrentFolder("EcalHitsV/EcalSimHitsValidation");
71 
72  sprintf(histo, "EcalSimHitsValidation Gun Momentum");
73  meGunEnergy_ = dbe_->book1D(histo, histo, 100, 0., 1000.);
74 
75  sprintf(histo, "EcalSimHitsValidation Gun Eta");
76  meGunEta_ = dbe_->book1D(histo, histo, 700, -3.5, 3.5);
77 
78  sprintf(histo, "EcalSimHitsValidation Gun Phi");
79  meGunPhi_ = dbe_->book1D(histo, histo, 360, 0., 360.);
80 
81  sprintf(histo, "EcalSimHitsValidation Barrel fraction of energy");
82  meEBEnergyFraction_ = dbe_->book1D(histo, histo, 100, 0., 1.1);
83 
84  sprintf(histo, "EcalSimHitsValidation Endcap fraction of energy");
85  meEEEnergyFraction_ = dbe_->book1D(histo, histo, 100, 0., 1.1);
86 
87  sprintf(histo, "EcalSimHitsValidation Preshower fraction of energy");
88  meESEnergyFraction_ = dbe_->book1D(histo, histo, 60, 0., 0.001);
89  }
90 }
MonitorElement * meEBEnergyFraction_
T getParameter(std::string const &) const
T getUntrackedParameter(std::string const &, T const &) const
edm::EDGetTokenT< edm::PCaloHitContainer > EBHitsCollectionToken
edm::EDGetTokenT< edm::HepMCProduct > HepMCToken
MonitorElement * meGunEnergy_
edm::EDGetTokenT< edm::PCaloHitContainer > EEHitsCollectionToken
edm::EDGetTokenT< edm::PCaloHitContainer > ESHitsCollectionToken
MonitorElement * meEEEnergyFraction_
MonitorElement * meESEnergyFraction_
EcalSimHitsValidation::~EcalSimHitsValidation ( )
override

Destructor.

Definition at line 92 of file EcalSimHitsValidation.cc.

References dbe_, and outputFile_.

92  {
93  if (!outputFile_.empty() && dbe_)
94  dbe_->save(outputFile_);
95 }

Member Function Documentation

void EcalSimHitsValidation::analyze ( const edm::Event e,
const edm::EventSetup c 
)
overrideprotected

Analyze.

Definition at line 101 of file EcalSimHitsValidation.cc.

References funct::abs(), EBHitsCollectionToken, EEHitsCollectionToken, ESHitsCollectionToken, edm::EventID::event(), MonitorElement::Fill(), edm::Event::getByToken(), edm::HepMCProduct::GetEvent(), HepMCToken, edm::EventBase::id(), edm::HandleBase::isValid(), cmsBatch::log, LogDebug, M_PI, meEBEnergyFraction_, meEEEnergyFraction_, meESEnergyFraction_, meGunEnergy_, meGunEta_, meGunPhi_, AlCaHLTBitMon_ParallelJobs::p, edm::EventID::run(), and funct::tan().

101  {
102  edm::LogInfo("EventInfo") << " Run = " << e.id().run() << " Event = " << e.id().event();
103 
104  std::vector<PCaloHit> theEBCaloHits;
105  std::vector<PCaloHit> theEECaloHits;
106  std::vector<PCaloHit> theESCaloHits;
107 
112 
113  e.getByToken(HepMCToken, MCEvt);
114  e.getByToken(EBHitsCollectionToken, EcalHitsEB);
115  e.getByToken(EEHitsCollectionToken, EcalHitsEE);
116  e.getByToken(ESHitsCollectionToken, EcalHitsES);
117 
118  for (HepMC::GenEvent::particle_const_iterator p = MCEvt->GetEvent()->particles_begin();
119  p != MCEvt->GetEvent()->particles_end();
120  ++p) {
121  double htheta = (*p)->momentum().theta();
122  double heta = -99999.;
123  if (tan(htheta * 0.5) > 0) {
124  heta = -log(tan(htheta * 0.5));
125  }
126  double hphi = (*p)->momentum().phi();
127  hphi = (hphi >= 0) ? hphi : hphi + 2 * M_PI;
128  hphi = hphi / M_PI * 180.;
129 
130  LogDebug("EventInfo") << "Particle gun type form MC = " << abs((*p)->pdg_id()) << "\n"
131  << "Energy = " << (*p)->momentum().e() << " Eta = " << heta << " Phi = " << hphi;
132 
133  if (meGunEnergy_)
134  meGunEnergy_->Fill((*p)->momentum().e());
135  if (meGunEta_)
136  meGunEta_->Fill(heta);
137  if (meGunPhi_)
138  meGunPhi_->Fill(hphi);
139  }
140 
141  double EBEnergy_ = 0.;
142  if (EcalHitsEB.isValid()) {
143  theEBCaloHits.insert(theEBCaloHits.end(), EcalHitsEB->begin(), EcalHitsEB->end());
144  for (std::vector<PCaloHit>::iterator isim = theEBCaloHits.begin(); isim != theEBCaloHits.end(); ++isim) {
145  EBEnergy_ += isim->energy();
146  }
147  }
148 
149  double EEEnergy_ = 0.;
150  if (EcalHitsEE.isValid()) {
151  theEECaloHits.insert(theEECaloHits.end(), EcalHitsEE->begin(), EcalHitsEE->end());
152  for (std::vector<PCaloHit>::iterator isim = theEECaloHits.begin(); isim != theEECaloHits.end(); ++isim) {
153  EEEnergy_ += isim->energy();
154  }
155  }
156 
157  double ESEnergy_ = 0.;
158  if (EcalHitsES.isValid()) {
159  theESCaloHits.insert(theESCaloHits.end(), EcalHitsES->begin(), EcalHitsES->end());
160  for (std::vector<PCaloHit>::iterator isim = theESCaloHits.begin(); isim != theESCaloHits.end(); ++isim) {
161  ESEnergy_ += isim->energy();
162  }
163  }
164 
165  double etot = EBEnergy_ + EEEnergy_ + ESEnergy_;
166  double fracEB = 0.0;
167  double fracEE = 0.0;
168  double fracES = 0.0;
169 
170  if (etot > 0.0) {
171  fracEB = EBEnergy_ / etot;
172  fracEE = EEEnergy_ / etot;
173  fracES = ESEnergy_ / etot;
174  }
175 
177  meEBEnergyFraction_->Fill(fracEB);
178 
180  meEEEnergyFraction_->Fill(fracEE);
181 
183  meESEnergyFraction_->Fill(fracES);
184 }
#define LogDebug(id)
RunNumber_t run() const
Definition: EventID.h:39
MonitorElement * meEBEnergyFraction_
EventNumber_t event() const
Definition: EventID.h:41
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:517
void Fill(long long x)
edm::EDGetTokenT< edm::PCaloHitContainer > EBHitsCollectionToken
edm::EDGetTokenT< edm::HepMCProduct > HepMCToken
MonitorElement * meGunEnergy_
Tan< T >::type tan(const T &t)
Definition: Tan.h:22
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
bool isValid() const
Definition: HandleBase.h:74
edm::EDGetTokenT< edm::PCaloHitContainer > EEHitsCollectionToken
#define M_PI
edm::EDGetTokenT< edm::PCaloHitContainer > ESHitsCollectionToken
const HepMC::GenEvent * GetEvent() const
Definition: HepMCProduct.h:38
MonitorElement * meEEEnergyFraction_
edm::EventID id() const
Definition: EventBase.h:59
MonitorElement * meESEnergyFraction_
void EcalSimHitsValidation::beginJob ( void  )
overrideprotectedvirtual

Reimplemented from edm::EDAnalyzer.

Definition at line 97 of file EcalSimHitsValidation.cc.

97 {}
void EcalSimHitsValidation::endJob ( void  )
overrideprotectedvirtual

Reimplemented from edm::EDAnalyzer.

Definition at line 99 of file EcalSimHitsValidation.cc.

99 {}

Member Data Documentation

DQMStore* EcalSimHitsValidation::dbe_
private

Definition at line 70 of file EcalSimHitsValidation.h.

Referenced by EcalSimHitsValidation(), and ~EcalSimHitsValidation().

edm::EDGetTokenT<edm::PCaloHitContainer> EcalSimHitsValidation::EBHitsCollectionToken
private

Definition at line 64 of file EcalSimHitsValidation.h.

Referenced by analyze(), and EcalSimHitsValidation().

edm::EDGetTokenT<edm::PCaloHitContainer> EcalSimHitsValidation::EEHitsCollectionToken
private

Definition at line 65 of file EcalSimHitsValidation.h.

Referenced by analyze(), and EcalSimHitsValidation().

edm::EDGetTokenT<edm::PCaloHitContainer> EcalSimHitsValidation::ESHitsCollectionToken
private

Definition at line 66 of file EcalSimHitsValidation.h.

Referenced by analyze(), and EcalSimHitsValidation().

std::string EcalSimHitsValidation::g4InfoLabel
private

Definition at line 62 of file EcalSimHitsValidation.h.

Referenced by EcalSimHitsValidation().

edm::EDGetTokenT<edm::HepMCProduct> EcalSimHitsValidation::HepMCToken
private

Definition at line 63 of file EcalSimHitsValidation.h.

Referenced by analyze().

MonitorElement* EcalSimHitsValidation::meEBEnergyFraction_
private

Definition at line 78 of file EcalSimHitsValidation.h.

Referenced by analyze(), and EcalSimHitsValidation().

MonitorElement* EcalSimHitsValidation::meEEEnergyFraction_
private

Definition at line 79 of file EcalSimHitsValidation.h.

Referenced by analyze(), and EcalSimHitsValidation().

MonitorElement* EcalSimHitsValidation::meESEnergyFraction_
private

Definition at line 80 of file EcalSimHitsValidation.h.

Referenced by analyze(), and EcalSimHitsValidation().

MonitorElement* EcalSimHitsValidation::meGunEnergy_
private

Definition at line 74 of file EcalSimHitsValidation.h.

Referenced by analyze(), and EcalSimHitsValidation().

MonitorElement* EcalSimHitsValidation::meGunEta_
private

Definition at line 75 of file EcalSimHitsValidation.h.

Referenced by analyze(), and EcalSimHitsValidation().

MonitorElement* EcalSimHitsValidation::meGunPhi_
private

Definition at line 76 of file EcalSimHitsValidation.h.

Referenced by analyze(), and EcalSimHitsValidation().

std::string EcalSimHitsValidation::outputFile_
private

Definition at line 72 of file EcalSimHitsValidation.h.

Referenced by EcalSimHitsValidation(), and ~EcalSimHitsValidation().

bool EcalSimHitsValidation::verbose_
private

Definition at line 68 of file EcalSimHitsValidation.h.

Referenced by EcalSimHitsValidation().