ATLAS Offline Software
EnergyCalculator.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2024 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 
35 
38 
41 
42 #include "G4ThreeVector.hh"
43 #include "HVHelper.h"
44 #include "globals.hh"
45 
47 class LArG4BirksLaw;
48 
49 namespace LArG4 {
50 
51  namespace EC {
52 
54  {
55  public:
56 
57  EnergyCalculator(const std::string& name, ISvcLocator *pSvcLocator);
58  // Update handlers
59  void CorrectionTypeHandler(Gaudi::Details::PropertyBase&);
60  void SolidTypeHandler(Gaudi::Details::PropertyBase&);
61 
62  virtual StatusCode initialize() override final;
63  virtual StatusCode finalize() override final;
64 
66  // The interface for LArVCalculator.
67  virtual G4float OOTcut() const override final { return m_OOTcut; }
68  virtual G4bool Process(const G4Step*, std::vector<LArHitData>&) const override final;
69 
70  // Check if the current hitTime is in-time
71  virtual G4bool isInTime(G4double hitTime) const override final
72  {
73  return !(hitTime > m_OOTcut); //FIXME should we be checking the absolute value of hitTime here?
74  }
75 
76 
77  private:
78  G4bool (EnergyCalculator::*m_Process_type) (const G4Step*, std::vector<LArHitData>&) const{};
79  G4double (EnergyCalculator::*m_GetGapSize_type) (const G4ThreeVector &p) const{};
80  G4double (EnergyCalculator::*m_distance_to_the_nearest_electrode_type) (const G4ThreeVector &p, G4double /*Barret_PhiStart*/) const{};
81 
82  G4bool Process_Default(const G4Step*, std::vector<LArHitData>&) const;
83  G4bool Process_Barrett(const G4Step*, std::vector<LArHitData>&) const;
84  G4bool FindIdentifier_Default(const G4Step *, std::vector<LArHitData>&, G4ThreeVector &, G4ThreeVector &) const;
85  G4bool FindIdentifier_Barrett(const G4Step *, G4double, std::vector<LArHitData>&, G4ThreeVector &, G4ThreeVector &) const;
86  G4bool FindDMIdentifier_Barrett(const G4Step* step, std::vector<LArHitData>&) const;
87  G4bool GetCompartment_Barrett(const G4ThreeVector&,G4double,G4double,G4double,
88  G4int &, G4int &) const;
89 
90  G4double GetHV_Value(const G4ThreeVector& p, G4double PhiStartOfPhiDiv) const;
91  G4double GetGapSize_Default(const G4ThreeVector &p) const {
92  return GetGapSize(p);
93  }
94  G4double GetGapSize_Barrett(const G4ThreeVector &p) const;
95  G4int GetPhiGap_Barrett(const G4ThreeVector &p, G4double PhiStartOfPhiDiv) const;
96  G4double distance_to_the_nearest_electrode_Default(const G4ThreeVector &p, G4double /*Barret_PhiStart*/) const {
98  }
99  G4double distance_to_the_nearest_electrode_Barrett(const G4ThreeVector &p, G4double Barret_PhiStart) const;
100 
101  ServiceHandle<ILArCalibCalculatorSvc> m_supportCalculator{this, "SupportCalculator", "EMECSupportCalibrationCalculator"};
102 
103  void SetConst_OuterBarrett(void); // used only for initialization
104  G4bool GetVolumeIndex(const G4Step *, G4int &, G4int &) const;
105  static const G4double s_LongBarThickness;// = 20. *mm;
106  static const G4double s_ColdCorrection;// =1.0036256;
107  static const G4double s_StripWidth;// =3.*mm/ColdCorrection;
108  static const G4double s_KapGap;// =1.*mm/ColdCorrection;
109  static const G4double s_EdgeWidth;// =1.*mm;
110  static const G4double s_DistOfEndofCuFromBack;// =22.77*mm/ColdCorrection;
111  static const G4double s_DistOfStartofCuFromBack;//=31.*mm; // frontface of the barrette
112  static const G4double s_ZmaxOfSignal;// DistOfStartofCuFromBack - DistOfEndofCuFromBack + EdgeWidth;
113 
114  static const G4double s_S3_Etalim[21];
115  static const G4double s_Rmeas_outer[50];
116  static const G4double s_Zmeas_outer[2];
117  G4double m_RefzDist = 0.0; // = dElecFocaltoWRP+dWRPtoFrontFace+WheelThickness+ // used as const after
118  // +dWRPtoFrontFace+ LongBarThickness // initialization
119  // -DistOfEndofCuFromBack
120 
121  G4double m_S3_Rlim[21]; // used as const after init
122  G4double m_rlim[50]; // used as const after init
123  G4double m_zlim[4]; // used as const after init
124 
125  UnsignedIntegerProperty m_corrProp{8};
127 
128  G4double (EnergyCalculator::*m_ecorr_method) (G4double, const G4ThreeVector&, const G4ThreeVector&, G4double /*Barret_PhiStart*/) const{};
129  G4double dummy_correction_method(G4double e, const G4ThreeVector&, const G4ThreeVector&,
130  G4double /*Barret_PhiStart*/) const {
131  return e;
132  }
133  G4double GapAdjustment_old(G4double, const G4ThreeVector&, const G4ThreeVector&, G4double /*Barret_PhiStart*/) const;
134  G4double GapAdjustment (G4double, const G4ThreeVector&, const G4ThreeVector&, G4double /*Barret_PhiStart*/) const;
135  G4double GapAdjustment_E (G4double, const G4ThreeVector&, const G4ThreeVector&, G4double /*Barret_PhiStart*/) const;
136  G4double GapAdjustment_s (G4double, const G4ThreeVector&, const G4ThreeVector&, G4double /*Barret_PhiStart*/) const;
137  G4double GapAdjustment__sE (G4double, const G4ThreeVector&, const G4ThreeVector&, G4double /*Barret_PhiStart*/) const;
138  G4double CalculateChargeCollection(G4double, const G4ThreeVector&, const G4ThreeVector&, G4double /*Barret_PhiStart*/) const;
139  G4double CalculateChargeCollection1(G4double, const G4ThreeVector&, const G4ThreeVector&, G4double /*Barret_PhiStart*/) const;
140 
141  // get power of gap in signal calculation
142  DoubleProperty m_GApower{this, "EMECGapPower", 1.4}; // used as const after init
143  inline G4double GApower() const { return m_GApower; };
144 
145  // **************************************************************************
146  //Declaration of variables,functions for charge collection
147  //J.T
148  // **************************************************************************
149 
150 
151  //variables specific for wheel geometry
152  struct WheelGeometry {
158  PhiGapNumber(0),
159  PhiHalfGapNumber(0),
160  HalfWaveNumber(0),
163  SinPhiGap(0),
164  CosPhiGap(0),
165  ZinHalfWave(0),
167  {}
168  };
169 
170 
171  G4double m_ElectrodeFanHalfThickness = 0.0; // used as const after init
172  G4double m_FanEleThicknessOld = 0.0; // used as const after init
173  G4double m_FanEleFoldRadiusOld = 0.0; // used as const after init
174  G4double m_FanAbsThickness = 0.0; // used as const after init
175  G4double m_FanEleThickness = 0.0; // used as const after init
176  G4double m_WaveLength = 0.0; // used as const after init
177 
178  G4double m_zsep12[44]; // used as const after initialization
179  G4double m_ziw[7]; // used as const after initialization
180  G4double m_zsep23[22]; // used as const after initialization
181 
182 
183  inline G4double ElectrodeFanHalfThickness() const { return m_ElectrodeFanHalfThickness; };
184  inline G4double FanEleThicknessOld() const { return m_FanEleThicknessOld; };
185  inline G4double FanEleFoldRadiusOld() const { return m_FanEleFoldRadiusOld; };
186  inline G4double FanAbsThickness() const { return m_FanAbsThickness; };
187  inline G4double FanEleThickness() const { return m_FanEleThickness; };
188  inline G4double WaveLength() const { return m_WaveLength; };
189 
190  //variables specific for Efield calculation
191 
192  G4String m_FieldMapVersion; // used as const after init
193 
194  static const G4double s_GridSize;
195  static const G4double s_AverageGap;
196  static const G4double s_inv_AverageGap;
197 
200  G4double* FieldMap; // [NumberOfRadialLayers][ZYWeight][MaxNofPoints];
201  G4double* MinZofLayer; //these are limits of the
202  G4double* MaxZofLayer; //area where the FieldMap can
203  G4double* MinYofLayer; //be used for interpolation
204  G4double* MaxYofLayer;
205  G4int* NofColofLayer; // a column is parallel to y
206  G4int* NofRowofLayer; // a row is parallel to z
208  G4int* pLayer;
209  };
210 
213  G4double* RadiusOfLayers;
219  G4double GridShift;
220  };
221 
222  Wheel_Efield_Map m_ChCollInner{},m_ChCollOuter{}; // used as const after init
223  Wheel_Efield_Map* m_ChCollWheelType = nullptr; // used as const after init
224 
225  inline const Wheel_Efield_Map* ChCollWheelType() const { return m_ChCollWheelType; };
226 
227  struct FoldArea {
231  ChCollFoldType(0),
233  {}
234  };
235 
237  inline G4int Index(const Fold_Efield_Map* foldmap, G4int i, G4int j, G4int k ) const {
238  return foldmap->pLayer[i]+j*foldmap->NofPointsinLayer[i]+k;
239  };
240  void SetFoldArea(G4double, FoldArea & ) const;
241 
242  StringProperty m_HVMapVersion{this, "EMECHVMap", "v02"}; // used only for initialization
243  BooleanProperty m_DB_HV{this, "EMECHVEnable", false};
244 
245  static const G4double s_AverageHV;
246  static const G4double s_AverageEfield;
247  static const G4double s_AverageCurrent;
248 
249  static const G4double s_LArTemperature_ECC0;//={88.15}; //K
250  static const G4double s_LArTemperature_ECC1;//={88.37};
251  static const G4double s_LArTemperature_ECC5;//={87.97};
252  static const G4double s_LArTemperature_av ;// ={88.16};
253 
254  //Efield in [kv/cm], driftvelo in [mm/microsec], Temperature in [K]
255 
256  inline static G4double IonReco(const G4double Efield) {
257  if(Efield<=0.000001){return 0.;}
258  if(Efield>2.) {return (1./(1. +0.36/Efield));}
259  return (1./(1.04+0.28/Efield));
260  }
261 
262  inline static G4double DriftVelo(const G4double T, const G4double Efield) {
263  if( Efield <= 0.000001) {return 0.;}
264  return ( (-0.01481*(T-90.371)+1.)*
265  ( 0.141*Efield*log(1.+12.4/Efield)+
266  1.627*pow(Efield,0.317) )
267  -0.0075*(T-90.371)
268  );
269  }
270 
271  // functions specific for geometry
272 
273  void SetHalfWave(G4double, WheelGeometry &) const;
274  void GetPhiGap(const G4double *, WheelGeometry &) const;
275  void SetYlimitsofPhigapinWheel(G4double, G4double, const WheelGeometry & wg, G4double * Ylimits) const;
276  G4double YofSurface(G4double,G4double,G4double,const WheelGeometry &) const;
277  inline G4double YofNeutralFibre(G4double alpha,G4double rho, const WheelGeometry & wg) const {
278  return YofSurface(alpha,rho,0., wg);
279  }
280  G4double FoldingAngle(G4double) const;
281  G4double HalfLArGapSize(G4double, G4double) const;
282 
283  // functions specific for charge coll.
284 
285  void IniGeomforFieldMaps(void); // called only at init phase
286  void LoadFieldMaps(const G4String&); // called only at init phase
287  void PrepareFieldMap(Wheel_Efield_Map* ChCollWheelType); // called only at init phase
288  G4double GetCurrent(const G4double *,const G4double *,G4double, G4double Barret_PhiStart) const;
289  void TransformWheeltoFieldMap(const G4double *,G4double *, const WheelGeometry & wg, const FoldArea & fa) const;
290  void SetYlimitsofPhigapinFieldMap(G4int, const WheelGeometry & wg, G4double * Ylimits) const;
291  void TransFromBarrtoWheel(const G4double*, G4double PhiStartOfPhiDiv, G4double*) const;
292  G4double GetWeightfromFieldMap(G4int,G4double,G4double, const FoldArea & fa) const;
293  G4double HalfLArGapSizeOld(G4double) const;
294 
295  // pick up surface_suppression_range
296  DoubleProperty m_CHC_Esr{this, "EMECRsr", 0.2*CLHEP::mm}; // used as const after init
297  inline G4double CHC_Esr() const { return m_CHC_Esr; };
298 
299 #ifdef DEBUG_CHCL // non thread-safe debug of charge collection
300  static const G4int s_CHCMaxPrint=00; // exists only if debug activated
301  static G4int s_CHCIprint; // exists only if debug activated
302  static G4double s_CHCEbad; // exists only if debug activated
303  static G4double s_CHCEtotal; // exists only if debug activated
304  static G4double s_CHCStotal; // exists only if debug activated
305 #endif
306 
307  private:
308  /* to be developed...
309  std::pair<double, double>DxToFans(Hep3Vector &p);
310  double XDistanceToTheNeutralFibre(const Hep3Vector& P) const;
311  */
312  G4double GetGapSize(const G4ThreeVector &p) const;
313 
314  // public:
315  G4double distance_to_the_nearest_electrode(const G4ThreeVector &p) const;
316 
317  UnsignedIntegerProperty m_solidtypeProp{0};
319  IntegerProperty m_zside{this, "zSide", 1};
322  const LArWheelCalculator * lwc() const { return m_lwc; }
323 
324  ServiceHandle<IGeoModelSvc> m_geoModel{this, "GeoModelSvc", "GeoModelSvc"};
325  ServiceHandle<IGeoDbTagSvc> m_geoDbTagSvc{this, "GeoDbTagSvc", "GeoDbTagSvc"};
326  StringProperty m_suffix{this, "EMECChMap", "v03"};
327 
328  // Aug 2007 AMS, lost Aug 2008, restored May 2009
330  const LArWheelCalculator * elc() const { return m_electrode_calculator; }
331 
332  G4double GetCurrent1(const G4ThreeVector &, const G4ThreeVector &, G4double) const;
333 
336 
337  G4int _getIRlayer(G4double rforalpha) const;
338  G4int _getIRlayerA(G4double rforalpha) const;
339 
340  G4double _interpolateCurrentSubStep(G4double rforalpha, G4int gapup, const G4double vmap[],
341  G4double tol, const FoldArea & fa, G4int & gaperr ) const;
342 
343 
344  G4double _interpolateCurrentSubStep1(G4double rforalpha, const G4double vmap[],
345  const G4ThreeVector & Pe, int side_dte, int Pe_fan,
346  const G4ThreeVector & Pa, int side_dta, int Pa_fan,
347  const FoldArea & fa, G4int & gaperr ) const;
348 
349  G4double _AdjustedPhiOfPoint_Barrett(const G4ThreeVector& p, G4double PhiStartOfPhiDiv) const;
350 
351  static inline G4double _normalizeAngle2Pi(G4double a) {
352  return ( a<0.) ?
353  a + CLHEP::twopi
354  :
355  (a >= CLHEP::twopi ? a - CLHEP::twopi: a);
356  }
357 
358  G4double getPhiStartOfPhiDiv(const G4Step* step) const;
359 
360  private:
361  std::unique_ptr<const HVHelper> m_HVHelper;
362  const static G4double s_GA_SubstepSize;
363  G4double DistanceToEtaLine(const G4ThreeVector &p, G4double eta) const;
364 
365  struct geometry_t {
366  G4int zSide; // +- 3 for inner wheel, +- 2 for outer wheel, z determines sign
367  G4int sampling;
368  G4int region;
369  G4double etaScale; // 1/deta
370  G4double etaOffset; // set so that the range of etaBin starts at zero for each compartment
371  G4int maxEta; // the maximum value of etaBin in this compartment
372  G4int gapsPerBin; // number of phi gaps (in LArWheelSolid) for each cell bin.
373  G4int maxPhi; // the maximum value of phiBin in this compartment
374  };
375  static const geometry_t s_geometry[];
376 
378  const G4ThreeVector& p, G4double PhiStartOfPhiDiv,
379  G4double &phi, G4int &compartment, G4int &eta_bin
380  ) const;
381 
382  };
383  } // namespace EC
384 } // namespace LArG4
385 
386 #endif // LArG4_EC_EnergyCalculator_H
LArG4::EC::EnergyCalculator::m_electrode_calculator
LArWheelCalculator * m_electrode_calculator
Definition: EnergyCalculator.h:329
LArG4::EC::EnergyCalculator::s_S3_Etalim
static const G4double s_S3_Etalim[21]
Definition: EnergyCalculator.h:114
LArG4::EC::EnergyCalculator::Wheel_Efield_Map::Fold1
Fold_Efield_Map Fold1
Definition: EnergyCalculator.h:218
LArG4::EC::EnergyCalculator::m_DB_HV
BooleanProperty m_DB_HV
Definition: EnergyCalculator.h:243
LArG4::EC::EnergyCalculator::DriftVelo
static G4double DriftVelo(const G4double T, const G4double Efield)
Definition: EnergyCalculator.h:262
LArG4::EC::EnergyCalculator::isInTime
virtual G4bool isInTime(G4double hitTime) const override final
Definition: EnergyCalculator.h:71
LArG4::EC::EnergyCalculator::s_LongBarThickness
static const G4double s_LongBarThickness
Definition: EnergyCalculator.h:105
AllowedVariables::e
e
Definition: AsgElectronSelectorTool.cxx:37
LArG4::EC::EnergyCalculator::m_Process_type
G4bool(EnergyCalculator::* m_Process_type)(const G4Step *, std::vector< LArHitData > &) const
Definition: EnergyCalculator.h:78
LArG4::EC::EnergyCalculator::m_birksLaw
LArG4BirksLaw * m_birksLaw
Definition: EnergyCalculator.h:320
LArG4::EC::EnergyCalculator::s_AverageHV
static const G4double s_AverageHV
Definition: EnergyCalculator.h:245
LArG4::EC::EnergyCalculator::initialize
virtual StatusCode initialize() override final
LArG4::EC::EnergyCalculator::geometry_t
Definition: EnergyCalculator.h:365
LArG4::EC::EnergyCalculator::SolidTypeHandler
void SolidTypeHandler(Gaudi::Details::PropertyBase &)
LArG4::EC::EnergyCalculator::geometry_t::maxEta
G4int maxEta
Definition: EnergyCalculator.h:371
LArG4::EC::EnergyCalculator::SetFoldArea
void SetFoldArea(G4double, FoldArea &) const
LArG4::EC::EnergyCalculator::FanAbsThickness
G4double FanAbsThickness() const
Definition: EnergyCalculator.h:186
LArG4::EC::EnergyCalculator::FanEleFoldRadiusOld
G4double FanEleFoldRadiusOld() const
Definition: EnergyCalculator.h:185
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:195
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
LArG4::EC::EnergyCalculator::m_zsep23
G4double m_zsep23[22]
Definition: EnergyCalculator.h:180
LArG4::EC::EnergyCalculator::operator=
EnergyCalculator & operator=(const EnergyCalculator &)
LArG4::EC::EnergyCalculator::FanEleThicknessOld
G4double FanEleThicknessOld() const
Definition: EnergyCalculator.h:184
LArG4::EC::EnergyCalculator::Fold_Efield_Map::FieldMapPrepared
G4bool FieldMapPrepared
Definition: EnergyCalculator.h:199
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:367
LArG4::EC::EnergyCalculator::m_zlim
G4double m_zlim[4]
Definition: EnergyCalculator.h:123
LArG4::EC::EnergyCalculator::GetVolumeIndex
G4bool GetVolumeIndex(const G4Step *, G4int &, G4int &) const
LArG4::EC::EnergyCalculator::m_ChCollInner
Wheel_Efield_Map m_ChCollInner
Definition: EnergyCalculator.h:222
LArG4::EC::EnergyCalculator::HalfLArGapSizeOld
G4double HalfLArGapSizeOld(G4double) const
LArG4::EC::EnergyCalculator::LoadFieldMaps
void LoadFieldMaps(const G4String &)
LArG4::EC::EnergyCalculator::m_HVMapVersion
StringProperty m_HVMapVersion
Definition: EnergyCalculator.h:242
LArG4::EC::EnergyCalculator::_getIRlayer
G4int _getIRlayer(G4double rforalpha) const
LArG4::InnerAbsorberWheel
@ InnerAbsorberWheel
Definition: LArWheelCalculatorEnums.h:11
LArG4::EC::EnergyCalculator::FanEleThickness
G4double FanEleThickness() const
Definition: EnergyCalculator.h:187
LArG4::EC::EnergyCalculator::Fold_Efield_Map::NofPointsinLayer
G4int * NofPointsinLayer
Definition: EnergyCalculator.h:207
LArG4::EC::EnergyCalculator::geometry_t::zSide
G4int zSide
Definition: EnergyCalculator.h:366
LArG4::EC::EnergyCalculator::Wheel_Efield_Map::Fold
Fold_Efield_Map * Fold
Definition: EnergyCalculator.h:216
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:213
LArG4::EC::EnergyCalculator::m_ElectrodeFanHalfThickness
G4double m_ElectrodeFanHalfThickness
Definition: EnergyCalculator.h:171
LArG4::EC::EnergyCalculator::m_ChCollOuter
Wheel_Efield_Map m_ChCollOuter
Definition: EnergyCalculator.h:222
LArG4::EC::EnergyCalculator::dummy_correction_method
G4double dummy_correction_method(G4double e, const G4ThreeVector &, const G4ThreeVector &, G4double) const
Definition: EnergyCalculator.h:129
LArG4::EC::EnergyCalculator::s_Zmeas_outer
static const G4double s_Zmeas_outer[2]
Definition: EnergyCalculator.h:116
LArG4::EC::EnergyCalculator::m_WaveLength
G4double m_WaveLength
Definition: EnergyCalculator.h:176
LArG4::EC::EnergyCalculator::WheelGeometry::SignofSlopeofHalfWave
G4int SignofSlopeofHalfWave
Definition: EnergyCalculator.h:154
LArG4::EC::EnergyCalculator::Wheel_Efield_Map::HalfLArGapSizeOfLayers
G4double * HalfLArGapSizeOfLayers
Definition: EnergyCalculator.h:215
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:96
const
bool const RAWDATA *ch2 const
Definition: LArRodBlockPhysicsV0.cxx:560
LArG4::EC::EnergyCalculator::m_zside
IntegerProperty m_zside
Definition: EnergyCalculator.h:319
LArG4::EC::EnergyCalculator::WheelGeometry::HalfEleThickness
G4double HalfEleThickness
Definition: EnergyCalculator.h:156
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:115
LArG4::EC::EnergyCalculator::EnergyCalculator
EnergyCalculator(const std::string &name, ISvcLocator *pSvcLocator)
LArG4::EC::EnergyCalculator::m_ChCollWheelType
Wheel_Efield_Map * m_ChCollWheelType
Definition: EnergyCalculator.h:223
LArG4::EC::EnergyCalculator::s_ZmaxOfSignal
static const G4double s_ZmaxOfSignal
Definition: EnergyCalculator.h:112
LArG4::EC::EnergyCalculator::s_LArTemperature_av
static const G4double s_LArTemperature_av
Definition: EnergyCalculator.h:252
LArG4::EC::EnergyCalculator::FoldArea
Definition: EnergyCalculator.h:227
LArG4::EC::EnergyCalculator
Definition: EnergyCalculator.h:54
HVHelper.h
LArG4::EC::EnergyCalculator::geometry_t::maxPhi
G4int maxPhi
Definition: EnergyCalculator.h:373
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:211
LArG4::EC::EnergyCalculator::ChCollWheelType
const Wheel_Efield_Map * ChCollWheelType() const
Definition: EnergyCalculator.h:225
LArG4::EC::EnergyCalculator::m_rlim
G4double m_rlim[50]
Definition: EnergyCalculator.h:122
LArG4::EC::EnergyCalculator::m_lwc
LArWheelCalculator * m_lwc
Definition: EnergyCalculator.h:321
LArG4::EC::EnergyCalculator::m_zsep12
G4double m_zsep12[44]
Definition: EnergyCalculator.h:178
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:121
LArG4::EC::EnergyCalculator::elc
const LArWheelCalculator * elc() const
Definition: EnergyCalculator.h:330
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:297
LArG4::EC::EnergyCalculator::s_DistOfStartofCuFromBack
static const G4double s_DistOfStartofCuFromBack
Definition: EnergyCalculator.h:111
LArG4::EC::EnergyCalculator::Fold_Efield_Map::MaxYofLayer
G4double * MaxYofLayer
Definition: EnergyCalculator.h:204
LArG4::EC::EnergyCalculator::m_FanEleThickness
G4double m_FanEleThickness
Definition: EnergyCalculator.h:175
LArG4::EC::EnergyCalculator::YofNeutralFibre
G4double YofNeutralFibre(G4double alpha, G4double rho, const WheelGeometry &wg) const
Definition: EnergyCalculator.h:277
LArG4::EC::EnergyCalculator::_getIRlayerA
G4int _getIRlayerA(G4double rforalpha) const
LArG4::EC::EnergyCalculator::CorrectionTypeHandler
void CorrectionTypeHandler(Gaudi::Details::PropertyBase &)
python.utils.AtlRunQueryDQUtils.p
p
Definition: AtlRunQueryDQUtils.py:210
LArG4::EC::EnergyCalculator::m_FanAbsThickness
G4double m_FanAbsThickness
Definition: EnergyCalculator.h:174
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:107
lumiFormat.i
int i
Definition: lumiFormat.py:85
LArG4::EC::EnergyCalculator::GetGapSize_Default
G4double GetGapSize_Default(const G4ThreeVector &p) const
Definition: EnergyCalculator.h:91
LArG4::EC::EnergyCalculator::s_inv_AverageGap
static const G4double s_inv_AverageGap
Definition: EnergyCalculator.h:196
LArG4::EC::EnergyCalculator::m_FanEleFoldRadiusOld
G4double m_FanEleFoldRadiusOld
Definition: EnergyCalculator.h:173
LArG4::EC::EnergyCalculator::m_suffix
StringProperty m_suffix
Definition: EnergyCalculator.h:326
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:208
LArG4::EC::EnergyCalculator::s_GA_SubstepSize
static const G4double s_GA_SubstepSize
Definition: EnergyCalculator.h:362
LArG4::EC::EnergyCalculator::WheelGeometry::ZinHalfWave
G4double ZinHalfWave
Definition: EnergyCalculator.h:155
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:101
LArG4::EC::EnergyCalculator::Fold_Efield_Map::NofColofLayer
G4int * NofColofLayer
Definition: EnergyCalculator.h:205
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:67
LArG4::EC::EnergyCalculator::m_CHC_Esr
DoubleProperty m_CHC_Esr
Definition: EnergyCalculator.h:296
LArG4::EC::EnergyCalculator::WaveLength
G4double WaveLength() const
Definition: EnergyCalculator.h:188
LArG4::EC::EnergyCalculator::s_AverageCurrent
static const G4double s_AverageCurrent
Definition: EnergyCalculator.h:247
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:155
LArG4::EC::EnergyCalculator::Wheel_Efield_Map::NumberOfRadialLayer
G4int NumberOfRadialLayer
Definition: EnergyCalculator.h:212
LArG4Identifier.h
LArWheelCalculator
Definition: LArWheelCalculator.h:60
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:202
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:125
LArG4::EC::EnergyCalculator::Index
G4int Index(const Fold_Efield_Map *foldmap, G4int i, G4int j, G4int k) const
Definition: EnergyCalculator.h:237
LArG4::EC::EnergyCalculator::WheelGeometry::PhiHalfGapNumber
G4int PhiHalfGapNumber
Definition: EnergyCalculator.h:153
LArG4::EC::EnergyCalculator::SetYlimitsofPhigapinFieldMap
void SetYlimitsofPhigapinFieldMap(G4int, const WheelGeometry &wg, G4double *Ylimits) const
LArG4::EMEC_ECOR_CHCL1
@ EMEC_ECOR_CHCL1
Definition: LArG4EnumDefs.h:21
LArG4::EC::EnergyCalculator::m_GetGapSize_type
G4double(EnergyCalculator::* m_GetGapSize_type)(const G4ThreeVector &p) const
Definition: EnergyCalculator.h:79
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:228
LArG4::EC::EnergyCalculator::s_DistOfEndofCuFromBack
static const G4double s_DistOfEndofCuFromBack
Definition: EnergyCalculator.h:110
doL1CaloHVCorrections.eta_bin
eta_bin
Definition: doL1CaloHVCorrections.py:368
LArG4::EC::EnergyCalculator::GApower
G4double GApower() const
Definition: EnergyCalculator.h:143
LArG4::EC::EnergyCalculator::Wheel_Efield_Map::FoldinAngleOfLayers
G4double * FoldinAngleOfLayers
Definition: EnergyCalculator.h:214
LArG4::EC::EnergyCalculator::s_KapGap
static const G4double s_KapGap
Definition: EnergyCalculator.h:108
twopi
constexpr double twopi
Definition: VertexPointEstimator.cxx:16
ILArCalibCalculatorSvc.h
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:322
LArG4::EC::EnergyCalculator::m_FieldMapVersion
G4String m_FieldMapVersion
Definition: EnergyCalculator.h:188
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:228
LArG4::EC::EnergyCalculator::IonReco
static G4double IonReco(const G4double Efield)
Definition: EnergyCalculator.h:256
LArG4::EC::EnergyCalculator::m_RefzDist
G4double m_RefzDist
Definition: EnergyCalculator.h:117
LArG4::EC::EnergyCalculator::m_ecorr_method
G4double(EnergyCalculator::* m_ecorr_method)(G4double, const G4ThreeVector &, const G4ThreeVector &, G4double) const
Definition: EnergyCalculator.h:128
LArG4::EC::EnergyCalculator::Fold_Efield_Map::FieldMap
G4double * FieldMap
Definition: EnergyCalculator.h:200
LArG4::EC::EnergyCalculator::m_GApower
DoubleProperty m_GApower
Definition: EnergyCalculator.h:142
LArG4::EC::EnergyCalculator::s_LArTemperature_ECC0
static const G4double s_LArTemperature_ECC0
Definition: EnergyCalculator.h:249
LArG4::EC::EnergyCalculator::geometry_t::region
G4int region
Definition: EnergyCalculator.h:368
LArG4::EC::EnergyCalculator::m_solidtype
LArG4::LArWheelCalculator_t m_solidtype
Definition: EnergyCalculator.h:318
LArG4::EC::EnergyCalculator::s_ColdCorrection
static const G4double s_ColdCorrection
Definition: EnergyCalculator.h:106
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::m_geoModel
ServiceHandle< IGeoModelSvc > m_geoModel
Definition: EnergyCalculator.h:324
LArG4::EC::EnergyCalculator::GapAdjustment
G4double GapAdjustment(G4double, const G4ThreeVector &, const G4ThreeVector &, G4double) const
LArG4::EC::EnergyCalculator::WheelGeometry::CosPhiGap
G4double CosPhiGap
Definition: EnergyCalculator.h:155
LArG4::EC::EnergyCalculator::geometry_t::etaScale
G4double etaScale
Definition: EnergyCalculator.h:369
python.SystemOfUnits.mm
int mm
Definition: SystemOfUnits.py:83
LArG4::EC::EnergyCalculator::Fold_Efield_Map
Definition: EnergyCalculator.h:198
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:361
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:375
LArG4::EC::EnergyCalculator::s_GridSize
static const G4double s_GridSize
Definition: EnergyCalculator.h:194
LArG4BirksLaw
Definition: LArG4BirksLaw.h:8
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:351
LArG4::EC::EnergyCalculator::geometry_t::gapsPerBin
G4int gapsPerBin
Definition: EnergyCalculator.h:372
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:251
LArCalculatorSvcImp::m_OOTcut
double m_OOTcut
Definition: LArCalculatorSvcImp.h:28
LArG4::EC::EnergyCalculator::m_geoDbTagSvc
ServiceHandle< IGeoDbTagSvc > m_geoDbTagSvc
Definition: EnergyCalculator.h:325
LArG4::EC::EnergyCalculator::ElectrodeFanHalfThickness
G4double ElectrodeFanHalfThickness() const
Definition: EnergyCalculator.h:183
LArG4::EC::EnergyCalculator::m_correction_type
EnergyCorrection_t m_correction_type
Definition: EnergyCalculator.h:126
LArG4::EC::EnergyCalculator::Fold_Efield_Map::MinZofLayer
G4double * MinZofLayer
Definition: EnergyCalculator.h:201
LArG4::EC::EnergyCalculator::FoldArea::FoldArea
FoldArea()
Definition: EnergyCalculator.h:230
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:250
LArG4::EC::EnergyCalculator::s_AverageEfield
static const G4double s_AverageEfield
Definition: EnergyCalculator.h:246
LArCellBinning.step
step
Definition: LArCellBinning.py:158
LArG4::EC::EnergyCalculator::s_EdgeWidth
static const G4double s_EdgeWidth
Definition: EnergyCalculator.h:109
LArG4::EC::EnergyCalculator::WheelGeometry::WheelGeometry
WheelGeometry()
Definition: EnergyCalculator.h:157
LArG4::EC::EnergyCalculator::FoldArea::PointFoldMapArea
G4int PointFoldMapArea
Definition: EnergyCalculator.h:229
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:80
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:152
LArG4::EC::EnergyCalculator::Wheel_Efield_Map
Definition: EnergyCalculator.h:211
LArG4::EC::EnergyCalculator::WheelGeometry::HalfWaveNumber
G4int HalfWaveNumber
Definition: EnergyCalculator.h:154
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:172
LArG4::EC::EnergyCalculator::Wheel_Efield_Map::GridShift
G4double GridShift
Definition: EnergyCalculator.h:219
LArG4::EC::EnergyCalculator::Fold_Efield_Map::MinYofLayer
G4double * MinYofLayer
Definition: EnergyCalculator.h:203
IGeoModelSvc.h
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:217
pow
constexpr int pow(int base, int exp) noexcept
Definition: ap_fixedTest.cxx:15
LArG4::EC::EnergyCalculator::Fold_Efield_Map::NofRowofLayer
G4int * NofRowofLayer
Definition: EnergyCalculator.h:206
LArG4::EC::EnergyCalculator::m_ziw
G4double m_ziw[7]
Definition: EnergyCalculator.h:179
LArG4::EC::EnergyCalculator::m_solidtypeProp
UnsignedIntegerProperty m_solidtypeProp
Definition: EnergyCalculator.h:317
LArG4EnumDefs.h
IGeoDbTagSvc.h
fitman.rho
rho
Definition: fitman.py:532
LArWheelCalculatorEnums.h
LArG4::LArWheelCalculator_t
LArWheelCalculator_t
Definition: LArWheelCalculatorEnums.h:10
LArG4::EC::EnergyCalculator::geometry_t::etaOffset
G4double etaOffset
Definition: EnergyCalculator.h:370
fitman.k
k
Definition: fitman.py:528
LArG4::EC::EnergyCalculator::WheelGeometry::PhiGapNumber
G4int PhiGapNumber
Definition: EnergyCalculator.h:153
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:154
LArWheelCalculator.h
LArG4::EC::EnergyCalculator::GapAdjustment__sE
G4double GapAdjustment__sE(G4double, const G4ThreeVector &, const G4ThreeVector &, G4double) const