ATLAS Offline Software
PerfMonServices.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
3  */
4 
5 #ifndef IDPERFMON_SERVICES_H
6 #define IDPERFMON_SERVICES_H
7 
8 #include "GaudiKernel/INTupleSvc.h"
9 #include "GaudiKernel/ITHistSvc.h"
10 #include "GaudiKernel/Algorithm.h"
11 
12 #include "StoreGate/StoreGateSvc.h"
13 
15 {
16  public:
17  // Constructors and Destructors.
20 
21  // Static variables.
22  //The service locate. Pointer to all the other services.
23  static ISvcLocator* s_pxSvcLocator ATLAS_THREAD_SAFE;
24 
25  // Pointers to various services in the Atlas software.
26  static IMessageSvc* s_pxMessageSvc ATLAS_THREAD_SAFE;
27  static StoreGateSvc* s_pxStoreGateSvc ATLAS_THREAD_SAFE;
28  static INTupleSvc* s_pxNtupleSvc ATLAS_THREAD_SAFE;
29  static ITHistSvc* s_pxTHistSvc ATLAS_THREAD_SAFE;
30 
31  // One off initialise function.
32  static StatusCode InitialiseServices( ISvcLocator* pxSvcLocator );
33 
34  // Accessor functions for the various Atlas services.
35  static StoreGateSvc* getStoreGateSvc () { return s_pxStoreGateSvc; }
36  static IMessageSvc* getMessagingService () { return s_pxMessageSvc; }
37  static INTupleSvc* getRootTupleService () { return s_pxNtupleSvc; }
38  static ITHistSvc* getHistogramService () { return s_pxTHistSvc; }
39 
41  {
47 
51 
55 
59 
63 
67 
69  };
70 
71  static const std::string& getContainerName( CONTAINERS eContainer ) { return s_sContainerNames[eContainer]; }
72  static const std::string& getAtlfastContainerName( CONTAINERS eContainer ) { return s_sAtlfastContainerNames[eContainer]; }
73 
74  //template <class T> static const T* getContainer ATLAS_NOT_REENTRANT ( CONTAINERS eContainer ) {
75  template <class T> static const T* getContainer ( CONTAINERS eContainer ) {
76  const T* pxContainer = NULL;
77  const std::string sContainerName = PerfMonServices::getContainerName( eContainer );
78  if ( s_pxStoreGateSvc != NULL ) {
79  StatusCode xStatus = PerfMonServices::s_pxStoreGateSvc->retrieve( pxContainer , sContainerName );
80  if ( CheckServiceInit( xStatus, !pxContainer) ) {
81  return pxContainer;
82  }
83  }
84  return NULL;
85  }
86 
87  template <class T> T static const GetMax (T a, T b) {
88  T result;
89  result = a>b? a : b;
90  return result;
91  }
92 
93  protected:
94 
95  private:
96  // Static variables.
97  // The service locate. Pointer to all the other services.
98  // static ISvcLocator* s_pxSvcLocator;
99 
100  // Pointers to various services in the Atlas software.
101  // static IMessageSvc* s_pxMessageSvc;
102  // static StoreGateSvc* s_pxStoreGateSvc;
103  // static INTupleSvc* s_pxNtupleSvc;
104  // static ITHistSvc* s_pxTHistSvc;
105 
106  // Internal initialisers used by the main InitialiseServices function.
107  static bool InitialiseMessaging();
108  static bool InitialiseStoreGate();
109  static bool InitialiseRootTuple();
110  static bool InitialiseHistograms();
111 
112  static bool CheckServiceInit( const StatusCode& xSC, bool bNullPointer /*, const std::string& sType */ );
113 
114  // Names of the various object containers.
115  static const std::string s_sContainerNames[NUM_CONTAINERS];
116  static const std::string s_sAtlfastContainerNames[NUM_CONTAINERS];
117 };
118 
119 #endif
PerfMonServices::getMessagingService
static IMessageSvc * getMessagingService()
Definition: PerfMonServices.h:36
PerfMonServices::PerfMonServices
PerfMonServices()
Definition: PerfMonServices.cxx:38
get_generator_info.result
result
Definition: get_generator_info.py:21
PerfMonServices::getContainerName
static const std::string & getContainerName(CONTAINERS eContainer)
Definition: PerfMonServices.h:71
PerfMonServices::InitialiseRootTuple
static bool InitialiseRootTuple()
Definition: PerfMonServices.cxx:90
PerfMonServices::GetMax
static T const GetMax(T a, T b)
Definition: PerfMonServices.h:87
PerfMonServices::MET_END
@ MET_END
Definition: PerfMonServices.h:58
PerfMonServices::getStoreGateSvc
static StoreGateSvc * getStoreGateSvc()
Definition: PerfMonServices.h:35
PerfMonServices::VTX_START
@ VTX_START
Definition: PerfMonServices.h:64
PerfMonServices::MUID_COLLECTION
@ MUID_COLLECTION
Definition: PerfMonServices.h:43
PerfMonServices::InitialiseMessaging
static bool InitialiseMessaging()
Definition: PerfMonServices.cxx:78
PerfMonServices::getHistogramService
static ITHistSvc * getHistogramService()
Definition: PerfMonServices.h:38
PerfMonServices::NUM_CONTAINERS
@ NUM_CONTAINERS
Definition: PerfMonServices.h:68
PerfMonServices::TRK_START
@ TRK_START
Definition: PerfMonServices.h:60
PerfMonServices::MET_COLLECTION
@ MET_COLLECTION
Definition: PerfMonServices.h:57
StoreGateSvc
The Athena Transient Store API.
Definition: StoreGateSvc.h:128
PerfMonServices::~PerfMonServices
~PerfMonServices()
Definition: PerfMonServices.cxx:42
PerfMonServices::ATLAS_THREAD_SAFE
static ITHistSvc *s_pxTHistSvc ATLAS_THREAD_SAFE
Definition: PerfMonServices.h:29
PerfMonServices::s_sAtlfastContainerNames
static const std::string s_sAtlfastContainerNames[NUM_CONTAINERS]
Definition: PerfMonServices.h:116
PerfMonServices::ATLAS_THREAD_SAFE
static StoreGateSvc *s_pxStoreGateSvc ATLAS_THREAD_SAFE
Definition: PerfMonServices.h:27
PerfMonServices::TRK_END
@ TRK_END
Definition: PerfMonServices.h:62
PerfMonServices::ELECTRON_COLLECTION
@ ELECTRON_COLLECTION
Definition: PerfMonServices.h:49
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
PerfMonServices::getAtlfastContainerName
static const std::string & getAtlfastContainerName(CONTAINERS eContainer)
Definition: PerfMonServices.h:72
PerfMonServices::ATLAS_THREAD_SAFE
static INTupleSvc *s_pxNtupleSvc ATLAS_THREAD_SAFE
Definition: PerfMonServices.h:28
PerfMonServices::CheckServiceInit
static bool CheckServiceInit(const StatusCode &xSC, bool bNullPointer)
Definition: PerfMonServices.cxx:103
PerfMonServices::ATLAS_THREAD_SAFE
static ISvcLocator *s_pxSvcLocator ATLAS_THREAD_SAFE
Definition: PerfMonServices.h:23
PerfMonServices::CONTAINERS
CONTAINERS
Definition: PerfMonServices.h:41
PerfMonServices::PHOT_END
@ PHOT_END
Definition: PerfMonServices.h:54
PerfMonServices::VTX_COLLECTION
@ VTX_COLLECTION
Definition: PerfMonServices.h:65
PerfMonServices::TRK_COLLECTION
@ TRK_COLLECTION
Definition: PerfMonServices.h:61
PerfMonServices
Definition: PerfMonServices.h:15
PerfMonServices::getRootTupleService
static INTupleSvc * getRootTupleService()
Definition: PerfMonServices.h:37
PerfMonServices::InitialiseHistograms
static bool InitialiseHistograms()
Definition: PerfMonServices.cxx:96
PerfMonServices::ATLAS_THREAD_SAFE
static IMessageSvc *s_pxMessageSvc ATLAS_THREAD_SAFE
Definition: PerfMonServices.h:26
plotBeamSpotMon.b
b
Definition: plotBeamSpotMon.py:77
PerfMonServices::ELEC_END
@ ELEC_END
Definition: PerfMonServices.h:50
PerfMonServices::MUON_END
@ MUON_END
Definition: PerfMonServices.h:46
PerfMonServices::s_sContainerNames
static const std::string s_sContainerNames[NUM_CONTAINERS]
Definition: PerfMonServices.h:115
a
TList * a
Definition: liststreamerinfos.cxx:10
PerfMonServices::VTX_END
@ VTX_END
Definition: PerfMonServices.h:66
PerfMonServices::PHOT_START
@ PHOT_START
Definition: PerfMonServices.h:52
PerfMonServices::ELEC_START
@ ELEC_START
Definition: PerfMonServices.h:48
PerfMonServices::InitialiseServices
static StatusCode InitialiseServices(ISvcLocator *pxSvcLocator)
Definition: PerfMonServices.cxx:50
PerfMonServices::MET_START
@ MET_START
Definition: PerfMonServices.h:56
PerfMonServices::MUON_START
@ MUON_START
Definition: PerfMonServices.h:42
PerfMonServices::PHOTON_COLLECTION
@ PHOTON_COLLECTION
Definition: PerfMonServices.h:53
PerfMonServices::STACO_COLLECTION
@ STACO_COLLECTION
Definition: PerfMonServices.h:44
StoreGateSvc.h
PerfMonServices::MUON_COLLECTION
@ MUON_COLLECTION
Definition: PerfMonServices.h:45
TSU::T
unsigned long long T
Definition: L1TopoDataTypes.h:35
PerfMonServices::getContainer
static const T * getContainer(CONTAINERS eContainer)
Definition: PerfMonServices.h:75
PerfMonServices::InitialiseStoreGate
static bool InitialiseStoreGate()
Definition: PerfMonServices.cxx:84