00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039 #ifndef G4ITBROWNIANTRANSPORTATION_H
00040 #define G4ITBROWNIANTRANSPORTATION_H
00041
00042 #include "G4ITTransportation.hh"
00043
00044 class G4SafetyHelper;
00045
00048
00049 class G4DNABrownianTransportation : public G4ITTransportation
00050 {
00051 public:
00052 G4DNABrownianTransportation(const G4String& aName = "DNABrownianTransportation", G4int verbosityLevel= 1);
00053 G4IT_ADD_CLONE(G4VITProcess,G4DNABrownianTransportation)
00054 virtual ~G4DNABrownianTransportation();
00055 G4DNABrownianTransportation(const G4DNABrownianTransportation& other);
00056 G4DNABrownianTransportation& operator=(const G4DNABrownianTransportation& other);
00057
00058 virtual void BuildPhysicsTable(const G4ParticleDefinition&);
00059
00060 virtual void StartTracking(G4Track* aTrack);
00061
00062 virtual void ComputeStep(const G4Track&,
00063 const G4Step&,
00064 const double,
00065 double&) ;
00066
00067 virtual G4double AlongStepGetPhysicalInteractionLength( const G4Track& ,
00068 G4double ,
00069 G4double ,
00070 G4double& ,
00071 G4GPILSelection* );
00072 virtual G4VParticleChange* PostStepDoIt( const G4Track& track, const G4Step& ) ;
00073
00074 virtual G4VParticleChange* AlongStepDoIt(const G4Track& track, const G4Step&);
00075
00076 protected:
00077 void Diffusion(const G4Track& track);
00078
00079
00080
00081 struct G4ITBrownianState : public G4ITTransportationState
00082 {
00083 public :
00084 G4ITBrownianState();
00085 virtual ~G4ITBrownianState(){;}
00086 G4bool fPathLengthWasCorrected;
00087 };
00088
00089 G4ITBrownianState* const & fpBrownianState;
00090
00091 G4bool fUseMaximumTimeBeforeReachingBoundary;
00092 G4Material* fNistWater ;
00093
00094
00095 const std::vector<G4double>* fpWaterDensity;
00096 };
00097
00098 #endif // G4ITBROWNIANTRANSPORTATION_H