Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-09-17 08:59:53

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     virtual G4double ParAveT1() { return -0.812; }  // t1
0076     virtual G4double ParAveA1() { return 0.81; }  // a1
0077     virtual G4double ParAveA2(){ return  0.458; } // a2
0078     virtual G4double ParAveA3() { return 2.26; }  // a3
0079 
0080     virtual G4double ParSigLogT1() { return -1.4; }  // t1
0081     virtual G4double ParSigLogT2() { return 1.26; }  // t2
0082     // std::sqrt(var(ln(T))) = 1/(t+t2*ln(y))
0083 
0084     virtual G4double ParSigLogA1(){ return -0.58; } // a1
0085     virtual G4double ParSigLogA2(){ return  0.86; } // a2
0086       // std::sqrt(var(ln(alpha))) = 1/(a1+a2*ln(y))
0087 
0088     virtual G4double ParRho1(){ return  0.705; } // r1
0089     virtual G4double ParRho2(){ return -0.023; } // r2
0090       // Correlation(ln(T),ln(alpha))=r1+r2*ln(y)
0091 
0092     // Radial profiles
0093     // f(r) := (1/dE(t))(dE(t,r)/dr)
0094     // Ansatz:
0095     // f(r) = p(2*r*Rc**2)/(r**2+Rc**2)**2+(1-p)*(2*r*Rt**2)/(r**2+Rt**2)**2,
0096     //        0<p<1
0097 
0098     virtual G4double ParRC1(){ return 0.0251;   } // c1
0099     virtual G4double ParRC2(){ return 0.00319;  } // c2
0100     virtual G4double ParRC3(){ return 0.1162;   } // c3
0101     virtual G4double ParRC4(){ return -0.000381;} // c4
0102       // Rc (t/T)= z1 +z2*t/T
0103       // z1 = c1+c2*ln(E/GeV)
0104       // z2 = c3+c4*Z
0105 
0106     virtual G4double ParRT1(){ return 0.659;   } // t1
0107     virtual G4double ParRT2(){ return -0.00309;} // t2
0108     virtual G4double ParRT3(){ return 0.645;   } // k2
0109     virtual G4double ParRT4(){ return -2.59;   } // k3
0110     virtual G4double ParRT5(){ return 0.3585;  } // t5
0111     virtual G4double ParRT6(){ return 0.0412;  } // t6
0112       // Rt (t/T)= k1*(std::exp(k3*(t/T-k2))+std::exp(k4*(t/T-k2)))
0113       // k1 = t1+t2*Z
0114       // k4 = t5+t6*ln(E/GeV)
0115 
0116     virtual G4double ParWC1(){ return 2.632;   } // c1
0117     virtual G4double ParWC2(){ return -0.00094;} // c2
0118     virtual G4double ParWC3(){ return 0.401;   } // c3
0119     virtual G4double ParWC4(){ return 0.00187; } // c4
0120     virtual G4double ParWC5(){ return 1.313;   } // c5
0121     virtual G4double ParWC6(){ return -0.0686; } // c6
0122       // p(t/T) = p1*std::exp((p2-t/T)/p3 - std::exp((p2-t/T)/p3))
0123       // p1 = c1+c2*Z
0124       // p2 = c3+c4*Z
0125       // p3 = c5 + c6*ln(E/GeV)
0126 
0127     virtual G4double ParSpotN1(){ return 93.;  } // n1
0128     virtual G4double ParSpotN2(){ return 0.876;} // n2
0129       // Fluctuations on radial profiles through number of spots
0130       // The total number of spots needed for a shower is
0131       // Ns = n1*ln(Z)(E/GeV)**n2
0132 
0133     // The number of spots per longitudinal interval is:
0134     // (1/Ns)(dNs(t)/dt) = f(t)
0135     //  = (beta*t)**(alpha-1)*beta*std::exp(-beta*t)/Gamma(alpha)
0136     // <t> = alpha_s/beta_s
0137     // Ts = (alpha_s-1)/beta_s
0138     // and
0139     // Ts = T*(t1+t2*Z)
0140     // alpha_s = alpha*(a1+a2*Z)
0141 
0142     virtual G4double ParSpotT1(){ return 0.698;  } // t1
0143     virtual G4double ParSpotT2() { return 0.00212; }  // t2
0144 
0145     virtual G4double ParSpotA1() { return 0.639; }  // a1
0146     virtual G4double ParSpotA2() { return 0.00334; }  // a2
0147 };
0148 
0149 #endif