File indexing completed on 2023-10-25 10:03:39
0001 #ifndef HcalSimAlgos_HcalSimParameters_h
0002 #define HcalSimAlgos_HcalSimParameters_h
0003
0004 #include "SimCalorimetry/CaloSimAlgos/interface/CaloSimParameters.h"
0005 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0006 #include "CalibFormats/HcalObjects/interface/HcalDbService.h"
0007
0008 typedef std::vector<std::pair<double, double> > HcalTimeSmearSettings;
0009
0010 class HcalSimParameters : public CaloSimParameters {
0011 public:
0012 HcalSimParameters(double simHitToPhotoelectrons,
0013 double samplingFactor,
0014 double timePhase,
0015 int readoutFrameSize,
0016 int binOfMaximum,
0017 bool doPhotostatistics,
0018 bool syncPhase,
0019 int firstRing,
0020 const std::vector<double>& samplingFactors,
0021 double sipmTau);
0022 HcalSimParameters(const edm::ParameterSet& p);
0023
0024 ~HcalSimParameters() override {}
0025
0026 void setDbService(const HcalDbService* service);
0027
0028 double simHitToPhotoelectrons(const DetId& detId) const override;
0029 double photoelectronsToAnalog(const DetId& detId) const override;
0030
0031 double fCtoGeV(const DetId& detId) const;
0032
0033
0034
0035 virtual double samplingFactor(const DetId& detId) const;
0036
0037 bool doTimeSmear() const { return doTimeSmear_; }
0038
0039 double timeSmearRMS(double ampl) const;
0040
0041 int pixels(const DetId& detId) const;
0042 bool doSiPMSmearing() const { return theSiPMSmearing; }
0043 int delayQIE() const { return delayQIE_; }
0044 double threshold_currentTDC() const { return threshold_currentTDC_; }
0045 double sipmTau() const { return theSiPMTau; }
0046 double sipmDarkCurrentuA(const DetId& detId) const;
0047 double sipmCrossTalk(const DetId& detId) const;
0048 std::vector<float> sipmNonlinearity(const DetId& detId) const;
0049 unsigned int signalShape(const DetId& detId) const;
0050
0051 friend class HcalSimParameterMap;
0052
0053 private:
0054 void defaultTimeSmearing();
0055 const HcalDbService* theDbService;
0056 const HcalSiPMCharacteristics* theSiPMcharacteristics;
0057 int theFirstRing;
0058 std::vector<double> theSamplingFactors;
0059 bool theSiPMSmearing;
0060 bool doTimeSmear_;
0061 HcalTimeSmearSettings theSmearSettings;
0062 double theSiPMTau;
0063 double threshold_currentTDC_;
0064 int delayQIE_;
0065 };
0066
0067 #endif