CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
List of all members | Public Member Functions | Static Public Member Functions | Protected Types | Protected Member Functions | Private Attributes
HGCalHitValidation Class Reference

#include <Validation/HGCalValidation/plugins/HGCalHitValidation.cc>

Inheritance diagram for HGCalHitValidation:
DQMEDAnalyzer edm::stream::EDProducer< edm::GlobalCache< DQMEDAnalyzerGlobalCache >, edm::EndRunProducer, edm::EndLuminosityBlockProducer, edm::Accumulator >

Public Member Functions

 HGCalHitValidation (const edm::ParameterSet &)
 
 ~HGCalHitValidation () override
 
- Public Member Functions inherited from DQMEDAnalyzer
void accumulate (edm::Event const &event, edm::EventSetup const &setup) final
 
void beginLuminosityBlock (edm::LuminosityBlock const &lumi, edm::EventSetup const &setup) final
 
void beginRun (edm::Run const &run, edm::EventSetup const &setup) final
 
void beginStream (edm::StreamID id) final
 
 DQMEDAnalyzer ()
 
void endLuminosityBlock (edm::LuminosityBlock const &lumi, edm::EventSetup const &setup) final
 
void endRun (edm::Run const &run, edm::EventSetup const &setup) final
 
virtual bool getCanSaveByLumi ()
 
- Public Member Functions inherited from edm::stream::EDProducer< edm::GlobalCache< DQMEDAnalyzerGlobalCache >, edm::EndRunProducer, edm::EndLuminosityBlockProducer, edm::Accumulator >
 EDProducer ()=default
 
 EDProducer (const EDProducer &)=delete
 
bool hasAbilityToProduceInBeginLumis () const final
 
bool hasAbilityToProduceInBeginProcessBlocks () const final
 
bool hasAbilityToProduceInBeginRuns () const final
 
bool hasAbilityToProduceInEndLumis () const final
 
bool hasAbilityToProduceInEndProcessBlocks () const final
 
bool hasAbilityToProduceInEndRuns () const final
 
const EDProduceroperator= (const EDProducer &)=delete
 

Static Public Member Functions

static void fillDescriptions (edm::ConfigurationDescriptions &descriptions)
 
- Static Public Member Functions inherited from DQMEDAnalyzer
static void globalEndJob (DQMEDAnalyzerGlobalCache const *)
 
static void globalEndLuminosityBlockProduce (edm::LuminosityBlock &lumi, edm::EventSetup const &setup, LuminosityBlockContext const *context)
 
static void globalEndRunProduce (edm::Run &run, edm::EventSetup const &setup, RunContext const *context)
 
static std::unique_ptr
< DQMEDAnalyzerGlobalCache
initializeGlobalCache (edm::ParameterSet const &)
 

Protected Types

typedef std::tuple< float,
float, float, float > 
HGCHitTuple
 

Protected Member Functions

void analyze (const edm::Event &, const edm::EventSetup &) override
 
void analyzeHGCalSimHit (edm::Handle< std::vector< PCaloHit >> const &simHits, int idet, MonitorElement *hist, std::map< unsigned int, HGCHitTuple > &)
 
