9 #include "CLHEP/Random/RandGaussQ.h"
13 const std::vector<double> & photoelectronsToAnalog,
14 double samplingFactor,
double timePhase,
16 bool doPhotostatistics,
bool syncPhase,
17 int firstRing,
const std::vector<double> & samplingFactors,
20 :
CaloSimParameters(simHitToPhotoelectrons, photoelectronsToAnalog[0], samplingFactor, timePhase,
21 readoutFrameSize, binOfMaximum, doPhotostatistics, syncPhase),
23 theSiPMcharacteristics(0),
24 theFirstRing(firstRing),
25 theSamplingFactors(samplingFactors),
26 thePE2fCByRing(photoelectronsToAnalog),
27 theSiPMSmearing(
false),
39 theFirstRing( p.getParameter<int>(
"firstRing") ),
40 theSamplingFactors( p.getParameter<std::vector<double> >(
"samplingFactors") ),
41 thePE2fCByRing( p.getParameter<std::vector<double> >(
"photoelectronsToAnalog") ),
42 theSiPMSmearing( p.getParameter<bool>(
"doSiPMSmearing") ),
43 doTimeSmear_( p.getParameter<bool>(
"timeSmearing") ),
44 theSiPMTau( p.getParameter<double>(
"sipmTau") )
80 if (!gains || !gwidths )
82 edm::LogError(
"HcalAmplifier") <<
"Could not fetch HCAL conditions for channel " << hcalGenDetId;
151 if (energy2 != energy1)
152 smearsigma = sigma1 + ((sigma2-sigma1)*(ampl-energy1)/(energy2-energy1));
154 smearsigma = (sigma2+sigma1)/2.;
std::vector< float > sipmNonlinearity(const DetId &detId) const
const HcalSiPMCharacteristics * theSiPMcharacteristics
const HcalGainWidth * getGainWidth(const HcalGenericDetId &fId) const
HcalSimParameters(double simHitToPhotoelectrons, const std::vector< double > &photoelectronsToAnalog, double samplingFactor, double timePhase, int readoutFrameSize, int binOfMaximum, bool doPhotostatistics, bool syncPhase, int firstRing, const std::vector< double > &samplingFactors, double sipmTau)
double fCtoGeV(const DetId &detId) const
int getType() const
get SiPM type
int pixels(const DetId &detId) const
float getValue(int fCapId) const
get value for capId = 0..3
Main class for Parameters in different subdetectors.
float getCrossTalk(int type) const
get cross talk
static const double GeV2fC
HcalTimeSmearSettings theSmearSettings
std::vector< double > thePE2fCByRing
unsigned int signalShape(const DetId &detId) const
double timeSmearRMS(double ampl) const
double simHitToPhotoelectrons() const
const HcalMCParam * getHcalMCParam(const HcalGenericDetId &fId) const
std::vector< double > theSamplingFactors
virtual double samplingFactor(const DetId &detId) const
float getDarkCurrent() const
get dark current
void defaultTimeSmearing()
int ietaAbs() const
get the absolute value of the cell ieta
double sipmDarkCurrentuA(const DetId &detId) const
const HcalGain * getGain(const HcalGenericDetId &fId) const
const HcalSiPMCharacteristics * getHcalSiPMCharacteristics() const
std::vector< float > getNonLinearities(int type) const
get nonlinearity constants
unsigned int signalShape() const
void setDbService(const HcalDbService *service)
double sipmCrossTalk(const DetId &detId) const
const HcalDbService * theDbService
volatile std::atomic< bool > shutdown_flag false
int getPixels(int type) const
get # of pixels
const HcalSiPMParameter * getHcalSiPMParameter(const HcalGenericDetId &fId) const
float getFCByPE() const
get fcByPE
double photoelectronsToAnalog() const
the factor which goes from photoelectrons to whatever gets read by ADCs