13 #include "CLHEP/Random/RandPoissonQ.h" 16 #include "CLHEP/Units/GlobalPhysicalConstants.h" 17 #include "CLHEP/Units/GlobalSystemOfUnits.h" 21 : m_parameterMap(parameterMap),
23 m_hitCorrection(nullptr),
24 m_PECorrection(nullptr),
32 m_useLCcorrection(
false) {}
83 for (
unsigned int i(0);
i !=
size; ++
i) {
101 const int rsize(
result.size());
103 if (rsize !=
hit.size()) {
104 throw cms::Exception(
"EcalDigitization") <<
"CaloSamples and EcalSamples have different sizes. Type Mismatach";
113 return (m_minBunch <= bunchCrossing && m_maxBunch >= bunchCrossing);
125 const int bunch(hitItr.bunch());
149 double binTime(
tzero);
153 const unsigned int rsize(
result.size());
155 for (
unsigned int bin(0);
bin != rsize; ++
bin) {
180 double lasercalib = 1.;
184 lasercalib =
cache->second;
195 npe = CLHEP::RandPoissonQ::shoot(engine, npe);
205 assert(
nullptr != cellGeometry);
206 return cellGeometry->getPosition().mag() * cm / c_light;
const CaloVShape * m_shape
const CaloSubdetectorGeometry * geometry() const
double findLaserConstant(const DetId &detId) const
virtual void run(MixCollection< PCaloHit > &hits, CLHEP::HepRandomEngine *)
double analogSignalAmplitude(const DetId &id, double energy, CLHEP::HepRandomEngine *)
constexpr bool isNotFinite(T x)
const CaloSimParameters * params(const DetId &detId) const
void setEventTime(const edm::TimeValue_t &iTime)
virtual ~EcalHitResponse()
virtual void initializeHits()
virtual void putAnalogSignal(const PCaloHit &inputHit, CLHEP::HepRandomEngine *)
Electronic response of the preamp.
bool withinBunchRange(int bunchCrossing) const
Main class for Parameters in different subdetectors.
void setHitFilter(const CaloVHitFilter *filter)
virtual double correctPE(const DetId &detId, double npe, CLHEP::HepRandomEngine *) const =0
void setHitCorrection(const CaloVHitCorrection *hitCorrection)
void setBunchRange(int minBunch, int maxBunch)
double timeOfFlight(const DetId &detId) const
void setLaserConstants(const EcalLaserDbService *laser, bool &useLCcorrection)
std::unordered_map< uint32_t, double > CalibCache
EcalHitResponse(const CaloVSimParameterMap *parameterMap, const CaloVShape *shape)
std::vector< unsigned int > VecInd
void setPhaseShift(double phaseShift)
void blankOutUsedSamples()
const CaloVHitCorrection * m_hitCorrection
virtual double timeToRise() const =0
virtual const CaloSimParameters & simParameters(const DetId &id) const =0
virtual bool accepts(const PCaloHit &hit) const =0
float getLaserCorrection(DetId const &xid, edm::Timestamp const &iTime) const
const EcalLaserDbService * m_lasercals
unsigned long long TimeValue_t
virtual double delay(const PCaloHit &hit, CLHEP::HepRandomEngine *) const =0
void setGeometry(const CaloSubdetectorGeometry *geometry)
const CaloSubdetectorGeometry * m_geometry
double phaseShift() const
const CaloVSimParameterMap * m_parameterMap
void setPECorrection(const CaloVPECorrection *peCorrection)
const CaloVPECorrection * m_PECorrection
CalibCache m_laserCalibCache
const CaloVHitFilter * hitFilter() const
static const double tzero[3]
EcalSamples * findSignal(const DetId &detId)
const EcalSamples * findDetId(const DetId &detId) const
virtual EcalSamples * vSamAll(unsigned int i)=0
void add(const EcalSamples *pSam)
const CaloVHitFilter * m_hitFilter
virtual void finalizeHits()
const float kSamplePeriod
const CaloVShape * shape() const