CMS 3D CMS Logo

List of all members | Public Types | Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes
HGCDigitizer Class Reference

#include <HGCDigitizer.h>

Public Types

typedef std::tuple< int, uint32_t, float > HGCCaloHitTuple_t
 

Public Member Functions

void accumulate (edm::Event const &e, edm::EventSetup const &c, CLHEP::HepRandomEngine *hre)
 handle SimHit accumulation More...
 
void accumulate (PileUpEventPrincipal const &e, edm::EventSetup const &c, CLHEP::HepRandomEngine *hre)
 
template<typename GEOM >
void accumulate (edm::Handle< edm::PCaloHitContainer > const &hits, int bxCrossing, const GEOM *geom, CLHEP::HepRandomEngine *hre)
 
void accumulate (const PHGCSimAccumulator &simAccumulator)
 
void beginRun (const edm::EventSetup &es)
 actions at the start/end of run More...
 
std::string digiCollection ()
 
void endRun ()
 
void finalizeEvent (edm::Event &e, edm::EventSetup const &c, CLHEP::HepRandomEngine *hre)
 
int geometryType ()
 
 HGCDigitizer (const edm::ParameterSet &ps, edm::ConsumesCollector &iC)
 
void initializeEvent (edm::Event const &e, edm::EventSetup const &c)
 actions at the start/end of event More...
 
bool producesEEDigis ()
 
bool producesHEbackDigis ()
 
bool producesHEfrontDigis ()
 
bool producesHFNoseDigis ()
 
 ~HGCDigitizer ()
 

Static Public Member Functions

static bool orderByDetIdThenTime (const HGCCaloHitTuple_t &a, const HGCCaloHitTuple_t &b)
 

Private Member Functions

void checkPosition (const HGCalDigiCollection *digis) const
 
uint32_t getType () const
 
bool getWeight (std::array< float, 3 > &tdcForToAOnset, float &keV2fC) const
 
void resetSimHitDataAccumulator ()
 

Private Attributes

std::array< double, 4 > averageOccupancies_
 
double bxTime_
 
std::vector< float > cce_
 
std::string digiCollection_
 
int digitizationType_
 
double ev_per_eh_pair_
 
int geometryType_
 
const HcalGeometrygHcal_
 
const HGCalGeometrygHGCal_
 
std::string hitCollection_
 
std::map< uint32_t, std::vector< std::pair< float, float > > > hitRefs_bx0
 
int maxSimHitsAccTime_
 
DetId::Detector myDet_
 
ForwardSubdetector mySubDet_
 
uint32_t nEvents_
 
bool premixStage1_
 
double premixStage1MaxCharge_
 
double premixStage1MinCharge_
 
float refSpeed_
 
std::unique_ptr< hgc::HGCSimHitDataAccumulatorsimHitAccumulator_
 
std::unique_ptr< HFNoseDigitizertheHFNoseDigitizer_
 
std::unique_ptr< HGCEEDigitizertheHGCEEDigitizer_
 
std::unique_ptr< HGCHEbackDigitizertheHGCHEbackDigitizer_
 
std::unique_ptr< HGCHEfrontDigitizertheHGCHEfrontDigitizer_
 
float tofDelay_
 
std::unordered_set< DetIdvalidIds_
 
uint32_t verbosity_
 

Detailed Description

Definition at line 30 of file HGCDigitizer.h.

Member Typedef Documentation

typedef std::tuple<int, uint32_t, float> HGCDigitizer::HGCCaloHitTuple_t

Definition at line 36 of file HGCDigitizer.h.

Constructor & Destructor Documentation

HGCDigitizer::HGCDigitizer ( const edm::ParameterSet ps,
edm::ConsumesCollector iC 
)

Definition at line 167 of file HGCDigitizer.cc.

References bxTime_, cce_, edm::ConsumesCollector::consumes(), digiCollection_, digitizationType_, DetId::Forward, geometryType_, edm::ParameterSet::getParameter(), edm::ParameterSet::getUntrackedParameter(), HFNose, DetId::HGCalEE, DetId::HGCalHSc, DetId::HGCalHSi, HGCEE, HGCHEB, HGCHEF, hitCollection_, HLT_2018_cff::InputTag, maxSimHitsAccTime_, myDet_, mySubDet_, premixStage1_, premixStage1MaxCharge_, premixStage1MinCharge_, AlCaHLTBitMon_QueryRunRegistry::string, edm::swap(), groupFilesInBlocks::temp, theHFNoseDigitizer_, theHGCEEDigitizer_, theHGCHEbackDigitizer_, theHGCHEfrontDigitizer_, tofDelay_, validIds_, and verbosity_.

