|
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 &)
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
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
G4int GetPhiGap_Barrett(const G4ThreeVector &p, G4double PhiStartOfPhiDiv) const
G4double GapAdjustment__sE(G4double, const G4ThreeVector &, const G4ThreeVector &, G4double) const