]> git.uio.no Git - u/mrichter/AliRoot.git/blob - TGeant4/TG4SpecialControls.h
added inheritance from TG4Verbose;
[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 "TG4Globals.h"
14 #include "TG4G3Control.h"
15
16 #include <G4VProcess.hh>
17 #include <G4ProcessVector.hh>
18 #include <globals.hh>
19 #include <g4std/vector>
20
21 class TG4SpecialControls : public G4VProcess 
22 {
23   enum Switch { kSwitch, kReswitch, kUnswitch };
24
25   public:     
26     TG4SpecialControls(const G4String& processName ="specialControl" );
27     // --> protected
28     // TG4SpecialControls(const TG4SpecialControls& right);
29     virtual ~TG4SpecialControls();
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:
59     TG4SpecialControls(const TG4SpecialControls& right);
60     
61     //operators
62     TG4SpecialControls& operator = (const TG4SpecialControls& right);
63     
64   private:  
65     // methods
66     virtual void Reset();                        
67     
68     // data members
69     Switch           fSwitchControls;    //directive passed from PostStepGetPIL
70                                          //to PostStepDoIt
71     G4ProcessVector  fSwitchedProcesses; //vector of the processes the activation of
72                                          //which is changed by this process
73     TG4boolVector    fSwitchedControls;  //vector for storing the current values of 
74                                          //the processes activation   
75     G4int            fLastTrackID;       //the last processed track ID
76 };
77
78 #endif //TG4_SPECIAL_CONTROLS_H
79