ATLAS Offline Software
Public Types | Public Member Functions | Private Member Functions | Private Attributes | List of all members
MuonCalib::MdtRelativeTubeT0 Class Reference

#include <MdtRelativeTubeT0.h>

Collaboration diagram for MuonCalib::MdtRelativeTubeT0:

Public Types

enum  TubeGroup {
  CHAMBER, MULTILAYER, LAYER, MEZZ_CARD,
  UNKNOWN
}
 

Public Member Functions

 MdtRelativeTubeT0 ()=default
 
 ~MdtRelativeTubeT0 ()=default
 
void AddHit (const MdtCalibHitBase &hit)
 
double GetRelativeOffset (const MuonFixedId &id, TubeGroup grp)
 

Private Member Functions

void calculate_relative_t0s (const TubeGroup &grp)
 

Private Attributes

std::map< MuonFixedId, double > m_tube_t0
 
std::map< TubeGroup, std::map< MuonFixedId, double > > m_relative_offset
 

Detailed Description

Definition at line 15 of file MdtRelativeTubeT0.h.

Member Enumeration Documentation

◆ TubeGroup

Enumerator
CHAMBER 
MULTILAYER 
LAYER 
MEZZ_CARD 
UNKNOWN 

Definition at line 17 of file MdtRelativeTubeT0.h.

Constructor & Destructor Documentation

◆ MdtRelativeTubeT0()

MuonCalib::MdtRelativeTubeT0::MdtRelativeTubeT0 ( )
default

◆ ~MdtRelativeTubeT0()

MuonCalib::MdtRelativeTubeT0::~MdtRelativeTubeT0 ( )
default

Member Function Documentation

◆ AddHit()

void MuonCalib::MdtRelativeTubeT0::AddHit ( const MdtCalibHitBase hit)

Definition at line 17 of file MdtRelativeTubeT0.cxx.

17  {
18  const MuonFixedId &id = hit.identify();
19  if (m_tube_t0.find(id) == m_tube_t0.end()) {
20  if (m_relative_offset.size()) m_relative_offset.clear();
21  m_tube_t0[id] = hit.tubeT0();
22  }
23  }

◆ calculate_relative_t0s()

void MuonCalib::MdtRelativeTubeT0::calculate_relative_t0s ( const TubeGroup grp)
inlineprivate

Definition at line 37 of file MdtRelativeTubeT0.cxx.

37  {
38  // calculate mean t0 per group
39  std::map<unsigned int, std::pair<double, int> > mean_t0;
40  for (std::map<MuonFixedId, double>::const_iterator it = m_tube_t0.begin(); it != m_tube_t0.end(); ++it) {
41  unsigned int grp_id(get_group_id(it->first, grp));
42  std::map<unsigned int, std::pair<double, int> >::iterator it2 = mean_t0.find(grp_id);
43  if (it2 == mean_t0.end()) {
44  mean_t0[grp_id] = std::pair<double, int>(it->second, 1.);
45  } else {
46  it2->second.first += it->second;
47  it2->second.second++;
48  }
49  }
50  for (auto & it : mean_t0) {
51  it.second.first /= it.second.second;
52  }
53 
54  // calculate tube offsets
55  std::map<MuonFixedId, double> &offsets(m_relative_offset[grp]);
56  offsets.clear();
57  for (std::map<MuonFixedId, double>::const_iterator it = m_tube_t0.begin(); it != m_tube_t0.end(); ++it) {
58  unsigned int grp_id(get_group_id(it->first, grp));
59  offsets[it->first] = it->second - mean_t0[grp_id].first;
60  }
61  }

◆ GetRelativeOffset()

double MuonCalib::MdtRelativeTubeT0::GetRelativeOffset ( const MuonFixedId id,
TubeGroup  grp 
)

Definition at line 25 of file MdtRelativeTubeT0.cxx.

25  {
26  if (grp == UNKNOWN) return 0;
27  std::map<TubeGroup, std::map<MuonFixedId, double> >::const_iterator it = m_relative_offset.find(grp);
28  if (it == m_relative_offset.end()) {
30  return GetRelativeOffset(id, grp);
31  }
32  std::map<MuonFixedId, double>::const_iterator it2 = it->second.find(id);
33  if (it2 == it->second.end()) { return 0; }
34  return it2->second;
35  }

Member Data Documentation

◆ m_relative_offset

std::map<TubeGroup, std::map<MuonFixedId, double> > MuonCalib::MdtRelativeTubeT0::m_relative_offset
private

Definition at line 29 of file MdtRelativeTubeT0.h.

◆ m_tube_t0

std::map<MuonFixedId, double> MuonCalib::MdtRelativeTubeT0::m_tube_t0
private

Definition at line 27 of file MdtRelativeTubeT0.h.


The documentation for this class was generated from the following files:
xAOD::iterator
JetConstituentVector::iterator iterator
Definition: JetConstituentVector.cxx:68
MuonCalib::MdtRelativeTubeT0::CHAMBER
@ CHAMBER
Definition: MdtRelativeTubeT0.h:17
MuonCalib::MdtRelativeTubeT0::MULTILAYER
@ MULTILAYER
Definition: MdtRelativeTubeT0.h:17
skel.it
it
Definition: skel.GENtoEVGEN.py:423
MuonCalib::MdtRelativeTubeT0::calculate_relative_t0s
void calculate_relative_t0s(const TubeGroup &grp)
Definition: MdtRelativeTubeT0.cxx:37
MuonCalib::MdtRelativeTubeT0::UNKNOWN
@ UNKNOWN
Definition: MdtRelativeTubeT0.h:17
MuonCalib::MdtRelativeTubeT0::m_relative_offset
std::map< TubeGroup, std::map< MuonFixedId, double > > m_relative_offset
Definition: MdtRelativeTubeT0.h:29
MuonCalib::MdtRelativeTubeT0::m_tube_t0
std::map< MuonFixedId, double > m_tube_t0
Definition: MdtRelativeTubeT0.h:27
id
SG::auxid_t id
Definition: Control/AthContainers/Root/debug.cxx:194
MuonCalib::MdtRelativeTubeT0::MEZZ_CARD
@ MEZZ_CARD
Definition: MdtRelativeTubeT0.h:17
MuonCalib::MdtRelativeTubeT0::LAYER
@ LAYER
Definition: MdtRelativeTubeT0.h:17
MuonCalib::get_group_id
unsigned int get_group_id(const MuonFixedId &id, const MdtRelativeTubeT0::TubeGroup &grp)
Definition: MdtRelativeTubeT0.cxx:63
MuonCalib::MdtRelativeTubeT0::GetRelativeOffset
double GetRelativeOffset(const MuonFixedId &id, TubeGroup grp)
Definition: MdtRelativeTubeT0.cxx:25