/home/docs/checkouts/readthedocs.org/user_builds/ratpac/checkouts/latest/src/gen/include/RAT/GLG4Gen.hh Source File

Ratpac-two: /home/docs/checkouts/readthedocs.org/user_builds/ratpac/checkouts/latest/src/gen/include/RAT/GLG4Gen.hh Source File
Ratpac-two
GLG4Gen.hh
1 #ifndef __GLG4Gen_h__
2 #define __GLG4Gen_h__
3 
4 #include <globals.hh>
5 
6 class G4Event;
7 class G4Track;
8 class G4PrimaryVertex;
9 class GLG4TimeGen;
10 class GLG4VertexGen;
11 class GLG4PosGen;
12 
13 // Base class for event generators
14 class GLG4Gen {
15  public:
16  GLG4Gen(){};
17  virtual ~GLG4Gen(){};
18  virtual void GenerateEvent(G4Event *event) = 0;
19  virtual double NextTime() const { return nextTime; };
20  virtual void SubtractTime(double time) { nextTime -= time; };
21  virtual void ResetTime(double offset = 0.0) = 0;
22  virtual bool IsRepeatable() const = 0;
23 
24  virtual void SetState(G4String state) = 0;
25  virtual G4String GetState() const = 0;
26 
27  // Optional methods for setting specific aspects of
28  // event generator if applicable
29  virtual void SetTimeState(G4String /*state*/){};
30  virtual G4String GetTimeState() const { return ""; };
31  virtual void SetVertexState(G4String /*state*/){};
32  virtual G4String GetVertexState() const { return ""; };
33  virtual void SetPosState(G4String /*state*/){};
34  virtual G4String GetPosState() const { return ""; };
35 
36  protected:
37  double nextTime;
38 };
39 
40 // Generic generator formed by combining separate time, vertex, and position
41 // generators.
42 class GLG4Gen_Combo : public GLG4Gen {
43  public:
44  GLG4Gen_Combo();
45  virtual ~GLG4Gen_Combo();
46  virtual void GenerateEvent(G4Event *event);
47  virtual void ResetTime(double offset = 0.0);
48  virtual bool IsRepeatable() const { return true; };
49 
50  virtual void SetState(G4String state);
51  virtual G4String GetState() const;
52 
53  virtual void SetTimeState(G4String state);
54  virtual G4String GetTimeState() const;
55  virtual void SetVertexState(G4String state);
56  virtual G4String GetVertexState() const;
57  virtual void SetPosState(G4String state);
58  virtual G4String GetPosState() const;
59 
60  protected:
61  G4String stateStr;
62  GLG4TimeGen *timeGen;
63  GLG4VertexGen *vertexGen;
64  GLG4PosGen *posGen;
65 };
66 
67 // Creates a one-shot generator used to defer a long-lived track
68 // to a later event.
69 class GLG4Gen_DeferTrack : public GLG4Gen {
70  public:
71  GLG4Gen_DeferTrack(const G4Track *track);
72  virtual ~GLG4Gen_DeferTrack();
73  virtual void GenerateEvent(G4Event *event);
74  virtual void ResetTime(double /*offset*/){};
75  virtual bool IsRepeatable() const { return false; };
76 
77  virtual void SetState(G4String state);
78  virtual G4String GetState() const;
79 
80  protected:
81  G4PrimaryVertex *vertex;
82 };
83 
84 // Creates events from an ASCII input. See documentation about
85 // input format in comments preceding
86 // GLG4VertexGen_HEPEvt::GeneratePrimaryVertex
87 class GLG4Gen_External : public GLG4Gen {
88  public:
90  virtual ~GLG4Gen_External();
91  virtual void GenerateEvent(G4Event *event);
92  virtual void ResetTime(double offset = 0.0);
93  virtual bool IsRepeatable() const { return true; };
94 
95  virtual void SetState(G4String state);
96  virtual G4String GetState() const;
97 
98  virtual void SetTimeState(G4String state);
99  virtual G4String GetTimeState() const;
100  virtual void SetVertexState(G4String state);
101  virtual G4String GetVertexState() const;
102  virtual void SetPosState(G4String state);
103  virtual G4String GetPosState() const;
104 
105  protected:
106  G4String stateStr;
107  GLG4TimeGen *timeGen;
108  GLG4VertexGen *vertexGen;
109  GLG4PosGen *posGen;
110 };
111 
112 #endif
Definition: GLG4Gen.hh:42
Definition: GLG4Gen.hh:69
Definition: GLG4Gen.hh:87
Definition: GLG4Gen.hh:14
Definition: GLG4PosGen.hh:18
Definition: GLG4TimeGen.hh:6
Definition: GLG4VertexGen.hh:26