CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
List of all members | Public Types | Public Member Functions | Protected Member Functions | Private Attributes
HcalSiPMHitResponse Class Reference

#include <HcalSiPMHitResponse.h>

Inheritance diagram for HcalSiPMHitResponse:
CaloHitResponse

Public Types

typedef std::vector< unsigned int > photonTimeHist
 
typedef std::map< DetId,
photonTimeHist
photonTimeMap
 
- Public Types inherited from CaloHitResponse
enum  { BUNCHSPACE = 25 }
 
typedef std::map< DetId,
CaloSamples
AnalogSignalMap
 

Public Member Functions

void add (const PCaloHit &hit, CLHEP::HepRandomEngine *) override
 process a single SimHit More...
 
void add (const CaloSamples &signal) override
 add a signal, in units of pe More...
 
virtual void addPEnoise (CLHEP::HepRandomEngine *engine)
 
void finalizeHits (CLHEP::HepRandomEngine *) override
 Finalize hits. More...
 
virtual int getReadoutFrameSize (const DetId &id) const
 
 HcalSiPMHitResponse (const CaloVSimParameterMap *parameterMap, const CaloShapes *shapes, bool PreMix1=false, bool HighFidelity=true)
 
void initializeHits () override
 Initialize hits. More...
 
virtual CaloSamples makeBlankSignal (const DetId &detId) const
 
virtual void setDetIds (const std::vector< DetId > &detIds)
 
 ~HcalSiPMHitResponse () override
 
- Public Member Functions inherited from CaloHitResponse
void addHit (const PCaloHit *hit, CaloSamples &frame) const
 adds the amplitude for a single hit to the frame More...
 
double analogSignalAmplitude (const DetId &id, float energy, const CaloSimParameters &parameters, CLHEP::HepRandomEngine *) const
 
 CaloHitResponse (const CaloVSimParameterMap *parameterMap, const CaloVShape *shape, bool PreMix1=false, bool HighFidelity=false)
 
 CaloHitResponse (const CaloVSimParameterMap *parameterMap, const CaloShapes *shapes, bool PreMix1=false, bool HighFidelity=false)
 
void clear ()
 frees up memory More...
 
CaloSamplesfindSignal (const DetId &detId)
 users can look for the signal for a given cell More...
 
int getReadoutFrameSize (const DetId &id) const
 
virtual bool keepBlank () const
 
virtual CaloSamples makeAnalogSignal (const PCaloHit &inputHit, CLHEP::HepRandomEngine *) const
 creates the signal corresponding to this hit More...
 
CaloSamples makeBlankSignal (const DetId &detId) const
 creates an empty signal for this DetId More...
 
int nSignals () const
 number of signals in the current cache More...
 
virtual void run (const MixCollection< PCaloHit > &hits, CLHEP::HepRandomEngine *)
 Complete cell digitization. More...
 
void setBunchRange (int minBunch, int maxBunch)
 tells it which pileup bunches to do More...
 
void setGeometry (const CaloGeometry *geometry)
 geometry needed for time-of-flight More...
 
void setHitCorrection (const CaloVHitCorrection *hitCorrection)
 If you want to correct hits, for attenuation or delay, set this. More...
 
void setHitFilter (const CaloVHitFilter *filter)
 
void setIgnoreGeantTime (bool gt)
 
void setPECorrection (const CaloVPECorrection *peCorrection)
 if you want to correct the photoelectrons More...
 
void setPhaseShift (const double &thePhaseShift)
 setting the phase shift for asynchronous trigger (e.g. test beams) More...
 
void setStorePrecise (bool sp)
 
double timeOfFlight (const DetId &detId) const
 
bool withinBunchRange (int bunchCrossing) const
 check if crossing is within bunch range: More...
 
virtual ~CaloHitResponse ()
 doesn't delete the pointers passed in More...
 

Protected Member Functions

virtual CaloSamples makeSiPMSignal (DetId const &id, photonTimeHist const &photons, CLHEP::HepRandomEngine *)
 

Private Attributes

double dt
 
bool HighFidelityPreMix
 
double invdt
 
int nbins
 
