4 // Special process that applies process control flags
6 #ifndef TG4_SPECIAL_FLAGS_H
7 #define TG4_SPECIAL_FLAGS_H
9 #include "TG4Globals.h"
11 #include <G4VProcess.hh>
12 #include <G4ProcessVector.hh>
15 class TG4SpecialFlags : public G4VProcess
17 enum Switch { kSwitch, kReswitch, kUnswitch };
20 TG4SpecialFlags(const G4String& processName ="specialFlag" );
22 // TG4SpecialFlags(const TG4SpecialFlags& right);
23 virtual ~TG4SpecialFlags();
27 virtual G4double PostStepGetPhysicalInteractionLength(
28 const G4Track& track, G4double previousStepSize,
29 G4ForceCondition* condition);
31 virtual G4VParticleChange* PostStepDoIt(const G4Track& track,
34 virtual G4double AlongStepGetPhysicalInteractionLength(
35 const G4Track& track, G4double previousStepSize ,
36 G4double currentMinimumStep, G4double& proposedSafety,
37 G4GPILSelection* selection)
40 virtual G4VParticleChange* AlongStepDoIt(const G4Track& ,
44 virtual G4double AtRestGetPhysicalInteractionLength(
45 const G4Track& track, G4ForceCondition* condition)
48 virtual G4VParticleChange* AtRestDoIt(const G4Track& track,
53 TG4SpecialFlags(const TG4SpecialFlags& right);
56 TG4SpecialFlags& operator = (const TG4SpecialFlags& right);
60 Switch fSwitchFlags; //directive passed from PostStepGetPIL
62 G4ProcessVector fSwitchedProcesses; //vector of the processes activation of
63 //which is changed by this process
64 TG4boolVector fSwitchedFlags; //vector for storing the current values of
65 //the processes activation
68 #endif //TG4_SPECIAL_FLAGS_H