13 #include "CLHEP/Random/RandPoissonQ.h"
16 #include "CLHEP/Units/GlobalPhysicalConstants.h"
17 #include "CLHEP/Units/GlobalSystemOfUnits.h"
24 m_parameterMap ( parameterMap ) ,
26 m_hitCorrection ( 0 ) ,
27 m_PECorrection ( 0 ) ,
35 m_useLCcorrection ( 0 )
128 for(
unsigned int i ( 0 ) ;
i !=
size ; ++
i )
147 const DetId detId ( hit.
id() ) ;
151 const int rsize ( result.size() ) ;
153 if(rsize != hit.
size()) {
155 <<
"CaloSamples and EcalSamples have different sizes. Type Mismatach";
158 for(
int bin ( 0 ) ;
bin != rsize ; ++
bin )
160 result[
bin ] += hit[
bin ] ;
169 return(m_minBunch <= bunchCrossing && m_maxBunch >= bunchCrossing);
189 hitItr != hits.
end() ; ++hitItr )
192 const int bunch ( hitItr.bunch() ) ;
204 const DetId detId ( hit.
id() ) ;
210 double time = hit.
time();
219 + parameters->timePhase()
223 double binTime ( tzero ) ;
227 const unsigned int rsize ( result.
size() ) ;
229 for(
unsigned int bin ( 0 ) ;
bin != rsize ; ++
bin )
231 result[
bin ] += (*
shape())( binTime )*signal ;
260 double lasercalib = 1.;
264 lasercalib = cache->second;
275 npe = CLHEP::RandPoissonQ::shoot(engine, npe);
286 assert( 0 != cellGeometry ) ;
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
std::vector< unsigned int > VecInd
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
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
virtual double correctPE(const DetId &detId, double npe, CLHEP::HepRandomEngine *) const =0
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
double phaseShift() const
const CaloVHitFilter * hitFilter() const
EcalHitResponse(const CaloVSimParameterMap *parameterMap, const CaloVShape *shape)
void setPhaseShift(double phaseShift)
void blankOutUsedSamples()
const CaloVHitCorrection * m_hitCorrection
double simHitToPhotoelectrons() const
virtual double timeToRise() const =0
virtual const CaloSimParameters & simParameters(const DetId &id) const =0
virtual bool accepts(const PCaloHit &hit) const =0
const EcalLaserDbService * m_lasercals
int subdetId() const
get the contents of the subdetector field (not cast into any detector's numbering enum) ...
unsigned long long TimeValue_t
virtual double delay(const PCaloHit &hit, CLHEP::HepRandomEngine *) const =0
void setGeometry(const CaloSubdetectorGeometry *geometry)
const CaloSubdetectorGeometry * m_geometry
const CaloSubdetectorGeometry * geometry() const
int size() const
get the size
const CaloVSimParameterMap * m_parameterMap
void setPECorrection(const CaloVPECorrection *peCorrection)
const CaloVPECorrection * m_PECorrection
CalibCache m_laserCalibCache
ESHandle< TrackerGeometry > geometry
std::unordered_map< uint32_t, double > CalibCache
static const double tzero[3]
EcalSamples * findSignal(const DetId &detId)
DetId id() const
get the (generic) id
virtual EcalSamples * vSamAll(unsigned int i)=0
const GlobalPoint & getPosition() const
Returns the position of reference for this cell.
void add(const EcalSamples *pSam)
const CaloVHitFilter * m_hitFilter
bool withinBunchRange(int bunchCrossing) const
tuple size
Write out results.
virtual void finalizeHits()