00001 #ifndef GLG4NeutronDiffusionAndCapture_h
00002 #define GLG4NeutronDiffusionAndCapture_h 1
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013 #include "G4ios.hh"
00014 #include "globals.hh"
00015 #include "G4VProcess.hh"
00016
00017
00018
00019 class GLG4PrimaryGeneratorAction;
00020 class G4HadronCaptureProcess;
00021
00022
00023
00024
00025
00026
00027
00028
00029 class GLG4NeutronDiffusionAndCapture : public G4VProcess
00030 {
00031 public:
00032
00033 GLG4NeutronDiffusionAndCapture(const G4String& processName="NeutronDiffusionAndCapture");
00034
00035 ~GLG4NeutronDiffusionAndCapture();
00036
00037 virtual G4double PostStepGetPhysicalInteractionLength(
00038 const G4Track& track,
00039 G4double previousStepSize,
00040 G4ForceCondition* condition
00041 );
00042
00043 virtual G4VParticleChange* PostStepDoIt(
00044 const G4Track& ,
00045 const G4Step&
00046 );
00047
00048 public:
00049
00050
00051 virtual G4double AtRestGetPhysicalInteractionLength(
00052 const G4Track& ,
00053 G4ForceCondition*
00054 ){ return -1.0; };
00055
00056
00057 virtual G4VParticleChange* AtRestDoIt(
00058 const G4Track& ,
00059 const G4Step&
00060 ){return NULL;};
00061
00062
00063 virtual G4double AlongStepGetPhysicalInteractionLength(
00064 const G4Track&,
00065 G4double ,
00066 G4double ,
00067 G4double& ,
00068 G4GPILSelection*
00069 ){ return -1.0; };
00070
00071
00072 virtual G4VParticleChange* AlongStepDoIt(
00073 const G4Track& ,
00074 const G4Step&
00075 ) {return NULL;};
00076
00077 private:
00078
00079
00080 GLG4NeutronDiffusionAndCapture(GLG4NeutronDiffusionAndCapture&);
00081 GLG4NeutronDiffusionAndCapture& operator=(const GLG4NeutronDiffusionAndCapture& right);
00082
00083 private:
00084 GLG4PrimaryGeneratorAction* _generator;
00085 G4HadronCaptureProcess* _neutronCaptureProcess;
00086 };
00087
00088 #endif
00089