00001 // 00002 // ******************************************************************** 00003 // * License and Disclaimer * 00004 // * * 00005 // * The Geant4 software is copyright of the Copyright Holders of * 00006 // * the Geant4 Collaboration. It is provided under the terms and * 00007 // * conditions of the Geant4 Software License, included in the file * 00008 // * LICENSE and available at http://cern.ch/geant4/license . These * 00009 // * include a list of copyright holders. * 00010 // * * 00011 // * Neither the authors of this software system, nor their employing * 00012 // * institutes,nor the agencies providing financial support for this * 00013 // * work make any representation or warranty, express or implied, * 00014 // * regarding this software system or assume any liability for its * 00015 // * use. Please see the license in the file LICENSE and URL above * 00016 // * for the full disclaimer and the limitation of liability. * 00017 // * * 00018 // * This code implementation is the result of the scientific and * 00019 // * technical work of the GEANT4 collaboration. * 00020 // * By using, copying, modifying or distributing the software (or * 00021 // * any work based on the software) you agree to acknowledge its * 00022 // * use in resulting scientific publications, and indicate your * 00023 // * acceptance of all terms of the Geant4 Software license. * 00024 // ******************************************************************** 00025 // 00026 // 00027 // $Id: GVFlashHomoShowerTuning.hh 69796 2013-05-15 13:26:12Z gcosmo $ 00028 // 00029 // 00030 // --------------------------------------------------------------- 00031 // GEANT 4 class header file 00032 // 00033 // GVFlashHomoShowerTuning 00034 // 00035 // Class description: 00036 // 00037 // Tuning class for GFlash homogeneous shower parameterisation. 00038 // Definitions: 00039 // <t>: shower center of gravity 00040 // T: Depth at shower maximum 00041 // Ec: Critical energy 00042 // X0: Radiation length 00043 // y = E/Ec 00044 // 00045 // Homogeneous media: 00046 // Average shower profile 00047 // (1/E)(dE(t)/dt) = f(t) 00048 // = (beta*t)**(alpha-1)*beta*std::exp(-beta*t)/Gamma(alpha) 00049 // where Gamma is the Gamma function 00050 // 00051 // <t> = alpha/beta 00052 // T = (alpha-1)/beta 00053 // and 00054 // T = ln(y) + t1 00055 // alpha = a1+(a2+a3/Z)ln(y) 00056 00057 // Author: J.P. Wellisch - October 2004 00058 //--------------------------------------------------------------- 00059 #ifndef GVFlashHomoShowerTuning_hh 00060 #define GVFlashHomoShowerTuning_hh 00061 00062 class GVFlashHomoShowerTuning 00063 { 00064 public: 00065 GVFlashHomoShowerTuning() {} 00066 virtual ~GVFlashHomoShowerTuning() {} 00067 00068 public: // with description 00069 00070 virtual G4double ParAveT1(){ return -0.812;} // t1 00071 virtual G4double ParAveA1(){ return 0.81; } // a1 00072 virtual G4double ParAveA2(){ return 0.458; } // a2 00073 virtual G4double ParAveA3(){ return 2.26; } // a3 00074 00075 virtual G4double ParSigLogT1(){ return -1.4;} // t1 00076 virtual G4double ParSigLogT2(){ return 1.26;} // t2 00077 // std::sqrt(var(ln(T))) = 1/(t+t2*ln(y)) 00078 00079 virtual G4double ParSigLogA1(){ return -0.58;} // a1 00080 virtual G4double ParSigLogA2(){ return 0.86; } // a2 00081 // std::sqrt(var(ln(alpha))) = 1/(a1+a2*ln(y)) 00082 00083 virtual G4double ParRho1(){ return 0.705; } // r1 00084 virtual G4double ParRho2(){ return -0.023;} // r2 00085 // Correlation(ln(T),ln(alpha))=r1+r2*ln(y) 00086 00087 // Radial profiles 00088 // f(r) := (1/dE(t))(dE(t,r)/dr) 00089 // Ansatz: 00090 // f(r) = p(2*r*Rc**2)/(r**2+Rc**2)**2+(1-p)*(2*r*Rt**2)/(r**2+Rt**2)**2, 00091 // 0<p<1 00092 00093 virtual G4double ParRC1(){ return 0.0251; } // c1 00094 virtual G4double ParRC2(){ return 0.00319; } // c2 00095 virtual G4double ParRC3(){ return 0.1162; } // c3 00096 virtual G4double ParRC4(){ return -0.000381;} // c4 00097 // Rc (t/T)= z1 +z2*t/T 00098 // z1 = c1+c2*ln(E/GeV) 00099 // z2 = c3+c4*Z 00100 00101 virtual G4double ParRT1(){ return 0.659; } // t1 00102 virtual G4double ParRT2(){ return -0.00309;} // t2 00103 virtual G4double ParRT3(){ return 0.645; } // k2 00104 virtual G4double ParRT4(){ return -2.59; } // k3 00105 virtual G4double ParRT5(){ return 0.3585; } // t5 00106 virtual G4double ParRT6(){ return 0.0412; } // t6 00107 // Rt (t/T)= k1*(std::exp(k3*(t/T-k2))+std::exp(k4*(t/T-k2))) 00108 // k1 = t1+t2*Z 00109 // k4 = t5+t6*ln(E/GeV) 00110 00111 virtual G4double ParWC1(){ return 2.632; } // c1 00112 virtual G4double ParWC2(){ return -0.00094;} // c2 00113 virtual G4double ParWC3(){ return 0.401; } // c3 00114 virtual G4double ParWC4(){ return 0.00187; } // c4 00115 virtual G4double ParWC5(){ return 1.313; } // c5 00116 virtual G4double ParWC6(){ return -0.0686; } // c6 00117 // p(t/T) = p1*std::exp((p2-t/T)/p3 - std::exp((p2-t/T)/p3)) 00118 // p1 = c1+c2*Z 00119 // p2 = c3+c4*Z 00120 // p3 = c5 + c6*ln(E/GeV) 00121 00122 virtual G4double ParSpotN1(){ return 93.; } // n1 00123 virtual G4double ParSpotN2(){ return 0.876;} // n2 00124 // Fluctuations on radial profiles through number of spots 00125 // The total number of spots needed for a shower is 00126 // Ns = n1*ln(Z)(E/GeV)**n2 00127 00128 // The number of spots per longitudinal interval is: 00129 // (1/Ns)(dNs(t)/dt) = f(t) 00130 // = (beta*t)**(alpha-1)*beta*std::exp(-beta*t)/Gamma(alpha) 00131 // <t> = alpha_s/beta_s 00132 // Ts = (alpha_s-1)/beta_s 00133 // and 00134 // Ts = T*(t1+t2*Z) 00135 // alpha_s = alpha*(a1+a2*Z) 00136 00137 virtual G4double ParSpotT1(){ return 0.698; } // t1 00138 virtual G4double ParSpotT2(){ return 0.00212;} // t2 00139 00140 virtual G4double ParSpotA1(){ return 0.639; } //a1 00141 virtual G4double ParSpotA2(){ return 0.00334;} //a2 00142 00143 }; 00144 00145 #endif