ATLAS Offline Software
Public Member Functions | Protected Member Functions | Protected Attributes | Private Member Functions | Private Attributes | List of all members
G4UA::TestActionVPTimerTool Class Reference

Tool which manages the TestActionVPTimer action. More...

#include <TestActionVPTimerTool.h>

Inheritance diagram for G4UA::TestActionVPTimerTool:
Collaboration diagram for G4UA::TestActionVPTimerTool:

Public Member Functions

 TestActionVPTimerTool (const std::string &type, const std::string &name, const IInterface *parent)
 Standard constructor. More...
 
virtual StatusCode finalize () override
 Triggers report merging from threads. More...
 
virtual StatusCode fillUserAction (G4AtlasUserActions &actionLists) override final
 Fill the user action lists. More...
 

Protected Member Functions

virtual std::unique_ptr< TestActionVPTimermakeAndFillAction (G4AtlasUserActions &) override final
 Create action for this thread. More...
 

Protected Attributes

ThreadSpecificUserAction< TestActionVPTimerm_actions
 Thread-specific storage of the user action. More...
 

Private Member Functions

void TimerPrint (std::pair< VolTree, TestActionVPTimer::volumeData >, const double tTotal, const int depth=0) const
 
void TreeOut (const VolTree &, const double tAtlas, int depth=0)
 

Private Attributes

TestActionVPTimer::Config m_config
 holds the runtime configuration More...
 
TestActionVPTimer::Report m_report
 holds data to be reported at end of run More...
 

Detailed Description

Tool which manages the TestActionVPTimer action.

Create the TestActionVPTimer for each worker thread and merges timing results in finalization.

Author
Andrea Di Simone

Definition at line 23 of file TestActionVPTimerTool.h.

Constructor & Destructor Documentation

◆ TestActionVPTimerTool()

G4UA::TestActionVPTimerTool::TestActionVPTimerTool ( const std::string &  type,
const std::string &  name,
const IInterface *  parent 
)

Standard constructor.

Definition at line 40 of file TestActionVPTimerTool.cxx.

43  : UserActionToolBase<TestActionVPTimer>(type, name, parent)
44  {
45  declareProperty("CaloDepth",m_config.dCALO);
46  declareProperty("BeamPipeDepth",m_config.dBeam);
47  declareProperty("InDetDepth",m_config.dIDET);
48  declareProperty("MuonDepth",m_config.dMUON);
49  declareProperty("DetailDepth",m_config.dDetail);
50  }

Member Function Documentation

◆ fillUserAction()

virtual StatusCode G4UA::UserActionToolBase< TestActionVPTimer >::fillUserAction ( G4AtlasUserActions actionLists)
inlinefinaloverridevirtualinherited

Fill the user action lists.

Definition at line 45 of file UserActionToolBase.h.

46  {
47  auto myAction = makeAndFillAction(actionLists);
48  if(myAction == nullptr) {
49  ATH_MSG_ERROR( "Failed to construct user action in " << name() );
50  return StatusCode::FAILURE;
51  }
52  m_actions.set( std::move(myAction) );
53  return StatusCode::SUCCESS;
54  }

◆ finalize()

StatusCode G4UA::TestActionVPTimerTool::finalize ( )
overridevirtual

Triggers report merging from threads.

Definition at line 65 of file TestActionVPTimerTool.cxx.

