ATLAS Offline Software
RpcTrackAnaAlg.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef RPCRAWDATAMONITORING_RPCTRACKANAALG_H
6 #define RPCRAWDATAMONITORING_RPCTRACKANAALG_H
7 
8 #include <time.h>
9 
10 #include <map>
11 #include <set>
12 #include <string>
13 #include <utility>
14 #include <vector>
15 
16 // Athena/Gaudi
21 
22 // ATLAS
30 #include "xAODMuon/MuonContainer.h"
35 
36 // local
37 #include "RPCDQUtils.h"
38 
40  public:
41  RpcTrackAnaAlg(const std::string& name, ISvcLocator* pSvcLocator);
42  virtual ~RpcTrackAnaAlg();
43 
44  virtual StatusCode initialize() override;
45  virtual StatusCode fillHistograms(const EventContext& ctx) const override;
46 
47  typedef std::map<Identifier, std::shared_ptr<RpcPanel>> RpcPanelMap;
48  typedef std::pair<ExResult, const std::shared_ptr<GasGapData>> GasGapResult;
49 
50  private:
51  enum BarrelDL {
52  BI = 1,
53  BM1,
54  BM2,
55  BO1,
56  BO2,
57  OUT
58  }; // Barrel doublet: BM_dbR
59  enum MuonSource { AllMuon = 0, ZCand };
60 
63  StatusCode setPanelIndex(std::shared_ptr<RpcPanel> panel);
64 
67 
68  StatusCode fillMuonExtrapolateEff(const EventContext& ctx) const;
69  StatusCode fillHistPRD(const EventContext& ctx) const;
70 
72  const std::vector<TagDef>&) const;
73 
75  const Trk::PropDirection direction,
76  std::vector<GasGapResult>& results,
77  BarrelDL barrelDL) const;
78  std::unique_ptr<Trk::TrackParameters> computeTrackIntersectionWithGasGap(
79  ExResult& result, const xAOD::TrackParticle* track_particle,
80  const std::shared_ptr<GasGapData>& gap) const;
81 
82  StatusCode extrapolate2RPC(std::unique_ptr<Trk::TrackParameters> trackParam,
83  const Trk::PropDirection direction,
84  std::vector<GasGapResult>& results,
85  BarrelDL barrelDL) const;
86  std::unique_ptr<Trk::TrackParameters> computeTrackIntersectionWithGasGap(
87  ExResult& result, const Trk::TrackParameters* trackParam,
88  const std::shared_ptr<GasGapData>& gap) const;
89 
90  StatusCode readHitsPerGasgap(const EventContext& ctx,
91  std::vector<GasGapResult>& results,
92  MuonSource muon_source) const;
93  StatusCode fillClusterSize(std::vector<const Muon::RpcPrepData*>& view_hits,
94  const int panel_index, int LB, int phiSector,
95  int isPhi) const;
96  bool IsNearbyHit(const std::vector<const Muon::RpcPrepData*>& cluster_hits,
97  const Muon::RpcPrepData* hit) const;
98 
99  private:
100  BooleanProperty m_plotMuonEff{
101  this, "plotMuonEff", false,
102  "switch to plot histograms for Muon Efficiency"};
103  BooleanProperty m_plotPRD{
104  this, "plotPRD", false,
105  "switch to plot histograms for Prepare Data objects"};
106  BooleanProperty m_useAODParticle{this, "useAODParticle", false,
107  "use AOD Particle"};
108 
109  FloatProperty m_lbDuraThr{this, "lbDuraThr", 10.,
110  "Thrshold of luminosity block deruation"};
111  StringProperty m_packageName{this, "PackageName", "RpcTrackAnaAlg",
112  "group name for histograming"};
113 
114  StringProperty m_elementsFileName{this, "ElementsFileName", "RpcRawDataMonitoring/Element.xml",
115  "Elements xml file"};
116 
117  StringProperty m_trigTagList{
118  this, "TagTrigList", "HLT_mu_ivarmedium;HLT_mu50",
119  "list of triggers to be used for trigger matching"};
120  FloatProperty m_trigMatchWindow{this, "TrigMatchingWindow", 0.005,
121  "Window size in R for trigger matching"};
122  BooleanProperty m_TagAndProbe{this, "TagAndProbe", false,
123  "switch to perform tag-and-probe method"};
124  BooleanProperty m_TagAndProbeZmumu{
125  this, "TagAndProbeZmumu", false,
126  "switch to perform tag-and-probe method Z->mumu"};
127 
128  // cuts for muons
129  FloatProperty m_minPt{this, "minPt", 25.0e3, "minmum pT of muon"};
130  FloatProperty m_maxEta{this, "maxEta", 2.5,
131  "max eta absolute value of muon"};
132 
133  // cuts for barrel muons
134  FloatProperty m_barrelMinPt{this, "barrelMinPt", 2.0e3};
135  FloatProperty m_barrelMinEta{this, "barrelMinEta", 0.1};
136  FloatProperty m_barrelMaxEta{this, "barrelMaxEta", 1.05};
137 
138  FloatProperty m_muonMass{this, "MuonMass", ParticleConstants::muonMassInMeV,
139  "muon invariant mass in MeV"};
140  FloatProperty m_zMass_lowLimit{
141  this, "zMass_lowLimit", 50000.,
142  "2 muon invariant mass low limit in Zmumu event"};
143  FloatProperty m_zMass_upLimit{
144  this, "zMass_upLimit", 150000.,
145  "2 muon invariant mass up limit in Zmumu event"};
146 
147  FloatProperty m_isolationWindow{
148  this, "IsolationWindow", 0.1,
149  "Window size in R for isolation with other muons"};
150  FloatProperty m_l1trigMatchWindow{
151  this, "L1TrigMatchingWindow", 0.3,
152  "Window size in R for L1 trigger matching"};
153  // StringProperty
154  // m_MuonEFContainerName{this,"MuonEFContainerName","HLT_MuonsCBOutsideIn","HLT
155  // RoI-based muon track container"};
156  FloatProperty m_minDRTrackToGasGap{
157  this, "minDRTrackToGasGap", 0.02,
158  "minimum of DR between track and gasgap"};
159 
161  this, "boundsToleranceReadoutElement", 100.0,
162  "boundsToleranceReadoutElement"};
164  this, "boundsToleranceReadoutElementTight", 20.0,
165  "boundsToleranceReadoutElementTight"};
166 
167  FloatProperty m_diffHitTrackPostion{
168  this, "diffHitTrackPostion", 30.0,
169  "the largest distance between hit and tracks local postion"};
170  FloatProperty m_outtime{this, "outtime", 12.5, "the out-time time"};
171 
174  this, "MuonIdHelperSvc", "Muon::MuonIdHelperSvc/MuonIdHelperSvc"};
175 
176  const RpcIdHelper* m_rpcIdHelper{nullptr};
177 
178  ToolHandle<Trk::IExtrapolator> m_extrapolator{
179  this, "TrackExtrapolator", "Trk::Extrapolator/AtlasExtrapolator",
180  "Track extrapolator"};
182  this, "MuonRoIContainerName", "LVL1MuonRoIs", "Key for L1 ROIs"};
184  this, "MuonContainerKey", "Muons",
185  "Key for Offline muon track Containers"};
187  this, "RpcPrepDataContainer", "RPC_Measurements", "RPC PRDs"};
189  this, "PrimaryVertexContainerName", "PrimaryVertices",
190  "Primary Vertex Container"};
191 
192  // accessors for beam spot uncertainty
194  this, "beamPosSigmaX", "EventInfo.beamPosSigmaX",
195  "Beam spot position sigma in X"};
197  this, "beamPosSigmaY", "EventInfo.beamPosSigmaY",
198  "Beam spot position sigma in Y"};
199  // note that this last entry is a covariance: the units are mm^2,
200  // whereas the above have units of mm
202  this, "beamPosSigmaXY", "EventInfo.beamPosSigmaXY",
203  "Beam spot covariance in XY"};
204 
206 
207  std::vector<TagDef> m_trigTagDefs{};
208 
209  std::map<std::pair<int, int>, std::vector<std::shared_ptr<GasGapData>>>
211 
212  // 2=BML,3=BMS,4=BOL,5=BOS,8=BMF,9=BOF,10=BOG,53=BME
213  std::map<BarrelDL, std::vector<int>> m_StationNames{};
214  std::map<std::string, int> m_elementIndex{};
215 
216  std::map<std::string, int> m_SectorGroup{};
217  std::map<std::string, int> m_TriggerThrGroup{};
218 };
219 
220 #endif
ReadHandleKey.h
Property holding a SG store/key/clid from which a ReadHandle is made.
RpcTrackAnaAlg::m_barrelMinPt
FloatProperty m_barrelMinPt
Definition: RpcTrackAnaAlg.h:134
RpcTrackAnaAlg::computeTrackIntersectionWithGasGap
std::unique_ptr< Trk::TrackParameters > computeTrackIntersectionWithGasGap(ExResult &result, const xAOD::TrackParticle *track_particle, const std::shared_ptr< GasGapData > &gap) const
Definition: RpcTrackAnaAlg.cxx:866
RpcTrackAnaAlg::RpcTrackAnaAlg
RpcTrackAnaAlg(const std::string &name, ISvcLocator *pSvcLocator)
Definition: RpcTrackAnaAlg.cxx:30
RpcTrackAnaAlg::m_MuonContainerKey
SG::ReadHandleKey< xAOD::MuonContainer > m_MuonContainerKey
Definition: RpcTrackAnaAlg.h:183
RpcTrackAnaAlg::m_TriggerThrGroup
std::map< std::string, int > m_TriggerThrGroup
Definition: RpcTrackAnaAlg.h:217
RpcCoinDataContainer.h
RpcTrackAnaAlg::m_plotPRD
BooleanProperty m_plotPRD
Definition: RpcTrackAnaAlg.h:103
RpcTrackAnaAlg::OUT
@ OUT
Definition: RpcTrackAnaAlg.h:57
RpcTrackAnaAlg::triggerMatching
StatusCode triggerMatching(const xAOD::Muon *, const std::vector< TagDef > &) const
Definition: RpcTrackAnaAlg.cxx:716
RpcTrackAnaAlg::m_beamSigmaXY
SG::ReadDecorHandleKey< xAOD::EventInfo > m_beamSigmaXY
Definition: RpcTrackAnaAlg.h:201
ReadDecorHandleKey.h
Property holding a SG store/key/clid/attr name from which a ReadDecorHandle is made.
get_generator_info.result
result
Definition: get_generator_info.py:21
RpcTrackAnaAlg::IsNearbyHit
bool IsNearbyHit(const std::vector< const Muon::RpcPrepData * > &cluster_hits, const Muon::RpcPrepData *hit) const
Definition: RpcTrackAnaAlg.cxx:1412
RpcTrackAnaAlg::m_barrelMaxEta
FloatProperty m_barrelMaxEta
Definition: RpcTrackAnaAlg.h:136
TrackParameters.h
CaloCellTimeCorrFiller.LB
LB
Definition: CaloCellTimeCorrFiller.py:36
RpcTrackAnaAlg::m_trigMatchWindow
FloatProperty m_trigMatchWindow
Definition: RpcTrackAnaAlg.h:120
ExResult
Definition: RPCDQUtils.h:82
RpcTrackAnaAlg::m_maxEta
FloatProperty m_maxEta
Definition: RpcTrackAnaAlg.h:130
RpcTrackAnaAlg::m_minPt
FloatProperty m_minPt
Definition: RpcTrackAnaAlg.h:129
RpcTrackAnaAlg::BarrelDL
BarrelDL
Definition: RpcTrackAnaAlg.h:51
RpcTrackAnaAlg::m_plotMuonEff
BooleanProperty m_plotMuonEff
Definition: RpcTrackAnaAlg.h:100
MuonRoIContainer.h
RpcTrackAnaAlg::m_beamSigmaX
SG::ReadDecorHandleKey< xAOD::EventInfo > m_beamSigmaX
Definition: RpcTrackAnaAlg.h:193
ParticleConstants::PDG2011::muonMassInMeV
constexpr double muonMassInMeV
the mass of the muon (in MeV)
Definition: ParticleConstants.h:29
RpcTrackAnaAlg::BM2
@ BM2
Definition: RpcTrackAnaAlg.h:54
RpcTrackAnaAlg::MuonSource
MuonSource
Definition: RpcTrackAnaAlg.h:59
RpcTrackAnaAlg::m_minDRTrackToGasGap
FloatProperty m_minDRTrackToGasGap
Definition: RpcTrackAnaAlg.h:156
RpcTrackAnaAlg::BI
@ BI
Definition: RpcTrackAnaAlg.h:52
RpcTrackAnaAlg::m_rpcPrdKey
SG::ReadHandleKey< Muon::RpcPrepDataContainer > m_rpcPrdKey
Definition: RpcTrackAnaAlg.h:186
RpcTrackAnaAlg::m_useAODParticle
BooleanProperty m_useAODParticle
Definition: RpcTrackAnaAlg.h:106
RpcTrackAnaAlg::m_barrelMinEta
FloatProperty m_barrelMinEta
Definition: RpcTrackAnaAlg.h:135
RpcTrackAnaAlg::m_packageName
StringProperty m_packageName
Definition: RpcTrackAnaAlg.h:111
IExtrapolator.h
TrigDecisionTool.h
RpcTrackAnaAlg::m_SectorGroup
std::map< std::string, int > m_SectorGroup
Definition: RpcTrackAnaAlg.h:216
RpcPrepDataContainer.h
RpcTrackAnaAlg::m_idHelperSvc
ServiceHandle< Muon::IMuonIdHelperSvc > m_idHelperSvc
Definition: RpcTrackAnaAlg.h:173
RpcTrackAnaAlg::m_diffHitTrackPostion
FloatProperty m_diffHitTrackPostion
Definition: RpcTrackAnaAlg.h:167
SG::ReadHandleKey< xAOD::MuonRoIContainer >
RpcTrackAnaAlg::ZCand
@ ZCand
Definition: RpcTrackAnaAlg.h:59
RpcTrackAnaAlg::BO2
@ BO2
Definition: RpcTrackAnaAlg.h:56
RpcTrackAnaAlg::m_isolationWindow
FloatProperty m_isolationWindow
Definition: RpcTrackAnaAlg.h:147
RpcTrackAnaAlg::m_StationNames
std::map< BarrelDL, std::vector< int > > m_StationNames
Definition: RpcTrackAnaAlg.h:213
CaloSwCorrections.gap
def gap(flags, cells_name, *args, **kw)
Definition: CaloSwCorrections.py:212
RpcIdHelper
Definition: RpcIdHelper.h:51
RpcTrackAnaAlg::fillHistPRD
StatusCode fillHistPRD(const EventContext &ctx) const
Definition: RpcTrackAnaAlg.cxx:616
xAOD::Muon_v1
Class describing a Muon.
Definition: Muon_v1.h:38
RpcTrackAnaAlg::~RpcTrackAnaAlg
virtual ~RpcTrackAnaAlg()
Definition: RpcTrackAnaAlg.cxx:35
RpcTrackAnaAlg::m_elementIndex
std::map< std::string, int > m_elementIndex
Definition: RpcTrackAnaAlg.h:214
AthMonitorAlgorithm
Base class for Athena Monitoring Algorithms.
Definition: AthMonitorAlgorithm.h:36
RpcTrackAnaAlg::m_extrapolator
ToolHandle< Trk::IExtrapolator > m_extrapolator
Definition: RpcTrackAnaAlg.h:178
RpcTrackAnaAlg::fillMuonExtrapolateEff
StatusCode fillMuonExtrapolateEff(const EventContext &ctx) const
Definition: RpcTrackAnaAlg.cxx:326
RpcTrackAnaAlg::BO1
@ BO1
Definition: RpcTrackAnaAlg.h:55
Trk::PropDirection
PropDirection
Definition: PropDirection.h:19
RpcTrackAnaAlg::m_l1trigMatchWindow
FloatProperty m_l1trigMatchWindow
Definition: RpcTrackAnaAlg.h:150
RpcTrackAnaAlg::extrapolate2RPC
StatusCode extrapolate2RPC(const xAOD::TrackParticle *track, const Trk::PropDirection direction, std::vector< GasGapResult > &results, BarrelDL barrelDL) const
Definition: RpcTrackAnaAlg.cxx:756
RpcTrackAnaAlg::m_muonMass
FloatProperty m_muonMass
Definition: RpcTrackAnaAlg.h:138
RpcTrackAnaAlg::m_PrimaryVertexContainerKey
SG::ReadHandleKey< xAOD::VertexContainer > m_PrimaryVertexContainerKey
Definition: RpcTrackAnaAlg.h:188
ParticleConstants.h
Muon::RpcPrepData
Class to represent RPC measurements.
Definition: RpcPrepData.h:35
RpcTrackAnaAlg::m_zMass_lowLimit
FloatProperty m_zMass_lowLimit
Definition: RpcTrackAnaAlg.h:140
RpcTrackAnaAlg::initRpcPanel
StatusCode initRpcPanel()
Definition: RpcTrackAnaAlg.cxx:77
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
AthMonitorAlgorithm.h
RpcTrackAnaAlg::m_boundsToleranceReadoutElementTight
FloatProperty m_boundsToleranceReadoutElementTight
Definition: RpcTrackAnaAlg.h:163
RpcTrackAnaAlg::m_zMass_upLimit
FloatProperty m_zMass_upLimit
Definition: RpcTrackAnaAlg.h:143
RpcTrackAnaAlg::initArrayHistosMap
StatusCode initArrayHistosMap()
RpcTrackAnaAlg::fillClusterSize
StatusCode fillClusterSize(std::vector< const Muon::RpcPrepData * > &view_hits, const int panel_index, int LB, int phiSector, int isPhi) const
Definition: RpcTrackAnaAlg.cxx:1343
RpcTrackAnaAlg::m_TagAndProbe
BooleanProperty m_TagAndProbe
Definition: RpcTrackAnaAlg.h:122
RpcTrackAnaAlg::m_outtime
FloatProperty m_outtime
Definition: RpcTrackAnaAlg.h:170
add-xsec-uncert-quadrature-N.results
dictionary results
Definition: add-xsec-uncert-quadrature-N.py:39
Trk::ParametersBase
Definition: ParametersBase.h:55
RpcTrackAnaAlg::fillHistograms
virtual StatusCode fillHistograms(const EventContext &ctx) const override
adds event to the monitoring histograms
Definition: RpcTrackAnaAlg.cxx:306
RpcTrackAnaAlg::AllMuon
@ AllMuon
Definition: RpcTrackAnaAlg.h:59
RpcTrackAnaAlg::readHitsPerGasgap
StatusCode readHitsPerGasgap(const EventContext &ctx, std::vector< GasGapResult > &results, MuonSource muon_source) const
Definition: RpcTrackAnaAlg.cxx:1084
RpcTrackAnaAlg::m_elementsFileName
StringProperty m_elementsFileName
Definition: RpcTrackAnaAlg.h:114
RPCDQUtils.h
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
RpcTrackAnaAlg::setPanelIndex
StatusCode setPanelIndex(std::shared_ptr< RpcPanel > panel)
Definition: RpcTrackAnaAlg.cxx:187
RpcTrackAnaAlg::m_MuonRoIContainerKey
SG::ReadHandleKey< xAOD::MuonRoIContainer > m_MuonRoIContainerKey
Definition: RpcTrackAnaAlg.h:181
RpcTrackAnaAlg::m_beamSigmaY
SG::ReadDecorHandleKey< xAOD::EventInfo > m_beamSigmaY
Definition: RpcTrackAnaAlg.h:196
MuonDetectorManager.h
EventInfo.h
RpcTrackAnaAlg::m_lbDuraThr
FloatProperty m_lbDuraThr
Definition: RpcTrackAnaAlg.h:109
MuonContainer.h
TrackParticle.h
RpcTrackAnaAlg::m_boundsToleranceReadoutElement
FloatProperty m_boundsToleranceReadoutElement
Definition: RpcTrackAnaAlg.h:160
RpcTrackAnaAlg::m_rpcIdHelper
const RpcIdHelper * m_rpcIdHelper
Definition: RpcTrackAnaAlg.h:176
VertexContainer.h
RpcTrackAnaAlg::readElIndexFromXML
StatusCode readElIndexFromXML()
Definition: RpcTrackAnaAlg.cxx:216
RpcTrackAnaAlg::m_gasGapData
std::map< std::pair< int, int >, std::vector< std::shared_ptr< GasGapData > > > m_gasGapData
Definition: RpcTrackAnaAlg.h:210
RpcTrackAnaAlg::initialize
virtual StatusCode initialize() override
initialize
Definition: RpcTrackAnaAlg.cxx:38
RpcTrackAnaAlg::RpcPanelMap
std::map< Identifier, std::shared_ptr< RpcPanel > > RpcPanelMap
Definition: RpcTrackAnaAlg.h:47
RpcTrackAnaAlg::m_TagAndProbeZmumu
BooleanProperty m_TagAndProbeZmumu
Definition: RpcTrackAnaAlg.h:124
RpcTrackAnaAlg::BM1
@ BM1
Definition: RpcTrackAnaAlg.h:53
xAOD::track
@ track
Definition: TrackingPrimitives.h:513
xAOD::TrackParticle_v1
Class describing a TrackParticle.
Definition: TrackParticle_v1.h:43
RpcTrackAnaAlg::GasGapResult
std::pair< ExResult, const std::shared_ptr< GasGapData > > GasGapResult
Definition: RpcTrackAnaAlg.h:48
RpcTrackAnaAlg::m_trigTagList
StringProperty m_trigTagList
Definition: RpcTrackAnaAlg.h:117
SG::ReadDecorHandleKey
Property holding a SG store/key/clid/attr name from which a ReadDecorHandle is made.
Definition: StoreGate/StoreGate/ReadDecorHandleKey.h:85
RpcTrackAnaAlg::initTrigTag
StatusCode initTrigTag()
Definition: RpcTrackAnaAlg.cxx:280
IMuonIdHelperSvc.h
RpcTrackAnaAlg
Definition: RpcTrackAnaAlg.h:39
ServiceHandle< Muon::IMuonIdHelperSvc >
RpcTrackAnaAlg::m_trigTagDefs
std::vector< TagDef > m_trigTagDefs
Definition: RpcTrackAnaAlg.h:207
RpcTrackAnaAlg::m_rpcPanelMap
RpcPanelMap m_rpcPanelMap
Definition: RpcTrackAnaAlg.h:205