Geant4  10.00.p01
G4TrackingInformation.hh
Go to the documentation of this file.
1 //
2 // ********************************************************************
3 // * License and Disclaimer *
4 // * *
5 // * The Geant4 software is copyright of the Copyright Holders of *
6 // * the Geant4 Collaboration. It is provided under the terms and *
7 // * conditions of the Geant4 Software License, included in the file *
8 // * LICENSE and available at http://cern.ch/geant4/license . These *
9 // * include a list of copyright holders. *
10 // * *
11 // * Neither the authors of this software system, nor their employing *
12 // * institutes,nor the agencies providing financial support for this *
13 // * work make any representation or warranty, express or implied, *
14 // * regarding this software system or assume any liability for its *
15 // * use. Please see the license in the file LICENSE and URL above *
16 // * for the full disclaimer and the limitation of liability. *
17 // * *
18 // * This code implementation is the result of the scientific and *
19 // * technical work of the GEANT4 collaboration. *
20 // * By using, copying, modifying or distributing the software (or *
21 // * any work based on the software) you agree to acknowledge its *
22 // * use in resulting scientific publications, and indicate your *
23 // * acceptance of all terms of the Geant4 Software license. *
24 // ********************************************************************
25 //
26 // $Id: G4TrackingInformation.hh 64057 2012-10-30 15:04:49Z gcosmo $
27 //
28 // Author: Mathieu Karamitros (kara (AT) cenbg . in2p3 . fr)
29 //
30 // WARNING : This class is released as a prototype.
31 // It might strongly evolve or even disapear in the next releases.
32 //
33 // History:
34 // -----------
35 // 10 Oct 2011 M.Karamitros created
36 //
37 // -------------------------------------------------------------------
38 
39 #ifndef G4TRACKINGINFORMATION_HH
40 #define G4TRACKINGINFORMATION_HH
41 
42 #include "globals.hh"
43 #include <vector>
44 #include "G4StepStatus.hh"
45 #include "G4ThreeVector.hh"
46 #include "G4TouchableHandle.hh"
47 
49 
50 typedef std::vector<G4int>
52 typedef std::vector<G4int>
54 typedef std::vector<G4int>
56 typedef std::vector<G4int>
58 
59 class G4Trajectory_Lock;
60 class G4Track;
61 struct G4ProcessState_Lock;
63 class G4SaveNavigatorState_Lock;
65 
67  friend class G4TrackingInformation;
68 protected :
69  inline virtual ~G4ITStepProcessorState_Lock(){;}
70 };
71 
72 
80 {
81 public:
84 
85  //________________________________________________
90  inline bool IsLeadingStep(){return fStepLeader;}
91  inline void SetLeadingStep(bool value ){fStepLeader = value;}
92 
93  //________________________________________________
98  G4ProcessState_Lock* GetProcessState(size_t index);
99 
101  size_t index);
102 
105 
106  inline G4Trajectory_Lock* GetTrajectory_Lock()
107  {
108  return fpTrajectory_Lock ;
109  }
110 
111  inline void SetTrajectory_Lock(G4Trajectory_Lock* trajLock)
112  {
113  fpTrajectory_Lock = trajLock;
114  }
115 
117  inline const G4ThreeVector& GetPreStepPosition() const;
118  inline G4double GetPreStepLocalTime() const;
119  inline G4double GetPreStepGlobalTime() const;
120 
123 
124  //-------------
125 protected:
126  //-------------
127  friend class G4ITStepProcessor;
128  //_______________________________________________________
130  //_______________________________________________________
131  G4Trajectory_Lock* fpTrajectory_Lock;
132 
133  //_______________________________________________________
137 
138  //_______________________________________________________
140 // G4SaveNavigatorState_Lock* fNavigatorState;
141 
142  //_______________________________________________________
147  std::vector<G4ProcessState_Lock*> fProcessState;
148 
149  //_______________________________________________________
151 
152  //_______________________________________________________
157 
163 };
164 
166 {
167  fpStepProcessorState = state;
168 }
169 
171 {
172  return fpStepProcessorState;
173 }
174 
176  size_t index)
177 {
178  fProcessState[index] = state;
179 }
180 
181 
183 {
185 }
186 
188 {
190 }
191 
193 {
194  return fRecordedTrackPosition;
195 }
196 
197 
199 {
200  fNavigatorState = state;
201 }
202 
204 {
205  return fNavigatorState;
206 }
207 
208 
209 #endif // G4TRACKINGINFORMATION_HH
std::vector< G4ProcessState_Lock * > fProcessState
Holds the information related to processes Indexed on GetPhysIntVector (cf.
bool IsLeadingStep()
If the track is the one having the minimum step time, then it "leads" the step.
Its role is the same as G4StepManager :
G4Trajectory_Lock * fpTrajectory_Lock
G4double GetPreStepGlobalTime() const
CLHEP::Hep3Vector G4ThreeVector
void SetStepProcessorState(G4ITStepProcessorState_Lock *)
std::vector< G4int > G4SelectedAtRestDoItVector
void RecordCurrentPositionNTime(G4Track *)
G4TrackingInformation & operator=(const G4TrackingInformation &other)
Assignment operator.
The class G4TrackingInformation (hold by G4IT) emcompasses processes informations computed at the PS/...
std::vector< G4int > G4SelectedPostStepDoItVector
void SetTrajectory_Lock(G4Trajectory_Lock *trajLock)
bool G4bool
Definition: G4Types.hh:79
G4ITStepProcessorState_Lock * GetStepProcessorState()
G4double GetPreStepLocalTime() const
const G4ThreeVector & GetPreStepPosition() const
void RecordProcessState(G4ProcessState_Lock *, size_t index)
G4ITNavigatorState_Lock * GetNavigatorState() const
std::vector< G4int > G4SelectedAlongStepDoItVector
void SetLeadingStep(bool value)
G4ProcessState_Lock * GetProcessState(size_t index)
Every process should store the information computed at the InteractionLegth stage in the track...
G4ITNavigatorState_Lock * fNavigatorState
std::vector< G4int > G4SelectedPostStepAtTimeDoItVector
void SetNavigatorState(G4ITNavigatorState_Lock *)
G4ITStepProcessorState_Lock * fpStepProcessorState
G4Trajectory_Lock * GetTrajectory_Lock()
double G4double
Definition: G4Types.hh:76