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

Class to take calculate Charge Transport in the SCT with a detailed charge transport model. More...

#include <SCT_DetailedSurfaceChargesGenerator.h>

Inheritance diagram for SCT_DetailedSurfaceChargesGenerator:
Collaboration diagram for SCT_DetailedSurfaceChargesGenerator:

Public Member Functions

 SCT_DetailedSurfaceChargesGenerator (const std::string &type, const std::string &name, const IInterface *parent)
 constructor More...
 
virtual ~SCT_DetailedSurfaceChargesGenerator ()=default
 Destructor. More...
 
virtual StatusCode initialize () override
 AlgTool initialize. More...
 
virtual StatusCode finalize () override
 AlgTool finalize. More...
 

Private Types

enum  ChargeDriftMode { defaultSCTModel =0, ehTransport =1, fixedChargeMap =2 }
 
enum  EFieldModel { uniformEFieldModel =0, flatDiodeModel =1, FEMsolution =2 }
 

Private Member Functions

virtual void setFixedTime (float fixedTime) override
 
virtual void process (const InDetDD::SiDetectorElement *element, const TimedHitPtr< SiHit > &phit, ISiSurfaceChargesInserter &inserter, CLHEP::HepRandomEngine *rndmEngine, const EventContext &ctx) override
 create a list of surface charges from a hit More...
 
void processSiHit (const InDetDD::SiDetectorElement *element, const SiHit &phit, ISiSurfaceChargesInserter &inserter, const float eventTime, const unsigned short eventID, CLHEP::HepRandomEngine *rndmEngine, const EventContext &ctx)
 
float DriftTime (float zhit, const InDetDD::SiDetectorElement *element, const EventContext &ctx) const
 calculate drift time perpandicular to the surface for a charge at distance zhit from mid gap More...
 
float DiffusionSigma (float zhit, const InDetDD::SiDetectorElement *element, const EventContext &ctx) const
 calculate diffusion sigma from a gaussian dist scattered charge More...
 
float SurfaceDriftTime (float ysurf) const
 Calculate of the surface drift time. More...
 
float MaxDriftTime (const InDetDD::SiDetectorElement *element, const EventContext &ctx) const
 max drift charge equivalent to the detector thickness More...
 
float MaxDiffusionSigma (const InDetDD::SiDetectorElement *element, const EventContext &ctx) const
 max sigma diffusion More...
 
void initTransportModel ()
 
void init_mud_e (double T)
 
void init_mud_h (double T)
 
void initExEyArray ()
 
void initPotentialValue ()
 
void EField (double x, double y, double &Ex, double &Ey) const
 
double induced (int istrip, double x, double y) const
 
bool electron (double x_e, double y_e, double &vx_e, double &vy_e, double &D_e) const
 
bool hole (double x_h, double y_h, double &vx_h, double &vy_h, double &D_h)
 
double mud_e (double E) const
 
double mud_h (double E) const
 
void holeTransport (double &x0, double &y0, double *Q_m2, double *Q_m1, double *Q_00, double *Q_p1, double *Q_p2, CLHEP::HepRandomEngine *rndmEngine)
 
void electronTransport (double &x0, double &y0, double *Q_m2, double *Q_m1, double *Q_00, double *Q_p1, double *Q_p2, CLHEP::HepRandomEngine *rndmEngine) const
 
double inducedCharge (int &istrip, double &x, double &y, double &t) const
 

Static Private Member Functions

static double ExValue150 (int ix, int iy)
 
static double EyValue150 (int ix, int iy)
 
static double GetPotentialValue (int ix, int iy)
 

Private Attributes

IntegerProperty m_numberOfCharges {this, "NumberOfCharges", 1}
 number of charges More...
 
FloatProperty m_smallStepLength {this, "SmallStepLength", 5.}
 max internal step along the larger G4 step More...
 
FloatProperty m_tSurfaceDrift {this, "SurfaceDriftTime", 10., "max surface drift time"}
 related to the surface drift More...
 
FloatProperty m_tfix {this, "FixedTime", -999., "ixed time"}
 
FloatProperty m_tsubtract {this, "SubtractTime", -999., "subtract drift time from mid gap"}
 
BooleanProperty m_doHistoTrap {this, "doHistoTrap", false, "Allow filling of histos for charge trapping effect"}
 
BooleanProperty m_doTrapping {this, "doTrapping", false, "Simulation of charge trapping effect"}
 
DoubleProperty m_Fluence {this, "Fluence", 0., "Fluence for charge trapping effect"}
 
IntegerProperty m_chargeDriftModel {this, "ChargeDriftModel", ehTransport, "use enum ChargeDriftMode"}
 
IntegerProperty m_eFieldModel {this, "EFieldModel", FEMsolution, "use enum EFieldModel"}
 
DoubleProperty m_depletionVoltage {this, "DepletionVoltage", 70.}
 
DoubleProperty m_biasVoltage {this, "BiasVoltage", 150.}
 
DoubleProperty m_magneticField {this, "MagneticField", -2.0}
 
DoubleProperty m_sensorTemperature {this, "SensorTemperature", 0.+CLHEP::STP_Temperature}
 
DoubleProperty m_transportTimeStep {this, "TransportTimeStep", 0.25}
 
DoubleProperty m_transportTimeMax {this, "TransportTimeMax", 25.0}
 
BooleanProperty m_isOverlay {this, "isOverlay", false, "flag for overlay"}
 
ToolHandle< ISiPropertiesToolm_siPropertiesTool {this, "SiPropertiesTool", "SCT_SiPropertiesTool", "Tool to retrieve SCT silicon properties"}
 
ToolHandle< ISiliconConditionsToolm_siConditionsTool {this, "SiConditionsTool", "SCT_SiliconConditionsTool", "Tool to retrieve SCT silicon information"}
 
ToolHandle< ISiLorentzAngleToolm_lorentzAngleTool {this, "LorentzAngleTool", "SiLorentzAngleTool/SCTLorentzAngleTool", "Tool to retreive Lorentz angle"}
 
ServiceHandle< ITHistSvc > m_thistSvc {this, "THistSvc", "THistSvc"}
 
float m_tHalfwayDrift {0.}
 Surface drift time. More...
 
float m_distInterStrip {1.0}
 Inter strip distance normalized to 1. More...
 
float m_distHalfInterStrip {0.}
 Half way distance inter strip. More...
 
bool m_SurfaceDriftFlag {false}
 surface drift ON/OFF More...
 
double m_bulk_depth {0.0285}
 
double m_strip_pitch {0.0080}
 
double m_depletion_depth {0.0285}
 
double m_y_origin_min {0.0}
 
double m_kB {1.38E-23}
 
double m_e {1.602E-19}
 
double m_vs_e {11615084.7393}
 
double m_Ec_e {6034.20429}
 
double m_vs_h {8761659.83530}
 
double m_Ec_h {15366.52650}
 
double m_beta_e {}
 
double m_beta_h {}
 
double m_driftMobility {}
 
double m_PotentialValue [81][115] {{0.}}
 
double m_ExValue150 [17][115] {{0.}}
 
double m_EyValue150 [17][115] {{0.}}
 
int m_stripCharge_iymax {285-1}
 
double m_stripCharge_dx {1.}
 
double m_stripCharge_dy {1.}
 
TProfile * m_h_efieldz {nullptr}
 
TProfile2D * m_h_yzRamo {nullptr}
 
TProfile2D * m_h_yzEfield {nullptr}
 
TProfile2D * m_h_yEfield {nullptr}
 
TProfile2D * m_h_zEfield {nullptr}
 

Detailed Description

Class to take calculate Charge Transport in the SCT with a detailed charge transport model.

It's not clear (29 April 2016) that the code has ever been used successfully; prior to this edit certain key parameters were uninitialised and yet used.

Definition at line 59 of file SCT_DetailedSurfaceChargesGenerator.h.

Member Enumeration Documentation

◆ ChargeDriftMode

Enumerator
defaultSCTModel 
ehTransport 
fixedChargeMap 

Definition at line 75 of file SCT_DetailedSurfaceChargesGenerator.h.

75  {
77  ehTransport=1,
79  };

◆ EFieldModel

Enumerator
uniformEFieldModel 
flatDiodeModel 
FEMsolution 

Definition at line 80 of file SCT_DetailedSurfaceChargesGenerator.h.

80  {
83  FEMsolution=2
84  };

Constructor & Destructor Documentation

◆ SCT_DetailedSurfaceChargesGenerator()

SCT_DetailedSurfaceChargesGenerator::SCT_DetailedSurfaceChargesGenerator ( const std::string &  type,
const std::string &  name,
const IInterface *  parent 
)

constructor

Definition at line 35 of file SCT_DetailedSurfaceChargesGenerator.cxx.

36  : base_class(type, name, parent)
37  {
38 }

◆ ~SCT_DetailedSurfaceChargesGenerator()

virtual SCT_DetailedSurfaceChargesGenerator::~SCT_DetailedSurfaceChargesGenerator ( )
virtualdefault

Destructor.

Member Function Documentation

◆ DiffusionSigma()

float SCT_DetailedSurfaceChargesGenerator::DiffusionSigma ( float  zhit,
const InDetDD::SiDetectorElement element,
const EventContext &  ctx 
) const
private

calculate diffusion sigma from a gaussian dist scattered charge

Definition at line 185 of file SCT_DetailedSurfaceChargesGenerator.cxx.

185  {
186  const IdentifierHash hashId{element->identifyHash()};
187  const float t{this->DriftTime(zhit, element, ctx)}; // in ns
188  if (t>0.0) {
189  const float diffusionSigma{static_cast<float>(sqrt(2.*m_siPropertiesTool->getSiProperties(hashId, ctx).holeDiffusionConstant()*t))}; // in mm
190  return diffusionSigma;
191  }
192  return 0.0;
193 }

◆ DriftTime()

float SCT_DetailedSurfaceChargesGenerator::DriftTime ( float  zhit,
const InDetDD::SiDetectorElement element,
const EventContext &  ctx 
) const
private

calculate drift time perpandicular to the surface for a charge at distance zhit from mid gap

Definition at line 153 of file SCT_DetailedSurfaceChargesGenerator.cxx.

153  {
154  const double sensorThickness{element->thickness()};
155  if ((zhit<0.0) or (zhit>sensorThickness)) {
156  ATH_MSG_DEBUG("DriftTime: hit coordinate zhit=" << zhit/CLHEP::micrometer << " out of range");
157  return -2.0;
158  }
159  const IdentifierHash hashId{element->identifyHash()};
160 
161  const double vdepl{m_siConditionsTool->depletionVoltage(hashId, ctx) * CLHEP::volt};
162  const double vbias{m_siConditionsTool->biasVoltage(hashId, ctx) * CLHEP::volt};
163  const double denominator{vdepl+vbias-(2.0*zhit*vdepl/sensorThickness)};
164  if (denominator<=0.0) {
165  if (vbias>=vdepl) { //Should not happen
166  if (not m_isOverlay) {
167  ATH_MSG_ERROR("DriftTime: negative argument X for log(X) " << zhit);
168  }
169  return -1.0;
170  } else {
171  // (vbias<vdepl) can happen with underdepleted sensors, lose charges in that volume
172  // ATH_MSG_DEBUG("DriftTime: ->infinity since vdepl>vbias, zhit: " << zhit );
173  return -10.0;
174  }
175  }
176 
177  float driftTime{static_cast<float>(log((vdepl+vbias)/denominator))};
178  driftTime *= sensorThickness*sensorThickness/(2.0*m_siPropertiesTool->getSiProperties(hashId, ctx).holeDriftMobility()*vdepl);
179  return driftTime;
180 }

◆ EField()

void SCT_DetailedSurfaceChargesGenerator::EField ( double  x,
double  y,
double &  Ex,
double &  Ey 
) const
private

Definition at line 699 of file SCT_DetailedSurfaceChargesGenerator.cxx.

699  {
700  // m_eFieldModel == uniformEFieldModel; uniform E-field model
701  // m_eFieldModel == flatDiodeModel; flat diode model
702  // m_eFieldModel == FEMsolution; FEM solutions
703  // x == 0.0040 [cm] : at the center of strip
704  // x must be within 0 and 0.008 [cm]
705 
706  static const double deltay{0.00025}, deltax{0.00025}; // [cm]
707 
708  Ex = 0.;
709  Ey = 0.;
710  if (y < 0. or y > m_bulk_depth) return;
711 
712  //---------- case for uniform electric field ------------------------
715  return;
716  }
717 
718  //---------- case for flat diode model ------------------------------
722  } else {
725  }
726  return;
727  }
728 
729  //---------- case for FEM analysis solution -------------------------
730  if (m_eFieldModel==FEMsolution) {
731  int iy{static_cast<int>(y/deltay)};
732  double fy{(y-iy*deltay) / deltay};
733  double xhalfpitch{m_strip_pitch/2.};
734  double x999{999.*m_strip_pitch};
735  double xx{fmod (x+x999, m_strip_pitch)};
736  double xxx{xx};
737  if (xx > xhalfpitch) xxx = m_strip_pitch - xx;
738  int ix{static_cast<int>(xxx/deltax)};
739  double fx{(xxx - ix*deltax) / deltax};
740 #ifdef SCT_DIG_DEBUG
741  ATH_MSG_DEBUG("x,y,ix,iy,fx,fy,xx,xxx= " << x << " " << y << " " << ix << " " << iy << " " << fx << " " << fy << " " << xx << " " << xxx);
742 #endif
743  int ix1{ix+1};
744  int iy1{iy+1};
745  double Ex00{0.}, Ex10{0.}, Ex01{0.}, Ex11{0.};
746  double Ey00{0.}, Ey10{0.}, Ey01{0.}, Ey11{0.};
747  //-------- pick up appropriate data file for m_biasVoltage-----------------------
748  int iVB{static_cast<int>(m_biasVoltage)};
749  switch (iVB) {
750  case 150:
751  Ex00 = m_ExValue150[ix][iy]; Ex10 = m_ExValue150[ix1][iy];
752  Ex01 = m_ExValue150[ix][iy1]; Ex11 = m_ExValue150[ix1][iy1];
753  Ey00 = m_EyValue150[ix][iy]; Ey10 = m_EyValue150[ix1][iy];
754  Ey01 = m_EyValue150[ix][iy1]; Ey11 = m_EyValue150[ix1][iy1];
755  break;
756  default:
757  ATH_MSG_WARNING("Only +150 V bias voltage case is available. However, " << iVB << " V bias voltage is used. Electoric field is not extracted!!!");
758  break;
759  }
760  //---------------- end of data bank search---
761  Ex = Ex00*(1.-fx)*(1.-fy) + Ex10*fx*(1.-fy) + Ex01*(1.-fx)*fy + Ex11*fx*fy;
762 #ifdef SCT_DIG_DEBUG
763  ATH_MSG_DEBUG("xx, xhalfpitch = " << xx << " " << xhalfpitch);
764 #endif
765  if (xx > xhalfpitch) Ex = -Ex;
766  Ey = Ey00*(1.-fx)*(1.-fy) + Ey10*fx*(1.-fy) + Ey01*(1.-fx)*fy + Ey11*fx*fy;
767  return;
768  }
769  }

◆ electron()

bool SCT_DetailedSurfaceChargesGenerator::electron ( double  x_e,
double  y_e,
double &  vx_e,
double &  vy_e,
double &  D_e 
) const
private

Definition at line 613 of file SCT_DetailedSurfaceChargesGenerator.cxx.

613  {
614  double Ex, Ey;
615  EField(x_e, y_e, Ex, Ey); // [V/cm]
616  if (Ey > 0.) {
617  const double REx{-Ex}; // because electron has negative charge
618  const double REy{-Ey}; // because electron has negative charge
619  const double E{sqrt(Ex*Ex+Ey*Ey)};
620  const double mu_e{mud_e(E)};
621  const double v_e{mu_e * E};
622  const double r_e{1.13+0.0008*(m_sensorTemperature-CLHEP::STP_Temperature)};
623  const double tanLA_e{r_e * mu_e * (-m_magneticField) * 1.E-4}; // because e has negative charge
624  const double secLA{sqrt(1.+tanLA_e*tanLA_e)};
625  const double cosLA{1./secLA};
626  const double sinLA{tanLA_e / secLA};
627  vy_e = v_e * (REy*cosLA - REx*sinLA)/E;
628  vx_e = v_e * (REx*cosLA + REy*sinLA)/E;
629  D_e = m_kB * m_sensorTemperature * mu_e / m_e;
630  return true;
631  } else {
632  return false;
633  }
634 }

◆ electronTransport()

void SCT_DetailedSurfaceChargesGenerator::electronTransport ( double &  x0,
double &  y0,
double *  Q_m2,
double *  Q_m1,
double *  Q_00,
double *  Q_p1,
double *  Q_p2,
CLHEP::HepRandomEngine *  rndmEngine 
) const
private

Definition at line 884 of file SCT_DetailedSurfaceChargesGenerator.cxx.

884  {
885  // transport electrons in the bulk
886  // T. Kondo, 2010.9.10
887  // External parameters to be specified
888  // m_transportTimeMax [nsec]
889  // m_transportTimeStep [nsec]
890  // m_y_origin_min [cm] 0 except under-depleted cases
891  // Induced currents are added to
892  // Q_m2[50],Q_m1[50],Q_00[50],Q_p1[50],Q_p2[50]
893 
894  double x{x0}; // original electron position [cm]
895  double y{y0}; // original electron position [cm]
896  bool isInBulk{true};
897  double t_current{0.};
898  double qstrip[5];
899  double vx, vy, D;
900 
901  // -- Charge Trapping -- //
902  static const double betaElectrons{3.1E-16};
903  const double trappingElectrons{1./(m_Fluence*betaElectrons)};
904  const double u{CLHEP::RandFlat::shoot(0., 1.)};
905  const double drift_time{-TMath::Log(u)*trappingElectrons};
906 
907  for (int istrip{-2}; istrip<=2; istrip++) {
908  qstrip[istrip+2] = -induced(istrip, x, y);
909  }
910 
911  // note 0.004[cm] is to shift from Richard's to Taka's coordinates
912  while (t_current < m_transportTimeMax) {
913  if (not isInBulk) break;
914  if (not electron(x, y, vx, vy, D)) break;
915  double delta_y{vy * m_transportTimeStep *1.E-9};
916  y += delta_y;
917  double dt{m_transportTimeStep}; // [nsec]
918  if (y < m_y_origin_min) {
919  isInBulk = false;
920  dt = (m_y_origin_min - (y-delta_y))/delta_y * m_transportTimeStep;
921  y = m_y_origin_min;
922  }
923  t_current += dt;
924 
925  // -- Charge Trapping -- //
926  if (m_doTrapping) {
927  if (drift_time < t_current) break;
928  }
929 
930  x += vx * dt *1.E-9;
931  double diffusion{sqrt(2.* D * dt*1.E-9)};
932  y += diffusion * CLHEP::RandGaussZiggurat::shoot(rndmEngine);
933  x += diffusion * CLHEP::RandGaussZiggurat::shoot(rndmEngine);
934  if (y < m_y_origin_min) {
935  y = m_y_origin_min;
936  isInBulk = false;
937  }
938  // get induced current by subtracting induced charges
939  for (int istrip{-2}; istrip<=2; istrip++) {
940  double qnew{-induced(istrip, x, y)};
941  int jj{istrip + 2};
942  double dq{qnew - qstrip[jj]};
943  qstrip[jj] = qnew;
944 #ifdef SCT_DIG_DEBUG
945  if (istrip==0) ATH_MSG_DEBUG("e:t,x,y=" << t_current << " " << x*1e4 << " " << y*1e4 << " dq[0]=" << dq);
946 #endif
947  int jt{static_cast<int>((t_current + 0.001) / 0.50)};
948  if (jt<50) {
949  switch (istrip) {
950  case -2: Q_m2[jt] += dq; break;
951  case -1: Q_m1[jt] += dq; break;
952  case 0: Q_00[jt] += dq; break;
953  case +1: Q_p1[jt] += dq; break;
954  case +2: Q_p2[jt] += dq; break;
955  // default: break; // logically dead code
956  }
957  }
958  }
959  } // end of hole tracing
960 #ifdef SCT_DIG_DEBUG
961  ATH_MSG_DEBUG("elecTransport : x,y=(" << x0*1.e4 << "," << y0*1.e4 << ")->(" << x*1.e4 << "," << y*1.e4 << ") t=" << t_current);
962 #endif
963 
964  }

