MICEPhysicsList.hh

Go to the documentation of this file.
00001 #ifndef MICEPhysicsList_h
00002 #define MICEPhysicsList_h 1
00003 
00004 #include "G4VUserPhysicsList.hh"
00005 #include "globals.hh"
00006 #include "G4RegionStore.hh"
00007 
00008 #include "G4MultipleScattering.hh"
00009 #include "G4Decay.hh"
00010 
00011 #include "G4HadronElasticProcess.hh"  // Hadron nuclear elastic scattering
00012 #include "G4HadronCaptureProcess.hh"  // Capture of neutral hadrons in nuclei
00013 
00014 // photons
00015 #include "G4ComptonScattering.hh"
00016 #include "G4GammaConversion.hh"
00017 #include "G4PhotoElectricEffect.hh"
00018 
00019 #include "G4Cerenkov.hh"
00020 // #include "G4Scintillation.hh"
00021 #include "G4OpAbsorption.hh"
00022 // #include "G4OpRayleigh.hh"
00023 // #include "G4OpBoundaryProcess.hh"
00024 
00025 // electrons
00026 #include "G4eIonisation.hh"
00027 #include "G4eBremsstrahlung.hh"
00028 #include "G4eplusAnnihilation.hh"
00029 
00030 // muons
00031 #include "G4MuIonisation.hh"
00032 #include "G4MuBremsstrahlung.hh"
00033 #include "G4MuPairProduction.hh"
00034 
00035 // hadrons
00036 #include "G4hIonisation.hh"
00037 #include "G4PionPlusInelasticProcess.hh"
00038 #include "G4PionMinusInelasticProcess.hh"
00039 #include "G4ProtonInelasticProcess.hh"
00040 #include "G4AntiProtonInelasticProcess.hh"
00041 #include "G4NeutronInelasticProcess.hh"
00042 
00043 // Low-energy Models
00044 #include "G4LElastic.hh"  // LowE Hadron nuclear elastic scattering   
00045 #include "G4LCapture.hh"  // LowE Capture of neutral hadrons in nuclei
00046 
00047 #include "G4LEPionPlusInelastic.hh"
00048 #include "G4LEPionMinusInelastic.hh"
00049 #include "G4LEProtonInelastic.hh"
00050 #include "G4LEAntiProtonInelastic.hh"
00051 #include "G4LENeutronInelastic.hh"
00052 
00053 #include "G4LowEnergyCompton.hh"
00054 #include "G4LowEnergyBremsstrahlung.hh"
00055 #include "G4LowEnergyIonisation.hh"
00056 #include "G4LowEnergyRayleigh.hh"
00057 #include "G4LowEnergyGammaConversion.hh"
00058 #include "G4LowEnergyPhotoElectric.hh"
00059 
00060 // Stopping processes
00061 //#include "G4AntiProtonAnnihilationAtRest.hh"
00062 
00063 class G4PhotoElectricEffect;
00064 class G4ComptonScattering;
00065 class G4GammaConversion;
00066 // class G4Cerenkov;
00067 // class G4Scintillation;
00068 // class G4OpAbsorption;
00069 // class G4OpRayleigh;
00070 // class G4OpBoundaryProcess;
00071 
00072 class G4LowEnergyCompton;
00073 class G4LowEnergyRayleigh;
00074 class G4LowEnergyGammaConversion;
00075 class G4LowEnergyPhotoElectric;
00076 
00077 class G4MultipleScattering;
00078 
00079 class G4eIonisation;
00080 class G4LowEnergyIonisation;
00081 class G4eBremsstrahlung;
00082 class G4LowEnergyBremsstrahlung;
00083 class G4eplusAnnihilation;
00084 
00085 class G4MuIonisation;
00086 class G4MuEnergyLoss;
00087 class G4MuBremsstrahlung;
00088 class G4MuPairProduction;
00089 
00090 class G4hIonisation;
00091 
00092 //class G4AntiProtonAnnihilationAtRest;
00093 
00094 class MICEPhysicsList: public G4VUserPhysicsList
00095 {
00096   public:
00097     MICEPhysicsList();
00098     virtual ~MICEPhysicsList();
00099     void ConstructProcessesForOneParticle(G4ParticleDefinition *particle);
00100 
00101   protected:
00102     // Construct particle and physics
00103     virtual void ConstructParticle();
00104     virtual void ConstructProcess();
00105 
00106     virtual void SetCuts();
00107 
00108    
00109   protected:
00110     // these methods Construct particles 
00111     virtual void ConstructBosons();
00112     virtual void ConstructLeptons();
00113     virtual void ConstructMesons(); // uncommented by Rikard
00114     virtual void ConstructBaryons();
00115     virtual void ConstructIons();
00116 
00117   protected:
00118   // these methods Construct physics processes and register them
00119     virtual void ConstructAll();
00120     //virtual void ConstructOp();
00121     
00122   private:
00123     // gamma
00124     G4PhotoElectricEffect* thePhotoElectricEffect;
00125     G4ComptonScattering*   theComptonScattering;
00126     G4GammaConversion*     theGammaConversion;
00127  
00128 //     G4Cerenkov*          theCerenkovProcess;
00129 //     G4Scintillation*     theScintillationProcess;
00130 //     G4OpAbsorption*      theAbsorptionProcess;
00131 //     G4OpRayleigh*        theRayleighScatteringProcess;
00132 //     G4OpBoundaryProcess* theBoundaryProcess;
00133     
00134     // e-
00135     G4MultipleScattering*  theeminusMultipleScattering;
00136     G4eIonisation*         theeminusIonisation;
00137     G4eBremsstrahlung*     theeminusBremsstrahlung;
00138     
00139     // e+
00140     G4MultipleScattering*  theeplusMultipleScattering;
00141     G4eIonisation*         theeplusIonisation;
00142     G4eBremsstrahlung*     theeplusBremsstrahlung;
00143     G4eplusAnnihilation*   theeplusAnnihilation;
00144     
00145     // mu+/-
00146     G4MuIonisation*        theMuMinusIonisation;
00147     G4MuIonisation*        theMuPlusIonisation;
00148     
00149     G4MultipleScattering*        theMuMinusMultScat;
00150     G4MultipleScattering*        theMuPlusMultScat;
00151     
00152     // pi+
00153     G4PionPlusInelasticProcess* thePionPlusInelastic;
00154     G4LEPionPlusInelastic* theLEPionPlusModel;
00155     G4MultipleScattering* thePionPlusMult;
00156     //G4hIonisation* thePionPlusIonisation;
00157     
00158     // pi-
00159     G4PionMinusInelasticProcess* thePionMinusInelastic;
00160     G4LEPionMinusInelastic* theLEPionMinusModel;
00161     G4MultipleScattering* thePionMinusMult;
00162     //G4hIonisation* thePionMinusIonisation;
00163        
00164     // proton
00165     G4ProtonInelasticProcess* theProtonInelastic;
00166     G4LEProtonInelastic* theLEProtonModel;
00167     G4MultipleScattering* theProtonMult;
00168     //G4hIonisation* theProtonIonisation;
00169 
00170     // anti-proton
00171     G4AntiProtonInelasticProcess* theAntiProtonInelastic;
00172     G4LEAntiProtonInelastic* theLEAntiProtonModel;
00173     G4MultipleScattering* theAntiProtonMult;
00174     //G4hIonisation* theAntiProtonIonisation;
00175     //G4AntiProtonAnnihilationAtRest* theAntiProtonAnnihilation;
00176   
00177     // neutron
00178     G4NeutronInelasticProcess*  theNeutronInelastic;
00179     G4LENeutronInelastic* theLENeutronModel;
00180     G4HadronCaptureProcess*  theNeutronCapture;
00181     G4LCapture* theNeutronCaptureModel;
00182         
00183    public:
00184    
00185    inline G4MuIonisation* theMuMinusIonisationf() 
00186                          {return theMuMinusIonisation; }
00187    inline G4MuIonisation* theMuPlusIonisationf() 
00188                          {return theMuPlusIonisation; }
00189                          
00190    inline G4MultipleScattering* theMuMinusMultScatf() 
00191                          {return theMuMinusMultScat; }
00192    inline G4MultipleScattering* theMuPlusMultScatf() 
00193                          {return theMuPlusMultScat; }
00194                          
00195 };
00196 
00197 #endif
00198 
00199 
00200 
g4beamline