ATLAS Offline Software
MuonDriftCircleErrorStrategy.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef MUON_MUONRIOONTRACK_MUONDRIFTCIRCLEERRORSTRATEGY_H
6 #define MUON_MUONRIOONTRACK_MUONDRIFTCIRCLEERRORSTRATEGY_H
7 
8 #include <bitset>
9 #include "GaudiKernel/MsgStream.h"
10 #include <iostream>
11 
12 namespace Muon {
13 typedef std::bitset<23> MuonDriftCircleErrorStrategyInput;
14 
16 public:
17  enum Strategy {Moore=0, Muon=1, UnknownStrategy=0x7}; // FIXME - better names
18  enum CreationParameter{ BroadError=3,// Bit 3. Create with broad errors.
19  ScaledError, // Error scaling is turned on (this is applied after eveyrthing else)
33  };
34  static constexpr std::size_t nCalibWindowBits = 4;
37  void setStrategy(Strategy);
39  void setCalibWindow(unsigned long);
40 
42  unsigned long calibWindow() const;
43  Strategy strategy() const;
44 
46 
47 private:
49 };
50 }
51 
52 inline
53 void
55  unsigned int holder = static_cast<unsigned int>(st);
56  m_bits[0] = holder&0x1;
57  m_bits[1] = holder&0x2;
58  m_bits[2] = holder&0x4;
59 }
60 
61 inline
62 void
64  m_bits[static_cast<unsigned int>(cp)] = value;
65 }
66 
67 inline
68 void
70  std::bitset<nCalibWindowBits> tmpconfig(config);
71 
72  // Copy temporary bitset into m_bits
73  // Should do this with std::copy
74  for (std::size_t itmp=0,i=FirstCalibWindowBit; itmp<nCalibWindowBits; ++itmp,++i) {
75  m_bits[i] = tmpconfig[itmp];
76  }
77 
78 }
79 
80 inline
81 bool
83  return m_bits[static_cast<unsigned int>(cp)];
84 }
85 
86 inline
87 unsigned long
89  std::bitset<nCalibWindowBits> tmpconfig;
90 
91  // Copy relevant part of m_bits into temporary bitset
92  // Should do this with std::copy
93  for (std::size_t itmp=0,i=FirstCalibWindowBit; itmp<nCalibWindowBits; ++itmp,++i) {
94  tmpconfig[itmp] = m_bits[i];
95  }
96 
97  return tmpconfig.to_ulong();
98 }
99 
100 inline
103  switch (m_bits.to_ulong()&0x7){
104  case 0:
105  return Moore;
106  case 1:
107  return Muon;
108  default:
109  return UnknownStrategy;
110  }
111  return UnknownStrategy;
112 }
113 
114 inline std::ostream& operator << ( std::ostream& sl, const Muon::MuonDriftCircleErrorStrategy& mdces)
115 {
116  sl << "MuonDriftCircleErrorStrategy with strategy ";
117  const Muon::MuonDriftCircleErrorStrategyInput myBits = mdces.getBits();
118  switch (mdces.strategy()){
119  case 0:
120  sl << "Moore";
121  break;
122  case 1:
123  sl << "Muon";
124  break;
125  default:
126  sl << "Unknown Strategy";
127  }
128  sl << " and configuration bits " << myBits;
129  sl << " including CalibWindow " << mdces.calibWindow() << std::endl;
130  return sl;
131 }
132 
133 inline MsgStream& operator << ( MsgStream& sl, const Muon::MuonDriftCircleErrorStrategy& mdces)
134 {
135  sl << "MuonDriftCircleErrorStrategy with strategy ";
136  const Muon::MuonDriftCircleErrorStrategyInput myBits = mdces.getBits();
137  switch (mdces.strategy()){
138  case 0:
139  sl << "Moore";
140  break;
141  case 1:
142  sl << "Muon";
143  break;
144  default:
145  sl << "Unknown Strategy";
146  }
147  sl << " and configuration bits " << myBits;
148  sl << " including CalibWindow " << mdces.calibWindow() << std::endl;
149  return sl;
150 }
151 
152 
153 #endif
Muon::MuonDriftCircleErrorStrategy
Definition: MuonDriftCircleErrorStrategy.h:15
Muon::MuonDriftCircleErrorStrategy::MuonDriftCircleErrorStrategy
MuonDriftCircleErrorStrategy(const MuonDriftCircleErrorStrategyInput &bits)
first 3 bits are Strategy, then come CreationParameter, last four are calib window bits
Definition: MuonDriftCircleErrorStrategy.h:36
Muon::MuonDriftCircleErrorStrategy::setCalibWindow
void setCalibWindow(unsigned long)
Only the first nCalibWindowBits bits will be stored!
Definition: MuonDriftCircleErrorStrategy.h:69
Muon::MuonDriftCircleErrorStrategy::calibWindow
unsigned long calibWindow() const
Returns calibration configuration.
Definition: MuonDriftCircleErrorStrategy.h:88
athena.value
value
Definition: athena.py:124
Muon::MuonDriftCircleErrorStrategy::Moore
@ Moore
Definition: MuonDriftCircleErrorStrategy.h:17
Muon
NRpcCablingAlg reads raw condition data and writes derived condition data to the condition store.
Definition: TrackSystemController.h:45
Muon::MuonDriftCircleErrorStrategy::PropCorrection
@ PropCorrection
Propagation correction was applied in calibration.
Definition: MuonDriftCircleErrorStrategy.h:26
Muon::MuonDriftCircleErrorStrategy::TempCorrection
@ TempCorrection
Temperature correction was applied in calibration.
Definition: MuonDriftCircleErrorStrategy.h:27
config
Definition: PhysicsAnalysis/AnalysisCommon/AssociationUtils/python/config.py:1
Muon::MuonDriftCircleErrorStrategy::T0Refit
@ T0Refit
A special error was applied to account for the T0 refit (user defined via jobProperties)
Definition: MuonDriftCircleErrorStrategy.h:24
Muon::MuonDriftCircleErrorStrategy::FirstCalibWindowBit
@ FirstCalibWindowBit
First bit recording the calibration configuration.
Definition: MuonDriftCircleErrorStrategy.h:32
Muon::MuonDriftCircleErrorStrategy::SlewCorrection
@ SlewCorrection
Slewing correction was applied in calibration.
Definition: MuonDriftCircleErrorStrategy.h:29
Muon::MuonDriftCircleErrorStrategy::Strategy
Strategy
Definition: MuonDriftCircleErrorStrategy.h:17
Muon::MuonDriftCircleErrorStrategyInput
std::bitset< 23 > MuonDriftCircleErrorStrategyInput
Definition: MuonDriftCircleErrorStrategy.h:13
Muon::MuonDriftCircleErrorStrategy::FixedError
@ FixedError
A fixed error is given to this hit (user defined via jobProperties)
Definition: MuonDriftCircleErrorStrategy.h:20
lumiFormat.i
int i
Definition: lumiFormat.py:85
Muon::MuonDriftCircleErrorStrategy::TofCorrection
@ TofCorrection
Time of flight correction was applied in calibration.
Definition: MuonDriftCircleErrorStrategy.h:25
python.getProblemFolderFromLogs.st
st
Definition: getProblemFolderFromLogs.py:68
Muon::MuonDriftCircleErrorStrategy::m_bits
MuonDriftCircleErrorStrategyInput m_bits
0,1,2 are reserved for Strategy, 3-16 are Creation parameters, 17-20 are calib window bits
Definition: MuonDriftCircleErrorStrategy.h:48
Muon::MuonDriftCircleErrorStrategy::UnknownStrategy
@ UnknownStrategy
Definition: MuonDriftCircleErrorStrategy.h:17
Muon::MuonDriftCircleErrorStrategy::BackgroundCorrection
@ BackgroundCorrection
Background correction was applied in calibration.
Definition: MuonDriftCircleErrorStrategy.h:30
Muon::MuonDriftCircleErrorStrategy::Segment
@ Segment
Treating a segment or a track.
Definition: MuonDriftCircleErrorStrategy.h:31
Muon::MuonDriftCircleErrorStrategy::ErrorAtPredictedPosition
@ ErrorAtPredictedPosition
Definition: MuonDriftCircleErrorStrategy.h:23
Muon::MuonDriftCircleErrorStrategy::MagFieldCorrection
@ MagFieldCorrection
Magnetic field correction was applied in calibration
Definition: MuonDriftCircleErrorStrategy.h:28
Muon::MuonDriftCircleErrorStrategy::StationError
@ StationError
A term is added to account for misaligned.
Definition: MuonDriftCircleErrorStrategy.h:22
Muon::MuonDriftCircleErrorStrategy::CreationParameter
CreationParameter
Definition: MuonDriftCircleErrorStrategy.h:18
LArNewCalib_PedestalAutoCorr.cp
cp
Definition: LArNewCalib_PedestalAutoCorr.py:188
Muon::operator<<
std::ostream & operator<<(std::ostream &ostr, const Muon::HedgehogBoard &board)
Definition: HedgehogBoard.cxx:11
Muon::MuonDriftCircleErrorStrategy::setParameter
void setParameter(CreationParameter, bool value)
Definition: MuonDriftCircleErrorStrategy.h:63
Muon::MuonDriftCircleErrorStrategy::setStrategy
void setStrategy(Strategy)
Select the strategy to be used - only one can be set at a time.
Definition: MuonDriftCircleErrorStrategy.h:54
Muon
struct TBPatternUnitContext Muon
Muon::MuonDriftCircleErrorStrategy::ParameterisedErrors
@ ParameterisedErrors
Use parameterised errors.
Definition: MuonDriftCircleErrorStrategy.h:21
xAOD::Moore
@ Moore
Moore (MoMu)
Definition: TrackingPrimitives.h:136
Muon::MuonDriftCircleErrorStrategy::nCalibWindowBits
static constexpr std::size_t nCalibWindowBits
Allows up to 16 configurations to be recorded.
Definition: MuonDriftCircleErrorStrategy.h:34
Muon::MuonDriftCircleErrorStrategy::BroadError
@ BroadError
Definition: MuonDriftCircleErrorStrategy.h:18
Muon::MuonDriftCircleErrorStrategy::MuonDriftCircleErrorStrategy
MuonDriftCircleErrorStrategy()=default
Muon::MuonDriftCircleErrorStrategy::ScaledError
@ ScaledError
Definition: MuonDriftCircleErrorStrategy.h:19
Muon::MuonDriftCircleErrorStrategy::creationParameter
bool creationParameter(CreationParameter) const
Definition: MuonDriftCircleErrorStrategy.h:82
Muon::MuonDriftCircleErrorStrategy::getBits
const MuonDriftCircleErrorStrategyInput & getBits() const
Definition: MuonDriftCircleErrorStrategy.h:45
Muon::MuonDriftCircleErrorStrategy::strategy
Strategy strategy() const
Definition: MuonDriftCircleErrorStrategy.h:102