Belle II Software development
StepTiming.h
1/**************************************************************************
2 * basf2 (Belle II Analysis Software Framework) *
3 * Author: The Belle II Collaboration *
4 * *
5 * See git log for contributors and copyright holders. *
6 * This file is licensed under LGPL-3.0, see LICENSE.md. *
7 **************************************************************************/
8
9#pragma once
10
11#include <G4VSteppingVerbose.hh>
12
13class G4LogicalVolume;
14class G4Track;
15
16namespace Belle2 {
21 namespace Simulation {
33 class StepTiming: public G4VSteppingVerbose {
34 public:
36 typedef std::function<void (G4Track*, G4LogicalVolume*, double)> callbackType;
38 explicit StepTiming(const callbackType& callback): G4VSteppingVerbose(), m_callback(callback) {}
40 virtual void NewStep();
42 virtual void StepInfo();
44 virtual void AtRestDoItInvoked() {};
46 virtual void AlongStepDoItAllDone() {};
48 virtual void PostStepDoItAllDone() {};
50 virtual void AlongStepDoItOneByOne() {};
52 virtual void PostStepDoItOneByOne() {};
54 virtual void TrackingStarted() {};
56 virtual void DPSLStarted() {};
58 virtual void DPSLUserLimit() {};
60 virtual void DPSLPostStep() {};
62 virtual void DPSLAlongStep() {};
64 virtual void VerboseTrack() {};
66 virtual void VerboseParticleChange() {};
67 private:
71 double m_startTime {0};
72 };
73
74 } //Simulation namespace
76} //Belle2 namespace
virtual void AtRestDoItInvoked()
ignored, empty stub only implemented because it's pure virtual in base class
Definition StepTiming.h:44
virtual void PostStepDoItAllDone()
ignored, empty stub only implemented because it's pure virtual in base class
Definition StepTiming.h:48
virtual void AlongStepDoItOneByOne()
ignored, empty stub only implemented because it's pure virtual in base class
Definition StepTiming.h:50
virtual void DPSLAlongStep()
ignored, empty stub only implemented because it's pure virtual in base class
Definition StepTiming.h:62
virtual void DPSLStarted()
ignored, empty stub only implemented because it's pure virtual in base class
Definition StepTiming.h:56
virtual void VerboseParticleChange()
ignored, empty stub only implemented because it's pure virtual in base class
Definition StepTiming.h:66
StepTiming(const callbackType &callback)
Constructor: create an instance with a given callback function.
Definition StepTiming.h:38
double m_startTime
start time of the step
Definition StepTiming.h:71
virtual void TrackingStarted()
ignored, empty stub only implemented because it's pure virtual in base class
Definition StepTiming.h:54
std::function< void(G4Track *, G4LogicalVolume *, double)> callbackType
Signature of the callback function.
Definition StepTiming.h:36
virtual void DPSLPostStep()
ignored, empty stub only implemented because it's pure virtual in base class
Definition StepTiming.h:60
virtual void NewStep()
Start timing a new step.
Definition StepTiming.cc:21
virtual void AlongStepDoItAllDone()
ignored, empty stub only implemented because it's pure virtual in base class
Definition StepTiming.h:46
virtual void PostStepDoItOneByOne()
ignored, empty stub only implemented because it's pure virtual in base class
Definition StepTiming.h:52
virtual void StepInfo()
Step finished, call callback function.
Definition StepTiming.cc:26
virtual void VerboseTrack()
ignored, empty stub only implemented because it's pure virtual in base class
Definition StepTiming.h:64
callbackType m_callback
callback function to call
Definition StepTiming.h:69
virtual void DPSLUserLimit()
ignored, empty stub only implemented because it's pure virtual in base class
Definition StepTiming.h:58
Abstract base class for different kinds of events.