Geant4 11.1.1
Toolkit for the simulation of the passage of particles through matter
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
GVFlashHomoShowerTuning.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// GVFlashHomoShowerTuning
33//
34// Class description:
35//
36// Tuning class for GFlash homogeneous shower parameterisation.
37// Definitions:
38// <t>: shower center of gravity
39// T: Depth at shower maximum
40// Ec: Critical energy
41// X0: Radiation length
42// y = E/Ec
43//
44// Homogeneous media:
45// Average shower profile
46// (1/E)(dE(t)/dt) = f(t)
47// = (beta*t)**(alpha-1)*beta*std::exp(-beta*t)/Gamma(alpha)
48// where Gamma is the Gamma function
49//
50// <t> = alpha/beta
51// T = (alpha-1)/beta
52// and
53// T = ln(y) + t1
54// alpha = a1+(a2+a3/Z)ln(y)
55
56// Author: J.P. Wellisch - October 2004
57//
58// Usage: use new statement for new instance of class, do not delete.
59// The instance of class will be deleted in
60// GFlashHomoShowerParameterisation Destructor.
61
62//---------------------------------------------------------------
63#ifndef GVFlashHomoShowerTuning_hh
64#define GVFlashHomoShowerTuning_hh
65
66#include "G4Types.hh"
67
69{
70 public:
73
74 public: // with description
75
76 virtual G4double ParAveT1(){ return -0.812; } // t1
77 virtual G4double ParAveA1(){ return 0.81; } // a1
78 virtual G4double ParAveA2(){ return 0.458; } // a2
79 virtual G4double ParAveA3(){ return 2.26; } // a3
80
81 virtual G4double ParSigLogT1(){ return -1.4; } // t1
82 virtual G4double ParSigLogT2(){ return 1.26;} // t2
83 // std::sqrt(var(ln(T))) = 1/(t+t2*ln(y))
84
85 virtual G4double ParSigLogA1(){ return -0.58; } // a1
86 virtual G4double ParSigLogA2(){ return 0.86; } // a2
87 // std::sqrt(var(ln(alpha))) = 1/(a1+a2*ln(y))
88
89 virtual G4double ParRho1(){ return 0.705; } // r1
90 virtual G4double ParRho2(){ return -0.023; } // r2
91 // Correlation(ln(T),ln(alpha))=r1+r2*ln(y)
92
93 // Radial profiles
94 // f(r) := (1/dE(t))(dE(t,r)/dr)
95 // Ansatz:
96 // f(r) = p(2*r*Rc**2)/(r**2+Rc**2)**2+(1-p)*(2*r*Rt**2)/(r**2+Rt**2)**2,
97 // 0<p<1
98
99 virtual G4double ParRC1(){ return 0.0251; } // c1
100 virtual G4double ParRC2(){ return 0.00319; } // c2
101 virtual G4double ParRC3(){ return 0.1162; } // c3
102 virtual G4double ParRC4(){ return -0.000381;} // c4
103 // Rc (t/T)= z1 +z2*t/T
104 // z1 = c1+c2*ln(E/GeV)
105 // z2 = c3+c4*Z
106
107 virtual G4double ParRT1(){ return 0.659; } // t1
108 virtual G4double ParRT2(){ return -0.00309;} // t2
109 virtual G4double ParRT3(){ return 0.645; } // k2
110 virtual G4double ParRT4(){ return -2.59; } // k3
111 virtual G4double ParRT5(){ return 0.3585; } // t5
112 virtual G4double ParRT6(){ return 0.0412; } // t6
113 // Rt (t/T)= k1*(std::exp(k3*(t/T-k2))+std::exp(k4*(t/T-k2)))
114 // k1 = t1+t2*Z
115 // k4 = t5+t6*ln(E/GeV)
116
117 virtual G4double ParWC1(){ return 2.632; } // c1
118 virtual G4double ParWC2(){ return -0.00094;} // c2
119 virtual G4double ParWC3(){ return 0.401; } // c3
120 virtual G4double ParWC4(){ return 0.00187; } // c4
121 virtual G4double ParWC5(){ return 1.313; } // c5
122 virtual G4double ParWC6(){ return -0.0686; } // c6
123 // p(t/T) = p1*std::exp((p2-t/T)/p3 - std::exp((p2-t/T)/p3))
124 // p1 = c1+c2*Z
125 // p2 = c3+c4*Z
126 // p3 = c5 + c6*ln(E/GeV)
127
128 virtual G4double ParSpotN1(){ return 93.; } // n1
129 virtual G4double ParSpotN2(){ return 0.876;} // n2
130 // Fluctuations on radial profiles through number of spots
131 // The total number of spots needed for a shower is
132 // Ns = n1*ln(Z)(E/GeV)**n2
133
134 // The number of spots per longitudinal interval is:
135 // (1/Ns)(dNs(t)/dt) = f(t)
136 // = (beta*t)**(alpha-1)*beta*std::exp(-beta*t)/Gamma(alpha)
137 // <t> = alpha_s/beta_s
138 // Ts = (alpha_s-1)/beta_s
139 // and
140 // Ts = T*(t1+t2*Z)
141 // alpha_s = alpha*(a1+a2*Z)
142
143 virtual G4double ParSpotT1(){ return 0.698; } // t1
144 virtual G4double ParSpotT2(){ return 0.00212;} // t2
145
146 virtual G4double ParSpotA1(){ return 0.639; } //a1
147 virtual G4double ParSpotA2(){ return 0.00334;} //a2
148
149};
150
151#endif
double G4double
Definition: G4Types.hh:83