171  refSpeed_(0.1 * CLHEP::c_light), //[CLHEP::c_light]=mm/ns convert to cm/ns
172  averageOccupancies_(occupancyGuesses),
173  nEvents_(1) {
174  //configure from cfg
175  hitCollection_ = ps.getParameter<std::string>("hitCollection");
176  digiCollection_ = ps.getParameter<std::string>("digiCollection");
177  maxSimHitsAccTime_ = ps.getParameter<uint32_t>("maxSimHitsAccTime");
178  bxTime_ = ps.getParameter<double>("bxTime");
179  geometryType_ = ps.getParameter<uint32_t>("geometryType");
180  digitizationType_ = ps.getParameter<uint32_t>("digitizationType");
181  verbosity_ = ps.getUntrackedParameter<uint32_t>("verbosity", 0);
182  tofDelay_ = ps.getParameter<double>("tofDelay");
183  premixStage1_ = ps.getParameter<bool>("premixStage1");
184  premixStage1MinCharge_ = ps.getParameter<double>("premixStage1MinCharge");
185  premixStage1MaxCharge_ = ps.getParameter<double>("premixStage1MaxCharge");
186 
187  std::unordered_set<DetId>().swap(validIds_);
188 
189  iC.consumes<std::vector<PCaloHit>>(edm::InputTag("g4SimHits", hitCollection_));
190  const auto& myCfg_ = ps.getParameter<edm::ParameterSet>("digiCfg");
191 
192  if (myCfg_.existsAs<edm::ParameterSet>("chargeCollectionEfficiencies")) {
193  cce_.clear();
194  const auto& temp = myCfg_.getParameter<edm::ParameterSet>("chargeCollectionEfficiencies")
195  .getParameter<std::vector<double>>("values");
196  for (double cce : temp) {
197  cce_.emplace_back(cce);
198  }
199  } else {
200  std::vector<float>().swap(cce_);
201  }
202 
203  if (hitCollection_.find("HitsEE") != std::string::npos) {
204  if (geometryType_ == 0) {
206  } else {
208  }
209  theHGCEEDigitizer_ = std::make_unique<HGCEEDigitizer>(ps);
210  }
211  if (hitCollection_.find("HitsHEfront") != std::string::npos) {
212  if (geometryType_ == 0) {
214  } else {
216  }
217  theHGCHEfrontDigitizer_ = std::make_unique<HGCHEfrontDigitizer>(ps);
218  }
219  if (hitCollection_.find("HcalHits") != std::string::npos and geometryType_ == 0) {
221  theHGCHEbackDigitizer_ = std::make_unique<HGCHEbackDigitizer>(ps);
222  }
223  if (hitCollection_.find("HitsHEback") != std::string::npos and geometryType_ == 1) {
225  theHGCHEbackDigitizer_ = std::make_unique<HGCHEbackDigitizer>(ps);
226  }
227  if (hitCollection_.find("HFNoseHits") != std::string::npos) {
230  theHFNoseDigitizer_ = std::make_unique<HFNoseDigitizer>(ps);
231  }
232 }
EDGetTokenT< ProductType > consumes(edm::InputTag const &tag)
T getParameter(std::string const &) const
uint32_t nEvents_
Definition: HGCDigitizer.h:142
T getUntrackedParameter(std::string const &, T const &) const
bool premixStage1_
Definition: HGCDigitizer.h:100
std::vector< float > cce_
Definition: HGCDigitizer.h:144
ForwardSubdetector mySubDet_
Definition: HGCDigitizer.h:129
int digitizationType_
Definition: HGCDigitizer.h:97
std::string hitCollection_
Definition: HGCDigitizer.h:91
std::unordered_map< uint32_t, HGCCellInfo > HGCSimHitDataAccumulator
DetId::Detector myDet_
Definition: HGCDigitizer.h:128
std::unique_ptr< HFNoseDigitizer > theHFNoseDigitizer_
Definition: HGCDigitizer.h:120
void swap(Association< C > &lhs, Association< C > &rhs)
Definition: Association.h:117
std::string digiCollection_
Definition: HGCDigitizer.h:91
std::unordered_set< DetId > validIds_
Definition: HGCDigitizer.h:123
std::unique_ptr< HGCHEbackDigitizer > theHGCHEbackDigitizer_
Definition: HGCDigitizer.h:118
double premixStage1MinCharge_
Definition: HGCDigitizer.h:103
int maxSimHitsAccTime_
Definition: HGCDigitizer.h:108
std::unique_ptr< HGCHEfrontDigitizer > theHGCHEfrontDigitizer_
Definition: HGCDigitizer.h:119
std::unique_ptr< HGCEEDigitizer > theHGCEEDigitizer_
Definition: HGCDigitizer.h:117
std::array< double, 4 > averageOccupancies_
Definition: HGCDigitizer.h:141
std::unique_ptr< hgc::HGCSimHitDataAccumulator > simHitAccumulator_
Definition: HGCDigitizer.h:110
double bxTime_
Definition: HGCDigitizer.h:109
double premixStage1MaxCharge_
Definition: HGCDigitizer.h:105
uint32_t verbosity_
Definition: HGCDigitizer.h:132
HGCDigitizer::~HGCDigitizer ( )
inline

Definition at line 33 of file HGCDigitizer.h.

33 {}

Member Function Documentation

void HGCDigitizer::accumulate ( edm::Event const &  e,
edm::EventSetup const &  c,
CLHEP::HepRandomEngine *  hre 
)

handle SimHit accumulation

Definition at line 312 of file HGCDigitizer.cc.

References Exception, edm::Event::getByLabel(), gHcal_, gHGCal_, hitCollection_, hfClusterShapes_cfi::hits, and edm::HandleBase::isValid().

Referenced by HGCDigiProducer::accumulate(), accumulate(), PreMixingHGCalWorker::addPileups(), PreMixingHGCalWorker::addSignals(), and orderByDetIdThenTime().

312  {
313  //get inputs
315  e.getByLabel(edm::InputTag("g4SimHits", hitCollection_), hits);
316  if (!hits.isValid()) {
317  edm::LogError("HGCDigitizer") << " @ accumulate : can't find " << hitCollection_ << " collection of g4SimHits";
318  return;
319  }
320 
321  //accumulate in-time the main event
322  if (nullptr != gHGCal_) {
323  accumulate(hits, 0, gHGCal_, hre);
324  } else if (nullptr != gHcal_) {
325  accumulate(hits, 0, gHcal_, hre);
326  } else {
327  throw cms::Exception("BadConfiguration") << "HGCDigitizer is not producing EE, FH, or BH digis!";
328  }
329 }
std::string hitCollection_
Definition: HGCDigitizer.h:91
const HGCalGeometry * gHGCal_
Definition: HGCDigitizer.h:124
bool isValid() const
Definition: HandleBase.h:70
void accumulate(edm::Event const &e, edm::EventSetup const &c, CLHEP::HepRandomEngine *hre)
handle SimHit accumulation
const HcalGeometry * gHcal_
Definition: HGCDigitizer.h:125
void HGCDigitizer::accumulate ( PileUpEventPrincipal const &  e,
edm::EventSetup const &  c,
CLHEP::HepRandomEngine *  hre 
)

Definition at line 332 of file HGCDigitizer.cc.

References accumulate(), PileUpEventPrincipal::bunchCrossing(), Exception, PileUpEventPrincipal::getByLabel(), gHcal_, gHGCal_, hitCollection_, hfClusterShapes_cfi::hits, and edm::HandleBase::isValid().

334  {
335  //get inputs
337  e.getByLabel(edm::InputTag("g4SimHits", hitCollection_), hits);
338  if (!hits.isValid()) {
339  edm::LogError("HGCDigitizer") << " @ accumulate : can't find " << hitCollection_ << " collection of g4SimHits";
340  return;
341  }
342 
343  //accumulate for the simulated bunch crossing
344  if (nullptr != gHGCal_) {
345  accumulate(hits, e.bunchCrossing(), gHGCal_, hre);
346  } else if (nullptr != gHcal_) {
347  accumulate(hits, e.bunchCrossing(), gHcal_, hre);
348  } else {
349  throw cms::Exception("BadConfiguration") << "HGCDigitizer is not producing EE, FH, or BH digis!";
350  }
351 }
std::string hitCollection_
Definition: HGCDigitizer.h:91
const HGCalGeometry * gHGCal_
Definition: HGCDigitizer.h:124
bool isValid() const
Definition: HandleBase.h:70
void accumulate(edm::Event const &e, edm::EventSetup const &c, CLHEP::HepRandomEngine *hre)
handle SimHit accumulation
const HcalGeometry * gHcal_
Definition: HGCDigitizer.h:125
template<typename GEOM >
void HGCDigitizer::accumulate ( edm::Handle< edm::PCaloHitContainer > const &  hits,
int  bxCrossing,
const GEOM *  geom,
CLHEP::HepRandomEngine *  hre 
)

