Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/parameterisations/gflash/src/GFlashHomoShowerParameterisation.cc

Version: [ ReleaseNotes ] [ 1.0 ] [ 1.1 ] [ 2.0 ] [ 3.0 ] [ 3.1 ] [ 3.2 ] [ 4.0 ] [ 4.0.p1 ] [ 4.0.p2 ] [ 4.1 ] [ 4.1.p1 ] [ 5.0 ] [ 5.0.p1 ] [ 5.1 ] [ 5.1.p1 ] [ 5.2 ] [ 5.2.p1 ] [ 5.2.p2 ] [ 6.0 ] [ 6.0.p1 ] [ 6.1 ] [ 6.2 ] [ 6.2.p1 ] [ 6.2.p2 ] [ 7.0 ] [ 7.0.p1 ] [ 7.1 ] [ 7.1.p1 ] [ 8.0 ] [ 8.0.p1 ] [ 8.1 ] [ 8.1.p1 ] [ 8.1.p2 ] [ 8.2 ] [ 8.2.p1 ] [ 8.3 ] [ 8.3.p1 ] [ 8.3.p2 ] [ 9.0 ] [ 9.0.p1 ] [ 9.0.p2 ] [ 9.1 ] [ 9.1.p1 ] [ 9.1.p2 ] [ 9.1.p3 ] [ 9.2 ] [ 9.2.p1 ] [ 9.2.p2 ] [ 9.2.p3 ] [ 9.2.p4 ] [ 9.3 ] [ 9.3.p1 ] [ 9.3.p2 ] [ 9.4 ] [ 9.4.p1 ] [ 9.4.p2 ] [ 9.4.p3 ] [ 9.4.p4 ] [ 9.5 ] [ 9.5.p1 ] [ 9.5.p2 ] [ 9.6 ] [ 9.6.p1 ] [ 9.6.p2 ] [ 9.6.p3 ] [ 9.6.p4 ] [ 10.0 ] [ 10.0.p1 ] [ 10.0.p2 ] [ 10.0.p3 ] [ 10.0.p4 ] [ 10.1 ] [ 10.1.p1 ] [ 10.1.p2 ] [ 10.1.p3 ] [ 10.2 ] [ 10.2.p1 ] [ 10.2.p2 ] [ 10.2.p3 ] [ 10.3 ] [ 10.3.p1 ] [ 10.3.p2 ] [ 10.3.p3 ] [ 10.4 ] [ 10.4.p1 ] [ 10.4.p2 ] [ 10.4.p3 ] [ 10.5 ] [ 10.5.p1 ] [ 10.6 ] [ 10.6.p1 ] [ 10.6.p2 ] [ 10.6.p3 ] [ 10.7 ] [ 10.7.p1 ] [ 10.7.p2 ] [ 10.7.p3 ] [ 10.7.p4 ] [ 11.0 ] [ 11.0.p1 ] [ 11.0.p2 ] [ 11.0.p3, ] [ 11.0.p4 ] [ 11.1 ] [ 11.1.1 ] [ 11.1.2 ] [ 11.1.3 ] [ 11.2 ] [ 11.2.1 ] [ 11.2.2 ] [ 11.3.0 ]

Diff markup