66  {
67  // We shouldn't need this. End-run actions should be called by Geant4.
68  // I'll leave this here, commented out for now, for reference.
69  //for(auto& tidAction : m_actions) {
70  // ((G4UserRunAction*)tidAction.second)->EndOfRunAction(0);
71  //}
72 
73  // Accumulate results across threads
76 
77  if(m_report.time_index.size()){
78 
79  VolTree topPV; // vector< pair<physvol*,int> >
80  // time_index is map<VolTree, TestActionVPTimer::volumeData>
81 
82  topPV.push_back(m_report.time_index.begin()->first.front());
83  TestActionVPTimer::volumeData atlasData = m_report.time_index.find(topPV)->second;
84  G4double DeadTime = m_report.runTime - atlasData.tTotal;
85 
86  ATH_MSG_INFO("Runtime " << m_report.runTime
87  << " Dead Time " << DeadTime );
88 
89  if (m_report.nev != 0){
90  ATH_MSG_INFO("******* Beginning timer dump *******" );
91 
92  ATH_MSG_INFO(setw(12) << "Time" << setw(12) << "per Event" << setw(12)
93  << "per Run" << setw(6) << "Depth" << " Location/Particle" );
94  ATH_MSG_INFO(vPrFmt(m_report.runTime, m_report.nev, atlasData.tTotal, -999, " Event Average") );
95  ATH_MSG_INFO(vPrFmt(DeadTime, m_report.nev, atlasData.tTotal, -999, " Dead/Initialization") );
96 
97  ATH_MSG_INFO("\n******* Data by volume/select particles *******");
98  ATH_MSG_INFO("Data printed in reverse tree order (mother following daughter)");
99 
100  TreeOut(topPV, atlasData.tTotal);
101  // for (VolIt c = v_time_index.begin(); c != v_time_index.end(); c++) {
102  // TimerPrint(*c, atlasData.tTotal, c->first.size());
103  // }
104 
105  ATH_MSG_INFO( "\n******* Data by particle/category *******");
106 
107  ATH_MSG_INFO(vPrFmt(atlasData.tElectron, m_report.nev, atlasData.tTotal, -999, "e+/-" ) );
108  ATH_MSG_INFO(vPrFmt(atlasData.tPhoton, m_report.nev, atlasData.tTotal, -999, "gamma" ) );
109  ATH_MSG_INFO(vPrFmt(atlasData.tNeutron, m_report.nev, atlasData.tTotal, -999, "neutron") );
110  ATH_MSG_INFO(vPrFmt(atlasData.tPion, m_report.nev, atlasData.tTotal, -999, "pi+/-/0") );
111  ATH_MSG_INFO(vPrFmt(atlasData.tBaryon, m_report.nev, atlasData.tTotal, -999, "baryon" ) );
112  ATH_MSG_INFO(vPrFmt(atlasData.tLepton, m_report.nev, atlasData.tTotal, -999, "lepton" ) );
113  ATH_MSG_INFO(vPrFmt(atlasData.tMeson, m_report.nev, atlasData.tTotal, -999, "meson" ) );
114  ATH_MSG_INFO(vPrFmt(atlasData.tOther, m_report.nev, atlasData.tTotal, -999, "other" ) );
115 
116  } else { ATH_MSG_WARNING("******* No events timed! *******"); }
117  } else { ATH_MSG_WARNING("******* No Timing information recorded! *******"); }
118 
119  return StatusCode::SUCCESS;
120  }

◆ makeAndFillAction()

std::unique_ptr< TestActionVPTimer > G4UA::TestActionVPTimerTool::makeAndFillAction ( G4AtlasUserActions actionList)
finaloverrideprotectedvirtual

Create action for this thread.

Implements G4UA::UserActionToolBase< TestActionVPTimer >.

Definition at line 54 of file TestActionVPTimerTool.cxx.

55  {
56  ATH_MSG_DEBUG("Constructing a TestActionVPTimer");
57  auto action = std::make_unique<TestActionVPTimer>(m_config);
58  actionList.runActions.push_back( action.get() );
59  actionList.eventActions.push_back( action.get() );
60  actionList.steppingActions.push_back( action.get() );
61  return action;
62  }

◆ TimerPrint()

void G4UA::TestActionVPTimerTool::TimerPrint ( std::pair< VolTree, TestActionVPTimer::volumeData vp,
const double  tTotal,
const int  depth = 0 
) const
inlineprivate

Definition at line 139 of file TestActionVPTimerTool.cxx.

141  {
142  G4VPhysicalVolume* pv = vp.first.back().first;
143  std::string physical = stringify(pv->GetName());
144  std::string copyNo = stringify(vp.first.back().second);
145  std::string mother = "";
146  if (vp.first.size() != 1) mother = stringify( (vp.first.end()-2)->first->GetName() );
147  ATH_MSG_INFO(vPrFmt(vp.second.tTotal, m_report.nev, tTotal, depth-1, physical+"_"+copyNo+" "+mother) );
148  ATH_MSG_INFO(vPrFmt(vp.second.tElectron, m_report.nev, tTotal, depth-1, " - electrons & positrons") );
149  ATH_MSG_INFO(vPrFmt(vp.second.tPhoton, m_report.nev, tTotal, depth-1, " - photons") );
150  ATH_MSG_INFO(vPrFmt(vp.second.tNeutron, m_report.nev, tTotal, depth-1, " - neutrons") );
151  ATH_MSG_INFO(vPrFmt(vp.second.tPion, m_report.nev, tTotal, depth-1, " - pions") );
152 
153  double tOther = vp.second.tTotal - vp.second.tElectron - vp.second.tPhoton - vp.second.tNeutron - vp.second.tPion;
154  ATH_MSG_INFO(vPrFmt(tOther, m_report.nev, m_report.runTime, depth-1, " - other particles") );
155  }

◆ TreeOut()

void G4UA::TestActionVPTimerTool::TreeOut ( const VolTree id,
const double  tAtlas,
int  depth = 0 
)
private

Definition at line 123 of file TestActionVPTimerTool.cxx.

124  {
125  VolIt v = m_report.time_index.find(id);
126  if (v != m_report.time_index.end()) {
127  depth++;
128  for (VolIt c = m_report.time_index.begin(); c != m_report.time_index.end(); ++c) {
129  VolTree check = c->first;
130  check.pop_back();
131  if (id == check) TreeOut(c->first, tAtlas, depth);
132  }
133  TimerPrint(*v, tAtlas, depth);
134  }
135  }