photonTimeMap precisionTimedPhotons
 
bool PreMixDigis
 
std::map< int, HcalSiPMShapeshapeMap
 
const std::vector< DetId > * theDetIds
 
HcalSiPM theSiPM
 

Additional Inherited Members

- Static Public Attributes inherited from CaloHitResponse
static constexpr double dt = 0.5
 
static constexpr int invdt = 2
 
- Protected Attributes inherited from CaloHitResponse
bool highFidelityPreMix
 
bool ignoreTime
 
bool preMixDigis
 
bool storePrecise
 
AnalogSignalMap theAnalogSignalMap
 
const CaloGeometrytheGeometry
 
const CaloVHitCorrectiontheHitCorrection
 
const CaloVHitFiltertheHitFilter
 
int theMaxBunch
 
int theMinBunch
 
const CaloVSimParameterMaptheParameterMap
 
const CaloVPECorrectionthePECorrection
 
double thePhaseShift_
 
const CaloVShapetheShape
 
const CaloShapestheShapes
 

Detailed Description

Definition at line 22 of file HcalSiPMHitResponse.h.

Member Typedef Documentation

typedef std::vector<unsigned int> HcalSiPMHitResponse::photonTimeHist

Definition at line 31 of file HcalSiPMHitResponse.h.

Definition at line 32 of file HcalSiPMHitResponse.h.

Constructor & Destructor Documentation

HcalSiPMHitResponse::HcalSiPMHitResponse ( const CaloVSimParameterMap parameterMap,
const CaloShapes shapes,
bool  PreMix1 = false,
bool  HighFidelity = true 
)

Definition at line 19 of file HcalSiPMHitResponse.cc.

References HcalShapes::HAMAMATSU, HcalShapes::HE2017, HcalShapes::HE2018, shapeMap, and HcalShapes::ZECOTEK.

23  : CaloHitResponse(parameterMap, shapes),
24  theSiPM(),
25  PreMixDigis(PreMix1),
26  HighFidelityPreMix(HighFidelity),
30  //fill shape map
35 }
CaloHitResponse(const CaloVSimParameterMap *parameterMap, const CaloVShape *shape, bool PreMix1=false, bool HighFidelity=false)
static constexpr float invDeltaTSiPM_
static constexpr float deltaTSiPM_
std::map< int, HcalSiPMShape > shapeMap
HcalSiPMHitResponse::~HcalSiPMHitResponse ( )
override

Definition at line 37 of file HcalSiPMHitResponse.cc.

37 {}

Member Function Documentation

void HcalSiPMHitResponse::add ( const PCaloHit hit,
CLHEP::HepRandomEngine *  engine 
)
overridevirtual

process a single SimHit

Reimplemented from CaloHitResponse.

Definition at line 100 of file HcalSiPMHitResponse.cc.

References CaloVHitFilter::accepts(), CaloHitResponse::analogSignalAmplitude(), CaloHitResponse::BUNCHSPACE, dt, PCaloHit::energy(), HcalPulseShapes::generatePhotonTime(), getReadoutFrameSize(), gpuClustering::id, PCaloHit::id(), CaloHitResponse::ignoreTime, invdt, edm::isNotFinite(), LogDebug, nbins, interactiveExample::photons, precisionTimedPhotons, CaloVSimParameterMap::simParameters(), findQualityFiles::size, CaloHitResponse::theHitFilter, CaloHitResponse::theParameterMap, CaloHitResponse::thePhaseShift_, PCaloHit::time(), CaloHitResponse::timeOfFlight(), and tzero.

Referenced by counter.Counter::register().

