ATLAS Offline Software
Loading...
Searching...
No Matches
SiliconProperties.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
3*/
4
5#ifndef SIPROPERTIESTOOL_SILICONPROPERTIES_H
6#define SIPROPERTIESTOOL_SILICONPROPERTIES_H
7
9// Header file for class SiliconProperties
11// (c) ATLAS Detector software
13// Class to hold silicon properties such as mobility, etc.
14// Quantities are in CLHEP units.
16// Authors: Grant Gorfine
18
20
21namespace InDet {
22
24{
25public:
26
27
29 SiliconProperties(double temperature, double electricField);
30
31 void setConditions(double temperature, double electricField);
32
33 double electronDriftMobility() const;
34 double holeDriftMobility() const;
35 double electronHallMobility() const;
36 double holeHallMobility() const;
37 double electronDiffusionConstant() const;
38 double holeDiffusionConstant() const;
39 double electronSaturationVelocity() const;
40 double holeSaturationVelocity() const;
41
42 double electronHolePairsPerEnergy() const;
43
44 double driftMobility(InDetDD::CarrierType carrier) const;
45 double hallMobility(InDetDD::CarrierType carrier) const;
46 double signedHallMobility(InDetDD::CarrierType carrier) const; // signed by the charge of the carrier.
47 double diffusionConstant(InDetDD::CarrierType carrier) const;
48 static double charge(InDetDD::CarrierType carrier) ;
49
50
51 // These are mainly for use internally but are left public
52 static double calcElectronHallFactor(double temperature) ;
53 static double calcHoleHallFactor(double temperature) ;
54 static double calcDriftMobility(double electricField, double electricField_critical,
55 double saturationVelocity, double beta) ;
56 double calcElectronDriftMobility(double temperature, double electricField) const;
57 double calcHoleDriftMobility(double temperature, double electricField) const;
58 double calcElectronHallMobility(double temperature, double mobility) const;
59 double calcHoleHallMobility(double temperature, double mobility) const;
60 static double calcDiffusionConstant(double temperature, double mobility) ;
61
62 // Allow overriding calculated quantities.
63 // Setting any one (other than setElectronHolePairsPerEnergy) will disable recalculations
64 // ie setConditions(temperature, electricField) will have no further effect.
65 void setElectronDriftMobility(double mobility);
66 void setHoleDriftMobility(double mobility);
67 void setElectronHallMobility(double mobility);
68 void setHoleHallMobility(double mobility);
73 void setElectronHolePairsPerEnergy(double ehPairsPerEnergy);
74
75private:
85
86 bool m_override; // signal that quantities are overriden and recalculation are disabled.
87
88 const static double s_ehPairsPerEnergyDefault;
89};
90
91} // namespace InDetDD
92
93#endif // SIPROPERTIESTOOL_SILICONPROPERTIES_H
static double calcHoleHallFactor(double temperature)
void setConditions(double temperature, double electricField)
double driftMobility(InDetDD::CarrierType carrier) const
void setElectronDiffusionConstant(double diffusionConstant)
static double charge(InDetDD::CarrierType carrier)
double signedHallMobility(InDetDD::CarrierType carrier) const
void setElectronHolePairsPerEnergy(double ehPairsPerEnergy)
void setHoleDiffusionConstant(double diffusionConstant)
static double calcElectronHallFactor(double temperature)
double hallMobility(InDetDD::CarrierType carrier) const
double electronSaturationVelocity() const
void setHoleSaturationVelocity(double holeSaturationVelocity)
double electronHolePairsPerEnergy() const
void setElectronSaturationVelocity(double electronSaturationVelocity)
double calcElectronDriftMobility(double temperature, double electricField) const
void setHoleHallMobility(double mobility)
double calcHoleDriftMobility(double temperature, double electricField) const
void setElectronDriftMobility(double mobility)
void setElectronHallMobility(double mobility)
static double calcDriftMobility(double electricField, double electricField_critical, double saturationVelocity, double beta)
static double calcDiffusionConstant(double temperature, double mobility)
double calcHoleHallMobility(double temperature, double mobility) const
double diffusionConstant(InDetDD::CarrierType carrier) const
void setHoleDriftMobility(double mobility)
double calcElectronHallMobility(double temperature, double mobility) const
static const double s_ehPairsPerEnergyDefault
double electronDiffusionConstant() const
Primary Vertex Finder.