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