Loading [MathJax]/extensions/tex2jax.js
ATLAS Offline Software
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
Public Types | Public Member Functions | Private Member Functions | Private Attributes | List of all members
MuonCalib::MdtCalibDataContainer Class Reference

#include <MdtCalibDataContainer.h>

Collaboration diagram for MuonCalib::MdtCalibDataContainer:

Public Types

enum  RegionGranularity { RegionGranularity::OneRt, RegionGranularity::OnePerChamber, RegionGranularity::OnePerMultiLayer }
 
using CorrectionPtr = MdtFullCalibData::CorrectionPtr
 
using RtRelationPtr = MdtFullCalibData::RtRelationPtr
 
using TubeContainerPtr = MdtFullCalibData::TubeContainerPtr
 

Public Member Functions

 MdtCalibDataContainer (const Muon::IMuonIdHelperSvc *idHelprSvc, const RegionGranularity granularity)
 
 ~MdtCalibDataContainer ()=default
 
const MdtFullCalibDatagetCalibData (const Identifier &measId, MsgStream &msg) const
 Returns the calibration data associated with this station
More...
 
bool hasDataForChannel (const Identifier &measId, MsgStream &msg) const
 Checks whether a calibration data object is already present. More...
 
bool storeData (const Identifier &mlID, CorrectionPtr corrFuncSet, MsgStream &msg)
 
bool storeData (const Identifier &mlID, RtRelationPtr rtRelation, MsgStream &msg)
 
bool storeData (const Identifier &mlID, TubeContainerPtr tubeContainer, MsgStream &msg)
 
RegionGranularity granularity () const
 
void setInversePropSpeed (const float speed)
 
float inversePropSpeed () const
 

Private Member Functions

std::optional< unsigned int > containerIndex (const Identifier &measId, MsgStream &msg) const
 

Private Attributes

const Muon::IMuonIdHelperSvcm_idHelperSvc {nullptr}
 
const RegionGranularity m_granularity {RegionGranularity::OneRt}
 
const MdtIdHelperm_idHelper {m_idHelperSvc->mdtIdHelper()}
 
std::vector< MdtFullCalibDatam_dataCache {}
 
float m_invPropSpeed {0.f}
 

Detailed Description

Definition at line 20 of file MdtCalibDataContainer.h.

Member Typedef Documentation

◆ CorrectionPtr

Definition at line 22 of file MdtCalibDataContainer.h.

◆ RtRelationPtr

Definition at line 23 of file MdtCalibDataContainer.h.

◆ TubeContainerPtr

Definition at line 24 of file MdtCalibDataContainer.h.

Member Enumeration Documentation

◆ RegionGranularity

Enumerator
OneRt 
OnePerChamber 
OnePerMultiLayer 

Definition at line 26 of file MdtCalibDataContainer.h.

26 { OneRt, OnePerChamber, OnePerMultiLayer };

Constructor & Destructor Documentation

◆ MdtCalibDataContainer()

MuonCalib::MdtCalibDataContainer::MdtCalibDataContainer ( const Muon::IMuonIdHelperSvc idHelprSvc,
const RegionGranularity  granularity 
)

Definition at line 8 of file MdtCalibDataContainer.cxx.

9  :
10  m_idHelperSvc{idHelperSvc},
12 }

◆ ~MdtCalibDataContainer()

MuonCalib::MdtCalibDataContainer::~MdtCalibDataContainer ( )
default

Member Function Documentation

◆ containerIndex()

std::optional< unsigned int > MuonCalib::MdtCalibDataContainer::containerIndex ( const Identifier measId,
MsgStream &  msg 
) const
inlineprivate

Definition at line 17 of file MdtCalibDataContainer.cxx.

