]>
Commit | Line | Data |
---|---|---|
2817d3e2 | 1 | // $Id$ |
2 | // Category: physics | |
3 | // | |
e5967ab3 | 4 | // Author: I. Hrivnacova |
5 | // | |
6 | // Class TG4SpecialControls | |
7 | // ---------------------------- | |
8 | // Special process that applies the G3 process controls. | |
2817d3e2 | 9 | |
f4b948cd | 10 | #ifndef TG4_SPECIAL_CONTROLS_H |
11 | #define TG4_SPECIAL_CONTROLS_H | |
2817d3e2 | 12 | |
13 | #include "TG4Globals.h" | |
e5967ab3 | 14 | #include "TG4G3Control.h" |
2817d3e2 | 15 | |
16 | #include <G4VProcess.hh> | |
17 | #include <G4ProcessVector.hh> | |
18 | #include <globals.hh> | |
e5967ab3 | 19 | #include <g4std/vector> |
2817d3e2 | 20 | |
6a474bd6 | 21 | class TG4SpecialControls : public G4VProcess |
2817d3e2 | 22 | { |
23 | enum Switch { kSwitch, kReswitch, kUnswitch }; | |
24 | ||
25 | public: | |
6a474bd6 | 26 | TG4SpecialControls(const G4String& processName ="specialControl" ); |
2817d3e2 | 27 | // --> protected |
6a474bd6 | 28 | // TG4SpecialControls(const TG4SpecialControls& right); |
29 | virtual ~TG4SpecialControls(); | |
2817d3e2 | 30 | |
31 | // methods | |
32 | ||
33 | virtual G4double PostStepGetPhysicalInteractionLength( | |
34 | const G4Track& track, G4double previousStepSize, | |
35 | G4ForceCondition* condition); | |
36 | ||
37 | virtual G4VParticleChange* PostStepDoIt(const G4Track& track, | |
38 | const G4Step& step); | |
39 | ||
40 | virtual G4double AlongStepGetPhysicalInteractionLength( | |
41 | const G4Track& track, G4double previousStepSize , | |
42 | G4double currentMinimumStep, G4double& proposedSafety, | |
43 | G4GPILSelection* selection) | |
44 | { return -1.0; } | |
45 | ||
46 | virtual G4VParticleChange* AlongStepDoIt(const G4Track& , | |
47 | const G4Step& step) | |
48 | { return 0; } | |
49 | ||
50 | virtual G4double AtRestGetPhysicalInteractionLength( | |
51 | const G4Track& track, G4ForceCondition* condition) | |
52 | { return -1.0; } | |
53 | ||
54 | virtual G4VParticleChange* AtRestDoIt(const G4Track& track, | |
55 | const G4Step& step) | |
56 | { return 0; } | |
57 | ||
58 | protected: | |
6a474bd6 | 59 | TG4SpecialControls(const TG4SpecialControls& right); |
2817d3e2 | 60 | |
61 | //operators | |
6a474bd6 | 62 | TG4SpecialControls& operator = (const TG4SpecialControls& right); |
2817d3e2 | 63 | |
64 | private: | |
e5967ab3 | 65 | // methods |
66 | virtual void Reset(); | |
67 | ||
2817d3e2 | 68 | // data members |
e5967ab3 | 69 | Switch fSwitchControls; //directive passed from PostStepGetPIL |
2817d3e2 | 70 | //to PostStepDoIt |
e5967ab3 | 71 | G4ProcessVector fSwitchedProcesses; //vector of the processes the activation of |
2817d3e2 | 72 | //which is changed by this process |
e5967ab3 | 73 | TG4boolVector fSwitchedControls; //vector for storing the current values of |
2817d3e2 | 74 | //the processes activation |
e5967ab3 | 75 | G4int fLastTrackID; //the last processed track ID |
2817d3e2 | 76 | }; |
77 | ||
f4b948cd | 78 | #endif //TG4_SPECIAL_CONTROLS_H |
2817d3e2 | 79 |