ATLAS Offline Software
TrackAnalysisDefinitionSvc.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3 */
4 
13 
15 #include <algorithm>
16 #include <memory>
17 
21 TrackAnalysisDefinitionSvc::TrackAnalysisDefinitionSvc( const std::string& name, ISvcLocator* pSvcLocator ) :
22  AsgService( name, pSvcLocator ),
23  m_useTrigger( false ), m_useTruth( false ), m_useOffline( false ),
24  m_isTestTrigger( false ), m_isTestTruth( false ), m_isTestOffline( false ),
25  m_isRefTrigger( false ), m_isRefTruth( false ), m_isRefOffline( false )
26 {
27  declareServiceInterface< ITrackAnalysisDefinitionSvc >();
28 }
29 
34 
39 {
40 
41  ATH_MSG_INFO( "Initialising using TEST = " << m_testTypeStr.value() <<
42  " and REFERENCE = " << m_refTypeStr.value() );
43 
45  m_isTestTrigger = m_testTypeStr.value().find("Trigger") != std::string::npos;
46  m_isTestEFTrigger = m_testTypeStr.value().find("EFTrigger") != std::string::npos;
47  m_isTestTruth = m_testTypeStr.value().find("Truth") != std::string::npos;
48  m_isTestOffline = m_testTypeStr.value().find("Offline") != std::string::npos;
49 
50  m_isRefTrigger = m_refTypeStr.value().find("Trigger") != std::string::npos;
51  m_isRefEFTrigger = m_refTypeStr.value().find("EFTrigger") != std::string::npos;
52  m_isRefTruth = m_refTypeStr.value().find("Truth") != std::string::npos;
53  m_isRefOffline = m_refTypeStr.value().find("Offline") != std::string::npos;
54 
59 
61  if( m_useTrigger and not m_useEFTrigger) {
62  for( size_t ic=0 ; ic<m_chainNames.size() ; ic++ ) {
63  ATH_MSG_DEBUG( "Input chain : " << m_chainNames[ic] );
64  m_configuredChains.push_back( m_chainNames[ic] );
65  }
66  } else {
68  m_configuredChains.push_back( "Offline" );
69  }
70 
72  std::sort( m_configuredChains.begin(), m_configuredChains.end() );
73  m_configuredChains.erase( std::unique( m_configuredChains.begin(),
74  m_configuredChains.end() ),
75  m_configuredChains.end() );
76 
77  return StatusCode::SUCCESS;
78 }
79 
84  return StatusCode::SUCCESS;
85 }
86 
90 std::string TrackAnalysisDefinitionSvc::plotsFullDir( std::string chain ) const
91 {
93  std::string topDir( m_dirName );
94  if( not topDir.empty() ) topDir += "/";
95 
97  if( not chain.empty() ) chain += "/";
98 
100  std::string subDir( m_subFolder );
101  if( subDir.empty() ) {
102  ATH_MSG_WARNING( "Empty plots sub-directory" );
103  } else {
105  if( subDir[0] == '/' ) {
106  subDir.erase( subDir.begin() );
107  }
109  if( subDir.back() != '/' ) subDir += "/";
110  }
111 
112  return m_sortPlotsByChain.value() ?
113  topDir + chain + subDir :
114  topDir + subDir + chain;
115 }
TrackAnalysisDefinitionSvc::m_useTrigger
bool m_useTrigger
Definition: TrackAnalysisDefinitionSvc.h:79
runLayerRecalibration.chain
chain
Definition: runLayerRecalibration.py:175
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
TrackAnalysisDefinitionSvc::m_isTestTruth
bool m_isTestTruth
Definition: TrackAnalysisDefinitionSvc.h:80
TrackAnalysisDefinitionSvc::m_isRefTrigger
bool m_isRefTrigger
Definition: TrackAnalysisDefinitionSvc.h:81
TrackAnalysisDefinitionSvc::m_dirName
StringProperty m_dirName
Definition: TrackAnalysisDefinitionSvc.h:73
TrackAnalysisDefinitionSvc::m_isRefTruth
bool m_isRefTruth
Definition: TrackAnalysisDefinitionSvc.h:81
TrackAnalysisDefinitionSvc::~TrackAnalysisDefinitionSvc
virtual ~TrackAnalysisDefinitionSvc()
TrackAnalysisDefinitionSvc::finalize
virtual StatusCode finalize() override final
Definition: TrackAnalysisDefinitionSvc.cxx:83
TrackAnalysisDefinitionSvc::m_useOffline
bool m_useOffline
Definition: TrackAnalysisDefinitionSvc.h:79
TrackAnalysisDefinitionSvc::plotsFullDir
virtual std::string plotsFullDir(std::string chain="") const override
Definition: TrackAnalysisDefinitionSvc.cxx:90
TrackAnalysisDefinitionSvc::m_isRefEFTrigger
bool m_isRefEFTrigger
Definition: TrackAnalysisDefinitionSvc.h:81
TrackAnalysisDefinitionSvc.h
TrackAnalysisDefinitionSvc::m_chainNames
StringArrayProperty m_chainNames
Definition: TrackAnalysisDefinitionSvc.h:72
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
TrackAnalysisDefinitionSvc::m_useEFTrigger
bool m_useEFTrigger
Definition: TrackAnalysisDefinitionSvc.h:79
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
TrackAnalysisDefinitionSvc::m_subFolder
StringProperty m_subFolder
Definition: TrackAnalysisDefinitionSvc.h:74
TrackAnalysisDefinitionSvc::m_isTestOffline
bool m_isTestOffline
Definition: TrackAnalysisDefinitionSvc.h:80
TrackAnalysisDefinitionSvc::m_isTestTrigger
bool m_isTestTrigger
Definition: TrackAnalysisDefinitionSvc.h:80
grepfile.ic
int ic
Definition: grepfile.py:33
TrackAnalysisDefinitionSvc::m_testTypeStr
StringProperty m_testTypeStr
Definition: TrackAnalysisDefinitionSvc.h:77
TrackAnalysisDefinitionSvc::m_isRefOffline
bool m_isRefOffline
Definition: TrackAnalysisDefinitionSvc.h:81
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
TrackAnalysisDefinitionSvc::m_isTestEFTrigger
bool m_isTestEFTrigger
Definition: TrackAnalysisDefinitionSvc.h:80
TrackAnalysisDefinitionSvc::m_sortPlotsByChain
BooleanProperty m_sortPlotsByChain
histogram properties
Definition: TrackAnalysisDefinitionSvc.h:91
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
TrackAnalysisDefinitionSvc::m_useTruth
bool m_useTruth
Definition: TrackAnalysisDefinitionSvc.h:79
TrackAnalysisDefinitionSvc::m_configuredChains
std::vector< std::string > m_configuredChains
Definition: TrackAnalysisDefinitionSvc.h:88
TrackAnalysisDefinitionSvc::m_refTypeStr
StringProperty m_refTypeStr
Definition: TrackAnalysisDefinitionSvc.h:78
TrackAnalysisDefinitionSvc::TrackAnalysisDefinitionSvc
TrackAnalysisDefinitionSvc(const std::string &name, ISvcLocator *pSvcLocator)
local includes
Definition: TrackAnalysisDefinitionSvc.cxx:21
TrackAnalysisDefinitionSvc::initialize
virtual StatusCode initialize() override final
Definition: TrackAnalysisDefinitionSvc.cxx:38