CMS 3D CMS Logo

List of all members | Public Types | Public Member Functions | Protected Member Functions | Private Attributes
HcalSiPMHitResponse Class Referencefinal

#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(), l1ctLayer2EG_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(), l1ctLayer2EG_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(), l1ctLayer2EG_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  for (int tprecise(0); tprecise < nPreciseBins; ++tprecise) {
160  int noisepe = CLHEP::RandPoissonQ::shoot(engine, dc_pe_avg); // add dark current noise
161 
162  if (noisepe > 0) {
163  if (precisionTimedPhotons.find(id) == precisionTimedPhotons.end()) {
164  photonTimeHist photons(nPreciseBins, 0);
165  photons[tprecise] = noisepe;
166  precisionTimedPhotons.insert(std::pair<DetId, photonTimeHist>(id, photons));
167  } else {
168  precisionTimedPhotons[id][tprecise] += noisepe;
169  }
170 
171  sumnoisePE += noisepe;
172  }
173 
174  } // precise time loop
175 
176  LogDebug("HcalSiPMHitResponse") << id;
177  LogDebug("HcalSiPMHitResponse") << " total noise (PEs): " << sumnoisePE;
178 
179  } // detId loop
180 } // 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 182 of file HcalSiPMHitResponse.cc.

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

Referenced by makeSiPMSignal().

182  {
185  int preciseSize(readoutFrameSize * nbins);
186  CaloSamples result(detId, readoutFrameSize, preciseSize);
187  result.setPresamples(parameters.binOfMaximum() - 1);
188  result.setPrecise(result.presamples() * nbins, dt);
189  return result;
190 }
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 192 of file HcalSiPMHitResponse.cc.

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

Referenced by finalizeHits().

194  {
195  const HcalSimParameters& pars = static_cast<const HcalSimParameters&>(theParameterMap->simParameters(id));
196  theSiPM.setNCells(pars.pixels(id));
197  theSiPM.setTau(pars.sipmTau());
200 
201  //use to make signal
202  CaloSamples signal(makeBlankSignal(id));
203  int sampleBin(0), preciseBin(0);
204  signal.resetPrecise();
205  unsigned int pe(0);
206  double hitPixels(0.), elapsedTime(0.);
207 
208  auto const& sipmPulseShape(shapeMap[pars.signalShape(id)]);
209 
210  LogDebug("HcalSiPMHitResponse") << "makeSiPMSignal for " << HcalDetId(id);
211 
212  const int nptb = photonTimeBins.size();
213  double sum[nptb];
214  for (auto i = 0; i < nptb; ++i)
215  sum[i] = 0;
216  for (int tbin(0); tbin < nptb; ++tbin) {
217  pe = photonTimeBins[tbin];
218  if (pe <= 0)
219  continue;
220  preciseBin = tbin;
221  sampleBin = preciseBin / nbins;
222  //skip saturation/recovery and pulse smearing for premix stage 1
224  signal[sampleBin] += pe;
225  signal.preciseAtMod(preciseBin) += pe;
226  elapsedTime += dt;
227  continue;
228  }
229 
230  hitPixels = theSiPM.hitCells(engine, pe, 0., elapsedTime);
231  LogDebug("HcalSiPMHitResponse") << " elapsedTime: " << elapsedTime << " sampleBin: " << sampleBin
232  << " preciseBin: " << preciseBin << " pe: " << pe << " hitPixels: " << hitPixels;
233  if (!pars.doSiPMSmearing()) {
234  signal[sampleBin] += hitPixels;
235  signal.preciseAtMod(preciseBin) += 0.6 * hitPixels;
236  if (preciseBin > 0)
237  signal.preciseAtMod(preciseBin - 1) += 0.2 * hitPixels;
238  if (preciseBin < signal.preciseSize() - 1)
239  signal.preciseAtMod(preciseBin + 1) += 0.2 * hitPixels;
240  } else {
241  // add "my" smearing to future bins...
242  // this loop can vectorize....
243  for (auto i = tbin; i < nptb; ++i) {
244  auto itdiff = i - tbin;
245  if (itdiff == sipmPulseShape.nBins())
246  break;
247  auto shape = sipmPulseShape[itdiff];
248  auto pulseBit = shape * hitPixels;
249  sum[i] += pulseBit;
250  if (shape < 1.e-7 && itdiff > int(HcalPulseShapes::invDeltaTSiPM_))
251  break;
252  }
253  }
254  elapsedTime += dt;
255  }
256  if (pars.doSiPMSmearing())
257  for (auto i = 0; i < nptb; ++i) {
258  auto iSampleBin = i / nbins;
259  signal[iSampleBin] += sum[i];
260  signal.preciseAtMod(i) += sum[i];
261  }
262 
263 #ifdef EDM_ML_DEBUG
264  LogDebug("HcalSiPMHitResponse") << nbins << ' ' << nptb << ' ' << HcalDetId(id);
265  for (auto i = 0; i < nptb; ++i) {
266  auto iSampleBin = (nbins > 1) ? i / nbins : i;
267  LogDebug("HcalSiPMHitResponse") << i << ' ' << iSampleBin << ' ' << signal[iSampleBin] << ' '
268  << signal.preciseAtMod(i);
269  }
270 #endif
271 
272  return signal;
273 }
void setSaturationPars(const std::vector< float > &pars)
Definition: HcalSiPM.cc:226
int pixels(const DetId &detId) const
double sipmCrossTalk(const DetId &detId) const
virtual CaloSamples makeBlankSignal(const DetId &detId) const
bool doSiPMSmearing() const
double hitCells(CLHEP::HepRandomEngine *, unsigned int pes, double tempDiff=0., double photonTime=0.)
Definition: HcalSiPM.cc:135
void setNCells(int nCells)
Definition: HcalSiPM.cc:178
void setTau(double tau)
Definition: HcalSiPM.cc:184
virtual const CaloSimParameters & simParameters(const DetId &id) const =0
void setCrossTalk(double xtalk)
Definition: HcalSiPM.cc:192
unsigned int signalShape(const DetId &detId) const
static constexpr float invDeltaTSiPM_
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 275 of file HcalSiPMHitResponse.cc.

References theDetIds.

275 { 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().