Definition at line 355 of file HGCDigitizer.cc.

References begin, bxTime_, ALCARECOTkAlJpsiMuMu_cff::charge, TauDecayModes::dec, relativeConstraints::empty, end, f, dqmdumpme::first, getWeight(), hitRefs_bx0, mps_fire::i, triggerObjects_cff::id, createfilelist::int, dqmiolumiharvest::j, hgcalTriggerNtuples_cfi::keV2fC, orderByDetIdThenTime(), producesEEDigis(), refSpeed_, edm::second(), simHitAccumulator_, findQualityFiles::size, tofDelay_, validIds_, and verbosity_.

358  {
359  if (nullptr == geom)
360  return;
361 
362  //configuration to apply for the computation of time-of-flight
363  std::array<float, 3> tdcForToAOnset{{0.f, 0.f, 0.f}};
364  float keV2fC(0.f);
365  bool weightToAbyEnergy = getWeight(tdcForToAOnset, keV2fC);
366 
367  //create list of tuples (pos in container, RECO DetId, time) to be sorted first
368  int nchits = (int)hits->size();
369  std::vector<HGCCaloHitTuple_t> hitRefs;
370  hitRefs.reserve(nchits);
371  for (int i = 0; i < nchits; ++i) {
372  const auto& the_hit = hits->at(i);
373 
374  DetId id = simToReco(geom, the_hit.id());
375 
376  if (verbosity_ > 0) {
377  if (producesEEDigis())
378  edm::LogVerbatim("HGCDigitizer") << "HGCDigitizer::i/p " << std::hex << the_hit.id() << " o/p " << id.rawId()
379  << std::dec;
380  else
381  edm::LogVerbatim("HGCDigitizer") << "HGCDigitizer::i/p " << std::hex << the_hit.id() << " o/p " << id.rawId()
382  << std::dec;
383  }
384 
385  if (0 != id.rawId()) {
386  hitRefs.emplace_back(i, id.rawId(), (float)the_hit.time());
387  }
388  }
389  std::sort(hitRefs.begin(), hitRefs.end(), this->orderByDetIdThenTime);
390 
391  //loop over sorted hits
392  nchits = hitRefs.size();
393  for (int i = 0; i < nchits; ++i) {
394  const int hitidx = std::get<0>(hitRefs[i]);
395  const uint32_t id = std::get<1>(hitRefs[i]);
396 
397  //get the data for this cell, if not available then we skip it
398 
399  if (!validIds_.count(id))
400  continue;
401  HGCSimHitDataAccumulator::iterator simHitIt = simHitAccumulator_->emplace(id, HGCCellInfo()).first;
402 
403  if (id == 0)
404  continue; // to be ignored at RECO level
405 
406  const float toa = std::get<2>(hitRefs[i]);
407  const PCaloHit& hit = hits->at(hitidx);
408  const float charge = hit.energy() * 1e6 * keV2fC;
409 
410  //distance to the center of the detector
411  const float dist2center(getPositionDistance(geom, id));
412 
413  //hit time: [time()]=ns [centerDist]=cm [refSpeed_]=cm/ns + delay by 1ns
414  //accumulate in 15 buckets of 25ns (9 pre-samples, 1 in-time, 5 post-samples)
415  const float tof = toa - dist2center / refSpeed_ + tofDelay_;
416  const int itime = std::floor(tof / bxTime_) + 9;
417 
418  //no need to add bx crossing - tof comes already corrected from the mixing module
419  //itime += bxCrossing;
420  //itime += 9;
421 
422  if (itime < 0 || itime > 14)
423  continue;
424 
425  //check if time index is ok and store energy
426  if (itime >= (int)simHitIt->second.hit_info[0].size())
427  continue;
428 
429  (simHitIt->second).hit_info[0][itime] += charge;
430 
431  //working version with pileup only for in-time hits
432  int waferThickness = getCellThickness(geom, id);
433  bool orderChanged = false;
434  if (itime == 9) {
435  if (hitRefs_bx0[id].empty()) {
436  hitRefs_bx0[id].emplace_back(charge, tof);
437  } else if (tof <= hitRefs_bx0[id].back().second) {
438  std::vector<std::pair<float, float>>::iterator findPos =
439  std::upper_bound(hitRefs_bx0[id].begin(),
440  hitRefs_bx0[id].end(),
441  std::pair<float, float>(0.f, tof),
442  [](const auto& i, const auto& j) { return i.second < j.second; });
443 
444  std::vector<std::pair<float, float>>::iterator insertedPos = hitRefs_bx0[id].insert(
445  findPos,
446  (findPos == hitRefs_bx0[id].begin()) ? std::pair<float, float>(charge, tof)
447  : std::pair<float, float>((findPos - 1)->first + charge, tof));
448 
449  for (std::vector<std::pair<float, float>>::iterator step = insertedPos + 1; step != hitRefs_bx0[id].end();
450  ++step) {
451  step->first += charge;
452  if (step->first > tdcForToAOnset[waferThickness - 1] && step->second != hitRefs_bx0[id].back().second) {
453  hitRefs_bx0[id].resize(std::upper_bound(hitRefs_bx0[id].begin(),
454  hitRefs_bx0[id].end(),
455  std::pair<float, float>(0.f, step->second),
456  [](const auto& i, const auto& j) { return i.second < j.second; }) -
457  hitRefs_bx0[id].begin());
458  for (auto stepEnd = step + 1; stepEnd != hitRefs_bx0[id].end(); ++stepEnd)
459  stepEnd->first += charge;
460  break;
461  }
462  }
463  orderChanged = true;
464  } else {
465  if (hitRefs_bx0[id].back().first <= tdcForToAOnset[waferThickness - 1]) {
466  hitRefs_bx0[id].emplace_back(hitRefs_bx0[id].back().first + charge, tof);
467  }
468  }
469  }
470 
471  float accChargeForToA = hitRefs_bx0[id].empty() ? 0.f : hitRefs_bx0[id].back().first;
472 
473  //time-of-arrival (check how to be used)
474  if (weightToAbyEnergy)
475  (simHitIt->second).hit_info[1][itime] += charge * tof;
476  else if (accChargeForToA > tdcForToAOnset[waferThickness - 1] &&
477  ((simHitIt->second).hit_info[1][itime] == 0 || orderChanged == true)) {
478  float fireTDC = hitRefs_bx0[id].back().second;
479  if (hitRefs_bx0[id].size() > 1) {
480  float chargeBeforeThr = 0.f;
481  float tofchargeBeforeThr = 0.f;
482  for (const auto& step : hitRefs_bx0[id]) {
483  if (step.first + chargeBeforeThr <= tdcForToAOnset[waferThickness - 1]) {
484  chargeBeforeThr += step.first;
485  tofchargeBeforeThr = step.second;
486  } else
487  break;
488  }
489  float deltaQ = accChargeForToA - chargeBeforeThr;
490  float deltaTOF = fireTDC - tofchargeBeforeThr;
491  fireTDC = (tdcForToAOnset[waferThickness - 1] - chargeBeforeThr) * deltaTOF / deltaQ + tofchargeBeforeThr;
492  }
493  (simHitIt->second).hit_info[1][itime] = fireTDC;
494  }
495  }
496  hitRefs.clear();
497 }
size
Write out results.
std::map< uint32_t, std::vector< std::pair< float, float > > > hitRefs_bx0
Definition: HGCDigitizer.h:146
bool producesEEDigis()
Definition: HGCDigitizer.h:73
bool getWeight(std::array< float, 3 > &tdcForToAOnset, float &keV2fC) const
U second(std::pair< T, U > const &p)
double f[11][100]
std::unordered_set< DetId > validIds_
Definition: HGCDigitizer.h:123
#define end
Definition: vmac.h:39
Definition: DetId.h:17
#define begin
Definition: vmac.h:32
step
Definition: StallMonitor.cc:94
std::unique_ptr< hgc::HGCSimHitDataAccumulator > simHitAccumulator_
Definition: HGCDigitizer.h:110
static bool orderByDetIdThenTime(const HGCCaloHitTuple_t &a, const HGCCaloHitTuple_t &b)
Definition: HGCDigitizer.h:37
double bxTime_
Definition: HGCDigitizer.h:109
uint32_t verbosity_
Definition: HGCDigitizer.h:132
void HGCDigitizer::accumulate ( const PHGCSimAccumulator simAccumulator)

