  | 
  
    ATLAS Offline Software
    
   | 
 
 
 
 
Go to the documentation of this file.
   23 #ifndef LArG4_EC_EnergyCalculator_H 
   24 #define LArG4_EC_EnergyCalculator_H 
   29 #include "CLHEP/Units/SystemOfUnits.h" 
   42 #include "G4ThreeVector.hh" 
   68       virtual G4bool 
Process(
const G4Step*, std::vector<LArHitData>&) 
const override final;
 
   85       G4bool 
FindIdentifier_Barrett(
const G4Step *, G4double, std::vector<LArHitData>&, G4ThreeVector &, G4ThreeVector &) 
const;
 
   88                                     G4int &, G4int &) 
const;
 
   90       G4double 
GetHV_Value(
const G4ThreeVector& 
p, G4double PhiStartOfPhiDiv) 
const;
 
  133       G4double 
GapAdjustment_old(G4double, 
const G4ThreeVector&, 
const G4ThreeVector&, G4double ) 
const;
 
  134       G4double 
GapAdjustment    (G4double, 
const G4ThreeVector&, 
const G4ThreeVector&, G4double ) 
const;
 
  135       G4double 
GapAdjustment_E  (G4double, 
const G4ThreeVector&, 
const G4ThreeVector&, G4double ) 
const;
 
  136       G4double 
GapAdjustment_s  (G4double, 
const G4ThreeVector&, 
const G4ThreeVector&, G4double ) 
const;
 
  137       G4double 
GapAdjustment__sE (G4double, 
const G4ThreeVector&, 
const G4ThreeVector&, G4double ) 
const;
 
  243       BooleanProperty 
m_DB_HV{
this, 
"EMECHVEnable", 
false};
 
  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));
 
  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) )
 
  288       G4double 
GetCurrent(
const G4double *,
const G4double *,G4double, G4double Barret_PhiStart) 
const;
 
  299 #ifdef DEBUG_CHCL // non thread-safe debug of charge collection 
  300       static const G4int    s_CHCMaxPrint=00; 
 
  301       static       G4int    s_CHCIprint;      
 
  302       static       G4double s_CHCEbad;        
 
  303       static       G4double s_CHCEtotal;      
 
  304       static       G4double s_CHCStotal;      
 
  332       G4double 
GetCurrent1(
const G4ThreeVector &, 
const G4ThreeVector &, G4double) 
const;
 
  341                                           G4double tol, 
const FoldArea & fa, G4int & gaperr ) 
const;
 
  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;
 
  378         const G4ThreeVector& 
p, G4double PhiStartOfPhiDiv,
 
  379         G4double &
phi, G4int &compartment, G4int &
eta_bin 
  386 #endif // LArG4_EC_EnergyCalculator_H 
  
LArWheelCalculator * m_electrode_calculator
 
static const G4double s_S3_Etalim[21]
 
static G4double DriftVelo(const G4double T, const G4double Efield)
 
virtual G4bool isInTime(G4double hitTime) const override final
 
static const G4double s_LongBarThickness
 
G4bool(EnergyCalculator::* m_Process_type)(const G4Step *, std::vector< LArHitData > &) const
 
LArG4BirksLaw * m_birksLaw
 
static const G4double s_AverageHV
 
virtual StatusCode initialize() override final
 
void SolidTypeHandler(Gaudi::Details::PropertyBase &)
 
void SetFoldArea(G4double, FoldArea &) const
 
G4double FanAbsThickness() const
 
G4double FanEleFoldRadiusOld() const
 
G4bool FindIdentifier_Barrett(const G4Step *, G4double, std::vector< LArHitData > &, G4ThreeVector &, G4ThreeVector &) const
 
static const G4double s_AverageGap
 
G4double distance_to_the_nearest_electrode(const G4ThreeVector &p) const
 
virtual StatusCode finalize() override final
 
EnergyCalculator & operator=(const EnergyCalculator &)
 
Scalar phi() const
phi method
 
G4double FanEleThicknessOld() const
 
G4bool Process_Barrett(const G4Step *, std::vector< LArHitData > &) const
 
G4bool GetVolumeIndex(const G4Step *, G4int &, G4int &) const
 
Wheel_Efield_Map m_ChCollInner
 
