Geant4 11.3.0
Toolkit for the simulation of the passage of particles through matter
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
GFlashSamplingShowerParameterisation.hh
Go to the documentation of this file.
1//
2// ********************************************************************
3// * License and Disclaimer *
4// * *
5// * The Geant4 software is copyright of the Copyright Holders of *
6// * the Geant4 Collaboration. It is provided under the terms and *
7// * conditions of the Geant4 Software License, included in the file *
8// * LICENSE and available at http://cern.ch/geant4/license . These *
9// * include a list of copyright holders. *
10// * *
11// * Neither the authors of this software system, nor their employing *
12// * institutes,nor the agencies providing financial support for this *
13// * work make any representation or warranty, express or implied, *
14// * regarding this software system or assume any liability for its *
15// * use. Please see the license in the file LICENSE and URL above *
16// * for the full disclaimer and the limitation of liability. *
17// * *
18// * This code implementation is the result of the scientific and *
19// * technical work of the GEANT4 collaboration. *
20// * By using, copying, modifying or distributing the software (or *
21// * any work based on the software) you agree to acknowledge its *
22// * use in resulting scientific publications, and indicate your *
23// * acceptance of all terms of the Geant4 Software license. *
24// ********************************************************************
25//
26//
27//
28//
29//---------------------------------------------------------------
30// GEANT 4 class header file
31//
32// GFlashSamplingShowerParameterisation
33//
34// Class description:
35//
36// GFlash concrete sampling shower parameterisation
37
38// Author: Joanna Weng - 02.2004
39//---------------------------------------------------------------
40#ifndef GFlashSamplingShowerParameterisation_h
41#define GFlashSamplingShowerParameterisation_h 1
42
43#include "globals.hh"
46
47class G4Material;
48
50{
51 public:
53 G4Material* aMat1, G4Material* aMat2, G4double d1, G4double d2,
54 /// \param aMat1 passive material, \param dd1 - passive layer thickness
55 /// \param aMat2 active material, \param dd2 - acive layer thickness
56
59
62 void ComputeZAX0EFFetc();
63
66 G4double ComputeTau(G4double LongitudinalPosition);
67 void SetMaterial(G4Material* mat1, G4Material* mat2);
69 G4double GenerateRadius(G4int ispot, G4double Energy, G4double LongitudinalPosition);
71
72 inline G4double GetAveR99() { return (3.5 * Rmeff); }
73 inline G4double GetAveR90() { return (1.5 * Rmeff); } // ok
74 //
75 inline G4double GetAveTmx() { return (X0eff * std::exp(AveLogTmax)); }
76 inline G4double GetAveT99() { return (X0eff * AveLogTmax / (AveLogAlpha - 1.00)); }
77 inline G4double GetAveT90() { return (2.5 * X0eff * std::exp(AveLogTmax)); }
78 //
79 inline G4double GetNspot() { return NSpot; }
80 inline G4double GetX0() { return X0eff; }
81 inline G4double GetEc() { return Eceff; }
82 inline G4double GetRm() { return Rmeff; }
83 inline G4double GetEffDensity() { return Rhoeff; }
84
85 G4double ApplySampling(const G4double DEne, const G4double Energy);
86
87 private:
88 // medium related quantities
89 //
90 G4Material *material1, *material2;
91 G4double density1, A1, Z1, X01, Ec1, Rm1, d1;
92 G4double density2, A2, Z2, X02, Ec2, Rm2, d2;
93 G4double Aeff, Rhoeff{1.0}, X0eff{1.0}, Eceff{1.0}, Rmeff{1.0}, Fs, ehat, Zeff;
94
95 // Resolution
96 //
97 G4double ConstantResolution;
98 G4double NoiseResolution;
99 G4double SamplingResolution;
100
101 // parametrization parameters
102 //
103 GFlashSamplingShowerTuning* thePar;
104
105 // Cashed parameters:
106 // Longitudinal Coefficients for a homogenious calo
107 //
108 G4double ParAveT1, ParAveT2;
109 G4double ParAveA1, ParAveA2, ParAveA3;
110 G4double ParSigLogT1, ParSigLogT2;
111 G4double ParSigLogA1, ParSigLogA2;
112 G4double ParRho1, ParRho2;
113
114 // Cashed parameters:
115 // Longitudinal Coefficients for a sampling calo
116 //
117 G4double ParsAveT1, ParsAveT2;
118 G4double ParsAveA1, ParsAveA2;
119 G4double ParsSigLogT1, ParsSigLogT2;
120 G4double ParsSigLogA1, ParsSigLogA2;
121 G4double ParsRho1, ParsRho2;
122 void ComputeLongitudinalParameters(G4double y);
123 void GenerateEnergyProfile(G4double y);
124 void GenerateNSpotProfile(G4double y);
125
126 // Radial Coefficients homo
127 //
128 G4double ParRC1, ParRC2, ParRC3, ParRC4;
129 G4double ParWC1, ParWC2, ParWC3;
130 G4double ParWC4, ParWC5, ParWC6;
131 G4double ParRT1, ParRT2, ParRT3, ParRT4;
132 G4double ParRT5, ParRT6;
133
134 // Radial Coefficients sampling
135 //
136 G4double ParsRC1, ParsRC2;
137 G4double ParsWC1, ParsWC2;
138 G4double ParsRT1, ParsRT2;
139
140 // Spot multiplicity Coefficients
141 //
142 G4double ParsSpotT1, ParsSpotT2, ParsSpotA1, ParsSpotA2;
143 G4double ParsSpotN1, ParsSpotN2;
144
145 // PARAMETRISATION variables (Energy & position dependent)
146 // Longitudinal
147 // homogeneous
148 //
149 G4double AveLogAlphah, AveLogTmaxh;
150 G4double SigmaLogAlphah, SigmaLogTmaxh;
151 G4double Rhoh;
152 G4double Alphah, Tmaxh, Betah;
153
154 // PARAMETRISATION variables (Energy & position dependent)
155 // Longitudinal
156 // sampling
157 //
158 G4double AveLogAlpha, AveLogTmax;
159 G4double SigmaLogAlpha, SigmaLogTmax;
160 G4double Rho;
161 G4double Alpha, Tmax, Beta;
162
163 // Multiplicity
164 //
165 G4double NSpot, AlphaNSpot, TNSpot, BetaNSpot;
166
167 // Radial
168 //
169 G4double RadiusCore, WeightCore, RadiusTail;
170};
171
172#endif
double G4double
Definition G4Types.hh:83
int G4int
Definition G4Types.hh:85
G4double GenerateRadius(G4int ispot, G4double Energy, G4double LongitudinalPosition)
GFlashSamplingShowerParameterisation(G4Material *aMat1, G4Material *aMat2, G4double d1, G4double d2, GFlashSamplingShowerTuning *aPar=0)
G4double ApplySampling(const G4double DEne, const G4double Energy)
G4double IntegrateNspLongitudinal(G4double LongitudinalStep)
G4double IntegrateEneLongitudinal(G4double LongitudinalStep)
G4double ComputeTau(G4double LongitudinalPosition)
void SetMaterial(G4Material *mat1, G4Material *mat2)