17  {
19 
22  m_idHelper.detectorElement_hash_max() < static_cast<unsigned int>(hash))) {
23  msg<<MSG::ERROR <<__FILE__<<":"<<__LINE__<<" Failed to look up a proper detector element hash for "
24  <<m_idHelperSvc->toString(measId)<<endmsg;
25  return std::nullopt;
27  (m_idHelper.get_module_hash(measId, hash) ||
28  m_idHelper.module_hash_max() < static_cast<unsigned int>(hash))) {
29  msg<<MSG::ERROR <<__FILE__<<":"<<__LINE__<<" Failed to look up a proper detector element hash for "
30  <<m_idHelperSvc->toString(measId)<<endmsg;
31  return std::nullopt;
32  }
33  return std::make_optional<unsigned int>(static_cast<unsigned int>(hash));
34 }

◆ getCalibData()

const MdtFullCalibData * MuonCalib::MdtCalibDataContainer::getCalibData ( const Identifier measId,
MsgStream &  msg 
) const

Returns the calibration data associated with this station

Definition at line 41 of file MdtCalibDataContainer.cxx.

41  {
42  std::optional<unsigned int> index = containerIndex(measId, msg);
43  if (!index) return nullptr;
44  if ((*index ) < m_dataCache.size()) {
45  const MdtFullCalibData& data = m_dataCache[*index];
46  if (data) {return &data;}
47  }
48  msg<<MSG::WARNING<<__FILE__<<":"<<__LINE__<<" No Mdt calibration data is stored for "
49  <<m_idHelperSvc->toString(measId)<<endmsg;
50  return nullptr;
51 }

◆ granularity()

MdtCalibDataContainer::RegionGranularity MuonCalib::MdtCalibDataContainer::granularity ( ) const

Definition at line 16 of file MdtCalibDataContainer.cxx.

16 { return m_granularity; }

◆ hasDataForChannel()

bool MuonCalib::MdtCalibDataContainer::hasDataForChannel ( const Identifier measId,
MsgStream &  msg 
) const

Checks whether a calibration data object is already present.

Definition at line 36 of file MdtCalibDataContainer.cxx.

36  {
37  std::optional<unsigned int > index = containerIndex(measId, msg);
38  return !(!index || (*index) >= m_dataCache.size() || !m_dataCache[*index]);
39 }

◆ inversePropSpeed()

float MuonCalib::MdtCalibDataContainer::inversePropSpeed ( ) const

Definition at line 14 of file MdtCalibDataContainer.cxx.

14 { return m_invPropSpeed; }

◆ setInversePropSpeed()

void MuonCalib::MdtCalibDataContainer::setInversePropSpeed ( const float  speed)

Definition at line 13 of file MdtCalibDataContainer.cxx.

13 {m_invPropSpeed = speed; }

◆ storeData() [1/3]

bool MuonCalib::MdtCalibDataContainer::storeData ( const Identifier mlID,
CorrectionPtr  corrFuncSet,
MsgStream &  msg 
)

Check for a valid index

Resize the container if neccessary

Definition at line 52 of file MdtCalibDataContainer.cxx.

52  {
54  std::optional<unsigned int> index = containerIndex(mlID, msg);
55  if (!index) return false;
56  if (!corrFuncSet) {
57  msg << MSG::ERROR<<__FILE__<<":"<<__LINE__<<" No correction functional set parsed for multilayer "
58  <<m_idHelperSvc->toString(mlID) << endmsg;
59  return false;
60  }
62  if (m_dataCache.size() <= (*index)) m_dataCache.resize(*index + 1);
63  MdtFullCalibData& cache = m_dataCache[*index];
64  if (cache.corrections && cache.corrections != corrFuncSet) {
65  msg << MSG::ERROR<<__FILE__<<":"<<__LINE__<<" There already exist a rt relation object for multilayer "
66  <<m_idHelperSvc->toString(mlID) << endmsg;
67  return false;
68  }
69  cache.corrections = std::move(corrFuncSet);
70 
71  if (msg.level() <= MSG::DEBUG) {
72  msg << MSG::DEBUG<<__FILE__<<":"<<__LINE__<<" Added successfully the rt corrections for "
73  << m_idHelperSvc->toString(mlID)<<endmsg;
74  }
75  return true;
76 }

◆ storeData() [2/3]

