1 #ifndef __SimTracker_SiPhase2Digitizer_Phase2TrackerDigitizerAlgorithm_h
2 #define __SimTracker_SiPhase2Digitizer_Phase2TrackerDigitizerAlgorithm_h
21 #include "CLHEP/Units/GlobalPhysicalConstants.h"
22 #include "CLHEP/Units/GlobalSystemOfUnits.h"
27 class HepRandomEngine;
51 constexpr
double c_cm_ns = CLHEP::c_light * CLHEP::ns / CLHEP::cm;
66 virtual void accumulateSimHits(
const std::vector<PSimHit>::const_iterator inputBegin,
67 const std::vector<PSimHit>::const_iterator inputEnd,
68 const size_t inputBeginGlobalIndex,
69 const uint32_t tofBin,
73 std::map<int, DigitizerUtility::DigiSimInfo>& digi_map,
81 void loadAccumulator(uint32_t detId,
const std::map<int, float>& accumulator);
183 const std::unique_ptr<GaussianTailNoiseGenerator>
theNoiser_;
188 virtual std::vector<DigitizerUtility::SignalPoint>
drift(
192 const std::vector<DigitizerUtility::EnergyDepositUnit>& ionization_points)
const;
194 const size_t hitIndex,
195 const uint32_t tofBin,
197 const std::vector<DigitizerUtility::SignalPoint>& collection_points);
199 int particleId,
float momentum,
float eloss,
float length,
int NumberOfSegments)
const;
213 const DetId& detId)
const;
CLHEP::HepRandomEngine * rengine_
virtual void module_killing_DB(const Phase2TrackerGeomDetUnit *pixdet)
LocalVector DriftDirection(const Phase2TrackerGeomDetUnit *pixdet, const GlobalVector &bfield, const DetId &detId) const
const float theElectronPerADC_
void loadAccumulator(uint32_t detId, const std::map< int, float > &accumulator)
const float tanLorentzAnglePerTesla_Endcap_
virtual bool select_hit(const PSimHit &hit, double tCorr, double &sigScale) const
const double pseudoRadDamage_
const double pseudoRadDamageRadius_
virtual bool isAboveThreshold(const DigitizerUtility::SimHitInfo *hitInfo, float charge, float thr) const
const SiPixelQuality * siPixelBadModule_
virtual void initializeEvent(CLHEP::HepRandomEngine &eng)
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 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_
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 void induce_signal(const PSimHit &hit, const size_t hitIndex, const uint32_t tofBin, const Phase2TrackerGeomDetUnit *pixdet, const std::vector< DigitizerUtility::SignalPoint > &collection_points)
virtual void pixel_inefficiency_db(uint32_t detID)
std::vector< double > barrel_efficiencies
std::unique_ptr< CLHEP::RandGaussQ > smearedThreshold_Endcap_
const Parameters deadModules_
virtual void digitize(const Phase2TrackerGeomDetUnit *pixdet, std::map< int, DigitizerUtility::DigiSimInfo > &digi_map, const TrackerTopology *tTopo)
std::map< int, DigitizerUtility::Amplitude, std::less< int > > signal_map_type
std::vector< edm::ParameterSet > Parameters
const float theTofLowerCut_
const float theReadoutNoise_
const SiPhase2OuterTrackerLorentzAngle * siPhase2OTLorentzAngle_
const float clusterWidth_
const double theHIPThresholdInE_Endcap_
const bool addThresholdSmearing_
std::unique_ptr< CLHEP::RandGaussQ > smearedThreshold_Barrel_
SubdetEfficiencies(const edm::ParameterSet &conf)
const SubdetEfficiencies subdetEfficiencies_
virtual std::vector< DigitizerUtility::EnergyDepositUnit > primary_ionization(const PSimHit &hit) const
const SiPixelFedCablingMap * fedCablingMap_
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)
virtual std::vector< DigitizerUtility::SignalPoint > drift(const PSimHit &hit, const Phase2TrackerGeomDetUnit *pixdet, const GlobalVector &bfield, const std::vector< DigitizerUtility::EnergyDepositUnit > &ionization_points) const
std::map< uint32_t, signal_map_type > signalMaps
const bool makeDigiSimLinks_
virtual std::vector< float > fluctuateEloss(int particleId, float momentum, float eloss, float length, int NumberOfSegments) const
const float GeVperElectron_
const float theTofUpperCut_
int convertSignalToAdc(uint32_t detID, float signal_in_elec, float threshold)
std::vector< double > endcap_efficiencies