2 #ifndef HcalSimAlgos_HcalSiPM_h 3 #define HcalSimAlgos_HcalSiPM_h 14 #include <unordered_map> 19 class HepRandomEngine;
29 virtual double hitCells(CLHEP::HepRandomEngine*,
unsigned int pes,
double tempDiff = 0.,
double photonTime = 0.);
32 virtual double totalCharge(
double time)
const;
35 double getTau()
const {
return theTau; }
39 void setNCells(
int nCells);
40 void setTau(
double tau);
41 void setCrossTalk(
double xtalk);
42 void setTemperatureDependence(
double tempDep);
43 void setSaturationPars(
const std::vector<float>& pars);
46 typedef std::pair<unsigned int, std::vector<double> >
cdfpair;
47 typedef std::unordered_map<unsigned int, cdfpair>
cdfmap;
51 double cellCharge(
double deltaTime)
const;
52 unsigned int addCrossTalkCells(CLHEP::HepRandomEngine* engine,
unsigned int in_pes);
55 double Borel(
unsigned int n,
double lambda,
unsigned int k);
56 const cdfpair& BorelCDF(
unsigned int k);
71 #endif //HcalSimAlgos_HcalSiPM_h double getTempDep() const
A general implementation for the response of a SiPM.
virtual double totalCharge() const
double getCrossTalk() const
std::unordered_map< unsigned int, cdfpair > cdfmap
std::vector< double > theSiPM
HcalSiPMnonlinearity * nonlin
unsigned int theCellCount
std::pair< unsigned int, std::vector< double > > cdfpair