◆ ExValue150()

double SCT_DetailedSurfaceChargesGenerator::ExValue150 ( int  ix,
int  iy 
)
staticprivate

Definition at line 442 of file GetExEy_150V.cxx.

442  {
443 // ExArray for VD=70V(rho=0.1540[C/m**3]), VB=150V
444 static const double ExArray[17][115] = {
445 {
446  -2.04, -1.58, -2.92, -3.26, -3.61,
447  -2.99, -2.63, -3.06, -3.50, -3.28,
448  -2.90, -3.35, -3.80, -3.21, -2.75,
449  -3.26, -3.66, -3.11, -2.78, -3.23,
450  -3.69, -3.33, -2.90, -3.31, -3.74,
451  -3.24, -2.70, -3.13, -3.57, -3.28,
452  -2.85, -3.27, -3.70, -3.28, -2.85,
453  -3.28, -3.71, -3.27, -2.84, -3.27,
454  -3.70, -3.12, -2.68, -3.12, -3.55,
455  -3.40, -3.01, -3.46, -3.94, -3.40,
456  -2.95, -3.44, -3.82, -3.38, -2.86,
457  -3.30, -3.73, -3.26, -2.86, -3.29,
458  -3.71, -3.28, -2.85, -3.27, -3.69,
459  -3.29, -2.82, -3.25, -3.65, -3.25,
460  -2.77, -3.12, -3.47, -3.14, -2.61,
461  -2.87, -3.80, -3.00, -2.36, -2.40,
462  -3.83, -2.59, -1.73, -1.28, -3.83,
463  -1.66, -0.37, 1.09, -3.29, 0.74,
464  2.86, 6.39, 0.36, 7.92, 11.98,
465  1.55, 15.25, 23.42, 12.20, 26.28,
466  50.80, 46.72, 71.11, 68.69, 104.60,
467  106.10, 153.00, 157.90, 211.10, 195.70,
468  198.60, 255.30, 253.20, 283.20, 232.60,
469 },
470 {
471  -1.24, -1.20, -1.56, -1.73, -1.91,
472  -1.64, -1.43, -1.66, -1.97, -1.71,
473  -1.53, -1.78, -2.04, -1.77, -1.54,
474  -1.79, -2.02, -1.73, -1.53, -1.77,
475  -2.06, -1.77, -1.55, -1.75, -2.05,
476  -1.76, -1.50, -1.72, -1.99, -1.73,
477  -1.49, -1.69, -1.97, -1.69, -1.49,
478  -1.69, -1.97, -1.69, -1.49, -1.70,
479  -1.96, -1.70, -1.50, -1.70, -1.96,
480  -1.75, -1.57, -1.80, -2.06, -1.79,
481  -1.59, -1.78, -2.04, -1.74, -1.51,
482  -1.71, -1.99, -1.70, -1.52, -1.72,
483  -1.99, -1.70, -1.49, -1.68, -1.94,
484  -1.62, -1.39, -1.56, -1.79, -1.43,
485  -1.19, -1.29, -1.46, -1.00, -0.72,
486  -0.68, -0.72, -0.03, 0.32, 0.66,
487  0.95, 2.10, 2.62, 3.62, 4.61,
488  6.80, 7.69, 10.16, 12.72, 17.07,
489  18.75, 24.71, 30.91, 37.43, 44.80,
490  55.41, 68.79, 81.86, 101.30, 119.90,
491  151.00, 186.70, 218.10, 267.90, 313.40,
492  380.40, 440.60, 523.50, 591.90, 671.00,
493  729.30, 791.30, 846.50, 875.40, 921.70,
494 },
495 {
496  -0.44, -0.56, -0.52, -0.47, -0.81,
497  -0.45, -0.49, -0.42, -0.83, -0.46,
498  -0.51, -0.46, -0.84, -0.47, -0.54,
499  -0.49, -0.89, -0.47, -0.50, -0.42,
500  -0.84, -0.44, -0.51, -0.47, -0.89,
501  -0.45, -0.51, -0.43, -0.82, -0.42,
502  -0.47, -0.40, -0.79, -0.39, -0.45,
503  -0.39, -0.79, -0.40, -0.48, -0.45,
504  -0.87, -0.46, -0.52, -0.45, -0.86,
505  -0.47, -0.52, -0.45, -0.84, -0.48,
506  -0.55, -0.48, -0.86, -0.43, -0.50,
507  -0.43, -0.83, -0.43, -0.49, -0.41,
508  -0.80, -0.39, -0.42, -0.33, -0.70,
509  -0.26, -0.26, -0.12, -0.46, 0.05,
510  0.13, 0.35, 0.08, 0.75, 0.99,
511  1.44, 1.33, 2.31, 2.94, 3.84,
512  4.11, 5.78, 7.24, 9.15, 10.24,
513  13.46, 16.78, 20.81, 23.71, 30.43,
514  37.82, 46.66, 54.37, 67.63, 83.65,
515  96.98, 121.80, 149.90, 174.50, 217.80,
516  267.00, 317.20, 385.90, 457.20, 552.30,
517  649.70, 772.90, 897.80, 1036.00, 1179.00,
518  1291.00, 1432.00, 1524.00, 1593.00, 1675.00,
519 },
520 {
521  0.04, 0.02, -0.20, 0.03, 0.02,
522  -0.02, -0.24, 0.01, 0.07, 0.06,
523  -0.20, 0.02, 0.04, -0.01, -0.24,
524  0.03, 0.05, 0.03, -0.24, 0.03,
525  0.08, 0.06, -0.21, 0.06, 0.08,
526  0.03, -0.24, 0.03, 0.07, 0.05,
527  -0.23, 0.06, 0.08, 0.06, -0.21,
528  0.06, 0.07, 0.04, -0.25, 0.04,
529  0.05, 0.01, -0.26, 0.01, 0.05,
530  0.04, -0.25, -0.00, 0.03, -0.01,
531  -0.27, 0.02, 0.03, 0.00, -0.26,
532  0.01, 0.05, 0.03, -0.23, 0.06,
533  0.11, 0.11, -0.14, 0.17, 0.26,
534  0.30, 0.09, 0.45, 0.61, 0.75,
535  0.62, 1.09, 1.43, 1.77, 1.84,
536  2.54, 3.25, 4.06, 4.54, 5.79,
537  7.33, 9.16, 10.56, 13.01, 16.39,
538  20.40, 23.78, 29.02, 36.45, 44.99,
539  52.41, 64.46, 80.77, 97.26, 115.40,
540  143.70, 176.30, 206.90, 256.70, 309.80,
541  370.20, 456.10, 536.60, 656.90, 771.60,
542  934.80, 1091.00, 1299.00, 1494.00, 1704.00,
543  1931.00, 2113.00, 2286.00, 2395.00, 2458.00,
544 },
545 {
546  0.04, 0.08, 0.04, 0.00, -0.02,
547  -0.02, -0.02, 0.01, 0.06, 0.06,
548  0.05, 0.06, 0.04, 0.02, 0.01,
549  0.03, 0.06, 0.03, 0.01, 0.02,
550  0.03, 0.04, 0.03, 0.05, 0.07,
551  0.03, 0.00, 0.00, 0.02, 0.03,
552  0.02, 0.01, 0.01, 0.02, 0.01,
553  0.02, -0.00, 0.00, 0.00, 0.03,
554  0.02, -0.02, -0.02, -0.02, 0.03,
555  0.01, -0.01, -0.01, 0.00, 0.00,
556  -0.02, -0.02, -0.04, -0.05, -0.04,
557  -0.02, -0.00, 0.00, 0.02, 0.05,
558  0.08, 0.10, 0.13, 0.20, 0.26,
559  0.33, 0.42, 0.57, 0.71, 0.87,
560  1.11, 1.43, 1.73, 2.11, 2.66,
561  3.36, 4.04, 4.90, 6.14, 7.69,
562  9.19, 11.11, 13.89, 17.28, 20.59,
563  24.88, 31.01, 38.31, 45.60, 55.30,
564  68.82, 85.00, 99.72, 121.80, 151.30,
565  180.30, 218.30, 269.90, 321.90, 389.20,
566  482.30, 567.10, 695.20, 821.10, 1001.00,
567  1179.00, 1424.00, 1661.00, 1968.00, 2254.00,
568  2543.00, 2849.00, 3055.00, 3232.00, 3326.00,
569 },
570 {
571  0.02, 0.01, -0.03, -0.08, -0.09,
572  -0.08, -0.06, -0.07, -0.05, -0.07,
573  -0.03, -0.04, -0.05, -0.04, -0.04,
574  -0.09, -0.08, -0.09, -0.04, -0.05,
575  -0.06, -0.07, -0.09, -0.11, -0.09,
576  -0.08, -0.05, -0.05, -0.07, -0.10,
577  -0.09, -0.11, -0.10, -0.11, -0.09,
578  -0.12, -0.11, -0.10, -0.08, -0.12,
579  -0.10, -0.10, -0.08, -0.10, -0.13,
580  -0.15, -0.13, -0.13, -0.14, -0.13,
581  -0.11, -0.15, -0.15, -0.17, -0.16,
582  -0.16, -0.13, -0.11, -0.08, -0.08,
583  -0.04, -0.00, 0.06, 0.09, 0.17,
584  0.27, 0.40, 0.51, 0.69, 0.93,
585  1.19, 1.47, 1.90, 2.44, 3.00,
586  3.67, 4.63, 5.82, 7.07, 8.58,
587  10.72, 13.37, 16.11, 19.49, 24.23,
588  30.01, 36.07, 43.64, 54.10, 66.39,
589  79.76, 96.75, 119.80, 145.80, 173.20,
590  213.60, 263.00, 310.50, 382.20, 466.10,
591  556.80, 682.90, 812.00, 993.80, 1180.00,
592  1437.00, 1699.00, 2051.00, 2398.00, 2823.00,
593  3251.00, 3620.00, 4010.00, 4216.00, 4373.00,
594 },
595 {
596  0.01, 0.04, 0.02, -0.00, -0.02,
597  -0.02, -0.01, 0.01, 0.02, 0.01,
598  -0.00, -0.02, -0.01, -0.00, -0.00,
599  -0.00, -0.04, -0.00, -0.01, -0.03,
600  -0.04, -0.04, -0.04, -0.03, -0.07,
601  -0.03, -0.01, -0.01, -0.02, -0.05,
602  -0.06, -0.06, -0.04, -0.06, -0.08,
603  -0.09, -0.10, -0.08, -0.07, -0.08,
604  -0.07, -0.03, -0.04, -0.05, -0.10,
605  -0.10, -0.11, -0.10, -0.13, -0.11,
606  -0.09, -0.08, -0.08, -0.10, -0.11,
607  -0.11, -0.10, -0.07, -0.04, -0.02,
608  0.00, 0.05, 0.10, 0.17, 0.24,
609  0.34, 0.47, 0.64, 0.81, 1.04,
610  1.35, 1.74, 2.14, 2.67, 3.36,
611  4.24, 5.16, 6.31, 7.87, 9.81,
612  11.90, 14.47, 17.93, 22.22, 26.86,
613  32.54, 40.20, 49.48, 59.83, 72.44,
614  89.35, 109.80, 131.80, 159.60, 196.60,
615  237.20, 286.80, 352.40, 425.40, 513.80,
616  629.60, 754.50, 924.60, 1112.00, 1353.00,
617  1615.00, 1970.00, 2341.00, 2836.00, 3334.00,
618  3906.00, 4550.00, 5045.00, 5384.00, 5638.00,
619 },
620 {
621  -0.00, 0.00, -0.01, -0.04, -0.06,
622  -0.07, -0.07, -0.05, -0.05, -0.05,
623  -0.06, -0.07, -0.07, -0.07, -0.04,
624  -0.04, -0.04, -0.04, -0.05, -0.08,
625  -0.08, -0.10, -0.08, -0.08, -0.08,
626  -0.07, -0.09, -0.11, -0.10, -0.09,
627  -0.09, -0.09, -0.11, -0.12, -0.12,
628  -0.12, -0.13, -0.14, -0.12, -0.11,
629  -0.11, -0.11, -0.10, -0.12, -0.12,
630  -0.12, -0.13, -0.16, -0.15, -0.14,
631  -0.12, -0.14, -0.14, -0.16, -0.15,
632  -0.15, -0.14, -0.13, -0.10, -0.08,
633  -0.05, -0.01, 0.05, 0.11, 0.19,
634  0.31, 0.44, 0.59, 0.80, 1.06,
635  1.37, 1.72, 2.20, 2.80, 3.48,
636  4.30, 5.38, 6.74, 8.27, 10.11,
637  12.52, 15.53, 18.94, 23.03, 28.38,
638  35.00, 42.56, 51.61, 63.46, 77.61,
639  94.57, 114.50, 140.60, 171.40, 205.60,
640  251.80, 309.60, 373.40, 453.00, 554.40,
641  667.20, 817.00, 982.40, 1205.00, 1459.00,
642  1778.00, 2136.00, 2631.00, 3137.00, 3814.00,
643  4584.00, 5354.00, 6433.00, 6848.00, 7159.00,
644 },
645 {
646  0.00, -0.00, -0.01, -0.02, -0.03,
647  -0.04, -0.06, -0.09, -0.11, -0.09,
648  -0.06, -0.04, -0.05, -0.04, -0.04,
649  -0.04, -0.05, -0.05, -0.05, -0.03,
650  -0.03, -0.06, -0.08, -0.10, -0.08,
651  -0.07, -0.09, -0.10, -0.12, -0.09,
652  -0.08, -0.09, -0.12, -0.12, -0.11,
653  -0.12, -0.12, -0.13, -0.14, -0.13,
654  -0.15, -0.16, -0.15, -0.14, -0.13,
655  -0.15, -0.17, -0.17, -0.14, -0.12,
656  -0.14, -0.15, -0.19, -0.18, -0.18,
657  -0.17, -0.16, -0.14, -0.13, -0.11,
658  -0.08, -0.03, 0.02, 0.09, 0.17,
659  0.27, 0.40, 0.58, 0.78, 1.02,
660  1.33, 1.73, 2.19, 2.76, 3.47,
661  4.37, 5.43, 6.71, 8.31, 10.34,
662  12.71, 15.54, 19.11, 23.60, 28.89,
663  35.17, 43.11, 52.88, 64.72, 78.52,
664  96.12, 117.70, 143.50, 173.20, 212.10,
665  257.80, 312.80, 382.30, 465.10, 563.50,
666  688.70, 834.90, 1023.00, 1248.00, 1520.00,
667  1842.00, 2269.00, 2751.00, 3403.00, 4125.00,
668  5078.00, 6346.00, 7455.00, 9185.00, 10380.00,
669 },
670 {
671  0.00, 0.00, -0.00, -0.01, -0.03,
672  -0.06, -0.07, -0.08, -0.09, -0.09,
673  -0.07, -0.06, -0.02, -0.01, -0.02,
674  -0.04, -0.06, -0.07, -0.07, -0.04,
675  -0.03, -0.01, -0.02, -0.05, -0.07,
676  -0.10, -0.09, -0.09, -0.09, -0.11,
677  -0.11, -0.13, -0.13, -0.13, -0.15,
678  -0.16, -0.16, -0.16, -0.16, -0.16,
679  -0.17, -0.16, -0.15, -0.15, -0.17,
680  -0.18, -0.21, -0.19, -0.19, -0.21,
681  -0.19, -0.19, -0.20, -0.20, -0.22,
682  -0.22, -0.21, -0.19, -0.17, -0.16,
683  -0.13, -0.09, -0.04, 0.02, 0.10,
684  0.20, 0.33, 0.49, 0.68, 0.92,
685  1.23, 1.59, 2.04, 2.61, 3.32,
686  4.15, 5.17, 6.47, 8.06, 9.94,
687  12.22, 15.13, 18.69, 22.87, 27.96,
688  34.36, 42.31, 51.54, 62.85, 76.60,
689  94.58, 114.60, 139.80, 170.50, 207.00,
690  251.80, 308.70, 377.80, 455.80, 558.60,
691  679.10, 829.60, 1018.00, 1239.00, 1523.00,
692  1861.00, 2276.00, 2828.00, 3461.00, 4319.00,
693  5420.00, 6807.00, 8895.00, 11000.00, 14800.00,
694 },
695 {
696  -0.00, -0.00, 0.00, 0.00, -0.02,
697  -0.05, -0.06, -0.08, -0.07, -0.08,
698  -0.07, -0.05, -0.02, -0.02, -0.02,
699  -0.04, -0.03, -0.04, -0.05, -0.06,
700  -0.08, -0.06, -0.03, -0.01, -0.03,
701  -0.07, -0.08, -0.09, -0.07, -0.11,
702  -0.13, -0.15, -0.15, -0.15, -0.16,
703  -0.15, -0.16, -0.16, -0.18, -0.19,
704  -0.19, -0.16, -0.16, -0.18, -0.21,
705  -0.20, -0.20, -0.19, -0.22, -0.25,
706  -0.25, -0.25, -0.23, -0.25, -0.26,
707  -0.25, -0.24, -0.23, -0.23, -0.21,
708  -0.19, -0.15, -0.11, -0.06, 0.02,
709  0.12, 0.22, 0.36, 0.55, 0.77,
710  1.03, 1.38, 1.82, 2.34, 2.95,
711  3.74, 4.76, 5.95, 7.34, 9.13,
712  11.43, 14.11, 17.21, 21.19, 26.32,
713  32.25, 39.18, 47.88, 59.42, 72.38,
714  87.84, 107.30, 132.80, 160.10, 194.60,
715  237.30, 290.90, 353.20, 432.80, 527.00,
716  641.30, 788.30, 962.90, 1190.00, 1451.00,
717  1799.00, 2206.00, 2729.00, 3407.00, 4239.00,
718  5422.00, 7030.00, 9323.00, 12740.00, 15760.00,
719 },
720 {
721  0.00, 0.00, -0.00, 0.00, 0.00,
722  0.00, -0.02, -0.05, -0.05, -0.05,
723  -0.03, -0.00, -0.01, -0.03, -0.05,
724  -0.05, -0.06, -0.07, -0.06, -0.07,
725  -0.08, -0.07, -0.08, -0.06, -0.05,
726  -0.05, -0.08, -0.10, -0.10, -0.11,
727  -0.13, -0.14, -0.16, -0.16, -0.14,
728  -0.13, -0.13, -0.15, -0.19, -0.20,
729  -0.19, -0.19, -0.19, -0.21, -0.23,
730  -0.24, -0.23, -0.25, -0.26, -0.25,
731  -0.27, -0.28, -0.30, -0.30, -0.29,
732  -0.28, -0.29, -0.29, -0.28, -0.26,
733  -0.25, -0.23, -0.19, -0.14, -0.09,
734  -0.02, 0.09, 0.22, 0.35, 0.54,
735  0.80, 1.11, 1.45, 1.90, 2.52,
736  3.23, 4.02, 5.05, 6.46, 8.09,
737  9.88, 12.21, 15.38, 19.02, 23.03,
738  28.19, 35.30, 43.32, 52.28, 63.42,
739  79.69, 96.79, 116.90, 142.90, 178.20,
740  212.40, 259.50, 322.80, 387.20, 474.50,
741  584.40, 709.70, 883.00, 1072.00, 1335.00,
742  1631.00, 2030.00, 2516.00, 3147.00, 3953.00,
743  5029.00, 6624.00, 8430.00, 12810.00, 13540.00,
744 },
745 {
746  0.00, -0.00, 0.00, 0.00, -0.00,
747  -0.00, -0.00, -0.00, -0.01, -0.00,
748  -0.01, -0.02, -0.02, -0.04, -0.06,
749  -0.06, -0.10, -0.10, -0.09, -0.10,
750  -0.08, -0.07, -0.08, -0.10, -0.11,
751  -0.09, -0.08, -0.09, -0.11, -0.11,
752  -0.13, -0.12, -0.16, -0.16, -0.16,
753  -0.16, -0.16, -0.18, -0.19, -0.20,
754  -0.21, -0.22, -0.22, -0.21, -0.22,
755  -0.25, -0.27, -0.30, -0.30, -0.28,
756  -0.29, -0.31, -0.32, -0.31, -0.31,
757  -0.32, -0.33, -0.34, -0.34, -0.33,
758  -0.32, -0.30, -0.28, -0.25, -0.20,
759  -0.14, -0.08, 0.00, 0.15, 0.31,
760  0.48, 0.70, 1.05, 1.46, 1.86,
761  2.40, 3.22, 4.15, 5.09, 6.34,
762  8.20, 10.31, 12.44, 15.27, 19.45,
763  24.13, 28.95, 35.17, 44.64, 54.76,
764  65.62, 79.90, 101.10, 121.70, 146.20,
765  179.90, 222.90, 267.80, 331.30, 405.80,
766  489.30, 617.60, 742.70, 930.50, 1130.00,
767  1425.00, 1736.00, 2188.00, 2714.00, 3419.00,
768  4375.00, 5427.00, 7412.00, 8629.00, 11930.00,
769 },
770 {
771  -0.00, -0.00, -0.00, 0.00, 0.00,
772  0.00, 0.00, 0.00, 0.00, 0.00,
773  -0.01, -0.02, -0.04, -0.07, -0.07,
774  -0.07, -0.06, -0.04, -0.05, -0.08,
775  -0.09, -0.11, -0.08, -0.10, -0.12,
776  -0.13, -0.11, -0.13, -0.14, -0.15,
777  -0.18, -0.17, -0.16, -0.15, -0.16,
778  -0.16, -0.17, -0.19, -0.20, -0.20,
779  -0.21, -0.22, -0.25, -0.24, -0.23,
780  -0.24, -0.24, -0.27, -0.30, -0.34,
781  -0.35, -0.35, -0.35, -0.35, -0.37,
782  -0.39, -0.39, -0.40, -0.39, -0.39,
783  -0.40, -0.40, -0.38, -0.35, -0.34,
784  -0.32, -0.26, -0.18, -0.12, -0.02,
785  0.16, 0.35, 0.52, 0.76, 1.20,
786  1.68, 2.09, 2.68, 3.69, 4.82,
787  5.81, 7.18, 9.48, 11.99, 14.27,
788  17.36, 22.56, 28.09, 33.27, 40.20,
789  52.06, 63.53, 75.39, 92.47, 118.60,
790  139.80, 168.60, 215.60, 256.40, 312.50,
791  393.10, 470.20, 596.90, 717.50, 908.90,
792  1100.00, 1399.00, 1702.00, 2166.00, 2685.00,
793  3326.00, 4232.00, 4815.00, 4857.00, 7097.00,
794 },
795 {
796  0.00, -0.00, -0.00, -0.00, -0.00,
797  -0.00, -0.00, -0.00, -0.00, -0.00,
798  -0.01, -0.03, -0.07, -0.08, -0.08,
799  -0.08, -0.06, -0.05, -0.06, -0.06,
800  -0.09, -0.10, -0.13, -0.12, -0.13,
801  -0.14, -0.16, -0.16, -0.16, -0.17,
802  -0.17, -0.17, -0.14, -0.13, -0.13,
803  -0.15, -0.18, -0.20, -0.20, -0.23,
804  -0.23, -0.24, -0.26, -0.27, -0.28,
805  -0.28, -0.28, -0.30, -0.34, -0.38,
806  -0.39, -0.40, -0.39, -0.40, -0.41,
807  -0.42, -0.43, -0.44, -0.46, -0.47,
808  -0.48, -0.48, -0.49, -0.50, -0.48,
809  -0.46, -0.46, -0.44, -0.37, -0.30,
810  -0.26, -0.19, 0.01, 0.21, 0.34,
811  0.54, 1.02, 1.53, 1.86, 2.38,
812  3.51, 4.69, 5.51, 6.73, 9.31,
813  11.98, 13.89, 16.65, 22.60, 28.25,
814  32.75, 39.69, 53.06, 63.57, 74.12,
815  93.37, 118.70, 138.40, 172.90, 216.90,
816  254.40, 335.00, 392.50, 504.90, 602.80,
817  779.90, 927.40, 1201.00, 1453.00, 1836.00,
818  2259.00, 2547.00, 2742.00, 2751.00, 97.71,
819 },
820 {
821  -0.00, -0.00, 0.00, -0.00, 0.00,
822  0.00, 0.00, 0.00, -0.00, -0.02,
823  -0.02, -0.03, -0.04, -0.03, -0.05,
824  -0.06, -0.06, -0.09, -0.09, -0.07,
825  -0.08, -0.09, -0.14, -0.14, -0.13,
826  -0.14, -0.15, -0.15, -0.17, -0.16,
827  -0.17, -0.18, -0.17, -0.17, -0.16,
828  -0.17, -0.20, -0.20, -0.20, -0.22,
829  -0.24, -0.27, -0.27, -0.29, -0.30,
830  -0.31, -0.33, -0.36, -0.37, -0.39,
831  -0.39, -0.40, -0.41, -0.41, -0.41,
832  -0.44, -0.47, -0.50, -0.52, -0.53,
833  -0.56, -0.58, -0.60, -0.60, -0.64,
834  -0.66, -0.66, -0.65, -0.68, -0.70,
835  -0.64, -0.59, -0.63, -0.64, -0.46,
836  -0.30, -0.32, -0.27, 0.17, 0.57,
837  0.61, 0.79, 1.86, 2.84, 3.01,
838  3.52, 5.98, 8.13, 8.70, 10.10,
839  15.88, 19.83, 21.48, 26.96, 39.59,
840  44.07, 49.95, 72.56, 82.95, 97.66,
841  134.10, 148.40, 204.40, 232.50, 312.50,
842  358.10, 489.30, 549.80, 738.20, 880.00,
843  1046.00, 1184.00, 1315.00, 817.00, 8.43,
844 },
845 {
846  -0.00, 0.00, 0.00, -0.00, -0.00,
847  -0.00, -0.00, -0.00, -0.01, -0.03,
848  -0.04, -0.05, -0.04, -0.05, -0.04,
849  -0.05, -0.05, -0.07, -0.09, -0.12,
850  -0.12, -0.13, -0.12, -0.12, -0.11,
851  -0.12, -0.13, -0.15, -0.18, -0.19,
852  -0.19, -0.19, -0.21, -0.20, -0.20,
853  -0.20, -0.20, -0.21, -0.23, -0.24,
854  -0.28, -0.30, -0.33, -0.35, -0.34,
855  -0.33, -0.34, -0.36, -0.38, -0.40,
856  -0.40, -0.40, -0.40, -0.42, -0.44,
857  -0.48, -0.52, -0.54, -0.59, -0.62,
858  -0.65, -0.67, -0.71, -0.75, -0.78,
859  -0.82, -0.87, -0.95, -0.96, -0.99,
860  -1.10, -1.20, -1.20, -1.23, -1.41,
861  -1.59, -1.52, -1.53, -1.86, -2.18,
862  -1.97, -1.90, -2.54, -3.15, -2.57,
863  -2.37, -3.66, -4.84, -3.35, -3.13,
864  -5.72, -7.24, -3.85, -5.24, -10.45,
865  -8.79, -5.65, -14.54, -12.62, -9.61,
866  -25.10, -7.20, -28.75, -14.10, -38.98,
867  -16.21, -63.82, -26.48, -86.33, -75.28,
868  -103.50, -134.00, -174.80, -72.07, 68.25,
869 },
870 };
871 //
872  return ExArray[ix][iy];
873 }

