ATLAS Offline Software
Public Member Functions | Private Types | Private Attributes | List of all members
SCT_ElectricFieldTool Class Reference

#include <SCT_ElectricFieldTool.h>

Inheritance diagram for SCT_ElectricFieldTool:
Collaboration diagram for SCT_ElectricFieldTool:

Public Member Functions

 SCT_ElectricFieldTool (const std::string &t, const std::string &n, const IInterface *p)
 
virtual ~SCT_ElectricFieldTool ()=default
 
virtual StatusCode initialize () override
 
virtual StatusCode finalize () override
 
virtual double getElectricField (double positionZ, double fluence, double depletionVoltage, double sensorThickness, double biasVoltage) const override
 

Private Types

enum  FieldModel { UNIFORM_FIELD, FLAT_DIODE }
 

Private Attributes

IntegerProperty m_eFieldModel {this, "EFieldModel", FLAT_DIODE, "UNIFORM_FIELD=0 uniform E-field model, FLAT_DIODE=1 flat diode model"}
 
TF1 m_model {"pol6", "pol6", 0., 0.03}
 

Detailed Description

Definition at line 26 of file SCT_ElectricFieldTool.h.

Member Enumeration Documentation

◆ FieldModel

Enumerator
UNIFORM_FIELD 
FLAT_DIODE 

Definition at line 41 of file SCT_ElectricFieldTool.h.

Constructor & Destructor Documentation

◆ SCT_ElectricFieldTool()

SCT_ElectricFieldTool::SCT_ElectricFieldTool ( const std::string &  t,
const std::string &  n,
const IInterface *  p 
)

Definition at line 11 of file SCT_ElectricFieldTool.cxx.

11  :
12  base_class(t, n, p) {
13 }

◆ ~SCT_ElectricFieldTool()

virtual SCT_ElectricFieldTool::~SCT_ElectricFieldTool ( )
virtualdefault

Member Function Documentation

◆ finalize()

StatusCode SCT_ElectricFieldTool::finalize ( )
overridevirtual

Definition at line 31 of file SCT_ElectricFieldTool.cxx.

31  {
32  return StatusCode::SUCCESS;
33 }

◆ getElectricField()

double SCT_ElectricFieldTool::getElectricField ( double  positionZ,
double  fluence,
double  depletionVoltage,
double  sensorThickness,
double  biasVoltage 
) const
overridevirtual
Parameters
fluencefluence*

Definition at line 35 of file SCT_ElectricFieldTool.cxx.

39  {
41  //--------------------------------------------------------------
42  // Electric Field Ez
43  //--------------------------------------------------------------
44  // y is depth and should be give in mm
45  // the electric field is returned in V/mm
46  //
47  double y{positionZ*0.1}; // from mm to cm
48  double bulkDepth{sensorThickness*0.1}; // from mm to cm;
49  double Ey{0.};
50  y = bulkDepth - y;
51 
52  //------------ find depletion depth for model=0 and 1 -------------
53  double depletionDepth{bulkDepth};
54  if (biasVoltage < std::abs(depletionVoltage)) depletionDepth = sqrt(biasVoltage/std::abs(depletionVoltage)) * bulkDepth;
55  if (y<=depletionDepth){
56  //---------- case for uniform electric field ------------------------
58  Ey = biasVoltage / depletionDepth ;
59  Ey = Ey*0.1;
60  return Ey / CLHEP::volt;
61  }
62 
63  //---------- case for flat diode model ------------------------------
64  if (m_eFieldModel==FLAT_DIODE) {
65  if (biasVoltage > std::abs(depletionVoltage)) {
66  Ey = (biasVoltage+depletionVoltage)/depletionDepth - 2.*depletionVoltage*(bulkDepth-y)/(bulkDepth*bulkDepth);
67  } else {
68  double Emax{2.* depletionDepth * depletionVoltage / (bulkDepth*bulkDepth)};
69  Ey = Emax*(1-(bulkDepth-y)/depletionDepth);
70  }
71  Ey = Ey*0.1;
72  return Ey / CLHEP::volt;
73  }
74  } else {
75  return 0.;
76  }
77  } else {
78  //simple toy model --> to be replaced with complete parameterization later
79  ATH_MSG_INFO("Using for E-field simple toy model corresponding to 10^15 fluence, full depletion end for holes.");
80 
81  double E_D{m_model.Eval(positionZ*0.1)*0.1}; //the model is in cm
82  return E_D;
83  }
84 
85  return -99.;
86 }//end method

◆ initialize()

StatusCode SCT_ElectricFieldTool::initialize ( )
overridevirtual

Definition at line 16 of file SCT_ElectricFieldTool.cxx.

16  {
17  m_model.SetParameters(1.04176,
18  2095.14,
19  -606483.,
20  8.60976e+07,
21  -7.20639e+09,
22  3.59418e+11,
23  -9.43812e+12,
24  9.78747e+13);
25 
26  return StatusCode::SUCCESS;
27 }

Member Data Documentation

◆ m_eFieldModel

IntegerProperty SCT_ElectricFieldTool::m_eFieldModel {this, "EFieldModel", FLAT_DIODE, "UNIFORM_FIELD=0 uniform E-field model, FLAT_DIODE=1 flat diode model"}
private

Definition at line 43 of file SCT_ElectricFieldTool.h.

◆ m_model

TF1 SCT_ElectricFieldTool::m_model {"pol6", "pol6", 0., 0.03}
private

Definition at line 44 of file SCT_ElectricFieldTool.h.


The documentation for this class was generated from the following files:
AllowedVariables::e
e
Definition: AsgElectronSelectorTool.cxx:37
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
SCT_ElectricFieldTool::m_model
TF1 m_model
Definition: SCT_ElectricFieldTool.h:44
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
python.utils.AtlRunQueryDQUtils.p
p
Definition: AtlRunQueryDQUtils.py:210
SCT_ElectricFieldTool::FLAT_DIODE
@ FLAT_DIODE
Definition: SCT_ElectricFieldTool.h:41
beamspotman.n
n
Definition: beamspotman.py:731
SCT_ElectricFieldTool::m_eFieldModel
IntegerProperty m_eFieldModel
Definition: SCT_ElectricFieldTool.h:43
python.SystemOfUnits.volt
int volt
Definition: SystemOfUnits.py:204
SCT_ElectricFieldTool::UNIFORM_FIELD
@ UNIFORM_FIELD
Definition: SCT_ElectricFieldTool.h:41
y
#define y
GlobalVariables.Emax
Emax
Definition: GlobalVariables.py:185