G4double HalfLArGapSizeOld(G4double) const
 
void LoadFieldMaps(const G4String &)
 
StringProperty m_HVMapVersion
 
G4int _getIRlayer(G4double rforalpha) const
 
Scalar eta() const
pseudorapidity method
 
G4double FanEleThickness() const
 
G4double GapAdjustment_s(G4double, const G4ThreeVector &, const G4ThreeVector &, G4double) const
 
G4double GetHV_Value(const G4ThreeVector &p, G4double PhiStartOfPhiDiv) const
 
G4double YofSurface(G4double, G4double, G4double, const WheelGeometry &) const
 
G4double * RadiusOfLayers
 
G4double m_ElectrodeFanHalfThickness
 
Wheel_Efield_Map m_ChCollOuter
 
G4double dummy_correction_method(G4double e, const G4ThreeVector &, const G4ThreeVector &, G4double) const
 
static const G4double s_Zmeas_outer[2]
 
G4int SignofSlopeofHalfWave
 
G4double * HalfLArGapSizeOfLayers
 
G4double GetCurrent(const G4double *, const G4double *, G4double, G4double Barret_PhiStart) const
 
G4double distance_to_the_nearest_electrode_Default(const G4ThreeVector &p, G4double) const
 
bool const RAWDATA *ch2 const
 
G4double HalfEleThickness
 
G4double GetGapSize(const G4ThreeVector &p) const
 
G4double CalculateChargeCollection(G4double, const G4ThreeVector &, const G4ThreeVector &, G4double) const
 
static const G4double s_Rmeas_outer[50]
 
EnergyCalculator(const std::string &name, ISvcLocator *pSvcLocator)
 
Wheel_Efield_Map * m_ChCollWheelType
 
static const G4double s_ZmaxOfSignal
 
static const G4double s_LArTemperature_av
 
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
 
const Wheel_Efield_Map * ChCollWheelType() const
 
LArWheelCalculator * m_lwc
 
G4double GapAdjustment_old(G4double, const G4ThreeVector &, const G4ThreeVector &, G4double) const
 
const LArWheelCalculator * elc() const
 
void SetYlimitsofPhigapinWheel(G4double, G4double, const WheelGeometry &wg, G4double *Ylimits) const
 
G4bool GetBarrettePCE(const G4ThreeVector &p, G4double PhiStartOfPhiDiv, G4double &phi, G4int &compartment, G4int &eta_bin) const
 
virtual G4bool Process(const G4Step *, std::vector< LArHitData > &) const override final
 
static const G4double s_DistOfStartofCuFromBack
 
G4double m_FanEleThickness
 
G4double YofNeutralFibre(G4double alpha, G4double rho, const WheelGeometry &wg) const
 
G4int _getIRlayerA(G4double rforalpha) const
 
void CorrectionTypeHandler(Gaudi::Details::PropertyBase &)
 
G4double m_FanAbsThickness
 
G4bool GetCompartment_Barrett(const G4ThreeVector &, G4double, G4double, G4double, G4int &, G4int &) const
 
static const G4double s_StripWidth
 
G4double GetGapSize_Default(const G4ThreeVector &p) const
 
static const G4double s_inv_AverageGap
 
G4double m_FanEleFoldRadiusOld
 
void TransFromBarrtoWheel(const G4double *, G4double PhiStartOfPhiDiv, G4double *) const
 
::StatusCode StatusCode
StatusCode definition for legacy code.
 
static const G4double s_GA_SubstepSize
 
G4double CalculateChargeCollection1(G4double, const G4ThreeVector &, const G4ThreeVector &, G4double) const
 
ServiceHandle< ILArCalibCalculatorSvc > m_supportCalculator
 
void TransformWheeltoFieldMap(const G4double *, G4double *, const WheelGeometry &wg, const FoldArea &fa) const
 
virtual G4float OOTcut() const override final
 
G4double WaveLength() const
 
static const G4double s_AverageCurrent
 
void IniGeomforFieldMaps(void)
 
G4double _AdjustedPhiOfPoint_Barrett(const G4ThreeVector &p, G4double PhiStartOfPhiDiv) const
 
G4int NumberOfRadialLayer
 
