CMS 3D CMS Logo

List of all members | Public Member Functions | Private Attributes
PSPDigitizerAlgorithm Class Reference

#include <PSPDigitizerAlgorithm.h>

Inheritance diagram for PSPDigitizerAlgorithm:
Phase2TrackerDigitizerAlgorithm

Public Member Functions

void init (const edm::EventSetup &es) override
 
bool isAboveThreshold (const digitizerUtility::SimHitInfo *hitInfo, float charge, float thr) const override
 
bool isInBiasRailRegion (const PSimHit &hit) const
 
void module_killing_DB (const Phase2TrackerGeomDetUnit *pixdet) override
 
 PSPDigitizerAlgorithm (const edm::ParameterSet &conf, edm::ConsumesCollector iC)
 
bool select_hit (const PSimHit &hit, double tCorr, double &sigScale) const override
 
 ~PSPDigitizerAlgorithm () override
 
- Public Member Functions inherited from Phase2TrackerDigitizerAlgorithm
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 digitize (const Phase2TrackerGeomDetUnit *pixdet, std::map< int, digitizerUtility::DigiSimInfo > &digi_map, const TrackerTopology *tTopo)
 
virtual void initializeEvent (CLHEP::HepRandomEngine &eng)
 
void loadAccumulator (uint32_t detId, const std::map< int, float > &accumulator)
 
 Phase2TrackerDigitizerAlgorithm (const edm::ParameterSet &conf_common, const edm::ParameterSet &conf_specific, edm::ConsumesCollector iC)
 
virtual ~Phase2TrackerDigitizerAlgorithm ()
 

Private Attributes

const int biasRailInefficiencyFlag_ {0}
 
const edm::ESGetToken< TrackerGeometry, TrackerDigiGeometryRecordgeomToken_
 
edm::ESGetToken< SiPhase2OuterTrackerLorentzAngle, SiPhase2OuterTrackerLorentzAngleSimRcdsiPhase2OTLorentzAngleToken_
 

Additional Inherited Members

- Protected Types inherited from Phase2TrackerDigitizerAlgorithm
using Frame = GloballyPositioned< double >
 
using Parameters = std::vector< edm::ParameterSet >
 
using signal_map_type = std::map< int, digitizerUtility::Ph2Amplitude, std::less< int > >
 
using signalMaps = std::map< uint32_t, signal_map_type >
 
- Protected Member Functions inherited from Phase2TrackerDigitizerAlgorithm
virtual void add_cross_talk (const Phase2TrackerGeomDetUnit *pixdet)
 
virtual void add_noise (const Phase2TrackerGeomDetUnit *pixdet)
 
virtual void add_noisy_cells (const Phase2TrackerGeomDetUnit *pixdet, float thePixelThreshold)
 
float calcQ (float x)
 
int convertSignalToAdc (uint32_t detID, float signal_in_elec, float threshold)
 
virtual std::vector< digitizerUtility::SignalPointdrift (const PSimHit &hit, const Phase2TrackerGeomDetUnit *pixdet, const GlobalVector &bfield, const std::vector< digitizerUtility::EnergyDepositUnit > &ionization_points) const
 
LocalVector driftDirection (const Phase2TrackerGeomDetUnit *pixdet, const GlobalVector &bfield, const DetId &detId) const
 
virtual std::vector< float > fluctuateEloss (int particleId, float momentum, float eloss, float length, int NumberOfSegments) const
 
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 module_killing_conf (uint32_t detID)
 
virtual void pixel_inefficiency (const SubdetEfficiencies &eff, const Phase2TrackerGeomDetUnit *pixdet, const TrackerTopology *tTopo)
 
virtual void pixel_inefficiency_db (uint32_t detID)
 
virtual std::vector< digitizerUtility::EnergyDepositUnitprimary_ionization (const PSimHit &hit) const
 
- Protected Attributes inherited from Phase2TrackerDigitizerAlgorithm
signalMaps _signal
 
const bool addNoise_
 
const bool addNoisyPixels_
 
const bool addPixelInefficiency_
 
const bool addThresholdSmearing_
 
const bool addXtalk_
 
const bool alpha2Order_
 
Parameters badPixels_
 
const float clusterWidth_
 
const Parameters deadModules_
 
const std::unique_ptr< SiG4UniversalFluctuationfluctuate_
 
const bool fluctuateCharge_
 
std::unique_ptr< CLHEP::RandGaussQ > gaussDistribution_
 
const TrackerGeometrygeom_
 
const float GeVperElectron_
 
const float interstripCoupling_
 
const bool makeDigiSimLinks_
 
bool pixelFlag_
 
const double pseudoRadDamage_
 
const double pseudoRadDamageRadius_
 
CLHEP::HepRandomEngine * rengine_
 