◆ EyValue150()

double SCT_DetailedSurfaceChargesGenerator::EyValue150 ( int  ix,
int  iy 
)
staticprivate

Definition at line 7 of file GetExEy_150V.cxx.

7  {
8  // EyArray for VD=70V(rho=0.1540[C/m**3]), VB=150V
9 static const double EyArray[17][115] = {
10 {
11  2609.00, 2646.00, 2683.00, 2721.00, 2758.00,
12  2794.00, 2833.00, 2871.00, 2908.00, 2944.00,
13  2983.00, 3021.00, 3058.00, 3094.00, 3132.00,
14  3170.00, 3208.00, 3244.00, 3283.00, 3320.00,
15  3358.00, 3394.00, 3432.00, 3470.00, 3508.00,
16  3544.00, 3583.00, 3620.00, 3658.00, 3694.00,
17  3732.00, 3770.00, 3808.00, 3844.00, 3883.00,
18  3920.00, 3958.00, 3994.00, 4032.00, 4070.00,
19  4108.00, 4144.00, 4183.00, 4220.00, 4258.00,
20  4294.00, 4332.00, 4370.00, 4408.00, 4444.00,
21  4482.00, 4520.00, 4558.00, 4594.00, 4633.00,
22  4670.00, 4708.00, 4744.00, 4783.00, 4820.00,
23  4858.00, 4894.00, 4933.00, 4970.00, 5008.00,
24  5044.00, 5081.00, 5120.00, 5157.00, 5193.00,
25  5232.00, 5269.00, 5306.00, 5342.00, 5380.00,
26  5416.00, 5451.00, 5488.00, 5525.00, 5560.00,
27  5594.00, 5628.00, 5664.00, 5697.00, 5727.00,
28  5758.00, 5790.00, 5817.00, 5841.00, 5864.00,
29  5885.00, 5902.00, 5909.00, 5918.00, 5916.00,
30  5902.00, 5885.00, 5855.00, 5800.00, 5746.00,
31  5661.00, 5538.00, 5407.00, 5215.00, 5017.00,
32  4732.00, 4444.00, 4044.00, 3647.00, 3179.00,
33  2571.00, 2022.00, 1310.00, 671.00, 327.70,
34 },
35 {
36  2609.00, 2646.00, 2683.00, 2720.00, 2757.00,
37  2795.00, 2833.00, 2870.00, 2907.00, 2945.00,
38  2983.00, 3020.00, 3057.00, 3095.00, 3132.00,
39  3170.00, 3207.00, 3245.00, 3283.00, 3320.00,
40  3357.00, 3395.00, 3432.00, 3470.00, 3507.00,
41  3545.00, 3583.00, 3620.00, 3658.00, 3695.00,
42  3732.00, 3770.00, 3807.00, 3845.00, 3883.00,
43  3920.00, 3957.00, 3995.00, 4032.00, 4070.00,
44  4107.00, 4145.00, 4183.00, 4220.00, 4258.00,
45  4295.00, 4332.00, 4370.00, 4407.00, 4445.00,
46  4482.00, 4520.00, 4557.00, 4595.00, 4633.00,
47  4670.00, 4708.00, 4745.00, 4783.00, 4820.00,
48  4858.00, 4895.00, 4933.00, 4970.00, 5007.00,
49  5044.00, 5082.00, 5120.00, 5156.00, 5194.00,
50  5231.00, 5269.00, 5305.00, 5342.00, 5379.00,
51  5416.00, 5452.00, 5488.00, 5525.00, 5560.00,
52  5595.00, 5630.00, 5664.00, 5698.00, 5730.00,
53  5760.00, 5791.00, 5819.00, 5845.00, 5868.00,
54  5889.00, 5908.00, 5917.00, 5925.00, 5927.00,
55  5917.00, 5899.00, 5874.00, 5827.00, 5771.00,
56  5697.00, 5577.00, 5457.00, 5273.00, 5083.00,
57  4807.00, 4528.00, 4128.00, 3746.00, 3251.00,
58  2667.00, 2091.00, 1357.00, 706.90, 341.70,
59 },
60 {
61  2609.00, 2646.00, 2683.00, 2720.00, 2758.00,
62  2795.00, 2833.00, 2870.00, 2907.00, 2945.00,
63  2983.00, 3020.00, 3057.00, 3095.00, 3132.00,
64  3170.00, 3207.00, 3245.00, 3282.00, 3320.00,
65  3357.00, 3395.00, 3432.00, 3470.00, 3507.00,
66  3545.00, 3582.00, 3620.00, 3657.00, 3695.00,
67  3732.00, 3770.00, 3807.00, 3845.00, 3882.00,
68  3920.00, 3957.00, 3995.00, 4032.00, 4070.00,
69  4107.00, 4145.00, 4182.00, 4220.00, 4257.00,
70  4295.00, 4332.00, 4370.00, 4407.00, 4445.00,
71  4482.00, 4520.00, 4557.00, 4595.00, 4632.00,
72  4670.00, 4707.00, 4745.00, 4782.00, 4820.00,
73  4857.00, 4895.00, 4932.00, 4970.00, 5007.00,
74  5045.00, 5082.00, 5119.00, 5157.00, 5194.00,
75  5231.00, 5268.00, 5306.00, 5343.00, 5380.00,
76  5416.00, 5453.00, 5489.00, 5525.00, 5561.00,
77  5596.00, 5631.00, 5666.00, 5699.00, 5732.00,
78  5764.00, 5795.00, 5822.00, 5849.00, 5875.00,
79  5896.00, 5914.00, 5928.00, 5941.00, 5940.00,
80  5933.00, 5927.00, 5898.00, 5855.00, 5818.00,
81  5733.00, 5641.00, 5514.00, 5355.00, 5164.00,
82  4916.00, 4624.00, 4274.00, 3847.00, 3409.00,
83  2766.00, 2187.00, 1439.00, 751.10, 310.60,
84 },
85 {
86  2607.00, 2645.00, 2683.00, 2720.00, 2758.00,
87  2795.00, 2833.00, 2870.00, 2908.00, 2945.00,
88  2983.00, 3020.00, 3058.00, 3095.00, 3132.00,
89  3170.00, 3207.00, 3245.00, 3282.00, 3320.00,
90  3357.00, 3395.00, 3432.00, 3470.00, 3507.00,
91  3545.00, 3582.00, 3620.00, 3657.00, 3695.00,
92  3732.00, 3770.00, 3807.00, 3845.00, 3882.00,
93  3920.00, 3957.00, 3995.00, 4032.00, 4070.00,
94  4107.00, 4145.00, 4182.00, 4220.00, 4257.00,
95  4295.00, 4332.00, 4370.00, 4407.00, 4445.00,
96  4482.00, 4520.00, 4557.00, 4595.00, 4633.00,
97  4670.00, 4707.00, 4745.00, 4783.00, 4820.00,
98  4857.00, 4895.00, 4932.00, 4970.00, 5007.00,
99  5045.00, 5082.00, 5119.00, 5157.00, 5194.00,
100  5232.00, 5269.00, 5306.00, 5343.00, 5380.00,
101  5417.00, 5453.00, 5490.00, 5526.00, 5562.00,
102  5598.00, 5633.00, 5668.00, 5701.00, 5735.00,
103  5767.00, 5799.00, 5827.00, 5856.00, 5881.00,
104  5905.00, 5926.00, 5941.00, 5954.00, 5960.00,
105  5960.00, 5951.00, 5932.00, 5903.00, 5860.00,
106  5802.00, 5704.00, 5600.00, 5453.00, 5277.00,
107  5045.00, 4782.00, 4416.00, 4055.00, 3547.00,
108  2966.00, 2292.00, 1543.00, 787.60, 418.30,
109 },
110 {
111  2607.00, 2645.00, 2683.00, 2720.00, 2758.00,
112  2795.00, 2832.00, 2870.00, 2908.00, 2945.00,
113  2982.00, 3020.00, 3057.00, 3095.00, 3133.00,
114  3170.00, 3207.00, 3245.00, 3282.00, 3320.00,
115  3357.00, 3395.00, 3432.00, 3470.00, 3507.00,
116  3545.00, 3582.00, 3620.00, 3657.00, 3695.00,
117  3732.00, 3770.00, 3807.00, 3845.00, 3882.00,
118  3920.00, 3957.00, 3995.00, 4032.00, 4070.00,
119  4107.00, 4145.00, 4182.00, 4220.00, 4257.00,
120  4295.00, 4332.00, 4370.00, 4407.00, 4445.00,
121  4482.00, 4520.00, 4557.00, 4595.00, 4632.00,
122  4670.00, 4707.00, 4745.00, 4782.00, 4820.00,
123  4857.00, 4895.00, 4932.00, 4970.00, 5007.00,
124  5045.00, 5082.00, 5120.00, 5157.00, 5194.00,
125  5232.00, 5269.00, 5306.00, 5343.00, 5380.00,
126  5417.00, 5454.00, 5491.00, 5527.00, 5563.00,
127  5600.00, 5635.00, 5670.00, 5704.00, 5739.00,
128  5771.00, 5804.00, 5834.00, 5864.00, 5891.00,
129  5917.00, 5940.00, 5958.00, 5978.00, 5985.00,
130  5993.00, 5992.00, 5978.00, 5959.00, 5933.00,
131  5875.00, 5807.00, 5712.00, 5589.00, 5435.00,
132  5234.00, 4977.00, 4681.00, 4285.00, 3838.00,
133  3178.00, 2515.00, 1710.00, 917.80, 152.50,
134 },
135 {
136  2607.00, 2645.00, 2683.00, 2720.00, 2758.00,
137  2795.00, 2833.00, 2870.00, 2908.00, 2945.00,
138  2982.00, 3020.00, 3057.00, 3095.00, 3133.00,
139  3170.00, 3207.00, 3245.00, 3282.00, 3320.00,
140  3357.00, 3395.00, 3432.00, 3470.00, 3507.00,
141  3545.00, 3582.00, 3620.00, 3657.00, 3695.00,
142  3732.00, 3770.00, 3807.00, 3845.00, 3882.00,
143  3920.00, 3957.00, 3995.00, 4032.00, 4070.00,
144  4107.00, 4145.00, 4182.00, 4220.00, 4257.00,
145  4295.00, 4332.00, 4370.00, 4407.00, 4445.00,
146  4482.00, 4520.00, 4557.00, 4595.00, 4632.00,
147  4670.00, 4707.00, 4745.00, 4782.00, 4820.00,
148  4857.00, 4895.00, 4932.00, 4970.00, 5007.00,
149  5045.00, 5082.00, 5120.00, 5157.00, 5195.00,
150  5232.00, 5269.00, 5307.00, 5344.00, 5381.00,
151  5418.00, 5455.00, 5492.00, 5529.00, 5565.00,
152  5601.00, 5637.00, 5673.00, 5708.00, 5743.00,
153  5777.00, 5811.00, 5842.00, 5874.00, 5903.00,
154  5932.00, 5958.00, 5981.00, 6002.00, 6017.00,
155  6030.00, 6036.00, 6034.00, 6027.00, 6007.00,
156  5978.00, 5924.00, 5854.00, 5761.00, 5632.00,
157  5469.00, 5260.00, 4963.00, 4654.00, 4173.00,
158  3588.00, 2797.00, 1942.00, 1013.00, 320.60,
159 },
160 {
161  2607.00, 2645.00, 2683.00, 2720.00, 2758.00,
162  2795.00, 2833.00, 2870.00, 2908.00, 2945.00,
163  2982.00, 3020.00, 3057.00, 3095.00, 3132.00,
164  3170.00, 3207.00, 3245.00, 3282.00, 3320.00,
165  3357.00, 3395.00, 3432.00, 3470.00, 3507.00,
166  3545.00, 3582.00, 3620.00, 3657.00, 3695.00,
167  3732.00, 3770.00, 3807.00, 3845.00, 3882.00,
168  3920.00, 3957.00, 3995.00, 4032.00, 4070.00,
169  4107.00, 4145.00, 4182.00, 4220.00, 4257.00,
170  4295.00, 4332.00, 4370.00, 4407.00, 4445.00,
171  4482.00, 4520.00, 4557.00, 4595.00, 4632.00,
172  4670.00, 4707.00, 4745.00, 4782.00, 4820.00,
173  4857.00, 4895.00, 4932.00, 4970.00, 5008.00,
174  5045.00, 5082.00, 5120.00, 5157.00, 5195.00,
175  5232.00, 5270.00, 5307.00, 5344.00, 5382.00,
176  5419.00, 5456.00, 5493.00, 5530.00, 5567.00,
177  5604.00, 5640.00, 5676.00, 5712.00, 5749.00,
178  5783.00, 5818.00, 5852.00, 5886.00, 5917.00,
179  5948.00, 5978.00, 6006.00, 6033.00, 6055.00,
180  6078.00, 6092.00, 6101.00, 6110.00, 6109.00,
181  6090.00, 6064.00, 6023.00, 5959.00, 5875.00,
182  5752.00, 5584.00, 5381.00, 5066.00, 4729.00,
183  4059.00, 3286.00, 2263.00, 1242.00, 148.10,
184 },
185 {
186  2607.00, 2645.00, 2683.00, 2720.00, 2758.00,
187  2795.00, 2833.00, 2870.00, 2908.00, 2945.00,
188  2982.00, 3020.00, 3057.00, 3095.00, 3132.00,
189  3170.00, 3207.00, 3245.00, 3282.00, 3320.00,
190  3357.00, 3395.00, 3432.00, 3470.00, 3507.00,
191  3545.00, 3582.00, 3620.00, 3657.00, 3695.00,
192  3732.00, 3770.00, 3807.00, 3845.00, 3882.00,
193  3920.00, 3957.00, 3995.00, 4032.00, 4070.00,
194  4107.00, 4145.00, 4182.00, 4220.00, 4257.00,
195  4295.00, 4332.00, 4370.00, 4407.00, 4445.00,
196  4482.00, 4520.00, 4557.00, 4595.00, 4632.00,
197  4670.00, 4707.00, 4745.00, 4782.00, 4820.00,
198  4857.00, 4895.00, 4933.00, 4970.00, 5008.00,
199  5045.00, 5083.00, 5120.00, 5158.00, 5195.00,
200  5233.00, 5270.00, 5308.00, 5345.00, 5382.00,
201  5420.00, 5457.00, 5495.00, 5532.00, 5569.00,
202  5606.00, 5643.00, 5681.00, 5717.00, 5753.00,
203  5790.00, 5827.00, 5862.00, 5897.00, 5933.00,
204  5967.00, 6000.00, 6033.00, 6064.00, 6093.00,
205  6122.00, 6149.00, 6171.00, 6191.00, 6206.00,
206  6219.00, 6219.00, 6207.00, 6187.00, 6147.00,
207  6079.00, 5982.00, 5828.00, 5649.00, 5312.00,
208  4787.00, 3950.00, 2762.00, 1331.00, 585.20,
209 },
210 {
211  2607.00, 2645.00, 2683.00, 2720.00, 2758.00,
212  2795.00, 2833.00, 2870.00, 2908.00, 2945.00,
213  2982.00, 3020.00, 3057.00, 3095.00, 3132.00,
214  3170.00, 3207.00, 3245.00, 3282.00, 3320.00,
215  3357.00, 3395.00, 3432.00, 3470.00, 3507.00,
216  3545.00, 3582.00, 3620.00, 3657.00, 3695.00,
217  3732.00, 3770.00, 3807.00, 3845.00, 3882.00,
218  3920.00, 3957.00, 3995.00, 4032.00, 4070.00,
219  4107.00, 4145.00, 4182.00, 4220.00, 4257.00,
220  4295.00, 4332.00, 4370.00, 4407.00, 4445.00,
221  4482.00, 4520.00, 4557.00, 4595.00, 4632.00,
222  4670.00, 4707.00, 4745.00, 4782.00, 4820.00,
223  4858.00, 4895.00, 4933.00, 4970.00, 5008.00,
224  5045.00, 5083.00, 5120.00, 5158.00, 5195.00,
225  5233.00, 5271.00, 5308.00, 5346.00, 5383.00,
226  5421.00, 5458.00, 5496.00, 5533.00, 5571.00,
227  5609.00, 5646.00, 5684.00, 5722.00, 5760.00,
228  5797.00, 5834.00, 5873.00, 5911.00, 5948.00,
229  5985.00, 6023.00, 6062.00, 6100.00, 6137.00,
230  6177.00, 6211.00, 6248.00, 6289.00, 6322.00,
231  6355.00, 6382.00, 6409.00, 6433.00, 6440.00,
232  6436.00, 6415.00, 6372.00, 6258.00, 6143.00,
233  5750.00, 5024.00, 4152.00, 1868.00, 1002.00,
234 },
235 {
236  2607.00, 2645.00, 2682.00, 2720.00, 2758.00,
237  2795.00, 2833.00, 2870.00, 2908.00, 2945.00,
238  2982.00, 3020.00, 3057.00, 3095.00, 3132.00,
239  3170.00, 3207.00, 3245.00, 3282.00, 3320.00,
240  3357.00, 3395.00, 3432.00, 3470.00, 3507.00,
241  3545.00, 3582.00, 3620.00, 3657.00, 3695.00,
242  3732.00, 3770.00, 3807.00, 3845.00, 3882.00,
243  3920.00, 3957.00, 3995.00, 4032.00, 4070.00,
244  4107.00, 4145.00, 4182.00, 4220.00, 4257.00,
245  4295.00, 4332.00, 4370.00, 4407.00, 4445.00,
246  4482.00, 4520.00, 4557.00, 4595.00, 4632.00,
247  4670.00, 4707.00, 4745.00, 4782.00, 4820.00,
248  4858.00, 4895.00, 4933.00, 4970.00, 5008.00,
249  5045.00, 5083.00, 5120.00, 5158.00, 5196.00,
250  5233.00, 5271.00, 5309.00, 5346.00, 5384.00,
251  5422.00, 5459.00, 5497.00, 5535.00, 5573.00,
252  5611.00, 5650.00, 5688.00, 5726.00, 5765.00,
253  5804.00, 5844.00, 5883.00, 5922.00, 5964.00,
254  6006.00, 6047.00, 6089.00, 6132.00, 6177.00,
255  6222.00, 6273.00, 6323.00, 6372.00, 6428.00,
256  6490.00, 6552.00, 6617.00, 6680.00, 6756.00,
257  6817.00, 6883.00, 6940.00, 6994.00, 6974.00,
258  6798.00, 6575.00, 6077.00, 5308.00, 3392.00,
259 },
260 {
261  2607.00, 2645.00, 2682.00, 2720.00, 2758.00,
262  2795.00, 2833.00, 2870.00, 2908.00, 2945.00,
263  2982.00, 3020.00, 3057.00, 3095.00, 3132.00,
264  3170.00, 3207.00, 3245.00, 3282.00, 3320.00,
265  3357.00, 3395.00, 3432.00, 3470.00, 3507.00,
266  3545.00, 3582.00, 3620.00, 3657.00, 3695.00,
267  3732.00, 3770.00, 3807.00, 3845.00, 3882.00,
268  3920.00, 3957.00, 3995.00, 4032.00, 4070.00,
269  4107.00, 4145.00, 4182.00, 4220.00, 4257.00,
270  4295.00, 4332.00, 4370.00, 4407.00, 4445.00,
271  4482.00, 4520.00, 4557.00, 4595.00, 4632.00,
272  4670.00, 4707.00, 4745.00, 4783.00, 4820.00,
273  4858.00, 4895.00, 4933.00, 4970.00, 5008.00,
274  5045.00, 5083.00, 5121.00, 5158.00, 5196.00,
275  5234.00, 5271.00, 5309.00, 5347.00, 5385.00,
276  5423.00, 5461.00, 5499.00, 5537.00, 5575.00,
277  5614.00, 5653.00, 5691.00, 5731.00, 5771.00,
278  5811.00, 5851.00, 5894.00, 5936.00, 5979.00,
279  6022.00, 6069.00, 6117.00, 6166.00, 6220.00,
280  6270.00, 6333.00, 6397.00, 6470.00, 6541.00,
281  6629.00, 6714.00, 6816.00, 6937.00, 7054.00,
282  7208.00, 7362.00, 7536.00, 7719.00, 7949.00,
283  8250.00, 8270.00, 8404.00, 9458.00, 10750.00,
284 },
285 {
286  2607.00, 2645.00, 2682.00, 2720.00, 2758.00,
287  2795.00, 2833.00, 2870.00, 2908.00, 2945.00,
288  2982.00, 3020.00, 3057.00, 3095.00, 3132.00,
289  3170.00, 3207.00, 3245.00, 3282.00, 3320.00,
290  3357.00, 3395.00, 3432.00, 3470.00, 3507.00,
291  3545.00, 3582.00, 3620.00, 3657.00, 3695.00,
292  3732.00, 3770.00, 3807.00, 3845.00, 3882.00,
293  3920.00, 3957.00, 3995.00, 4032.00, 4070.00,
294  4107.00, 4145.00, 4182.00, 4220.00, 4257.00,
295  4295.00, 4332.00, 4370.00, 4407.00, 4445.00,
296  4482.00, 4520.00, 4557.00, 4595.00, 4632.00,
297  4670.00, 4707.00, 4745.00, 4783.00, 4820.00,
298  4858.00, 4895.00, 4933.00, 4970.00, 5008.00,
299  5046.00, 5083.00, 5121.00, 5158.00, 5196.00,
300  5234.00, 5272.00, 5309.00, 5347.00, 5385.00,
301  5423.00, 5462.00, 5500.00, 5539.00, 5577.00,
302  5616.00, 5656.00, 5695.00, 5735.00, 5775.00,
303  5818.00, 5860.00, 5902.00, 5946.00, 5994.00,
304  6041.00, 6089.00, 6141.00, 6196.00, 6257.00,
305  6318.00, 6389.00, 6466.00, 6543.00, 6639.00,
306  6749.00, 6873.00, 7012.00, 7163.00, 7359.00,
307  7564.00, 7817.00, 8114.00, 8457.00, 8840.00,
308  9361.00, 10300.00, 11300.00, 11720.00, 12450.00,
309 },
310 {
311  2607.00, 2645.00, 2682.00, 2720.00, 2758.00,
312  2795.00, 2833.00, 2870.00, 2908.00, 2945.00,
313  2983.00, 3020.00, 3057.00, 3095.00, 3132.00,
314  3170.00, 3207.00, 3245.00, 3282.00, 3320.00,
315  3357.00, 3395.00, 3432.00, 3470.00, 3507.00,
316  3545.00, 3582.00, 3620.00, 3657.00, 3695.00,
317  3732.00, 3770.00, 3807.00, 3845.00, 3882.00,
318  3920.00, 3957.00, 3995.00, 4032.00, 4070.00,
319  4107.00, 4145.00, 4182.00, 4220.00, 4257.00,
320  4295.00, 4332.00, 4370.00, 4407.00, 4445.00,
321  4482.00, 4520.00, 4557.00, 4595.00, 4632.00,
322  4670.00, 4707.00, 4745.00, 4783.00, 4820.00,
323  4858.00, 4895.00, 4933.00, 4970.00, 5008.00,
324  5046.00, 5083.00, 5121.00, 5159.00, 5196.00,
325  5234.00, 5272.00, 5310.00, 5348.00, 5386.00,
326  5424.00, 5463.00, 5501.00, 5540.00, 5579.00,
327  5618.00, 5658.00, 5698.00, 5739.00, 5780.00,
328  5823.00, 5865.00, 5911.00, 5957.00, 6005.00,
329  6054.00, 6108.00, 6165.00, 6223.00, 6290.00,
330  6354.00, 6437.00, 6526.00, 6624.00, 6731.00,
331  6867.00, 7010.00, 7177.00, 7384.00, 7609.00,
332  7906.00, 8240.00, 8633.00, 9109.00, 9708.00,
333  10660.00, 11850.00, 13860.00, 14800.00, 10130.00,
334 },
335 {
336  2607.00, 2645.00, 2682.00, 2720.00, 2758.00,
337  2795.00, 2833.00, 2870.00, 2907.00, 2945.00,
338  2982.00, 3020.00, 3057.00, 3095.00, 3132.00,
339  3170.00, 3207.00, 3245.00, 3282.00, 3320.00,
340  3357.00, 3395.00, 3432.00, 3470.00, 3507.00,
341  3545.00, 3582.00, 3620.00, 3657.00, 3695.00,
342  3732.00, 3770.00, 3807.00, 3845.00, 3882.00,
343  3920.00, 3957.00, 3995.00, 4032.00, 4070.00,
344  4107.00, 4145.00, 4182.00, 4220.00, 4257.00,
345  4295.00, 4332.00, 4370.00, 4407.00, 4445.00,
346  4482.00, 4520.00, 4557.00, 4595.00, 4632.00,
347  4670.00, 4707.00, 4745.00, 4783.00, 4820.00,
348  4858.00, 4895.00, 4933.00, 4970.00, 5008.00,
349  5046.00, 5083.00, 5121.00, 5159.00, 5197.00,
350  5234.00, 5272.00, 5310.00, 5348.00, 5386.00,
351  5425.00, 5463.00, 5502.00, 5541.00, 5580.00,
352  5619.00, 5660.00, 5700.00, 5742.00, 5783.00,
353  5828.00, 5871.00, 5917.00, 5964.00, 6015.00,
354  6067.00, 6122.00, 6182.00, 6244.00, 6317.00,
355  6388.00, 6478.00, 6576.00, 6675.00, 6803.00,
356  6952.00, 7124.00, 7323.00, 7549.00, 7840.00,
357  8170.00, 8582.00, 9076.00, 9668.00, 10370.00,
358  11480.00, 12940.00, 14610.00, 18510.00, 20220.00,
359 },
360 {
361  2607.00, 2645.00, 2682.00, 2720.00, 2758.00,
362  2795.00, 2833.00, 2870.00, 2907.00, 2945.00,
363  2982.00, 3020.00, 3057.00, 3095.00, 3132.00,
364  3170.00, 3207.00, 3245.00, 3282.00, 3320.00,
365  3357.00, 3395.00, 3432.00, 3470.00, 3507.00,
366  3545.00, 3582.00, 3620.00, 3657.00, 3695.00,
367  3732.00, 3770.00, 3807.00, 3845.00, 3882.00,
368  3920.00, 3957.00, 3995.00, 4032.00, 4070.00,
369  4107.00, 4145.00, 4182.00, 4220.00, 4257.00,
370  4295.00, 4332.00, 4370.00, 4407.00, 4445.00,
371  4482.00, 4520.00, 4557.00, 4595.00, 4632.00,
372  4670.00, 4707.00, 4745.00, 4783.00, 4820.00,
373  4858.00, 4895.00, 4933.00, 4970.00, 5008.00,
374  5046.00, 5083.00, 5121.00, 5159.00, 5197.00,
375  5234.00, 5272.00, 5310.00, 5349.00, 5387.00,
376  5425.00, 5464.00, 5503.00, 5541.00, 5581.00,
377  5621.00, 5661.00, 5702.00, 5744.00, 5786.00,
378  5830.00, 5874.00, 5923.00, 5970.00, 6022.00,
379  6075.00, 6133.00, 6196.00, 6260.00, 6337.00,
380  6410.00, 6507.00, 6612.00, 6716.00, 6859.00,
381  7028.00, 7211.00, 7423.00, 7688.00, 7993.00,
382  8387.00, 8850.00, 9398.00, 10070.00, 10910.00,
383  12040.00, 13590.00, 15300.00, 17750.00, 18520.00,
384 },
385 {
386  2607.00, 2645.00, 2682.00, 2720.00, 2758.00,
387  2795.00, 2833.00, 2870.00, 2908.00, 2945.00,
388  2982.00, 3020.00, 3057.00, 3095.00, 3132.00,
389  3170.00, 3207.00, 3245.00, 3282.00, 3320.00,
390  3357.00, 3395.00, 3432.00, 3470.00, 3507.00,
391  3545.00, 3582.00, 3620.00, 3657.00, 3695.00,
392  3732.00, 3770.00, 3807.00, 3845.00, 3882.00,
393  3920.00, 3957.00, 3995.00, 4032.00, 4070.00,
394  4107.00, 4145.00, 4182.00, 4220.00, 4257.00,
395  4295.00, 4332.00, 4370.00, 4407.00, 4445.00,
396  4482.00, 4520.00, 4557.00, 4595.00, 4632.00,
397  4670.00, 4707.00, 4745.00, 4783.00, 4820.00,
398  4858.00, 4895.00, 4933.00, 4970.00, 5008.00,
399  5046.00, 5083.00, 5121.00, 5159.00, 5197.00,
400  5234.00, 5272.00, 5310.00, 5349.00, 5387.00,
401  5425.00, 5464.00, 5503.00, 5542.00, 5582.00,
402  5621.00, 5662.00, 5703.00, 5745.00, 5788.00,
403  5833.00, 5877.00, 5925.00, 5973.00, 6026.00,
404  6081.00, 6139.00, 6203.00, 6270.00, 6349.00,
405  6425.00, 6526.00, 6635.00, 6744.00, 6892.00,
406  7061.00, 7261.00, 7492.00, 7761.00, 8101.00,
407  8503.00, 9003.00, 9601.00, 10320.00, 11190.00,
408  12380.00, 13650.00, 15220.00, 15810.00, 17860.00,
409 },
410 {
411  2607.00, 2645.00, 2682.00, 2720.00, 2758.00,
412  2795.00, 2833.00, 2870.00, 2907.00, 2945.00,
413  2982.00, 3020.00, 3057.00, 3095.00, 3132.00,
414  3170.00, 3207.00, 3245.00, 3282.00, 3320.00,
415  3357.00, 3395.00, 3432.00, 3470.00, 3507.00,
416  3545.00, 3582.00, 3620.00, 3657.00, 3695.00,
417  3732.00, 3770.00, 3807.00, 3845.00, 3882.00,
418  3920.00, 3957.00, 3995.00, 4032.00, 4070.00,
419  4107.00, 4145.00, 4182.00, 4220.00, 4257.00,
420  4295.00, 4332.00, 4370.00, 4407.00, 4445.00,
421  4482.00, 4520.00, 4557.00, 4595.00, 4632.00,
422  4670.00, 4707.00, 4745.00, 4782.00, 4820.00,
423  4858.00, 4895.00, 4933.00, 4970.00, 5008.00,
424  5046.00, 5083.00, 5121.00, 5159.00, 5197.00,
425  5234.00, 5272.00, 5310.00, 5349.00, 5387.00,
426  5425.00, 5464.00, 5503.00, 5542.00, 5582.00,
427  5621.00, 5662.00, 5703.00, 5746.00, 5788.00,
428  5833.00, 5878.00, 5926.00, 5974.00, 6027.00,
429  6082.00, 6141.00, 6206.00, 6273.00, 6353.00,
430  6430.00, 6530.00, 6641.00, 6753.00, 6901.00,
431  7081.00, 7278.00, 7507.00, 7790.00, 8126.00,
432  8548.00, 9056.00, 9655.00, 10390.00, 11280.00,
433  12420.00, 13680.00, 14850.00, 15960.00, 17550.00,
434 },
435  };
436 //
437 return EyArray[ix][iy];
438  }