100  {
101  if (!edm::isNotFinite(hit.time()) && ((theHitFilter == nullptr) || (theHitFilter->accepts(hit)))) {
102  HcalDetId id(hit.id());
103  const HcalSimParameters& pars = dynamic_cast<const HcalSimParameters&>(theParameterMap->simParameters(id));
104  //divide out mean of crosstalk distribution 1/(1-lambda) = multiply by (1-lambda)
105  double signal(analogSignalAmplitude(id, hit.energy(), pars, engine) * (1 - pars.sipmCrossTalk(id)));
106  unsigned int photons(signal + 0.5);
107  double tof(timeOfFlight(id));
108  double time(hit.time());
109  if (ignoreTime)
110  time = tof;
111 
112  if (photons > 0)
113  if (precisionTimedPhotons.find(id) == precisionTimedPhotons.end()) {
114  precisionTimedPhotons.insert(
115  std::pair<DetId, photonTimeHist>(id, photonTimeHist(nbins * getReadoutFrameSize(id), 0)));
116  }
117 
118  LogDebug("HcalSiPMHitResponse") << id;
119  LogDebug("HcalSiPMHitResponse") << " fCtoGeV: " << pars.fCtoGeV(id)
120  << " samplingFactor: " << pars.samplingFactor(id)
121  << " photoelectronsToAnalog: " << pars.photoelectronsToAnalog(id)
122  << " simHitToPhotoelectrons: " << pars.simHitToPhotoelectrons(id);
123  LogDebug("HcalSiPMHitResponse") << " energy: " << hit.energy() << " photons: " << photons << " time: " << time;
124  LogDebug("HcalSiPMHitResponse") << " timePhase: " << pars.timePhase() << " tof: " << tof
125  << " binOfMaximum: " << pars.binOfMaximum() << " phaseShift: " << thePhaseShift_;
126  double tzero(0.0 + pars.timePhase() - (time - tof) - BUNCHSPACE * (pars.binOfMaximum() - thePhaseShift_));
127  LogDebug("HcalSiPMHitResponse") << " tzero: " << tzero;
128  double tzero_bin(-tzero * invdt);
129  LogDebug("HcalSiPMHitResponse") << " corrected tzero: " << tzero_bin << '\n';
130  double t_pe(0.);
131  int t_bin(0);
132  unsigned signalShape = pars.signalShape(id);
133  for (unsigned int pe(0); pe < photons; ++pe) {
134  t_pe = HcalPulseShapes::generatePhotonTime(engine, signalShape);
135  t_bin = int(t_pe * invdt + tzero_bin + 0.5);
136  LogDebug("HcalSiPMHitResponse") << "t_pe: " << t_pe << " t_pe + tzero: " << (t_pe + tzero_bin * dt)
137  << " t_bin: " << t_bin << '\n';
138  if ((t_bin >= 0) && (static_cast<unsigned int>(t_bin) < precisionTimedPhotons[id].size()))
139  precisionTimedPhotons[id][t_bin] += 1;
140  }
141  }
142 }
double time() const
Definition: PCaloHit.h:30
uint16_t *__restrict__ id
constexpr bool isNotFinite(T x)
Definition: isFinite.h:9
double energy() const
Definition: PCaloHit.h:24
virtual const CaloSimParameters & simParameters(const DetId &id) const =0
virtual bool accepts(const PCaloHit &hit) const =0
unsigned int id() const
Definition: PCaloHit.h:37
double timeOfFlight(const DetId &detId) const
virtual int getReadoutFrameSize(const DetId &id) const
double analogSignalAmplitude(const DetId &id, float energy, const CaloSimParameters &parameters, CLHEP::HepRandomEngine *) const
std::vector< unsigned int > photonTimeHist
const CaloVSimParameterMap * theParameterMap
static double generatePhotonTime(CLHEP::HepRandomEngine *engine, unsigned int signalShape)
static const double tzero[3]
const CaloVHitFilter * theHitFilter
photonTimeMap precisionTimedPhotons
tuple size
Write out results.
#define LogDebug(id)
void HcalSiPMHitResponse::add ( const CaloSamples signal)
overridevirtual

add a signal, in units of pe

Reimplemented from CaloHitResponse.

Definition at line 83 of file HcalSiPMHitResponse.cc.

References CaloHitResponse::add(), cms::cuda::assert(), getReadoutFrameSize(), HighFidelityPreMix, mps_fire::i, gpuClustering::id, CaloSamples::id(), nbins, interactiveExample::photons, precisionTimedPhotons, and CaloSamples::size().

Referenced by counter.Counter::register().

83  {
84  if (!HighFidelityPreMix) {
85  CaloHitResponse::add(signal);
86  return;
87  }
88  DetId id(signal.id());
89  int photonTimeHistSize = nbins * getReadoutFrameSize(id);
90  assert(photonTimeHistSize == signal.size());
91  if (precisionTimedPhotons.find(id) == precisionTimedPhotons.end()) {
92  precisionTimedPhotons.insert(std::pair<DetId, photonTimeHist>(id, photonTimeHist(photonTimeHistSize, 0)));
93  }
94  for (int i = 0; i < signal.size(); ++i) {
95  unsigned int photons(signal[i] + 0.5);
97  }
98 }
uint16_t *__restrict__ id
assert(be >=bs)
virtual int getReadoutFrameSize(const DetId &id) const
Definition: DetId.h:17
std::vector< unsigned int > photonTimeHist
int size() const
get the size
Definition: CaloSamples.h:24
virtual void add(const PCaloHit &hit, CLHEP::HepRandomEngine *)
process a single SimHit
DetId id() const
get the (generic) id
Definition: CaloSamples.h:21
photonTimeMap precisionTimedPhotons
void HcalSiPMHitResponse::addPEnoise ( CLHEP::HepRandomEngine *  engine)
virtual

Definition at line 144 of file HcalSiPMHitResponse.cc.

References dt, getReadoutFrameSize(), gpuClustering::id, LogDebug, nbins, HcalSimParameters::photoelectronsToAnalog(), interactiveExample::photons, precisionTimedPhotons, CaloVSimParameterMap::simParameters(), HcalSimParameters::sipmDarkCurrentuA(), theDetIds, and CaloHitResponse::theParameterMap.

Referenced by finalizeHits().

144  {
145  // Add SiPM dark current noise to all cells
146  for (std::vector<DetId>::const_iterator idItr = theDetIds->begin(); idItr != theDetIds->end(); ++idItr) {
147  HcalDetId id(*idItr);
148  const HcalSimParameters& pars = static_cast<const HcalSimParameters&>(theParameterMap->simParameters(id));
149 
150  // uA * ns / (fC/pe) = pe!
151  double dc_pe_avg = pars.sipmDarkCurrentuA(id) * dt / pars.photoelectronsToAnalog(id);
152 
153  if (dc_pe_avg <= 0.)
154  continue;
155 
156  int nPreciseBins = nbins * getReadoutFrameSize(id);
157 
158  unsigned int sumnoisePE(0);
159  double elapsedTime(0.);
160  for (int tprecise(0); tprecise < nPreciseBins; ++tprecise) {
161  int noisepe = CLHEP::RandPoissonQ::shoot(engine, dc_pe_avg); // add dark current noise
162 
163  if (noisepe > 0) {
164  if (precisionTimedPhotons.find(id) == precisionTimedPhotons.end()) {
165  photonTimeHist photons(nPreciseBins, 0);
166  photons[tprecise] = noisepe;
167  precisionTimedPhotons.insert(std::pair<DetId, photonTimeHist>(id, photons));
168  } else {
169  precisionTimedPhotons[id][tprecise] += noisepe;
170  }
171 
172  sumnoisePE += noisepe;
173  }
174  elapsedTime += dt;
175 
176  } // precise time loop
177 
178  LogDebug("HcalSiPMHitResponse") << id;
179  LogDebug("HcalSiPMHitResponse") << " total noise (PEs): " << sumnoisePE;
180 
181  } // detId loop
182 } // HcalSiPMHitResponse::addPEnoise()
const std::vector< DetId > * theDetIds
uint16_t *__restrict__ id
virtual const CaloSimParameters & simParameters(const DetId &id) const =0
virtual int getReadoutFrameSize(const DetId &id) const
std::vector< unsigned int > photonTimeHist
double sipmDarkCurrentuA(const DetId &detId) const
const CaloVSimParameterMap * theParameterMap
photonTimeMap precisionTimedPhotons
double photoelectronsToAnalog(const DetId &detId) const override
#define LogDebug(id)
void HcalSiPMHitResponse::finalizeHits ( CLHEP::HepRandomEngine *  )
overridevirtual

Finalize hits.

Reimplemented from CaloHitResponse.

Definition at line 51 of file HcalSiPMHitResponse.cc.

References CaloHitResponse::add(), addPEnoise(), HighFidelityPreMix, mps_fire::i, CaloSamples::id(), keep, CaloHitResponse::keepBlank(), LogDebug, makeSiPMSignal(), precisionTimedPhotons, PreMixDigis, CaloSamples::setPreciseSize(), CaloSamples::size(), and findQualityFiles::size.

51  {
52  //do not add PE noise for initial premix
53  if (!PreMixDigis)
54  addPEnoise(engine);
55 
56  photonTimeMap::iterator channelPhotons;
57  for (channelPhotons = precisionTimedPhotons.begin(); channelPhotons != precisionTimedPhotons.end();
58  ++channelPhotons) {
59  CaloSamples signal(makeSiPMSignal(channelPhotons->first, channelPhotons->second, engine));
60  bool keep(keepBlank());
61  if (!keep) {
62  const unsigned int size(signal.size());
63  if (0 != size) {
64  for (unsigned int i(0); i != size; ++i) {
65  keep = keep || signal[i] > 1.e-7;
66  }
67  }
68  }
69 
70  LogDebug("HcalSiPMHitResponse") << HcalDetId(signal.id()) << ' ' << signal;
71 
72  //if we don't want to keep precise info at the end
73  if (!HighFidelityPreMix) {
74  signal.setPreciseSize(0);
75  }
76 
77  if (keep)
78  CaloHitResponse::add(signal);
79  }
80 }
virtual bool keepBlank() const
virtual void addPEnoise(CLHEP::HepRandomEngine *engine)
const int keep
virtual CaloSamples makeSiPMSignal(DetId const &id, photonTimeHist const &photons, CLHEP::HepRandomEngine *)
virtual void add(const PCaloHit &hit, CLHEP::HepRandomEngine *)
process a single SimHit
photonTimeMap precisionTimedPhotons
tuple size
Write out results.
#define LogDebug(id)
int HcalSiPMHitResponse::getReadoutFrameSize ( const DetId id) const
virtual

Definition at line 41 of file HcalSiPMHitResponse.cc.

References CaloHitResponse::BUNCHSPACE, HighFidelityPreMix, HcalPulseShapes::invDeltaTSiPM_, PreMixDigis, CaloSimParameters::readoutFrameSize(), CaloVSimParameterMap::simParameters(), and CaloHitResponse::theParameterMap.

Referenced by add(), addPEnoise(), and makeBlankSignal().

41  {
43  int readoutFrameSize = parameters.readoutFrameSize();
45  //preserve fidelity of time info
46  readoutFrameSize *= BUNCHSPACE * HcalPulseShapes::invDeltaTSiPM_;
47  }
48  return readoutFrameSize;
49 }
Main class for Parameters in different subdetectors.
virtual const CaloSimParameters & simParameters(const DetId &id) const =0
int readoutFrameSize() const
for now, the LinearFrames and trhe digis will be one-to-one.
static constexpr float invDeltaTSiPM_
const CaloVSimParameterMap * theParameterMap
void HcalSiPMHitResponse::initializeHits ( )
overridevirtual

Initialize hits.

Reimplemented from CaloHitResponse.

Definition at line 39 of file HcalSiPMHitResponse.cc.

References precisionTimedPhotons.

39 { precisionTimedPhotons.clear(); }
photonTimeMap precisionTimedPhotons
CaloSamples HcalSiPMHitResponse::makeBlankSignal ( const DetId detId) const
virtual

Definition at line 184 of file HcalSiPMHitResponse.cc.

References CaloSimParameters::binOfMaximum(), dt, getReadoutFrameSize(), nbins, CaloSamples::presamples(), mps_fire::result, CaloSamples::setPrecise(), CaloSamples::setPresamples(), CaloVSimParameterMap::simParameters(), and CaloHitResponse::theParameterMap.

Referenced by makeSiPMSignal().

184  {
186  int readoutFrameSize = getReadoutFrameSize(detId);
187  int preciseSize(readoutFrameSize * nbins);
188  CaloSamples result(detId, readoutFrameSize, preciseSize);
189  result.setPresamples(parameters.binOfMaximum() - 1);
190  result.setPrecise(result.presamples() * nbins, dt);
191  return result;
192 }
Main class for Parameters in different subdetectors.
tuple result
Definition: mps_fire.py:311
virtual const CaloSimParameters & simParameters(const DetId &id) const =0
virtual int getReadoutFrameSize(const DetId &id) const
const CaloVSimParameterMap * theParameterMap
int binOfMaximum() const
CaloSamples HcalSiPMHitResponse::makeSiPMSignal ( DetId const &  id,
photonTimeHist const &  photons,
CLHEP::HepRandomEngine *  engine 
)
protectedvirtual

Definition at line 194 of file HcalSiPMHitResponse.cc.

References HcalSimParameters::doSiPMSmearing(), dt, alignCSCRings::e, HighFidelityPreMix, HcalSiPM::hitCells(), LogDebug, makeBlankSignal(), nbins, HcalSimParameters::pixels(), CaloSamples::preciseAtMod(), CaloSamples::preciseSize(), PreMixDigis, pulse(), CaloSamples::resetPrecise(), HcalSiPM::setCrossTalk(), HcalSiPM::setNCells(), HcalSiPM::setSaturationPars(), HcalSiPM::setTau(), shapeMap, HcalSimParameters::signalShape(), CaloVSimParameterMap::simParameters(), HcalSimParameters::sipmCrossTalk(), HcalSimParameters::sipmNonlinearity(), HcalSimParameters::sipmTau(), CaloHitResponse::theParameterMap, and theSiPM.

Referenced by finalizeHits().

196  {
197  const HcalSimParameters& pars = static_cast<const HcalSimParameters&>(theParameterMap->simParameters(id));
198  theSiPM.setNCells(pars.pixels(id));
199  theSiPM.setTau(pars.sipmTau());
202 
203  //use to make signal
204  CaloSamples signal(makeBlankSignal(id));
205  int sampleBin(0), preciseBin(0);
206  signal.resetPrecise();
207  unsigned int pe(0);
208  double hitPixels(0.), elapsedTime(0.);
209  unsigned int sumPE(0);
210  double sumHits(0.);
211 
212  auto& sipmPulseShape(shapeMap[pars.signalShape(id)]);
213 
214  std::list<std::pair<double, double> > pulses;
215  std::list<std::pair<double, double> >::iterator pulse;
216  double timeDiff, pulseBit;
217  LogDebug("HcalSiPMHitResponse") << "makeSiPMSignal for " << HcalDetId(id);
218 
219  for (unsigned int tbin(0); tbin < photonTimeBins.size(); ++tbin) {
220  pe = photonTimeBins[tbin];
221  sumPE += pe;
222  preciseBin = tbin;
223  sampleBin = preciseBin / nbins;
224  if (pe > 0) {
225  //skip saturation/recovery and pulse smearing for premix stage 1
227  signal[sampleBin] += pe;
228  signal.preciseAtMod(preciseBin) += pe;
229  elapsedTime += dt;
230  continue;
231  }
232 
233  hitPixels = theSiPM.hitCells(engine, pe, 0., elapsedTime);
234  sumHits += hitPixels;
235  LogDebug("HcalSiPMHitResponse") << " elapsedTime: " << elapsedTime << " sampleBin: " << sampleBin
236  << " preciseBin: " << preciseBin << " pe: " << pe << " hitPixels: " << hitPixels;
237  if (pars.doSiPMSmearing()) {
238  pulses.push_back(std::pair<double, double>(elapsedTime, hitPixels));
239  } else {
240  signal[sampleBin] += hitPixels;
241  signal.preciseAtMod(preciseBin) += 0.6 * hitPixels;
242  if (preciseBin > 0)
243  signal.preciseAtMod(preciseBin - 1) += 0.2 * hitPixels;
244  if (preciseBin < signal.preciseSize() - 1)
245  signal.preciseAtMod(preciseBin + 1) += 0.2 * hitPixels;
246  }
247  }
248 
249  if (pars.doSiPMSmearing()) {
250  pulse = pulses.begin();
251  while (pulse != pulses.end()) {
252  timeDiff = elapsedTime - pulse->first;
253  pulseBit = sipmPulseShape(timeDiff) * pulse->second;
254  LogDebug("HcalSiPMHitResponse") << " pulse t: " << pulse->first << " pulse A: " << pulse->second
255  << " timeDiff: " << timeDiff << " pulseBit: " << pulseBit;
256  signal[sampleBin] += pulseBit;
257  signal.preciseAtMod(preciseBin) += pulseBit;
258 
259  if (timeDiff > 1 && sipmPulseShape(timeDiff) < 1e-7)
260  pulse = pulses.erase(pulse);
261  else
262  ++pulse;
263  }
264  }
265  elapsedTime += dt;
266  }
267 
268  return signal;
269 }
std::vector< float > sipmNonlinearity(const DetId &detId) const
double sipmTau() const
void setSaturationPars(const std::vector< float > &pars)
Definition: HcalSiPM.cc:192
int pixels(const DetId &detId) const
virtual double hitCells(CLHEP::HepRandomEngine *, unsigned int pes, double tempDiff=0., double photonTime=0.)
Definition: HcalSiPM.cc:100
unsigned int signalShape(const DetId &detId) const
void setNCells(int nCells)
Definition: HcalSiPM.cc:143
void setTau(double tau)
Definition: HcalSiPM.cc:150
bool doSiPMSmearing() const
virtual const CaloSimParameters & simParameters(const DetId &id) const =0
void setCrossTalk(double xtalk)
Definition: HcalSiPM.cc:158
virtual CaloSamples makeBlankSignal(const DetId &detId) const
double pulse(double x, double y, double z, double t)
const CaloVSimParameterMap * theParameterMap
double sipmCrossTalk(const DetId &detId) const
std::map< int, HcalSiPMShape > shapeMap
#define LogDebug(id)
void HcalSiPMHitResponse::setDetIds ( const std::vector< DetId > &  detIds)
virtual

