MollerPrimaryGenAction.hh

Go to the documentation of this file.
00001 
00002 #ifndef MollerPrimaryGenAction_h
00003 #define MollerPrimaryGenAction_h 1
00004 
00005 #include "G4VUserPrimaryGeneratorAction.hh"
00006 #include "globals.hh"
00007 #include "Randomize.hh"
00008 
00009 #include "Rtypes.h"
00010 
00011 class G4ParticleGun;
00012 class G4Event;
00013 class MollerPrimaryGeneratorMessenger;
00014 
00015 
00016 typedef struct {
00017   double theta;
00018   double y;
00019   double xs;
00020 }cms_cross_section_t;
00021 
00022 typedef struct {
00023   double theta;
00024   double Eprime;
00025   double xs;
00026 }double_differential_t;
00027 
00028 class MollerPrimaryGenAction : public G4VUserPrimaryGeneratorAction
00029 {
00030  
00031 public:
00032   MollerPrimaryGenAction();
00033   ~MollerPrimaryGenAction();
00034 
00035 public:
00036   void GeneratePrimaries(G4Event* anEvent);
00037   void GeneratePrimaries_moller_dustin(G4Event* anEvent);
00038   void GeneratePrimaries_elasticep_dustin(G4Event* anevent);
00039   void GeneratePrimaries_inelasticep_dustin(G4Event* anevent);
00040   void GeneratePrimaries_phasespace_mollers(G4Event* anevent);
00041   void GeneratePrimaries_phasespace_motts(G4Event* anevent);
00042   void GeneratePrimaries_pion(G4Event* anevent);
00043   void SetGenerator(G4int val) { GeneratorNumber = val;}
00044   G4int GetGenerator() {return GeneratorNumber;}
00045   double EnergNumInt(double btt, double a0, double b0);
00046   double RadProfile(double eloss, double btt);
00047 
00048   void setSeedValue (G4bool value) { fSetSeedConst = value; 
00049     G4cout<<"Setting fSetSeedConst"<<G4endl;};
00050 
00051   Double_t wiser_sigma(Double_t ebeam, Double_t pf, Double_t thf, Double_t rl, Int_t type);
00052   static Double_t wiser_all_fit( Double_t *x, Double_t *par );
00053 
00054 
00055 private:
00056   G4ParticleGun*                    particleGun;
00057   MollerPrimaryGeneratorMessenger*  gunMessenger;   //messenger of this class
00058   G4int                             GeneratorNumber; // Number of generator to use
00059   G4int                             eventnumber;
00060   static const G4int nbin = 1000;
00061   static const G4int nbinIneEP = 100;
00062   cms_cross_section_t XStable[nbin];
00063   double_differential_t DDtable[nbinIneEP][nbinIneEP];
00064   const G4double ebeam;
00065   const G4double mp;
00066   const G4double bremcut; //lower limit of bremsstrahlung (1 keV)
00067   const G4double me;
00068 
00069 
00070   G4bool fSetSeedConst;
00071 };
00072 
00073 #endif

Generated on 16 Jun 2013 for mollersim by  doxygen 1.6.1