26 CaloHitResponse(parameterMap, shape), theSiPM(0), theRecoveryTime(250.) {
37 typedef std::multiset <const PCaloHit *, PCaloHitCompareTimes> SortedHitSet;
39 std::map< DetId, SortedHitSet > sortedhits;
41 hitItr != hits.
end(); ++hitItr) {
43 !(
isnan(hitItr->time())) &&
46 if (sortedhits.find(
id)==sortedhits.end())
47 sortedhits.insert(std::pair<DetId, SortedHitSet>(
id, SortedHitSet()));
48 sortedhits[
id].insert(&(*hitItr));
51 int pixelIntegral, oldIntegral;
54 for (std::map<DetId, SortedHitSet>::iterator
i = sortedhits.begin();
55 i!=sortedhits.end(); ++
i) {
57 for (SortedHitSet::iterator itr =
i->second.begin();
58 itr !=
i->second.end(); ++itr) {
61 oldIntegral = pixelIntegral;
88 int photons =
static_cast<int>(signal + 0.5);
91 signal = double(pixels);
99 const double tzero = pars.timePhase() - jitter -
101 double binTime =
tzero;
104 result[
bin] += (*theShape)(binTime)*signal;
A general implementation for the response of a SiPM.
CaloSamples makeBlankSignal(const DetId &detId) const
creates an empty signal for this DetId
HcalSiPMHitResponse(const CaloVSimParameterMap *parameterMap, const CaloVShape *shape)
bool operator()(const PCaloHit *a, const PCaloHit *b) const
Electronic response of the preamp.
virtual CaloSamples makeSiPMSignal(const PCaloHit &inHit, int &integral) const
int getIntegral(double time)
Creates electronics signals from hits.
virtual void correct(PCaloHit &hit) const =0
void setNCells(int nCells)
virtual void add(const PCaloHit &hit)
process a single SimHit
virtual const CaloSimParameters & simParameters(const DetId &id) const =0
virtual bool accepts(const PCaloHit &hit) const =0
void initRandomEngine(CLHEP::HepRandomEngine &engine)
double timeOfFlight(const DetId &detId) const
const CaloVHitCorrection * theHitCorrection
Integral< F, X >::type integral(const F &f)
double analogSignalAmplitude(const PCaloHit &hit, const CaloSimParameters ¶meters) const
virtual int hitCells(int photons, int integral=0) const
virtual void setRandomEngine(CLHEP::HepRandomEngine &engine)
const CaloVSimParameterMap * theParameterMap
int size() const
get the size
virtual void run(MixCollection< PCaloHit > &hits)
Complete cell digitization.
static const double tzero[3]
const CaloVHitFilter * theHitFilter
virtual void setRandomEngine(CLHEP::HepRandomEngine &engine)
void addToHistory(double time, int pixels)
virtual ~HcalSiPMHitResponse()