ATLAS Offline Software
RpcLv1RawDataEfficiency.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3 */
4 
6 // Package : RpcLv1RawDataEfficiency
7 // Author: U. Schnoor (ulrike.schnoor@cern.ch) - P. Anger (panger@cern.ch)
8 // September 2012
9 //
10 // DESCRIPTION:
11 // Subject: RPCLV1-->Efficiency Offline Muon Data Quality
12 // RPCLv1 Sector Hits vs LB
14 
15 #ifndef RpcLv1RawDataEfficiency_H
16 #define RpcLv1RawDataEfficiency_H
17 
26 
27 // STL includes
28 
29 #include <map>
30 #include <sstream>
31 #include <vector>
32 
33 // ROOT includes
34 #include <TH2I.h>
35 #include <inttypes.h>
36 
37 //================================================================================================================================
38 class OfflineMuon {
39  public:
40  OfflineMuon() : m_pt(0.0), m_eta(0.0), m_phi(0.0), m_q(0.0) {
41  m_pt_default_if_max = 50.1;
42  m_pt_max = 50.;
43  }
44  ~OfflineMuon() = default;
45 
46  // Getter
47  float Pt() const { return m_pt; }
48  float TruncatedPt() const {
49  return (m_pt > m_pt_max ? m_pt_default_if_max * m_q : m_pt);
50  }
51  float Eta() const { return m_eta; }
52  float Phi() const { return m_phi; }
53  float Q() const { return m_q; }
54  int QIndex() const { return (m_q < 0 ? 1 : 0); }
55  float PhiSeg() const {
56  return (m_phi < -CLHEP::pi / 12. ? m_phi + 2 * CLHEP::pi : m_phi);
57  }
58 
59  unsigned int ChargeIndex() const { return (m_q >= 0 ? 0 : 1); }
60 
61  // Setter
62  void SetPtEtaPhiQ(float pt, float eta, float phi, float q) {
63  SetPt(pt);
64  SetEta(eta);
65  SetPhi(phi);
66  SetQ(q);
67  }
68  void SetPt(float pt) { m_pt = pt; }
69  void SetEta(float eta) { m_eta = eta; }
70  void SetPhi(float phi) { m_phi = phi; }
71  void SetQ(float q) { m_q = q; }
72 
73  // Calculator
74  float DeltaR(const OfflineMuon& mu2) const {
75  return std::hypot(m_eta - mu2.Eta(),
77  }
78 
79  private:
80  float m_pt{0}; // allways in GeV
81  float m_eta{0};
82  float m_phi{0};
83  float m_q{0};
84 
85  float m_pt_default_if_max{50.1};
86  float m_pt_max{50.};
87 };
88 
89 //================================================================================================================================
91  public:
92  CoincidenceData() = default;
93  ~CoincidenceData() = default;
94  // Getter
95  bool IsLow() const { return ((m_lowpt == 1) ? true : false); }
96  int LowHighIndex() const {
97  return ((m_lowpt == 1) ? 0 : 1);
98  } // because only valid stuff is inside this works
99  int Threshold() const {
100  return m_threshold;
101  } // each coin matrix has three thresholds
102  float Phi() const { return m_phi; }
103  float Eta() const { return m_eta; }
104 
105  // Calculator
106  float DeltaR(const OfflineMuon& offmu) const {
107  return std::hypot(m_eta - offmu.Eta(),
109  }
110 
111  // Setter
112  void SetThresholdLowHigh(int threshold, int low_pt, int high_pt) {
114  m_lowpt = low_pt;
115  m_highpt = high_pt;
116  }
117  void SetEtaPhi(float eta, float phi) {
118  m_eta = eta;
119  m_phi = phi;
120  }
121 
122  private:
123  int m_lowpt{0};
124  int m_highpt{0};
125  int m_threshold{0};
126  float m_phi{0.f};
127  float m_eta{0.f};
128 };
129 
130 // for sorting Trigger according to dR to offline muons, shortest dR first
131 struct CompareDR {
132  CompareDR(const OfflineMuon& offmu) : m_offmu(offmu) {}
134  bool operator()(const CoincidenceData* coin1,
135  const CoincidenceData* coin2) const {
136  return (coin1->DeltaR(m_offmu) < coin2->DeltaR(m_offmu));
137  }
138 };
139 
140 //================================================================================================================================
142  public:
143  RpcLv1RawDataEfficiency(const std::string& type, const std::string& name,
144  const IInterface* parent);
145  virtual ~RpcLv1RawDataEfficiency() = default;
146 
148 
150 
152  virtual StatusCode fillHistograms();
153 
154  private:
156  this, "MuonIdHelperSvc", "Muon::MuonIdHelperSvc/MuonIdHelperSvc"};
157 
158  // MuonDetectorManager from the conditions store
160  this, "DetectorManagerKey", "MuonDetectorManager",
161  "Key of input MuonDetectorManager condition data"};
162 
163  // Trigger type stuff
165  int GetTriggerType() { return m_trigtype; }
166  // helper function for the different types of histograms
167  std::stringstream m_ss;
168 
169  // for Sector Hits histograms
170 
171  int m_trigtype{0};
172  int m_event{0};
173  int m_lumiblock{0};
174  int m_BCID{0};
175 
176  bool m_isMC{false};
177 
179  this, "RpcCoinKey", "RPC_triggerHits", "RPC coincidences"};
181  "EventInfo", "EventInfo"};
183  this, "RPCSec", "RPC_SECTORLOGIC", "RPC sector logic"};
184 
185  // muon informations for offline muons and trigger hits
186  std::vector<OfflineMuon> m_OfflineMuons;
187  std::vector<CoincidenceData*> m_CoincidenceData;
188 
189  // Declare Histograms
190  std::array<TH2I*, 6> m_rpclv1_sectorhits_A{};
191  std::array<TH2I*, 6> m_rpclv1_sectorhits_C{};
192  std::array<TH2I*, 6> m_rpclv1_sectorhits_all{};
193 };
194 
195 #endif
ReadHandleKey.h
Property holding a SG store/key/clid from which a ReadHandle is made.
CompareDR::CompareDR
CompareDR(const OfflineMuon &offmu)
Definition: RpcLv1RawDataEfficiency.h:132
RpcCoinDataContainer.h
RpcLv1RawDataEfficiency::StoreTriggerType
StatusCode StoreTriggerType()
Definition: RpcLv1RawDataEfficiency.cxx:163
CoincidenceData::~CoincidenceData
~CoincidenceData()=default
RpcSectorLogicContainer.h
OfflineMuon::SetPtEtaPhiQ
void SetPtEtaPhiQ(float pt, float eta, float phi, float q)
Definition: RpcLv1RawDataEfficiency.h:62
OfflineMuon::m_phi
float m_phi
Definition: RpcLv1RawDataEfficiency.h:82
OfflineMuon::m_pt_max
float m_pt_max
Definition: RpcLv1RawDataEfficiency.h:86
phi
Scalar phi() const
phi method
Definition: AmgMatrixBasePlugin.h:64
CoincidenceData::SetEtaPhi
void SetEtaPhi(float eta, float phi)
Definition: RpcLv1RawDataEfficiency.h:117
CoincidenceData::IsLow
bool IsLow() const
Definition: RpcLv1RawDataEfficiency.h:95
CoincidenceData::Phi
float Phi() const
Definition: RpcLv1RawDataEfficiency.h:102
RpcLv1RawDataEfficiency::RpcLv1RawDataEfficiency
RpcLv1RawDataEfficiency(const std::string &type, const std::string &name, const IInterface *parent)
Definition: RpcLv1RawDataEfficiency.cxx:29
ManagedMonitorToolBase
Provides functionality for users to implement and save histograms, ntuples, and summary data,...
Definition: ManagedMonitorToolBase.h:74
OfflineMuon::Phi
float Phi() const
Definition: RpcLv1RawDataEfficiency.h:52
CoincidenceData::LowHighIndex
int LowHighIndex() const
Definition: RpcLv1RawDataEfficiency.h:96
RpcLv1RawDataEfficiency::~RpcLv1RawDataEfficiency
virtual ~RpcLv1RawDataEfficiency()=default
eta
Scalar eta() const
pseudorapidity method
Definition: AmgMatrixBasePlugin.h:79
xAODP4Helpers.h
RpcLv1RawDataEfficiency::m_rpclv1_sectorhits_A
std::array< TH2I *, 6 > m_rpclv1_sectorhits_A
Definition: RpcLv1RawDataEfficiency.h:190
RpcLv1RawDataEfficiency::m_ss
std::stringstream m_ss
Definition: RpcLv1RawDataEfficiency.h:167
test_pyathena.pt
pt
Definition: test_pyathena.py:11
OfflineMuon::m_eta
float m_eta
Definition: RpcLv1RawDataEfficiency.h:81
xAOD::P4Helpers::deltaPhi
double deltaPhi(double phiA, double phiB)
delta Phi in range [-pi,pi[
Definition: xAODP4Helpers.h:69
RpcLv1RawDataEfficiency::fillHistograms
virtual StatusCode fillHistograms()
An inheriting class should either override this function or fillHists().
Definition: RpcLv1RawDataEfficiency.cxx:236
RpcLv1RawDataEfficiency::m_event
int m_event
Definition: RpcLv1RawDataEfficiency.h:172
SG::ReadHandleKey
Property holding a SG store/key/clid from which a ReadHandle is made.
Definition: StoreGate/StoreGate/ReadHandleKey.h:39
RpcLv1RawDataEfficiency::m_CoincidenceData
std::vector< CoincidenceData * > m_CoincidenceData
Definition: RpcLv1RawDataEfficiency.h:187
RpcLv1RawDataEfficiency::m_OfflineMuons
std::vector< OfflineMuon > m_OfflineMuons
Definition: RpcLv1RawDataEfficiency.h:186
pi
#define pi
Definition: TileMuonFitter.cxx:65
CoincidenceData::m_eta
float m_eta
Definition: RpcLv1RawDataEfficiency.h:127
OfflineMuon::SetPt
void SetPt(float pt)
Definition: RpcLv1RawDataEfficiency.h:68
RpcLv1RawDataEfficiency::readRpcCoinDataContainer
StatusCode readRpcCoinDataContainer()
Definition: RpcLv1RawDataEfficiency.cxx:79
ManagedMonitorToolBase.h
CoincidenceData::m_threshold
int m_threshold
Definition: RpcLv1RawDataEfficiency.h:125
OfflineMuon::TruncatedPt
float TruncatedPt() const
Definition: RpcLv1RawDataEfficiency.h:48
RpcLv1RawDataEfficiency::m_rpclv1_sectorhits_all
std::array< TH2I *, 6 > m_rpclv1_sectorhits_all
Definition: RpcLv1RawDataEfficiency.h:192
RpcLv1RawDataEfficiency::m_lumiblock
int m_lumiblock
Definition: RpcLv1RawDataEfficiency.h:173
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
RpcLv1RawDataEfficiency::m_trigtype
int m_trigtype
Definition: RpcLv1RawDataEfficiency.h:171
CoincidenceData::Eta
float Eta() const
Definition: RpcLv1RawDataEfficiency.h:103
CoincidenceData::m_phi
float m_phi
Definition: RpcLv1RawDataEfficiency.h:126
test_pyathena.parent
parent
Definition: test_pyathena.py:15
OfflineMuon::Eta
float Eta() const
Definition: RpcLv1RawDataEfficiency.h:51
OfflineMuon::m_pt
float m_pt
Definition: RpcLv1RawDataEfficiency.h:80
OfflineMuon::QIndex
int QIndex() const
Definition: RpcLv1RawDataEfficiency.h:54
RpcLv1RawDataEfficiency::m_rpcCoinKey
SG::ReadHandleKey< Muon::RpcCoinDataContainer > m_rpcCoinKey
Definition: RpcLv1RawDataEfficiency.h:178
OfflineMuon::SetPhi
void SetPhi(float phi)
Definition: RpcLv1RawDataEfficiency.h:70
CompareDR::m_offmu
const OfflineMuon & m_offmu
Definition: RpcLv1RawDataEfficiency.h:133
RpcLv1RawDataEfficiency::bookHistogramsRecurrent
virtual StatusCode bookHistogramsRecurrent()
An inheriting class should either override this function, bookHists() or bookHistograms().
Definition: RpcLv1RawDataEfficiency.cxx:183
CoincidenceData::SetThresholdLowHigh
void SetThresholdLowHigh(int threshold, int low_pt, int high_pt)
Definition: RpcLv1RawDataEfficiency.h:112
RpcLv1RawDataEfficiency::m_rpclv1_sectorhits_C
std::array< TH2I *, 6 > m_rpclv1_sectorhits_C
Definition: RpcLv1RawDataEfficiency.h:191
RpcLv1RawDataEfficiency::GetTriggerType
int GetTriggerType()
Definition: RpcLv1RawDataEfficiency.h:165
CompareDR::operator()
bool operator()(const CoincidenceData *coin1, const CoincidenceData *coin2) const
Definition: RpcLv1RawDataEfficiency.h:134
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
threshold
Definition: chainparser.cxx:74
OfflineMuon::m_q
float m_q
Definition: RpcLv1RawDataEfficiency.h:83
OfflineMuon::OfflineMuon
OfflineMuon()
Definition: RpcLv1RawDataEfficiency.h:40
CoincidenceData::Threshold
int Threshold() const
Definition: RpcLv1RawDataEfficiency.h:99
OfflineMuon::~OfflineMuon
~OfflineMuon()=default
CoincidenceData::CoincidenceData
CoincidenceData()=default
MuonDetectorManager.h
OfflineMuon::SetQ
void SetQ(float q)
Definition: RpcLv1RawDataEfficiency.h:71
EventInfo.h
SG::ReadCondHandleKey< MuonGM::MuonDetectorManager >
RpcLv1RawDataEfficiency
Definition: RpcLv1RawDataEfficiency.h:141
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
OfflineMuon
Definition: RpcLv1RawDataEfficiency.h:38
CoincidenceData::DeltaR
float DeltaR(const OfflineMuon &offmu) const
Definition: RpcLv1RawDataEfficiency.h:106
extractSporadic.q
list q
Definition: extractSporadic.py:98
OfflineMuon::ChargeIndex
unsigned int ChargeIndex() const
Definition: RpcLv1RawDataEfficiency.h:59
RpcLv1RawDataEfficiency::m_BCID
int m_BCID
Definition: RpcLv1RawDataEfficiency.h:174
CoincidenceData
Definition: RpcLv1RawDataEfficiency.h:90
RpcLv1RawDataEfficiency::m_eventInfo
SG::ReadHandleKey< xAOD::EventInfo > m_eventInfo
Definition: RpcLv1RawDataEfficiency.h:180
OfflineMuon::m_pt_default_if_max
float m_pt_default_if_max
Definition: RpcLv1RawDataEfficiency.h:85
OfflineMuon::SetEta
void SetEta(float eta)
Definition: RpcLv1RawDataEfficiency.h:69
OfflineMuon::DeltaR
float DeltaR(const OfflineMuon &mu2) const
Definition: RpcLv1RawDataEfficiency.h:74
RpcLv1RawDataEfficiency::m_DetectorManagerKey
SG::ReadCondHandleKey< MuonGM::MuonDetectorManager > m_DetectorManagerKey
Definition: RpcLv1RawDataEfficiency.h:159
CompareDR
Definition: RpcLv1RawDataEfficiency.h:131
RpcLv1RawDataEfficiency::m_isMC
bool m_isMC
Definition: RpcLv1RawDataEfficiency.h:176
OfflineMuon::PhiSeg
float PhiSeg() const
Definition: RpcLv1RawDataEfficiency.h:55
OfflineMuon::Pt
float Pt() const
Definition: RpcLv1RawDataEfficiency.h:47
dumpTgcDigiThreshold.threshold
list threshold
Definition: dumpTgcDigiThreshold.py:34
IMuonIdHelperSvc.h
RpcLv1RawDataEfficiency::m_idHelperSvc
ServiceHandle< Muon::IMuonIdHelperSvc > m_idHelperSvc
Definition: RpcLv1RawDataEfficiency.h:155
RpcLv1RawDataEfficiency::m_sectorLogicContainerKey
SG::ReadHandleKey< RpcSectorLogicContainer > m_sectorLogicContainerKey
Definition: RpcLv1RawDataEfficiency.h:182
ServiceHandle< Muon::IMuonIdHelperSvc >
CoincidenceData::m_lowpt
int m_lowpt
Definition: RpcLv1RawDataEfficiency.h:123
RpcLv1RawDataEfficiency::initialize
StatusCode initialize()
Definition: RpcLv1RawDataEfficiency.cxx:37
CoincidenceData::m_highpt
int m_highpt
Definition: RpcLv1RawDataEfficiency.h:124
OfflineMuon::Q
float Q() const
Definition: RpcLv1RawDataEfficiency.h:53