ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
G4VITSteppingVerbose.hh
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file G4VITSteppingVerbose.hh
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  * G4VITSteppingVerbose.hh
28  *
29  * Created on: Jun 22, 2015
30  * Author: mkaramit
31  */
32 
33 #ifndef SOURCE_PROCESSES_ELECTROMAGNETIC_DNA_MANAGEMENT_INCLUDE_G4VITSTEPPINGVERBOSE_HH_
34 #define SOURCE_PROCESSES_ELECTROMAGNETIC_DNA_MANAGEMENT_INCLUDE_G4VITSTEPPINGVERBOSE_HH_
35 
36 #include "globals.hh" // Include from 'global'
37 #include <vector>
38 
39 class G4Navigator;
40 class G4VPhysicalVolume;
42 #include "G4VProcess.hh"
43 class G4ProcessVector;
44 class G4Track;
45 
46 //#include "G4TrackVector.hh" // Include from 'tracking'
47 #include "G4StepStatus.hh" // Include from 'track'
49 class G4StepPoint;
50 #include "G4TouchableHandle.hh"
51 
52 #include "G4ForceCondition.hh" //enum 'track'
53 #include "G4GPILSelection.hh" //enum 'track'
54 #include "G4ITStepProcessor.hh"
55 #include "G4VITProcess.hh"
56 
57 class G4VParticleChange;
59 //class ProcessGeneralInfo;
60 //class G4VPhysicalVolume;
61 //class G4ProcessVector;
62 
63 #include <G4UImessenger.hh>
64 
66 
68 {
69 public:
71  virtual ~G4VITSteppingVerbose();
72 
73 public:
74 
75  virtual void TrackingStarted(G4Track* track);
76  virtual void TrackingEnded(G4Track* track);
77 
78  virtual void DoItStarted() = 0;
79  virtual void PreStepVerbose(G4Track*) = 0;
80  virtual void PostStepVerbose(G4Track*) = 0;
81 
82  // these methods are invoked in the SteppingManager
83  virtual void NewStep() = 0;
84  void CopyState();
85 
86  virtual void StepInfoForLeadingTrack() = 0;
87 
88  virtual void AtRestDoItInvoked() = 0;
89  virtual void AtRestDoItOneByOne() = 0;
90 
91  virtual void PostStepDoItAllDone() = 0;
92  virtual void PostStepDoItOneByOne() = 0;
93 
94  virtual void AlongStepDoItAllDone() = 0;
95  virtual void AlongStepDoItOneByOne() = 0;
96 
97  virtual void StepInfo() = 0;
98  virtual void DPSLStarted() = 0;
99  virtual void DPSLUserLimit() = 0;
100  virtual void DPSLPostStep() = 0;
101  virtual void DPSLAlongStep() = 0;
102  virtual void VerboseTrack() = 0;
103  virtual void VerboseParticleChange() = 0;
104 
105  //____________________________________________________________________________
106 
107  inline void SetVerbose(int flag)
108  {
109  fVerboseLevel = flag;
110  }
111 
112  inline G4int GetVerbose()
113  {
114  return fVerboseLevel;
115  }
116 
117  //____________________________________________________________________________
118 
119  virtual void SetNewValue(G4UIcommand * command,
120  G4String newValue);
121 
122  virtual G4String GetCurrentValue(G4UIcommand * command);
123 
124 
125  //____________________________________________________________________________
126 
127  void SetStepProcessor(const G4ITStepProcessor* stepProcessor)
128  {
129  this->fpStepProcessor = stepProcessor;
130  }
131 
132  void TrackBanner(G4Track* track, const G4String& message);
133 
134 protected:
136 
140 
143 
145  const G4Track* fTrack;
147  const G4Step* fStep;
150 
152 // G4VSensitiveDetector* fSensitive;
154  // The pointer to the process of which DoIt or
155  // GetPhysicalInteractionLength has been just executed.
156 
160 
164 
168 
171 
175  // These are the numbers of secondaries generated by the process
176  // just executed.
177 
178 // G4Navigator *fNavigator;
179 
181 
182  typedef std::vector<G4int> G4SelectedAtRestDoItVector;
183  typedef std::vector<G4int> G4SelectedAlongStepDoItVector;
184  typedef std::vector<G4int> G4SelectedPostStepDoItVector;
187 
189 
191 
192 // G4SteppingControl StepControlFlag;
193 
197  // Above three variables are for the method
198  // DefinePhysicalStepLength(). To pass these information to
199  // the method Verbose, they are kept at here. Need a more
200  // elegant mechanism.
201 };
202 
203 #endif /* SOURCE_PROCESSES_ELECTROMAGNETIC_DNA_MANAGEMENT_INCLUDE_G4VITSTEPPINGVERBOSE_HH_ */