CMS 3D CMS Logo

Pixel3DDigitizerAlgorithm.h
Go to the documentation of this file.
1 #ifndef _SimTracker_SiPhase2Digitizer_Pixel3DDigitizerAlgorithm_h
2 #define _SimTracker_SiPhase2Digitizer_Pixel3DDigitizerAlgorithm_h
3 
4 //-------------------------------------------------------------
5 // class Pixel3DDigitizerAlgorithm
6 //
7 // Specialization of the tracker digitizer for the 3D pixel
8 // sensors placed at PXB-Layer1 (and possibly Layer2), and
9 // at PXF-Disk1 and Disk2
10 //
11 // Authors: Jordi Duarte-Campderros (CERN/IFCA)
12 // Clara Lasaosa Garcia (IFCA)
13 //--------------------------------------------------------------
14 
22 
23 // Data formats
25 
26 // system
27 #include <functional>
28 
30 public:
32  ~Pixel3DDigitizerAlgorithm() override;
33 
34  // initialization that cannot be done in the constructor
35  void init(const edm::EventSetup& es) override;
36  bool select_hit(const PSimHit& hit, double tCorr, double& sigScale) const override;
37  std::vector<DigitizerUtility::SignalPoint> drift(
38  const PSimHit& hit,
39  const Phase2TrackerGeomDetUnit* pixdet,
40  const GlobalVector& bfield,
41  const std::vector<DigitizerUtility::EnergyDepositUnit>& ionization_points) const override;
42  // overload drift
43  std::vector<DigitizerUtility::SignalPoint> drift(
44  const PSimHit& hit,
45  const Phase2TrackerGeomDetUnit* pixdet,
46  const GlobalVector& bfield,
47  const std::vector<DigitizerUtility::EnergyDepositUnit>& ionization_points,
48  bool diffusion_activated) const;
49 
50  // New diffusion function: check implementation
51  std::vector<DigitizerUtility::EnergyDepositUnit> diffusion(const LocalPoint& pos,
52  const float& ncarriers,
53  const std::function<LocalVector(float, float)>& u_drift,
54  const std::pair<float, float> pitches,
55  const float& thickness) const;
56  // Specific for 3D-pixel
57  void induce_signal(const PSimHit& hit,
58  const size_t hitIndex,
59  const uint32_t tofBin,
60  const Phase2TrackerGeomDetUnit* pixdet,
61  const std::vector<DigitizerUtility::SignalPoint>& collection_points) override;
62 
63 private:
64  // Radius of Column np and ohmic
65  const float np_column_radius_;
66  const float ohm_column_radius_;
67  // Gap of np column
68  const float np_column_gap_;
69 
74 
75  // Check if a carrier is inside the column: The point should
76  // be described in the pixel cell frame
77  const bool is_inside_n_column_(const LocalPoint& p, const float& sensor_thickness) const;
78  const bool is_inside_ohmic_column_(const LocalPoint& p, const std::pair<float, float>& pitch) const;
79 };
80 #endif
Vector3DBase
Definition: Vector3DBase.h:8
Pixel3DDigitizerAlgorithm::select_hit
bool select_hit(const PSimHit &hit, double tCorr, double &sigScale) const override
Definition: Pixel3DDigitizerAlgorithm.cc:89
Pixel3DDigitizerAlgorithm::is_inside_n_column_
const bool is_inside_n_column_(const LocalPoint &p, const float &sensor_thickness) const
Definition: Pixel3DDigitizerAlgorithm.cc:94
Pixel3DDigitizerAlgorithm::geomToken_
const edm::ESGetToken< TrackerGeometry, TrackerDigiGeometryRecord > geomToken_
Definition: Pixel3DDigitizerAlgorithm.h:73
Pixel3DDigitizerAlgorithm::ohm_column_radius_
const float ohm_column_radius_
Definition: Pixel3DDigitizerAlgorithm.h:66
pos
Definition: PixelAliasList.h:18
Pixel3DDigitizerAlgorithm::siPixelLorentzAngleToken_
edm::ESGetToken< SiPixelLorentzAngle, SiPixelLorentzAngleSimRcd > siPixelLorentzAngleToken_
Definition: Pixel3DDigitizerAlgorithm.h:71
Pixel3DDigitizerAlgorithm::~Pixel3DDigitizerAlgorithm
~Pixel3DDigitizerAlgorithm() override
Definition: Pixel3DDigitizerAlgorithm.cc:84
SiPixelFedCablingMap.h
Pixel3DDigitizerAlgorithm::fedCablingMapToken_
const edm::ESGetToken< SiPixelFedCablingMap, SiPixelFedCablingMapRcd > fedCablingMapToken_
Definition: Pixel3DDigitizerAlgorithm.h:72
SiPixelLorentzAngleSimRcd.h
Phase2TrackerDigitizerAlgorithm.h
Pixel3DDigitizerAlgorithm
Definition: Pixel3DDigitizerAlgorithm.h:29
ESGetToken.h
Pixel3DDigitizerAlgorithm::drift
std::vector< DigitizerUtility::SignalPoint > drift(const PSimHit &hit, const Phase2TrackerGeomDetUnit *pixdet, const GlobalVector &bfield, const std::vector< DigitizerUtility::EnergyDepositUnit > &ionization_points) const override
Definition: Pixel3DDigitizerAlgorithm.cc:214
SiPixelQualityRcd.h
Calorimetry_cff.thickness
thickness
Definition: Calorimetry_cff.py:115
PixelGeomDetUnit
Definition: PixelGeomDetUnit.h:15
Pixel3DDigitizerAlgorithm::diffusion
std::vector< DigitizerUtility::EnergyDepositUnit > diffusion(const LocalPoint &pos, const float &ncarriers, const std::function< LocalVector(float, float)> &u_drift, const std::pair< float, float > pitches, const float &thickness) const
Definition: Pixel3DDigitizerAlgorithm.cc:117
Point3DBase< float, LocalTag >
TrackerDigiGeometryRecord.h
edm::ParameterSet
Definition: ParameterSet.h:47
AlCaHLTBitMon_ParallelJobs.p
def p
Definition: AlCaHLTBitMon_ParallelJobs.py:153
Phase2TrackerDigitizerAlgorithm
Definition: Phase2TrackerDigitizerAlgorithm.h:54
SiPixelFedCablingMapRcd.h
Pixel3DDigitizerAlgorithm::induce_signal
void induce_signal(const PSimHit &hit, const size_t hitIndex, const uint32_t tofBin, const Phase2TrackerGeomDetUnit *pixdet, const std::vector< DigitizerUtility::SignalPoint > &collection_points) override
Definition: Pixel3DDigitizerAlgorithm.cc:378
Pixel3DDigitizerAlgorithm::init
void init(const edm::EventSetup &es) override
Definition: Pixel3DDigitizerAlgorithm.cc:27
Pixel3DDigitizerAlgorithm::is_inside_ohmic_column_
const bool is_inside_ohmic_column_(const LocalPoint &p, const std::pair< float, float > &pitch) const
Definition: Pixel3DDigitizerAlgorithm.cc:99
LocalVector
Local3DVector LocalVector
Definition: LocalVector.h:12
edm::EventSetup
Definition: EventSetup.h:58
edm::ESGetToken< SiPixelQuality, SiPixelQualityRcd >
LocalPoint.h
HiBiasedCentrality_cfi.function
function
Definition: HiBiasedCentrality_cfi.py:4
Pixel3DDigitizerAlgorithm::siPixelBadModuleToken_
edm::ESGetToken< SiPixelQuality, SiPixelQualityRcd > siPixelBadModuleToken_
Definition: Pixel3DDigitizerAlgorithm.h:70
PSimHit
Definition: PSimHit.h:15
Pixel3DDigitizerAlgorithm::Pixel3DDigitizerAlgorithm
Pixel3DDigitizerAlgorithm(const edm::ParameterSet &conf, edm::ConsumesCollector iC)
Definition: Pixel3DDigitizerAlgorithm.cc:50
Pixel3DDigitizerAlgorithm::np_column_radius_
const float np_column_radius_
Definition: Pixel3DDigitizerAlgorithm.h:65
edm::ConsumesCollector
Definition: ConsumesCollector.h:45
hit
Definition: SiStripHitEffFromCalibTree.cc:88
Pixel3DDigitizerAlgorithm::np_column_gap_
const float np_column_gap_
Definition: Pixel3DDigitizerAlgorithm.h:68