const float Sigma0_
 
const float SigmaCoeff_
 
const SiPhase2OuterTrackerLorentzAnglesiPhase2OTLorentzAngle_
 
const SiPixelQualitysiPixelBadModule_
 
const SiPixelLorentzAnglesiPixelLorentzAngle_
 
std::unique_ptr< CLHEP::RandGaussQ > smearedThreshold_Barrel_
 
std::unique_ptr< CLHEP::RandGaussQ > smearedThreshold_Endcap_
 
const SubdetEfficiencies subdetEfficiencies_
 
const float tanLorentzAnglePerTesla_Barrel_
 
const float tanLorentzAnglePerTesla_Endcap_
 
const int theAdcFullScale_
 
const float theElectronPerADC_
 
const double theHIPThresholdInE_Barrel_
 
const double theHIPThresholdInE_Endcap_
 
const float theNoiseInElectrons_
 
const std::unique_ptr< GaussianTailNoiseGeneratortheNoiser_
 
const int thePhase2ReadoutMode_
 
const float theReadoutNoise_
 
const std::unique_ptr< SiPixelChargeReweightingAlgorithmtheSiPixelChargeReweightingAlgorithm_
 
const std::unique_ptr< SiPixelGainCalibrationOfflineSimServicetheSiPixelGainCalibrationService_
 
const float theThresholdInE_Barrel_
 
const float theThresholdInE_Endcap_
 
const double theThresholdSmearing_Barrel_
 
const double theThresholdSmearing_Endcap_
 
const float theTofLowerCut_
 
const float theTofUpperCut_
 
const double tMax_
 
const bool use_deadmodule_DB_
 
const bool use_ineff_from_db_
 
const bool use_LorentzAngle_DB_
 
const bool use_module_killing_
 
const bool useChargeReweighting_
 

Detailed Description

Definition at line 9 of file PSPDigitizerAlgorithm.h.

Constructor & Destructor Documentation

◆ PSPDigitizerAlgorithm()

PSPDigitizerAlgorithm::PSPDigitizerAlgorithm ( const edm::ParameterSet conf,
edm::ConsumesCollector  iC 
)

Definition at line 23 of file PSPDigitizerAlgorithm.cc.

References Phase2TrackerDigitizerAlgorithm::addPixelInefficiency_, biasRailInefficiencyFlag_, edm::ConsumesCollector::esConsumes(), LogDebug, Phase2TrackerDigitizerAlgorithm::pixelFlag_, siPhase2OTLorentzAngleToken_, Phase2TrackerDigitizerAlgorithm::theAdcFullScale_, Phase2TrackerDigitizerAlgorithm::theElectronPerADC_, Phase2TrackerDigitizerAlgorithm::theThresholdInE_Barrel_, Phase2TrackerDigitizerAlgorithm::theThresholdInE_Endcap_, Phase2TrackerDigitizerAlgorithm::tMax_, and Phase2TrackerDigitizerAlgorithm::use_LorentzAngle_DB_.

25  conf.getParameter<ParameterSet>("PSPDigitizerAlgorithm"),
26  iC),
27  geomToken_(iC.esConsumes()),
29  conf.getParameter<ParameterSet>("PSPDigitizerAlgorithm").getParameter<int>("BiasRailInefficiencyFlag")) {
32  pixelFlag_ = false;
33  LogDebug("PSPDigitizerAlgorithm") << "Algorithm constructed "
34  << "Configuration parameters:"
35  << "Threshold/Gain = "
36  << "threshold in electron Endcap = " << theThresholdInE_Endcap_
37  << "threshold in electron Barrel = " << theThresholdInE_Barrel_ << " "
38  << theElectronPerADC_ << " " << theAdcFullScale_ << " The delta cut-off is set to "
39  << tMax_ << " pix-inefficiency " << addPixelInefficiency_
40  << "Bias Rail Inefficiency " << biasRailInefficiencyFlag_;
41 }
T getParameter(std::string const &) const
Definition: ParameterSet.h:307
const edm::ESGetToken< TrackerGeometry, TrackerDigiGeometryRecord > geomToken_
edm::ESGetToken< SiPhase2OuterTrackerLorentzAngle, SiPhase2OuterTrackerLorentzAngleSimRcd > siPhase2OTLorentzAngleToken_
Phase2TrackerDigitizerAlgorithm(const edm::ParameterSet &conf_common, const edm::ParameterSet &conf_specific, edm::ConsumesCollector iC)
#define LogDebug(id)

◆ ~PSPDigitizerAlgorithm()

PSPDigitizerAlgorithm::~PSPDigitizerAlgorithm ( )
override

Definition at line 42 of file PSPDigitizerAlgorithm.cc.

References LogDebug.

