ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
GVFlashHomoShowerTuning.hh
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file GVFlashHomoShowerTuning.hh
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 #ifndef GVFlashHomoShowerTuning_hh
59 #define GVFlashHomoShowerTuning_hh
60 
61 #include "G4Types.hh"
62 
64 {
65  public:
68 
69  public: // with description
70 
71  virtual G4double ParAveT1(){ return -0.812;} // t1
72  virtual G4double ParAveA1(){ return 0.81; } // a1
73  virtual G4double ParAveA2(){ return 0.458; } // a2
74  virtual G4double ParAveA3(){ return 2.26; } // a3
75 
76  virtual G4double ParSigLogT1(){ return -1.4;} // t1
77  virtual G4double ParSigLogT2(){ return 1.26;} // t2
78  // std::sqrt(var(ln(T))) = 1/(t+t2*ln(y))
79 
80  virtual G4double ParSigLogA1(){ return -0.58;} // a1
81  virtual G4double ParSigLogA2(){ return 0.86; } // a2
82  // std::sqrt(var(ln(alpha))) = 1/(a1+a2*ln(y))
83 
84  virtual G4double ParRho1(){ return 0.705; } // r1
85  virtual G4double ParRho2(){ return -0.023;} // r2
86  // Correlation(ln(T),ln(alpha))=r1+r2*ln(y)
87 
88  // Radial profiles
89  // f(r) := (1/dE(t))(dE(t,r)/dr)
90  // Ansatz:
91  // f(r) = p(2*r*Rc**2)/(r**2+Rc**2)**2+(1-p)*(2*r*Rt**2)/(r**2+Rt**2)**2,
92  // 0<p<1
93 
94  virtual G4double ParRC1(){ return 0.0251; } // c1
95  virtual G4double ParRC2(){ return 0.00319; } // c2
96  virtual G4double ParRC3(){ return 0.1162; } // c3
97  virtual G4double ParRC4(){ return -0.000381;} // c4
98  // Rc (t/T)= z1 +z2*t/T
99  // z1 = c1+c2*ln(E/GeV)
100  // z2 = c3+c4*Z
101 
102  virtual G4double ParRT1(){ return 0.659; } // t1
103  virtual G4double ParRT2(){ return -0.00309;} // t2
104  virtual G4double ParRT3(){ return 0.645; } // k2
105  virtual G4double ParRT4(){ return -2.59; } // k3
106  virtual G4double ParRT5(){ return 0.3585; } // t5
107  virtual G4double ParRT6(){ return 0.0412; } // t6
108  // Rt (t/T)= k1*(std::exp(k3*(t/T-k2))+std::exp(k4*(t/T-k2)))
109  // k1 = t1+t2*Z
110  // k4 = t5+t6*ln(E/GeV)
111 
112  virtual G4double ParWC1(){ return 2.632; } // c1
113  virtual G4double ParWC2(){ return -0.00094;} // c2
114  virtual G4double ParWC3(){ return 0.401; } // c3
115  virtual G4double ParWC4(){ return 0.00187; } // c4
116  virtual G4double ParWC5(){ return 1.313; } // c5
117  virtual G4double ParWC6(){ return -0.0686; } // c6
118  // p(t/T) = p1*std::exp((p2-t/T)/p3 - std::exp((p2-t/T)/p3))
119  // p1 = c1+c2*Z
120  // p2 = c3+c4*Z
121  // p3 = c5 + c6*ln(E/GeV)
122 
123  virtual G4double ParSpotN1(){ return 93.; } // n1
124  virtual G4double ParSpotN2(){ return 0.876;} // n2
125  // Fluctuations on radial profiles through number of spots
126  // The total number of spots needed for a shower is
127  // Ns = n1*ln(Z)(E/GeV)**n2
128 
129  // The number of spots per longitudinal interval is:
130  // (1/Ns)(dNs(t)/dt) = f(t)
131  // = (beta*t)**(alpha-1)*beta*std::exp(-beta*t)/Gamma(alpha)
132  // <t> = alpha_s/beta_s
133  // Ts = (alpha_s-1)/beta_s
134  // and
135  // Ts = T*(t1+t2*Z)
136  // alpha_s = alpha*(a1+a2*Z)
137 
138  virtual G4double ParSpotT1(){ return 0.698; } // t1
139  virtual G4double ParSpotT2(){ return 0.00212;} // t2
140 
141  virtual G4double ParSpotA1(){ return 0.639; } //a1
142  virtual G4double ParSpotA2(){ return 0.00334;} //a2
143 
144 };
145 
146 #endif