ATLAS Offline Software
EnergyCalculator.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 // EnergyCalculator.h
6 // Prepared 10-Apr-2002 Bill Seligman
7 // from code written by Jozsef Toth.
8 // 07-May-2003 AMS: now EnergyCalculator is not a singleton
9 // 02-July-2003 J.T. Charge collection added
10 // 20-July-2004 J.T. FieldMapVersion variable is added
11 // 25-May-2005 J.T. -calling sequence of GapAdj changed
12 // -new variables and function for reading and handling
13 // values of HV of power supplies
14 // - IonReco :for suppress signal because of ion recombination
15 // - DriftVelo: Walkowiak's formula for drift velocity
16 // Sept-2006 J.T. - collect signal from the Barrette volume
17 // Nov -2006 J.T. - fieldmap array structures changed,
18 // - lengths defined dinamically
19 // - field map for first/last fold and for Barrett volume are included
20 // May 2009 AMS move to namespace LArG4::EC
21 // duplicated data members removed
22 
23 #ifndef LArG4_EC_EnergyCalculator_H
24 #define LArG4_EC_EnergyCalculator_H
25 
26 #include <string>
27 #include <stdexcept>
28 
29 #include "CLHEP/Units/SystemOfUnits.h"
30 
34 
37 
38 #include "G4ThreeVector.hh"
39 #include "HVHelper.h"
40 #include "globals.hh"
41 
43 class LArG4BirksLaw;
44 
45 namespace LArG4 {
46 
47  namespace EC {
48 
50  {
51  public:
52 
53  EnergyCalculator(const std::string& name, ISvcLocator *pSvcLocator);
54  // Update handlers
55  void CorrectionTypeHandler(Gaudi::Details::PropertyBase&);
56  void SolidTypeHandler(Gaudi::Details::PropertyBase&);
57 
58  virtual StatusCode initialize() override final;
59  virtual StatusCode finalize() override final;
60 
62  // The interface for LArVCalculator.
63  virtual G4float OOTcut() const override final { return m_OOTcut; }
64  virtual G4bool Process(const G4Step*, std::vector<LArHitData>&) const override final;
65 
66  // Check if the current hitTime is in-time
67  virtual G4bool isInTime(G4double hitTime) const override final
68  {
69  return !(hitTime > m_OOTcut); //FIXME should we be checking the absolute value of hitTime here?
70  }
71 
72 
73  private:
74  G4bool (EnergyCalculator::*m_Process_type) (const G4Step*, std::vector<LArHitData>&) const{};
75  G4double (EnergyCalculator::*m_GetGapSize_type) (const G4ThreeVector &p) const{};
76  G4double (EnergyCalculator::*m_distance_to_the_nearest_electrode_type) (const G4ThreeVector &p, G4double /*Barret_PhiStart*/) const{};
77 
78  G4bool Process_Default(const G4Step*, std::vector<LArHitData>&) const;
79  G4bool Process_Barrett(const G4Step*, std::vector<LArHitData>&) const;
80  G4bool FindIdentifier_Default(const G4Step *, std::vector<LArHitData>&, G4ThreeVector &, G4ThreeVector &) const;
81  G4bool FindIdentifier_Barrett(const G4Step *, G4double, std::vector<LArHitData>&, G4ThreeVector &, G4ThreeVector &) const;
82  G4bool FindDMIdentifier_Barrett(const G4Step* step, std::vector<LArHitData>&) const;
83  G4bool GetCompartment_Barrett(const G4ThreeVector&,G4double,G4double,G4double,
84  G4int &, G4int &) const;
85 
86  G4double GetHV_Value(const G4ThreeVector& p, G4double PhiStartOfPhiDiv) const;
87  G4double GetGapSize_Default(const G4ThreeVector &p) const {
88  return GetGapSize(p);
89  }
90  G4double GetGapSize_Barrett(const G4ThreeVector &p) const;
91  G4int GetPhiGap_Barrett(const G4ThreeVector &p, G4double PhiStartOfPhiDiv) const;
92  G4double distance_to_the_nearest_electrode_Default(const G4ThreeVector &p, G4double /*Barret_PhiStart*/) const {
94  }
95  G4double distance_to_the_nearest_electrode_Barrett(const G4ThreeVector &p, G4double Barret_PhiStart) const;
96 
98 
99  void SetConst_OuterBarrett(void); // used only for initialization
100  G4bool GetVolumeIndex(const G4Step *, G4int &, G4int &) const;
101  static const G4double s_LongBarThickness;// = 20. *mm;
102  static const G4double s_ColdCorrection;// =1.0036256;
103  static const G4double s_StripWidth;// =3.*mm/ColdCorrection;
104  static const G4double s_KapGap;// =1.*mm/ColdCorrection;
105  static const G4double s_EdgeWidth;// =1.*mm;
106  static const G4double s_DistOfEndofCuFromBack;// =22.77*mm/ColdCorrection;
107  static const G4double s_DistOfStartofCuFromBack;//=31.*mm; // frontface of the barrette
108  static const G4double s_ZmaxOfSignal;// DistOfStartofCuFromBack - DistOfEndofCuFromBack + EdgeWidth;
109 
110  static const G4double s_S3_Etalim[21];
111  static const G4double s_Rmeas_outer[50];
112  static const G4double s_Zmeas_outer[2];
113  G4double m_RefzDist = 0.0; // = dElecFocaltoWRP+dWRPtoFrontFace+WheelThickness+ // used as const after
114  // +dWRPtoFrontFace+ LongBarThickness // initialization
115  // -DistOfEndofCuFromBack
116 
117  G4double m_S3_Rlim[21]; // used as const after init
118  G4double m_rlim[50]; // used as const after init
119  G4double m_zlim[4]; // used as const after init
120 
121  UnsignedIntegerProperty m_corrProp;
123 
124  G4double (EnergyCalculator::*m_ecorr_method) (G4double, const G4ThreeVector&, const G4ThreeVector&, G4double /*Barret_PhiStart*/) const{};
125  G4double dummy_correction_method(G4double e, const G4ThreeVector&, const G4ThreeVector&,
126  G4double /*Barret_PhiStart*/) const {
127  return e;
128  }
129  G4double GapAdjustment_old(G4double, const G4ThreeVector&, const G4ThreeVector&, G4double /*Barret_PhiStart*/) const;
130  G4double GapAdjustment (G4double, const G4ThreeVector&, const G4ThreeVector&, G4double /*Barret_PhiStart*/) const;
131  G4double GapAdjustment_E (G4double, const G4ThreeVector&, const G4ThreeVector&, G4double /*Barret_PhiStart*/) const;
132  G4double GapAdjustment_s (G4double, const G4ThreeVector&, const G4ThreeVector&, G4double /*Barret_PhiStart*/) const;
133  G4double GapAdjustment__sE (G4double, const G4ThreeVector&, const G4ThreeVector&, G4double /*Barret_PhiStart*/) const;
134  G4double CalculateChargeCollection(G4double, const G4ThreeVector&, const G4ThreeVector&, G4double /*Barret_PhiStart*/) const;
135  G4double CalculateChargeCollection1(G4double, const G4ThreeVector&, const G4ThreeVector&, G4double /*Barret_PhiStart*/) const;
136 
137  G4double m_GApower; // used as const after init
138  inline G4double GApower() const { return m_GApower; };
139 
140  // **************************************************************************
141  //Declaration of variables,functions for charge collection
142  //J.T
143  // **************************************************************************
144 
145 
146  //variables specific for wheel geometry
147  struct WheelGeometry {
153  PhiGapNumber(0),
154  PhiHalfGapNumber(0),
155  HalfWaveNumber(0),
158  SinPhiGap(0),
159  CosPhiGap(0),
160  ZinHalfWave(0),
162  {}
163  };
164 
165 
166  G4double m_ElectrodeFanHalfThickness = 0.0; // used as const after init
167  G4double m_FanEleThicknessOld = 0.0; // used as const after init
168  G4double m_FanEleFoldRadiusOld = 0.0; // used as const after init
169  G4double m_FanAbsThickness = 0.0; // used as const after init
170  G4double m_FanEleThickness = 0.0; // used as const after init
171  G4double m_WaveLength = 0.0; // used as const after init
172 
173  G4double m_zsep12[44]; // used as const after initialization
174  G4double m_ziw[7]; // used as const after initialization
175  G4double m_zsep23[22]; // used as const after initialization
176 
177 
178  inline G4double ElectrodeFanHalfThickness() const { return m_ElectrodeFanHalfThickness; };
179  inline G4double FanEleThicknessOld() const { return m_FanEleThicknessOld; };
180  inline G4double FanEleFoldRadiusOld() const { return m_FanEleFoldRadiusOld; };
181  inline G4double FanAbsThickness() const { return m_FanAbsThickness; };
182  inline G4double FanEleThickness() const { return m_FanEleThickness; };
183  inline G4double WaveLength() const { return m_WaveLength; };
184 
185  //variables specific for Efield calculation
186 
187  G4String m_FieldMapVersion; // used as const after init
188 
189  static const G4double s_GridSize;
190  static const G4double s_AverageGap;
191  static const G4double s_inv_AverageGap;
192 
195  G4double* FieldMap; // [NumberOfRadialLayers][ZYWeight][MaxNofPoints];
196  G4double* MinZofLayer; //these are limits of the
197  G4double* MaxZofLayer; //area where the FieldMap can
198  G4double* MinYofLayer; //be used for interpolation
199  G4double* MaxYofLayer;
200  G4int* NofColofLayer; // a column is parallel to y
201  G4int* NofRowofLayer; // a row is parallel to z
203  G4int* pLayer;
204  };
205 
208  G4double* RadiusOfLayers;
214  G4double GridShift;
215  };
216 
217  Wheel_Efield_Map m_ChCollInner{},m_ChCollOuter{}; // used as const after init
218  Wheel_Efield_Map* m_ChCollWheelType = nullptr; // used as const after init
219 
220  inline const Wheel_Efield_Map* ChCollWheelType() const { return m_ChCollWheelType; };
221 
222  struct FoldArea {
226  ChCollFoldType(0),
228  {}
229  };
230 
232  inline G4int Index(const Fold_Efield_Map* foldmap, G4int i, G4int j, G4int k ) const {
233  return foldmap->pLayer[i]+j*foldmap->NofPointsinLayer[i]+k;
234  };
235  void SetFoldArea(G4double, FoldArea & ) const;
236 
237  std::string m_HVMapVersion; // used only for initialization
238  G4bool m_DB_HV;
239 
240  static const G4double s_AverageHV;
241  static const G4double s_AverageEfield;
242  static const G4double s_AverageCurrent;
243 
244  static const G4double s_LArTemperature_ECC0;//={88.15}; //K
245  static const G4double s_LArTemperature_ECC1;//={88.37};
246  static const G4double s_LArTemperature_ECC5;//={87.97};
247  static const G4double s_LArTemperature_av ;// ={88.16};
248 
249  //Efield in [kv/cm], driftvelo in [mm/microsec], Temperature in [K]
250 
251  inline static G4double IonReco(const G4double Efield) {
252  if(Efield<=0.000001){return 0.;}
253  if(Efield>2.) {return (1./(1. +0.36/Efield));}
254  return (1./(1.04+0.28/Efield));
255  }
256 
257  inline static G4double DriftVelo(const G4double T, const G4double Efield) {
258  if( Efield <= 0.000001) {return 0.;}
259  return ( (-0.01481*(T-90.371)+1.)*
260  ( 0.141*Efield*log(1.+12.4/Efield)+
261  1.627*pow(Efield,0.317) )
262  -0.0075*(T-90.371)
263  );
264  }
265 
266  // functions specific for geometry
267 
268  void SetHalfWave(G4double, WheelGeometry &) const;
269  void GetPhiGap(const G4double *, WheelGeometry &) const;
270  void SetYlimitsofPhigapinWheel(G4double, G4double, const WheelGeometry & wg, G4double * Ylimits) const;
271  G4double YofSurface(G4double,G4double,G4double,const WheelGeometry &) const;
272  inline G4double YofNeutralFibre(G4double alpha,G4double rho, const WheelGeometry & wg) const {
273  return YofSurface(alpha,rho,0., wg);
274  }
275  G4double FoldingAngle(G4double) const;
276  G4double HalfLArGapSize(G4double, G4double) const;
277 
278  // functions specific for charge coll.
279 
280  void IniGeomforFieldMaps(void); // called only at init phase
281  void LoadFieldMaps(const G4String&); // called only at init phase
282  void PrepareFieldMap(Wheel_Efield_Map* ChCollWheelType); // called only at init phase
283  G4double GetCurrent(const G4double *,const G4double *,G4double, G4double Barret_PhiStart) const;
284  void TransformWheeltoFieldMap(const G4double *,G4double *, const WheelGeometry & wg, const FoldArea & fa) const;
285  void SetYlimitsofPhigapinFieldMap(G4int, const WheelGeometry & wg, G4double * Ylimits) const;
286  void TransFromBarrtoWheel(const G4double*, G4double PhiStartOfPhiDiv, G4double*) const;
287  G4double GetWeightfromFieldMap(G4int,G4double,G4double, const FoldArea & fa) const;
288  G4double HalfLArGapSizeOld(G4double) const;
289 
290  G4double m_CHC_Esr; // used as const after init
291  inline G4double CHC_Esr() const { return m_CHC_Esr; };
292 
293 #ifdef DEBUG_CHCL // non thread-safe debug of charge collection
294  static const G4int s_CHCMaxPrint=00; // exists only if debug activated
295  static G4int s_CHCIprint; // exists only if debug activated
296  static G4double s_CHCEbad; // exists only if debug activated
297  static G4double s_CHCEtotal; // exists only if debug activated
298  static G4double s_CHCStotal; // exists only if debug activated
299 #endif
300 
301  private:
302  /* to be developed...
303  std::pair<double, double>DxToFans(Hep3Vector &p);
304  double XDistanceToTheNeutralFibre(const Hep3Vector& P) const;
305  */
306  G4double GetGapSize(const G4ThreeVector &p) const;
307 
308  // public:
309  G4double distance_to_the_nearest_electrode(const G4ThreeVector &p) const;
310 
311  UnsignedIntegerProperty m_solidtypeProp;
313  int m_zside;
316  const LArWheelCalculator * lwc() const { return m_lwc; }
317 
318  std::string m_suffix;
319 
320  // Aug 2007 AMS, lost Aug 2008, restored May 2009
322  const LArWheelCalculator * elc() const { return m_electrode_calculator; }
323 
324  G4double GetCurrent1(const G4ThreeVector &, const G4ThreeVector &, G4double) const;
325 
328 
329  G4int _getIRlayer(G4double rforalpha) const;
330  G4int _getIRlayerA(G4double rforalpha) const;
331 
332  G4double _interpolateCurrentSubStep(G4double rforalpha, G4int gapup, const G4double vmap[],
333  G4double tol, const FoldArea & fa, G4int & gaperr ) const;
334 
335 
336  G4double _interpolateCurrentSubStep1(G4double rforalpha, const G4double vmap[],
337  const G4ThreeVector & Pe, int side_dte, int Pe_fan,
338  const G4ThreeVector & Pa, int side_dta, int Pa_fan,
339  const FoldArea & fa, G4int & gaperr ) const;
340 
341  G4double _AdjustedPhiOfPoint_Barrett(const G4ThreeVector& p, G4double PhiStartOfPhiDiv) const;
342 
343  static inline G4double _normalizeAngle2Pi(G4double a) {
344  return ( a<0.) ?
345  a + CLHEP::twopi
346  :
347  (a >= CLHEP::twopi ? a - CLHEP::twopi: a);
348  }
349 
350  G4double getPhiStartOfPhiDiv(const G4Step* step) const;
351 
352  private:
353  std::unique_ptr<const HVHelper> m_HVHelper;
354  const static G4double s_GA_SubstepSize;
355  G4double DistanceToEtaLine(const G4ThreeVector &p, G4double eta) const;
356 
357  struct geometry_t {
358  G4int zSide; // +- 3 for inner wheel, +- 2 for outer wheel, z determines sign
359  G4int sampling;
360  G4int region;
361  G4double etaScale; // 1/deta
362  G4double etaOffset; // set so that the range of etaBin starts at zero for each compartment
363  G4int maxEta; // the maximum value of etaBin in this compartment
364  G4int gapsPerBin; // number of phi gaps (in LArWheelSolid) for each cell bin.
365  G4int maxPhi; // the maximum value of phiBin in this compartment
366  };
367  static const geometry_t s_geometry[];
368 
370  const G4ThreeVector& p, G4double PhiStartOfPhiDiv,
371  G4double &phi, G4int &compartment, G4int &eta_bin
372  ) const;
373 
374  };
375  } // namespace EC
376 } // namespace LArG4
377 
378 #endif // LArG4_EC_EnergyCalculator_H
LArG4::EC::EnergyCalculator::m_electrode_calculator
LArWheelCalculator * m_electrode_calculator
Definition: EnergyCalculator.h:321
LArG4::EC::EnergyCalculator::s_S3_Etalim
static const G4double s_S3_Etalim[21]
Definition: EnergyCalculator.h:110
LArG4::EC::EnergyCalculator::Wheel_Efield_Map::Fold1
Fold_Efield_Map Fold1
Definition: EnergyCalculator.h:213
LArG4::EC::EnergyCalculator::m_GApower
G4double m_GApower
Definition: EnergyCalculator.h:137
LArG4::EC::EnergyCalculator::DriftVelo
static G4double DriftVelo(const G4double T, const G4double Efield)
Definition: EnergyCalculator.h:257
LArG4::EC::EnergyCalculator::isInTime
virtual G4bool isInTime(G4double hitTime) const override final
Definition: EnergyCalculator.h:67
LArG4::EC::EnergyCalculator::s_LongBarThickness
static const G4double s_LongBarThickness
Definition: EnergyCalculator.h:101
LArG4::EC::EnergyCalculator::m_Process_type
G4bool(EnergyCalculator::* m_Process_type)(const G4Step *, std::vector< LArHitData > &) const
Definition: EnergyCalculator.h:74
LArG4::EC::EnergyCalculator::m_birksLaw
LArG4BirksLaw * m_birksLaw
Definition: EnergyCalculator.h:314
LArG4::EC::EnergyCalculator::s_AverageHV
static const G4double s_AverageHV
Definition: EnergyCalculator.h:240
LArG4::EC::EnergyCalculator::initialize
virtual StatusCode initialize() override final
LArG4::EC::EnergyCalculator::geometry_t
Definition: EnergyCalculator.h:357
LArG4::EC::EnergyCalculator::SolidTypeHandler
void SolidTypeHandler(Gaudi::Details::PropertyBase &)
LArG4::EC::EnergyCalculator::geometry_t::maxEta
G4int maxEta
Definition: EnergyCalculator.h:363
LArG4::EC::EnergyCalculator::SetFoldArea
void SetFoldArea(G4double, FoldArea &) const
LArG4::EC::EnergyCalculator::FanAbsThickness
G4double FanAbsThickness() const
Definition: EnergyCalculator.h:181
LArG4::EC::EnergyCalculator::FanEleFoldRadiusOld
G4double FanEleFoldRadiusOld() const
Definition: EnergyCalculator.h:180
LArG4::EC::EnergyCalculator::FindIdentifier_Barrett
G4bool FindIdentifier_Barrett(const G4Step *, G4double, std::vector< LArHitData > &, G4ThreeVector &, G4ThreeVector &) const
LArG4::EC::EnergyCalculator::s_AverageGap
static const G4double s_AverageGap
Definition: EnergyCalculator.h:190
LArG4::EC::EnergyCalculator::m_DB_HV
G4bool m_DB_HV
Definition: EnergyCalculator.h:238
LArG4::EC::EnergyCalculator::distance_to_the_nearest_electrode
G4double distance_to_the_nearest_electrode(const G4ThreeVector &p) const
LArG4::EC::EnergyCalculator::finalize
virtual StatusCode finalize() override final
python.PerfMonSerializer.p
def p
Definition: PerfMonSerializer.py:743
LArG4::EC::EnergyCalculator::m_zsep23
G4double m_zsep23[22]
Definition: EnergyCalculator.h:175
LArG4::EC::EnergyCalculator::operator=
EnergyCalculator & operator=(const EnergyCalculator &)
phi
Scalar phi() const
phi method
Definition: AmgMatrixBasePlugin.h:64
LArG4::EC::EnergyCalculator::FanEleThicknessOld
G4double FanEleThicknessOld() const
Definition: EnergyCalculator.h:179
LArG4::EC::EnergyCalculator::Fold_Efield_Map::FieldMapPrepared
G4bool FieldMapPrepared
Definition: EnergyCalculator.h:194
LArG4::EC::EnergyCalculator::Process_Barrett
G4bool Process_Barrett(const G4Step *, std::vector< LArHitData > &) const
LArG4::EC::EnergyCalculator::geometry_t::sampling
G4int sampling
Definition: EnergyCalculator.h:359
LArG4::EC::EnergyCalculator::m_zlim
G4double m_zlim[4]
Definition: EnergyCalculator.h:119
LArG4::EC::EnergyCalculator::GetVolumeIndex
G4bool GetVolumeIndex(const G4Step *, G4int &, G4int &) const
LArG4::EC::EnergyCalculator::m_ChCollInner
Wheel_Efield_Map m_ChCollInner
Definition: EnergyCalculator.h:217
LArG4::EC::EnergyCalculator::HalfLArGapSizeOld
G4double HalfLArGapSizeOld(G4double) const
LArG4::EC::EnergyCalculator::LoadFieldMaps
void LoadFieldMaps(const G4String &)
LArG4::EC::EnergyCalculator::_getIRlayer
G4int _getIRlayer(G4double rforalpha) const
eta
Scalar eta() const
pseudorapidity method
Definition: AmgMatrixBasePlugin.h:79
LArG4::EC::EnergyCalculator::m_zside
int m_zside
Definition: EnergyCalculator.h:313
LArG4::EC::EnergyCalculator::FanEleThickness
G4double FanEleThickness() const
Definition: EnergyCalculator.h:182
LArG4::EC::EnergyCalculator::Fold_Efield_Map::NofPointsinLayer
G4int * NofPointsinLayer
Definition: EnergyCalculator.h:202
LArG4::EC::EnergyCalculator::geometry_t::zSide
G4int zSide
Definition: EnergyCalculator.h:358
LArG4::EC::EnergyCalculator::Wheel_Efield_Map::Fold
Fold_Efield_Map * Fold
Definition: EnergyCalculator.h:211
conifer::pow
constexpr int pow(int x)
Definition: conifer.h:20
LArG4::EC::EnergyCalculator::GapAdjustment_s
G4double GapAdjustment_s(G4double, const G4ThreeVector &, const G4ThreeVector &, G4double) const
LArG4::EC::EnergyCalculator::GetHV_Value
G4double GetHV_Value(const G4ThreeVector &p, G4double PhiStartOfPhiDiv) const
LArG4::EC::EnergyCalculator::YofSurface
G4double YofSurface(G4double, G4double, G4double, const WheelGeometry &) const
LArG4::EC::EnergyCalculator::Wheel_Efield_Map::RadiusOfLayers
G4double * RadiusOfLayers
Definition: EnergyCalculator.h:208
LArG4::EC::EnergyCalculator::m_ElectrodeFanHalfThickness
G4double m_ElectrodeFanHalfThickness
Definition: EnergyCalculator.h:166
LArG4::EC::EnergyCalculator::m_ChCollOuter
Wheel_Efield_Map m_ChCollOuter
Definition: EnergyCalculator.h:217
LArG4::EC::EnergyCalculator::dummy_correction_method
G4double dummy_correction_method(G4double e, const G4ThreeVector &, const G4ThreeVector &, G4double) const
Definition: EnergyCalculator.h:125
LArG4::EC::EnergyCalculator::s_Zmeas_outer
static const G4double s_Zmeas_outer[2]
Definition: EnergyCalculator.h:112
LArG4::EC::EnergyCalculator::m_WaveLength
G4double m_WaveLength
Definition: EnergyCalculator.h:171
LArG4::EC::EnergyCalculator::WheelGeometry::SignofSlopeofHalfWave
G4int SignofSlopeofHalfWave
Definition: EnergyCalculator.h:149
LArG4::EC::EnergyCalculator::Wheel_Efield_Map::HalfLArGapSizeOfLayers
G4double * HalfLArGapSizeOfLayers
Definition: EnergyCalculator.h:210
LArG4::EC::EnergyCalculator::GetCurrent
G4double GetCurrent(const G4double *, const G4double *, G4double, G4double Barret_PhiStart) const
LArG4::EC::EnergyCalculator::distance_to_the_nearest_electrode_Default
G4double distance_to_the_nearest_electrode_Default(const G4ThreeVector &p, G4double) const
Definition: EnergyCalculator.h:92
const
bool const RAWDATA *ch2 const
Definition: LArRodBlockPhysicsV0.cxx:562
LArG4::EC::EnergyCalculator::WheelGeometry::HalfEleThickness
G4double HalfEleThickness
Definition: EnergyCalculator.h:151
LArG4::EC::EnergyCalculator::GetGapSize
G4double GetGapSize(const G4ThreeVector &p) const
LArG4::EC::EnergyCalculator::CalculateChargeCollection
G4double CalculateChargeCollection(G4double, const G4ThreeVector &, const G4ThreeVector &, G4double) const
LArG4
Definition: LArWheelCalculatorEnums.h:8
LArG4::EC::EnergyCalculator::s_Rmeas_outer
static const G4double s_Rmeas_outer[50]
Definition: EnergyCalculator.h:111
LArG4::EC::EnergyCalculator::EnergyCalculator
EnergyCalculator(const std::string &name, ISvcLocator *pSvcLocator)
LArG4::EC::EnergyCalculator::m_ChCollWheelType
Wheel_Efield_Map * m_ChCollWheelType
Definition: EnergyCalculator.h:218
LArG4::EC::EnergyCalculator::s_ZmaxOfSignal
static const G4double s_ZmaxOfSignal
Definition: EnergyCalculator.h:108
LArG4::EC::EnergyCalculator::s_LArTemperature_av
static const G4double s_LArTemperature_av
Definition: EnergyCalculator.h:247
LArG4::EC::EnergyCalculator::FoldArea
Definition: EnergyCalculator.h:222
LArG4::EC::EnergyCalculator
Definition: EnergyCalculator.h:50
HVHelper.h
LArG4::EC::EnergyCalculator::geometry_t::maxPhi
G4int maxPhi
Definition: EnergyCalculator.h:365
LArG4::EC::EnergyCalculator::_interpolateCurrentSubStep1
G4double _interpolateCurrentSubStep1(G4double rforalpha, const G4double vmap[], const G4ThreeVector &Pe, int side_dte, int Pe_fan, const G4ThreeVector &Pa, int side_dta, int Pa_fan, const FoldArea &fa, G4int &gaperr) const
LArG4::EC::EnergyCalculator::Wheel_Efield_Map::FieldMapPrepared
G4bool FieldMapPrepared
Definition: EnergyCalculator.h:206
LArG4::EC::EnergyCalculator::ChCollWheelType
const Wheel_Efield_Map * ChCollWheelType() const
Definition: EnergyCalculator.h:220
LArG4::EC::EnergyCalculator::m_rlim
G4double m_rlim[50]
Definition: EnergyCalculator.h:118
LArG4::EC::EnergyCalculator::m_lwc
LArWheelCalculator * m_lwc
Definition: EnergyCalculator.h:315
LArG4::EC::EnergyCalculator::m_zsep12
G4double m_zsep12[44]
Definition: EnergyCalculator.h:173
LArG4::EC::EnergyCalculator::GapAdjustment_old
G4double GapAdjustment_old(G4double, const G4ThreeVector &, const G4ThreeVector &, G4double) const
LArG4::EC::EnergyCalculator::m_S3_Rlim
G4double m_S3_Rlim[21]
Definition: EnergyCalculator.h:117
LArG4::EC::EnergyCalculator::elc
const LArWheelCalculator * elc() const
Definition: EnergyCalculator.h:322
LArG4::EC::EnergyCalculator::SetYlimitsofPhigapinWheel
void SetYlimitsofPhigapinWheel(G4double, G4double, const WheelGeometry &wg, G4double *Ylimits) const
LArG4::EC::EnergyCalculator::GetBarrettePCE
G4bool GetBarrettePCE(const G4ThreeVector &p, G4double PhiStartOfPhiDiv, G4double &phi, G4int &compartment, G4int &eta_bin) const
LArG4::EC::EnergyCalculator::Process
virtual G4bool Process(const G4Step *, std::vector< LArHitData > &) const override final
LArG4::EC::EnergyCalculator::CHC_Esr
G4double CHC_Esr() const
Definition: EnergyCalculator.h:291
LArG4::EC::EnergyCalculator::s_DistOfStartofCuFromBack
static const G4double s_DistOfStartofCuFromBack
Definition: EnergyCalculator.h:107
LArG4::EC::EnergyCalculator::Fold_Efield_Map::MaxYofLayer
G4double * MaxYofLayer
Definition: EnergyCalculator.h:199
LArG4::EC::EnergyCalculator::m_FanEleThickness
G4double m_FanEleThickness
Definition: EnergyCalculator.h:170
LArG4::EC::EnergyCalculator::YofNeutralFibre
G4double YofNeutralFibre(G4double alpha, G4double rho, const WheelGeometry &wg) const
Definition: EnergyCalculator.h:272
LArG4::EC::EnergyCalculator::_getIRlayerA
G4int _getIRlayerA(G4double rforalpha) const
LArG4::EC::EnergyCalculator::CorrectionTypeHandler
void CorrectionTypeHandler(Gaudi::Details::PropertyBase &)
LArG4::EC::EnergyCalculator::m_FanAbsThickness
G4double m_FanAbsThickness
Definition: EnergyCalculator.h:169
LArG4::EC::EnergyCalculator::GetCompartment_Barrett
G4bool GetCompartment_Barrett(const G4ThreeVector &, G4double, G4double, G4double, G4int &, G4int &) const
LArG4::EC::EnergyCalculator::s_StripWidth
static const G4double s_StripWidth
Definition: EnergyCalculator.h:103
lumiFormat.i
int i
Definition: lumiFormat.py:92
LArG4::EC::EnergyCalculator::GetGapSize_Default
G4double GetGapSize_Default(const G4ThreeVector &p) const
Definition: EnergyCalculator.h:87
LArG4::EC::EnergyCalculator::s_inv_AverageGap
static const G4double s_inv_AverageGap
Definition: EnergyCalculator.h:191
LArG4::EC::EnergyCalculator::m_FanEleFoldRadiusOld
G4double m_FanEleFoldRadiusOld
Definition: EnergyCalculator.h:168
LArG4::EC::EnergyCalculator::TransFromBarrtoWheel
void TransFromBarrtoWheel(const G4double *, G4double PhiStartOfPhiDiv, G4double *) const
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
LArG4::EC::EnergyCalculator::Fold_Efield_Map::pLayer
G4int * pLayer
Definition: EnergyCalculator.h:203
LArG4::EC::EnergyCalculator::s_GA_SubstepSize
static const G4double s_GA_SubstepSize
Definition: EnergyCalculator.h:354
LArG4::EC::EnergyCalculator::WheelGeometry::ZinHalfWave
G4double ZinHalfWave
Definition: EnergyCalculator.h:150
LArG4::EC::EnergyCalculator::CalculateChargeCollection1
G4double CalculateChargeCollection1(G4double, const G4ThreeVector &, const G4ThreeVector &, G4double) const
LArG4::EC::EnergyCalculator::m_supportCalculator
ServiceHandle< ILArCalibCalculatorSvc > m_supportCalculator
Definition: EnergyCalculator.h:97
LArG4::EC::EnergyCalculator::Fold_Efield_Map::NofColofLayer
G4int * NofColofLayer
Definition: EnergyCalculator.h:200
LArG4::EC::EnergyCalculator::TransformWheeltoFieldMap
void TransformWheeltoFieldMap(const G4double *, G4double *, const WheelGeometry &wg, const FoldArea &fa) const
LArG4::EC::EnergyCalculator::OOTcut
virtual G4float OOTcut() const override final
Definition: EnergyCalculator.h:63
LArG4::EC::EnergyCalculator::m_suffix
std::string m_suffix
Definition: EnergyCalculator.h:318
LArG4::EC::EnergyCalculator::WaveLength
G4double WaveLength() const
Definition: EnergyCalculator.h:183
LArG4::EC::EnergyCalculator::s_AverageCurrent
static const G4double s_AverageCurrent
Definition: EnergyCalculator.h:242
LArG4::EC::EnergyCalculator::IniGeomforFieldMaps
void IniGeomforFieldMaps(void)
LArG4::EC::EnergyCalculator::_AdjustedPhiOfPoint_Barrett
G4double _AdjustedPhiOfPoint_Barrett(const G4ThreeVector &p, G4double PhiStartOfPhiDiv) const
LArG4::EC::EnergyCalculator::WheelGeometry::SinPhiGap
G4double SinPhiGap
Definition: EnergyCalculator.h:150
LArG4::EC::EnergyCalculator::Wheel_Efield_Map::NumberOfRadialLayer
G4int NumberOfRadialLayer
Definition: EnergyCalculator.h:207
LArG4Identifier.h
LArWheelCalculator
Definition: LArWheelCalculator.h:58
LArG4::EC::EnergyCalculator::FindIdentifier_Default
G4bool FindIdentifier_Default(const G4Step *, std::vector< LArHitData > &, G4ThreeVector &, G4ThreeVector &) const
LArG4::EC::EnergyCalculator::Fold_Efield_Map::MaxZofLayer
G4double * MaxZofLayer
Definition: EnergyCalculator.h:197
LArG4::EC::EnergyCalculator::getPhiStartOfPhiDiv
G4double getPhiStartOfPhiDiv(const G4Step *step) const
LArCalculatorSvcImp
Definition: LArCalculatorSvcImp.h:11
LArG4::EC::EnergyCalculator::m_corrProp
UnsignedIntegerProperty m_corrProp
Definition: EnergyCalculator.h:121
LArG4::EC::EnergyCalculator::Index
G4int Index(const Fold_Efield_Map *foldmap, G4int i, G4int j, G4int k) const
Definition: EnergyCalculator.h:232
LArG4::EC::EnergyCalculator::WheelGeometry::PhiHalfGapNumber
G4int PhiHalfGapNumber
Definition: EnergyCalculator.h:148
LArG4::EC::EnergyCalculator::SetYlimitsofPhigapinFieldMap
void SetYlimitsofPhigapinFieldMap(G4int, const WheelGeometry &wg, G4double *Ylimits) const
LArG4::EC::EnergyCalculator::m_GetGapSize_type
G4double(EnergyCalculator::* m_GetGapSize_type)(const G4ThreeVector &p) const
Definition: EnergyCalculator.h:75
LArG4::EC::EnergyCalculator::GetPhiGap
void GetPhiGap(const G4double *, WheelGeometry &) const
LArCalculatorSvcImp.h
LArG4::EC::EnergyCalculator::FoldArea::ChCollFoldType
const Fold_Efield_Map * ChCollFoldType
Definition: EnergyCalculator.h:223
LArG4::EC::EnergyCalculator::s_DistOfEndofCuFromBack
static const G4double s_DistOfEndofCuFromBack
Definition: EnergyCalculator.h:106
doL1CaloHVCorrections.eta_bin
eta_bin
Definition: doL1CaloHVCorrections.py:368
LArG4::EC::EnergyCalculator::GApower
G4double GApower() const
Definition: EnergyCalculator.h:138
LArG4::EC::EnergyCalculator::Wheel_Efield_Map::FoldinAngleOfLayers
G4double * FoldinAngleOfLayers
Definition: EnergyCalculator.h:209
LArG4::EC::EnergyCalculator::s_KapGap
static const G4double s_KapGap
Definition: EnergyCalculator.h:104
twopi
constexpr double twopi
Definition: VertexPointEstimator.cxx:16
LArG4::EC::EnergyCalculator::FindDMIdentifier_Barrett
G4bool FindDMIdentifier_Barrett(const G4Step *step, std::vector< LArHitData > &) const
LArG4::EC::EnergyCalculator::lwc
const LArWheelCalculator * lwc() const
Definition: EnergyCalculator.h:316
LArG4::EC::EnergyCalculator::m_FieldMapVersion
G4String m_FieldMapVersion
Definition: EnergyCalculator.h:183
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
LArG4::EC::EnergyCalculator::IonReco
static G4double IonReco(const G4double Efield)
Definition: EnergyCalculator.h:251
LArG4::EC::EnergyCalculator::m_RefzDist
G4double m_RefzDist
Definition: EnergyCalculator.h:113
LArG4::EC::EnergyCalculator::m_ecorr_method
G4double(EnergyCalculator::* m_ecorr_method)(G4double, const G4ThreeVector &, const G4ThreeVector &, G4double) const
Definition: EnergyCalculator.h:124
LArG4::EC::EnergyCalculator::Fold_Efield_Map::FieldMap
G4double * FieldMap
Definition: EnergyCalculator.h:195
LArG4::EC::EnergyCalculator::s_LArTemperature_ECC0
static const G4double s_LArTemperature_ECC0
Definition: EnergyCalculator.h:244
LArG4::EC::EnergyCalculator::geometry_t::region
G4int region
Definition: EnergyCalculator.h:360
LArG4::EC::EnergyCalculator::m_solidtype
LArG4::LArWheelCalculator_t m_solidtype
Definition: EnergyCalculator.h:312
LArG4::EC::EnergyCalculator::s_ColdCorrection
static const G4double s_ColdCorrection
Definition: EnergyCalculator.h:102
LArG4::EC::EnergyCalculator::PrepareFieldMap
void PrepareFieldMap(Wheel_Efield_Map *ChCollWheelType)
LArG4::EC::EnergyCalculator::GetWeightfromFieldMap
G4double GetWeightfromFieldMap(G4int, G4double, G4double, const FoldArea &fa) const
LArG4::EC::EnergyCalculator::GapAdjustment
G4double GapAdjustment(G4double, const G4ThreeVector &, const G4ThreeVector &, G4double) const
LArG4::EC::EnergyCalculator::WheelGeometry::CosPhiGap
G4double CosPhiGap
Definition: EnergyCalculator.h:150
LArG4::EC::EnergyCalculator::geometry_t::etaScale
G4double etaScale
Definition: EnergyCalculator.h:361
LArG4::EC::EnergyCalculator::Fold_Efield_Map
Definition: EnergyCalculator.h:193
LArG4::EC::EnergyCalculator::DistanceToEtaLine
G4double DistanceToEtaLine(const G4ThreeVector &p, G4double eta) const
LArG4::EC::EnergyCalculator::m_HVHelper
std::unique_ptr< const HVHelper > m_HVHelper
Definition: EnergyCalculator.h:353
ILArCalibCalculatorSvc
Definition: ILArCalibCalculatorSvc.h:23
LArG4::EC::EnergyCalculator::GetGapSize_Barrett
G4double GetGapSize_Barrett(const G4ThreeVector &p) const
LArG4::EC::EnergyCalculator::s_geometry
static const geometry_t s_geometry[]
Definition: EnergyCalculator.h:367
LArG4::EC::EnergyCalculator::s_GridSize
static const G4double s_GridSize
Definition: EnergyCalculator.h:189
LArG4BirksLaw
Definition: LArG4BirksLaw.h:8
DiTauMassTools::MaxHistStrategyV2::e
e
Definition: PhysicsAnalysis/TauID/DiTauMassTools/DiTauMassTools/HelperFunctions.h:26
a
TList * a
Definition: liststreamerinfos.cxx:10
LArG4::EC::EnergyCalculator::_interpolateCurrentSubStep
G4double _interpolateCurrentSubStep(G4double rforalpha, G4int gapup, const G4double vmap[], G4double tol, const FoldArea &fa, G4int &gaperr) const
LArG4::EC::EnergyCalculator::SetConst_OuterBarrett
void SetConst_OuterBarrett(void)
LArG4::EC::EnergyCalculator::_normalizeAngle2Pi
static G4double _normalizeAngle2Pi(G4double a)
Definition: EnergyCalculator.h:343
LArG4::EC::EnergyCalculator::geometry_t::gapsPerBin
G4int gapsPerBin
Definition: EnergyCalculator.h:364
LArG4::EC::EnergyCalculator::FoldingAngle
G4double FoldingAngle(G4double) const
LArG4::EC::EnergyCalculator::GetCurrent1
G4double GetCurrent1(const G4ThreeVector &, const G4ThreeVector &, G4double) const
LArG4::EC::EnergyCalculator::s_LArTemperature_ECC5
static const G4double s_LArTemperature_ECC5
Definition: EnergyCalculator.h:246
LArCalculatorSvcImp::m_OOTcut
double m_OOTcut
Definition: LArCalculatorSvcImp.h:28
LArG4::EC::EnergyCalculator::ElectrodeFanHalfThickness
G4double ElectrodeFanHalfThickness() const
Definition: EnergyCalculator.h:178
LArG4::EC::EnergyCalculator::m_correction_type
EnergyCorrection_t m_correction_type
Definition: EnergyCalculator.h:122
LArG4::EC::EnergyCalculator::Fold_Efield_Map::MinZofLayer
G4double * MinZofLayer
Definition: EnergyCalculator.h:196
LArG4::EC::EnergyCalculator::FoldArea::FoldArea
FoldArea()
Definition: EnergyCalculator.h:225
python.CaloCondTools.log
log
Definition: CaloCondTools.py:20
LArG4::EC::EnergyCalculator::distance_to_the_nearest_electrode_Barrett
G4double distance_to_the_nearest_electrode_Barrett(const G4ThreeVector &p, G4double Barret_PhiStart) const
LArG4::EC::EnergyCalculator::HalfLArGapSize
G4double HalfLArGapSize(G4double, G4double) const
LArG4::EC::EnergyCalculator::s_LArTemperature_ECC1
static const G4double s_LArTemperature_ECC1
Definition: EnergyCalculator.h:245
LArG4::EC::EnergyCalculator::s_AverageEfield
static const G4double s_AverageEfield
Definition: EnergyCalculator.h:241
LArCellBinning.step
step
Definition: LArCellBinning.py:158
LArG4::EC::EnergyCalculator::s_EdgeWidth
static const G4double s_EdgeWidth
Definition: EnergyCalculator.h:105
LArG4::EC::EnergyCalculator::WheelGeometry::WheelGeometry
WheelGeometry()
Definition: EnergyCalculator.h:152
LArG4::EC::EnergyCalculator::FoldArea::PointFoldMapArea
G4int PointFoldMapArea
Definition: EnergyCalculator.h:224
LArG4::EC::EnergyCalculator::m_distance_to_the_nearest_electrode_type
G4double(EnergyCalculator::* m_distance_to_the_nearest_electrode_type)(const G4ThreeVector &p, G4double) const
Definition: EnergyCalculator.h:76
LArG4::EC::EnergyCalculator::GapAdjustment_E
G4double GapAdjustment_E(G4double, const G4ThreeVector &, const G4ThreeVector &, G4double) const
LArG4::EC::EnergyCalculator::EnergyCalculator
EnergyCalculator(const EnergyCalculator &)
LArG4::EnergyCorrection_t
EnergyCorrection_t
Definition: LArG4EnumDefs.h:12
LArG4::EC::EnergyCalculator::WheelGeometry
Definition: EnergyCalculator.h:147
LArG4::EC::EnergyCalculator::Wheel_Efield_Map
Definition: EnergyCalculator.h:206
LArG4::EC::EnergyCalculator::WheelGeometry::HalfWaveNumber
G4int HalfWaveNumber
Definition: EnergyCalculator.h:149
hitTime
float hitTime(const AFP_SIDSimHit &hit)
Definition: AFP_SIDSimHit.h:39
TRT_PAI_gasdata::EC
const float EC[NC]
Energy levels for Carbon.
Definition: TRT_PAI_gasdata.h:241
LArG4::EC::EnergyCalculator::SetHalfWave
void SetHalfWave(G4double, WheelGeometry &) const
LArG4::EC::EnergyCalculator::CreateArrays
void CreateArrays(Wheel_Efield_Map &, G4int)
LArG4::EC::EnergyCalculator::m_FanEleThicknessOld
G4double m_FanEleThicknessOld
Definition: EnergyCalculator.h:167
LArG4::EC::EnergyCalculator::Wheel_Efield_Map::GridShift
G4double GridShift
Definition: EnergyCalculator.h:214
LArG4::EC::EnergyCalculator::Fold_Efield_Map::MinYofLayer
G4double * MinYofLayer
Definition: EnergyCalculator.h:198
LArG4::EC::EnergyCalculator::Process_Default
G4bool Process_Default(const G4Step *, std::vector< LArHitData > &) const
LArG4::EC::EnergyCalculator::Wheel_Efield_Map::Fold0
Fold_Efield_Map Fold0
Definition: EnergyCalculator.h:212
LArG4::EC::EnergyCalculator::Fold_Efield_Map::NofRowofLayer
G4int * NofRowofLayer
Definition: EnergyCalculator.h:201
LArG4::EC::EnergyCalculator::m_CHC_Esr
G4double m_CHC_Esr
Definition: EnergyCalculator.h:290
LArG4::EC::EnergyCalculator::m_ziw
G4double m_ziw[7]
Definition: EnergyCalculator.h:174
LArG4::EC::EnergyCalculator::m_solidtypeProp
UnsignedIntegerProperty m_solidtypeProp
Definition: EnergyCalculator.h:311
LArG4EnumDefs.h
fitman.rho
rho
Definition: fitman.py:532
LArWheelCalculatorEnums.h
LArG4::EC::EnergyCalculator::m_HVMapVersion
std::string m_HVMapVersion
Definition: EnergyCalculator.h:237
LArG4::LArWheelCalculator_t
LArWheelCalculator_t
Definition: LArWheelCalculatorEnums.h:10
LArG4::EC::EnergyCalculator::geometry_t::etaOffset
G4double etaOffset
Definition: EnergyCalculator.h:362
fitman.k
k
Definition: fitman.py:528
LArG4::EC::EnergyCalculator::WheelGeometry::PhiGapNumber
G4int PhiGapNumber
Definition: EnergyCalculator.h:148
ServiceHandle< ILArCalibCalculatorSvc >
LArG4::EC::EnergyCalculator::GetPhiGap_Barrett
G4int GetPhiGap_Barrett(const G4ThreeVector &p, G4double PhiStartOfPhiDiv) const
LArG4::EC::EnergyCalculator::WheelGeometry::SignofZinHalfWave
G4int SignofZinHalfWave
Definition: EnergyCalculator.h:149
LArWheelCalculator.h
LArG4::EC::EnergyCalculator::GapAdjustment__sE
G4double GapAdjustment__sE(G4double, const G4ThreeVector &, const G4ThreeVector &, G4double) const