void bookHistograms (DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
 
void dqmBeginRun (edm::Run const &, edm::EventSetup const &) override
 
- Protected Member Functions inherited from DQMEDAnalyzer
uint64_t meId () const
 

Private Attributes

edm::EDGetTokenT
< HGChebRecHitCollection
bhRecHitToken_
 
edm::InputTag bhSimHitSource
 
edm::EDGetTokenT< std::vector
< PCaloHit > > 
bhSimHitToken_
 
edm::EDGetTokenT
< HGCeeRecHitCollection
eeRecHitToken_
 
edm::InputTag eeSimHitSource
 
edm::EDGetTokenT< std::vector
< PCaloHit > > 
eeSimHitToken_
 
edm::EDGetTokenT
< HGChefRecHitCollection
fhRecHitToken_
 
edm::InputTag fhSimHitSource
 
edm::EDGetTokenT< std::vector
< PCaloHit > > 
fhSimHitToken_
 
std::vector< std::string > geometrySource_
 
MonitorElementhebdEtaVsEta
 
MonitorElementhebdPhiVsPhi
 
MonitorElementhebdzVsZ
 
MonitorElementhebEnRec
 
MonitorElementhebEnSim
 
MonitorElementhebEnSimRec
 
MonitorElementhebRecVsSimX
 
MonitorElementhebRecVsSimY
 
MonitorElementhebRecVsSimZ
 
MonitorElementheedxVsX
 
MonitorElementheedyVsY
 
MonitorElementheedzVsZ
 
MonitorElementheeEnRec
 
MonitorElementheeEnSim
 
MonitorElementheeEnSimRec
 
MonitorElementheeRecVsSimX
 
MonitorElementheeRecVsSimY
 
MonitorElementheeRecVsSimZ
 
MonitorElementhefdxVsX
 
MonitorElementhefdyVsY
 
MonitorElementhefdzVsZ
 
MonitorElementhefEnRec
 
MonitorElementhefEnSim
 
MonitorElementhefEnSimRec
 
MonitorElementhefRecVsSimX
 
MonitorElementhefRecVsSimY
 
MonitorElementhefRecVsSimZ
 
std::vector< const
HGCalDDDConstants * > 
hgcCons_
 
std::vector< const
HGCalGeometry * > 
hgcGeometry_
 
std::vector< int > ietaExcludeBH_
 
std::vector< edm::ESGetToken
< HGCalDDDConstants,
IdealGeometryRecord > > 
tok_ddd_
 
std::vector< edm::ESGetToken
< HGCalGeometry,
IdealGeometryRecord > > 
tok_geom_
 

Additional Inherited Members

- Public Types inherited from DQMEDAnalyzer
typedef dqm::reco::DQMStore DQMStore
 
typedef dqm::reco::MonitorElement MonitorElement
 
- Public Types inherited from edm::stream::EDProducer< edm::GlobalCache< DQMEDAnalyzerGlobalCache >, edm::EndRunProducer, edm::EndLuminosityBlockProducer, edm::Accumulator >
using CacheTypes = CacheContexts< T...>
 
using GlobalCache = typename CacheTypes::GlobalCache
 
using HasAbility = AbilityChecker< T...>
 
using InputProcessBlockCache = typename CacheTypes::InputProcessBlockCache
 
using LuminosityBlockCache = typename CacheTypes::LuminosityBlockCache
 
using LuminosityBlockContext = LuminosityBlockContextT< LuminosityBlockCache, RunCache, GlobalCache >
 
using LuminosityBlockSummaryCache = typename CacheTypes::LuminosityBlockSummaryCache
 
using RunCache = typename CacheTypes::RunCache
 
using RunContext = RunContextT< RunCache, GlobalCache >
 
using RunSummaryCache = typename CacheTypes::RunSummaryCache
 
- Protected Attributes inherited from DQMEDAnalyzer
edm::EDPutTokenT< DQMTokenlumiToken_
 
edm::EDPutTokenT< DQMTokenrunToken_
 
unsigned int streamId_
 

Detailed Description

Description: [one line class summary]

Implementation: [Notes on implementation]

Definition at line 52 of file HGCalHitValidation.cc.

Member Typedef Documentation

typedef std::tuple<float, float, float, float> HGCalHitValidation::HGCHitTuple
protected

Definition at line 59 of file HGCalHitValidation.cc.

Constructor & Destructor Documentation

HGCalHitValidation::HGCalHitValidation ( const edm::ParameterSet cfg)
explicit

Definition at line 101 of file HGCalHitValidation.cc.

References bhRecHitToken_, bhSimHitToken_, eeRecHitToken_, eeSimHitToken_, fhRecHitToken_, fhSimHitToken_, geometrySource_, edm::ParameterSet::getParameter(), ietaExcludeBH_, isotrackApplyRegressor::k, mergeVDriftHistosByStation::name, tok_ddd_, and tok_geom_.

101  {
102  geometrySource_ = cfg.getParameter<std::vector<std::string>>("geometrySource");
103  eeSimHitToken_ = consumes<std::vector<PCaloHit>>(cfg.getParameter<edm::InputTag>("eeSimHitSource"));
104  fhSimHitToken_ = consumes<std::vector<PCaloHit>>(cfg.getParameter<edm::InputTag>("fhSimHitSource"));
105  bhSimHitToken_ = consumes<std::vector<PCaloHit>>(cfg.getParameter<edm::InputTag>("bhSimHitSource"));
106  eeRecHitToken_ = consumes<HGCeeRecHitCollection>(cfg.getParameter<edm::InputTag>("eeRecHitSource"));
107  fhRecHitToken_ = consumes<HGChefRecHitCollection>(cfg.getParameter<edm::InputTag>("fhRecHitSource"));
108  bhRecHitToken_ = consumes<HGChebRecHitCollection>(cfg.getParameter<edm::InputTag>("bhRecHitSource"));
109  ietaExcludeBH_ = cfg.getParameter<std::vector<int>>("ietaExcludeBH");
110 
111  for (const auto& name : geometrySource_) {
112  tok_ddd_.emplace_back(
113  esConsumes<HGCalDDDConstants, IdealGeometryRecord, edm::Transition::BeginRun>(edm::ESInputTag{"", name}));
114  tok_geom_.emplace_back(
115  esConsumes<HGCalGeometry, IdealGeometryRecord, edm::Transition::BeginRun>(edm::ESInputTag{"", name}));
116  }
117 
118 #ifdef EDM_ML_DEBUG
119  edm::LogInfo("HGCalValid") << "Exclude the following " << ietaExcludeBH_.size() << " ieta values from BH plots";
120  for (unsigned int k = 0; k < ietaExcludeBH_.size(); ++k)
121  edm::LogInfo("HGCalValid") << " [" << k << "] " << ietaExcludeBH_[k];
122 #endif
123 }
edm::EDGetTokenT< std::vector< PCaloHit > > fhSimHitToken_
std::vector< edm::ESGetToken< HGCalGeometry, IdealGeometryRecord > > tok_geom_
std::vector< edm::ESGetToken< HGCalDDDConstants, IdealGeometryRecord > > tok_ddd_
edm::EDGetTokenT< HGChebRecHitCollection > bhRecHitToken_
edm::EDGetTokenT< HGCeeRecHitCollection > eeRecHitToken_
edm::EDGetTokenT< std::vector< PCaloHit > > eeSimHitToken_
std::vector< int > ietaExcludeBH_
std::vector< std::string > geometrySource_
edm::EDGetTokenT< std::vector< PCaloHit > > bhSimHitToken_
Log< level::Info, false > LogInfo
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
edm::EDGetTokenT< HGChefRecHitCollection > fhRecHitToken_
HGCalHitValidation::~HGCalHitValidation ( )
override

Definition at line 125 of file HGCalHitValidation.cc.

125 {}

Member Function Documentation

void HGCalHitValidation::analyze ( const edm::Event iEvent,
const edm::EventSetup iSetup 
)
overrideprotectedvirtual

Reimplemented from DQMEDAnalyzer.

Definition at line 198 of file HGCalHitValidation.cc.

References analyzeHGCalSimHit(), edm::SortedCollection< T, SORT >::begin(), bhRecHitToken_, bhSimHitToken_, funct::cos(), TauDecayModes::dec, HLT_FULL_cff::distance, eeRecHitToken_, eeSimHitToken_, edm::SortedCollection< T, SORT >::end(), relval_parameters_module::energy, PV3DBase< T, PVType, FrameType >::eta(), fhRecHitToken_, fhSimHitToken_, dqm::impl::MonitorElement::Fill(), edm::Event::getByToken(), hebdEtaVsEta, hebdPhiVsPhi, hebdzVsZ, hebEnRec, hebEnSim, hebEnSimRec, hebRecVsSimX, hebRecVsSimY, hebRecVsSimZ, heedxVsX, heedyVsY, heedzVsZ, heeEnRec, heeEnSim, heeEnSimRec, heeRecVsSimX, heeRecVsSimY, heeRecVsSimZ, hefdxVsX, hefdyVsY, hefdzVsZ, hefEnRec, hefEnSim, hefEnSimRec, hefRecVsSimX, hefRecVsSimY, hefRecVsSimZ, hgcGeometry_, edm::HandleBase::isValid(), PV3DBase< T, PVType, FrameType >::phi(), edm::Handle< T >::product(), PVValHelper::pT, funct::sin(), Geom::Phi< T1, Range >::value(), PV3DBase< T, PVType, FrameType >::x(), PV3DBase< T, PVType, FrameType >::y(), and PV3DBase< T, PVType, FrameType >::z().

198  {
199  std::map<unsigned int, HGCHitTuple> eeHitRefs, fhHitRefs, bhHitRefs;
200 
201  //Accesing ee simhits
203  iEvent.getByToken(eeSimHitToken_, eeSimHits);
204 
205  if (eeSimHits.isValid()) {
206  analyzeHGCalSimHit(eeSimHits, 0, heeEnSim, eeHitRefs);
207 #ifdef EDM_ML_DEBUG
208  for (std::map<unsigned int, HGCHitTuple>::iterator itr = eeHitRefs.begin(); itr != eeHitRefs.end(); ++itr) {
209  int idx = std::distance(eeHitRefs.begin(), itr);
210  edm::LogInfo("HGCalValid") << "EEHit[" << idx << "] " << std::hex << itr->first << std::dec << "; Energy "
211  << std::get<0>(itr->second) << "; Position (" << std::get<1>(itr->second) << ", "
212  << std::get<2>(itr->second) << ", " << std::get<3>(itr->second) << ")";
213  }
214 #endif
215  } else {
216  edm::LogVerbatim("HGCalValid") << "No EE SimHit Found ";
217  }
218 
219  //Accesing fh simhits
221  iEvent.getByToken(fhSimHitToken_, fhSimHits);
222  if (fhSimHits.isValid()) {
223  analyzeHGCalSimHit(fhSimHits, 1, hefEnSim, fhHitRefs);
224 #ifdef EDM_ML_DEBUG
225  for (std::map<unsigned int, HGCHitTuple>::iterator itr = fhHitRefs.begin(); itr != fhHitRefs.end(); ++itr) {
226  int idx = std::distance(fhHitRefs.begin(), itr);
227  edm::LogInfo("HGCalValid") << "FHHit[" << idx << "] " << std::hex << itr->first << std::dec << "; Energy "
228  << std::get<0>(itr->second) << "; Position (" << std::get<1>(itr->second) << ", "
229  << std::get<2>(itr->second) << ", " << std::get<3>(itr->second) << ")";
230  }
231 #endif
232  } else {
233  edm::LogVerbatim("HGCalValid") << "No FH SimHit Found ";
234  }
235 
236  //Accessing bh simhits
238  iEvent.getByToken(bhSimHitToken_, bhSimHits);
239  if (bhSimHits.isValid()) {
240  analyzeHGCalSimHit(bhSimHits, 2, hebEnSim, bhHitRefs);
241 #ifdef EDM_ML_DEBUG
242  for (std::map<unsigned int, HGCHitTuple>::iterator itr = bhHitRefs.begin(); itr != bhHitRefs.end(); ++itr) {
243  int idx = std::distance(bhHitRefs.begin(), itr);
244  edm::LogInfo("HGCalValid") << "BHHit[" << idx << "] " << std::hex << itr->first << std::dec << "; Energy "
245  << std::get<0>(itr->second) << "; Position (" << std::get<1>(itr->second) << ", "
246  << std::get<2>(itr->second) << ", " << std::get<3>(itr->second) << ")";
247  }
248 #endif
249  } else {
250  edm::LogVerbatim("HGCalValid") << "No BH SimHit Found ";
251  }
252 
253  //accessing EE Rechit information
255  iEvent.getByToken(eeRecHitToken_, eeRecHit);
256  if (eeRecHit.isValid()) {
257  const HGCeeRecHitCollection* theHits = (eeRecHit.product());
258  for (auto it = theHits->begin(); it != theHits->end(); ++it) {
259  double energy = it->energy();
260  heeEnRec->Fill(energy);
261  std::map<unsigned int, HGCHitTuple>::const_iterator itr = eeHitRefs.find(it->id().rawId());
262  if (itr != eeHitRefs.end()) {
263  GlobalPoint xyz = hgcGeometry_[0]->getPosition(it->id());
264  heeRecVsSimX->Fill(std::get<1>(itr->second), xyz.x());
265  heeRecVsSimY->Fill(std::get<2>(itr->second), xyz.y());
266  heeRecVsSimZ->Fill(std::get<3>(itr->second), xyz.z());
267  heedxVsX->Fill(std::get<1>(itr->second), (xyz.x() - std::get<1>(itr->second)));
268  heedyVsY->Fill(std::get<2>(itr->second), (xyz.y() - std::get<2>(itr->second)));
269  heedzVsZ->Fill(std::get<3>(itr->second), (xyz.z() - std::get<3>(itr->second)));
270  heeEnSimRec->Fill(std::get<0>(itr->second), energy);
271 #ifdef EDM_ML_DEBUG
272  edm::LogInfo("HGCalValid") << "EEHit: " << std::hex << it->id().rawId() << std::dec << " Sim ("
273  << std::get<0>(itr->second) << ", " << std::get<1>(itr->second) << ", "
274  << std::get<2>(itr->second) << ", " << std::get<3>(itr->second) << ") Rec ("
275  << energy << ", " << xyz.x() << ", " << xyz.y() << ", " << xyz.z() << ")";
276 #endif
277  }
278  }
279  } else {
280  edm::LogVerbatim("HGCalValid") << "No EE RecHit Found ";
281  }
282 
283  //accessing FH Rechit information
285  iEvent.getByToken(fhRecHitToken_, fhRecHit);
286  if (fhRecHit.isValid()) {
287  const HGChefRecHitCollection* theHits = (fhRecHit.product());
288  for (auto it = theHits->begin(); it != theHits->end(); ++it) {
289  double energy = it->energy();
290  hefEnRec->Fill(energy);
291  std::map<unsigned int, HGCHitTuple>::const_iterator itr = fhHitRefs.find(it->id().rawId());
292  if (itr != fhHitRefs.end()) {
293  GlobalPoint xyz = hgcGeometry_[1]->getPosition(it->id());
294 
295  hefRecVsSimX->Fill(std::get<1>(itr->second), xyz.x());
296  hefRecVsSimY->Fill(std::get<2>(itr->second), xyz.y());
297  hefRecVsSimZ->Fill(std::get<3>(itr->second), xyz.z());
298  hefdxVsX->Fill(std::get<1>(itr->second), (xyz.x() - std::get<1>(itr->second)));
299  hefdyVsY->Fill(std::get<2>(itr->second), (xyz.y() - std::get<2>(itr->second)));
300  hefdzVsZ->Fill(std::get<3>(itr->second), (xyz.z() - std::get<3>(itr->second)));
301  hefEnSimRec->Fill(std::get<0>(itr->second), energy);
302 #ifdef EDM_ML_DEBUG
303  edm::LogInfo("HGCalValid") << "FHHit: " << std::hex << it->id().rawId() << std::dec << " Sim ("
304  << std::get<0>(itr->second) << ", " << std::get<1>(itr->second) << ", "
305  << std::get<2>(itr->second) << ", " << std::get<3>(itr->second) << ") Rec ("
306  << energy << "," << xyz.x() << ", " << xyz.y() << ", " << xyz.z() << ")";
307 #endif
308  }
309  }
310  } else {
311  edm::LogVerbatim("HGCalValid") << "No FH RecHit Found ";
312  }
313 
314  //accessing BH Rechit information
316  iEvent.getByToken(bhRecHitToken_, bhRecHit);
317  if (bhRecHit.isValid()) {
318  const HGChebRecHitCollection* theHits = (bhRecHit.product());
319  for (auto it = theHits->begin(); it != theHits->end(); ++it) {
320  double energy = it->energy();
321  hebEnRec->Fill(energy);
322  std::map<unsigned int, HGCHitTuple>::const_iterator itr = bhHitRefs.find(it->id().rawId());
323  GlobalPoint xyz = hgcGeometry_[2]->getPosition(it->id());
324  if (itr != bhHitRefs.end()) {
325  float ang3 = xyz.phi().value(); // returns the phi in radians
326  double fac = sinh(std::get<1>(itr->second));
327  double pT = std::get<3>(itr->second) / fac;
328  double xp = pT * cos(std::get<2>(itr->second));
329  double yp = pT * sin(std::get<2>(itr->second));
330  hebRecVsSimX->Fill(xp, xyz.x());
331  hebRecVsSimY->Fill(yp, xyz.y());
332  hebRecVsSimZ->Fill(std::get<3>(itr->second), xyz.z());
333  hebdEtaVsEta->Fill(std::get<1>(itr->second), (xyz.eta() - std::get<1>(itr->second)));
334  hebdPhiVsPhi->Fill(std::get<2>(itr->second), (ang3 - std::get<2>(itr->second)));
335  hebdzVsZ->Fill(std::get<3>(itr->second), (xyz.z() - std::get<3>(itr->second)));
336  hebEnSimRec->Fill(std::get<0>(itr->second), energy);
337 
338 #ifdef EDM_ML_DEBUG
339  edm::LogInfo("HGCalValid") << "BHHit: " << std::hex << it->id().rawId() << std::dec << " Sim ("
340  << std::get<0>(itr->second) << ", " << std::get<1>(itr->second) << ", "
341  << std::get<2>(itr->second) << ", " << std::get<3>(itr->second) << ") Rec ("
342  << energy << ", " << xyz.x() << ", " << xyz.y() << ", " << xyz.z() << ")\n";
343 #endif
344  }
345  }
346  } else {
347  edm::LogVerbatim("HGCalValid") << "No BH RecHit Found ";
348  }
349 }
Log< level::Info, true > LogVerbatim
edm::EDGetTokenT< std::vector< PCaloHit > > fhSimHitToken_
MonitorElement * hebRecVsSimX
MonitorElement * hefRecVsSimY
MonitorElement * hefRecVsSimX
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:539
MonitorElement * hebRecVsSimY
Sin< T >::type sin(const T &t)
Definition: Sin.h:22
Geom::Phi< T > phi() const
Definition: PV3DBase.h:66
T y() const
Definition: PV3DBase.h:60
T1 value() const
Explicit access to value in case implicit conversion not OK.
Definition: Phi.h:75
edm::EDGetTokenT< HGChebRecHitCollection > bhRecHitToken_
MonitorElement * hefEnSimRec
MonitorElement * heedzVsZ
MonitorElement * heeRecVsSimX
MonitorElement * heeRecVsSimZ
MonitorElement * heeRecVsSimY
MonitorElement * heeEnRec
std::vector< const HGCalGeometry * > hgcGeometry_
MonitorElement * hebEnRec
edm::EDGetTokenT< HGCeeRecHitCollection > eeRecHitToken_
void Fill(long long x)
edm::EDGetTokenT< std::vector< PCaloHit > > eeSimHitToken_
MonitorElement * hebEnSim
MonitorElement * hefdyVsY
MonitorElement * heeEnSimRec
MonitorElement * hefEnSim
T z() const
Definition: PV3DBase.h:61
Cos< T >::type cos(const T &t)
Definition: Cos.h:22
MonitorElement * hebRecVsSimZ
MonitorElement * hefEnRec
MonitorElement * heedxVsX
MonitorElement * heeEnSim
edm::EDGetTokenT< std::vector< PCaloHit > > bhSimHitToken_
bool isValid() const
Definition: HandleBase.h:70
MonitorElement * hebdPhiVsPhi
const_iterator end() const
MonitorElement * hebEnSimRec
Log< level::Info, false > LogInfo
MonitorElement * hefdxVsX
T const * product() const
Definition: Handle.h:70
T eta() const
Definition: PV3DBase.h:73
void analyzeHGCalSimHit(edm::Handle< std::vector< PCaloHit >> const &simHits, int idet, MonitorElement *hist, std::map< unsigned int, HGCHitTuple > &)
MonitorElement * hefRecVsSimZ
MonitorElement * hefdzVsZ
MonitorElement * hebdzVsZ
T x() const
Definition: PV3DBase.h:59
MonitorElement * heedyVsY
const_iterator begin() const
MonitorElement * hebdEtaVsEta
edm::EDGetTokenT< HGChefRecHitCollection > fhRecHitToken_
void HGCalHitValidation::analyzeHGCalSimHit ( edm::Handle< std::vector< PCaloHit >> const &  simHits,
int  idet,
MonitorElement hist,
std::map< unsigned int, HGCHitTuple > &  hitRefs 
)
protected

Definition at line 351 of file HGCalHitValidation.cc.

References HGCalTopology::detectorType(), relval_parameters_module::energy, CastorDataFrameFilter_impl::energySum(), dqm::impl::MonitorElement::Fill(), hgcCons_, hgcGeometry_, phase1PixelTopology::layer, trackerHits::simHits, HGCalTestNumbering::unpackHexagonIndex(), xy(), and ecaldqm::zside().

Referenced by analyze().

354  {
355  const HGCalTopology& hTopo = hgcGeometry_[idet]->topology();
356  for (std::vector<PCaloHit>::const_iterator simHit = simHits->begin(); simHit != simHits->end(); ++simHit) {
357  int subdet, zside, layer, wafer, celltype, cell;
358  HGCalTestNumbering::unpackHexagonIndex(simHit->id(), subdet, zside, layer, wafer, celltype, cell);
359  std::pair<float, float> xy = hgcCons_[idet]->locateCell(cell, layer, wafer, false);
360  float zp = hgcCons_[idet]->waferZ(layer, false);
361  if (zside < 0)
362  zp = -zp;
363  float xp = (zp < 0) ? -xy.first / 10 : xy.first / 10;
364  float yp = xy.second / 10.0;
365 
366  //skip this hit if after ganging it is not valid
367  std::pair<int, int> recoLayerCell = hgcCons_[idet]->simToReco(cell, layer, wafer, hTopo.detectorType());
368  cell = recoLayerCell.first;
369  layer = recoLayerCell.second;
370 
371  //skip this hit if after ganging it is not valid
372  if (layer < 0 || cell < 0) {
373  } else {
374  //assign the RECO DetId
375  HGCalDetId id = HGCalDetId((ForwardSubdetector)(subdet), zside, layer, celltype, wafer, cell);
376  float energy = simHit->energy();
377 
378  float energySum(energy);
379  if (hitRefs.count(id.rawId()) != 0)
380  energySum += std::get<0>(hitRefs[id.rawId()]);
381  hitRefs[id.rawId()] = std::make_tuple(energySum, xp, yp, zp);
382  hist->Fill(energy);
383  }
384  }
385 }
bool detectorType() const
int zside(DetId const &)
ForwardSubdetector
std::vector< const HGCalDDDConstants * > hgcCons_
constexpr std::array< uint8_t, layerIndexSize > layer
std::vector< const HGCalGeometry * > hgcGeometry_
void Fill(long long x)
Basic2DVector< T > xy() const
double energySum(const DataFrame &df, int fs, int ls)
static void unpackHexagonIndex(const uint32_t &idx, int &subdet, int &z, int &lay, int &wafer, int &celltyp, int &cell)
void HGCalHitValidation::bookHistograms ( DQMStore::IBooker iB,
edm::Run const &  ,
edm::EventSetup const &   
)
overrideprotectedvirtual

Implements DQMEDAnalyzer.

Definition at line 142 of file HGCalHitValidation.cc.

References dqm::implementation::IBooker::book1D(), dqm::implementation::IBooker::book2D(), hebdEtaVsEta, hebdPhiVsPhi, hebdzVsZ, hebEnRec, hebEnSim, hebEnSimRec, hebRecVsSimX, hebRecVsSimY, hebRecVsSimZ, heedxVsX, heedyVsY, heedzVsZ, heeEnRec, heeEnSim, heeEnSimRec, heeRecVsSimX, heeRecVsSimY, heeRecVsSimZ, hefdxVsX, hefdyVsY, hefdzVsZ, hefEnRec, hefEnSim, hefEnSimRec, hefRecVsSimX, hefRecVsSimY, hefRecVsSimZ, M_PI, and dqm::implementation::NavigatorBase::setCurrentFolder().

142  {
143  iB.setCurrentFolder("HGCAL/HGCalSimHitsV/HitValidation");
144 
145  //initiating histograms
146  heedzVsZ = iB.book2D("heedzVsZ", "", 720, -360, 360, 100, -0.1, 0.1);
147  heedyVsY = iB.book2D("heedyVsY", "", 400, -200, 200, 100, -0.02, 0.02);
148  heedxVsX = iB.book2D("heedxVsX", "", 400, -200, 200, 100, -0.02, 0.02);
149  heeRecVsSimZ = iB.book2D("heeRecVsSimZ", "", 720, -360, 360, 720, -360, 360);
150  heeRecVsSimY = iB.book2D("heeRecVsSimY", "", 400, -200, 200, 400, -200, 200);
151  heeRecVsSimX = iB.book2D("heeRecVsSimX", "", 400, -200, 200, 400, -200, 200);
152 
153  hefdzVsZ = iB.book2D("hefdzVsZ", "", 820, -410, 410, 100, -0.1, 0.1);
154  hefdyVsY = iB.book2D("hefdyVsY", "", 400, -200, 200, 100, -0.02, 0.02);
155  hefdxVsX = iB.book2D("hefdxVsX", "", 400, -200, 200, 100, -0.02, 0.02);
156  hefRecVsSimZ = iB.book2D("hefRecVsSimZ", "", 820, -410, 410, 820, -410, 410);
157  hefRecVsSimY = iB.book2D("hefRecVsSimY", "", 400, -200, 200, 400, -200, 200);
158  hefRecVsSimX = iB.book2D("hefRecVsSimX", "", 400, -200, 200, 400, -200, 200);
159 
160  hebdzVsZ = iB.book2D("hebdzVsZ", "", 1080, -540, 540, 100, -1.0, 1.0);
161  hebdPhiVsPhi = iB.book2D("hebdPhiVsPhi", "", M_PI * 100, -0.5, M_PI + 0.5, 200, -0.2, 0.2);
162  hebdEtaVsEta = iB.book2D("hebdEtaVsEta", "", 1000, -5, 5, 200, -0.1, 0.1);
163  hebRecVsSimZ = iB.book2D("hebRecVsSimZ", "", 1080, -540, 540, 1080, -540, 540);
164  hebRecVsSimY = iB.book2D("hebRecVsSimY", "", 400, -200, 200, 400, -200, 200);
165  hebRecVsSimX = iB.book2D("hebRecVsSimX", "", 400, -200, 200, 400, -200, 200);
166 
167  heeEnRec = iB.book1D("heeEnRec", "", 1000, 0, 10);
168  heeEnSim = iB.book1D("heeEnSim", "", 1000, 0, 0.01);
169  heeEnSimRec = iB.book2D("heeEnSimRec", "", 200, 0, 0.002, 200, 0, 0.2);
170 
171  hefEnRec = iB.book1D("hefEnRec", "", 1000, 0, 10);
172  hefEnSim = iB.book1D("hefEnSim", "", 1000, 0, 0.01);
173  hefEnSimRec = iB.book2D("hefEnSimRec", "", 200, 0, 0.001, 200, 0, 0.5);
174 
175  hebEnRec = iB.book1D("hebEnRec", "", 1000, 0, 15);
176  hebEnSim = iB.book1D("hebEnSim", "", 1000, 0, 0.01);
177  hebEnSimRec = iB.book2D("hebEnSimRec", "", 200, 0, 0.02, 200, 0, 4);
178 }
MonitorElement * hebRecVsSimX
MonitorElement * hefRecVsSimY
MonitorElement * hefRecVsSimX
virtual void setCurrentFolder(std::string const &fullpath)
Definition: DQMStore.cc:32
MonitorElement * hebRecVsSimY
MonitorElement * hefEnSimRec
MonitorElement * heedzVsZ
MonitorElement * heeRecVsSimX
MonitorElement * heeRecVsSimZ
MonitorElement * heeRecVsSimY
MonitorElement * heeEnRec
MonitorElement * hebEnRec
MonitorElement * hebEnSim
MonitorElement * hefdyVsY
MonitorElement * heeEnSimRec
MonitorElement * hefEnSim
MonitorElement * hebRecVsSimZ
MonitorElement * hefEnRec
MonitorElement * heedxVsX
MonitorElement * heeEnSim
MonitorElement * hebdPhiVsPhi
#define M_PI
MonitorElement * hebEnSimRec
MonitorElement * hefdxVsX
MonitorElement * book2D(TString const &name, TString const &title, int nchX, double lowX, double highX, int nchY, double lowY, double highY, FUNC onbooking=NOOP())
Definition: DQMStore.h:177
MonitorElement * hefRecVsSimZ
MonitorElement * hefdzVsZ
MonitorElement * book1D(TString const &name, TString const &title, int const nchX, double const lowX, double const highX, FUNC onbooking=NOOP())
Definition: DQMStore.h:98
MonitorElement * hebdzVsZ
MonitorElement * heedyVsY
MonitorElement * hebdEtaVsEta
void HGCalHitValidation::dqmBeginRun ( edm::Run const &  iRun,
edm::EventSetup const &  iSetup 
)
overrideprotectedvirtual

Reimplemented from DQMEDAnalyzer.

Definition at line 180 of file HGCalHitValidation.cc.

References geometrySource_, edm::EventSetup::getHandle(), hgcCons_, hgcGeometry_, mps_fire::i, edm::ESHandleBase::isValid(), edm::ESHandle< class >::product(), tok_ddd_, and tok_geom_.

180  {
181  //initiating hgc Geometry
182  for (size_t i = 0; i < geometrySource_.size(); i++) {
183  edm::ESHandle<HGCalDDDConstants> hgcCons = iSetup.getHandle(tok_ddd_[i]);
184  if (hgcCons.isValid()) {
185  hgcCons_.push_back(hgcCons.product());
186  } else {
187  edm::LogWarning("HGCalValid") << "Cannot initiate HGCalDDDConstants for " << geometrySource_[i] << std::endl;
188  }
189  edm::ESHandle<HGCalGeometry> hgcGeom = iSetup.getHandle(tok_geom_[i]);
190  if (hgcGeom.isValid()) {
191  hgcGeometry_.push_back(hgcGeom.product());
192  } else {
193  edm::LogWarning("HGCalValid") << "Cannot initiate HGCalGeometry for " << geometrySource_[i] << std::endl;
194  }
195  }
196 }
std::vector< edm::ESGetToken< HGCalGeometry, IdealGeometryRecord > > tok_geom_
std::vector< edm::ESGetToken< HGCalDDDConstants, IdealGeometryRecord > > tok_ddd_
std::vector< const HGCalDDDConstants * > hgcCons_
std::vector< const HGCalGeometry * > hgcGeometry_
std::vector< std::string > geometrySource_
T const * product() const
Definition: ESHandle.h:86
Log< level::Warning, false > LogWarning
bool isValid() const
Definition: ESHandle.h:44
void HGCalHitValidation::fillDescriptions ( edm::ConfigurationDescriptions descriptions)
static

Definition at line 127 of file HGCalHitValidation.cc.

References edm::ConfigurationDescriptions::add(), edm::ParameterSetDescription::add(), submitPVResolutionJobs::desc, HLT_FULL_cff::InputTag, and source.

127  {
129  std::vector<std::string> source = {"HGCalEESensitive", "HGCalHESiliconSensitive", "HGCalHEScintillatorSensitive"};
130  desc.add<std::vector<std::string>>("geometrySource", source);
131  desc.add<edm::InputTag>("eeSimHitSource", edm::InputTag("g4SimHits", "HGCHitsEE"));
132  desc.add<edm::InputTag>("fhSimHitSource", edm::InputTag("g4SimHits", "HGCHitsHEfront"));
133  desc.add<edm::InputTag>("bhSimHitSource", edm::InputTag("g4SimHits", "HGCHitsHEback"));
134  desc.add<edm::InputTag>("eeRecHitSource", edm::InputTag("HGCalRecHit", "HGCEERecHits"));
135  desc.add<edm::InputTag>("fhRecHitSource", edm::InputTag("HGCalRecHit", "HGCHEFRecHits"));
136  desc.add<edm::InputTag>("bhRecHitSource", edm::InputTag("HGCalRecHit", "HGCHEBRecHits"));
137  std::vector<int> dummy;
138  desc.add<std::vector<int>>("ietaExcludeBH", dummy);
139  descriptions.add("hgcalHitValidation", desc);
140 }
ParameterDescriptionBase * add(U const &iLabel, T const &value)
void add(std::string const &label, ParameterSetDescription const &psetDescription)
static std::string const source
Definition: EdmProvDump.cc:46

Member Data Documentation

edm::EDGetTokenT<HGChebRecHitCollection> HGCalHitValidation::bhRecHitToken_
private

Definition at line 82 of file HGCalHitValidation.cc.

Referenced by analyze(), and HGCalHitValidation().

edm::InputTag HGCalHitValidation::bhSimHitSource
private

Definition at line 76 of file HGCalHitValidation.cc.

edm::EDGetTokenT<std::vector<PCaloHit> > HGCalHitValidation::bhSimHitToken_
private

Definition at line 79 of file HGCalHitValidation.cc.

Referenced by analyze(), and HGCalHitValidation().

edm::EDGetTokenT<HGCeeRecHitCollection> HGCalHitValidation::eeRecHitToken_
private

Definition at line 80 of file HGCalHitValidation.cc.

Referenced by analyze(), and HGCalHitValidation().

edm::InputTag HGCalHitValidation::eeSimHitSource
private

Definition at line 76 of file HGCalHitValidation.cc.

edm::EDGetTokenT<std::vector<PCaloHit> > HGCalHitValidation::eeSimHitToken_
private

Definition at line 77 of file HGCalHitValidation.cc.

Referenced by analyze(), and HGCalHitValidation().

edm::EDGetTokenT<HGChefRecHitCollection> HGCalHitValidation::fhRecHitToken_
private

Definition at line 81 of file HGCalHitValidation.cc.

Referenced by analyze(), and HGCalHitValidation().

edm::InputTag HGCalHitValidation::fhSimHitSource
private

Definition at line 76 of file HGCalHitValidation.cc.

edm::EDGetTokenT<std::vector<PCaloHit> > HGCalHitValidation::fhSimHitToken_
private

Definition at line 78 of file HGCalHitValidation.cc.

Referenced by analyze(), and HGCalHitValidation().

std::vector<std::string> HGCalHitValidation::geometrySource_
private

Definition at line 73 of file HGCalHitValidation.cc.

Referenced by dqmBeginRun(), and HGCalHitValidation().

MonitorElement * HGCalHitValidation::hebdEtaVsEta
private

Definition at line 89 of file HGCalHitValidation.cc.

Referenced by analyze(), and bookHistograms().

MonitorElement * HGCalHitValidation::hebdPhiVsPhi
private

Definition at line 89 of file HGCalHitValidation.cc.

Referenced by analyze(), and bookHistograms().

MonitorElement* HGCalHitValidation::hebdzVsZ
private

Definition at line 89 of file HGCalHitValidation.cc.

Referenced by analyze(), and bookHistograms().

MonitorElement* HGCalHitValidation::hebEnRec
private

Definition at line 96 of file HGCalHitValidation.cc.

Referenced by analyze(), and bookHistograms().

MonitorElement * HGCalHitValidation::hebEnSim
private

Definition at line 96 of file HGCalHitValidation.cc.

Referenced by analyze(), and bookHistograms().

MonitorElement * HGCalHitValidation::hebEnSimRec
private

Definition at line 94 of file HGCalHitValidation.cc.

Referenced by analyze(), and bookHistograms().

MonitorElement * HGCalHitValidation::hebRecVsSimX
private

Definition at line 93 of file HGCalHitValidation.cc.

Referenced by analyze(), and bookHistograms().

MonitorElement * HGCalHitValidation::hebRecVsSimY
private

Definition at line 93 of file HGCalHitValidation.cc.

Referenced by analyze(), and bookHistograms().

MonitorElement* HGCalHitValidation::hebRecVsSimZ
private

Definition at line 93 of file HGCalHitValidation.cc.

Referenced by analyze(), and bookHistograms().

MonitorElement * HGCalHitValidation::heedxVsX
private

Definition at line 87 of file HGCalHitValidation.cc.

Referenced by analyze(), and bookHistograms().

MonitorElement * HGCalHitValidation::heedyVsY
private

Definition at line 87 of file HGCalHitValidation.cc.

Referenced by analyze(), and bookHistograms().

MonitorElement* HGCalHitValidation::heedzVsZ
private

Definition at line 87 of file HGCalHitValidation.cc.

Referenced by analyze(), and bookHistograms().

MonitorElement* HGCalHitValidation::heeEnRec
private

Definition at line 98 of file HGCalHitValidation.cc.

Referenced by analyze(), and bookHistograms().

MonitorElement * HGCalHitValidation::heeEnSim
private

Definition at line 98 of file HGCalHitValidation.cc.

Referenced by analyze(), and bookHistograms().

MonitorElement* HGCalHitValidation::heeEnSimRec
private

Definition at line 94 of file HGCalHitValidation.cc.

Referenced by analyze(), and bookHistograms().

MonitorElement * HGCalHitValidation::heeRecVsSimX
private

Definition at line 91 of file HGCalHitValidation.cc.

Referenced by analyze(), and bookHistograms().

MonitorElement * HGCalHitValidation::heeRecVsSimY
private

Definition at line 91 of file HGCalHitValidation.cc.

Referenced by analyze(), and bookHistograms().

MonitorElement* HGCalHitValidation::heeRecVsSimZ
private

Definition at line 91 of file HGCalHitValidation.cc.

Referenced by analyze(), and bookHistograms().

MonitorElement * HGCalHitValidation::hefdxVsX
private

Definition at line 88 of file HGCalHitValidation.cc.

Referenced by analyze(), and bookHistograms().

MonitorElement * HGCalHitValidation::hefdyVsY
private

Definition at line 88 of file HGCalHitValidation.cc.

Referenced by analyze(), and bookHistograms().

MonitorElement* HGCalHitValidation::hefdzVsZ
private

Definition at line 88 of file HGCalHitValidation.cc.

Referenced by analyze(), and bookHistograms().

MonitorElement* HGCalHitValidation::hefEnRec
private

Definition at line 97 of file HGCalHitValidation.cc.

Referenced by analyze(), and bookHistograms().

MonitorElement * HGCalHitValidation::hefEnSim
private

Definition at line 97 of file HGCalHitValidation.cc.

Referenced by analyze(), and bookHistograms().

MonitorElement * HGCalHitValidation::hefEnSimRec
private

Definition at line 94 of file HGCalHitValidation.cc.

Referenced by analyze(), and bookHistograms().

MonitorElement * HGCalHitValidation::hefRecVsSimX
private

Definition at line 92 of file HGCalHitValidation.cc.

Referenced by analyze(), and bookHistograms().

MonitorElement * HGCalHitValidation::hefRecVsSimY
private

Definition at line 92 of file HGCalHitValidation.cc.

Referenced by analyze(), and bookHistograms().

MonitorElement* HGCalHitValidation::hefRecVsSimZ
private

Definition at line 92 of file HGCalHitValidation.cc.

Referenced by analyze(), and bookHistograms().

std::vector<const HGCalDDDConstants*> HGCalHitValidation::hgcCons_
private

Definition at line 71 of file HGCalHitValidation.cc.

Referenced by analyzeHGCalSimHit(), and dqmBeginRun().

std::vector<const HGCalGeometry*> HGCalHitValidation::hgcGeometry_
private

Definition at line 72 of file HGCalHitValidation.cc.

Referenced by analyze(), analyzeHGCalSimHit(), and dqmBeginRun().

std::vector<int> HGCalHitValidation::ietaExcludeBH_
private

Definition at line 74 of file HGCalHitValidation.cc.

Referenced by HGCalHitValidation().

std::vector<edm::ESGetToken<HGCalDDDConstants, IdealGeometryRecord> > HGCalHitValidation::tok_ddd_
private

Definition at line 83 of file HGCalHitValidation.cc.

Referenced by dqmBeginRun(), and HGCalHitValidation().

std::vector<edm::ESGetToken<HGCalGeometry, IdealGeometryRecord> > HGCalHitValidation::tok_geom_
private

Definition at line 84 of file HGCalHitValidation.cc.

Referenced by dqmBeginRun(), and HGCalHitValidation().