13 #include "CLHEP/Random/RandPoissonQ.h" 16 #include "CLHEP/Units/GlobalPhysicalConstants.h" 17 #include "CLHEP/Units/GlobalSystemOfUnits.h" 21 : m_parameterMap(parameterMap),
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) {
156 result[
bin] += (*
shape())(binTime)*signal;
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
virtual void run(MixCollection< PCaloHit > &hits, CLHEP::HepRandomEngine *)
double analogSignalAmplitude(const DetId &id, double energy, CLHEP::HepRandomEngine *)
const CaloVShape * shape() const
double findLaserConstant(const DetId &detId) const
constexpr bool isNotFinite(T x)
void setEventTime(const edm::TimeValue_t &iTime)
virtual ~EcalHitResponse()
float getLaserCorrection(DetId const &xid, edm::Timestamp const &iTime) const
virtual void initializeHits()
virtual void putAnalogSignal(const PCaloHit &inputHit, CLHEP::HepRandomEngine *)
bool doPhotostatistics() const
whether or not to apply Poisson statistics to photoelectrons
virtual double delay(const PCaloHit &hit, CLHEP::HepRandomEngine *) const =0
Electronic response of the preamp.
double timeOfFlight(const DetId &detId) const
CaloGeometry const * getGeometry()
Main class for Parameters in different subdetectors.
void setHitFilter(const CaloVHitFilter *filter)
const CaloSimParameters * params(const DetId &detId) const
void setHitCorrection(const CaloVHitCorrection *hitCorrection)
void setBunchRange(int minBunch, int maxBunch)
void setLaserConstants(const EcalLaserDbService *laser, bool &useLCcorrection)
const EcalSamples * findDetId(const DetId &detId) const
std::unordered_map< uint32_t, double > CalibCache
virtual bool accepts(const PCaloHit &hit) const =0
virtual double timeToRise() const =0
double phaseShift() const
const CaloVHitFilter * hitFilter() const
EcalHitResponse(const CaloVSimParameterMap *parameterMap, const CaloVShape *shape)
std::vector< unsigned int > VecInd
virtual const CaloSimParameters & simParameters(const DetId &id) const =0
void setPhaseShift(double phaseShift)
void blankOutUsedSamples()
const CaloVHitCorrection * m_hitCorrection
constexpr int subdetId() const
get the contents of the subdetector field (not cast into any detector's numbering enum) ...
double simHitToPhotoelectrons() const
const EcalLaserDbService * m_lasercals
unsigned long long TimeValue_t
void setGeometry(const CaloSubdetectorGeometry *geometry)
bin
set the eta bin as selection string.
const CaloSubdetectorGeometry * m_geometry
const CaloSubdetectorGeometry * geometry() const
int size() const
get the size
const CaloVSimParameterMap * m_parameterMap
virtual double correctPE(const DetId &detId, double npe, CLHEP::HepRandomEngine *) const =0
void setPECorrection(const CaloVPECorrection *peCorrection)
const CaloVPECorrection * m_PECorrection
CalibCache m_laserCalibCache
static const double tzero[3]
EcalSamples * findSignal(const DetId &detId)
DetId id() const
get the (generic) id
virtual EcalSamples * vSamAll(unsigned int i)=0
void add(const EcalSamples *pSam)
const CaloVHitFilter * m_hitFilter
bool withinBunchRange(int bunchCrossing) const
virtual void finalizeHits()