Differences between /parameterisations/gflash/src/GFlashHomoShowerParameterisation.cc (Version 11.3.0) and /parameterisations/gflash/src/GFlashHomoShowerParameterisation.cc (Version 8.0.p1)


  1 //                                                  1 //
  2 // *******************************************      2 // ********************************************************************
  3 // * License and Disclaimer                    <<   3 // * DISCLAIMER                                                       *
  4 // *                                                4 // *                                                                  *
  5 // * The  Geant4 software  is  copyright of th <<   5 // * The following disclaimer summarizes all the specific disclaimers *
  6 // * the Geant4 Collaboration.  It is provided <<   6 // * of contributors to this software. The specific disclaimers,which *
  7 // * conditions of the Geant4 Software License <<   7 // * govern, are listed with their locations in:                      *
  8 // * LICENSE and available at  http://cern.ch/ <<   8 // *   http://cern.ch/geant4/license                                  *
  9 // * include a list of copyright holders.      << 
 10 // *                                                9 // *                                                                  *
 11 // * Neither the authors of this software syst     10 // * Neither the authors of this software system, nor their employing *
 12 // * institutes,nor the agencies providing fin     11 // * institutes,nor the agencies providing financial support for this *
 13 // * work  make  any representation or  warran     12 // * work  make  any representation or  warranty, express or implied, *
 14 // * regarding  this  software system or assum     13 // * regarding  this  software system or assume any liability for its *
 15 // * use.  Please see the license in the file  <<  14 // * use.                                                             *
 16 // * for the full disclaimer and the limitatio << 
 17 // *                                               15 // *                                                                  *
 18 // * This  code  implementation is the result  <<  16 // * This  code  implementation is the  intellectual property  of the *
 19 // * technical work of the GEANT4 collaboratio <<  17 // * GEANT4 collaboration.                                            *
 20 // * By using,  copying,  modifying or  distri <<  18 // * By copying,  distributing  or modifying the Program (or any work *
 21 // * any work based  on the software)  you  ag <<  19 // * based  on  the Program)  you indicate  your  acceptance of  this *
 22 // * use  in  resulting  scientific  publicati <<  20 // * statement, and all its terms.                                    *
 23 // * acceptance of all terms of the Geant4 Sof << 
 24 // *******************************************     21 // ********************************************************************
 25 //                                                 22 //
                                                   >>  23 // $Id: GFlashHomoShowerParameterisation.cc,v 1.4 2005/11/30 19:29:44 gcosmo Exp $
                                                   >>  24 // GEANT4 tag $Name: geant4-08-00-patch-01 $
 26 //                                                 25 //
 27 //                                                 26 //
 28 // -------------------------------------------     27 // ------------------------------------------------------------
 29 // GEANT 4 class implementation                    28 // GEANT 4 class implementation
 30 //                                                 29 //
 31 //      ------- GFlashHomoShowerParameterisati     30 //      ------- GFlashHomoShowerParameterisation -------
 32 //                                                 31 //
 33 // Authors: E.Barberio & Joanna Weng - 9.11.20     32 // Authors: E.Barberio & Joanna Weng - 9.11.2004
 34 // -------------------------------------------     33 // ------------------------------------------------------------
 35                                                    34 
 36 #include <cmath>                               << 
 37                                                << 
 38 #include "GFlashHomoShowerParameterisation.hh" << 
 39 #include "GVFlashShowerParameterisation.hh"        35 #include "GVFlashShowerParameterisation.hh"
 40 #include "G4PhysicalConstants.hh"              <<  36 #include "GFlashHomoShowerParameterisation.hh"
 41 #include "G4SystemOfUnits.hh"                  <<  37 #include <cmath>
 42 #include "Randomize.hh"                            38 #include "Randomize.hh"
 43 #include "G4ios.hh"                                39 #include "G4ios.hh"
 44 #include "G4Material.hh"                           40 #include "G4Material.hh"
 45 #include "G4MaterialTable.hh"                      41 #include "G4MaterialTable.hh"
 46                                                    42 
 47 GFlashHomoShowerParameterisation::GFlashHomoSh <<  43 GFlashHomoShowerParameterisation::
 48                                                <<  44 GFlashHomoShowerParameterisation(G4Material * aMat,
 49   : GVFlashShowerParameterisation(),           <<  45                                  GVFlashHomoShowerTuning * aPar)
 50     ConstantResolution(0.),                    <<  46   : GVFlashShowerParameterisation()
 51     NoiseResolution(0.),                       <<  47 {  
 52     SamplingResolution(0.),                    <<  48   if(!aPar) { thePar = new GVFlashHomoShowerTuning; }
 53     AveLogAlphah(0.),                          <<  49   else      { thePar = aPar; }
 54     AveLogTmaxh(0.),                           << 
 55     SigmaLogAlphah(0.),                        << 
 56     SigmaLogTmaxh(0.),                         << 
 57     Rhoh(0.),                                  << 
 58     Alphah(0.),                                << 
 59     Tmaxh(0.),                                 << 
 60     Betah(0.)                                  << 
 61                                                << 
 62 {                                              << 
 63   if (!aPar) {                                 << 
 64     thePar = new GVFlashHomoShowerTuning;      << 
 65   }                                            << 
 66   else {                                       << 
 67     thePar = aPar;                             << 
 68   }                                            << 
 69                                                    50 
 70   SetMaterial(aMat);                               51   SetMaterial(aMat);
 71   PrintMaterial(aMat);                             52   PrintMaterial(aMat);
 72                                                    53 
 73   /*******************************************     54   /********************************************/
 74   /* Homo Calorimeter                              55   /* Homo Calorimeter                         */
 75   /******************************************* <<  56   /********************************************/ 
 76   // Longitudinal Coefficients for a homogenio     57   // Longitudinal Coefficients for a homogenious calo
 77   // shower max                                    58   // shower max
 78   //                                               59   //
 79   ParAveT1 = thePar->ParAveT1();  // ln (ln y  <<  60   ParAveT1    = thePar->ParAveT1();   // ln (ln y -0.812)  
 80   ParAveA1 = thePar->ParAveA1();  // ln a (0.8 <<  61   ParAveA1    = thePar->ParAveA1();   // ln a (0.81 + (0.458 + 2.26/Z)ln y)
 81   ParAveA2 = thePar->ParAveA2();               <<  62   ParAveA2    = thePar->ParAveA2();
 82   ParAveA3 = thePar->ParAveA3();               <<  63   ParAveA3    = thePar->ParAveA3();
 83                                                    64 
 84   // Variance of shower max                        65   // Variance of shower max
 85   ParSigLogT1 = thePar->ParSigLogT1();  // Sig <<  66   ParSigLogT1 = thePar->ParSigLogT1();     // Sigma T1 (-1.4 + 1.26 ln y)**-1 
 86   ParSigLogT2 = thePar->ParSigLogT2();             67   ParSigLogT2 = thePar->ParSigLogT2();
 87                                                    68 
 88   // variance of 'alpha'                           69   // variance of 'alpha'
 89   //                                               70   //
 90   ParSigLogA1 = thePar->ParSigLogA1();  // Sig <<  71   ParSigLogA1 = thePar->ParSigLogA1();    // Sigma a (-0.58 + 0.86 ln y)**-1 
 91   ParSigLogA2 = thePar->ParSigLogA2();             72   ParSigLogA2 = thePar->ParSigLogA2();
 92                                                    73 
 93   // correlation alpha%T                           74   // correlation alpha%T
 94   //                                               75   //
 95   ParRho1 = thePar->ParRho1();  // Rho = 0.705 <<  76   ParRho1     = thePar->ParRho1();   // Rho = 0.705 -0.023 ln y 
 96   ParRho2 = thePar->ParRho2();                 <<  77   ParRho2     = thePar->ParRho2();
 97                                                    78 
 98   // Radial Coefficients                           79   // Radial Coefficients
 99   // r_C (tau)= z_1 +z_2 tau                       80   // r_C (tau)= z_1 +z_2 tau
100   // r_t (tau)= k1 (std::exp (k3(tau -k2 ))+st     81   // r_t (tau)= k1 (std::exp (k3(tau -k2 ))+std::exp (k_4 (tau- k_2))))
101   //                                               82   //
102   ParRC1 = thePar->ParRC1();  // z_1 = 0.0251  <<  83   ParRC1 =   thePar->ParRC1();   // z_1 = 0.0251 + 0.00319 ln E
103   ParRC2 = thePar->ParRC2();                   <<  84   ParRC2 =   thePar->ParRC2();
104                                                    85 
105   ParRC3 = thePar->ParRC3();  // z_2 = 0.1162  <<  86   ParRC3 =   thePar->ParRC3();   // z_2 = 0.1162 + - 0.000381 Z
106   ParRC4 = thePar->ParRC4();                   <<  87   ParRC4 =   thePar->ParRC4();
107                                                    88 
108   ParWC1 = thePar->ParWC1();                       89   ParWC1 = thePar->ParWC1();
109   ParWC2 = thePar->ParWC2();                       90   ParWC2 = thePar->ParWC2();
110   ParWC3 = thePar->ParWC3();                       91   ParWC3 = thePar->ParWC3();
111   ParWC4 = thePar->ParWC4();                       92   ParWC4 = thePar->ParWC4();
112   ParWC5 = thePar->ParWC5();                   <<  93   ParWC5 = thePar->ParWC5(); 
113   ParWC6 = thePar->ParWC6();                       94   ParWC6 = thePar->ParWC6();
114                                                    95 
115   ParRT1 = thePar->ParRT1();                       96   ParRT1 = thePar->ParRT1();
116   ParRT2 = thePar->ParRT2();                       97   ParRT2 = thePar->ParRT2();
117   ParRT3 = thePar->ParRT3();                       98   ParRT3 = thePar->ParRT3();
118   ParRT4 = thePar->ParRT4();                   <<  99   ParRT4 = thePar->ParRT4(); 
119   ParRT5 = thePar->ParRT5();                      100   ParRT5 = thePar->ParRT5();
120   ParRT6 = thePar->ParRT6();                      101   ParRT6 = thePar->ParRT6();
121                                                   102 
122   // Coeff for fluctueted radial  profiles for    103   // Coeff for fluctueted radial  profiles for a uniform media
123   //                                              104   //
124   ParSpotT1 = thePar->ParSpotT1();  // T_spot  << 105   ParSpotT1   = thePar->ParSpotT1();     // T_spot = T_hom =(0.698 + 0.00212)
125   ParSpotT2 = thePar->ParSpotT2();             << 106   ParSpotT2   = thePar->ParSpotT2();
126                                                   107 
127   ParSpotA1 = thePar->ParSpotA1();  // a_spot= << 108   ParSpotA1   = thePar->ParSpotA1();     // a_spot= a_hom (0.639 + 0.00334)
128   ParSpotA2 = thePar->ParSpotA2();             << 109   ParSpotA2   = thePar->ParSpotA2();  
129                                                   110 
130   ParSpotN1 = thePar->ParSpotN1();  // N_Spot  << 111   ParSpotN1   = thePar->ParSpotN1();     // N_Spot 93 * ln(Z) E ** 0.876   
131   ParSpotN2 = thePar->ParSpotN2();             << 112   ParSpotN2   = thePar->ParSpotN2(); 
132                                                   113 
133   // Inits                                        114   // Inits
134                                                   115 
135   NSpot = 0.00;                                << 116   NSpot         = 0.00;
136   AlphaNSpot = 0.00;                           << 117   AlphaNSpot    = 0.00;
137   TNSpot = 0.00;                               << 118   TNSpot        = 0.00;
138   BetaNSpot = 0.00;                            << 119   BetaNSpot     = 0.00;
139                                                << 120 
140   RadiusCore = 0.00;                           << 121   RadiusCore    = 0.00;
141   WeightCore = 0.00;                           << 122   WeightCore    = 0.00;
142   RadiusTail = 0.00;                           << 123   RadiusTail    = 0.00; 
143                                                   124 
144   G4cout << "/********************************    125   G4cout << "/********************************************/ " << G4endl;
145   G4cout << "  - GFlashHomoShowerParameterisat << 126   G4cout << "  - GFlashHomoShowerParameterisation::Constructor -  " << G4endl;  
146   G4cout << "/********************************    127   G4cout << "/********************************************/ " << G4endl;
147 }                                                 128 }
148                                                   129 
149 void GFlashHomoShowerParameterisation::SetMate << 130 void GFlashHomoShowerParameterisation::SetMaterial(G4Material *mat)
150 {                                                 131 {
151   material = mat;                              << 132   material= mat;
152   Z = GetEffZ(material);                          133   Z = GetEffZ(material);
153   A = GetEffA(material);                          134   A = GetEffA(material);
154   density = material->GetDensity() / (g / cm3) << 135   density = material->GetDensity()/(g/cm3);
155   X0 = material->GetRadlen();                  << 136   X0  = material->GetRadlen(); 
156   // O. I. Dovzhenkko and A. A. Pommanskii     << 137   Ec      = 2.66 * std::pow((X0 * Z / A),1.1); 
157   Ec = 2.66 * std::pow((X0 * Z / A), 1.1);     << 138   G4double Es = 21*MeV;
158   // // Rossi appriximation                    << 139   Rm = X0*Es/Ec;
159   // Ec = 610.0 * MeV / (Z + 1.24);            << 140   // PrintMaterial(); 
160   const G4double Es = 21.2 * MeV;              << 
161   Rm = X0 * Es / Ec;                           << 
162   // PrintMaterial();                          << 
163 }                                                 141 }
164                                                   142 
165 GFlashHomoShowerParameterisation::~GFlashHomoS    143 GFlashHomoShowerParameterisation::~GFlashHomoShowerParameterisation()
166 {                                              << 144 {}
167   delete thePar;                               << 
168 }                                              << 
169                                                   145 
170 void GFlashHomoShowerParameterisation::Generat << 146 void GFlashHomoShowerParameterisation::
                                                   >> 147 GenerateLongitudinalProfile(G4double Energy)
