]> git.uio.no Git - u/mrichter/AliRoot.git/blob - TGeant4/TG4SpecialControls.h
removed fMessenger (moved to TG4PhysicsManager)
[u/mrichter/AliRoot.git] / TGeant4 / TG4SpecialControls.h
1 // $Id$
2 // Category: physics
3 //
4 // Author: I. Hrivnacova
5 //
6 // Class TG4SpecialControls
7 // ----------------------------
8 // Special process that applies the G3 process controls.
9
10 #ifndef TG4_SPECIAL_CONTROLS_H
11 #define TG4_SPECIAL_CONTROLS_H
12
13 #include "TG4Verbose.h"
14 #include "TG4Globals.h"
15 #include "TG4G3Control.h"
16
17 #include <G4VProcess.hh>
18 #include <G4ProcessVector.hh>
19 #include <globals.hh>
20 #include <g4std/vector>
21
22 class TG4SpecialControls : public G4VProcess,
23                            public TG4Verbose 
24 {
25   enum Switch { kSwitch, kReswitch, kUnswitch };
26
27   public:     
28     TG4SpecialControls(const G4String& processName ="specialControl" );
29     // --> protected
30     // TG4SpecialControls(const TG4SpecialControls& right);
31     virtual ~TG4SpecialControls();
32
33     // methods
34
35     virtual G4double PostStepGetPhysicalInteractionLength(
36                          const G4Track& track, G4double previousStepSize, 
37                          G4ForceCondition* condition);
38
39     virtual G4VParticleChange* PostStepDoIt(const G4Track& track, 
40                                    const G4Step& step);
41
42     virtual G4double AlongStepGetPhysicalInteractionLength(
43                          const G4Track& track, G4double previousStepSize ,
44                          G4double currentMinimumStep, G4double& proposedSafety,
45                          G4GPILSelection* selection)
46                          { return -1.0; }
47
48     virtual G4VParticleChange* AlongStepDoIt(const G4Track& ,
49                                    const G4Step& step)
50                          { return 0; }
51
52     virtual G4double AtRestGetPhysicalInteractionLength(
53                          const G4Track& track, G4ForceCondition* condition)
54                          { return -1.0; }
55
56     virtual G4VParticleChange* AtRestDoIt(const G4Track& track,
57                                    const G4Step& step)
58                          { return 0; }
59
60   protected:
61     TG4SpecialControls(const TG4SpecialControls& right);
62     
63     //operators
64     TG4SpecialControls& operator = (const TG4SpecialControls& right);
65     
66   private:  
67     // methods
68     virtual void Reset();                        
69     
70     // data members
71     Switch           fSwitchControls;    //directive passed from PostStepGetPIL
72                                          //to PostStepDoIt
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
78 };
79
80 #endif //TG4_SPECIAL_CONTROLS_H
81