ATLAS Offline Software
SensorSimPlanarTool.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3 */
4 
12 #ifndef PIXELDIGITIZATION_SensorSimPlanarTool_H
13 #define PIXELDIGITIZATION_SensorSimPlanarTool_H
14 
16 #include "InDetCondTools/ISiLorentzAngleTool.h" //ToolHandle template parameter
17 #include "SensorSimTool.h"
18 #include "RadDamageUtil.h" //ToolHandle template parameter
20 #include <vector>
21 #include <utility> //std::pair
22 
23 
24 
26 public:
27  SensorSimPlanarTool(const std::string& type, const std::string& name, const IInterface* parent);
28  virtual StatusCode initialize() override;
29  virtual StatusCode finalize() override;
31 
32  virtual StatusCode induceCharge(const TimedHitPtr<SiHit>& phit,
33  SiChargedDiodeCollection& chargedDiodes,
34  const InDetDD::SiDetectorElement& Module,
35  const InDetDD::PixelModuleDesign& p_design,
36  std::vector< std::pair<double, double> >& trfHitRecord,
37  std::vector<double>& initialConditions,
38  CLHEP::HepRandomEngine* rndmEngine,
39  const EventContext &ctx) override;
40 
41 private:
43 
44  //Apply slim edge inefficiencies for IBL sensors
45  static void applyIBLSlimEdges(double& energyPerStep, double& eta_drifted) ;
46 
47  // Map for radiation damage simulation
48  std::vector<PixelHistoConverter> m_ramoPotentialMap;
49  std::vector<PixelHistoConverter> m_distanceMap_e;
50  std::vector<PixelHistoConverter> m_distanceMap_h;
51  std::vector<PixelHistoConverter> m_lorentzMap_e;
52  std::vector<PixelHistoConverter> m_lorentzMap_h;
53  std::vector<std::pair<double,double> > m_centrePixelNNEtaPhi;
54  std::vector<PixelHistoConverter> m_lorentzCorrection;
55  std::vector<PixelHistoConverter> m_chargeCorrection;
56  std::vector<PixelHistoConverter> m_distanceCorrection;
57 
58  Gaudi::Property<int> m_numberOfSteps
59  {
60  this, "numberOfSteps", 50, "Geant4:number of steps for PixelPlanar"
61  };
62 
63  Gaudi::Property<double> m_diffusionConstant
64  {
65  this, "diffusionConstant", 0.0, "Geant4:Diffusion Constant for PixelPlanar"
66  };
67 
68  Gaudi::Property<bool> m_doInterpolateEfield
69  {
70  this, "doInterpolateEfield", false, "doInterpolateEfield bool: should be flag"
71  };
72 
73  Gaudi::Property<std::vector<std::string> > m_fluenceMap
74  {
75  this, "FluenceMap", {
76  "PixelDigitization/maps_IBL_PL_400V_fl5_5e14.root",
77  "PixelDigitization/maps_PIX_400V_fl5_19e14.root",
78  "PixelDigitization/maps_PIX_250V_fl2_28e14.root",
79  "PixelDigitization/maps_PIX_250V_fl1_53e14.root"
80  },
81  "Fluence map for radiation damage when interpolation method is activated"
82  };
83 
84  Gaudi::Property<std::vector<double> > m_fluenceLayer
85  {
86  this, "FluenceLayer", {
87  5.50e14, 5.19e14, 2.28e14, 1.53e14
88  }, "Fluence for radiation damage when interpolation method is activated"
89  };
90 
91  Gaudi::Property<std::vector<float> > m_voltageLayer
92  {
93  this, "BiasVoltageLayer", {
94  400.0, 400.0, 250.0, 250.0
95  }, "Bias voltage for radiation damage when interpolation method is activated"
96  };
97 
98  ToolHandle<RadDamageUtil> m_radDamageUtil
99  {
100  this, "RadDamageUtil", "RadDamageUtil", "Rad Damage utility"
101  };
102 
103  ToolHandle<ISiLorentzAngleTool> m_lorentzAngleTool
104  {
105  this, "LorentzAngleTool", "PixelLorentzAngleTool", "Tool to retreive Lorentz angle"
106  };
107 };
108 
109 #endif // PIXELDIGITIZATION_SensorSimPlanarTool_H
SensorSimPlanarTool::m_fluenceLayer
Gaudi::Property< std::vector< double > > m_fluenceLayer
Definition: SensorSimPlanarTool.h:85
SensorSimPlanarTool::m_distanceCorrection
std::vector< PixelHistoConverter > m_distanceCorrection
Definition: SensorSimPlanarTool.h:56
SensorSimPlanarTool::m_distanceMap_e
std::vector< PixelHistoConverter > m_distanceMap_e
Definition: SensorSimPlanarTool.h:49
InDetDD::PixelModuleDesign
Definition: PixelModuleDesign.h:48
SensorSimTool.h
SensorSimPlanarTool::m_chargeCorrection
std::vector< PixelHistoConverter > m_chargeCorrection
Definition: SensorSimPlanarTool.h:55
SensorSimPlanarTool::m_distanceMap_h
std::vector< PixelHistoConverter > m_distanceMap_h
Definition: SensorSimPlanarTool.h:50
SensorSimPlanarTool::m_numberOfSteps
Gaudi::Property< int > m_numberOfSteps
Definition: SensorSimPlanarTool.h:59
SensorSimPlanarTool
Definition: SensorSimPlanarTool.h:25
SensorSimPlanarTool::m_centrePixelNNEtaPhi
std::vector< std::pair< double, double > > m_centrePixelNNEtaPhi
Definition: SensorSimPlanarTool.h:53
ISiLorentzAngleTool.h
TimedHitPtr< SiHit >
SensorSimPlanarTool::m_lorentzCorrection
std::vector< PixelHistoConverter > m_lorentzCorrection
Definition: SensorSimPlanarTool.h:54
PixelHistoConverter.h
SensorSimPlanarTool::m_lorentzMap_h
std::vector< PixelHistoConverter > m_lorentzMap_h
Definition: SensorSimPlanarTool.h:52
SiChargedDiodeCollection
Definition: SiChargedDiodeCollection.h:109
SensorSimPlanarTool::finalize
virtual StatusCode finalize() override
Definition: SensorSimPlanarTool.cxx:252
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
SensorSimPlanarTool::m_doInterpolateEfield
Gaudi::Property< bool > m_doInterpolateEfield
Definition: SensorSimPlanarTool.h:69
AthAlgTool.h
test_pyathena.parent
parent
Definition: test_pyathena.py:15
SensorSimPlanarTool::m_voltageLayer
Gaudi::Property< std::vector< float > > m_voltageLayer
Definition: SensorSimPlanarTool.h:92
SensorSimPlanarTool::m_fluenceMap
Gaudi::Property< std::vector< std::string > > m_fluenceMap
Definition: SensorSimPlanarTool.h:74
SensorSimPlanarTool::m_radDamageUtil
ToolHandle< RadDamageUtil > m_radDamageUtil
Definition: SensorSimPlanarTool.h:99
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
SensorSimPlanarTool::initialize
virtual StatusCode initialize() override
Definition: SensorSimPlanarTool.cxx:47
InDetDD::SiDetectorElement
Definition: SiDetectorElement.h:109
SensorSimPlanarTool::SensorSimPlanarTool
SensorSimPlanarTool()
SensorSimPlanarTool::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) override
Definition: SensorSimPlanarTool.cxx:260
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
SensorSimPlanarTool::m_lorentzMap_e
std::vector< PixelHistoConverter > m_lorentzMap_e
Definition: SensorSimPlanarTool.h:51
SensorSimPlanarTool::m_lorentzAngleTool
ToolHandle< ISiLorentzAngleTool > m_lorentzAngleTool
Definition: SensorSimPlanarTool.h:104
SensorSimTool
Definition: SensorSimTool.h:38
SensorSimPlanarTool::m_ramoPotentialMap
std::vector< PixelHistoConverter > m_ramoPotentialMap
Definition: SensorSimPlanarTool.h:48
SensorSimPlanarTool::~SensorSimPlanarTool
virtual ~SensorSimPlanarTool()
SensorSimPlanarTool::applyIBLSlimEdges
static void applyIBLSlimEdges(double &energyPerStep, double &eta_drifted)
Definition: SensorSimPlanarTool.cxx:721
RadDamageUtil.h
SensorSimPlanarTool::m_diffusionConstant
Gaudi::Property< double > m_diffusionConstant
Definition: SensorSimPlanarTool.h:64