|
|
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;
55 constexpr
double c_cm_ns = CLHEP::c_light * CLHEP::ns / CLHEP::cm;
68 virtual void accumulateSimHits(
const std::vector<PSimHit>::const_iterator inputBegin,
69 const std::vector<PSimHit>::const_iterator inputEnd,
70 const size_t inputBeginGlobalIndex,
71 const uint32_t tofBin,
75 std::map<int, DigitizerUtility::DigiSimInfo>& digi_map,
180 const std::unique_ptr<GaussianTailNoiseGenerator>
theNoiser_;
185 std::vector<DigitizerUtility::EnergyDepositUnit>& ionization_points)
const;
189 const std::vector<DigitizerUtility::EnergyDepositUnit>& ionization_points,
190 std::vector<DigitizerUtility::SignalPoint>& collection_points)
const;
192 const size_t hitIndex,
193 const uint32_t tofBin,
195 const std::vector<DigitizerUtility::SignalPoint>& collection_points);
200 int NumberOfSegments,
201 std::vector<float>& elossVector)
const;
215 const DetId& detId)
const;
239 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));
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()
double calcQ(float x) const
const bool makeDigiSimLinks_
const bool addNoisyPixels_
virtual void add_noise(const Phase2TrackerGeomDetUnit *pixdet)
const bool fluctuateCharge_
const float theThresholdInE_Barrel_
const double pseudoRadDamage_
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_
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)=0
LocalVector DriftDirection(const Phase2TrackerGeomDetUnit *pixdet, const GlobalVector &bfield, const DetId &detId) const
edm::ESHandle< SiPixelFedCablingMap > fedCablingMap_
const bool use_LorentzAngle_DB_
virtual void module_killing_conf(uint32_t detID)
const double theThresholdSmearing_Endcap_
SubdetEfficiencies(const edm::ParameterSet &conf)
const float theTofLowerCut_
virtual void module_killing_DB(const Phase2TrackerGeomDetUnit *pixdet)
virtual void init(const edm::EventSetup &es)=0
void primary_ionization(const PSimHit &hit, std::vector< DigitizerUtility::EnergyDepositUnit > &ionization_points) const
void fluctuateEloss(int particleId, float momentum, float eloss, float length, int NumberOfSegments, std::vector< float > &elossVector) const
const int theAdcFullScale_
std::map< uint32_t, signal_map_type > signalMaps
const float tanLorentzAnglePerTesla_Endcap_
const double pseudoRadDamageRadius_
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_
edm::ESHandle< SiPixelQuality > SiPixelBadModule_
virtual void initializeEvent(CLHEP::HepRandomEngine &eng)
virtual bool select_hit(const PSimHit &hit, double tCorr, double &sigScale)
const double theHIPThresholdInE_Endcap_
std::unique_ptr< CLHEP::RandGaussQ > gaussDistribution_
edm::ESHandle< SiPixelLorentzAngle > SiPixelLorentzAngle_
const float theElectronPerADC_
const float GeVperElectron_
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_
virtual bool isAboveThreshold(const DigitizerUtility::SimHitInfo *hitInfo, float charge, float thr)
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_
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_
void drift(const PSimHit &hit, const Phase2TrackerGeomDetUnit *pixdet, const GlobalVector &bfield, const std::vector< DigitizerUtility::EnergyDepositUnit > &ionization_points, std::vector< DigitizerUtility::SignalPoint > &collection_points) const
const bool addPixelInefficiency_
const double theHIPThresholdInE_Barrel_
std::unique_ptr< CLHEP::RandGaussQ > smearedThreshold_Endcap_
CLHEP::HepRandomEngine * rengine_
std::vector< edm::ParameterSet > Parameters
virtual void pixel_inefficiency(const SubdetEfficiencies &eff, const Phase2TrackerGeomDetUnit *pixdet, const TrackerTopology *tTopo)