44 if(!report.time.empty()){
45 G4double sumVTime = 0.;
46 G4double sumPTime = 0.;
51 ATH_MSG_INFO(
"****** TestActionTimer: Beginning timer dump ******");
53 G4double DeadTime = report.runTime - sumVTime;
54 G4double OtherPart = report.runTime - DeadTime - sumPTime;
57 ATH_MSG_INFO(
"EvtAve\t"<<report.runTime/report.nev<<
"\t100");
60 ATH_MSG_INFO(report.timeName[i] <<
"\t" << report.time[i]/report.nev <<
"\t" << report.time[i]/report.runTime);
62 ATH_MSG_INFO(
"Dead\t" << DeadTime/report.nev <<
"\t" << DeadTime/report.runTime);
64 ATH_MSG_INFO(report.timeName[i] <<
"\t" << report.time[i]/report.nev <<
"\t" << report.time[i]/report.runTime);
66 ATH_MSG_INFO(
"OtherPart\t" << OtherPart/report.nev <<
"\t" << OtherPart/report.runTime);
68 ATH_MSG_INFO(
"****** TestActionTimer: Major Subdet Times per Event *********");
79 ATH_MSG_INFO(
"******* TestActionTimer: Major Subdet Frac per Event *********");
90 ATH_MSG_INFO(
"******* TestActionTimer: Timer Information *********");
91 ATH_MSG_INFO(
"NOTE: in case of MT runs, the timings for the individual threads are added, i.e. it is");
92 ATH_MSG_INFO(
" equivalent to running the N threads sequentially instead of in parallel.");
93 ATH_MSG_INFO(
"Timers were run over " << report.nev <<
" events, and the averages were taken by");
94 ATH_MSG_INFO(
"detector portion. Detectors are determined by volume name. Pieces include:");
95 ATH_MSG_INFO(
"EMB, EMEC, FCAL, HEC, Tile - the sampling portions of the calorimeters.");
96 ATH_MSG_INFO(
"Pixel, SCT, TRT - the sensitive portions of the tracker only");
97 ATH_MSG_INFO(
"InDetSvc - all remaining portions of the inner detector");
98 ATH_MSG_INFO(
"Oth.LAr - all remaining portions of the LAr, including preshower, solenoid,");
100 ATH_MSG_INFO(
"Other - volumes not listed, including ATLAS::ATLAS and CALO::CALO");
102 ATH_MSG_INFO(
"Dead time includes overhead per event (file i/o, event loading, timing overhead)");
104 ATH_MSG_INFO(
"All times are user+system time on your processor");
105 ATH_MSG_INFO(
"******* TestActionTimer: End of timer dump *********");
110 report.runTime -= DeadTime;
112 r_geo->Fill( i , report.time[i] / report.runTime*100. );
113 r_geo->GetXaxis()->SetBinLabel( i+1 , report.timeName[i].c_str() );
121 r_geo->SetXTitle(
"Detector Region");
122 r_part->SetXTitle(
"Particle Type");
123 r_geo->SetYTitle(
"Percent of Event Time");
124 r_part->SetYTitle(
"Percent of Event Time");
127 if (
m_histSvc->regHist(
"/simTime/GeoResults",r_geo).isFailure() ||
128 m_histSvc->regHist(
"/simTime/ParticleResults",r_part).isFailure() ){
135 ATH_MSG_INFO(
"******* TestActionTimer: Nothing to report, no events timed! *********");
137 }
else {
ATH_MSG_INFO(
"******* TestActionTimer: No timing information recoreded! *********");}
138 return StatusCode::SUCCESS;