Definition at line 499 of file HGCDigitizer.cc.

References f, getWeight(), hgcalTriggerNtuples_cfi::keV2fC, mtd_digitizer::loadSimHitAccumulator(), premixStage1MaxCharge_, premixStage1MinCharge_, and simHitAccumulator_.

499  {
500  //configuration to apply for the computation of time-of-flight
501  std::array<float, 3> tdcForToAOnset{{0.f, 0.f, 0.f}};
502  float keV2fC(0.f);
503  bool weightToAbyEnergy = getWeight(tdcForToAOnset, keV2fC);
505  *simHitAccumulator_, simAccumulator, premixStage1MinCharge_, premixStage1MaxCharge_, !weightToAbyEnergy);
506 }
bool getWeight(std::array< float, 3 > &tdcForToAOnset, float &keV2fC) const
double f[11][100]
double premixStage1MinCharge_
Definition: HGCDigitizer.h:103
std::unique_ptr< hgc::HGCSimHitDataAccumulator > simHitAccumulator_
Definition: HGCDigitizer.h:110
void loadSimHitAccumulator(MTDSimHitDataAccumulator &simData, const PMTDSimAccumulator &simAccumulator, const float minCharge, const float maxCharge)
Definition: MTDDigitizer.h:93
double premixStage1MaxCharge_
Definition: HGCDigitizer.h:105
void HGCDigitizer::beginRun ( const edm::EventSetup es)

actions at the start/end of run

Definition at line 509 of file HGCDigitizer.cc.

References Exception, relativeConstraints::geom, geometryType_, edm::EventSetup::get(), CaloGeometry::getSubdetectorGeometry(), gHcal_, gHGCal_, DetId::Hcal, HcalEndcap, hitCollection_, myDet_, mySubDet_, producesEEDigis(), producesHEbackDigis(), producesHEfrontDigis(), producesHFNoseDigis(), validIds_, and verbosity_.

Referenced by PreMixingHGCalWorker::beginRun(), HGCDigiProducer::beginRun(), and geometryType().

509  {
510  //get geometry
512  es.get<CaloGeometryRecord>().get(geom);
513 
514  gHGCal_ = nullptr;
515  gHcal_ = nullptr;
516 
517  if (producesEEDigis())
518  gHGCal_ = dynamic_cast<const HGCalGeometry*>(geom->getSubdetectorGeometry(myDet_, mySubDet_));
519  if (producesHEfrontDigis())
520  gHGCal_ = dynamic_cast<const HGCalGeometry*>(geom->getSubdetectorGeometry(myDet_, mySubDet_));
521  if (producesHFNoseDigis())
522  gHGCal_ = dynamic_cast<const HGCalGeometry*>(geom->getSubdetectorGeometry(myDet_, mySubDet_));
523 
524  if (producesHEbackDigis()) {
525  if (geometryType_ == 0) {
526  gHcal_ = dynamic_cast<const HcalGeometry*>(geom->getSubdetectorGeometry(DetId::Hcal, HcalEndcap));
527  } else {
528  gHGCal_ = dynamic_cast<const HGCalGeometry*>(geom->getSubdetectorGeometry(myDet_, mySubDet_));
529  }
530  }
531 
532  int nadded(0);
533  //valid ID lists
534  if (nullptr != gHGCal_) {
535  getValidDetIds(gHGCal_, validIds_);
536  } else if (nullptr != gHcal_) {
537  getValidDetIds(gHcal_, validIds_);
538  } else {
539  throw cms::Exception("BadConfiguration") << "HGCDigitizer is not producing EE, FH, or BH digis!";
540  }
541 
542  if (verbosity_ > 0)
543  edm::LogInfo("HGCDigitizer") << "Added " << nadded << ":" << validIds_.size() << " detIds without "
544  << hitCollection_ << " in first event processed" << std::endl;
545 }
const CaloSubdetectorGeometry * getSubdetectorGeometry(const DetId &id) const
access the subdetector geometry for the given subdetector directly
Definition: CaloGeometry.cc:34
ForwardSubdetector mySubDet_
Definition: HGCDigitizer.h:129
std::string hitCollection_
Definition: HGCDigitizer.h:91
DetId::Detector myDet_
Definition: HGCDigitizer.h:128
const HGCalGeometry * gHGCal_
Definition: HGCDigitizer.h:124
bool producesEEDigis()
Definition: HGCDigitizer.h:73
std::unordered_set< DetId > validIds_
Definition: HGCDigitizer.h:123
bool producesHFNoseDigis()
Definition: HGCDigitizer.h:76
bool producesHEfrontDigis()
Definition: HGCDigitizer.h:74
bool producesHEbackDigis()
Definition: HGCDigitizer.h:75
T get() const
Definition: EventSetup.h:73
const HcalGeometry * gHcal_
Definition: HGCDigitizer.h:125
uint32_t verbosity_
Definition: HGCDigitizer.h:132
void HGCDigitizer::checkPosition ( const HGCalDigiCollection digis) const
private

