|
|
Go to the documentation of this file. 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;
56 constexpr
double c_cm_ns = CLHEP::c_light * CLHEP::ns / CLHEP::cm;
69 virtual void accumulateSimHits(
const std::vector<PSimHit>::const_iterator inputBegin,
70 const std::vector<PSimHit>::const_iterator inputEnd,
71 const size_t inputBeginGlobalIndex,
72 const uint32_t tofBin,
76 std::map<int, DigitizerUtility::DigiSimInfo>& digi_map,
186 const std::unique_ptr<GaussianTailNoiseGenerator>
theNoiser_;
191 virtual std::vector<DigitizerUtility::SignalPoint>
drift(
195 const std::vector<DigitizerUtility::EnergyDepositUnit>& ionization_points)
const;
197 const size_t hitIndex,
198 const uint32_t tofBin,
200 const std::vector<DigitizerUtility::SignalPoint>& collection_points);
202 int particleId,
float momentum,
float eloss,
float length,
int NumberOfSegments)
const;
216 const DetId& detId)
const;
void loadAccumulator(uint32_t detId, const std::map< int, float > &accumulator)
const std::unique_ptr< GaussianTailNoiseGenerator > theNoiser_
std::map< int, DigitizerUtility::Amplitude, std::less< int > > signal_map_type
virtual ~Phase2TrackerDigitizerAlgorithm()
const bool makeDigiSimLinks_
const bool addNoisyPixels_
virtual void add_noise(const Phase2TrackerGeomDetUnit *pixdet)
const bool fluctuateCharge_
const float theThresholdInE_Barrel_
const double pseudoRadDamage_
virtual std::vector< float > fluctuateEloss(int particleId, float momentum, float eloss, float length, int NumberOfSegments) const
const double theThresholdSmearing_Barrel_
const SubdetEfficiencies subdetEfficiencies_
virtual void pixel_inefficiency_db(uint32_t detID)
const float theTofUpperCut_
const float theNoiseInElectrons_
edm::ESHandle< TrackerGeometry > geom_
const bool addThresholdSmearing_
const bool use_module_killing_
LocalVector DriftDirection(const Phase2TrackerGeomDetUnit *pixdet, const GlobalVector &bfield, const DetId &detId) const
edm::ESHandle< SiPhase2OuterTrackerLorentzAngle > siPhase2OTLorentzAngle_
edm::ESHandle< SiPixelFedCablingMap > fedCablingMap_
const bool use_LorentzAngle_DB_
virtual void module_killing_conf(uint32_t detID)
const double theThresholdSmearing_Endcap_
edm::ESHandle< SiPixelLorentzAngle > siPixelLorentzAngle_
SubdetEfficiencies(const edm::ParameterSet &conf)
const float theTofLowerCut_
virtual void module_killing_DB(const Phase2TrackerGeomDetUnit *pixdet)
virtual void init(const edm::EventSetup &es)=0
const int theAdcFullScale_
std::map< uint32_t, signal_map_type > signalMaps
const float tanLorentzAnglePerTesla_Endcap_
const double pseudoRadDamageRadius_
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)
std::unique_ptr< CLHEP::RandGaussQ > smearedThreshold_Barrel_
virtual void initializeEvent(CLHEP::HepRandomEngine &eng)
virtual std::vector< DigitizerUtility::EnergyDepositUnit > primary_ionization(const PSimHit &hit) const
virtual std::vector< DigitizerUtility::SignalPoint > drift(const PSimHit &hit, const Phase2TrackerGeomDetUnit *pixdet, const GlobalVector &bfield, const std::vector< DigitizerUtility::EnergyDepositUnit > &ionization_points) const
const double theHIPThresholdInE_Endcap_
std::unique_ptr< CLHEP::RandGaussQ > gaussDistribution_
const float theElectronPerADC_
const float GeVperElectron_
edm::ESHandle< SiPixelQuality > siPixelBadModule_
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)
int convertSignalToAdc(uint32_t detID, float signal_in_elec, float threshold)
const float theThresholdInE_Endcap_
const Parameters deadModules_
virtual void digitize(const Phase2TrackerGeomDetUnit *pixdet, std::map< int, DigitizerUtility::DigiSimInfo > &digi_map, const TrackerTopology *tTopo)
const bool use_deadmodule_DB_
const float tanLorentzAnglePerTesla_Barrel_
virtual void add_noisy_cells(const Phase2TrackerGeomDetUnit *pixdet, float thePixelThreshold)
virtual void add_cross_talk(const Phase2TrackerGeomDetUnit *pixdet)
std::vector< double > barrel_efficiencies
const float clusterWidth_
virtual bool select_hit(const PSimHit &hit, double tCorr, double &sigScale) const
Phase2TrackerDigitizerAlgorithm(const edm::ParameterSet &conf_common, const edm::ParameterSet &conf_specific)
const float theReadoutNoise_
std::vector< double > endcap_efficiencies
const float interstripCoupling_
const std::unique_ptr< SiG4UniversalFluctuation > fluctuate_
const std::unique_ptr< SiPixelGainCalibrationOfflineSimService > theSiPixelGainCalibrationService_
const int thePhase2ReadoutMode_
const bool use_ineff_from_db_
const bool addPixelInefficiency_
const double theHIPThresholdInE_Barrel_
std::unique_ptr< CLHEP::RandGaussQ > smearedThreshold_Endcap_
CLHEP::HepRandomEngine * rengine_
virtual bool isAboveThreshold(const DigitizerUtility::SimHitInfo *hitInfo, float charge, float thr) const
std::vector< edm::ParameterSet > Parameters
virtual void pixel_inefficiency(const SubdetEfficiencies &eff, const Phase2TrackerGeomDetUnit *pixdet, const TrackerTopology *tTopo)