42 { LogDebug("PSPDigitizerAlgorithm") << "Algorithm deleted"; }
#define LogDebug(id)

Member Function Documentation

◆ init()

void PSPDigitizerAlgorithm::init ( const edm::EventSetup es)
overridevirtual

Implements Phase2TrackerDigitizerAlgorithm.

Definition at line 15 of file PSPDigitizerAlgorithm.cc.

References edm::EventSetup::getData().

15  {
16  if (use_LorentzAngle_DB_) { // Get Lorentz angle from DB record
18  }
19 
20  geom_ = &es.getData(geomToken_);
21 }
T const & getData(const ESGetToken< T, R > &iToken) const noexcept(false)
Definition: EventSetup.h:119
const edm::ESGetToken< TrackerGeometry, TrackerDigiGeometryRecord > geomToken_
edm::ESGetToken< SiPhase2OuterTrackerLorentzAngle, SiPhase2OuterTrackerLorentzAngleSimRcd > siPhase2OTLorentzAngleToken_
const SiPhase2OuterTrackerLorentzAngle * siPhase2OTLorentzAngle_

◆ isAboveThreshold()

bool PSPDigitizerAlgorithm::isAboveThreshold ( const digitizerUtility::SimHitInfo hitInfo,
float  charge,
float  thr 
) const
overridevirtual

Reimplemented from Phase2TrackerDigitizerAlgorithm.

Definition at line 55 of file PSPDigitizerAlgorithm.cc.

References ALCARECOTkAlJpsiMuMu_cff::charge.

57  {
58  return (charge >= thr);
59 }

◆ isInBiasRailRegion()

bool PSPDigitizerAlgorithm::isInBiasRailRegion ( const PSimHit hit) const

Definition at line 63 of file PSPDigitizerAlgorithm.cc.

References biasRailInefficiencyFlag_, ALPAKA_ACCELERATOR_NAMESPACE::brokenline::constexpr(), mps_fire::result, and hit::y.

Referenced by select_hit().

63  {
64  constexpr float implant = 0.1467; // Implant length (1.467 mm)
65  constexpr float bRail = 0.00375; // Bias Rail region which causes inefficiency (37.5micron)
66  // Do coordinate transformation of the local Y from module middle point considering 32 implants and 31 inter-impant regions with bias rail
67  constexpr float block_len = 16 * implant + 15.5 * bRail;
68  constexpr float block_unit = implant + bRail;
69  float yin = hit.entryPoint().y() + block_len;
70  float yout = hit.exitPoint().y() + block_len;
71  bool result = false;
72 
73  // Flag= 1 corresponds to optimistic case when the entire trajectory is withon the bias rail region the SimHit will be rejected
74  if (biasRailInefficiencyFlag_ == 1 && (std::fmod(yin, block_unit) > implant && std::fmod(yout, block_unit) > implant))
75  result = true;
76  // Flag= 2 corresponds to pessimistic case i.e iven in a small part of the trajectory is inside the bias rain region the SimHit is rejected
77  else if (biasRailInefficiencyFlag_ == 2 &&
78  (std::fmod(yin, block_unit) > implant || std::fmod(yout, block_unit) > implant))
79  result = true;
80  return result;
81 }

◆ module_killing_DB()

void PSPDigitizerAlgorithm::module_killing_DB ( const Phase2TrackerGeomDetUnit pixdet)
overridevirtual

Implements Phase2TrackerDigitizerAlgorithm.

Definition at line 85 of file PSPDigitizerAlgorithm.cc.

85  {
86  // this method is dummy at the moment. Will be implemented once we have the corresponding objectcondition DB
87 }

◆ select_hit()

bool PSPDigitizerAlgorithm::select_hit ( const PSimHit hit,
double  tCorr,
double &  sigScale 
) const
overridevirtual

Member Data Documentation

◆ biasRailInefficiencyFlag_

const int PSPDigitizerAlgorithm::biasRailInefficiencyFlag_ {0}
private

Definition at line 25 of file PSPDigitizerAlgorithm.h.

Referenced by isInBiasRailRegion(), PSPDigitizerAlgorithm(), and select_hit().

◆ geomToken_

const edm::ESGetToken<TrackerGeometry, TrackerDigiGeometryRecord> PSPDigitizerAlgorithm::geomToken_
private

Definition at line 24 of file PSPDigitizerAlgorithm.h.

◆ siPhase2OTLorentzAngleToken_

edm::ESGetToken<SiPhase2OuterTrackerLorentzAngle, SiPhase2OuterTrackerLorentzAngleSimRcd> PSPDigitizerAlgorithm::siPhase2OTLorentzAngleToken_
private

Definition at line 23 of file PSPDigitizerAlgorithm.h.

Referenced by PSPDigitizerAlgorithm().