ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
MuonSpectrometer
MuonReconstruction
MuonRecTools
MuonTimingTools
src
MuonHitTimingTool.cxx
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3
*/
4
5
#include "
MuonHitTimingTool.h
"
6
#include "
MuonRIO_OnTrack/RpcClusterOnTrack.h
"
7
#include "
MuonCompetingRIOsOnTrack/CompetingMuonClustersOnTrack.h
"
8
9
10
namespace
Muon
{
11
12
MuonHitTimingTool::MuonHitTimingTool
(
const
std::string& t,
const
std::string& n,
const
IInterface* p):
13
base_class(t,n,p),
14
m_hitTimingTools
(this) {
15
using namespace
MuonStationIndex
;
16
for
(
int
tech = 0;tech<
toInt
(TechnologyIndex::TechnologyIndexMax);++tech ){
17
if
( tech ==
toInt
(TechnologyIndex::RPC) )
m_hitTimingTools
.push_back(ToolHandle<IMuonHitTimingTool>(
"Muon::RPC_TimingTool/RPC_TimingTool"
));
18
else
m_hitTimingTools
.push_back(ToolHandle<IMuonHitTimingTool>(
""
));
19
}
20
21
}
22
23
StatusCode
MuonHitTimingTool::initialize
() {
24
25
ATH_CHECK
(
m_idHelperSvc
.retrieve());
26
using namespace
MuonStationIndex
;
27
// ensure that the number of tool handles corresponds to the number of technologies
28
if
(
static_cast<
int
>
(
m_hitTimingTools
.size()) !=
toInt
(TechnologyIndex::TechnologyIndexMax) ){
29
ATH_MSG_ERROR
(
" The MuonHitTimingTool ToolHandleArray SHOULD contain exactly "
30
<<
toInt
(TechnologyIndex::TechnologyIndexMax) <<
" ToolHandles (they can be empty). "
);
31
return
StatusCode::FAILURE;
32
}
33
34
// loop over timing tool handles and check that they handle the technology they are supposed to, if not return a FAILURE
35
for
(
int
tech = 0;tech<
toInt
(TechnologyIndex::TechnologyIndexMax);++tech ){
36
// get handle, accept empty handles
37
auto
& toolHandle =
m_hitTimingTools
[tech];
38
ATH_MSG_DEBUG
(
" tech "
<<
technologyName
(
static_cast<
MuonStationIndex::TechnologyIndex
>
(tech)) <<
" "
<< toolHandle);
39
if
( toolHandle.empty() )
continue
;
40
ATH_CHECK
(toolHandle.retrieve());
41
}
42
return
StatusCode::SUCCESS;
43
}
44
45
IMuonHitTimingTool::TimingResult
MuonHitTimingTool::calculateTimingResult
(
const
std::vector<const MuonClusterOnTrack*>& hits )
const
{
46
47
// treat case of no hits and the case the first pointer is zero (should not happen)
48
if
( hits.empty() || !hits.front())
return
{};
49
50
// for now assume that all hits are of the same technolgy
51
Identifier
id
= hits.front()->identify();
52
using namespace
MuonStationIndex
;
53
TechnologyIndex
tech =
m_idHelperSvc
->technologyIndex(
id
);
54
55
// get handle and use it if it is not empty
56
const
ToolHandle<IMuonHitTimingTool>& toolHandle =
m_hitTimingTools
[
toInt
(tech)];
57
if
( toolHandle.empty() ) {
58
ATH_MSG_VERBOSE
(
"Unable to fill timing, timing tool missing. Tech = "
<<
technologyName
(tech) );
59
return
{};
60
}
61
return
toolHandle->calculateTimingResult(hits);
62
}
63
}
ATH_CHECK
#define ATH_CHECK
Evaluate an expression and check for errors.
Definition
AthCheckMacros.h:40
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition
AthMsgStreamMacros.h:33
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition
AthMsgStreamMacros.h:28
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition
AthMsgStreamMacros.h:29
CompetingMuonClustersOnTrack.h
MuonHitTimingTool.h
RpcClusterOnTrack.h
Muon::MuonHitTimingTool::initialize
virtual StatusCode initialize() override final
standard initialization method
Definition
MuonHitTimingTool.cxx:23
Muon::MuonHitTimingTool::m_hitTimingTools
ToolHandleArray< IMuonHitTimingTool > m_hitTimingTools
Definition
MuonHitTimingTool.h:42
Muon::MuonHitTimingTool::calculateTimingResult
virtual TimingResult calculateTimingResult(const std::vector< const MuonClusterOnTrack * > &hits) const override final
Calculate the time offset of a given set of hits wrt to the current bunch.
Definition
MuonHitTimingTool.cxx:45
Muon::MuonHitTimingTool::m_idHelperSvc
ServiceHandle< Muon::IMuonIdHelperSvc > m_idHelperSvc
Definition
MuonHitTimingTool.h:41
Muon::MuonHitTimingTool::MuonHitTimingTool
MuonHitTimingTool(const std::string &, const std::string &, const IInterface *)
Definition
MuonHitTimingTool.cxx:12
Identifier
Definition
IdentifierFieldParser.cxx:14
Muon::MuonStationIndex
Definition
MuonStationIndex.h:14
Muon::MuonStationIndex::TechnologyIndex
TechnologyIndex
enum to classify the different layers in the muon spectrometer
Definition
MuonStationIndex.h:55
Muon::MuonStationIndex::toInt
constexpr int toInt(const EnumType enumVal)
Definition
MuonStationIndex.h:62
Muon::MuonStationIndex::technologyName
const std::string & technologyName(TechnologyIndex index)
convert LayerIndex into a string
Definition
MuonStationIndex.cxx:170
Muon
NRpcCablingAlg reads raw condition data and writes derived condition data to the condition store.
Definition
TrackSystemController.h:46
Muon::IMuonHitTimingTool::TimingResult
simple struct holding the result of the tool
Definition
IMuonHitTimingTool.h:38
Generated on
for ATLAS Offline Software by
1.17.0