ATLAS Offline Software
Loading...
Searching...
No Matches
Muon::MuonHitTimingTool Class Reference

#include <MuonHitTimingTool.h>

Inheritance diagram for Muon::MuonHitTimingTool:
Collaboration diagram for Muon::MuonHitTimingTool:

Public Member Functions

 MuonHitTimingTool (const std::string &, const std::string &, const IInterface *)
virtual ~MuonHitTimingTool ()=default
 default destructor
virtual StatusCode initialize () override final
 standard initialization method
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.

Private Attributes

ServiceHandle< Muon::IMuonIdHelperSvcm_idHelperSvc {this,"MuonIdHelperSvc","Muon::MuonIdHelperSvc/MuonIdHelperSvc"}
ToolHandleArray< IMuonHitTimingToolm_hitTimingTools

Detailed Description

Definition at line 27 of file MuonHitTimingTool.h.

Constructor & Destructor Documentation

◆ MuonHitTimingTool()

MuonHitTimingTool::MuonHitTimingTool ( const std::string & t,
const std::string & n,
const IInterface * p )

Definition at line 12 of file MuonHitTimingTool.cxx.

12 :
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 }
ToolHandleArray< IMuonHitTimingTool > m_hitTimingTools
constexpr int toInt(const EnumType enumVal)

◆ ~MuonHitTimingTool()

virtual Muon::MuonHitTimingTool::~MuonHitTimingTool ( )
virtualdefault

default destructor

Member Function Documentation

◆ calculateTimingResult()

IMuonHitTimingTool::TimingResult MuonHitTimingTool::calculateTimingResult ( const std::vector< const MuonClusterOnTrack * > & hits) const
finaloverridevirtual

Calculate the time offset of a given set of hits wrt to the current bunch.

Definition at line 45 of file MuonHitTimingTool.cxx.

45 {
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 }
#define ATH_MSG_VERBOSE(x)
ServiceHandle< Muon::IMuonIdHelperSvc > m_idHelperSvc
TechnologyIndex
enum to classify the different layers in the muon spectrometer
const std::string & technologyName(TechnologyIndex index)
convert LayerIndex into a string

◆ initialize()

StatusCode MuonHitTimingTool::initialize ( )
finaloverridevirtual

standard initialization method

Definition at line 23 of file MuonHitTimingTool.cxx.

23 {
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 }
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_ERROR(x)
#define ATH_MSG_DEBUG(x)

Member Data Documentation

◆ m_hitTimingTools

ToolHandleArray<IMuonHitTimingTool> Muon::MuonHitTimingTool::m_hitTimingTools
private

Definition at line 42 of file MuonHitTimingTool.h.

◆ m_idHelperSvc

ServiceHandle<Muon::IMuonIdHelperSvc> Muon::MuonHitTimingTool::m_idHelperSvc {this,"MuonIdHelperSvc","Muon::MuonIdHelperSvc/MuonIdHelperSvc"}
private

Definition at line 41 of file MuonHitTimingTool.h.

41{this,"MuonIdHelperSvc","Muon::MuonIdHelperSvc/MuonIdHelperSvc"};

The documentation for this class was generated from the following files: