CMS 3D CMS Logo

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, photonTimeHistphotonTimeMap
 
- Public Types inherited from CaloHitResponse
enum  { BUNCHSPACE = 25 }
 
typedef std::map< DetId, CaloSamplesAnalogSignalMap
 

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

◆ photonTimeHist

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

Definition at line 31 of file HcalSiPMHitResponse.h.

◆ photonTimeMap

Definition at line 32 of file HcalSiPMHitResponse.h.

Constructor & Destructor Documentation

◆ HcalSiPMHitResponse()

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::~HcalSiPMHitResponse ( )
override

Definition at line 37 of file HcalSiPMHitResponse.cc.

37 {}

Member Function Documentation

◆ add() [1/2]

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, HcalPulseShapes::generatePhotonTime(), getReadoutFrameSize(), triggerObjects_cff::id, hit::id, CaloHitResponse::ignoreTime, createfilelist::int, invdt, edm::isNotFinite(), LogDebug, nbins, BPHMonitor_cfi::photons, precisionTimedPhotons, CaloVSimParameterMap::simParameters(), findQualityFiles::size, CaloHitResponse::theHitFilter, CaloHitResponse::theParameterMap, CaloHitResponse::thePhaseShift_, protons_cff::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 }
size
Write out results.
constexpr bool isNotFinite(T x)
Definition: isFinite.h:9
virtual int getReadoutFrameSize(const DetId &id) const
double analogSignalAmplitude(const DetId &id, float energy, const CaloSimParameters &parameters, CLHEP::HepRandomEngine *) const
virtual const CaloSimParameters & simParameters(const DetId &id) const =0
virtual bool accepts(const PCaloHit &hit) const =0
unsigned int id
std::vector< unsigned int > photonTimeHist
const CaloVSimParameterMap * theParameterMap
static double generatePhotonTime(CLHEP::HepRandomEngine *engine, unsigned int signalShape)
double timeOfFlight(const DetId &detId) const
static const double tzero[3]
const CaloVHitFilter * theHitFilter
photonTimeMap precisionTimedPhotons
#define LogDebug(id)

◆ add() [2/2]

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, CaloSamples::id(), triggerObjects_cff::id, nbins, BPHMonitor_cfi::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 }
int size() const
get the size
Definition: CaloSamples.h:24
virtual int getReadoutFrameSize(const DetId &id) const
assert(be >=bs)
DetId id() const
get the (generic) id
Definition: CaloSamples.h:21
Definition: DetId.h:17
std::vector< unsigned int > photonTimeHist
virtual void add(const PCaloHit &hit, CLHEP::HepRandomEngine *)
process a single SimHit
photonTimeMap precisionTimedPhotons

◆ addPEnoise()

void HcalSiPMHitResponse::addPEnoise ( CLHEP::HepRandomEngine *  engine)
virtual

Definition at line 144 of file HcalSiPMHitResponse.cc.

References dt, getReadoutFrameSize(), triggerObjects_cff::id, LogDebug, nbins, HcalSimParameters::photoelectronsToAnalog(), BPHMonitor_cfi::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
virtual int getReadoutFrameSize(const DetId &id) const
double sipmDarkCurrentuA(const DetId &detId) const
virtual const CaloSimParameters & simParameters(const DetId &id) const =0
std::vector< unsigned int > photonTimeHist
const CaloVSimParameterMap * theParameterMap
photonTimeMap precisionTimedPhotons
double photoelectronsToAnalog(const DetId &detId) const override
#define LogDebug(id)

◆ finalizeHits()

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(), runTheMatrix::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 }
size
Write out results.
virtual void addPEnoise(CLHEP::HepRandomEngine *engine)
virtual bool keepBlank() const
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
#define LogDebug(id)

◆ getReadoutFrameSize()

int HcalSiPMHitResponse::getReadoutFrameSize ( const DetId id) const
virtual

Definition at line 41 of file HcalSiPMHitResponse.cc.

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

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

41  {
43  int readoutFrameSize = parameters.readoutFrameSize();
45  //preserve fidelity of time info
47  }
48  return readoutFrameSize;
49 }
Main class for Parameters in different subdetectors.
virtual const CaloSimParameters & simParameters(const DetId &id) const =0
static constexpr float invDeltaTSiPM_
const CaloVSimParameterMap * theParameterMap

◆ initializeHits()

void HcalSiPMHitResponse::initializeHits ( )
overridevirtual

Initialize hits.

Reimplemented from CaloHitResponse.

Definition at line 39 of file HcalSiPMHitResponse.cc.

References precisionTimedPhotons.

39 { precisionTimedPhotons.clear(); }
photonTimeMap precisionTimedPhotons

◆ makeBlankSignal()

CaloSamples HcalSiPMHitResponse::makeBlankSignal ( const DetId detId) const
virtual

Definition at line 184 of file HcalSiPMHitResponse.cc.

References dt, getReadoutFrameSize(), nbins, hcalSimParameters_cfi::readoutFrameSize, mps_fire::result, CaloVSimParameterMap::simParameters(), and CaloHitResponse::theParameterMap.

Referenced by makeSiPMSignal().

184  {
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 }
virtual int getReadoutFrameSize(const DetId &id) const
Main class for Parameters in different subdetectors.
virtual const CaloSimParameters & simParameters(const DetId &id) const =0
const CaloVSimParameterMap * theParameterMap

◆ makeSiPMSignal()

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, MillePedeFileConverter_cfg::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 }
void setSaturationPars(const std::vector< float > &pars)
Definition: HcalSiPM.cc:192
int pixels(const DetId &detId) const
double sipmCrossTalk(const DetId &detId) const
virtual CaloSamples makeBlankSignal(const DetId &detId) const
bool doSiPMSmearing() const
virtual double hitCells(CLHEP::HepRandomEngine *, unsigned int pes, double tempDiff=0., double photonTime=0.)
Definition: HcalSiPM.cc:100
void setNCells(int nCells)
Definition: HcalSiPM.cc:143
void setTau(double tau)
Definition: HcalSiPM.cc:150
virtual const CaloSimParameters & simParameters(const DetId &id) const =0
void setCrossTalk(double xtalk)
Definition: HcalSiPM.cc:158
unsigned int signalShape(const DetId &detId) const
double pulse(double x, double y, double z, double t)
const CaloVSimParameterMap * theParameterMap
std::map< int, HcalSiPMShape > shapeMap
std::vector< float > sipmNonlinearity(const DetId &detId) const
#define LogDebug(id)
double sipmTau() const

◆ setDetIds()

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

◆ dt

double HcalSiPMHitResponse::dt
private

Definition at line 58 of file HcalSiPMHitResponse.h.

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

◆ HighFidelityPreMix

bool HcalSiPMHitResponse::HighFidelityPreMix
private

Definition at line 56 of file HcalSiPMHitResponse.h.

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

◆ invdt

double HcalSiPMHitResponse::invdt
private

Definition at line 58 of file HcalSiPMHitResponse.h.

Referenced by add().

◆ nbins

int HcalSiPMHitResponse::nbins
private

Definition at line 57 of file HcalSiPMHitResponse.h.

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

◆ precisionTimedPhotons

photonTimeMap HcalSiPMHitResponse::precisionTimedPhotons
private

Definition at line 60 of file HcalSiPMHitResponse.h.

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

◆ PreMixDigis

bool HcalSiPMHitResponse::PreMixDigis
private

Definition at line 55 of file HcalSiPMHitResponse.h.

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

◆ shapeMap

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

Definition at line 64 of file HcalSiPMHitResponse.h.

Referenced by HcalSiPMHitResponse(), and makeSiPMSignal().

◆ theDetIds

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

Definition at line 62 of file HcalSiPMHitResponse.h.

Referenced by addPEnoise(), and setDetIds().

◆ theSiPM

HcalSiPM HcalSiPMHitResponse::theSiPM
private

Definition at line 54 of file HcalSiPMHitResponse.h.

Referenced by makeSiPMSignal().