ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Simulation
G4Utilities
G4ProfilingTools
src
TestActionTimer.h
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
3
*/
4
6
// //
7
// $Id: TestActionTimer.h 660034 2015-04-10 17:20:49Z jchapman $ //
8
// //
9
// TestActionTimer //
10
// Code for text output (into log file) //
11
// of information about the time spent simulating //
12
// various pieces of the detector and particles. //
13
// //
14
// Written by //
15
// Zachary Marshall, Caltech, USA //
16
// Wolfgang Ehrenfeld, University of Hamburg, Germany //
17
// //
18
// @version $Revision: 660034 $ //
19
// //
21
22
#ifndef TestActionTimer_H
23
#define TestActionTimer_H
24
25
26
#include <string>
27
#include <vector>
28
29
#include "G4String.hh"
30
31
#include "G4UserEventAction.hh"
32
#include "G4UserRunAction.hh"
33
#include "G4UserSteppingAction.hh"
34
35
// Forward declarations
36
class
G4Run;
37
class
G4Event;
38
class
G4Step;
39
class
G4Timer;
40
class
ITHistSvc;
41
42
namespace
G4UA
43
{
44
51
52
class
TestActionTimer
:
53
public
G4UserEventAction,
public
G4UserRunAction,
public
G4UserSteppingAction
54
{
55
56
public
:
58
TestActionTimer
();
59
60
TestActionTimer
(
const
TestActionTimer
&) =
delete
;
61
TestActionTimer
&
operator=
(
const
TestActionTimer
&) =
delete
;
62
64
struct
Report
65
{
66
int
nev
=0;
67
std::vector<double>
time
;
68
std::vector<std::string>
timeName
;
69
double
runTime
=0;
70
void
merge
(
const
Report
& rep){
71
nev
+=rep.nev;
72
runTime
+=rep.runTime;
73
// copy first report
74
if
(
time
.empty()){
75
time
=rep.time;
76
timeName
=rep.timeName;
77
return
;
78
}
79
// sum the following ones
80
for
(
unsigned
int
i=0;i<
time
.size();++i)
81
time
[i]+=rep.time[i];
82
}
83
};
84
85
const
Report
&
getReport
()
const
86
{
return
m_report
; }
87
88
virtual
void
BeginOfEventAction
(
const
G4Event*)
override
;
89
virtual
void
EndOfEventAction
(
const
G4Event*)
override
;
90
virtual
void
BeginOfRunAction
(
const
G4Run*)
override
;
91
virtual
void
EndOfRunAction
(
const
G4Run*)
override
;
92
virtual
void
UserSteppingAction
(
const
G4Step*)
override
;
93
94
/* Enumeration for timers to be used
95
First timers are by subdetector, second few are by particle
96
These are not straightforward for the non-expert to interpret*/
97
enum
{
eEMB
,
eEMEC
,
eFC1
,
eFC23
,
eFCO
,
eHEC
,
eCry
,
eLAr
,
eHCB
,
98
ePre
,
eMu
,
ePx
,
eSct
,
eITkPix
,
eITkStrip
,
eSev
,
eTrt
,
eHGTD
,
eOther
,
99
eElec
,
ePos
,
eGam
,
eNeut
,
eMax
};
100
101
private
:
102
103
Report
m_report
{};
104
105
G4Timer*
m_runTimer
{};
106
G4Timer*
m_eventTimer
{};
107
double
m_eventTime
{};
108
109
std::vector<G4Timer*>
m_timer
{};
110
111
double
TimerSum
(G4Timer* timer)
const
;
112
113
void
PPanic
();
114
void
VPanic
();
115
int
ClassifyVolume
( G4String& )
const
;
116
117
};
// class TestActionTimer
118
119
}
// namespace G4UA
120
121
#endif
// #define TestActionTimer_H
G4UA::TestActionTimer::operator=
TestActionTimer & operator=(const TestActionTimer &)=delete
G4UA::TestActionTimer::m_runTimer
G4Timer * m_runTimer
Timer for the entire run.
Definition
TestActionTimer.h:105
G4UA::TestActionTimer::getReport
const Report & getReport() const
Definition
TestActionTimer.h:85
G4UA::TestActionTimer::ClassifyVolume
int ClassifyVolume(G4String &) const
Method to sort out which volume we are in.
Definition
TestActionTimer.cxx:270
G4UA::TestActionTimer::TestActionTimer
TestActionTimer()
constructor
Definition
TestActionTimer.cxx:61
G4UA::TestActionTimer::TimerSum
double TimerSum(G4Timer *timer) const
Gets the appropriate time from the timer for adding to the sum.
Definition
TestActionTimer.cxx:219
G4UA::TestActionTimer::m_eventTimer
G4Timer * m_eventTimer
Timer for this event.
Definition
TestActionTimer.h:106
G4UA::TestActionTimer::m_timer
std::vector< G4Timer * > m_timer
Vector of timers for each of the enum.
Definition
TestActionTimer.h:109
G4UA::TestActionTimer::UserSteppingAction
virtual void UserSteppingAction(const G4Step *) override
Definition
TestActionTimer.cxx:154
G4UA::TestActionTimer::EndOfRunAction
virtual void EndOfRunAction(const G4Run *) override
Definition
TestActionTimer.cxx:146
G4UA::TestActionTimer::eITkStrip
@ eITkStrip
Definition
TestActionTimer.h:98
G4UA::TestActionTimer::eHCB
@ eHCB
Definition
TestActionTimer.h:97
G4UA::TestActionTimer::ePos
@ ePos
Definition
TestActionTimer.h:99
G4UA::TestActionTimer::eSev
@ eSev
Definition
TestActionTimer.h:98
G4UA::TestActionTimer::eITkPix
@ eITkPix
Definition
TestActionTimer.h:98
G4UA::TestActionTimer::eMu
@ eMu
Definition
TestActionTimer.h:98
G4UA::TestActionTimer::eFC1
@ eFC1
Definition
TestActionTimer.h:97
G4UA::TestActionTimer::ePx
@ ePx
Definition
TestActionTimer.h:98
G4UA::TestActionTimer::eGam
@ eGam
Definition
TestActionTimer.h:99
G4UA::TestActionTimer::eEMB
@ eEMB
Definition
TestActionTimer.h:97
G4UA::TestActionTimer::eOther
@ eOther
Definition
TestActionTimer.h:98
G4UA::TestActionTimer::eTrt
@ eTrt
Definition
TestActionTimer.h:98
G4UA::TestActionTimer::eHEC
@ eHEC
Definition
TestActionTimer.h:97
G4UA::TestActionTimer::eFC23
@ eFC23
Definition
TestActionTimer.h:97
G4UA::TestActionTimer::eSct
@ eSct
Definition
TestActionTimer.h:98
G4UA::TestActionTimer::eMax
@ eMax
Definition
TestActionTimer.h:99
G4UA::TestActionTimer::eCry
@ eCry
Definition
TestActionTimer.h:97
G4UA::TestActionTimer::eHGTD
@ eHGTD
Definition
TestActionTimer.h:98
G4UA::TestActionTimer::eFCO
@ eFCO
Definition
TestActionTimer.h:97
G4UA::TestActionTimer::ePre
@ ePre
Definition
TestActionTimer.h:98
G4UA::TestActionTimer::eEMEC
@ eEMEC
Definition
TestActionTimer.h:97
G4UA::TestActionTimer::eLAr
@ eLAr
Definition
TestActionTimer.h:97
G4UA::TestActionTimer::eElec
@ eElec
Definition
TestActionTimer.h:99
G4UA::TestActionTimer::eNeut
@ eNeut
Definition
TestActionTimer.h:99
G4UA::TestActionTimer::m_eventTime
double m_eventTime
Double for storing this event.
Definition
TestActionTimer.h:107
G4UA::TestActionTimer::BeginOfRunAction
virtual void BeginOfRunAction(const G4Run *) override
Definition
TestActionTimer.cxx:140
G4UA::TestActionTimer::EndOfEventAction
virtual void EndOfEventAction(const G4Event *) override
Definition
TestActionTimer.cxx:131
G4UA::TestActionTimer::BeginOfEventAction
virtual void BeginOfEventAction(const G4Event *) override
Definition
TestActionTimer.cxx:116
G4UA::TestActionTimer::PPanic
void PPanic()
Method to shut down all particle timers.
Definition
TestActionTimer.cxx:226
G4UA::TestActionTimer::m_report
Report m_report
Definition
TestActionTimer.h:103
G4UA::TestActionTimer::VPanic
void VPanic()
Method to shut down all volume timers.
Definition
TestActionTimer.cxx:248
G4UA::TestActionTimer::TestActionTimer
TestActionTimer(const TestActionTimer &)=delete
G4UA
for nSW
Definition
CalibrationDefaultProcessing.h:19
G4UA::TestActionTimer::Report
this holds all the data from individual threads that needs to be merged at EoR
Definition
TestActionTimer.h:65
G4UA::TestActionTimer::Report::nev
int nev
Definition
TestActionTimer.h:66
G4UA::TestActionTimer::Report::time
std::vector< double > time
Vector of timers for each of the enum.
Definition
TestActionTimer.h:67
G4UA::TestActionTimer::Report::merge
void merge(const Report &rep)
Definition
TestActionTimer.h:70
G4UA::TestActionTimer::Report::timeName
std::vector< std::string > timeName
Vector of names for each of the timers.
Definition
TestActionTimer.h:68
G4UA::TestActionTimer::Report::runTime
double runTime
Definition
TestActionTimer.h:69
Generated on
for ATLAS Offline Software by
1.17.0