◆ finalize()

StatusCode SCT_DetailedSurfaceChargesGenerator::finalize ( )
overridevirtual

AlgTool finalize.

Definition at line 145 of file SCT_DetailedSurfaceChargesGenerator.cxx.

145  {
146  ATH_MSG_DEBUG("SCT_DetailedSurfaceChargesGenerator::finalize()");
147  return StatusCode::SUCCESS;
148 }

◆ GetPotentialValue()

double SCT_DetailedSurfaceChargesGenerator::GetPotentialValue ( int  ix,
int  iy 
)
staticprivate

Definition at line 877 of file SCT_DetailedSurfaceChargesGenerator.cxx.

877  {
878  return getPotentialValue(ix, iy);
879 }

◆ hole()

bool SCT_DetailedSurfaceChargesGenerator::hole ( double  x_h,
double  y_h,
double &  vx_h,
double &  vy_h,
double &  D_h 
)
private

Definition at line 639 of file SCT_DetailedSurfaceChargesGenerator.cxx.

639  {
640  double Ex, Ey;
641  EField(x_h, y_h, Ex, Ey); // [V/cm]
642 
643  if (m_doHistoTrap) {
644  m_h_efieldz->Fill(y_h, Ey);
645  }
646 
647  if (Ey > 0.) {
648  const double E{sqrt(Ex*Ex+Ey*Ey)};
649  const double mu_h{mud_h(E)};
650  const double v_h{mu_h * E};
651  const double r_h{0.72 - 0.0005*(m_sensorTemperature-CLHEP::STP_Temperature)};
652  const double tanLA_h{r_h * mu_h * m_magneticField * 1.E-4};
653  const double secLA{sqrt(1.+tanLA_h*tanLA_h)};
654  const double cosLA{1./secLA};
655  const double sinLA{tanLA_h / secLA};
656 
657  vy_h = v_h * (Ey*cosLA - Ex*sinLA)/E;
658  vx_h = v_h * (Ex*cosLA + Ey*sinLA)/E;
659  D_h = m_kB * m_sensorTemperature * mu_h / m_e;
660  return true;
661  } else {
662  return false;
663  }
664 }

