Belle II Software  release-05-02-19
StepTiming.h
1 /**************************************************************************
2  * BASF2 (Belle Analysis Framework 2) *
3  * Copyright(C) 2015 - Belle II Collaboration *
4  * *
5  * Author: The Belle II Collaboration *
6  * Contributors: Martin Ritter *
7  * *
8  * This software is provided "as is" without any warranty. *
9  **************************************************************************/
10 
11 #pragma once
12 #ifndef SIMULATION_KERNEL_STEPTIMING_H
13 #define SIMULATION_KERNEL_STEPTIMING_H
14 
15 #include <G4VSteppingVerbose.hh>
16 #include <G4LogicalVolume.hh>
17 #include <G4Track.hh>
18 
19 namespace Belle2 {
24  namespace Simulation {
36  class StepTiming: public G4VSteppingVerbose {
37  public:
39  typedef std::function<void (G4Track*, G4LogicalVolume*, double)> callbackType;
41  explicit StepTiming(const callbackType& callback): G4VSteppingVerbose(), m_callback(callback) {}
43  virtual void NewStep();
45  virtual void StepInfo();
47  virtual void AtRestDoItInvoked() {};
49  virtual void AlongStepDoItAllDone() {};
51  virtual void PostStepDoItAllDone() {};
53  virtual void AlongStepDoItOneByOne() {};
55  virtual void PostStepDoItOneByOne() {};
57  virtual void TrackingStarted() {};
59  virtual void DPSLStarted() {};
61  virtual void DPSLUserLimit() {};
63  virtual void DPSLPostStep() {};
65  virtual void DPSLAlongStep() {};
67  virtual void VerboseTrack() {};
69  virtual void VerboseParticleChange() {};
70  private:
74  double m_startTime {0};
75  };
76 
77  } //Simulation namespace
79 } //Belle2 namespace
80 #endif // SIMULATION_KERNEL_STEPTIMING_H
Belle2::Simulation::StepTiming::AlongStepDoItAllDone
virtual void AlongStepDoItAllDone()
ignored, empty stub only implemented because it's pure virtual in base class
Definition: StepTiming.h:49
Belle2::Simulation::StepTiming::callbackType
std::function< void(G4Track *, G4LogicalVolume *, double)> callbackType
Signature of the callback function.
Definition: StepTiming.h:39
Belle2::Simulation::StepTiming::VerboseTrack
virtual void VerboseTrack()
ignored, empty stub only implemented because it's pure virtual in base class
Definition: StepTiming.h:67
Belle2::Simulation::StepTiming::StepTiming
StepTiming(const callbackType &callback)
Constructor: create an instance with a given callback function.
Definition: StepTiming.h:41
Belle2::Simulation::StepTiming::DPSLUserLimit
virtual void DPSLUserLimit()
ignored, empty stub only implemented because it's pure virtual in base class
Definition: StepTiming.h:61
Belle2::Simulation::StepTiming::NewStep
virtual void NewStep()
Start timing a new step.
Definition: StepTiming.cc:29
Belle2::Simulation::StepTiming::StepInfo
virtual void StepInfo()
Step finished, call callback function.
Definition: StepTiming.cc:34
Belle2::Simulation::StepTiming::PostStepDoItAllDone
virtual void PostStepDoItAllDone()
ignored, empty stub only implemented because it's pure virtual in base class
Definition: StepTiming.h:51
Belle2::Simulation::StepTiming::AlongStepDoItOneByOne
virtual void AlongStepDoItOneByOne()
ignored, empty stub only implemented because it's pure virtual in base class
Definition: StepTiming.h:53
Belle2::Simulation::StepTiming::DPSLPostStep
virtual void DPSLPostStep()
ignored, empty stub only implemented because it's pure virtual in base class
Definition: StepTiming.h:63
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19
Belle2::Simulation::StepTiming::PostStepDoItOneByOne
virtual void PostStepDoItOneByOne()
ignored, empty stub only implemented because it's pure virtual in base class
Definition: StepTiming.h:55
Belle2::Simulation::StepTiming::DPSLStarted
virtual void DPSLStarted()
ignored, empty stub only implemented because it's pure virtual in base class
Definition: StepTiming.h:59
Belle2::Simulation::StepTiming
Class to perform more detailed timing studies of the Geant4 simulation.
Definition: StepTiming.h:36
Belle2::Simulation::StepTiming::AtRestDoItInvoked
virtual void AtRestDoItInvoked()
ignored, empty stub only implemented because it's pure virtual in base class
Definition: StepTiming.h:47
Belle2::Simulation::StepTiming::VerboseParticleChange
virtual void VerboseParticleChange()
ignored, empty stub only implemented because it's pure virtual in base class
Definition: StepTiming.h:69
Belle2::Simulation::StepTiming::m_startTime
double m_startTime
start time of the step
Definition: StepTiming.h:74
Belle2::Simulation::StepTiming::m_callback
callbackType m_callback
callback function to call
Definition: StepTiming.h:69
Belle2::Simulation::StepTiming::TrackingStarted
virtual void TrackingStarted()
ignored, empty stub only implemented because it's pure virtual in base class
Definition: StepTiming.h:57
Belle2::Simulation::StepTiming::DPSLAlongStep
virtual void DPSLAlongStep()
ignored, empty stub only implemented because it's pure virtual in base class
Definition: StepTiming.h:65