1 #ifndef __SimTracker_SiPhase2Digitizer_Phase2TrackerDigitizerAlgorithm_h 2 #define __SimTracker_SiPhase2Digitizer_Phase2TrackerDigitizerAlgorithm_h 25 class HepRandomEngine;
52 virtual void initializeEvent(CLHEP::HepRandomEngine& eng);
54 virtual void accumulateSimHits(
const std::vector<PSimHit>::const_iterator inputBegin,
55 const std::vector<PSimHit>::const_iterator inputEnd,
56 const size_t inputBeginGlobalIndex,
57 const unsigned int tofBin,
61 std::map<int, DigitizerUtility::DigiSimInfo>& digi_map,
65 void loadAccumulator(
unsigned int detId,
const std::map<int, float>&
accumulator);
83 using signal_map_type = std::map<int, DigitizerUtility::Amplitude, std::less<int> >;
86 using simlink_map = std::map<unsigned int, std::vector<float>,std::less<unsigned int> > ;
165 const std::unique_ptr<SiG4UniversalFluctuation>
fluctuate;
166 const std::unique_ptr<GaussianTailNoiseGenerator>
theNoiser;
170 void primary_ionization(
const PSimHit&
hit, std::vector<DigitizerUtility::EnergyDepositUnit>& ionization_points)
const;
174 const std::vector<DigitizerUtility::EnergyDepositUnit>& ionization_points,
175 std::vector<DigitizerUtility::SignalPoint>& collection_points)
const;
177 const size_t hitIndex,
178 const unsigned int tofBin,
180 const std::vector<DigitizerUtility::SignalPoint>& collection_points);
181 void fluctuateEloss(
int particleId,
float momentum,
float eloss,
182 float length,
int NumberOfSegments,
183 std::vector<float> & elossVector)
const;
191 virtual void pixel_inefficiency_db(uint32_t detID);
197 const DetId& detId)
const;
199 virtual void module_killing_conf(uint32_t detID);
200 virtual void module_killing_DB(uint32_t detID);
215 int convertSignalToAdc(uint32_t detID,
float signal_in_elec,
float threshold);
219 return 0.5 * (1.0-std::copysign(
std::sqrt(1.
f- unsafe_expf<4>(-
xx * (1.
f + 0.2733
f/(1.
f + 0.147
f *
xx)))), x));
CLHEP::HepRandomEngine * rengine_
const float theThresholdInE_Endcap
const double theThresholdSmearing_Endcap
const float theElectronPerADC
const double theThresholdSmearing_Barrel
const float tanLorentzAnglePerTesla_Barrel
const std::unique_ptr< SiG4UniversalFluctuation > fluctuate
LocalVector drift(const StripGeomDetUnit *, const MagneticField &, const SiStripLorentzAngle &)
edm::ESHandle< SiPixelFedCablingMap > map_
const float theNoiseInElectrons
const bool addNoisyPixels
const bool addThresholdSmearing
const float theTofUpperCut
const bool use_LorentzAngle_DB_
signal_map_type::iterator signal_map_iterator
const std::unique_ptr< SiPixelGainCalibrationOfflineSimService > theSiPixelGainCalibrationService_
const bool use_deadmodule_DB_
const float theThresholdInE_Barrel
std::unique_ptr< CLHEP::RandGaussQ > gaussDistribution_
const Parameters DeadModules
std::map< unsigned int, std::vector< float >, std::less< unsigned int > > simlink_map
std::vector< edm::ParameterSet > badPixels
const bool use_ineff_from_db_
const int theAdcFullScale
edm::ESHandle< SiPixelLorentzAngle > SiPixelLorentzAngle_
const double pseudoRadDamage
const float tanLorentzAnglePerTesla_Endcap
const double theHIPThresholdInE_Barrel
const float interstripCoupling
const bool use_module_killing_
std::vector< double > barrel_efficiencies
std::unique_ptr< CLHEP::RandGaussQ > smearedThreshold_Endcap_
std::map< int, DigitizerUtility::Amplitude, std::less< int > > signal_map_type
signal_map_type::const_iterator signal_map_const_iterator
std::vector< edm::ParameterSet > Parameters
edm::ESHandle< TrackerGeometry > geom_
const double theHIPThresholdInE_Endcap
const float GeVperElectron
const bool AddPixelInefficiency
std::unique_ptr< CLHEP::RandGaussQ > smearedThreshold_Barrel_
const bool fluctuateCharge
const SubdetEfficiencies subdetEfficiencies_
const float theReadoutNoise
const double pseudoRadDamageRadius
std::map< uint32_t, signal_map_type > signalMaps
const bool makeDigiSimLinks_
const float theTofLowerCut
const int thePhase2ReadoutMode
const std::unique_ptr< GaussianTailNoiseGenerator > theNoiser
double calcQ(float x) const
edm::ESHandle< SiPixelQuality > SiPixelBadModule_
std::vector< double > endcap_efficiencies