4 // Author: I. Hrivnacova
6 // Class TG4SpecialControls
7 // ----------------------------
8 // Special process that applies the G3 process controls.
10 #ifndef TG4_SPECIAL_CONTROLS_H
11 #define TG4_SPECIAL_CONTROLS_H
13 #include "TG4Verbose.h"
14 #include "TG4Globals.h"
15 #include "TG4G3Control.h"
17 #include <G4VProcess.hh>
18 #include <G4ProcessVector.hh>
20 #include <g4std/vector>
22 class TG4SpecialControls : public G4VProcess,
25 enum Switch { kSwitch, kReswitch, kUnswitch };
28 TG4SpecialControls(const G4String& processName ="specialControl" );
30 // TG4SpecialControls(const TG4SpecialControls& right);
31 virtual ~TG4SpecialControls();
35 virtual G4double PostStepGetPhysicalInteractionLength(
36 const G4Track& track, G4double previousStepSize,
37 G4ForceCondition* condition);
39 virtual G4VParticleChange* PostStepDoIt(const G4Track& track,
42 virtual G4double AlongStepGetPhysicalInteractionLength(
43 const G4Track& track, G4double previousStepSize ,
44 G4double currentMinimumStep, G4double& proposedSafety,
45 G4GPILSelection* selection)
48 virtual G4VParticleChange* AlongStepDoIt(const G4Track& ,
52 virtual G4double AtRestGetPhysicalInteractionLength(
53 const G4Track& track, G4ForceCondition* condition)
56 virtual G4VParticleChange* AtRestDoIt(const G4Track& track,
61 TG4SpecialControls(const TG4SpecialControls& right);
64 TG4SpecialControls& operator = (const TG4SpecialControls& right);
71 Switch fSwitchControls; //directive passed from PostStepGetPIL
73 G4ProcessVector fSwitchedProcesses; //vector of the processes the activation of
74 //which is changed by this process
75 TG4boolVector fSwitchedControls; //vector for storing the current values of
76 //the processes activation
77 G4int fLastTrackID; //the last processed track ID
80 #endif //TG4_SPECIAL_CONTROLS_H