ATLAS Offline Software
Loading...
Searching...
No Matches
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
11
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
25namespace InDetDD{
28}
29
30namespace CLHEP{
31 class HepRandomEngine;
32}
33
34class EventContext;
35
37public:
38 SensorSim3DTool(const std::string& type, const std::string& name, const IInterface* parent);
39 virtual StatusCode initialize() override;
40 virtual StatusCode finalize() override;
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
63private:
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
Class used to describe the design of a module (diode segmentation and readout scheme)
Class to hold geometrical description of a silicon detector element.
virtual ~SensorSim3DTool()
double getProbMapEntry(const InDetDD::PixelReadoutTechnology &, int, int) const
Gaudi::Property< std::string > m_cc_prob_file_fei4
std::vector< double > getDriftTime(bool isHoleBit, size_t number, CLHEP::HepRandomEngine *rndmEngine, double trappingTimeElectrons, double trappingTimeHoles) const
virtual StatusCode initialize() override
double getMobility(double electricField, bool isHoleBit) const
SensorSim3DTool(const std::string &type, const std::string &name, const IInterface *parent)
std::multimap< std::pair< int, int >, double > m_probMapFEI3
std::vector< PixelHistoConverter > m_chargeCorrection
StatusCode printProbMap(const std::string &) const
std::multimap< std::pair< int, int >, double > m_probMapFEI4
Gaudi::Property< int > m_numberOfSteps
ToolHandle< RadDamageUtil > m_radDamageUtil
virtual StatusCode finalize() override
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
Gaudi::Property< bool > m_doChunkCorrection
StatusCode readProbMap(const std::string &)
Gaudi::Property< std::string > m_cc_prob_file_fei3
Gaudi::Property< double > m_temperature
SensorSimTool(const std::string &type, const std::string &name, const IInterface *parent)
a smart pointer to a hit that also provides access to the extended timing info of the host event.
Definition TimedHitPtr.h:18
Message Stream Member.
std::string number(const double &d, const std::string &s)
Definition utils.cxx:186