◆ holeTransport()

void SCT_DetailedSurfaceChargesGenerator::holeTransport ( double &  x0,
double &  y0,
double *  Q_m2,
double *  Q_m1,
double *  Q_00,
double *  Q_p1,
double *  Q_p2,
CLHEP::HepRandomEngine *  rndmEngine 
)
private

Definition at line 788 of file SCT_DetailedSurfaceChargesGenerator.cxx.

788  {
789  // transport holes in the bulk
790  // T. Kondo, 2010.9.9
791  // External parameters to be specified
792  // m_transportTimeMax [nsec]
793  // m_transportTimeStep [nsec]
794  // m_bulk_depth [cm]
795  // Induced currents are added to
796  // Q_m2[50],Q_m1[50],Q_00[50],Q_p1[50],Q_p2[50]
797 
798  double x{x0}; // original hole position [cm]
799  double y{y0}; // original hole position [cm]
800  bool isInBulk{true}; //PJ ?!
801  double t_current{0.};
802  double qstrip[5];
803  double vx, vy, D;
804 
805  // -- Charge Trapping -- //
806  static const double betaHoles{5.1E-16};
807  double trappingHoles{1./(m_Fluence*betaHoles)};
808  double u{CLHEP::RandFlat::shoot(0., 1.)};
809  double drift_time{-TMath::Log(u)*trappingHoles};
810 
811  for (int istrip{-2}; istrip<=2; istrip++) {
812  qstrip[istrip+2] = induced(istrip, x, y);
813  }
814 #ifdef SCT_DIG_DEBUG
815  ATH_MSG_DEBUG("h:qstrip=" << qstrip[0] << " " << qstrip[1] << " " << qstrip[2] << " " << qstrip[3] << " " << qstrip[4]);
816 #endif
817  while (t_current < m_transportTimeMax) {
818  if (not isInBulk) break;
819  if (not hole(x, y, vx, vy, D)) break;
820  double delta_y{vy * m_transportTimeStep *1.E-9};
821  y += delta_y;
822  double dt{m_transportTimeStep};
823  if (y > m_bulk_depth) {
824  isInBulk = false;
825  dt = (m_bulk_depth - (y-delta_y))/delta_y * m_transportTimeStep;
826  y = m_bulk_depth;
827  }
828  t_current += dt;
829 
830  // -- Charge Trapping -- //
831  if (m_doTrapping) {
832  if (drift_time < t_current) break;
833  }
834 
835  x += vx*dt*1.E-9;
836  double diffusion{sqrt(2.*D*dt*1.E-9)};
837  y += diffusion * CLHEP::RandGaussZiggurat::shoot(rndmEngine);
838  x += diffusion * CLHEP::RandGaussZiggurat::shoot(rndmEngine);
839  if (y > m_bulk_depth) {
840  y = m_bulk_depth;
841  isInBulk = false;
842  }
843 
844  // Get induced current by subtracting induced charges
845 #ifdef SCT_DIG_DEBUG
846  ATH_MSG_DEBUG("h:t,x,y=" << t_current << ", " << x*1e4 << ", " << y*1e4);
847 #endif
848  for (int istrip{-2}; istrip<=2; istrip++) {
849  double qnew{induced(istrip, x, y)};
850  int jj{istrip + 2};
851  double dq{qnew - qstrip[jj]};
852  qstrip[jj] = qnew;
853 #ifdef SCT_DIG_DEBUG
854  ATH_MSG_DEBUG("dq= " << dq);
855 #endif
856  int jt{static_cast<int>((t_current+0.001) / 0.50)};
857  if (jt<50) {
858  switch (istrip) {
859  case -2: Q_m2[jt] += dq; break;
860  case -1: Q_m1[jt] += dq; break;
861  case 0: Q_00[jt] += dq; break;
862  case +1: Q_p1[jt] += dq; break;
863  case +2: Q_p2[jt] += dq; break;
864  // default: break; // logically dead code
865  }
866  }
867  }
868 #ifdef SCT_DIG_DEBUG
869  ATH_MSG_DEBUG("h:qstrip=" << qstrip[0] << " " << qstrip[1] << " " << qstrip[2] << " " << qstrip[3] << " " << qstrip[4]);
870 #endif
871  } // end of hole tracing
872 #ifdef SCT_DIG_DEBUG
873  ATH_MSG_DEBUG("holeTransport : x,y=(" << x0*1.e4<< "," <<y0*1.e4<< ")->(" << x*1.e4<< "," <<y*1.e4 << ") t=" << t_current);
874 #endif
875  }

◆ induced()

double SCT_DetailedSurfaceChargesGenerator::induced ( int  istrip,
double  x,
double  y 
) const
private

Definition at line 669 of file SCT_DetailedSurfaceChargesGenerator.cxx.

669  {
670  // x and y are the coorlocation of charge (e or hole)
671  // induced chardege on the strip "istrip" situated at the height y = d
672  // the center of the strip (istrip=0) is x = 0.004 [cm]
673  static const double deltax{0.0005};
674  static const double deltay{0.00025};
675 
676  if (y < 0. or y > m_bulk_depth) return 0.;
677  const double xc{m_strip_pitch * (istrip + 0.5)};
678  const double dx{std::abs(x-xc)};
679  const int ix{static_cast<int>(dx / deltax)};
680  if (ix > 79) return 0.;
681  const int iy{static_cast<int>(y / deltay)};
682  const double fx{(dx - ix*deltax) / deltax};
683  const double fy{( y - iy*deltay) / deltay};
684  double P{ m_PotentialValue[ix ][iy ] *(1.-fx)*(1.-fy)
685  + m_PotentialValue[ix+1][iy ] * fx *(1.-fy)
686  + m_PotentialValue[ix ][iy+1] *(1.-fx)* fy
687  + m_PotentialValue[ix+1][iy+1] * fx * fy};
688 #ifdef SCT_DIG_DEBUG
689  ATH_MSG_DEBUG("induced: x,y,iy=" << x << " " << y << " " << iy << " istrip,xc,dx,ix="
690  << istrip << " " << xc << " " << dx << " " <<ix << " fx,fy=" << fx << " " << fy << ", P=" << P);
691 #endif
692 
693  return P;
694 }

◆ inducedCharge()

double SCT_DetailedSurfaceChargesGenerator::inducedCharge ( int &  istrip,
double &  x,
double &  y,
double &  t 
) const
private

Definition at line 969 of file SCT_DetailedSurfaceChargesGenerator.cxx.

969  {
970  // x and y are in um, t is in ns.
971  double charge{0.};
972 
973  static const double dt{0.5};
974  double fx, fy, ft;
975  int ix, iy, it;//, iy1, it1;
976 
977  if (strip<-2 or strip>2) return charge;
978  if (x<0. or x>=m_strip_pitch*10000.) return charge;
979  if (y<0. or y>=m_bulk_depth*10000.) return charge;
980  if (t<0. or t>=m_transportTimeMax) return charge;
981 
982  fx = x / m_stripCharge_dx;
983  ix = static_cast<int>(fx);
984  fx -= ix;
985 
986  fy = (y - 0.5*m_stripCharge_dy) / m_stripCharge_dy;
987  iy = static_cast<int>(fy);
988  fy -= iy;
989  //iy1 = iy + 1;
990  if (y <= 0.5*m_stripCharge_dy) {
991  fy = 0.;
992  iy = 0;
993  /*iy1 = 0;*/
994  }
995  if (y >= m_bulk_depth*10000.-0.5*m_stripCharge_dy) {
996  fy = 1.;
997  iy = m_stripCharge_iymax;
998  /*iy1 = iy;*/
999  }
1000 
1001  ft = (t - m_transportTimeStep) / dt;
1002  it = static_cast<int>(ft);
1003  ft -= it;
1004  //it1 = it + 1;
1005  if (t <= m_transportTimeStep) {
1006  ft = 0.;
1007  it = 0;
1008  /*it1= 0;*/
1009  }
1011  ft = 1.;
1012  it = 49;
1013  /*it1=49;*/
1014  }
1015 
1016  double p000{0.};//m_stripCharge[strip+2][ix][iy][it];
1017  double p010{0.};//m_stripCharge[strip+2][ix][iy1][it];
1018  double p100{0.};//m_stripCharge[strip+2][ix+1][iy][it];
1019  double p110{0.};//m_stripCharge[strip+2][ix+1][iy1][it];
1020  double p001{0.};//m_stripCharge[strip+2][ix][iy][it1];
1021  double p011{0.};//m_stripCharge[strip+2][ix][iy1][it1];
1022  double p101{0.};//m_stripCharge[strip+2][ix+1][iy][it1];
1023  double p111{0.};//m_stripCharge[strip+2][ix+1][iy1][it1];
1024 
1025  const double charge0{p000*(1.-fx)*(1.-fy) + p010*(1.-fx)*fy + p100*fx*(1.-fy) + p110*fx*fy};
1026  const double charge1{p001*(1.-fx)*(1.-fy) + p011*(1.-fx)*fy + p101*fx*(1.-fy) + p111*fx*fy};
1027 
1028  charge = charge0*(1.-ft) + charge1*ft;
1029 
1030  return charge;
1031 }

◆ init_mud_e()

void SCT_DetailedSurfaceChargesGenerator::init_mud_e ( double  T)
private

Definition at line 560 of file SCT_DetailedSurfaceChargesGenerator.cxx.

560  {
561  m_vs_e = 1.53E9 * pow(T, -0.87);
562  m_Ec_e = 1.01 * pow(T, 1.55);
563  m_beta_e = 2.57E-2 * pow(T, 0.66);
564 }

◆ init_mud_h()

void SCT_DetailedSurfaceChargesGenerator::init_mud_h ( double  T)
private

Definition at line 569 of file SCT_DetailedSurfaceChargesGenerator.cxx.

569  {
570  m_vs_h = 1.62E8 * pow(T, -0.52);
571  m_Ec_h = 1.24 * pow(T, 1.68);
572  m_beta_h = 0.46 * pow(T, 0.17);
573 }

◆ initExEyArray()

void SCT_DetailedSurfaceChargesGenerator::initExEyArray ( )
private

Definition at line 578 of file SCT_DetailedSurfaceChargesGenerator.cxx.

578  {
579  for (int ix{0}; ix<17; ix++) {
580  for (int iy{0}; iy<115; iy++) {
581  m_ExValue150[ix][iy] = ExValue150(ix, iy);
582  m_EyValue150[ix][iy] = EyValue150(ix, iy);
583  if (m_doHistoTrap) {
584  m_h_yzEfield->Fill( ix*0.00025, iy*0.00025, sqrt(ExValue150(ix, iy)*ExValue150(ix, iy)+EyValue150(ix, iy)*EyValue150(ix, iy)));
585  m_h_yzEfield->Fill(-ix*0.00025, iy*0.00025, sqrt(ExValue150(ix, iy)*ExValue150(ix, iy)+EyValue150(ix, iy)*EyValue150(ix, iy)));
586  m_h_yEfield->Fill( ix*0.0005, iy*0.00025, ExValue150(ix, iy));
587  m_h_yEfield->Fill( -ix*0.0005, iy*0.00025, ExValue150(ix, iy));
588  m_h_zEfield->Fill( ix*0.0005, iy*0.00025, EyValue150(ix, iy));
589  m_h_zEfield->Fill( -ix*0.0005, iy*0.00025, EyValue150(ix, iy));
590  }
591  }
592  }
593 }

◆ initialize()

StatusCode SCT_DetailedSurfaceChargesGenerator::initialize ( )
overridevirtual

AlgTool initialize.

Definition at line 43 of file SCT_DetailedSurfaceChargesGenerator.cxx.

43  {
44  ATH_MSG_DEBUG("SCT_DetailedSurfaceChargesGenerator::initialize()");
45 
46  //Get ISiPropertiesTool
47  ATH_CHECK(m_siPropertiesTool.retrieve());
48 
49  //Get ISiliconConditionsTool
50  ATH_CHECK(m_siConditionsTool.retrieve());
51 
53  if (m_doHistoTrap) {
54  //-- Get Histogram Service
55  StatusCode rc{m_thistSvc.retrieve()};
56  if (rc.isFailure()) {
57  ATH_MSG_FATAL("Unable to retrieve pointer to THistSvc");
58  return StatusCode::FAILURE;
59  }
60  if (m_doHistoTrap) {
61  m_h_efieldz = new TProfile("efieldz", "", 50, 0., 0.03);
62  rc = m_thistSvc->regHist("/file1/efieldz", m_h_efieldz);
63  if (rc.isFailure()) {
64  ATH_MSG_FATAL("Unable to retrieve pointer to THistSvc");
65  return StatusCode::FAILURE;
66  }
67  m_h_yzRamo = new TProfile2D("yzRamo", "", 60, -0.44, 0.44, 60, 0., m_bulk_depth*10.);
68  rc = m_thistSvc->regHist("/file1/yzRamo", m_h_yzRamo);
69  if (rc.isFailure()) {
70  ATH_MSG_FATAL("Unable to retrieve pointer to THistSvc");
71  return StatusCode::FAILURE;
72  }
73  m_h_yzEfield = new TProfile2D("yzEfield", "", 40, -0.004, 0.004, 60, 0., m_bulk_depth);
74  rc = m_thistSvc->regHist("/file1/yzEfield", m_h_yzEfield);
75  if (rc.isFailure()) {
76  ATH_MSG_FATAL("Unable to retrieve pointer to THistSvc");
77  return StatusCode::FAILURE;
78  }
79  m_h_yEfield = new TProfile2D("yEfield", "", 40, -0.004, 0.004, 60, 0., m_bulk_depth);
80  rc = m_thistSvc->regHist("/file1/yEfield", m_h_yEfield);
81  if (rc.isFailure()) {
82  ATH_MSG_FATAL("Unable to retrieve pointer to THistSvc");
83  return StatusCode::FAILURE;
84  }
85  m_h_zEfield = new TProfile2D("zEfield", "", 40, -0.004, 0.004, 60, 0., m_bulk_depth);
86  rc = m_thistSvc->regHist("/file1/zEfield", m_h_zEfield);
87  if (rc.isFailure()) {
88  ATH_MSG_FATAL("Unable to retrieve pointer to THistSvc");
89  return StatusCode::FAILURE;
90  }
91  }
92  }
94 
96  m_tSurfaceDrift.setValue(m_tSurfaceDrift.value() * CLHEP::ns);
97 
98  // Surface drift time calculation Stuff
101  if ((m_tSurfaceDrift > m_tHalfwayDrift) and
102  (m_tHalfwayDrift>=0.0) and
103  (m_distHalfInterStrip>0.0) and
105  m_SurfaceDriftFlag = true;
106 #ifdef SCT_DIG_DEBUG
107  ATH_MSG_INFO("\tsurface drift ON: surface drift time at d=" << m_distInterStrip << " (mid strip) =" << this->SurfaceDriftTime(m_distInterStrip));
108  ATH_MSG_INFO("\tsurface drift ON: surface drift time at d=" << m_distHalfInterStrip << " (half way) =" << this->SurfaceDriftTime(m_distHalfInterStrip));
109  ATH_MSG_INFO("\tsurface drift ON: surface drift time at d=0.0" << " (strip center) =" << this->SurfaceDriftTime(0.));
110 #endif
111  } else {
112  ATH_MSG_INFO("\tsurface drift still not on, wrong params");
113  }
114 
115  // Make sure these two flags are not set simultaneously
116  if (m_tfix>-998. and m_tsubtract>-998.) {
117  ATH_MSG_FATAL("\tCannot set both FixedTime and SubtractTime options!");
118  ATH_MSG_INFO("\tMake sure the two flags are not set simultaneously in jo");
119  return StatusCode::FAILURE;
120  }
121 
123  ATH_MSG_INFO("\tUsing Taka Kondo eh-transport code");
125  }
127  ATH_MSG_INFO("\tUsing Taka Kondo fixed charge map");
128  //init_ChargeMapModel("..."); //PJ to be changed
129  }
130 
131 #ifdef SCT_DIG_DEBUG
132  ATH_MSG_INFO("\tDetailedSurfaceChargesGenerator copied");
133  ATH_MSG_INFO("\tn.charg " << m_numberOfCharges);
134  ATH_MSG_INFO("\tdigi steps " << m_smallStepLength << " mm");
135 #endif
136 
137  ATH_CHECK(m_lorentzAngleTool.retrieve());
138 
139  return StatusCode::SUCCESS;
140 }