Definition at line 654 of file HGCDigitizer.cc.

References funct::abs(), HGCalTopology::dddConstants(), TauDecayModes::dec, DetId::Forward, relativeConstraints::geom, geometryType_, HGCalGeometry::getPosition(), gHGCal_, HFNose, DetId::HGCalEE, DetId::HGCalHSc, DetId::HGCalHSi, hfClusterShapes_cfi::hits, convertSQLiteXML::ok, PV3DBase< T, PVType, FrameType >::perp(), alignCSCRings::r, HGCalDDDConstants::rangeR(), HGCalDDDConstants::rangeZ(), AlCaHLTBitMon_QueryRunRegistry::string, HGCalGeometry::topology(), heppy_batch::val, HGCalTopology::valid(), z, and PV3DBase< T, PVType, FrameType >::z().

Referenced by finalizeEvent().

654  {
655  const double tol(0.5);
656  if (geometryType_ != 0 && nullptr != gHGCal_) {
657  for (const auto& digi : *(digis)) {
658  const DetId& id = digi.id();
659  const GlobalPoint& global = gHGCal_->getPosition(id);
660  double r = global.perp();
661  double z = std::abs(global.z());
662  std::pair<double, double> zrange = gHGCal_->topology().dddConstants().rangeZ(true);
663  std::pair<double, double> rrange = gHGCal_->topology().dddConstants().rangeR(z, true);
664  bool ok = ((r >= rrange.first) && (r <= rrange.second) && (z >= zrange.first) && (z <= zrange.second));
665  std::string ck = (((r < rrange.first - tol) || (r > rrange.second + tol) || (z < zrange.first - tol) ||
666  (z > zrange.second + tol))
667  ? "***** ERROR *****"
668  : "");
669  bool val = gHGCal_->topology().valid(id);
670  if ((!ok) || (!val)) {
671  if (id.det() == DetId::HGCalEE || id.det() == DetId::HGCalHSi) {
672  edm::LogVerbatim("HGCDigitizer") << "Check " << HGCSiliconDetId(id) << " " << global << " R " << r << ":"
673  << rrange.first << ":" << rrange.second << " Z " << z << ":" << zrange.first
674  << ":" << zrange.second << " Flag " << ok << ":" << val << " " << ck;
675  } else if (id.det() == DetId::HGCalHSc) {
676  edm::LogVerbatim("HGCDigitizer") << "Check " << HGCScintillatorDetId(id) << " " << global << " R " << r << ":"
677  << rrange.first << ":" << rrange.second << " Z " << z << ":" << zrange.first
678  << ":" << zrange.second << " Flag " << ok << ":" << val << " " << ck;
679  } else if ((id.det() == DetId::Forward) && (id.subdetId() == static_cast<int>(HFNose))) {
680  edm::LogVerbatim("HGCDigitizer") << "Check " << HFNoseDetId(id) << " " << global << " R " << r << ":"
681  << rrange.first << ":" << rrange.second << " Z " << z << ":" << zrange.first
682  << ":" << zrange.second << " Flag " << ok << ":" << val << " " << ck;
683  } else {
684  edm::LogVerbatim("HGCDigitizer")
685  << "Check " << std::hex << id.rawId() << std::dec << " " << id.det() << ":" << id.subdetId() << " "
686  << global << " R " << r << ":" << rrange.first << ":" << rrange.second << " Z " << z << ":"
687  << zrange.first << ":" << zrange.second << " Flag " << ok << ":" << val << " " << ck;
688  }
689  }
690  }
691  }
692 }
T perp() const
Definition: PV3DBase.h:69
GlobalPoint getPosition(const DetId &id) const
const HGCalGeometry * gHGCal_
Definition: HGCDigitizer.h:124
std::pair< double, double > rangeR(double z, bool reco) const
std::pair< double, double > rangeZ(bool reco) const
T z() const
Definition: PV3DBase.h:61
const HGCalTopology & topology() const
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
Definition: DetId.h:17
const HGCalDDDConstants & dddConstants() const
Definition: HGCalTopology.h:96
bool valid(const DetId &id) const override
Is this a valid cell id.
std::string HGCDigitizer::digiCollection ( )
inline

Definition at line 77 of file HGCDigitizer.h.

References digiCollection_.

Referenced by finalizeEvent(), HGCDigiProducer::HGCDigiProducer(), and PreMixingHGCalWorker::PreMixingHGCalWorker().

77 { return digiCollection_; }
std::string digiCollection_
Definition: HGCDigitizer.h:91
void HGCDigitizer::endRun ( )

Definition at line 548 of file HGCDigitizer.cc.

References edm::swap(), and validIds_.

Referenced by PreMixingHGCalWorker::endRun(), HGCDigiProducer::endRun(), and geometryType().

548 { std::unordered_set<DetId>().swap(validIds_); }
void swap(Association< C > &lhs, Association< C > &rhs)
Definition: Association.h:117
std::unordered_set< DetId > validIds_
Definition: HGCDigitizer.h:123
void HGCDigitizer::finalizeEvent ( edm::Event e,
edm::EventSetup const &  c,
CLHEP::HepRandomEngine *  hre 
)

Definition at line 242 of file HGCDigitizer.cc.

References averageOccupancies_, checkPosition(), digiCollection(), digitizationType_, getType(), gHcal_, gHGCal_, hitRefs_bx0, training_settings::idx, eostools::move(), nEvents_, premixStage1_, premixStage1MaxCharge_, premixStage1MinCharge_, producesEEDigis(), producesHEbackDigis(), producesHEfrontDigis(), producesHFNoseDigis(), edm::Event::put(), mtd_digitizer::saveSimHitAccumulator(), simHitAccumulator_, theHFNoseDigitizer_, theHGCEEDigitizer_, theHGCHEbackDigitizer_, theHGCHEfrontDigitizer_, and validIds_.

Referenced by HGCDigiProducer::finalizeEvent(), orderByDetIdThenTime(), and PreMixingHGCalWorker::put().

