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