11#ifndef PIXELDIGITIZATION_RADDAMAGEUTIL_H
12#define PIXELDIGITIZATION_RADDAMAGEUTIL_H
15#include "GaudiKernel/ToolHandle.h"
16#include "Gaudi/Property.h"
34 RadDamageUtil(
const std::string&
type,
const std::string& name,
const IInterface* parent);
37 virtual StatusCode
finalize()
override;
44 int layer,
const std::string& TCAD_list,
bool interpolate);
46 TH1F*& timeMap_h, TH2F*& lorentzMap_e, TH2F*& lorentzMap_h, TH1F*& eFieldMap,
50 static const std::pair<double, double>
getMobility(
double electricField,
double temperature) ;
51 static double getTanLorentzAngle(
double electricField,
double temperature,
double bField,
bool isHole) ;
59 this,
"defaultRamo", 1,
"Mapping strategy of Ramo potential"
64 this,
"betaElectrons", 4.5e-16,
"Used in trapping time calculation"
69 this,
"betaHoles", 6.0e-16,
"Used in trapping time calculation"
74 this,
"saveDebugMaps",
false,
"Flag to save map"
79 static double alpha(
int n,
int Nrep,
double a);
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);
85 this,
"EfieldInterpolator",
"EfieldInterpolator",
86 "Create an Efield for fluence and bias volatge of interest based on TCAD samples"
Instances of this class create a map (TH1D) describing the electric field profile along the pixeldept...
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
RadDamageUtil(const std::string &type, const std::string &name, const IInterface *parent)
Gaudi::Property< double > m_betaHoles
TH1F(name, title, nxbins, bins_par2, bins_par3=None, path='', **kwargs)