1 #ifndef SimTracker_SiPhase2Digitizer_Phase2TrackerDigitizerAlgorithm_h 2 #define SimTracker_SiPhase2Digitizer_Phase2TrackerDigitizerAlgorithm_h 22 #include "CLHEP/Units/GlobalPhysicalConstants.h" 23 #include "CLHEP/Units/GlobalSystemOfUnits.h" 28 class HepRandomEngine;
52 constexpr
double c_cm_ns = CLHEP::c_light * CLHEP::ns / CLHEP::cm;
67 virtual void accumulateSimHits(
const std::vector<PSimHit>::const_iterator inputBegin,
68 const std::vector<PSimHit>::const_iterator inputEnd,
69 const size_t inputBeginGlobalIndex,
70 const uint32_t tofBin,
74 std::map<int, digitizerUtility::DigiSimInfo>& digi_map,
103 using signal_map_type = std::map<int, digitizerUtility::Ph2Amplitude, std::less<int> >;
188 const std::unique_ptr<GaussianTailNoiseGenerator>
theNoiser_;
193 virtual std::vector<digitizerUtility::SignalPoint>
drift(
197 const std::vector<digitizerUtility::EnergyDepositUnit>& ionization_points)
const;
198 virtual void induce_signal(std::vector<PSimHit>::const_iterator inputBegin,
200 const size_t hitIndex,
201 const size_t firstHitIndex,
202 const uint32_t tofBin,
204 const std::vector<digitizerUtility::SignalPoint>& collection_points);
206 int particleId,
float momentum,
float eloss,
float length,
int NumberOfSegments)
const;
virtual std::vector< digitizerUtility::EnergyDepositUnit > primary_ionization(const PSimHit &hit) const
CLHEP::HepRandomEngine * rengine_
virtual bool select_hit(const PSimHit &hit, double tCorr, double &sigScale) const
const float theElectronPerADC_
void loadAccumulator(uint32_t detId, const std::map< int, float > &accumulator)
const float tanLorentzAnglePerTesla_Endcap_
const bool useChargeReweighting_
const double pseudoRadDamage_
const double pseudoRadDamageRadius_
LocalVector driftDirection(const Phase2TrackerGeomDetUnit *pixdet, const GlobalVector &bfield, const DetId &detId) const
const SiPixelQuality * siPixelBadModule_
virtual void initializeEvent(CLHEP::HepRandomEngine &eng)
virtual void induce_signal(std::vector< PSimHit >::const_iterator inputBegin, const PSimHit &hit, const size_t hitIndex, const size_t firstHitIndex, const uint32_t tofBin, const Phase2TrackerGeomDetUnit *pixdet, const std::vector< digitizerUtility::SignalPoint > &collection_points)
virtual void add_cross_talk(const Phase2TrackerGeomDetUnit *pixdet)
const float theThresholdInE_Endcap_
const float theNoiseInElectrons_
const SiPixelLorentzAngle * siPixelLorentzAngle_
const std::unique_ptr< SiG4UniversalFluctuation > fluctuate_
const std::unique_ptr< SiPixelChargeReweightingAlgorithm > theSiPixelChargeReweightingAlgorithm_
std::map< int, digitizerUtility::Ph2Amplitude, std::less< int > > signal_map_type
const bool addNoisyPixels_
virtual void add_noise(const Phase2TrackerGeomDetUnit *pixdet)
virtual void module_killing_conf(uint32_t detID)
virtual ~Phase2TrackerDigitizerAlgorithm()
const float interstripCoupling_
const bool use_LorentzAngle_DB_
const double theThresholdSmearing_Endcap_
const double theThresholdSmearing_Barrel_
const std::unique_ptr< SiPixelGainCalibrationOfflineSimService > theSiPixelGainCalibrationService_
const bool use_deadmodule_DB_
virtual void add_noisy_cells(const Phase2TrackerGeomDetUnit *pixdet, float thePixelThreshold)
const TrackerGeometry * geom_
std::unique_ptr< CLHEP::RandGaussQ > gaussDistribution_
const bool fluctuateCharge_
virtual void accumulateSimHits(const std::vector< PSimHit >::const_iterator inputBegin, const std::vector< PSimHit >::const_iterator inputEnd, const size_t inputBeginGlobalIndex, const uint32_t tofBin, const Phase2TrackerGeomDetUnit *pixdet, const GlobalVector &bfield)
virtual void init(const edm::EventSetup &es)=0
const bool use_ineff_from_db_
virtual bool isAboveThreshold(const digitizerUtility::SimHitInfo *hitInfo, float charge, float thr) const
const bool addPixelInefficiency_
Phase2TrackerDigitizerAlgorithm(const edm::ParameterSet &conf_common, const edm::ParameterSet &conf_specific, edm::ConsumesCollector iC)
const std::unique_ptr< GaussianTailNoiseGenerator > theNoiser_
const float theThresholdInE_Barrel_
const bool use_module_killing_
virtual std::vector< float > fluctuateEloss(int particleId, float momentum, float eloss, float length, int NumberOfSegments) const
virtual void pixel_inefficiency_db(uint32_t detID)
std::vector< double > barrel_efficiencies
std::unique_ptr< CLHEP::RandGaussQ > smearedThreshold_Endcap_
const Parameters deadModules_
std::vector< edm::ParameterSet > Parameters
const float theTofLowerCut_
const float theReadoutNoise_
const SiPhase2OuterTrackerLorentzAngle * siPhase2OTLorentzAngle_
const float clusterWidth_
virtual void digitize(const Phase2TrackerGeomDetUnit *pixdet, std::map< int, digitizerUtility::DigiSimInfo > &digi_map, const TrackerTopology *tTopo)
const double theHIPThresholdInE_Endcap_
const bool addThresholdSmearing_
std::unique_ptr< CLHEP::RandGaussQ > smearedThreshold_Barrel_
SubdetEfficiencies(const edm::ParameterSet &conf)
const SubdetEfficiencies subdetEfficiencies_
const float tanLorentzAnglePerTesla_Barrel_
const int thePhase2ReadoutMode_
const double theHIPThresholdInE_Barrel_
const int theAdcFullScale_
virtual void pixel_inefficiency(const SubdetEfficiencies &eff, const Phase2TrackerGeomDetUnit *pixdet, const TrackerTopology *tTopo)
std::map< uint32_t, signal_map_type > signalMaps
virtual std::vector< digitizerUtility::SignalPoint > drift(const PSimHit &hit, const Phase2TrackerGeomDetUnit *pixdet, const GlobalVector &bfield, const std::vector< digitizerUtility::EnergyDepositUnit > &ionization_points) const
const bool makeDigiSimLinks_
const float GeVperElectron_
const float theTofUpperCut_
virtual void module_killing_DB(const Phase2TrackerGeomDetUnit *pixdet)=0
int convertSignalToAdc(uint32_t detID, float signal_in_elec, float threshold)
std::vector< double > endcap_efficiencies