bool MuonCalib::MdtCalibDataContainer::storeData ( const Identifier mlID,
RtRelationPtr  rtRelation,
MsgStream &  msg 
)

Check for a valid index

Resize the container if neccessary

Definition at line 77 of file MdtCalibDataContainer.cxx.

77  {
79  std::optional<unsigned int> index = containerIndex(mlID, msg);
80  if (!index) return false;
81  if (!rtRelation) {
82  msg << MSG::ERROR<<__FILE__<<":"<<__LINE__<<" No rt relation parsed for multilayer "
83  <<m_idHelperSvc->toString(mlID) << endmsg;
84  return false;
85  }
87  if (m_dataCache.size() <= (*index)) m_dataCache.resize(*index + 1);
88  MdtFullCalibData& cache = m_dataCache[*index];
89  if (cache.rtRelation && cache.rtRelation != rtRelation) {
90  msg << MSG::ERROR<<__FILE__<<":"<<__LINE__<<" There already exist a rt relation object for multilayer "
91  <<m_idHelperSvc->toString(mlID) << endmsg;
92  return false;
93  }
94  cache.rtRelation = std::move(rtRelation);
95 
96  if (msg.level() <= MSG::DEBUG) {
97  msg << MSG::DEBUG<<__FILE__<<":"<<__LINE__<<" Added successfully the rt relations for "
98  << m_idHelperSvc->toString(mlID)<<endmsg;
99  }
100  return true;
101 }

◆ storeData() [3/3]

bool MuonCalib::MdtCalibDataContainer::storeData ( const Identifier mlID,
TubeContainerPtr  tubeContainer,
MsgStream &  msg 
)

Check for a valid index

Resize the container if neccessary

Definition at line 102 of file MdtCalibDataContainer.cxx.

102  {
104  std::optional<unsigned int> index = containerIndex(mlID, msg);
105  if (!index) return false;
106  if (!tubeContainer) {
107  msg << MSG::ERROR<<__FILE__<<":"<<__LINE__<<" No tube ontainer parsed for multilayer "
108  <<m_idHelperSvc->toString(mlID) << endmsg;
109  return false;
110  }
111 
113  if (m_dataCache.size() <= (*index)) m_dataCache.resize(*index + 1);
114  MdtFullCalibData& cache = m_dataCache[*index];
115  if (cache.tubeCalib && cache.tubeCalib != tubeContainer) {
116  msg << MSG::ERROR<<__FILE__<<":"<<__LINE__<<" There already exist a tube calibration container for multilayer "
117  <<m_idHelperSvc->toString(mlID) << endmsg;
118  return false;
119  }
120  if (msg.level() <= MSG::DEBUG) {
121  msg << MSG::DEBUG<<__FILE__<<":"<<__LINE__<<" Added successfully the tube calibrations for "
122  << m_idHelperSvc->toString(mlID)<<endmsg;
123  }
124  cache.tubeCalib = tubeContainer;
126  m_idHelper.multilayer(mlID) == 2 ||
127  m_idHelper.numberOfMultilayers(mlID) == 1) return true;
128  return storeData(m_idHelper.multilayerID(mlID, 2), tubeContainer, msg);
129 }

Member Data Documentation

◆ m_dataCache

std::vector<MdtFullCalibData> MuonCalib::MdtCalibDataContainer::m_dataCache {}
private

Definition at line 53 of file MdtCalibDataContainer.h.

◆ m_granularity

const RegionGranularity MuonCalib::MdtCalibDataContainer::m_granularity {RegionGranularity::OneRt}
private

Definition at line 51 of file MdtCalibDataContainer.h.

◆ m_idHelper

const MdtIdHelper& MuonCalib::MdtCalibDataContainer::m_idHelper {m_idHelperSvc->mdtIdHelper()}
private

Definition at line 52 of file MdtCalibDataContainer.h.

◆ m_idHelperSvc

const Muon::IMuonIdHelperSvc* MuonCalib::MdtCalibDataContainer::m_idHelperSvc {nullptr}
private

