00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041 #ifndef GFlashHomoShowerParameterisation_h
00042 #define GFlashHomoShowerParameterisation_h 1
00043
00044 #include "globals.hh"
00045 #include "GVFlashHomoShowerTuning.hh"
00046 #include "GVFlashShowerParameterisation.hh"
00047
00048 class G4Material;
00049
00050 class GFlashHomoShowerParameterisation : public GVFlashShowerParameterisation
00051 {
00052 public:
00053
00054 GFlashHomoShowerParameterisation(G4Material * aMat,
00055 GVFlashHomoShowerTuning * aPar = 0);
00056 ~GFlashHomoShowerParameterisation();
00057
00058 void ComputeRadialParameters(G4double y, G4double Tau);
00059 void GenerateLongitudinalProfile(G4double Energy);
00060 void ComputeZAX0EFFetc();
00061
00062 G4double IntegrateEneLongitudinal(G4double LongitudinalStep);
00063 G4double IntegrateNspLongitudinal(G4double LongitudinalStep);
00064 G4double ComputeTau(G4double LongitudinalPosition);
00065
00066 G4double GeneratePhi();
00067 G4double GenerateRadius(G4int ispot, G4double Energy,
00068 G4double LongitudinalPosition);
00069 G4double GenerateExponential(G4double Energy);
00070 void SetMaterial(G4Material *mat);
00071
00072 inline G4double GetAveR99() {return (3.5 * Rm);}
00073 inline G4double GetAveR90() {return (1.5 * Rm);}
00074
00075 inline G4double GetAveTmx() {return (X0 * std::exp(AveLogTmaxh));}
00076 inline G4double GetAveT99() {return (X0 * AveLogTmaxh/(AveLogAlphah-1.00));}
00077 inline G4double GetAveT90() {return (2.5* X0*std::exp( AveLogTmaxh) );}
00078
00079 inline G4double GetNspot(){ return NSpot;}
00080 inline G4double GetX0(){return X0;}
00081 inline G4double GetEc(){return Ec;}
00082 inline G4double GetRm(){return Rm;}
00083
00084 private:
00085
00086 G4Material *material;
00087
00088
00089 G4double ConstantResolution;
00090 G4double NoiseResolution;
00091 G4double SamplingResolution;
00092
00093
00094 GVFlashHomoShowerTuning * thePar;
00095 G4bool owning;
00096
00097
00098
00099 G4double ParAveT1;
00100 G4double ParAveA1,ParAveA2,ParAveA3;
00101 G4double ParSigLogT1,ParSigLogT2;
00102 G4double ParSigLogA1,ParSigLogA2;
00103 G4double ParRho1,ParRho2;
00104
00105 void ComputeLongitudinalParameters(G4double y);
00106 void GenerateEnergyProfile(G4double y);
00107 void GenerateNSpotProfile(G4double y);
00108
00109
00110 G4double ParRC1,ParRC2,ParRC3,ParRC4;
00111 G4double ParWC1,ParWC2,ParWC3;
00112 G4double ParWC4,ParWC5,ParWC6;
00113 G4double ParRT1,ParRT2,ParRT3,ParRT4;
00114 G4double ParRT5,ParRT6;
00115
00116
00117 G4double ParSpotT1,ParSpotT2,ParSpotA1, ParSpotA2;
00118 G4double ParSpotN1,ParSpotN2;
00119
00120
00121
00122
00123 G4double AveLogAlphah,AveLogTmaxh;
00124 G4double SigmaLogAlphah,SigmaLogTmaxh;
00125 G4double Rhoh;
00126 G4double Alphah,Tmaxh,Betah;
00127
00128
00129 G4double NSpot,AlphaNSpot,TNSpot,BetaNSpot;
00130
00131
00132 G4double RadiusCore, WeightCore,RadiusTail;
00133 };
00134
00135 #endif
00136