◆ initPotentialValue()

void SCT_DetailedSurfaceChargesGenerator::initPotentialValue ( )
private

Definition at line 598 of file SCT_DetailedSurfaceChargesGenerator.cxx.

598  {
599  for (int ix{0}; ix<81; ix++) {
600  for (int iy{0}; iy<115; iy++) {
601  m_PotentialValue[ix][iy] = GetPotentialValue(ix, iy);
602  if (m_doHistoTrap) {
603  m_h_yzRamo->Fill( ix*0.005, iy*0.0025, GetPotentialValue(ix, iy));
604  m_h_yzRamo->Fill(-ix*0.005, iy*0.0025, GetPotentialValue(ix, iy));
605  }
606  }
607  }
608 }

◆ initTransportModel()

void SCT_DetailedSurfaceChargesGenerator::initTransportModel ( )
private

Definition at line 495 of file SCT_DetailedSurfaceChargesGenerator.cxx.

495  {
496  //------------------------ initialize subfunctions ------------
499  initExEyArray();
501 
502  //------------ find delepletion deph for model=uniformEFieldModel and flatDiodeModel -------------
503  ATH_MSG_INFO("\tmodel= " << m_eFieldModel << " VB= " << m_biasVoltage << " B= " << m_magneticField);
507  }
508 
509  // ----------- find for the case of model = FEMsolution ---------------
510  if (m_eFieldModel == FEMsolution) {
511  double Ex{0.}, Ey{0.};
512  for (double y{0.}; y < m_bulk_depth; y += 0.00025) {
513  EField(0., y, Ex, Ey);
514  if (Ey > 0.1) continue;
516  }
517  }
519 
520  ATH_MSG_INFO("------ initialization of e-h transport ------");
521  ATH_MSG_INFO("\tm_bulk_depth = " << m_bulk_depth << " [cm]");
522  ATH_MSG_INFO("\tm_depletion_depth = " << m_depletion_depth << " [cm]");
523  ATH_MSG_INFO("\tm_y_origin _min = " << m_y_origin_min << " [cm]");
524 
525  //----for the case of uniform field model (SCT digitization model)------
526  double Emean{m_biasVoltage / m_depletion_depth};
527  m_driftMobility = mud_h(Emean);
528 
529 #ifdef SCT_DIG_DEBUG
530  ATH_MSG_INFO("----parameters for old SCT digitization model ----");
531  ATH_MSG_INFO("\tmean E field = " << Emean << " [KV/cm] ");
532  ATH_MSG_INFO("\tdriftMobility = " << m_driftMobility<< " [ ]");
533 
534  double diffusion{m_kB * m_sensorTemperature * m_driftMobility / m_e};
535  ATH_MSG_INFO("\tdiffusion D = " << diffusion << " [ ]");
536 
537  double r_h{0.72 - 0.0005*(m_sensorTemperature-CLHEP::STP_Temperature)};
538  double tanLA{r_h * m_driftMobility * m_magneticField * 1.E-4};
539  ATH_MSG_INFO("\ttan(LA) = " << tanLA);
540  ATH_MSG_INFO("\tLA = " << atan(tanLA)*180./M_PI << " [degree]");
541  ATH_MSG_INFO("-----------------------------------------------");
542 
543  ATH_MSG_INFO("EfieldModel\t" << m_eFieldModel << "\t(default = FEMsolution)");
544  ATH_MSG_INFO("DepletionVoltage_VD\t" << m_depletionVoltage << "\t(default = 70.)");
545  ATH_MSG_INFO("BiasVoltage_VB\t" << m_biasVoltage << "\t(150.)");
546  ATH_MSG_INFO("MagneticField_B\t" << m_magneticField << "\t(-2.0)");
547  ATH_MSG_INFO("Temperature_T\t" << m_sensorTemperature << "\t(273.15)");
548  ATH_MSG_INFO("TransportTimeStep \t" << m_transportTimeStep << "\t(0.25)");
549  ATH_MSG_INFO("TransportTimeMax\t" << m_transportTimeMax << "\t(25.0)");
550  ATH_MSG_INFO("BulkDepth\t" << m_bulk_depth << "\t(0.0285)");
551  ATH_MSG_INFO("StripPitch\t" << m_strip_pitch << "\t(0.0080)");
552  ATH_MSG_INFO("----------------------------------------------");
553 #endif
554 
555 }

◆ MaxDiffusionSigma()

float SCT_DetailedSurfaceChargesGenerator::MaxDiffusionSigma ( const InDetDD::SiDetectorElement element,
const EventContext &  ctx 
) const
private

max sigma diffusion

Definition at line 211 of file SCT_DetailedSurfaceChargesGenerator.cxx.

211  {
212  if (element) {
213  const double sensorThickness{element->thickness()};
214  return this->DiffusionSigma(sensorThickness, element, ctx);
215  } else {
216  ATH_MSG_INFO("Error: SiDetectorElement not set!");
217  return 0.;
218  }
219 }

◆ MaxDriftTime()

float SCT_DetailedSurfaceChargesGenerator::MaxDriftTime ( const InDetDD::SiDetectorElement element,
const EventContext &  ctx 
) const
private

max drift charge equivalent to the detector thickness

Definition at line 198 of file SCT_DetailedSurfaceChargesGenerator.cxx.

198  {
199  if (element) {
200  const double sensorThickness{element->thickness()};
201  return this->DriftTime(sensorThickness, element, ctx);
202  } else {
203  ATH_MSG_INFO("Error: SiDetectorElement not set!");
204  return 0.;
205  }
206 }

◆ mud_e()

double SCT_DetailedSurfaceChargesGenerator::mud_e ( double  E) const
private

Definition at line 774 of file SCT_DetailedSurfaceChargesGenerator.cxx.

774  {
775  return m_vs_e/m_Ec_e/pow(1.+pow(E/m_Ec_e, m_beta_e), 1./m_beta_e);
776 }

◆ mud_h()

double SCT_DetailedSurfaceChargesGenerator::mud_h ( double  E) const
private

Definition at line 781 of file SCT_DetailedSurfaceChargesGenerator.cxx.

781  {
782  return m_vs_h/m_Ec_h/pow(1.+pow(E/m_Ec_h, m_beta_h), 1./m_beta_h);
783 }

◆ process()

void SCT_DetailedSurfaceChargesGenerator::process ( const InDetDD::SiDetectorElement element,
const TimedHitPtr< SiHit > &  phit,
ISiSurfaceChargesInserter inserter,
CLHEP::HepRandomEngine *  rndmEngine,
const EventContext &  ctx 
)
overrideprivatevirtual

create a list of surface charges from a hit

Definition at line 249 of file SCT_DetailedSurfaceChargesGenerator.cxx.

249  {
250  ATH_MSG_VERBOSE("SCT_DetailedSurfaceChargesGenerator::process starts");
251  const float p_eventTime{phit.eventTime()};
252  const unsigned short p_eventId{phit.eventId()};
253  processSiHit(element, *phit, inserter, p_eventTime, p_eventId, rndmEngine, ctx);
254 }

◆ processSiHit()

void SCT_DetailedSurfaceChargesGenerator::processSiHit ( const InDetDD::SiDetectorElement element,
const SiHit phit,
ISiSurfaceChargesInserter inserter,
const float  eventTime,
const unsigned short  eventID,
CLHEP::HepRandomEngine *  rndmEngine,
const EventContext &  ctx 
)
private

< extract the distance to the origin of the module to Time of flight

< timing set from jo to adjust (subtract) the timing

< tdrift: perpandicular drift time

< Taking into account the magnetic field

< dist on the surface from the hit point to the nearest strip (diode)

< Surface drift time

< Total drift time

Definition at line 259 of file SCT_DetailedSurfaceChargesGenerator.cxx.

259  {
260  const SCT_ModuleSideDesign* p_design{dynamic_cast<const SCT_ModuleSideDesign*>(&(element->design()))};
261  if (p_design==nullptr) {
262  ATH_MSG_ERROR("SCT_DetailedSurfaceChargesGenerator::process can not get " << p_design);
263  return;
264  }
265 
266  //---**************************************
267  // Time of Flight Calculation - separate method?
268  //---**************************************
269  //--- Original calculation of Time of Flight of the particle Time needed by the particle to reach the sensor
270  float timeOfFlight{p_eventTime + hitTime(phit)}; // hitTime(phit): Open functions of InDetSimEvent/SiHit.h hitTime(phit) = phit->meanTime();
271 
272  // Kondo 19/09/2007: Use the coordinate of the center of the module to calculate the time of flight
273  timeOfFlight -= (element->center().mag())/CLHEP::c_light;
274 
276  if (m_tsubtract>-998.) timeOfFlight -= m_tsubtract;
277  //---**************************************
278 
279  //Get HashId
280  const IdentifierHash hashId{element->identifyHash()};
281 
282  //get sensor thickness and tg lorentz from SiDetectorDesign
283  const double sensorThickness{p_design->thickness()};
284  const double tanLorentz{m_lorentzAngleTool->getTanLorentzAngle(hashId,ctx)};
285 
286  const CLHEP::Hep3Vector pos{phit.localStartPosition()};
287  const double xEta{pos[SiHit::xEta]};
288  const double xPhi{pos[SiHit::xPhi]};
289  const double xDep{pos[SiHit::xDep]};
290 
291  const CLHEP::Hep3Vector endPos{phit.localEndPosition()};
292  const double cEta{endPos[SiHit::xEta]-xEta};
293  const double cPhi{endPos[SiHit::xPhi]-xPhi};
294  const double cDep{endPos[SiHit::xDep]-xDep};
295 
296  double LargeStep{sqrt(cEta*cEta+cPhi*cPhi+cDep*cDep)};
297  int numberOfSteps{static_cast<int>(LargeStep/m_smallStepLength) + 1};
298  double steps{static_cast<double>(m_numberOfCharges*numberOfSteps)};
299  double e1{phit.energyLoss()/steps};
300  double q1{e1*m_siPropertiesTool->getSiProperties(hashId, ctx).electronHolePairsPerEnergy()};
301 
302  //in the following, to test the code, we will use the original coordinate system of the SCTtest3SurfaceChargesGenerator x is eta y is phi z is depth
303  double xhit{xEta};
304  double yhit{xPhi};
305  double zhit{xDep};
306 
307  double StepX{cEta/numberOfSteps};
308  double StepY{cPhi/numberOfSteps};
309  double StepZ{cDep/numberOfSteps};
310 
311  //check the status of truth information for this SiHit
312  //some Truth information is cut for pile up events
313  const HepMcParticleLink trklink = HepMcParticleLink::getRedirectedLink(phit.particleLink(), p_eventId, ctx); // This link should now correctly resolve to the TruthEvent McEventCollection in the main StoreGateSvc.
314 
316  if (phit.truthID() != 0 || phit.truthBarcode() != 0) { // if the hit was not caused by a delta-ray then one of these must be true
317  if (not trklink.isValid()) {
318  // TODO consider extending this check to reject links to
319  // GenEvents other than the first one in the McEventCollection,
320  // so that the digitization output doesn't change if pile-up
321  // truth is saved.
322  hitproc = SiCharge::cut_track;
323  }
324  }
325 
326  double dstep{-0.5};
327  for (int istep{0}; istep<numberOfSteps; ++istep) {
328  dstep += 1.0;
329  double z1{zhit+StepZ*dstep};//(static_cast<float>(istep)+0.5);
330 
331  //Distance between charge and readout side. p_design->readoutSide() is +1 if readout side is in +ve depth axis direction and visa-versa.
332  double zReadout{0.5*sensorThickness - p_design->readoutSide() * z1};
333 
334  float tdrift{DriftTime(zReadout, element, ctx)};
335  if (tdrift>-2.0000002 and tdrift<-1.9999998) {
336  ATH_MSG_DEBUG("Checking for rounding errors in compression");
337  if ((std::abs(z1)-0.5*sensorThickness)<0.000010) {
338  ATH_MSG_DEBUG("Rounding error found attempting to correct it. z1 = " << std::fixed << std::setprecision(8) << z1);
339  if (z1<0.0) {
340  z1= 0.0000005-0.5*sensorThickness; //set new coordinate to be 0.5nm inside wafer volume.
341  } else {
342  z1 = 0.5*sensorThickness-0.0000005; //set new coordinate to be 0.5nm inside wafer volume.
343  }
344  zReadout = 0.5*sensorThickness - p_design->readoutSide() * z1;
345  tdrift=DriftTime(zReadout, element, ctx);
346  if (tdrift>-2.0000002 and tdrift<-1.9999998) {
347  ATH_MSG_WARNING("Attempt failed. Making no correction.");
348  } else {
349  ATH_MSG_DEBUG("Correction Successful! z1 = " << std::fixed << std::setprecision(8) << z1 << ", zReadout = " << zReadout << ", tdrift = " << tdrift);
350  }
351  } else {
352  ATH_MSG_DEBUG("No rounding error found. Making no correction.");
353  }
354  }
355  if (tdrift > 0.0) {
356  double x1{xhit+StepX*dstep};//(static_cast<float>(istep)+0.5);
357  double y1{yhit+StepY*dstep};//(static_cast<float>(istep)+0.5);
358 
359  //PJ select driftmodel here
360  if (m_chargeDriftModel == defaultSCTModel or element->isEndcap()) { //Standard SCT driftmodel
361  y1 += tanLorentz*zReadout;
362  float diffusionSigma{DiffusionSigma(zReadout, element, ctx)};
363  for (int i{0}; i<m_numberOfCharges; ++i) {
364  float rx{CLHEP::RandGaussZiggurat::shoot(rndmEngine)};
365  double xd{x1+diffusionSigma*rx};
366  float ry{CLHEP::RandGaussZiggurat::shoot(rndmEngine)};
367  double yd{y1+diffusionSigma*ry};
368 
369  SiLocalPosition position{element->hitLocalToLocal(xd, yd)};
370  if (p_design->inActiveArea(position)) {
371  float sdist{static_cast<float>(p_design->scaledDistanceToNearestDiode(position))};
372  float tsurf{this->SurfaceDriftTime(2.0*sdist)};
373  float totaltime{(m_tfix>-998.) ? m_tfix.value() : tdrift + timeOfFlight + tsurf};
374  inserter(SiSurfaceCharge(position, SiCharge(q1, totaltime, hitproc, trklink)));
375 
376 #ifdef SCT_DIG_DEBUG
377  ATH_MSG_INFO("Total Time: " << totaltime << " tdrift " << tdrift << " tsurf " << tsurf << " sdist " << sdist << " charge: " << q1);
378 #endif
379 
380  } else {
381 #ifdef SCT_DIG_DEBUG
382  ATH_MSG_INFO(std::fixed << std::setprecision(8) << "Local position: " << position << " of the element is out of active area, charge = " << q1);
383 #endif
384  }
385  } // end of loop on charges
386  } else if (m_chargeDriftModel == ehTransport and element->isBarrel()) { //TKs eh-transport model
387  //PJ calculates induced charge from e's and h's for 5 strips with 0.5 ns steps
388  // Set up local taka parameters, TK using cm...
389 
390  const InDetDD::SCT_BarrelModuleSideDesign* b_design{dynamic_cast<const InDetDD::SCT_BarrelModuleSideDesign*>(&(element->design()))};
391  if (b_design==nullptr) {
392  ATH_MSG_ERROR("SCT_DetailedSurfaceChargesGenerator::process can not get " << b_design);
393  return;
394  }
395 
396  double stripPitch{p_design->stripPitch()};
397  double stripPatternCentre{b_design->phiStripPatternCentre()};
398  double dstrip{(y1-stripPatternCentre)/stripPitch};
399 
400  // need the distance from the nearest strips edge not centre, xtaka = 1/2*stripPitch
401  // centre of detector, y1=0, is in the middle of an interstrip gap
402  if (dstrip>0.) {
403  dstrip -= static_cast<double>(static_cast<int>(dstrip));
404  } else {
405  dstrip -= static_cast<double>(static_cast<int>(dstrip)-1);
406  }
407  double xtakadist{dstrip*stripPitch};
408  double x0{xtakadist/10.}; // [mm] to [cm]
409  double y0{(sensorThickness - zReadout)/10.}; // [mm] to [cm]
410 
411 #ifdef SCT_DIG_DEBUG
412  ATH_MSG_INFO("element->isBarrel(): " << element->isBarrel() << " stripPitch: " << stripPitch << " stripPatternCentre: " << stripPatternCentre);
413  ATH_MSG_INFO("tanLorentz, y1, xtakadist = " << tanLorentz << ", " << y1 << ", " << xtakadist);
414 #endif
415  double Q_all[5][50]={};
416 
417  // Electron and hole transportation starting at x0 and y0
418  holeTransport (x0, y0, Q_all[0], Q_all[1], Q_all[2], Q_all[3], Q_all[4], rndmEngine);
419  electronTransport(x0, y0, Q_all[0], Q_all[1], Q_all[2], Q_all[3], Q_all[4], rndmEngine);
420  //Loop over the strips and add the surface charges from each step and strip
421  for (int strip{-2}; strip<=2; strip++) {
422  double ystrip{y1 + strip*stripPitch};
423  SiLocalPosition position{element->hitLocalToLocal(x1, ystrip)};
424  if (p_design->inActiveArea(position)) {
425  for (int itq{0}; itq<50; itq++) {
426  const double charge =Q_all[strip+2][itq];
427  double time{(itq+1)*0.5 + timeOfFlight};
428  if (charge != 0.) inserter(SiSurfaceCharge(position, SiCharge(q1*charge,time,hitproc,trklink)));
429 #ifdef SCT_DIG_DEBUG
430  ATH_MSG_DEBUG("strip: " << strip << " position, x,y:" << x1 << ", " << ystrip << " charge: " << q1*charge);
431 #endif
432  }
433  } else {
434 #ifdef SCT_DIG_DEBUG
435  ATH_MSG_INFO(std::fixed << std::setprecision(8) << "Local position: " << position << " of the element is out of active area, charge = " << q1);
436 #endif
437  }
438  }
439  } else if (m_chargeDriftModel == fixedChargeMap and element->isBarrel()) { //TKs fixed charge map model
440  ATH_MSG_ERROR("Fixed charge map model, implementation not finished yet...");
441 
442  const InDetDD::SCT_BarrelModuleSideDesign* b_design{dynamic_cast<const InDetDD::SCT_BarrelModuleSideDesign*>(&(element->design()))};
443  if (b_design==nullptr) {
444  ATH_MSG_ERROR("SCT_DetailedSurfaceChargesGenerator::process can not get " << b_design);
445  return;
446  }
447 
448  // Set up local taka parameters, TK using um...I think
449  double stripPitch{p_design->stripPitch()};
450  double stripPatternCentre{b_design->phiStripPatternCentre()};
451  double dstrip{(y1-stripPatternCentre)/stripPitch};
452 
453  // need the distance from the nearest strips edge not centre, xtaka = 1/2*stripPitch
454  // centre of detector, y1=0, is in the middle of an interstrip gap
455  if (dstrip>0.) {
456  dstrip -= static_cast<double>(static_cast<int>(dstrip));
457  } else {
458  dstrip -= static_cast<double>(static_cast<int>(dstrip)-1);
459  }
460  double xtakadist{dstrip*stripPitch};
461  double x0{xtakadist*1000.}; // [mm] to [um]
462  double y0{(sensorThickness - zReadout)*1000.}; // [mm] to [um]
463 
464  //Loop over the strips and add the surface charges from each step and strip
465  for (int strip{-2}; strip<=2; strip++) {
466  double ystrip{y1 + strip*stripPitch};
467  SiLocalPosition position{element->hitLocalToLocal(x1, ystrip)};
468  if (p_design->inActiveArea(position)) {
469  //PJ best way of doing this...
470  double time{0.};
471  double charge{0.};
472  for (int it{0}; it<50; it++) {
473  time = 0.25 + 0.5*it;
474  charge = q1 * inducedCharge(strip, x0, y0, time);
475  if (charge != 0.) {
476  inserter(SiSurfaceCharge(position, SiCharge(charge, time+timeOfFlight, hitproc, trklink)));
477  }
478  }
479  } else {
480 #ifdef SCT_DIG_DEBUG
481  ATH_MSG_INFO(std::fixed << std::setprecision(8) << "Local position: " << position << " of the element is out of active area, charge = " << q1);
482 #endif
483  }
484  }
485  } else {
486  ATH_MSG_ERROR("Wrong chargeDriftModel " << m_chargeDriftModel << " 0, standard, 1 eh transport, 2 fixed charge map");
487  }
488  }
489  }
490  }