242  {
243  hitRefs_bx0.clear();
244 
245  const CaloSubdetectorGeometry* theGeom = (nullptr == gHGCal_ ? static_cast<const CaloSubdetectorGeometry*>(gHcal_)
246  : static_cast<const CaloSubdetectorGeometry*>(gHGCal_));
247 
248  ++nEvents_;
249  unsigned idx = getType();
250  // release memory for unfilled parts of hash table
251  if (validIds_.size() * averageOccupancies_[idx] > simHitAccumulator_->size()) {
252  simHitAccumulator_->reserve(simHitAccumulator_->size());
253  }
254  //update occupancy guess
255  const double thisOcc = simHitAccumulator_->size() / ((double)validIds_.size());
257 
258  if (premixStage1_) {
259  std::unique_ptr<PHGCSimAccumulator> simResult;
260  if (!simHitAccumulator_->empty()) {
261  simResult = std::make_unique<PHGCSimAccumulator>();
263  }
264  e.put(std::move(simResult), digiCollection());
265  } else {
266  if (producesEEDigis()) {
267  auto digiResult = std::make_unique<HGCalDigiCollection>();
268  theHGCEEDigitizer_->run(digiResult, *simHitAccumulator_, theGeom, validIds_, digitizationType_, hre);
269  edm::LogVerbatim("HGCDigitizer") << "HGCDigitizer:: finalize event - produced " << digiResult->size()
270  << " EE hits";
271 #ifdef EDM_ML_DEBUG
272  checkPosition(&(*digiResult));
273 #endif
274  e.put(std::move(digiResult), digiCollection());
275  }
276  if (producesHEfrontDigis()) {
277  auto digiResult = std::make_unique<HGCalDigiCollection>();
278  theHGCHEfrontDigitizer_->run(digiResult, *simHitAccumulator_, theGeom, validIds_, digitizationType_, hre);
279  edm::LogVerbatim("HGCDigitizer") << "HGCDigitizer:: finalize event - produced " << digiResult->size()
280  << " HE silicon hits";
281 #ifdef EDM_ML_DEBUG
282  checkPosition(&(*digiResult));
283 #endif
284  e.put(std::move(digiResult), digiCollection());
285  }
286  if (producesHEbackDigis()) {
287  auto digiResult = std::make_unique<HGCalDigiCollection>();
288  theHGCHEbackDigitizer_->run(digiResult, *simHitAccumulator_, theGeom, validIds_, digitizationType_, hre);
289  edm::LogVerbatim("HGCDigitizer") << "HGCDigitizer:: finalize event - produced " << digiResult->size()
290  << " HE Scintillator hits";
291 #ifdef EDM_ML_DEBUG
292  checkPosition(&(*digiResult));
293 #endif
294  e.put(std::move(digiResult), digiCollection());
295  }
296  if (producesHFNoseDigis()) {
297  auto digiResult = std::make_unique<HGCalDigiCollection>();
298  theHFNoseDigitizer_->run(digiResult, *simHitAccumulator_, theGeom, validIds_, digitizationType_, hre);
299  edm::LogVerbatim("HGCDigitizer") << "HGCDigitizer:: finalize event - produced " << digiResult->size()
300  << " HFNose hits";
301 #ifdef EDM_ML_DEBUG
302  checkPosition(&(*digiResult));
303 #endif
304  e.put(std::move(digiResult), digiCollection());
305  }
306  }
307 
309 }
uint32_t nEvents_
Definition: HGCDigitizer.h:142
bool premixStage1_
Definition: HGCDigitizer.h:100
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
Definition: Event.h:131
int digitizationType_
Definition: HGCDigitizer.h:97
void saveSimHitAccumulator(PMTDSimAccumulator &simResult, const MTDSimHitDataAccumulator &simData, const float minCharge, const float maxCharge)
Definition: MTDDigitizer.h:57
std::map< uint32_t, std::vector< std::pair< float, float > > > hitRefs_bx0
Definition: HGCDigitizer.h:146
std::unordered_map< uint32_t, HGCCellInfo > HGCSimHitDataAccumulator
std::unique_ptr< HFNoseDigitizer > theHFNoseDigitizer_
Definition: HGCDigitizer.h:120
const HGCalGeometry * gHGCal_
Definition: HGCDigitizer.h:124
bool producesEEDigis()
Definition: HGCDigitizer.h:73
std::unordered_set< DetId > validIds_
Definition: HGCDigitizer.h:123
bool producesHFNoseDigis()
Definition: HGCDigitizer.h:76
bool producesHEfrontDigis()
Definition: HGCDigitizer.h:74
uint32_t getType() const
std::unique_ptr< HGCHEbackDigitizer > theHGCHEbackDigitizer_
Definition: HGCDigitizer.h:118
double premixStage1MinCharge_
Definition: HGCDigitizer.h:103
void checkPosition(const HGCalDigiCollection *digis) const
bool producesHEbackDigis()
Definition: HGCDigitizer.h:75
std::unique_ptr< HGCHEfrontDigitizer > theHGCHEfrontDigitizer_
Definition: HGCDigitizer.h:119
std::unique_ptr< HGCEEDigitizer > theHGCEEDigitizer_
Definition: HGCDigitizer.h:117
std::array< double, 4 > averageOccupancies_
Definition: HGCDigitizer.h:141
std::unique_ptr< hgc::HGCSimHitDataAccumulator > simHitAccumulator_
Definition: HGCDigitizer.h:110
double premixStage1MaxCharge_
Definition: HGCDigitizer.h:105
std::string digiCollection()
Definition: HGCDigitizer.h:77
const HcalGeometry * gHcal_
Definition: HGCDigitizer.h:125
def move(src, dest)
Definition: eostools.py:511
int HGCDigitizer::geometryType ( )
inline

Definition at line 78 of file HGCDigitizer.h.

References beginRun(), endRun(), geometryType_, getType(), getWeight(), and hgcalTriggerNtuples_cfi::keV2fC.

78 { return geometryType_; }
uint32_t HGCDigitizer::getType ( void  ) const
private

Definition at line 558 of file HGCDigitizer.cc.

References DetId::Forward, geometryType_, HFNose, DetId::HGCalEE, DetId::HGCalHSc, DetId::HGCalHSi, HGCEE, HGCHEB, HGCHEF, training_settings::idx, SiStripPI::max, myDet_, and mySubDet_.

Referenced by finalizeEvent(), geometryType(), and initializeEvent().

