00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef MJGeneratorPNNLCascade_h
00021 #define MJGeneratorPNNLCascade_h 1
00022
00023
00024 #include "globals.hh"
00025 #include "generators/MJGeneratorPNNLLookup.hh"
00026
00027 #include <iostream.h>
00028 using namespace std;
00029
00030 class MJGeneratorPNNLCascade
00031 {
00032 public:
00033 MJGeneratorPNNLCascade(){ };
00034 MJGeneratorPNNLCascade(G4int particle_type,
00035 G4double A, G4double Z,
00036 G4double E_endpoint, G4int delta_L,
00037 G4int num_gammas, G4double* gamma_list);
00038 MJGeneratorPNNLCascade(const MJGeneratorPNNLCascade& Cascade);
00039 ~MJGeneratorPNNLCascade();
00040 void operator=(const MJGeneratorPNNLCascade& Cascade);
00041
00042 void SetChargedParticleType(G4int itype) {fType = itype;};
00043 void SetA(G4double A) {fA = A;};
00044 void SetZ(G4double Z) {fZ = Z;};
00045 void SetEndpointE(G4double E_endpoint) {fE_endpoint = E_endpoint;};
00046 void SetDeltaL(G4int delta_L) {fDelta_L = delta_L;};
00047 void SetGammaList(G4int num_gammas, G4double* gamma_list);
00048
00049 G4int GetChargedParticleType() const {return fType; };
00050 G4double GetA() const {return fA; };
00051 G4double GetZ() const {return fZ; };
00052 G4double GetEndpointE() const {return fE_endpoint; };
00053 G4int GetDeltaL() const {return fDelta_L; };
00054 G4int GetNumGammas() const {return fNum_gammas; };
00055 G4double* GetGammaList() const {return fGamma_list; };
00056 G4double* GetBetaETable() const
00057 {return f_pBetaEnergyGen->GetXTable(); };
00058 G4double* GetBetaDistTable() const
00059 {return f_pBetaEnergyGen->GetDistTable(); };
00060 G4double* GetBetaLookupTable() const
00061 {return f_pBetaEnergyGen->GetLookupTable();};
00062
00063 G4double DoSampleChargedParticleEnergy() const;
00064 void DoPrintCascade() const;
00065
00066 private:
00067 G4int fType;
00068 G4double fA;
00069 G4double fZ;
00070 G4double fE_endpoint;
00071 G4int fDelta_L;
00072 G4int fNum_gammas;
00073 G4double* fGamma_list;
00074 MJGeneratorPNNLLookup* f_pBetaEnergyGen;
00075 G4double fE_alpha;
00076
00077 const static G4int kNUM_BETA_TABLE_ELEMENTS;
00078 const static G4int kPARTICLE_INDEX_ALPHA;
00079 const static G4int kPARTICLE_INDEX_BETA;
00080 const static G4int kPARTICLE_INDEX_POSITRON;
00081
00082 void Setup_beta_shape(G4double Qval, G4double Z, G4double A,
00083 G4int IDL, G4int num_entries,
00084 G4double* E_arr, G4double* Beta_arr);
00085 G4double DoSampleBetaDist() const;
00086 };
00087 #endif
00088
00089