◆ setFixedTime()

virtual void SCT_DetailedSurfaceChargesGenerator::setFixedTime ( float  fixedTime)
inlineoverrideprivatevirtual

Definition at line 87 of file SCT_DetailedSurfaceChargesGenerator.h.

87 { m_tfix.setValue(fixedTime); }

◆ SurfaceDriftTime()

float SCT_DetailedSurfaceChargesGenerator::SurfaceDriftTime ( float  ysurf) const
private

Calculate of the surface drift time.

Definition at line 225 of file SCT_DetailedSurfaceChargesGenerator.cxx.

225  {
226  if (m_SurfaceDriftFlag) {
227  if ((ysurf>=0.0) and (ysurf<=m_distInterStrip)) {
228  float surfaceDriftTime{0.};
229  if (ysurf<m_distHalfInterStrip) {
230  const float y{ysurf/m_distHalfInterStrip};
231  surfaceDriftTime = m_tHalfwayDrift*y*y;
232  } else {
234  surfaceDriftTime = m_tSurfaceDrift+(m_tHalfwayDrift-m_tSurfaceDrift)*y*y;
235  }
236  return surfaceDriftTime;
237  } else {
238  ATH_MSG_INFO(" ysurf out of range " << ysurf);
239  return -1.0;
240  }
241  } else {
242  return 0.0;
243  }
244 }

Member Data Documentation

◆ m_beta_e

double SCT_DetailedSurfaceChargesGenerator::m_beta_e {}
private

Definition at line 175 of file SCT_DetailedSurfaceChargesGenerator.h.

◆ m_beta_h

double SCT_DetailedSurfaceChargesGenerator::m_beta_h {}
private

Definition at line 176 of file SCT_DetailedSurfaceChargesGenerator.h.

◆ m_biasVoltage

DoubleProperty SCT_DetailedSurfaceChargesGenerator::m_biasVoltage {this, "BiasVoltage", 150.}
private

Definition at line 141 of file SCT_DetailedSurfaceChargesGenerator.h.

◆ m_bulk_depth

double SCT_DetailedSurfaceChargesGenerator::m_bulk_depth {0.0285}
private

Definition at line 163 of file SCT_DetailedSurfaceChargesGenerator.h.

◆ m_chargeDriftModel

IntegerProperty SCT_DetailedSurfaceChargesGenerator::m_chargeDriftModel {this, "ChargeDriftModel", ehTransport, "use enum ChargeDriftMode"}
private

Definition at line 136 of file SCT_DetailedSurfaceChargesGenerator.h.

◆ m_depletion_depth

double SCT_DetailedSurfaceChargesGenerator::m_depletion_depth {0.0285}
private

Definition at line 165 of file SCT_DetailedSurfaceChargesGenerator.h.

◆ m_depletionVoltage

DoubleProperty SCT_DetailedSurfaceChargesGenerator::m_depletionVoltage {this, "DepletionVoltage", 70.}
private

Definition at line 140 of file SCT_DetailedSurfaceChargesGenerator.h.

◆ m_distHalfInterStrip

float SCT_DetailedSurfaceChargesGenerator::m_distHalfInterStrip {0.}
private

Half way distance inter strip.

Definition at line 158 of file SCT_DetailedSurfaceChargesGenerator.h.

◆ m_distInterStrip

float SCT_DetailedSurfaceChargesGenerator::m_distInterStrip {1.0}
private

Inter strip distance normalized to 1.

Definition at line 157 of file SCT_DetailedSurfaceChargesGenerator.h.

◆ m_doHistoTrap

BooleanProperty SCT_DetailedSurfaceChargesGenerator::m_doHistoTrap {this, "doHistoTrap", false, "Allow filling of histos for charge trapping effect"}
private

Definition at line 131 of file SCT_DetailedSurfaceChargesGenerator.h.

◆ m_doTrapping

BooleanProperty SCT_DetailedSurfaceChargesGenerator::m_doTrapping {this, "doTrapping", false, "Simulation of charge trapping effect"}
private

Definition at line 132 of file SCT_DetailedSurfaceChargesGenerator.h.

◆ m_driftMobility

double SCT_DetailedSurfaceChargesGenerator::m_driftMobility {}
private

Definition at line 177 of file SCT_DetailedSurfaceChargesGenerator.h.

◆ m_e

double SCT_DetailedSurfaceChargesGenerator::m_e {1.602E-19}
private

Definition at line 170 of file SCT_DetailedSurfaceChargesGenerator.h.

◆ m_Ec_e

double SCT_DetailedSurfaceChargesGenerator::m_Ec_e {6034.20429}
private

Definition at line 172 of file SCT_DetailedSurfaceChargesGenerator.h.

◆ m_Ec_h

double SCT_DetailedSurfaceChargesGenerator::m_Ec_h {15366.52650}
private

Definition at line 174 of file SCT_DetailedSurfaceChargesGenerator.h.

◆ m_eFieldModel

IntegerProperty SCT_DetailedSurfaceChargesGenerator::m_eFieldModel {this, "EFieldModel", FEMsolution, "use enum EFieldModel"}
private

Definition at line 137 of file SCT_DetailedSurfaceChargesGenerator.h.

◆ m_ExValue150

double SCT_DetailedSurfaceChargesGenerator::m_ExValue150[17][115] {{0.}}
private

Definition at line 181 of file SCT_DetailedSurfaceChargesGenerator.h.

◆ m_EyValue150

double SCT_DetailedSurfaceChargesGenerator::m_EyValue150[17][115] {{0.}}
private

Definition at line 182 of file SCT_DetailedSurfaceChargesGenerator.h.

◆ m_Fluence

DoubleProperty SCT_DetailedSurfaceChargesGenerator::m_Fluence {this, "Fluence", 0., "Fluence for charge trapping effect"}
private

Definition at line 133 of file SCT_DetailedSurfaceChargesGenerator.h.

◆ m_h_efieldz

TProfile* SCT_DetailedSurfaceChargesGenerator::m_h_efieldz {nullptr}
private

Definition at line 198 of file SCT_DetailedSurfaceChargesGenerator.h.

◆ m_h_yEfield

TProfile2D* SCT_DetailedSurfaceChargesGenerator::m_h_yEfield {nullptr}
private

Definition at line 201 of file SCT_DetailedSurfaceChargesGenerator.h.

◆ m_h_yzEfield

TProfile2D* SCT_DetailedSurfaceChargesGenerator::m_h_yzEfield {nullptr}
private

Definition at line 200 of file SCT_DetailedSurfaceChargesGenerator.h.

◆ m_h_yzRamo

TProfile2D* SCT_DetailedSurfaceChargesGenerator::m_h_yzRamo {nullptr}
private

Definition at line 199 of file SCT_DetailedSurfaceChargesGenerator.h.

◆ m_h_zEfield

TProfile2D* SCT_DetailedSurfaceChargesGenerator::m_h_zEfield {nullptr}
private

Definition at line 202 of file SCT_DetailedSurfaceChargesGenerator.h.

◆ m_isOverlay

BooleanProperty SCT_DetailedSurfaceChargesGenerator::m_isOverlay {this, "isOverlay", false, "flag for overlay"}
private

Definition at line 147 of file SCT_DetailedSurfaceChargesGenerator.h.

◆ m_kB

double SCT_DetailedSurfaceChargesGenerator::m_kB {1.38E-23}
private

Definition at line 169 of file SCT_DetailedSurfaceChargesGenerator.h.

◆ m_lorentzAngleTool

ToolHandle<ISiLorentzAngleTool> SCT_DetailedSurfaceChargesGenerator::m_lorentzAngleTool {this, "LorentzAngleTool", "SiLorentzAngleTool/SCTLorentzAngleTool", "Tool to retreive Lorentz angle"}
private

Definition at line 152 of file SCT_DetailedSurfaceChargesGenerator.h.

◆ m_magneticField

DoubleProperty SCT_DetailedSurfaceChargesGenerator::m_magneticField {this, "MagneticField", -2.0}
private

Definition at line 142 of file SCT_DetailedSurfaceChargesGenerator.h.

◆ m_numberOfCharges

IntegerProperty SCT_DetailedSurfaceChargesGenerator::m_numberOfCharges {this, "NumberOfCharges", 1}
private

number of charges

Definition at line 121 of file SCT_DetailedSurfaceChargesGenerator.h.

◆ m_PotentialValue

double SCT_DetailedSurfaceChargesGenerator::m_PotentialValue[81][115] {{0.}}
private

Definition at line 180 of file SCT_DetailedSurfaceChargesGenerator.h.

◆ m_sensorTemperature

DoubleProperty SCT_DetailedSurfaceChargesGenerator::m_sensorTemperature {this, "SensorTemperature", 0.+CLHEP::STP_Temperature}
private

Definition at line 143 of file SCT_DetailedSurfaceChargesGenerator.h.

◆ m_siConditionsTool

ToolHandle<ISiliconConditionsTool> SCT_DetailedSurfaceChargesGenerator::m_siConditionsTool {this, "SiConditionsTool", "SCT_SiliconConditionsTool", "Tool to retrieve SCT silicon information"}
private

Definition at line 151 of file SCT_DetailedSurfaceChargesGenerator.h.

◆ m_siPropertiesTool

ToolHandle<ISiPropertiesTool> SCT_DetailedSurfaceChargesGenerator::m_siPropertiesTool {this, "SiPropertiesTool", "SCT_SiPropertiesTool", "Tool to retrieve SCT silicon properties"}
private

Definition at line 150 of file SCT_DetailedSurfaceChargesGenerator.h.

◆ m_smallStepLength

FloatProperty SCT_DetailedSurfaceChargesGenerator::m_smallStepLength {this, "SmallStepLength", 5.}
private

max internal step along the larger G4 step

Definition at line 122 of file SCT_DetailedSurfaceChargesGenerator.h.

◆ m_strip_pitch

double SCT_DetailedSurfaceChargesGenerator::m_strip_pitch {0.0080}
private

Definition at line 164 of file SCT_DetailedSurfaceChargesGenerator.h.

◆ m_stripCharge_dx

double SCT_DetailedSurfaceChargesGenerator::m_stripCharge_dx {1.}
private

Definition at line 194 of file SCT_DetailedSurfaceChargesGenerator.h.

◆ m_stripCharge_dy

double SCT_DetailedSurfaceChargesGenerator::m_stripCharge_dy {1.}
private

Definition at line 195 of file SCT_DetailedSurfaceChargesGenerator.h.

◆ m_stripCharge_iymax

int SCT_DetailedSurfaceChargesGenerator::m_stripCharge_iymax {285-1}
private

Definition at line 193 of file SCT_DetailedSurfaceChargesGenerator.h.

◆ m_SurfaceDriftFlag

bool SCT_DetailedSurfaceChargesGenerator::m_SurfaceDriftFlag {false}
private

surface drift ON/OFF

Definition at line 160 of file SCT_DetailedSurfaceChargesGenerator.h.

◆ m_tfix

FloatProperty SCT_DetailedSurfaceChargesGenerator::m_tfix {this, "FixedTime", -999., "ixed time"}
private

Definition at line 127 of file SCT_DetailedSurfaceChargesGenerator.h.

◆ m_tHalfwayDrift

float SCT_DetailedSurfaceChargesGenerator::m_tHalfwayDrift {0.}
private

Surface drift time.

Definition at line 156 of file SCT_DetailedSurfaceChargesGenerator.h.

◆ m_thistSvc

ServiceHandle<ITHistSvc> SCT_DetailedSurfaceChargesGenerator::m_thistSvc {this, "THistSvc", "THistSvc"}
private

Definition at line 154 of file SCT_DetailedSurfaceChargesGenerator.h.

◆ m_transportTimeMax

DoubleProperty SCT_DetailedSurfaceChargesGenerator::m_transportTimeMax {this, "TransportTimeMax", 25.0}
private

Definition at line 145 of file SCT_DetailedSurfaceChargesGenerator.h.

◆ m_transportTimeStep

DoubleProperty SCT_DetailedSurfaceChargesGenerator::m_transportTimeStep {this, "TransportTimeStep", 0.25}
private

Definition at line 144 of file SCT_DetailedSurfaceChargesGenerator.h.

◆ m_tsubtract

FloatProperty SCT_DetailedSurfaceChargesGenerator::m_tsubtract {this, "SubtractTime", -999., "subtract drift time from mid gap"}
private

Definition at line 128 of file SCT_DetailedSurfaceChargesGenerator.h.

◆ m_tSurfaceDrift

FloatProperty SCT_DetailedSurfaceChargesGenerator::m_tSurfaceDrift {this, "SurfaceDriftTime", 10., "max surface drift time"}
private

related to the surface drift

Definition at line 125 of file SCT_DetailedSurfaceChargesGenerator.h.

◆ m_vs_e

double SCT_DetailedSurfaceChargesGenerator::m_vs_e {11615084.7393}
private

Definition at line 171 of file SCT_DetailedSurfaceChargesGenerator.h.

◆ m_vs_h

double SCT_DetailedSurfaceChargesGenerator::m_vs_h {8761659.83530}
private

Definition at line 173 of file SCT_DetailedSurfaceChargesGenerator.h.

◆ m_y_origin_min

double SCT_DetailedSurfaceChargesGenerator::m_y_origin_min {0.0}
private

Definition at line 166 of file SCT_DetailedSurfaceChargesGenerator.h.