558  {
560  if (geometryType_ == 0) {
561  switch (mySubDet_) {
563  idx = 0;
564  break;
566  idx = 1;
567  break;
569  idx = 2;
570  break;
572  idx = 3;
573  break;
574  default:
575  break;
576  }
577  } else {
578  switch (myDet_) {
579  case DetId::HGCalEE:
580  idx = 0;
581  break;
582  case DetId::HGCalHSi:
583  idx = 1;
584  break;
585  case DetId::HGCalHSc:
586  idx = 2;
587  break;
588  case DetId::Forward:
589  idx = 3;
590  break;
591  default:
592  break;
593  }
594  }
595  return idx;
596 }
ForwardSubdetector mySubDet_
Definition: HGCDigitizer.h:129
DetId::Detector myDet_
Definition: HGCDigitizer.h:128
bool HGCDigitizer::getWeight ( std::array< float, 3 > &  tdcForToAOnset,
float &  keV2fC 
) const
private

Definition at line 598 of file HGCDigitizer.cc.

References DetId::Forward, geometryType_, HFNose, DetId::HGCalEE, DetId::HGCalHSc, DetId::HGCalHSi, HGCEE, HGCHEB, HGCHEF, myDet_, mySubDet_, theHFNoseDigitizer_, theHGCEEDigitizer_, theHGCHEbackDigitizer_, and theHGCHEfrontDigitizer_.

Referenced by accumulate(), and geometryType().

598  {
599  bool weightToAbyEnergy(false);
600  if (geometryType_ == 0) {
601  switch (mySubDet_) {
603  weightToAbyEnergy = theHGCEEDigitizer_->toaModeByEnergy();
604  tdcForToAOnset = theHGCEEDigitizer_->tdcForToAOnset();
605  keV2fC = theHGCEEDigitizer_->keV2fC();
606  break;
608  weightToAbyEnergy = theHGCHEfrontDigitizer_->toaModeByEnergy();
609  tdcForToAOnset = theHGCHEfrontDigitizer_->tdcForToAOnset();
610  keV2fC = theHGCHEfrontDigitizer_->keV2fC();
611  break;
613  weightToAbyEnergy = theHGCHEbackDigitizer_->toaModeByEnergy();
614  tdcForToAOnset = theHGCHEbackDigitizer_->tdcForToAOnset();
615  keV2fC = theHGCHEbackDigitizer_->keV2fC();
616  break;
618  weightToAbyEnergy = theHFNoseDigitizer_->toaModeByEnergy();
619  tdcForToAOnset = theHFNoseDigitizer_->tdcForToAOnset();
620  keV2fC = theHFNoseDigitizer_->keV2fC();
621  break;
622  default:
623  break;
624  }
625  } else {
626  switch (myDet_) {
627  case DetId::HGCalEE:
628  weightToAbyEnergy = theHGCEEDigitizer_->toaModeByEnergy();
629  tdcForToAOnset = theHGCEEDigitizer_->tdcForToAOnset();
630  keV2fC = theHGCEEDigitizer_->keV2fC();
631  break;
632  case DetId::HGCalHSi:
633  weightToAbyEnergy = theHGCHEfrontDigitizer_->toaModeByEnergy();
634  tdcForToAOnset = theHGCHEfrontDigitizer_->tdcForToAOnset();
635  keV2fC = theHGCHEfrontDigitizer_->keV2fC();
636  break;
637  case DetId::HGCalHSc:
638  weightToAbyEnergy = theHGCHEbackDigitizer_->toaModeByEnergy();
639  tdcForToAOnset = theHGCHEbackDigitizer_->tdcForToAOnset();
640  keV2fC = theHGCHEbackDigitizer_->keV2fC();
641  break;
642  case DetId::Forward:
643  weightToAbyEnergy = theHFNoseDigitizer_->toaModeByEnergy();
644  tdcForToAOnset = theHFNoseDigitizer_->tdcForToAOnset();
645  keV2fC = theHFNoseDigitizer_->keV2fC();
646  break;
647  default:
648  break;
649  }
650  }
651  return weightToAbyEnergy;
652 }
ForwardSubdetector mySubDet_
Definition: HGCDigitizer.h:129
DetId::Detector myDet_
Definition: HGCDigitizer.h:128
std::unique_ptr< HFNoseDigitizer > theHFNoseDigitizer_
Definition: HGCDigitizer.h:120
std::unique_ptr< HGCHEbackDigitizer > theHGCHEbackDigitizer_
Definition: HGCDigitizer.h:118
std::unique_ptr< HGCHEfrontDigitizer > theHGCHEfrontDigitizer_
Definition: HGCDigitizer.h:119
std::unique_ptr< HGCEEDigitizer > theHGCEEDigitizer_
Definition: HGCDigitizer.h:117
void HGCDigitizer::initializeEvent ( edm::Event const &  e,
edm::EventSetup const &  c 
)

actions at the start/end of event

Definition at line 235 of file HGCDigitizer.cc.

References averageOccupancies_, getType(), training_settings::idx, simHitAccumulator_, and validIds_.

Referenced by HGCDigiProducer::initializeEvent(), and orderByDetIdThenTime().

235  {
236  // reserve memory for a full detector
237  unsigned idx = getType();
238  simHitAccumulator_->reserve(averageOccupancies_[idx] * validIds_.size());
239 }
std::unordered_set< DetId > validIds_
Definition: HGCDigitizer.h:123
uint32_t getType() const
std::array< double, 4 > averageOccupancies_
Definition: HGCDigitizer.h:141
std::unique_ptr< hgc::HGCSimHitDataAccumulator > simHitAccumulator_
Definition: HGCDigitizer.h:110
static bool HGCDigitizer::orderByDetIdThenTime ( const HGCCaloHitTuple_t a,
const HGCCaloHitTuple_t b 
)
inlinestatic

Definition at line 37 of file HGCDigitizer.h.

References accumulate(), HltBtagPostValidation_cff::c, MillePedeFileConverter_cfg::e, finalizeEvent(), relativeConstraints::geom, hfClusterShapes_cfi::hits, and initializeEvent().

Referenced by accumulate().

37  {
38  unsigned int detId_a(std::get<1>(a)), detId_b(std::get<1>(b));
39 
40  if (detId_a < detId_b)
41  return true;
42  if (detId_a > detId_b)
43  return false;
44 
45  double time_a(std::get<2>(a)), time_b(std::get<2>(b));
46  if (time_a < time_b)
47  return true;
48 
49  return false;
50  }
double b
Definition: hdecay.h:118
double a
Definition: hdecay.h:119
bool HGCDigitizer::producesEEDigis ( )
inline

Definition at line 73 of file HGCDigitizer.h.

References DetId::HGCalEE, HGCEE, myDet_, and mySubDet_.

