ATLAS Offline Software
Loading...
Searching...
No Matches
RadDamageUtil.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3 */
10
11#ifndef PIXELDIGITIZATION_RADDAMAGEUTIL_H
12#define PIXELDIGITIZATION_RADDAMAGEUTIL_H
13
15#include "GaudiKernel/ToolHandle.h"
16#include "Gaudi/Property.h"
17
18
19#include "EfieldInterpolator.h" //ToolHandle template argument
20#include <utility> // for std::pair
21namespace InDetDD{
23}
24
25class TH3F;
26class TH2F;
27class TH1F;
28
29//====================
30// C L A S S D E F
31//====================
33public:
34 RadDamageUtil(const std::string& type, const std::string& name, const IInterface* parent);
35
36 virtual StatusCode initialize() override;
37 virtual StatusCode finalize() override;
38
39 virtual ~RadDamageUtil();
40 StatusCode initTools();
41 const StatusCode generateRamoMap(TH3F* ramPotentialMap, InDetDD::PixelModuleDesign* module);
42 const StatusCode generateEfieldMap(TH1F*& eFieldMap, InDetDD::PixelModuleDesign* module);
43 StatusCode generateEfieldMap(TH1F*& eFieldMap, InDetDD::PixelModuleDesign* module, double fluence, double biasVoltage,
44 int layer, const std::string& TCAD_list, bool interpolate);
45 const StatusCode generateDistanceTimeMap(TH2F*& distanceMap_e, TH2F*& distanceMap_h, TH1F*& timeMap_e,
46 TH1F*& timeMap_h, TH2F*& lorentzMap_e, TH2F*& lorentzMap_h, TH1F*& eFieldMap,
48
49 const std::pair<double, double> getTrappingTimes(double fluence) const;
50 static const std::pair<double, double> getMobility(double electricField, double temperature) ;
51 static double getTanLorentzAngle(double electricField, double temperature, double bField, bool isHole) ;
52
53 bool saveDebugMaps();
54private:
56
57 Gaudi::Property<int> m_defaultRamo
58 {
59 this, "defaultRamo", 1, "Mapping strategy of Ramo potential"
60 };
61
62 Gaudi::Property<double> m_betaElectrons
63 {
64 this, "betaElectrons", 4.5e-16, "Used in trapping time calculation"
65 };
66
67 Gaudi::Property<double> m_betaHoles
68 {
69 this, "betaHoles", 6.0e-16, "Used in trapping time calculation"
70 };
71
72 Gaudi::Property<bool> m_saveDebugMaps
73 {
74 this, "saveDebugMaps", false, "Flag to save map"
75 };
76
77 Gaudi::Property<double> m_fieldScale{this, "fieldScale", 1.};
78
79 static double alpha(int n, int Nrep, double a); //Poisson solution factor
80 static double weighting3D(double x, double y, double z, int n, int m, int Nrep, double a, double b);
81 static double weighting2D(double x, double z, double Lx, double sensorThickness);
82
83 ToolHandle<EfieldInterpolator> m_EfieldInterpolator
84 {
85 this, "EfieldInterpolator", "EfieldInterpolator",
86 "Create an Efield for fluence and bias volatge of interest based on TCAD samples"
87 };
88};
89
90#endif //PIXELDIGITIZATION_RADDAMAGEUTIL_H
Instances of this class create a map (TH1D) describing the electric field profile along the pixeldept...
static Double_t a
#define y
#define x
#define z
AthAlgTool(const std::string &type, const std::string &name, const IInterface *parent)
Constructor with parameters:
Class used to describe the design of a module (diode segmentation and readout scheme)
ToolHandle< EfieldInterpolator > m_EfieldInterpolator
const StatusCode generateDistanceTimeMap(TH2F *&distanceMap_e, TH2F *&distanceMap_h, TH1F *&timeMap_e, TH1F *&timeMap_h, TH2F *&lorentzMap_e, TH2F *&lorentzMap_h, TH1F *&eFieldMap, InDetDD::PixelModuleDesign *module)
static double getTanLorentzAngle(double electricField, double temperature, double bField, bool isHole)
const StatusCode generateRamoMap(TH3F *ramPotentialMap, InDetDD::PixelModuleDesign *module)
virtual StatusCode initialize() override
Gaudi::Property< bool > m_saveDebugMaps
const std::pair< double, double > getTrappingTimes(double fluence) const
Gaudi::Property< double > m_fieldScale
static double alpha(int n, int Nrep, double a)
static double weighting2D(double x, double z, double Lx, double sensorThickness)
Gaudi::Property< double > m_betaElectrons
static double weighting3D(double x, double y, double z, int n, int m, int Nrep, double a, double b)
static const std::pair< double, double > getMobility(double electricField, double temperature)
const StatusCode generateEfieldMap(TH1F *&eFieldMap, InDetDD::PixelModuleDesign *module)
Gaudi::Property< int > m_defaultRamo
virtual StatusCode finalize() override
StatusCode initTools()
RadDamageUtil(const std::string &type, const std::string &name, const IInterface *parent)
virtual ~RadDamageUtil()
Gaudi::Property< double > m_betaHoles
Message Stream Member.
TH1F(name, title, nxbins, bins_par2, bins_par3=None, path='', **kwargs)