Geant4 11.1.1
Toolkit for the simulation of the passage of particles through matter
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
G4VSteppingVerbose.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// G4VSteppingVerbose
27//
28// Class description:
29//
30// This class manages the verbose outputs in G4SteppingManager.
31// The instance should be a singleton. Users can inherit this
32// class to make their own verbosity class.
33
34// Contact:
35// Questions and comments to this code should be sent to
36// Katsuya Amako (e-mail: Katsuya.Amako@kek.jp)
37// Takashi Sasaki (e-mail: Takashi.Sasaki@kek.jp)
38// --------------------------------------------------------------------
39#ifndef G4VSteppingVerbose_hh
40#define G4VSteppingVerbose_hh 1
41
42#include <vector>
43#include "globals.hh" // Include from 'global'
44#include "G4VProcess.hh"
45#include "G4TrackVector.hh" // Include from 'tracking'
46#include "G4StepStatus.hh" // Include from 'track'
47#include "G4TouchableHandle.hh"
48#include "G4ForceCondition.hh" // enum 'track'
49#include "G4GPILSelection.hh" // enum 'track'
50
51#include "trkgdefs.hh"
52
54class G4Navigator;
57class G4ProcessVector;
59class G4Track;
61class G4StepPoint;
63
65{
66 public:
67
68 virtual ~G4VSteppingVerbose();
69
70 // static methods to set/get the object's pointer
71
72 static void SetInstance(G4VSteppingVerbose* Instance);
75 static G4int GetSilent();
76 static void SetSilent(G4int fSilent);
77 static G4int GetSilentStepInfo();
78 static void SetSilentStepInfo(G4int fSilent);
79
80 virtual G4VSteppingVerbose* Clone();
81
82 // these method are invoked by G4SteppingManager
83
84 virtual void NewStep() = 0;
85 void CopyState();
86 virtual void SetManager(G4SteppingManager* const);
87 virtual void AtRestDoItInvoked() = 0;
88 virtual void AlongStepDoItAllDone() = 0;
89 virtual void PostStepDoItAllDone() = 0;
90 virtual void AlongStepDoItOneByOne() = 0;
91 virtual void PostStepDoItOneByOne() = 0;
92 virtual void StepInfo() = 0;
93 virtual void TrackingStarted() = 0;
94 virtual void DPSLStarted() = 0;
95 virtual void DPSLUserLimit() = 0;
96 virtual void DPSLPostStep() = 0;
97 virtual void DPSLAlongStep() = 0;
98 virtual void VerboseTrack() = 0;
99 virtual void VerboseParticleChange() = 0;
100
101 protected:
102
103 G4VSteppingVerbose(); // 'singleton'
104
106 // pointer to the instance
108 // pointer to the instance in master thread
110 //flag for verbosity
112 //another flag for verbosity
113
116
123
127
129
131 G4Track* fTrack = nullptr;
133 G4Step* fStep = nullptr;
136
140 // The pointer to the process whose DoIt() or
141 // GetPhysicalInteractionLength() has been just executed
142
146
150
151 std::size_t MAXofAtRestLoops = 0;
152 std::size_t MAXofAlongStepLoops = 0;
153 std::size_t MAXofPostStepLoops = 0;
154
157
161
165 // These are the numbers of secondaries generated by the process
166 // just executed
167
169
171
172 using G4SelectedAtRestDoItVector = std::vector<G4int>;
173 using G4SelectedAlongStepDoItVector = std::vector<G4int>;
174 using G4SelectedPostStepDoItVector = std::vector<G4int>;
175
179
181
183
185
189 // Above three variables are for the method DefinePhysicalStepLength().
190 // To pass this information to the method Verbose(), they are kept at
191 // here. Need a more elegant mechanism
192};
193
194#endif
G4ForceCondition
@ InActivated
G4GPILSelection
@ NotCandidateForSelection
G4StepStatus
Definition: G4StepStatus.hh:40
@ fUndefined
Definition: G4StepStatus.hh:55
G4SteppingControl
@ NormalCondition
std::vector< G4Track * > G4TrackVector
double G4double
Definition: G4Types.hh:83
bool G4bool
Definition: G4Types.hh:86
int G4int
Definition: G4Types.hh:85
Definition: G4Step.hh:62
std::size_t MAXofAlongStepLoops
G4StepPoint * fPostStepPoint
static G4int GetSilentStepInfo()
static G4VSteppingVerbose * GetInstance()
static G4ThreadLocal G4VSteppingVerbose * fInstance
static void SetSilentStepInfo(G4int fSilent)
virtual void AlongStepDoItAllDone()=0
G4ProcessVector * fPostStepGetPhysIntVector
std::vector< G4int > G4SelectedAlongStepDoItVector
G4UserSteppingAction * fUserSteppingAction
G4ForceCondition fCondition
std::vector< G4int > G4SelectedAtRestDoItVector
virtual void VerboseTrack()=0
G4ProcessVector * fAlongStepGetPhysIntVector
G4TouchableHandle fTouchableHandle
virtual G4VSteppingVerbose * Clone()
G4GPILSelection fGPILSelection
std::size_t fAlongStepDoItProcTriggered
G4VParticleChange * fParticleChange
G4SteppingControl StepControlFlag
static void SetInstance(G4VSteppingVerbose *Instance)
virtual void AlongStepDoItOneByOne()=0
virtual void DPSLPostStep()=0
virtual void PostStepDoItAllDone()=0
virtual void AtRestDoItInvoked()=0
G4VPhysicalVolume * fCurrentVolume
G4SelectedPostStepDoItVector * fSelectedPostStepDoItVector
virtual void VerboseParticleChange()=0
virtual void DPSLAlongStep()=0
static G4VSteppingVerbose * fMasterInstance
virtual void StepInfo()=0
static G4int GetSilent()
G4ProcessVector * fAtRestDoItVector
G4SelectedAtRestDoItVector * fSelectedAtRestDoItVector
virtual void PostStepDoItOneByOne()=0
G4VProcess * fCurrentProcess
virtual void DPSLStarted()=0
G4ProcessVector * fAtRestGetPhysIntVector
G4SelectedAlongStepDoItVector * fSelectedAlongStepDoItVector
G4StepPoint * fPreStepPoint
static void SetSilent(G4int fSilent)
std::size_t fAtRestDoItProcTriggered
G4VSensitiveDetector * fSensitive
G4ProcessVector * fPostStepDoItVector
G4ProcessVector * fAlongStepDoItVector
virtual void TrackingStarted()=0
std::size_t fPostStepDoItProcTriggered
static G4TRACKING_DLL G4ThreadLocal G4int SilentStepInfo
G4SteppingManager * fManager
static G4TRACKING_DLL G4ThreadLocal G4int Silent
virtual void NewStep()=0
G4double numberOfInteractionLengthLeft
static G4VSteppingVerbose * GetMasterInstance()
virtual void SetManager(G4SteppingManager *const)
virtual void DPSLUserLimit()=0
std::size_t MAXofPostStepLoops
std::vector< G4int > G4SelectedPostStepDoItVector
G4TrackVector * fSecondary
#define G4ThreadLocal
Definition: tls.hh:77
#define G4TRACKING_DLL
Definition: trkgdefs.hh:45