Referenced by accumulate(), beginRun(), and finalizeEvent().

ForwardSubdetector mySubDet_
Definition: HGCDigitizer.h:129
DetId::Detector myDet_
Definition: HGCDigitizer.h:128
bool HGCDigitizer::producesHEbackDigis ( )
inline

Definition at line 75 of file HGCDigitizer.h.

References DetId::HGCalHSc, HGCHEB, myDet_, and mySubDet_.

Referenced by beginRun(), and finalizeEvent().

ForwardSubdetector mySubDet_
Definition: HGCDigitizer.h:129
DetId::Detector myDet_
Definition: HGCDigitizer.h:128
bool HGCDigitizer::producesHEfrontDigis ( )
inline

Definition at line 74 of file HGCDigitizer.h.

References DetId::HGCalHSi, HGCHEF, myDet_, and mySubDet_.

Referenced by beginRun(), and finalizeEvent().

ForwardSubdetector mySubDet_
Definition: HGCDigitizer.h:129
DetId::Detector myDet_
Definition: HGCDigitizer.h:128
bool HGCDigitizer::producesHFNoseDigis ( )
inline

Definition at line 76 of file HGCDigitizer.h.

References DetId::Forward, HFNose, myDet_, and mySubDet_.

Referenced by beginRun(), and finalizeEvent().

ForwardSubdetector mySubDet_
Definition: HGCDigitizer.h:129
DetId::Detector myDet_
Definition: HGCDigitizer.h:128
void HGCDigitizer::resetSimHitDataAccumulator ( )
private

Definition at line 551 of file HGCDigitizer.cc.

References simHitAccumulator_.

551  {
552  for (HGCSimHitDataAccumulator::iterator it = simHitAccumulator_->begin(); it != simHitAccumulator_->end(); it++) {
553  it->second.hit_info[0].fill(0.);
554  it->second.hit_info[1].fill(0.);
555  }
556 }
std::unique_ptr< hgc::HGCSimHitDataAccumulator > simHitAccumulator_
Definition: HGCDigitizer.h:110

Member Data Documentation

std::array<double, 4> HGCDigitizer::averageOccupancies_
private

Definition at line 141 of file HGCDigitizer.h.

Referenced by finalizeEvent(), and initializeEvent().

double HGCDigitizer::bxTime_
private

Definition at line 109 of file HGCDigitizer.h.

Referenced by accumulate(), and HGCDigitizer().

std::vector<float> HGCDigitizer::cce_
private

Definition at line 144 of file HGCDigitizer.h.

Referenced by HGCDigitizer().

std::string HGCDigitizer::digiCollection_
private

Definition at line 91 of file HGCDigitizer.h.

Referenced by digiCollection(), and HGCDigitizer().

int HGCDigitizer::digitizationType_
private

Definition at line 97 of file HGCDigitizer.h.

Referenced by finalizeEvent(), and HGCDigitizer().

double HGCDigitizer::ev_per_eh_pair_
private

Definition at line 109 of file HGCDigitizer.h.

int HGCDigitizer::geometryType_
private

Definition at line 94 of file HGCDigitizer.h.

Referenced by beginRun(), checkPosition(), geometryType(), getType(), getWeight(), and HGCDigitizer().

const HcalGeometry* HGCDigitizer::gHcal_
private

Definition at line 125 of file HGCDigitizer.h.

Referenced by accumulate(), beginRun(), and finalizeEvent().

const HGCalGeometry* HGCDigitizer::gHGCal_
private

Definition at line 124 of file HGCDigitizer.h.

Referenced by accumulate(), beginRun(), checkPosition(), and finalizeEvent().

std::string HGCDigitizer::hitCollection_
private

Definition at line 91 of file HGCDigitizer.h.

Referenced by accumulate(), beginRun(), and HGCDigitizer().

std::map<uint32_t, std::vector<std::pair<float, float> > > HGCDigitizer::hitRefs_bx0
private

Definition at line 146 of file HGCDigitizer.h.

Referenced by accumulate(), and finalizeEvent().

int HGCDigitizer::maxSimHitsAccTime_
private

Definition at line 108 of file HGCDigitizer.h.

Referenced by HGCDigitizer().

DetId::Detector HGCDigitizer::myDet_
private
ForwardSubdetector HGCDigitizer::mySubDet_
private
uint32_t HGCDigitizer::nEvents_
private

Definition at line 142 of file HGCDigitizer.h.

Referenced by finalizeEvent().

bool HGCDigitizer::premixStage1_
private

Definition at line 100 of file HGCDigitizer.h.

Referenced by finalizeEvent(), and HGCDigitizer().

double HGCDigitizer::premixStage1MaxCharge_
private

Definition at line 105 of file HGCDigitizer.h.

Referenced by accumulate(), finalizeEvent(), and HGCDigitizer().

double HGCDigitizer::premixStage1MinCharge_
private

Definition at line 103 of file HGCDigitizer.h.

Referenced by accumulate(), finalizeEvent(), and HGCDigitizer().

float HGCDigitizer::refSpeed_
private

Definition at line 135 of file HGCDigitizer.h.

Referenced by accumulate().

std::unique_ptr<hgc::HGCSimHitDataAccumulator> HGCDigitizer::simHitAccumulator_
private
std::unique_ptr<HFNoseDigitizer> HGCDigitizer::theHFNoseDigitizer_
private

Definition at line 120 of file HGCDigitizer.h.

Referenced by finalizeEvent(), getWeight(), and HGCDigitizer().

std::unique_ptr<HGCEEDigitizer> HGCDigitizer::theHGCEEDigitizer_
private

Definition at line 117 of file HGCDigitizer.h.

Referenced by finalizeEvent(), getWeight(), and HGCDigitizer().

std::unique_ptr<HGCHEbackDigitizer> HGCDigitizer::theHGCHEbackDigitizer_
private

Definition at line 118 of file HGCDigitizer.h.

Referenced by finalizeEvent(), getWeight(), and HGCDigitizer().

std::unique_ptr<HGCHEfrontDigitizer> HGCDigitizer::theHGCHEfrontDigitizer_
private

Definition at line 119 of file HGCDigitizer.h.

Referenced by finalizeEvent(), getWeight(), and HGCDigitizer().

float HGCDigitizer::tofDelay_
private

Definition at line 138 of file HGCDigitizer.h.

Referenced by accumulate(), and HGCDigitizer().

std::unordered_set<DetId> HGCDigitizer::validIds_
private
uint32_t HGCDigitizer::verbosity_
private

Definition at line 132 of file HGCDigitizer.h.

Referenced by accumulate(), beginRun(), and HGCDigitizer().