171 {                                                 148 {
172   if (material == 0) {                         << 149   if (material==0) 
173     G4Exception("GFlashHomoShowerParameterisat << 150   {
174                 FatalException, "No material i << 151     G4Exception("GFlashHomoShowerParameterisation::GenerateLongitudinalProfile()",
                                                   >> 152                 "InvalidSetup", FatalException, "No material initialized!");
175   }                                               153   }
176                                                << 154   
177   G4double y = Energy / Ec;                    << 155   G4double y = Energy/Ec;
178   ComputeLongitudinalParameters(y);            << 156   ComputeLongitudinalParameters(y);  
179   GenerateEnergyProfile(y);                       157   GenerateEnergyProfile(y);
180   GenerateNSpotProfile(y);                        158   GenerateNSpotProfile(y);
181 }                                                 159 }
182                                                   160 
183 void GFlashHomoShowerParameterisation::Compute << 161 void
                                                   >> 162 GFlashHomoShowerParameterisation::ComputeLongitudinalParameters(G4double y)
184 {                                                 163 {
185   AveLogTmaxh = std::log(ParAveT1 + std::log(y << 164   AveLogTmaxh  = std::log(ParAveT1 + std::log(y));
186   // ok  <ln T hom>                            << 165     //ok  <ln T hom>
187   AveLogAlphah = std::log(ParAveA1 + (ParAveA2 << 166   AveLogAlphah = std::log(ParAveA1 + (ParAveA2+ParAveA3/Z)*std::log(y));
188   // ok  <ln alpha hom>                        << 167     //ok  <ln alpha hom> 
189                                                << 168 
190   SigmaLogTmaxh = 1.00 / (ParSigLogT1 + ParSig << 169   SigmaLogTmaxh  = 1.00/( ParSigLogT1 + ParSigLogT2*std::log(y)) ;
191   // ok sigma (ln T hom)                       << 170     //ok sigma (ln T hom)
192   SigmaLogAlphah = 1.00 / (ParSigLogA1 + ParSi << 171   SigmaLogAlphah = 1.00/( ParSigLogA1 + ParSigLogA2*std::log(y));
193   // ok sigma (ln alpha hom)                   << 172     //ok sigma (ln alpha hom)
194   Rhoh = ParRho1 + ParRho2 * std::log(y);  //  << 173   Rhoh           = ParRho1+ParRho2*std::log(y);        //ok             
195 }                                                 174 }
196                                                   175 
197 void GFlashHomoShowerParameterisation::Generat    176 void GFlashHomoShowerParameterisation::GenerateEnergyProfile(G4double /* y */)
198 {                                              << 177 { 
199   G4double Correlation1h = std::sqrt((1 + Rhoh << 178   G4double Correlation1h = std::sqrt((1+Rhoh)/2);
200   G4double Correlation2h = std::sqrt((1 - Rhoh << 179   G4double Correlation2h = std::sqrt((1-Rhoh)/2);
201                                                   180 
202   G4double Random1 = G4RandGauss::shoot();        181   G4double Random1 = G4RandGauss::shoot();
203   G4double Random2 = G4RandGauss::shoot();        182   G4double Random2 = G4RandGauss::shoot();
204                                                   183 
205   // Parameters for Enenrgy Profile including  << 184   // Parameters for Enenrgy Profile including correaltion and sigmas 
206                                                << 185  
207   Tmaxh =                                      << 186   Tmaxh  = std::exp( AveLogTmaxh  + SigmaLogTmaxh  *
208     std::exp(AveLogTmaxh + SigmaLogTmaxh * (Co << 187            (Correlation1h*Random1 + Correlation2h*Random2) );
209   Alphah =                                     << 188   Alphah = std::exp( AveLogAlphah + SigmaLogAlphah *
210     std::exp(AveLogAlphah + SigmaLogAlphah * ( << 189            (Correlation1h*Random1 - Correlation2h*Random2) );
211   Betah = (Alphah - 1.00) / Tmaxh;             << 190   Betah  = (Alphah-1.00)/Tmaxh;
212 }                                                 191 }
213                                                   192 
214 void GFlashHomoShowerParameterisation::Generat    193 void GFlashHomoShowerParameterisation::GenerateNSpotProfile(const G4double y)
215 {                                                 194 {
216   TNSpot = Tmaxh * (ParSpotT1 + ParSpotT2 * Z) << 195   TNSpot     = Tmaxh *  (ParSpotT1+ParSpotT2*Z);   // ok
217   AlphaNSpot = Alphah * (ParSpotA1 + ParSpotA2 << 196   AlphaNSpot = Alphah * (ParSpotA1+ParSpotA2*Z);   
218   BetaNSpot = (AlphaNSpot - 1.00) / TNSpot;  / << 197   BetaNSpot  = (AlphaNSpot-1.00)/TNSpot;           // ok 
219   NSpot = ParSpotN1 * std::log(Z) * std::pow(( << 198   NSpot      = ParSpotN1 * std::log(Z)*std::pow((y*Ec)/GeV,ParSpotN2 ); // ok
220 }                                                 199 }
221                                                   200 
222 G4double GFlashHomoShowerParameterisation::       201 G4double GFlashHomoShowerParameterisation::
223 IntegrateEneLongitudinal(G4double Longitudinal    202 IntegrateEneLongitudinal(G4double LongitudinalStep)
224 {                                                 203 {
225   G4double LongitudinalStepInX0 = Longitudinal    204   G4double LongitudinalStepInX0 = LongitudinalStep / X0;
226   G4float x1= Betah*LongitudinalStepInX0;         205   G4float x1= Betah*LongitudinalStepInX0;
227   G4float x2= Alphah;                             206   G4float x2= Alphah;
228   float x3 =  gam(x1,x2);                         207   float x3 =  gam(x1,x2);
229   G4double DEne=x3;                               208   G4double DEne=x3;
230   return DEne;                                    209   return DEne;
231 }                                                 210 }
232                                                   211 
233 G4double GFlashHomoShowerParameterisation::Int << 212 G4double GFlashHomoShowerParameterisation::
                                                   >> 213 IntegrateNspLongitudinal(G4double LongitudinalStep)
234 {                                                 214 {
235   G4double LongitudinalStepInX0 = Longitudinal << 215   G4double LongitudinalStepInX0 = LongitudinalStep / X0; 
236   G4float x1 = BetaNSpot * LongitudinalStepInX << 216   G4float x1 = BetaNSpot*LongitudinalStepInX0;
237   G4float x2 = AlphaNSpot;                        217   G4float x2 = AlphaNSpot;
238   G4float x3 = gam(x1, x2);                    << 218   G4float x3 =  gam(x1,x2);
239   G4double DNsp = x3;                             219   G4double DNsp = x3;
240   return DNsp;                                    220   return DNsp;
241 }                                                 221 }
242                                                   222 
243 G4double GFlashHomoShowerParameterisation::Gen << 223 
244                                                << 224 G4double GFlashHomoShowerParameterisation::
                                                   >> 225 GenerateRadius(G4int ispot, G4double Energy, G4double LongitudinalPosition)
245 {                                                 226 {
246   if (ispot < 1) {                             << 227   if(ispot < 1) 
                                                   >> 228   {
247     // Determine lateral parameters in the mid    229     // Determine lateral parameters in the middle of the step.
248     // They depend on energy & position along     230     // They depend on energy & position along step.
249     //                                            231     //
250     G4double Tau = ComputeTau(LongitudinalPosi    232     G4double Tau = ComputeTau(LongitudinalPosition);
251     ComputeRadialParameters(Energy, Tau);      << 233     ComputeRadialParameters(Energy,Tau);  
252   }                                               234   }
253                                                   235 
254   G4double Radius;                                236   G4double Radius;
255   G4double Random1 = G4UniformRand();             237   G4double Random1 = G4UniformRand();
256   G4double Random2 = G4UniformRand();          << 238   G4double Random2 = G4UniformRand(); 
257                                                   239 
258   if (Random1 < WeightCore)  // WeightCore = p << 240   if(Random1  <WeightCore) //WeightCore = p < w_i  
259   {                                               241   {
260     Radius = Rm * RadiusCore * std::sqrt(Rando << 242     Radius = Rm * RadiusCore * std::sqrt( Random2/(1. - Random2) );
261   }                                               243   }
262   else {                                       << 244   else
263     Radius = Rm * RadiusTail * std::sqrt(Rando << 245   {
264   }                                            << 246     Radius = Rm * RadiusTail * std::sqrt( Random2/(1. - Random2) );
265   Radius = std::min(Radius, DBL_MAX);          << 247   }   
                                                   >> 248   Radius =  std::min(Radius,DBL_MAX);
266   return Radius;                                  249   return Radius;
267 }                                                 250 }
268                                                   251 
269 G4double GFlashHomoShowerParameterisation::Com << 252 G4double GFlashHomoShowerParameterisation::
                                                   >> 253 ComputeTau(G4double LongitudinalPosition)
270 {                                                 254 {
271   G4double tau = LongitudinalPosition / Tmaxh  << 255   G4double tau = LongitudinalPosition / Tmaxh / X0     //<t> = T* a /(a - 1) 
272                  * (Alphah - 1.00) / Alphah *  << 256   * (Alphah-1.00) /Alphah * 
273                  / (std::exp(AveLogAlphah) - 1 << 257   std::exp(AveLogAlphah)/(std::exp(AveLogAlphah)-1.);  //ok 
274   return tau;                                     258   return tau;
275 }                                                 259 }
276                                                   260 
277 void GFlashHomoShowerParameterisation::Compute << 261 void GFlashHomoShowerParameterisation::
                                                   >> 262 ComputeRadialParameters(G4double Energy, G4double Tau)
278 {                                                 263 {
279   G4double z1 = ParRC1 + ParRC2 * std::log(Ene << 264   G4double z1 = ParRC1 + ParRC2* std::log(Energy/GeV)  ;       //ok
280   G4double z2 = ParRC3 + ParRC4 * Z;  // ok    << 265   G4double z2 = ParRC3+ParRC4*Z ;                              //ok
281   RadiusCore = z1 + z2 * Tau;  // ok           << 266   RadiusCore   =  z1 + z2 * Tau  ;                             //ok 
282                                                << 267 
283   G4double p1 = ParWC1 + ParWC2 * Z;  // ok    << 268   G4double p1 = ParWC1+ParWC2*Z;                               //ok
284   G4double p2 = ParWC3 + ParWC4 * Z;  // ok    << 269   G4double p2 = ParWC3+ParWC4*Z;                               //ok
285   G4double p3 = ParWC5 + ParWC6 * std::log(Ene << 270   G4double p3 = ParWC5+ParWC6*std::log(Energy/GeV);            //ok
286                                                << 271 
287   WeightCore = p1 * std::exp((p2 - Tau) / p3 - << 272   WeightCore   =  p1 * std::exp( (p2-Tau)/p3 - std::exp( (p2-Tau) /p3) ); //ok
288                                                << 273 
289   G4double k1 = ParRT1 + ParRT2 * Z;  // ok    << 274   G4double k1 = ParRT1+ParRT2*Z;                   // ok
290   G4double k2 = ParRT3;  // ok                 << 275   G4double k2 = ParRT3;                            // ok
291   G4double k3 = ParRT4;  // ok                 << 276   G4double k3 = ParRT4;                            // ok
292   G4double k4 = ParRT5 + ParRT6 * std::log(Ene << 277   G4double k4 = ParRT5+ParRT6* std::log(Energy/GeV);    // ok
293                                                   278 
294   RadiusTail = k1 * (std::exp(k3 * (Tau - k2)) << 279   RadiusTail   = k1*(std::exp(k3*(Tau-k2))  +
                                                   >> 280   std::exp(k4*(Tau-k2)) );            //ok
295 }                                                 281 }
296                                                   282 
297 G4double GFlashHomoShowerParameterisation::       283 G4double GFlashHomoShowerParameterisation::
298 GenerateExponential(const G4double /* Energy *    284 GenerateExponential(const G4double /* Energy */ )
299 {                                                 285 {
300   G4double ParExp1 =  9./7.*X0;                   286   G4double ParExp1 =  9./7.*X0;
301   G4double random  = -ParExp1*G4RandExponentia << 287   G4double random  = -ParExp1*CLHEP::RandExponential::shoot() ;
302   return random;                                  288   return random;
303 }                                                 289 }
304                                                   290