source: trunk/source/tracking/include/G4VSteppingVerbose.hh

Last change on this file was 1337, checked in by garnier, 14 years ago

tag geant4.9.4 beta 1 + modifs locales

File size: 6.5 KB
Line 
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//
27// $Id: G4VSteppingVerbose.hh,v 1.24 2006/11/14 10:58:47 tsasaki Exp $
28// GEANT4 tag $Name: geant4-09-04-beta-01 $
29//
30//---------------------------------------------------------------
31//
32// G4VSteppingVerbose.hh
33//
34// class description:
35//   This class manages the vervose outputs in G4SteppingManager.
36//   The instance should be singleton. Users can inherit this
37//   class to make their own verbosing class.
38//
39// Contact:
40//   Questions and comments to this code should be sent to
41//     Katsuya Amako  (e-mail: Katsuya.Amako@kek.jp)
42//     Takashi Sasaki (e-mail: Takashi.Sasaki@kek.jp)
43//
44//---------------------------------------------------------------
45
46#ifndef G4VSteppingVerbose_h
47#define G4VSteppingVerbose_h
48
49class G4SteppingManager;
50
51#include "globals.hh"                 // Include from 'global'
52#include <vector>
53
54class G4Navigator;
55class G4VPhysicalVolume;
56class G4VSensitiveDetector;
57#include "G4VProcess.hh"
58class G4ProcessVector;
59class G4SteppingManager;              // Include from 'tracking'
60class G4Track;
61#include "G4TrackVector.hh"           // Include from 'tracking'
62#include "G4StepStatus.hh"            // Include from 'track'
63class G4UserSteppingAction;
64class G4StepPoint;
65#include "G4TouchableHandle.hh"
66class G4VParticleChange;
67#include "G4ForceCondition.hh"  //enum 'track'
68#include "G4GPILSelection.hh"   //enum 'track'
69
70
71class G4VSteppingVerbose
72{
73// Constructor/Destructor
74protected:    // to force 'singleton'
75  G4VSteppingVerbose(); 
76public: 
77  virtual ~G4VSteppingVerbose();
78  //
79protected: 
80  static G4VSteppingVerbose* fInstance;// pointer to the instance
81  static G4int Silent; //flag for verbosity
82  static G4int SilentStepInfo; //another flag for verbosity
83public:   // with description
84// static methods to set/get the object's pointer
85  static void SetInstance(G4VSteppingVerbose* Instance);
86  static G4VSteppingVerbose* GetInstance();
87  static G4int GetSilent();
88  static void SetSilent(G4int fSilent);
89  static G4int GetSilentStepInfo();
90  static void SetSilentStepInfo(G4int fSilent);
91// these method are invoked in the SteppingManager
92  virtual void NewStep() = 0;
93  void CopyState();
94  void SetManager(G4SteppingManager* const);
95  virtual void AtRestDoItInvoked() = 0;
96  virtual void AlongStepDoItAllDone() = 0;
97  virtual void PostStepDoItAllDone() = 0;
98  virtual void AlongStepDoItOneByOne() = 0;
99  virtual void PostStepDoItOneByOne() = 0;
100  virtual void StepInfo() = 0;
101  virtual void TrackingStarted() = 0;
102  virtual void DPSLStarted() = 0;
103  virtual void DPSLUserLimit() = 0;
104  virtual void DPSLPostStep() = 0;
105  virtual void DPSLAlongStep() = 0;
106  virtual void VerboseTrack() = 0;
107  virtual void VerboseParticleChange() = 0;
108  // Member data
109
110protected:
111  G4SteppingManager* fManager;
112 
113  G4UserSteppingAction* fUserSteppingAction;
114 
115  G4double PhysicalStep;
116  G4double GeometricalStep;
117  G4double CorrectedStep;
118  G4bool PreStepPointIsGeom;
119  G4bool FirstStep;
120  G4StepStatus fStepStatus;
121
122  G4double TempInitVelocity;
123  G4double TempVelocity;
124  G4double Mass;
125
126  G4double sumEnergyChange;
127
128  G4VParticleChange* fParticleChange;
129  G4Track* fTrack;
130  G4TrackVector* fSecondary;
131  G4Step* fStep;
132  G4StepPoint* fPreStepPoint;
133  G4StepPoint* fPostStepPoint;
134
135  G4VPhysicalVolume* fCurrentVolume;
136  G4VSensitiveDetector* fSensitive;
137  G4VProcess* fCurrentProcess;
138  // The pointer to the process of which DoIt or
139  // GetPhysicalInteractionLength has been just executed.
140
141
142  G4ProcessVector* fAtRestDoItVector;
143  G4ProcessVector* fAlongStepDoItVector;
144  G4ProcessVector* fPostStepDoItVector;
145
146  G4ProcessVector* fAtRestGetPhysIntVector;
147  G4ProcessVector* fAlongStepGetPhysIntVector;
148  G4ProcessVector* fPostStepGetPhysIntVector;
149
150  size_t MAXofAtRestLoops;
151  size_t MAXofAlongStepLoops;
152  size_t MAXofPostStepLoops;
153 
154  G4double currentMinimumStep;
155  G4double numberOfInteractionLengthLeft;
156
157  size_t fAtRestDoItProcTriggered;
158  size_t fAlongStepDoItProcTriggered;
159  size_t fPostStepDoItProcTriggered;
160
161  G4int fN2ndariesAtRestDoIt;
162  G4int fN2ndariesAlongStepDoIt;
163  G4int fN2ndariesPostStepDoIt;
164      // These are the numbers of secondaries generated by the process
165      // just executed.
166
167  G4Navigator *fNavigator;
168
169  G4int verboseLevel;
170
171  typedef std::vector<G4int> 
172             G4SelectedAtRestDoItVector;
173  typedef std::vector<G4int> 
174             G4SelectedAlongStepDoItVector;
175  typedef std::vector<G4int>
176             G4SelectedPostStepDoItVector;
177  G4SelectedAtRestDoItVector* fSelectedAtRestDoItVector;
178  G4SelectedAlongStepDoItVector* fSelectedAlongStepDoItVector;
179  G4SelectedPostStepDoItVector* fSelectedPostStepDoItVector;
180
181  G4double   fPreviousStepSize;
182
183  G4TouchableHandle fTouchableHandle;
184
185  G4SteppingControl StepControlFlag;
186
187  G4double physIntLength;
188  G4ForceCondition fCondition;
189  G4GPILSelection  fGPILSelection;
190      // Above three variables are for the method
191      // DefinePhysicalStepLength(). To pass these information to
192      // the method Verbose, they are kept at here. Need a more
193      // elegant mechanism.
194
195
196};
197#endif
Note: See TracBrowser for help on using the repository browser.