Definition at line 50 of file MdtCalibDataContainer.h.

◆ m_invPropSpeed

float MuonCalib::MdtCalibDataContainer::m_invPropSpeed {0.f}
private

Definition at line 54 of file MdtCalibDataContainer.h.


The documentation for this class was generated from the following files:
MdtIdHelper::multilayer
int multilayer(const Identifier &id) const
Access to components of the ID.
Definition: MdtIdHelper.cxx:722
MuonCalib::MdtCalibDataContainer::m_granularity
const RegionGranularity m_granularity
Definition: MdtCalibDataContainer.h:51
data
char data[hepevt_bytes_allocation_ATLAS]
Definition: HepEvt.cxx:11
MdtIdHelper::numberOfMultilayers
int numberOfMultilayers(const Identifier &id) const
Definition: MdtIdHelper.cxx:496
index
Definition: index.py:1
MuonCalib::MdtCalibDataContainer::storeData
bool storeData(const Identifier &mlID, CorrectionPtr corrFuncSet, MsgStream &msg)
Definition: MdtCalibDataContainer.cxx:52
MuonIdHelper::detectorElement_hash_max
size_type detectorElement_hash_max() const
Definition: MuonIdHelper.h:186
MuonCalib::MdtCalibDataContainer::m_dataCache
std::vector< MdtFullCalibData > m_dataCache
Definition: MdtCalibDataContainer.h:53
MuonCalib::MdtCalibDataContainer::m_idHelperSvc
const Muon::IMuonIdHelperSvc * m_idHelperSvc
Definition: MdtCalibDataContainer.h:50
MuonCalib::MdtCalibDataContainer::granularity
RegionGranularity granularity() const
Definition: MdtCalibDataContainer.cxx:16
endmsg
#define endmsg
Definition: AnalysisConfig_Ntuple.cxx:63
MuonCalib::MdtCalibDataContainer::RegionGranularity::OnePerChamber
@ OnePerChamber
MuonCalib::MdtCalibDataContainer::m_invPropSpeed
float m_invPropSpeed
Definition: MdtCalibDataContainer.h:54
MuonCalib::MdtCalibDataContainer::RegionGranularity::OnePerMultiLayer
@ OnePerMultiLayer
MuonIdHelper::module_hash_max
size_type module_hash_max() const
the maximum hash value
Definition: MuonIdHelper.cxx:748
DeMoScan.index
string index
Definition: DeMoScan.py:364
CaloCondBlobAlgs_fillNoiseFromASCII.hash
dictionary hash
Definition: CaloCondBlobAlgs_fillNoiseFromASCII.py:109
Muon::IMuonIdHelperSvc::toString
virtual std::string toString(const Identifier &id) const =0
print all fields to string
MdtIdHelper::get_detectorElement_hash
virtual int get_detectorElement_hash(const Identifier &id, IdentifierHash &hash_id) const override
Definition: MdtIdHelper.cxx:326
MuonCalib::MdtCalibDataContainer::RegionGranularity::OneRt
@ OneRt
DEBUG
#define DEBUG
Definition: page_access.h:11
MuonCalib::MdtCalibDataContainer::containerIndex
std::optional< unsigned int > containerIndex(const Identifier &measId, MsgStream &msg) const
Definition: MdtCalibDataContainer.cxx:17
MdtIdHelper::multilayerID
Identifier multilayerID(const Identifier &channeldID) const
Definition: MdtIdHelper.cxx:333
MdtIdHelper::get_module_hash
virtual int get_module_hash(const Identifier &id, IdentifierHash &hash_id) const override
Definition: MdtIdHelper.cxx:319
MuonCalib::MdtCalibDataContainer::m_idHelper
const MdtIdHelper & m_idHelper
Definition: MdtCalibDataContainer.h:52
IdentifierHash
This is a "hash" representation of an Identifier. This encodes a 32 bit index which can be used to lo...
Definition: IdentifierHash.h:25
python.AutoConfigFlags.msg
msg
Definition: AutoConfigFlags.py:7