Definition at line 271 of file HcalSiPMHitResponse.cc.

References theDetIds.

271 { theDetIds = &detIds; }
const std::vector< DetId > * theDetIds

Member Data Documentation

double HcalSiPMHitResponse::dt
private

Definition at line 58 of file HcalSiPMHitResponse.h.

Referenced by add(), addPEnoise(), makeBlankSignal(), and makeSiPMSignal().

bool HcalSiPMHitResponse::HighFidelityPreMix
private

Definition at line 56 of file HcalSiPMHitResponse.h.

Referenced by add(), finalizeHits(), getReadoutFrameSize(), and makeSiPMSignal().

double HcalSiPMHitResponse::invdt
private

Definition at line 58 of file HcalSiPMHitResponse.h.

Referenced by add().

int HcalSiPMHitResponse::nbins
private

Definition at line 57 of file HcalSiPMHitResponse.h.

Referenced by add(), addPEnoise(), makeBlankSignal(), and makeSiPMSignal().

photonTimeMap HcalSiPMHitResponse::precisionTimedPhotons
private

Definition at line 60 of file HcalSiPMHitResponse.h.

Referenced by add(), addPEnoise(), finalizeHits(), and initializeHits().

bool HcalSiPMHitResponse::PreMixDigis
private

Definition at line 55 of file HcalSiPMHitResponse.h.

Referenced by finalizeHits(), getReadoutFrameSize(), and makeSiPMSignal().

std::map<int, HcalSiPMShape> HcalSiPMHitResponse::shapeMap
private

Definition at line 64 of file HcalSiPMHitResponse.h.

Referenced by HcalSiPMHitResponse(), and makeSiPMSignal().

const std::vector<DetId>* HcalSiPMHitResponse::theDetIds
private

Definition at line 62 of file HcalSiPMHitResponse.h.

Referenced by addPEnoise(), and setDetIds().

HcalSiPM HcalSiPMHitResponse::theSiPM
private

Definition at line 54 of file HcalSiPMHitResponse.h.

Referenced by makeSiPMSignal().