Member Data Documentation

◆ m_actions

Thread-specific storage of the user action.

Definition at line 63 of file UserActionToolBase.h.

◆ m_config

TestActionVPTimer::Config G4UA::TestActionVPTimerTool::m_config
private

holds the runtime configuration

Definition at line 42 of file TestActionVPTimerTool.h.

◆ m_report

TestActionVPTimer::Report G4UA::TestActionVPTimerTool::m_report
private

holds data to be reported at end of run

Definition at line 44 of file TestActionVPTimerTool.h.


The documentation for this class was generated from the following files:
G4UA::TestActionVPTimer::Config::dBeam
int dBeam
Definition: TestActionVPTimer.h:60
egammaParameters::depth
@ depth
pointing depth of the shower as calculated in egammaqgcld
Definition: egammaParamDefs.h:276
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
G4UA::ThreadSpecificUserAction::set
void set(std::unique_ptr< ActionType > action)
Assign the object of the current thread.
Definition: ThreadSpecificUserAction.h:61
G4UA::TestActionVPTimerTool::m_report
TestActionVPTimer::Report m_report
holds data to be reported at end of run
Definition: TestActionVPTimerTool.h:44
G4UA::TestActionVPTimerTool::TimerPrint
void TimerPrint(std::pair< VolTree, TestActionVPTimer::volumeData >, const double tTotal, const int depth=0) const
Definition: TestActionVPTimerTool.cxx:139
G4UA::TestActionVPTimer::Config::dIDET
int dIDET
Definition: TestActionVPTimer.h:61
G4UA::TestActionVPTimerTool::m_config
TestActionVPTimer::Config m_config
holds the runtime configuration
Definition: TestActionVPTimerTool.h:42
G4UA::TestActionVPTimer::Config::dMUON
int dMUON
Used for setting depths in jobOptions file.
Definition: TestActionVPTimer.h:62
G4UA::ThreadSpecificUserAction::accumulate
void accumulate(ResultType &result, Mapper mapOp, Reducer reduceOp)
Accumulate results across user actions with specified operations.
Definition: ThreadSpecificUserAction.h:88
G4UA::TestActionVPTimerTool::TreeOut
void TreeOut(const VolTree &, const double tAtlas, int depth=0)
Definition: TestActionVPTimerTool.cxx:123
G4UA::vPrFmt
std::string vPrFmt(double time, double nEv, double tRun, int depth, const std::string &id)
Definition: TestActionVPTimerTool.cxx:26
G4UA::TestActionVPTimer::Config::dCALO
int dCALO
Definition: TestActionVPTimer.h:59
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
stringify
std::string stringify(T obj)
Definition: VolumeTreeNavigator.h:73
G4UA::TestActionVPTimer::Report::time_index
VolMap time_index
Definition: TestActionVPTimer.h:107
G4UA::TestActionVPTimer::Report::nev
int nev
number of processed events
Definition: TestActionVPTimer.h:108
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
G4UA::UserActionToolBase< TestActionVPTimer >::m_actions
ThreadSpecificUserAction< TestActionVPTimer > m_actions
Thread-specific storage of the user action.
Definition: UserActionToolBase.h:63
test_pyathena.parent
parent
Definition: test_pyathena.py:15
G4UA::VolIt
VolMap::const_iterator VolIt
Definition: TestActionVPTimerTool.cxx:37
VolTree
std::vector< VolID > VolTree
Definition: VolumeTreeNavigator.h:36
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
LArNewCalib_Delay_OFC_Cali.check
check
Definition: LArNewCalib_Delay_OFC_Cali.py:208
G4UA::UserActionToolBase< TestActionVPTimer >::makeAndFillAction
virtual std::unique_ptr< TestActionVPTimer > makeAndFillAction(G4AtlasUserActions &actionLists)=0
Make the action and push onto the lists.
python.PyAthena.v
v
Definition: PyAthena.py:157
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
python.CaloScaleNoiseConfig.action
action
Definition: CaloScaleNoiseConfig.py:77
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
python.changerun.pv
pv
Definition: changerun.py:81
G4UA::TestActionVPTimer::Report::merge
void merge(const Report &rep)
Definition: TestActionVPTimer.h:111
declareProperty
#define declareProperty(n, p, h)
Definition: BaseFakeBkgTool.cxx:15
G4UA::TestActionVPTimer::getReport
const Report & getReport() const
Definition: TestActionVPTimer.h:141
G4UA::TestActionVPTimer::Config::dDetail
std::string dDetail
Path to set detailed depth in jobOptions file.
Definition: TestActionVPTimer.h:63
python.compressB64.c
def c
Definition: compressB64.py:93
G4UA::TestActionVPTimer::Report::runTime
double runTime
Double for storing this run time.
Definition: TestActionVPTimer.h:109