ATLAS Offline Software
AthenaSummarySvc.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 /*****************************************************************************
6  *
7  * AthenaSummarySvc.cxx
8  * AthenaSummarySvc
9  *
10  * Author: Charles Leggett
11  *
12  * Provides summary at end of athena job
13  *
14  *****************************************************************************/
15 
16 #include "AthenaSummarySvc.h"
17 
18 #include "GaudiKernel/FileIncident.h"
19 #include "GaudiKernel/ISvcLocator.h"
20 #include "GaudiKernel/Incident.h"
21 #include "GaudiKernel/IIncidentListener.h"
22 #include "GaudiKernel/System.h"
23 
25 
26 #include <fstream>
27 #include <unistd.h>
28 #include <exception>
29 #include <sstream>
30 #include <ctype.h>
31 
32 static const std::string levelNames[MSG::NUM_LEVELS] = {"NIL", "VERBOSE", "DEBUG", "INFO",
33  "WARNING", "ERROR", "FATAL", "ALWAYS"};
34 
35 using namespace std;
36 
37 char* AthenaSummarySvc::s_block = nullptr;
38 bool AthenaSummarySvc::s_badalloc = false;
39 const char* const II("\001");
40 
41 
42 //
44 //
45 
46 class PD {
47 public:
48  PD(){};
49  PD(const string& a, const string& b) { add(a,b); }
50 
51  void add(const string& a, const char* b) {
52  add(a,(string)b);
53  }
54  void add(const string& a, const string& b) {
55  m_dat[a].push_back( b );
56  }
57  void add(const string& a, const PD& p) {
58  m_dat[a].push_back( p.dump() );
59  }
60  template <typename T>
61  void add(const string& a, const T t) {
62  ostringstream ofs;
63  m_ofs.clear();
64  m_ofs.str("");
65 
66  m_ofs << II << t;
67 
68  m_dat[a].push_back( m_ofs.str() );
69  }
70 
71  operator const string () const
72  {
73  return dump();
74  }
75 
76  string dump() const {
77  string x("{");
78  map<string,vector<string> >::const_iterator itr;
79  unsigned int iv;
80  for (itr=m_dat.begin(); itr != m_dat.end(); ++itr) {
81  if (x.length() > 1) { x+= ','; }
82  x += "\"" + itr->first + "\":";
83  vector<string> v = itr->second;
84  if (v.size() > 1) { x += '['; }
85  for (iv = 0; iv < v.size(); ++iv) {
86  if (iv > 0) { x += ','; }
87  if (v[iv][0] == '{') {
88  x += v[iv];
89  } else if (v[iv].compare(0,1, II)==0) {
90  x.append( v[iv], 1,v[iv].length());
91  } else {
92  x += "\"" + v[iv] + "\"";
93  }
94  }
95  if (v.size() > 1) { x += ']'; }
96  }
97  x += '}';
98  return x;
99  }
100 
101 
102 private:
103 
104  map<string, vector<string> > m_dat;
105  static ostringstream m_ofs ATLAS_THREAD_SAFE;
106 
107 };
108 
109 ostringstream PD::m_ofs("nothing");
110 
111 inline void tolower(std::string &s)
112 {
113  // cf https://en.cppreference.com/w/cpp/string/byte/tolower
114  std::transform(s.begin(), s.end(), s.begin(),
115  [](unsigned char c){ return std::tolower(c); } );
116 }
117 
118 //
120 //
121 
122 AthenaSummarySvc::AthenaSummarySvc( const std::string& name, ISvcLocator* svc )
123  : base_class( name, svc ),
124  p_incSvc("IncidentSvc",name),
125  m_new (std::set_new_handler( &AthenaSummarySvc::newHandler ))
126 {
127 }
128 
129 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
130 
132 
133  ATH_MSG_DEBUG("Initializing AthenaSummarySvc");
134 
135  int pri=100;
136  p_incSvc->addListener( this, "BeginInputFile", pri, true);
137  p_incSvc->addListener( this, "EndInputFile", pri, true);
138  p_incSvc->addListener( this, "BeginOutputFile", pri, true);
139  p_incSvc->addListener( this, "FailOutputFile", pri, true);
140  p_incSvc->addListener( this, "WroteToOutputFile", pri, true);
141  p_incSvc->addListener( this, "EndOutputFile", pri, true);
142 
143  p_incSvc->addListener( this, "AbortEvent", pri, true);
144 
145  p_incSvc->addListener( this, "BeginEvent", pri, true);
146  p_incSvc->addListener( this, "EndEvent", pri, true);
147  p_incSvc->addListener( this, "BeginRun", pri, true);
148  p_incSvc->addListener( this, "EndRun", pri, true);
149 
150  p_incSvc->addListener( this, "FirstInputFile", pri, true );
151 
152  vector<string>::const_iterator itr;
153  for (itr=m_extraInc.value().begin(); itr != m_extraInc.value().end(); ++itr) {
154  ATH_MSG_DEBUG("Tracking incident \"" << *itr << "\"");
155  addListener(*itr);
156  }
157 
158  p_logMsg = dynamic_cast< ILoggedMessageSvc* > ( msgSvc().get() );
159  if (p_logMsg == nullptr) {
160  ATH_MSG_INFO("unable dcast IMessageSvc to ILoggedMessageSvc: "
161  "not scanning for keywords in logs, or printing logged messages");
162  } else {
163 
164  if (m_keywords.value().size() > 0) {
165  IProperty *ip = dynamic_cast<IProperty*>( p_logMsg );
166  if (ip != nullptr) {
167  if (ip->setProperty(m_keywords).isFailure()) {
168  ATH_MSG_ERROR("could not set keywords property of LoggedMessageSvc");
169  } else {
170  ATH_MSG_INFO("Scanning log for keyword \"" << m_keywords
171  << "\". CAVEAT EMPTOR - THIS IS VERY SLOW!!");
172  }
173  } else {
174  ATH_MSG_ERROR("could not dcast LoggedMessageSvc to IProperty");
175  }
176  }
177  }
178 
179  std::string fmt = m_summaryFormat.value();
180  tolower(fmt);
182 
183  // save some space for the summary output if we run out of memory
184  ATH_MSG_DEBUG("allocating block of 100 pages");
185  s_block = new char[ sysconf( _SC_PAGESIZE ) * 100 ];
186 
187 
188  return StatusCode(s_block!=nullptr);
189 
190 }
191 
192 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
193 
195 
196  delete[] s_block; s_block = nullptr;
197  s_block = new char[ sysconf( _SC_PAGESIZE ) * 100 ];
198  return s_block ? StatusCode::SUCCESS : StatusCode::FAILURE;
199 
200 }
201 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
202 
204 
205  createSummary().ignore();
206 
207  // cleanup
208  delete[] s_block; s_block = nullptr;
209  std::set_new_handler( m_new );
210 
211  return StatusCode::SUCCESS;
212 }
213 
214 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
215 
216 void
217 AthenaSummarySvc::addListener( const std::string& inc ) {
218 
219  ATH_MSG_DEBUG("now listening to incident " << inc);
220 
221  if (m_extraIncidents.find( inc ) == m_extraIncidents.end()) {
222  p_incSvc->addListener( this, inc, 100, true);
223  m_extraIncidents[inc] = map<string,int>();
224  } else {
225  ATH_MSG_INFO("already listening to Incident " << inc);
226  }
227 
228 }
229 
230 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
231 
232 void
233 AthenaSummarySvc::addSummary(const std::string& dict, const std::string& info) {
234 
235  ATH_MSG_DEBUG("adding extra info: " << dict << "/" << info);
236 
237  m_extraInfo.push_back( make_pair(dict,info) );
238 
239 }
240 
241 
242 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
243 
244 void
246 
247  s_badalloc = true;
248 
249  if ( ! s_block )
250  throw std::bad_alloc(); // default behavior (no print-out)
251 
252  // release our block to create working space for finalize()
253  delete[] s_block; s_block = nullptr;
254 
255  // print onto std::cerr rather than MsgStream, as it's more innocuous
256  std::cerr << "AthenaSummarySvc FATAL out of memory: saving summary ..."
257  << std::endl;
258 
259  SmartIF<IAthenaSummarySvc> ipa(Gaudi::svcLocator()->service("AthenaSummarySvc"));
260 
261  if (ipa) {
262  std::string btrace;
263  if ( System::backTrace(btrace,5,3) ) {
264  ipa->addSummary("badalloc backtrace",btrace);
265  }
266 
267  ipa->setStatus(99);
268  ipa->createSummary().ignore();
269  } else {
270  std::cerr << "AthenaSummarySvc ERROR unable to get hold of myself and print summary"
271  << std::endl;
272  }
273 
274 
275  // in order to abort the job, throw a bad_alloc, which should make its way
276  // through to python, even if the ExceptionSvc is used, and that will shutdown
277  // (finalize/terminate) the application on exit
278  throw std::bad_alloc();
279 
280 }
281 
282 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
283 
284 void
285 AthenaSummarySvc::handle(const Incident &inc) {
286 
287  ATH_MSG_DEBUG("handle incident: " << inc.type() << " " << inc.source());
288 
289  string fileName;
290 
291  const FileIncident *fi = dynamic_cast<const FileIncident*>( &inc );
292  if (fi != nullptr) {
293  // FIXME!!! waiting on AthenaPoolKernel-00-00-07
294  ATH_MSG_INFO(" -> file incident: " << fi->fileName() << " [GUID: " << fi->fileGuid() << "]");
295  fileName = fi->fileName();
296  } else {
297  fileName = inc.source();
298  }
299 
300  if (inc.type() == "BeginInputFile" ) {
301  m_inputFilesRead.push_back( fileName );
302  } else if (inc.type() == "BeginOutputFile") {
303  m_outputFiles.push_back( fileName );
304  } else if (inc.type() == "FailOutputFile") {
305  m_outputFilesError.push_back( fileName );
306  } else if (inc.type() == "BeginEvent") {
307  m_eventsRead ++;
308  } else if (inc.type() == "SkipEvent") {
309  m_eventsSkipped ++;
310  } else if (inc.type() == "WriteEvent") {
311  m_eventsWritten ++;
312  } else if (inc.type() == "BeginRun") {
313  m_runs ++;
314  } else if (inc.type() == "EndRun") {
315  }
316 
317  map<std::string, map<string,int> >::iterator itr
318  ( m_extraIncidents.find(inc.type()) );
319 
320  if (itr != m_extraIncidents.end()) {
321  map<string,int>::iterator it = itr->second.find(inc.source());
322  if (it != itr->second.end()) {
323  m_extraIncidents[inc.type()][inc.source()]++;
324  } else {
325  m_extraIncidents[inc.type()][inc.source()] = 1;
326  }
327  }
328 
329 }
330 
331 
332 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
333 
336 
337  ATH_MSG_DEBUG("createSummary");
338 
339  std::ofstream ofs;
340  ofs.open(m_summaryFile.value().c_str());
341  if (!ofs) {
342  ATH_MSG_ERROR("Unable to open output file \"" << m_summaryFile.value() << "\"");
343  return StatusCode::FAILURE;
344  }
345 
346  ATH_MSG_DEBUG("Writing to \"" << m_summaryFile.value() << "\"");
347 
348  if (m_summaryFormat.value() == "ascii" || m_summaryFormat.value() == "both") {
349  createASCII(ofs);
350  }
351 
352  if (m_summaryFormat.value() == "python" || m_summaryFormat.value() == "both") {
353  createDict(ofs);
354  }
355 
356  ofs.close();
357 
358  return StatusCode::SUCCESS;
359 
360 
361 }
362 
363 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
364 
365 void
366 AthenaSummarySvc::createASCII( std::ofstream& ofs ) {
367 
368  ATH_MSG_DEBUG("createASCII");
369 
370  list<string>::const_iterator itr;
371 
372  ofs << "Files read: " << m_inputFilesRead.size() << std::endl;
373  for (itr=m_inputFilesRead.begin(); itr != m_inputFilesRead.end(); ++itr) {
374  ofs << " " << *itr << endl;
375  }
376 
377  ofs << "Files written: " << m_outputFiles.size() << std::endl;
378  for (itr=m_outputFiles.begin(); itr != m_outputFiles.end(); ++itr) {
379  ofs << " " << *itr << endl;
380  }
381 
382  ofs << "File Write Error: " << m_outputFilesError.size() << std::endl;
383  for (itr=m_outputFilesError.begin(); itr != m_outputFilesError.end(); ++itr) {
384  ofs << " " << *itr << endl;
385  }
386 
387  ofs << "Events Read: " << m_eventsRead << endl;
388  ofs << "Events Written: " << m_eventsWritten << endl;
389  ofs << "Events Skipped: " << m_eventsSkipped << endl;
390 
391  ofs << "Runs: " << m_runs << endl;
392 
393 
394  ofs << "Message Count: " << endl;
395  ofs << " FATAL: " << msgSvc()->messageCount( MSG::FATAL ) << endl;
396  ofs << " ERROR: " << msgSvc()->messageCount( MSG::ERROR ) << endl;
397  ofs << " WARNING: " << msgSvc()->messageCount( MSG::WARNING ) << endl;
398  ofs << " INFO: " << msgSvc()->messageCount( MSG::INFO ) << endl;
399 
400  if (p_logMsg != nullptr) {
401 
402  IntegerProperty thresh("loggingLevel",MSG::VERBOSE);
403  IProperty *ip = dynamic_cast<IProperty*>( p_logMsg );
404  if (ip != nullptr) {
405  if (ip->getProperty(&thresh).isFailure()) {
406  ATH_MSG_ERROR("could not get loggingLevel property of LoggedMessageSvc");
407  }
408  } else {
409  ATH_MSG_ERROR("could not dcast LoggedMessageSvc to IProperty");
410  }
411 
412 
413 
414  ofs << "Message Log: " << endl;
415  vector<pair<string,string> > msgs;
416  vector<pair<string,string> >::const_iterator mitr;
417  for (unsigned int l=thresh.value(); l < MSG::ALWAYS; l++) {
418  ofs << " " << levelNames[l];
419  msgs = p_logMsg->getMessages( MSG::Level(l) );
420  ofs << " " << msgs.size() << endl;
421  for (mitr=msgs.begin(); mitr != msgs.end(); ++mitr) {
422  ofs << " " << mitr->first << " : " << mitr->second << endl;
423  }
424  }
425 
426  ofs << "Keyword tracked messages: " << endl;
427  vector<ILoggedMessageSvc::LoggedMessage>::const_iterator ilm = p_logMsg->getKeyMessages().begin();
428  for (;ilm != p_logMsg->getKeyMessages().end(); ++ilm) {
429  ofs << " " << levelNames[ilm->level] << " " << ilm->source << " " << ilm->message
430  << endl;
431  }
432 
433  }
434 
435  if (m_extraInfo.size() > 0) {
436  ofs << "Extra Summary Info:" << endl;
437  vector<pair<string,string> >::const_iterator itr (m_extraInfo.begin() );
438  for (; itr != m_extraInfo.end(); ++itr) {
439  ofs << " " << itr->first << " : " << itr->second << endl;
440  }
441  }
442 
443  if (m_extraIncidents.size() > 0) {
444  ofs << "Extra Incident Counts:" << endl;
445  map<string, map<string,int> >::const_iterator itr(m_extraIncidents.begin());
446  for (; itr != m_extraIncidents.end(); ++itr) {
447  ofs << " " << itr->first;
448  if (itr->second.begin() == itr->second.end()) {
449  ofs << " : 0" << endl;
450  } else {
451  for (map<string,int>::const_iterator it=itr->second.begin();
452  it != itr->second.end(); ++it) {
453  ofs << " :: " << it->first << ":" << it->second;
454  }
455  ofs << endl;
456  }
457  }
458  }
459 
460  if (s_badalloc) {
461  ofs << "std::bad_alloc caught: out of memory condition detected"
462  << endl;
463  }
464 
465  ofs << "Exit Status: " << m_status << endl;
466 
467 
468 }
469 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
470 
471 void
472 AthenaSummarySvc::createDict( std::ofstream& ofd) {
473 
474  ATH_MSG_DEBUG("createDict");
475 
476  list<string>::const_iterator itr;
477 
478  PD p;
479 
480  PD files;
481  string f;
482  for (itr=m_inputFilesRead.begin(); itr != m_inputFilesRead.end(); ++itr) {
483  if (f.length() > 0) { f += ","; }
484  f += *itr;
485  }
486  files.add("read",f);
487 
488  f.clear();
489  for (itr=m_outputFiles.begin(); itr != m_outputFiles.end(); ++itr) {
490  if (f.length() > 0) { f += ","; }
491  f += *itr;
492  }
493  files.add("write",f);
494 
495  f.clear();
496  for (itr=m_outputFilesError.begin(); itr != m_outputFilesError.end(); ++itr) {
497  if (f.length() > 0) { f += ","; }
498  f += *itr;
499  }
500  files.add("write error",f);
501 
502  p.add("files",files);
503 
504  PD events;
505  events.add("read",m_eventsRead);
506  events.add("write",m_eventsWritten);
507  events.add("skip",m_eventsSkipped);
508 
509  p.add("events",events);
510 
511  p.add("runs",m_runs);
512 
513  PD msg;
514  msg.add("FATAL",msgSvc()->messageCount( MSG::FATAL ));
515  msg.add("ERROR",msgSvc()->messageCount( MSG::ERROR ));
516  msg.add("WARNING",msgSvc()->messageCount( MSG::WARNING ));
517  msg.add("INFO",msgSvc()->messageCount( MSG::INFO ));
518 
519  p.add("message count",msg);
520 
521  if (p_logMsg != nullptr) {
522 
523  IntegerProperty thresh("loggingLevel",MSG::VERBOSE);
524  IProperty *ip = dynamic_cast<IProperty*>( p_logMsg );
525  if (ip != nullptr) {
526  if (ip->getProperty(&thresh).isFailure()) {
527  ATH_MSG_ERROR("could not get loggingLevel property of LoggedMessageSvc");
528  }
529  } else {
530  ATH_MSG_ERROR("could not dcast LoggedMessageSvc to IProperty");
531  }
532 
533  PD mlog;
534  vector<pair<string,string> > msgs;
535  vector<pair<string,string> >::const_iterator mitr;
536  for (unsigned int l=thresh.value(); l < MSG::ALWAYS; l++) {
537  PD slog;
538  msgs = p_logMsg->getMessages( MSG::Level(l) );
539  for (mitr=msgs.begin(); mitr != msgs.end(); ++mitr) {
540  slog.add(mitr->first, mitr->second);
541  }
542  mlog.add(levelNames[l],slog);
543  }
544 
545  p.add("messages",mlog);
546 
547  }
548 
549  if (m_extraInfo.size() > 0) {
550  PD user;
551  vector<pair<string,string> >::const_iterator itr (m_extraInfo.begin() );
552  for (; itr != m_extraInfo.end(); ++itr) {
553  string dat = itr->second;
554  while( dat.find("\n") != string::npos) {
555  dat.erase(dat.find("\n"),1);
556  }
557  user.add(itr->first, dat);
558  }
559  p.add("user data",user);
560  }
561 
562  if (m_extraIncidents.size() > 0) {
563  PD inc;
564  map<string, map<string,int> >::const_iterator itr(m_extraIncidents.begin());
565  for (; itr != m_extraIncidents.end(); ++itr) {
566  if (itr->second.begin() == itr->second.end()) {
567  inc.add(itr->first,0);
568  } else {
569  PD inc2;
570  for (map<string,int>::const_iterator it=itr->second.begin();
571  it != itr->second.end(); ++it) {
572  inc2.add(it->first, it->second);
573  }
574  inc.add(itr->first, inc2);
575  }
576  }
577 
578 // PD inc;
579 // map<string, int>::const_iterator itr(m_extraIncidents.begin());
580 // for (; itr != m_extraIncidents.end(); ++itr) {
581 // inc.add(itr->first, itr->second);
582 // }
583 
584  p.add("extra incidents",inc);
585  }
586 
587  p.add("exit",m_status);
588  p.add("bad_alloc",s_badalloc);
589 
590  ofd << p.dump() << endl;
591 
592 }
grepfile.info
info
Definition: grepfile.py:38
xAOD::iterator
JetConstituentVector::iterator iterator
Definition: JetConstituentVector.cxx:68
ILoggedMessageSvc::getKeyMessages
virtual const std::vector< LoggedMessage > & getKeyMessages() const =0
AthenaSummarySvc::AthenaSummarySvc
AthenaSummarySvc(const std::string &name, ISvcLocator *svc)
Definition: AthenaSummarySvc.cxx:122
Amg::compare
std::pair< int, int > compare(const AmgSymMatrix(N) &m1, const AmgSymMatrix(N) &m2, double precision=1e-9, bool relative=false)
compare two matrices, returns the indices of the first element that fails the condition,...
Definition: EventPrimitivesHelpers.h:109
python.SystemOfUnits.s
int s
Definition: SystemOfUnits.py:131
AthenaSummarySvc::handle
virtual void handle(const Incident &inc) override
Definition: AthenaSummarySvc.cxx:285
python.Constants.FATAL
int FATAL
Definition: Control/AthenaCommon/python/Constants.py:19
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
AthenaSummarySvc::m_summaryFile
StringProperty m_summaryFile
Definition: AthenaSummarySvc.h:69
AthenaSummarySvc::reinitialize
virtual StatusCode reinitialize() override
Definition: AthenaSummarySvc.cxx:194
physval_make_web_display.thresh
thresh
Definition: physval_make_web_display.py:36
AthenaSummarySvc::createASCII
void createASCII(std::ofstream &)
Definition: AthenaSummarySvc.cxx:366
AthenaSummarySvc::finalize
virtual StatusCode finalize() override
Definition: AthenaSummarySvc.cxx:203
skel.it
it
Definition: skel.GENtoEVGEN.py:396
AthenaSummarySvc::m_extraInc
StringArrayProperty m_extraInc
Definition: AthenaSummarySvc.h:73
PD::ATLAS_THREAD_SAFE
static ostringstream m_ofs ATLAS_THREAD_SAFE
Definition: AthenaSummarySvc.cxx:105
AthenaSummarySvc::m_new
std::new_handler m_new
Definition: AthenaSummarySvc.h:92
AthenaSummarySvc::m_extraInfo
std::vector< std::pair< std::string, std::string > > m_extraInfo
Definition: AthenaSummarySvc.h:90
fmt
const char *const fmt
Definition: TripleGaussCollFit.cxx:84
PD::add
void add(const string &a, const T t)
Definition: AthenaSummarySvc.cxx:61
AthenaSummarySvc
Definition: AthenaSummarySvc.h:36
AthenaSummarySvc::m_summaryFormat
StringProperty m_summaryFormat
Definition: AthenaSummarySvc.h:71
UploadAMITag.l
list l
Definition: UploadAMITag.larcaf.py:158
AthenaSummarySvc::m_runs
unsigned int m_runs
Definition: AthenaSummarySvc.h:97
AthenaSummarySvc::m_eventsRead
unsigned int m_eventsRead
Definition: AthenaSummarySvc.h:94
ILoggedMessageSvc
Definition: ILoggedMessageSvc.h:21
PD::PD
PD()
Definition: AthenaSummarySvc.cxx:48
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
x
#define x
python.DataFormatRates.events
events
Definition: DataFormatRates.py:105
AthenaSummarySvc.h
AthenaSummarySvc::m_eventsSkipped
unsigned int m_eventsSkipped
Definition: AthenaSummarySvc.h:96
PD::dump
string dump() const
Definition: AthenaSummarySvc.cxx:76
mergePhysValFiles.end
end
Definition: DataQuality/DataQualityUtils/scripts/mergePhysValFiles.py:93
run_Egamma1_LArStrip_Fex.dump
dump
Definition: run_Egamma1_LArStrip_Fex.py:88
python.utils.AtlRunQueryDQUtils.p
p
Definition: AtlRunQueryDQUtils.py:210
FortranAlgorithmOptions.fileName
fileName
Definition: FortranAlgorithmOptions.py:13
TrigConf::MSGTC::Level
Level
Definition: Trigger/TrigConfiguration/TrigConfBase/TrigConfBase/MsgStream.h:21
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
python.InDetPriVxFinderConfig.mlog
mlog
Definition: InDetPriVxFinderConfig.py:139
StdJOSetup.msgSvc
msgSvc
Provide convenience handles for various services.
Definition: StdJOSetup.py:36
TrigConf::MSGTC::ALWAYS
@ ALWAYS
Definition: Trigger/TrigConfiguration/TrigConfBase/TrigConfBase/MsgStream.h:29
ILoggedMessageSvc.h
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
PD::m_dat
map< string, vector< string > > m_dat
Definition: AthenaSummarySvc.cxx:104
tolower
void tolower(std::string &s)
Definition: AthenaSummarySvc.cxx:111
generateReferenceFile.files
files
Definition: generateReferenceFile.py:12
Amg::transform
Amg::Vector3D transform(Amg::Vector3D &v, Amg::Transform3D &tr)
Transform a point from a Trasformation3D.
Definition: GeoPrimitivesHelpers.h:156
find_tgc_unfilled_channelids.ip
ip
Definition: find_tgc_unfilled_channelids.py:3
PD
Definition: AthenaSummarySvc.cxx:46
add
bool add(const std::string &hname, TKey *tobj)
Definition: fastadd.cxx:55
hist_file_dump.f
f
Definition: hist_file_dump.py:135
Handler::svc
AthROOTErrorHandlerSvc * svc
Definition: AthROOTErrorHandlerSvc.cxx:10
AthenaSummarySvc::p_incSvc
ServiceHandle< IIncidentSvc > p_incSvc
Definition: AthenaSummarySvc.h:79
AthenaSummarySvc::initialize
virtual StatusCode initialize() override
Definition: AthenaSummarySvc.cxx:131
AthenaSummarySvc::m_status
int m_status
Definition: AthenaSummarySvc.h:93
AthenaSummarySvc::createSummary
virtual StatusCode createSummary() override
Definition: AthenaSummarySvc.cxx:335
TrigConf::MSGTC::NUM_LEVELS
@ NUM_LEVELS
Definition: Trigger/TrigConfiguration/TrigConfBase/TrigConfBase/MsgStream.h:30
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:228
plotBeamSpotMon.b
b
Definition: plotBeamSpotMon.py:77
AthenaSummarySvc::newHandler
static void newHandler()
Definition: AthenaSummarySvc.cxx:245
AthenaSummarySvc::addSummary
virtual void addSummary(const std::string &dict_key, const std::string &data) override
Definition: AthenaSummarySvc.cxx:233
WriteBchToCool.user
user
Definition: WriteBchToCool.py:76
AthenaSummarySvc::m_outputFiles
std::list< std::string > m_outputFiles
Definition: AthenaSummarySvc.h:86
AthenaSummarySvc::m_extraIncidents
std::map< std::string, std::map< std::string, int > > m_extraIncidents
Definition: AthenaSummarySvc.h:89
AthenaSummarySvc::m_outputFilesError
std::list< std::string > m_outputFilesError
Definition: AthenaSummarySvc.h:87
python.PyAthena.v
v
Definition: PyAthena.py:154
fmt
a
TList * a
Definition: liststreamerinfos.cxx:10
AthenaSummarySvc::m_inputFilesRead
std::list< std::string > m_inputFilesRead
Definition: AthenaSummarySvc.h:85
AthenaSummarySvc::m_keywords
StringArrayProperty m_keywords
Definition: AthenaSummarySvc.h:75
PD::add
void add(const string &a, const string &b)
Definition: AthenaSummarySvc.cxx:54
PD::add
void add(const string &a, const char *b)
Definition: AthenaSummarySvc.cxx:51
AthenaSummarySvc::createDict
void createDict(std::ofstream &)
Definition: AthenaSummarySvc.cxx:472
ILoggedMessageSvc::getMessages
virtual const std::vector< std::pair< std::string, std::string > > & getMessages(MSG::Level) const =0
checkFileSG.fi
fi
Definition: checkFileSG.py:65
PD::PD
PD(const string &a, const string &b)
Definition: AthenaSummarySvc.cxx:49
python.Constants.VERBOSE
int VERBOSE
Definition: Control/AthenaCommon/python/Constants.py:14
AthenaSummarySvc::p_logMsg
ILoggedMessageSvc * p_logMsg
Definition: AthenaSummarySvc.h:80
AthenaSummarySvc::addListener
virtual void addListener(const std::string &incident_name) override
Definition: AthenaSummarySvc.cxx:217
AthenaSummarySvc::m_eventsWritten
unsigned int m_eventsWritten
Definition: AthenaSummarySvc.h:95
II
const char *const II("\001")
python.compressB64.c
def c
Definition: compressB64.py:93
length
double length(const pvec &v)
Definition: FPGATrackSimLLPDoubletHoughTransformTool.cxx:26
python.AutoConfigFlags.msg
msg
Definition: AutoConfigFlags.py:7
TSU::T
unsigned long long T
Definition: L1TopoDataTypes.h:35
PD::add
void add(const string &a, const PD &p)
Definition: AthenaSummarySvc.cxx:57