Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-01-18 09:59:30

0001 //
0002 // ********************************************************************
0003 // * License and Disclaimer                                           *
0004 // *                                                                  *
0005 // * The  Geant4 software  is  copyright of the Copyright Holders  of *
0006 // * the Geant4 Collaboration.  It is provided  under  the terms  and *
0007 // * conditions of the Geant4 Software License,  included in the file *
0008 // * LICENSE and available at  http://cern.ch/geant4/license .  These *
0009 // * include a list of copyright holders.                             *
0010 // *                                                                  *
0011 // * Neither the authors of this software system, nor their employing *
0012 // * institutes,nor the agencies providing financial support for this *
0013 // * work  make  any representation or  warranty, express or implied, *
0014 // * regarding  this  software system or assume any liability for its *
0015 // * use.  Please see the license in the file  LICENSE  and URL above *
0016 // * for the full disclaimer and the limitation of liability.         *
0017 // *                                                                  *
0018 // * This  code  implementation is the result of  the  scientific and *
0019 // * technical work of the GEANT4 collaboration.                      *
0020 // * By using,  copying,  modifying or  distributing the software (or *
0021 // * any work based  on the software)  you  agree  to acknowledge its *
0022 // * use  in  resulting  scientific  publications,  and indicate your *
0023 // * acceptance of all terms of the Geant4 Software license.          *
0024 // ********************************************************************
0025 //
0026 //
0027 //
0028 //
0029 // ---------------------------------------------------------------
0030 //  GEANT 4 class header file
0031 //
0032 //  GVFlashHomoShowerTuning
0033 //
0034 //  Class description:
0035 //
0036 //  Tuning class for GFlash homogeneous shower parameterisation.
0037 //  Definitions:
0038 //    <t>: shower center of gravity
0039 //      T: Depth at shower maximum
0040 //     Ec: Critical energy
0041 //     X0: Radiation length
0042 //     y = E/Ec
0043 //
0044 //  Homogeneous media:
0045 //    Average shower profile
0046 //    (1/E)(dE(t)/dt) = f(t)
0047 //                    = (beta*t)**(alpha-1)*beta*std::exp(-beta*t)/Gamma(alpha)
0048 //    where Gamma is the Gamma function
0049 //
0050 //    <t> = alpha/beta
0051 //      T = (alpha-1)/beta
0052 //    and
0053 //      T = ln(y) + t1
0054 //  alpha = a1+(a2+a3/Z)ln(y)
0055 
0056 // Author: J.P. Wellisch - October 2004
0057 //
0058 // Usage: use new statement for new instance of class, do not delete.
0059 //        The instance of class will be deleted in
0060 //        GFlashHomoShowerParameterisation Destructor.
0061 
0062 //---------------------------------------------------------------
0063 #ifndef GVFlashHomoShowerTuning_hh
0064 #define GVFlashHomoShowerTuning_hh
0065 
0066 #include "G4Types.hh"
0067 
0068 class GVFlashHomoShowerTuning
0069 {
0070   public:
0071     GVFlashHomoShowerTuning() {}
0072     virtual ~GVFlashHomoShowerTuning() {}
0073   
0074   public: // with description
0075 
0076     virtual G4double ParAveT1(){ return -0.812; } // t1
0077     virtual G4double ParAveA1(){ return  0.81;  } // a1
0078     virtual G4double ParAveA2(){ return  0.458; } // a2
0079     virtual G4double ParAveA3(){ return  2.26;  } // a3
0080   
0081     virtual G4double ParSigLogT1(){ return -1.4; } // t1
0082     virtual G4double ParSigLogT2(){ return  1.26;} // t2
0083       // std::sqrt(var(ln(T))) = 1/(t+t2*ln(y))
0084 
0085     virtual G4double ParSigLogA1(){ return -0.58; } // a1
0086     virtual G4double ParSigLogA2(){ return  0.86; } // a2
0087       // std::sqrt(var(ln(alpha))) = 1/(a1+a2*ln(y))
0088   
0089     virtual G4double ParRho1(){ return  0.705; } // r1
0090     virtual G4double ParRho2(){ return -0.023; } // r2
0091       // Correlation(ln(T),ln(alpha))=r1+r2*ln(y)
0092 
0093     // Radial profiles
0094     // f(r) := (1/dE(t))(dE(t,r)/dr)
0095     // Ansatz:
0096     // f(r) = p(2*r*Rc**2)/(r**2+Rc**2)**2+(1-p)*(2*r*Rt**2)/(r**2+Rt**2)**2,
0097     //        0<p<1
0098 
0099     virtual G4double ParRC1(){ return 0.0251;   } // c1
0100     virtual G4double ParRC2(){ return 0.00319;  } // c2
0101     virtual G4double ParRC3(){ return 0.1162;   } // c3
0102     virtual G4double ParRC4(){ return -0.000381;} // c4
0103       // Rc (t/T)= z1 +z2*t/T
0104       // z1 = c1+c2*ln(E/GeV)
0105       // z2 = c3+c4*Z
0106   
0107     virtual G4double ParRT1(){ return 0.659;   } // t1
0108     virtual G4double ParRT2(){ return -0.00309;} // t2
0109     virtual G4double ParRT3(){ return 0.645;   } // k2
0110     virtual G4double ParRT4(){ return -2.59;   } // k3
0111     virtual G4double ParRT5(){ return 0.3585;  } // t5
0112     virtual G4double ParRT6(){ return 0.0412;  } // t6
0113       // Rt (t/T)= k1*(std::exp(k3*(t/T-k2))+std::exp(k4*(t/T-k2)))
0114       // k1 = t1+t2*Z
0115       // k4 = t5+t6*ln(E/GeV)
0116   
0117     virtual G4double ParWC1(){ return 2.632;   } // c1
0118     virtual G4double ParWC2(){ return -0.00094;} // c2
0119     virtual G4double ParWC3(){ return 0.401;   } // c3
0120     virtual G4double ParWC4(){ return 0.00187; } // c4
0121     virtual G4double ParWC5(){ return 1.313;   } // c5
0122     virtual G4double ParWC6(){ return -0.0686; } // c6
0123       // p(t/T) = p1*std::exp((p2-t/T)/p3 - std::exp((p2-t/T)/p3))
0124       // p1 = c1+c2*Z
0125       // p2 = c3+c4*Z
0126       // p3 = c5 + c6*ln(E/GeV)
0127 
0128     virtual G4double ParSpotN1(){ return 93.;  } // n1
0129     virtual G4double ParSpotN2(){ return 0.876;} // n2
0130       // Fluctuations on radial profiles through number of spots
0131       // The total number of spots needed for a shower is
0132       // Ns = n1*ln(Z)(E/GeV)**n2
0133 
0134     // The number of spots per longitudinal interval is:
0135     // (1/Ns)(dNs(t)/dt) = f(t)
0136     //  = (beta*t)**(alpha-1)*beta*std::exp(-beta*t)/Gamma(alpha)
0137     // <t> = alpha_s/beta_s
0138     // Ts = (alpha_s-1)/beta_s
0139     // and
0140     // Ts = T*(t1+t2*Z)
0141     // alpha_s = alpha*(a1+a2*Z)
0142 
0143     virtual G4double ParSpotT1(){ return 0.698;  } // t1
0144     virtual G4double ParSpotT2(){ return 0.00212;} // t2
0145   
0146     virtual G4double ParSpotA1(){ return 0.639;  } //a1
0147     virtual G4double ParSpotA2(){ return 0.00334;} //a2
0148 
0149 };
0150 
0151 #endif