Loading [MathJax]/extensions/tex2jax.js
ATLAS Offline Software
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
SensorSim3DTool.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3 */
4 
12 #ifndef PIXELDIGITIZATION_SensorSim3DTool_H
13 #define PIXELDIGITIZATION_SensorSim3DTool_H
14 
16 #include "SensorSimTool.h"
17 
18 #include "GaudiKernel/ToolHandle.h"
19 #include "RadDamageUtil.h"
21 #include "PixelReadoutDefinitions/PixelReadoutDefinitions.h" //PixelReadoutTechnology enum class
22 #include <vector>
23 #include <map> //std::multimap, and std::pair
24 
25 namespace InDetDD{
26  class SiDetectorElement;
27  class PixelModuleDesign;
28 }
29 
30 namespace CLHEP{
31  class HepRandomEngine;
32 }
33 
34 class EventContext;
35 
37 public:
38  SensorSim3DTool(const std::string& type, const std::string& name, const IInterface* parent);
39  virtual StatusCode initialize() override;
40  virtual StatusCode finalize() override;
41  virtual ~SensorSim3DTool();
42 
43  virtual StatusCode induceCharge(const TimedHitPtr<SiHit>& phit,
44  SiChargedDiodeCollection& chargedDiodes,
45  const InDetDD::SiDetectorElement& Module,
46  const InDetDD::PixelModuleDesign& p_design,
47  std::vector< std::pair<double, double> >& trfHitRecord,
48  std::vector<double>& initialConditions,
49  CLHEP::HepRandomEngine* rndmEngine,
50  const EventContext &ctx) const override;
51 
52 
53  // 3D sensor simulation using probability density map (used in RUN-2 (no radiation damage)
54  StatusCode readProbMap(const std::string&);
55  StatusCode printProbMap(const std::string&) const;
56 
57  double getMobility(double electricField, bool isHoleBit) const;
58  std::vector<double> getDriftTime(bool isHoleBit, size_t number,
59  CLHEP::HepRandomEngine* rndmEngine,
60  double trappingTimeElectrons,
61  double trappingTimeHoles) const;
62 
63 private:
65 
66  double getProbMapEntry(const InDetDD::PixelReadoutTechnology &, int, int) const;
67 
68  // 3D sensor simulation using probability density map (used in RUN-2 (no radiation damage)
69  std::multimap<std::pair<int, int>, double> m_probMapFEI4;
70  std::multimap<std::pair<int, int>, double> m_probMapFEI3;
71 
72  std::vector<PixelHistoConverter> m_chargeCorrection;
73 
74  Gaudi::Property<std::string> m_cc_prob_file_fei3
75  {
76  this, "CCProbMapFileFEI3", "PixelDigitization/3DFEI3-3E-problist-1um_v1.txt",
77  "Input probability file for 3D FEI3 sensor."
78  };
79 
80  Gaudi::Property<std::string> m_cc_prob_file_fei4
81  {
82  this, "CCProbMapFileFEI4", "PixelDigitization/3DFEI4-2E-problist-1um_v0.txt",
83  "Input probability file for 3D FEI4 sensor."
84  };
85 
86  Gaudi::Property<int> m_numberOfSteps
87  {
88  this, "numberOfSteps", 50, "Number of steps for Pixel3D module"
89  };
90 
91  Gaudi::Property<bool> m_doChunkCorrection
92  {
93  this, "doChunkCorrection", false, "doChunkCorrection bool: should be flag"
94  };
95 
96  Gaudi::Property<double> m_temperature
97  {
98  this, "Temperature", 300.0, "Default temperature [K]"
99  };
100 
101  ToolHandle<RadDamageUtil> m_radDamageUtil
102  {
103  this, "RadDamageUtil", "RadDamageUtil", "Rad Damage utility"
104  };
105 
106 };
107 
108 #endif // PIXELDIGITIZATION_SensorSim3DTool_H
InDetDD::PixelReadoutTechnology
PixelReadoutTechnology
Definition: PixelReadoutDefinitions.h:37
InDetDD::PixelModuleDesign
Definition: PixelModuleDesign.h:48
SensorSimTool.h
SensorSim3DTool::m_temperature
Gaudi::Property< double > m_temperature
Definition: SensorSim3DTool.h:97
SensorSim3DTool::m_probMapFEI3
std::multimap< std::pair< int, int >, double > m_probMapFEI3
Definition: SensorSim3DTool.h:70
SensorSim3DTool::finalize
virtual StatusCode finalize() override
Definition: SensorSim3DTool.cxx:89
SensorSim3DTool::readProbMap
StatusCode readProbMap(const std::string &)
Definition: SensorSim3DTool.cxx:710
SensorSim3DTool::m_numberOfSteps
Gaudi::Property< int > m_numberOfSteps
Definition: SensorSim3DTool.h:87
SensorSim3DTool::initialize
virtual StatusCode initialize() override
Definition: SensorSim3DTool.cxx:41
SensorSim3DTool::m_cc_prob_file_fei3
Gaudi::Property< std::string > m_cc_prob_file_fei3
Definition: SensorSim3DTool.h:75
TimedHitPtr< SiHit >
SensorSim3DTool::~SensorSim3DTool
virtual ~SensorSim3DTool()
SensorSim3DTool::m_probMapFEI4
std::multimap< std::pair< int, int >, double > m_probMapFEI4
Definition: SensorSim3DTool.h:69
SensorSim3DTool::getMobility
double getMobility(double electricField, bool isHoleBit) const
Definition: SensorSim3DTool.cxx:783
SensorSim3DTool::getDriftTime
std::vector< double > getDriftTime(bool isHoleBit, size_t number, CLHEP::HepRandomEngine *rndmEngine, double trappingTimeElectrons, double trappingTimeHoles) const
Definition: SensorSim3DTool.cxx:809
python.CaloAddPedShiftConfig.type
type
Definition: CaloAddPedShiftConfig.py:42
PixelHistoConverter.h
SiChargedDiodeCollection
Definition: SiChargedDiodeCollection.h:109
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
CLHEP
STD'S.
Definition: CaloNoiseCompCondAlg.h:57
AthAlgTool.h
SensorSim3DTool::SensorSim3DTool
SensorSim3DTool()
test_pyathena.parent
parent
Definition: test_pyathena.py:15
SensorSim3DTool::induceCharge
virtual StatusCode induceCharge(const TimedHitPtr< SiHit > &phit, SiChargedDiodeCollection &chargedDiodes, const InDetDD::SiDetectorElement &Module, const InDetDD::PixelModuleDesign &p_design, std::vector< std::pair< double, double > > &trfHitRecord, std::vector< double > &initialConditions, CLHEP::HepRandomEngine *rndmEngine, const EventContext &ctx) const override
Definition: SensorSim3DTool.cxx:97
SensorSim3DTool
Definition: SensorSim3DTool.h:36
SensorSim3DTool::printProbMap
StatusCode printProbMap(const std::string &) const
Definition: SensorSim3DTool.cxx:746
SensorSim3DTool::m_radDamageUtil
ToolHandle< RadDamageUtil > m_radDamageUtil
Definition: SensorSim3DTool.h:102
SensorSim3DTool::m_chargeCorrection
std::vector< PixelHistoConverter > m_chargeCorrection
Definition: SensorSim3DTool.h:72
python.selection.number
number
Definition: selection.py:20
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
InDetDD::SiDetectorElement
Definition: SiDetectorElement.h:109
PixelReadoutDefinitions.h
InDetDD
Message Stream Member.
Definition: FakeTrackBuilder.h:8
SensorSim3DTool::m_cc_prob_file_fei4
Gaudi::Property< std::string > m_cc_prob_file_fei4
Definition: SensorSim3DTool.h:81
SensorSimTool
Definition: SensorSimTool.h:38
SensorSim3DTool::m_doChunkCorrection
Gaudi::Property< bool > m_doChunkCorrection
Definition: SensorSim3DTool.h:92
SensorSim3DTool::getProbMapEntry
double getProbMapEntry(const InDetDD::PixelReadoutTechnology &, int, int) const
Definition: SensorSim3DTool.cxx:767
RadDamageUtil.h