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 
16 
17 // Data formats
19 
20 // system
21 #include <functional>
22 
24 public:
26  ~Pixel3DDigitizerAlgorithm() override;
27 
28  // initialization that cannot be done in the constructor
29  void init(const edm::EventSetup& es) override;
30  bool select_hit(const PSimHit& hit, double tCorr, double& sigScale) const override;
31  std::vector<DigitizerUtility::SignalPoint> drift(
32  const PSimHit& hit,
33  const Phase2TrackerGeomDetUnit* pixdet,
34  const GlobalVector& bfield,
35  const std::vector<DigitizerUtility::EnergyDepositUnit>& ionization_points) const override;
36  // overload drift
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,
42  bool diffusion_activated) const;
43 
44  // New diffusion function: check implementation
45  std::vector<DigitizerUtility::EnergyDepositUnit> diffusion(const LocalPoint& pos,
46  const float& ncarriers,
47  const std::function<LocalVector(float, float)>& u_drift,
48  const std::pair<float, float> pitches,
49  const float& thickness) const;
50  // Specific for 3D-pixel
51  void induce_signal(const PSimHit& hit,
52  const size_t hitIndex,
53  const uint32_t tofBin,
54  const Phase2TrackerGeomDetUnit* pixdet,
55  const std::vector<DigitizerUtility::SignalPoint>& collection_points) override;
56 
57 private:
58  // Radius of Column np and ohmic
59  const float np_column_radius_;
60  const float ohm_column_radius_;
61  // Gap of np column
62  const float np_column_gap_;
63 
64  // Check if a carrier is inside the column: The point should
65  // be described in the pixel cell frame
66  const bool is_inside_n_column_(const LocalPoint& p, const float& sensor_thickness) const;
67  const bool is_inside_ohmic_column_(const LocalPoint& p, const std::pair<float, float>& pitch) const;
68 };
69 #endif
Vector3DBase
Definition: Vector3DBase.h:8
Pixel3DDigitizerAlgorithm::select_hit
bool select_hit(const PSimHit &hit, double tCorr, double &sigScale) const override
Definition: Pixel3DDigitizerAlgorithm.cc:84
Pixel3DDigitizerAlgorithm::is_inside_n_column_
const bool is_inside_n_column_(const LocalPoint &p, const float &sensor_thickness) const
Definition: Pixel3DDigitizerAlgorithm.cc:89
Pixel3DDigitizerAlgorithm::ohm_column_radius_
const float ohm_column_radius_
Definition: Pixel3DDigitizerAlgorithm.h:60
AlCaHLTBitMon_ParallelJobs.p
p
Definition: AlCaHLTBitMon_ParallelJobs.py:153
pos
Definition: PixelAliasList.h:18
Pixel3DDigitizerAlgorithm::~Pixel3DDigitizerAlgorithm
~Pixel3DDigitizerAlgorithm() override
Definition: Pixel3DDigitizerAlgorithm.cc:79
Phase2TrackerDigitizerAlgorithm.h
Pixel3DDigitizerAlgorithm
Definition: Pixel3DDigitizerAlgorithm.h:23
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:220
Pixel3DDigitizerAlgorithm::Pixel3DDigitizerAlgorithm
Pixel3DDigitizerAlgorithm(const edm::ParameterSet &conf)
Definition: Pixel3DDigitizerAlgorithm.cc:53
Calorimetry_cff.thickness
thickness
Definition: Calorimetry_cff.py:114
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:112
Point3DBase< float, LocalTag >
edm::ParameterSet
Definition: ParameterSet.h:47
Phase2TrackerDigitizerAlgorithm
Definition: Phase2TrackerDigitizerAlgorithm.h:59
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:381
Pixel3DDigitizerAlgorithm::init
void init(const edm::EventSetup &es) override
Definition: Pixel3DDigitizerAlgorithm.cc:30
Pixel3DDigitizerAlgorithm::is_inside_ohmic_column_
const bool is_inside_ohmic_column_(const LocalPoint &p, const std::pair< float, float > &pitch) const
Definition: Pixel3DDigitizerAlgorithm.cc:94
LocalVector
Local3DVector LocalVector
Definition: LocalVector.h:12
edm::EventSetup
Definition: EventSetup.h:57
LocalPoint.h
HiBiasedCentrality_cfi.function
function
Definition: HiBiasedCentrality_cfi.py:4
PSimHit
Definition: PSimHit.h:15
Pixel3DDigitizerAlgorithm::np_column_radius_
const float np_column_radius_
Definition: Pixel3DDigitizerAlgorithm.h:59
hit
Definition: SiStripHitEffFromCalibTree.cc:88
Pixel3DDigitizerAlgorithm::np_column_gap_
const float np_column_gap_
Definition: Pixel3DDigitizerAlgorithm.h:62