G4bool FindIdentifier_Default(const G4Step *, std::vector< LArHitData > &, G4ThreeVector &, G4ThreeVector &) const
 
G4double getPhiStartOfPhiDiv(const G4Step *step) const
 
UnsignedIntegerProperty m_corrProp
 
G4int Index(const Fold_Efield_Map *foldmap, G4int i, G4int j, G4int k) const
 
void SetYlimitsofPhigapinFieldMap(G4int, const WheelGeometry &wg, G4double *Ylimits) const
 
G4double(EnergyCalculator::* m_GetGapSize_type)(const G4ThreeVector &p) const
 
void GetPhiGap(const G4double *, WheelGeometry &) const
 
const Fold_Efield_Map * ChCollFoldType
 
static const G4double s_DistOfEndofCuFromBack
 
G4double * FoldinAngleOfLayers
 
static const G4double s_KapGap
 
G4bool FindDMIdentifier_Barrett(const G4Step *step, std::vector< LArHitData > &) const
 
const LArWheelCalculator * lwc() const
 
G4String m_FieldMapVersion
 
static G4double IonReco(const G4double Efield)
 
G4double(EnergyCalculator::* m_ecorr_method)(G4double, const G4ThreeVector &, const G4ThreeVector &, G4double) const
 
static const G4double s_LArTemperature_ECC0
 
LArG4::LArWheelCalculator_t m_solidtype
 
static const G4double s_ColdCorrection
 
void PrepareFieldMap(Wheel_Efield_Map *ChCollWheelType)
 
G4double GetWeightfromFieldMap(G4int, G4double, G4double, const FoldArea &fa) const
 
ServiceHandle< IGeoModelSvc > m_geoModel
 
G4double GapAdjustment(G4double, const G4ThreeVector &, const G4ThreeVector &, G4double) const
 
G4double DistanceToEtaLine(const G4ThreeVector &p, G4double eta) const
 
std::unique_ptr< const HVHelper > m_HVHelper
 
G4double GetGapSize_Barrett(const G4ThreeVector &p) const
 
static const geometry_t s_geometry[]
 
static const G4double s_GridSize
 
G4double _interpolateCurrentSubStep(G4double rforalpha, G4int gapup, const G4double vmap[], G4double tol, const FoldArea &fa, G4int &gaperr) const
 
void SetConst_OuterBarrett(void)
 
static G4double _normalizeAngle2Pi(G4double a)
 
G4double FoldingAngle(G4double) const
 
G4double GetCurrent1(const G4ThreeVector &, const G4ThreeVector &, G4double) const
 
static const G4double s_LArTemperature_ECC5
 
ServiceHandle< IGeoDbTagSvc > m_geoDbTagSvc
 
G4double ElectrodeFanHalfThickness() const
 
EnergyCorrection_t m_correction_type
 
G4double distance_to_the_nearest_electrode_Barrett(const G4ThreeVector &p, G4double Barret_PhiStart) const
 
G4double HalfLArGapSize(G4double, G4double) const
 
static const G4double s_LArTemperature_ECC1
 
static const G4double s_AverageEfield
 
static const G4double s_EdgeWidth
 
G4double(EnergyCalculator::* m_distance_to_the_nearest_electrode_type)(const G4ThreeVector &p, G4double) const
 
G4double GapAdjustment_E(G4double, const G4ThreeVector &, const G4ThreeVector &, G4double) const
 
EnergyCalculator(const EnergyCalculator &)
 
float hitTime(const AFP_SIDSimHit &hit)
 
const float EC[NC]
Energy levels for Carbon.
 
void SetHalfWave(G4double, WheelGeometry &) const
 
void CreateArrays(Wheel_Efield_Map &, G4int)
 
G4double m_FanEleThicknessOld
 
G4bool Process_Default(const G4Step *, std::vector< LArHitData > &) const
 
constexpr int pow(int base, int exp) noexcept
 
UnsignedIntegerProperty m_solidtypeProp
 
Gaudi::Property< double > m_OOTcut
 
G4int GetPhiGap_Barrett(const G4ThreeVector &p, G4double PhiStartOfPhiDiv) const
 
G4double GapAdjustment__sE(G4double, const G4ThreeVector &, const G4ThreeVector &, G4double) const