The documentation for this class was generated from the following files:
SCT_DetailedSurfaceChargesGenerator::m_kB
double m_kB
Definition: SCT_DetailedSurfaceChargesGenerator.h:169
SCT_DetailedSurfaceChargesGenerator::m_numberOfCharges
IntegerProperty m_numberOfCharges
number of charges
Definition: SCT_DetailedSurfaceChargesGenerator.h:121
plotBeamSpotCompare.x1
x1
Definition: plotBeamSpotCompare.py:216
getPotentialValue
double getPotentialValue(const int ix, const int iy)
A free function to return the SCT electric field potential internal to the silicon on a 81 * 115 arra...
Definition: SCT_GetPotentialValue.cxx:9
SCT_DetailedSurfaceChargesGenerator::m_distInterStrip
float m_distInterStrip
Inter strip distance normalized to 1.
Definition: SCT_DetailedSurfaceChargesGenerator.h:157
InDetDD::SiDetectorElement::isEndcap
bool isEndcap() const
ATH_MSG_FATAL
#define ATH_MSG_FATAL(x)
Definition: AthMsgStreamMacros.h:34
SCT_DetailedSurfaceChargesGenerator::initTransportModel
void initTransportModel()
Definition: SCT_DetailedSurfaceChargesGenerator.cxx:495
PlotCalibFromCool.ft
ft
Definition: PlotCalibFromCool.py:329
SiSurfaceCharge
Definition: SiSurfaceCharge.h:23
SiliconTech::strip
@ strip
SiHit::localEndPosition
HepGeom::Point3D< double > localEndPosition() const
Definition: SiHit.cxx:153
SCT_DetailedSurfaceChargesGenerator::m_isOverlay
BooleanProperty m_isOverlay
Definition: SCT_DetailedSurfaceChargesGenerator.h:147
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
SCT_DetailedSurfaceChargesGenerator::mud_h
double mud_h(double E) const
Definition: SCT_DetailedSurfaceChargesGenerator.cxx:781
SCT_DetailedSurfaceChargesGenerator::m_smallStepLength
FloatProperty m_smallStepLength
max internal step along the larger G4 step
Definition: SCT_DetailedSurfaceChargesGenerator.h:122
python.PhysicalConstants.STP_Temperature
float STP_Temperature
Definition: PhysicalConstants.py:119
egammaEnergyPositionAllSamples::e1
double e1(const xAOD::CaloCluster &cluster)
return the uncorrected cluster energy in 1st sampling
SCT_DetailedSurfaceChargesGenerator::init_mud_h
void init_mud_h(double T)
Definition: SCT_DetailedSurfaceChargesGenerator.cxx:569
SCT_DetailedSurfaceChargesGenerator::m_driftMobility
double m_driftMobility
Definition: SCT_DetailedSurfaceChargesGenerator.h:177
SCT_DetailedSurfaceChargesGenerator::m_depletionVoltage
DoubleProperty m_depletionVoltage
Definition: SCT_DetailedSurfaceChargesGenerator.h:140
InDetDD::SCT_ModuleSideDesign
Definition: SCT_ModuleSideDesign.h:40
SCT_DetailedSurfaceChargesGenerator::m_doHistoTrap
BooleanProperty m_doHistoTrap
Definition: SCT_DetailedSurfaceChargesGenerator.h:131
DMTest::P
P_v1 P
Definition: P.h:23
SCT_DetailedSurfaceChargesGenerator::hole
bool hole(double x_h, double y_h, double &vx_h, double &vy_h, double &D_h)
Definition: SCT_DetailedSurfaceChargesGenerator.cxx:639
SCT_DetailedSurfaceChargesGenerator::initPotentialValue
void initPotentialValue()
Definition: SCT_DetailedSurfaceChargesGenerator.cxx:598
SCT_DetailedSurfaceChargesGenerator::electron
bool electron(double x_e, double y_e, double &vx_e, double &vy_e, double &D_e) const
Definition: SCT_DetailedSurfaceChargesGenerator.cxx:613
InDetDD::SolidStateDetectorElementBase::center
virtual const Amg::Vector3D & center() const override final
Center in global coordinates.
SCT_DetailedSurfaceChargesGenerator::m_h_zEfield
TProfile2D * m_h_zEfield
Definition: SCT_DetailedSurfaceChargesGenerator.h:202
SCT_DetailedSurfaceChargesGenerator::m_SurfaceDriftFlag
bool m_SurfaceDriftFlag
surface drift ON/OFF
Definition: SCT_DetailedSurfaceChargesGenerator.h:160
SCT_DetailedSurfaceChargesGenerator::mud_e
double mud_e(double E) const
Definition: SCT_DetailedSurfaceChargesGenerator.cxx:774
SCT_DetailedSurfaceChargesGenerator::m_chargeDriftModel
IntegerProperty m_chargeDriftModel
Definition: SCT_DetailedSurfaceChargesGenerator.h:136
SiCharge::track
@ track
Definition: SiCharge.h:28
SCT_DetailedSurfaceChargesGenerator::m_distHalfInterStrip
float m_distHalfInterStrip
Half way distance inter strip.
Definition: SCT_DetailedSurfaceChargesGenerator.h:158
skel.it
it
Definition: skel.GENtoEVGEN.py:396
SCT_DetailedSurfaceChargesGenerator::m_transportTimeMax
DoubleProperty m_transportTimeMax
Definition: SCT_DetailedSurfaceChargesGenerator.h:145
M_PI
#define M_PI
Definition: ActiveFraction.h:11
SCT_DetailedSurfaceChargesGenerator::m_tsubtract
FloatProperty m_tsubtract
Definition: SCT_DetailedSurfaceChargesGenerator.h:128
SCT_DetailedSurfaceChargesGenerator::m_y_origin_min
double m_y_origin_min
Definition: SCT_DetailedSurfaceChargesGenerator.h:166
SiCharge
Definition: SiCharge.h:25
SCT_DetailedSurfaceChargesGenerator::m_beta_e
double m_beta_e
Definition: SCT_DetailedSurfaceChargesGenerator.h:175
InDetDD::SCT_BarrelModuleSideDesign
Definition: SCT_BarrelModuleSideDesign.h:34
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition: AthMsgStreamMacros.h:28
x
#define x
SCT_DetailedSurfaceChargesGenerator::processSiHit
void processSiHit(const InDetDD::SiDetectorElement *element, const SiHit &phit, ISiSurfaceChargesInserter &inserter, const float eventTime, const unsigned short eventID, CLHEP::HepRandomEngine *rndmEngine, const EventContext &ctx)
Definition: SCT_DetailedSurfaceChargesGenerator.cxx:259
SCT_DetailedSurfaceChargesGenerator::init_mud_e
void init_mud_e(double T)
Definition: SCT_DetailedSurfaceChargesGenerator.cxx:560
Trk::u
@ u
Enums for curvilinear frames.
Definition: ParamDefs.h:77
InDetDD::SolidStateDetectorElementBase::identifyHash
virtual IdentifierHash identifyHash() const override final
identifier hash (inline)
SCT_DetailedSurfaceChargesGenerator::inducedCharge
double inducedCharge(int &istrip, double &x, double &y, double &t) const
Definition: SCT_DetailedSurfaceChargesGenerator.cxx:969
makeTRTBarrelCans.y1
tuple y1
Definition: makeTRTBarrelCans.py:15
SCT_DetailedSurfaceChargesGenerator::GetPotentialValue
static double GetPotentialValue(int ix, int iy)
Definition: SCT_DetailedSurfaceChargesGenerator.cxx:877
drawFromPickle.atan
atan
Definition: drawFromPickle.py:36
SCT_DetailedSurfaceChargesGenerator::initExEyArray
void initExEyArray()
Definition: SCT_DetailedSurfaceChargesGenerator.cxx:578
SCT_DetailedSurfaceChargesGenerator::EField
void EField(double x, double y, double &Ex, double &Ey) const
Definition: SCT_DetailedSurfaceChargesGenerator.cxx:699
TimedHitPtr::eventTime
float eventTime() const
t0 offset of the bunch xing containing the hit in ns.
Definition: TimedHitPtr.h:53
InDetDD::SiLocalPosition
Definition: SiLocalPosition.h:31
SCT_DetailedSurfaceChargesGenerator::EyValue150
static double EyValue150(int ix, int iy)
Definition: GetExEy_150V.cxx:7
SCT_DetailedSurfaceChargesGenerator::m_siConditionsTool
ToolHandle< ISiliconConditionsTool > m_siConditionsTool
Definition: SCT_DetailedSurfaceChargesGenerator.h:151
Run3DQTestingDriver.dq
dq
Definition: Run3DQTestingDriver.py:108
SCT_DetailedSurfaceChargesGenerator::m_tHalfwayDrift
float m_tHalfwayDrift
Surface drift time.
Definition: SCT_DetailedSurfaceChargesGenerator.h:156
SiHit::xDep
@ xDep
Definition: SiHit.h:162
beamspotman.steps
int steps
Definition: beamspotman.py:505
SCT_DetailedSurfaceChargesGenerator::m_PotentialValue
double m_PotentialValue[81][115]
Definition: SCT_DetailedSurfaceChargesGenerator.h:180
SCT_DetailedSurfaceChargesGenerator::defaultSCTModel
@ defaultSCTModel
Definition: SCT_DetailedSurfaceChargesGenerator.h:76
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
TRT::Hit::driftTime
@ driftTime
Definition: HitInfo.h:43
lumiFormat.i
int i
Definition: lumiFormat.py:85
SCT_DetailedSurfaceChargesGenerator::m_depletion_depth
double m_depletion_depth
Definition: SCT_DetailedSurfaceChargesGenerator.h:165
InDetDD::SolidStateDetectorElementBase::thickness
double thickness() const
PixelAthClusterMonAlgCfg.e4
e4
Definition: PixelAthClusterMonAlgCfg.py:332
python.TrigEgammaMonitorHelper.TProfile
def TProfile(*args, **kwargs)
Definition: TrigEgammaMonitorHelper.py:81
SCT_DetailedSurfaceChargesGenerator::m_stripCharge_dy
double m_stripCharge_dy
Definition: SCT_DetailedSurfaceChargesGenerator.h:195
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
CaloNoise_fillDB.dt
dt
Definition: CaloNoise_fillDB.py:58
SCT_DetailedSurfaceChargesGenerator::m_e
double m_e
Definition: SCT_DetailedSurfaceChargesGenerator.h:170
SCT_DetailedSurfaceChargesGenerator::m_Fluence
DoubleProperty m_Fluence
Definition: SCT_DetailedSurfaceChargesGenerator.h:133
SiHit::truthBarcode
int truthBarcode() const
Definition: SiHit.cxx:202
SCT_DetailedSurfaceChargesGenerator::SurfaceDriftTime
float SurfaceDriftTime(float ysurf) const
Calculate of the surface drift time.
Definition: SCT_DetailedSurfaceChargesGenerator.cxx:225
SCT_DetailedSurfaceChargesGenerator::m_ExValue150
double m_ExValue150[17][115]
Definition: SCT_DetailedSurfaceChargesGenerator.h:181
SiHit::particleLink
const HepMcParticleLink & particleLink() const
Definition: SiHit.h:190
test_pyathena.parent
parent
Definition: test_pyathena.py:15
SCT_DetailedSurfaceChargesGenerator::induced
double induced(int istrip, double x, double y) const
Definition: SCT_DetailedSurfaceChargesGenerator.cxx:669
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
SCT_DetailedSurfaceChargesGenerator::m_thistSvc
ServiceHandle< ITHistSvc > m_thistSvc
Definition: SCT_DetailedSurfaceChargesGenerator.h:154
python.SystemOfUnits.micrometer
int micrometer
Definition: SystemOfUnits.py:71
python.SystemOfUnits.volt
int volt
Definition: SystemOfUnits.py:204
MuonR4::SegmentFit::ParamDefs::x0
@ x0
ReadTripsProbsFromCool.denominator
denominator
Definition: ReadTripsProbsFromCool.py:96
SCT_DetailedSurfaceChargesGenerator::m_vs_h
double m_vs_h
Definition: SCT_DetailedSurfaceChargesGenerator.h:173
SCT_DetailedSurfaceChargesGenerator::ehTransport
@ ehTransport
Definition: SCT_DetailedSurfaceChargesGenerator.h:77
plotBeamSpotCompare.xd
xd
Definition: plotBeamSpotCompare.py:220
r_e
const std::string r_e
Definition: ASCIICondDbSvc.cxx:16
SCT_DetailedSurfaceChargesGenerator::ExValue150
static double ExValue150(int ix, int iy)
Definition: GetExEy_150V.cxx:442
SCT_DetailedSurfaceChargesGenerator::uniformEFieldModel
@ uniformEFieldModel
Definition: SCT_DetailedSurfaceChargesGenerator.h:81
InDetDD::SolidStateDetectorElementBase::hitLocalToLocal
Amg::Vector2D hitLocalToLocal(double xEta, double xPhi) const
Simulation/Hit local frame to reconstruction local frame.
Definition: SolidStateDetectorElementBase.cxx:95
SCT_DetailedSurfaceChargesGenerator::FEMsolution
@ FEMsolution
Definition: SCT_DetailedSurfaceChargesGenerator.h:83
SCT_DetailedSurfaceChargesGenerator::m_bulk_depth
double m_bulk_depth
Definition: SCT_DetailedSurfaceChargesGenerator.h:163
MuonR4::SegmentFit::ParamDefs::y0
@ y0
SCT_DetailedSurfaceChargesGenerator::m_siPropertiesTool
ToolHandle< ISiPropertiesTool > m_siPropertiesTool
Definition: SCT_DetailedSurfaceChargesGenerator.h:150
SiHit::energyLoss
double energyLoss() const
Definition: SiHit.h:175
SCT_DetailedSurfaceChargesGenerator::fixedChargeMap
@ fixedChargeMap
Definition: SCT_DetailedSurfaceChargesGenerator.h:78
SCT_DetailedSurfaceChargesGenerator::m_h_yzRamo
TProfile2D * m_h_yzRamo
Definition: SCT_DetailedSurfaceChargesGenerator.h:199
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:228
VP1PartSpect::E
@ E
Definition: VP1PartSpectFlags.h:21
charge
double charge(const T &p)
Definition: AtlasPID.h:756
SCT_DetailedSurfaceChargesGenerator::DriftTime
float DriftTime(float zhit, const InDetDD::SiDetectorElement *element, const EventContext &ctx) const
calculate drift time perpandicular to the surface for a charge at distance zhit from mid gap
Definition: SCT_DetailedSurfaceChargesGenerator.cxx:153
InDetDD::SiDetectorElement::isBarrel
bool isBarrel() const
SiHit::truthID
int truthID() const
Definition: SiHit.cxx:208
SiCharge::Process
Process
Definition: SiCharge.h:28
python.PhysicalConstants.c_light
float c_light
Definition: PhysicalConstants.py:63
SCT_DetailedSurfaceChargesGenerator::m_beta_h
double m_beta_h
Definition: SCT_DetailedSurfaceChargesGenerator.h:176
SCT_DetailedSurfaceChargesGenerator::m_h_yzEfield
TProfile2D * m_h_yzEfield
Definition: SCT_DetailedSurfaceChargesGenerator.h:200
python.LumiBlobConversion.pos
pos
Definition: LumiBlobConversion.py:18
SiHit::xEta
@ xEta
Definition: SiHit.h:162
SCT_DetailedSurfaceChargesGenerator::m_tfix
FloatProperty m_tfix
Definition: SCT_DetailedSurfaceChargesGenerator.h:127
SCT_DetailedSurfaceChargesGenerator::m_h_yEfield
TProfile2D * m_h_yEfield
Definition: SCT_DetailedSurfaceChargesGenerator.h:201
SCT_DetailedSurfaceChargesGenerator::electronTransport
void electronTransport(double &x0, double &y0, double *Q_m2, double *Q_m1, double *Q_00, double *Q_p1, double *Q_p2, CLHEP::HepRandomEngine *rndmEngine) const
Definition: SCT_DetailedSurfaceChargesGenerator.cxx:884
SCT_DetailedSurfaceChargesGenerator::m_transportTimeStep
DoubleProperty m_transportTimeStep
Definition: SCT_DetailedSurfaceChargesGenerator.h:144
SiCharge::cut_track
@ cut_track
Definition: SiCharge.h:28
SCT_DetailedSurfaceChargesGenerator::m_biasVoltage
DoubleProperty m_biasVoltage
Definition: SCT_DetailedSurfaceChargesGenerator.h:141
SCT_DetailedSurfaceChargesGenerator::m_tSurfaceDrift
FloatProperty m_tSurfaceDrift
related to the surface drift
Definition: SCT_DetailedSurfaceChargesGenerator.h:125
y
#define y
CaloSwCorrections.time
def time(flags, cells_name, *args, **kw)
Definition: CaloSwCorrections.py:242
TimedHitPtr::eventId
unsigned short eventId() const
the index of the component event in PileUpEventInfo.
Definition: TimedHitPtr.h:45
SCT_DetailedSurfaceChargesGenerator::DiffusionSigma
float DiffusionSigma(float zhit, const InDetDD::SiDetectorElement *element, const EventContext &ctx) const
calculate diffusion sigma from a gaussian dist scattered charge
Definition: SCT_DetailedSurfaceChargesGenerator.cxx:185
GlobalVariables.Emax
Emax
Definition: GlobalVariables.py:185
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
SCT_DetailedSurfaceChargesGenerator::m_EyValue150
double m_EyValue150[17][115]
Definition: SCT_DetailedSurfaceChargesGenerator.h:182
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
SCT_DetailedSurfaceChargesGenerator::m_sensorTemperature
DoubleProperty m_sensorTemperature
Definition: SCT_DetailedSurfaceChargesGenerator.h:143
makeTRTBarrelCans.dx
tuple dx
Definition: makeTRTBarrelCans.py:20
python.CaloCondTools.log
log
Definition: CaloCondTools.py:20
SCT_DetailedSurfaceChargesGenerator::m_h_efieldz
TProfile * m_h_efieldz
Definition: SCT_DetailedSurfaceChargesGenerator.h:198
SCT_DetailedSurfaceChargesGenerator::m_vs_e
double m_vs_e
Definition: SCT_DetailedSurfaceChargesGenerator.h:171
SCT_DetailedSurfaceChargesGenerator::m_stripCharge_dx
double m_stripCharge_dx
Definition: SCT_DetailedSurfaceChargesGenerator.h:194
python.SystemOfUnits.ns
int ns
Definition: SystemOfUnits.py:130
SCT_DetailedSurfaceChargesGenerator::flatDiodeModel
@ flatDiodeModel
Definition: SCT_DetailedSurfaceChargesGenerator.h:82
SiHit::xPhi
@ xPhi
Definition: SiHit.h:162
SCT_DetailedSurfaceChargesGenerator::m_strip_pitch
double m_strip_pitch
Definition: SCT_DetailedSurfaceChargesGenerator.h:164
hitTime
float hitTime(const AFP_SIDSimHit &hit)
Definition: AFP_SIDSimHit.h:39
SCT_DetailedSurfaceChargesGenerator::holeTransport
void holeTransport(double &x0, double &y0, double *Q_m2, double *Q_m1, double *Q_00, double *Q_p1, double *Q_p2, CLHEP::HepRandomEngine *rndmEngine)
Definition: SCT_DetailedSurfaceChargesGenerator.cxx:788
SCT_DetailedSurfaceChargesGenerator::m_Ec_h
double m_Ec_h
Definition: SCT_DetailedSurfaceChargesGenerator.h:174
IdentifierHash
This is a "hash" representation of an Identifier. This encodes a 32 bit index which can be used to lo...
Definition: IdentifierHash.h:25
SCT_DetailedSurfaceChargesGenerator::m_eFieldModel
IntegerProperty m_eFieldModel
Definition: SCT_DetailedSurfaceChargesGenerator.h:137
InDetDD::SiDetectorElement::design
virtual const SiDetectorDesign & design() const override final
access to the local description (inline):
SCT_DetailedSurfaceChargesGenerator::m_magneticField
DoubleProperty m_magneticField
Definition: SCT_DetailedSurfaceChargesGenerator.h:142
pow
constexpr int pow(int base, int exp) noexcept
Definition: ap_fixedTest.cxx:15
SCT_DetailedSurfaceChargesGenerator::m_Ec_e
double m_Ec_e
Definition: SCT_DetailedSurfaceChargesGenerator.h:172
SCT_DetailedSurfaceChargesGenerator::m_stripCharge_iymax
int m_stripCharge_iymax
Definition: SCT_DetailedSurfaceChargesGenerator.h:193
SCT_DetailedSurfaceChargesGenerator::m_doTrapping
BooleanProperty m_doTrapping
Definition: SCT_DetailedSurfaceChargesGenerator.h:132
SiHit::localStartPosition
HepGeom::Point3D< double > localStartPosition() const
Definition: SiHit.cxx:146
TSU::T
unsigned long long T
Definition: L1TopoDataTypes.h:35
python.trfValidateRootFile.rc
rc
Definition: trfValidateRootFile.py:355
SCT_DetailedSurfaceChargesGenerator::m_lorentzAngleTool
ToolHandle< ISiLorentzAngleTool > m_lorentzAngleTool
Definition: SCT_DetailedSurfaceChargesGenerator.h:152