Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-02-23 09:22:31

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 /// \file ExGflashHomoShowerTuning.hh
0028 /// \brief Definition of the ExGflashHomoShowerTuning class
0029 //
0030 // ---------------------------------------------------------------
0031 //  GEANT 4 class header file
0032 //
0033 //  ExGflashHomoShowerTuning
0034 //
0035 //  Class description:
0036 //
0037 //  Tuning class for GFlash homogeneous shower parameterisation.
0038 //  Definitions:
0039 //    <t>: shower center of gravity
0040 //      T: Depth at shower maximum
0041 //     Ec: Critical energy
0042 //     X0: Radiation length
0043 //     y = E/Ec
0044 //
0045 //  Homogeneous media:
0046 //    Average shower profile
0047 //    (1/E)(dE(t)/dt) = f(t)
0048 //                    = (beta*t)**(alpha-1)*beta*std::exp(-beta*t)/Gamma(alpha)
0049 //    where Gamma is the Gamma function
0050 //
0051 //    <t> = alpha/beta
0052 //      T = (alpha-1)/beta
0053 //    and
0054 //      T = ln(y) + t1
0055 //  alpha = a1+(a2+a3/Z)ln(y)
0056 
0057 // Author: J.P. Wellisch - October 2004
0058 //---------------------------------------------------------------
0059 
0060 #ifndef ExGflashHomoShowerTuning_hh
0061 #define ExGflashHomoShowerTuning_hh
0062 
0063 #include "GVFlashHomoShowerTuning.hh"
0064 
0065 class ExGflashHomoShowerTuning : public GVFlashHomoShowerTuning
0066 {
0067   public:
0068     ExGflashHomoShowerTuning() = default;
0069     ~ExGflashHomoShowerTuning() override = default;
0070 
0071   public:  // with description
0072     G4double ParAveT1() override { return -0.812; }  // t1
0073     G4double ParAveA1() override { return 0.81; }  // a1
0074     G4double ParAveA2() override { return 0.458; }  // a2
0075     G4double ParAveA3() override { return 2.26; }  // a3
0076 
0077     G4double ParSigLogT1() override { return -1.4; }  // t1
0078     G4double ParSigLogT2() override { return 1.26; }  // t2
0079     // std::sqrt(var(ln(T))) = 1/(t+t2*ln(y))
0080 
0081     G4double ParSigLogA1() override { return -0.58; }  // a1
0082     G4double ParSigLogA2() override { return 0.86; }  // a2
0083     // std::sqrt(var(ln(alpha))) = 1/(a1+a2*ln(y))
0084 
0085     G4double ParRho1() override { return 0.705; }  // r1
0086     G4double ParRho2() override { return -0.023; }  // r2
0087     // Correlation(ln(T),ln(alpha))=r1+r2*ln(y)
0088 
0089     // Radial profiles
0090     // f(r) := (1/dE(t))(dE(t,r)/dr)
0091     // Ansatz:
0092     // f(r) = p(2*r*Rc**2)/(r**2+Rc**2)**2+(1-p)*(2*r*Rt**2)/(r**2+Rt**2)**2,
0093     //        0<p<1
0094 
0095     G4double ParRC1() override { return 0.0251; }  // c1
0096     G4double ParRC2() override { return 0.00319; }  // c2
0097     G4double ParRC3() override { return 0.1162; }  // c3
0098     G4double ParRC4() override { return -0.000381; }  // c4
0099     // Rc (t/T)= z1 +z2*t/T
0100     // z1 = c1+c2*ln(E/GeV)
0101     // z2 = c3+c4*Z
0102 
0103     G4double ParRT1() override { return 0.659; }  // t1
0104     G4double ParRT2() override { return -0.00309; }  // t2
0105     G4double ParRT3() override { return 0.645; }  // k2
0106     G4double ParRT4() override { return -2.59; }  // k3
0107     G4double ParRT5() override { return 0.3585; }  // t5
0108     G4double ParRT6() override { return 0.0412; }  // t6
0109     // Rt (t/T)= k1*(std::exp(k3*(t/T-k2))+std::exp(k4*(t/T-k2)))
0110     // k1 = t1+t2*Z
0111     // k4 = t5+t6*ln(E/GeV)
0112 
0113     G4double ParWC1() override { return 2.632; }  // c1
0114     G4double ParWC2() override { return -0.00094; }  // c2
0115     G4double ParWC3() override { return 0.401; }  // c3
0116     G4double ParWC4() override { return 0.00187; }  // c4
0117     G4double ParWC5() override { return 1.313; }  // c5
0118     G4double ParWC6() override { return -0.0686; }  // c6
0119     // p(t/T) = p1*std::exp((p2-t/T)/p3 - std::exp((p2-t/T)/p3))
0120     // p1 = c1+c2*Z
0121     // p2 = c3+c4*Z
0122     // p3 = c5 + c6*ln(E/GeV)
0123 
0124     G4double ParSpotN1() override { return 93.; }  // n1
0125     G4double ParSpotN2() override { return 0.876; }  // n2
0126     // Fluctuations on radial profiles through number of spots
0127     // The total number of spots needed for a shower is
0128     // Ns = n1*ln(Z)(E/GeV)**n2
0129 
0130     // The number of spots per longitudinal interval is:
0131     // (1/Ns)(dNs(t)/dt) = f(t)
0132     //  = (beta*t)**(alpha-1)*beta*std::exp(-beta*t)/Gamma(alpha)
0133     // <t> = alpha_s/beta_s
0134     // Ts = (alpha_s-1)/beta_s
0135     // and
0136     // Ts = T*(t1+t2*Z)
0137     // alpha_s = alpha*(a1+a2*Z)
0138 
0139     G4double ParSpotT1() override { return 0.698; }  // t1
0140     G4double ParSpotT2() override { return 0.00212; }  // t2
0141 
0142     G4double ParSpotA1() override { return 0.639; }  // a1
0143     G4double ParSpotA2() override { return 0.00334; }  // a2
0144 };
0145 
0146 #endif