ATLAS Offline Software
Loading...
Searching...
No Matches
CandidateSummary.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#pragma once
6
7#include <algorithm>
8#include <optional>
9
12
13class TrigMuonEFTrack;
14class MuonFeature;
15
16namespace Muon {
17 class MuonSegment;
18}
19namespace Trk {
21 class Track;
22} // namespace Trk
23
24namespace MuGirlNS {
25 class Intersection;
26
28
29 inline std::string hitTechnologyName(StauHitTechnology eTech) {
30 switch (eTech) {
31 case RPC_STAU_HIT: return "RPC";
32 case RPCETA_STAU_HIT: return "RPCETA";
33 case MDTT_STAU_HIT: return "MDTT";
34 case CALO_STAU_HIT: return "CALO";
35 case CSC_STAU_HIT: return "CSC";
36 default: return std::string();
37 }
38 }
39
40 struct StauHit {
42 double mToF{-1.};
43 double x{0.};
44 double y{0.};
45 double z{0.};
47 double e{-1.};
48 double error{-1.};
49 double shift{0.};
50 bool measuresEta{false};
51 double propagationTime{0.};
52 bool passesMDTBetaCut{false};
53
54
55 StauHit() = default;
56 StauHit(StauHitTechnology tech, double tof, double ix, double iy, double iz, Identifier iid, double ie, double er = -1.,
57 double sh = 0., bool isEta = false, double propTime = 0., bool passMDTBetaCut = false):
58 eTech(tech),
59 mToF(tof),
60 x(ix),
61 y(iy),
62 z(iz),
63 id(iid),
64 e(ie),
65 error(er),
66 shift(sh),
67 measuresEta(isEta),
68 propagationTime(propTime),
69 passesMDTBetaCut(passMDTBetaCut) {}
70 };
71
72 // conditional decoration of SlowMuon container with MDT ADC counts and drift radii
73 // enabled by flag MuonCombined.addMDTExtrasMuGirlLowBeta
75 int adc{-1};
76 float rdrift{-1.};
77
78 StauMDTHitExtra() = default;
79 StauMDTHitExtra(int iadc, float irdrift):
80 adc(iadc),
81 rdrift(irdrift) {}
82 };
83
84 using StauHits = std::vector<StauHit>;
85 using StauMDTHitExtras = std::vector<StauMDTHitExtra>;
86
87 struct StauExtras {
88 double ann{0.};
89 double betaAll{0.};
90 double betaAllt{0.};
91 unsigned int numRpcHitsInSeg{0};
92 unsigned int numCaloCells{0};
93
94 double rpcBetaAvg{0.};
95 double rpcBetaRms{0.};
96 double rpcBetaChi2{0.};
97 unsigned int rpcBetaDof{0};
98 double mdtBetaAvg{0.};
99 double mdtBetaRms{0.};
100 double mdtBetaChi2{0.};
101 unsigned int mdtBetaDof{0};
102 double caloBetaAvg{0.};
103 double caloBetaRms{0.};
104 double caloBetaChi2{0.};
107 std::optional<StauMDTHitExtras> extraMDTHitInfo;
108
109
110 void addHits(StauHits stauHits) { std::copy(stauHits.begin(), stauHits.end(), std::back_inserter(hits)); }
111 void addMDTHitExtras(StauMDTHitExtras stauMDTHitExtras) { std::copy(stauMDTHitExtras.begin(), stauMDTHitExtras.end(), std::back_inserter(*extraMDTHitInfo)); }
112 };
113
114} // namespace MuGirlNS
This is the common class for 3D segments used in the muon spectrometer.
std::string hitTechnologyName(StauHitTechnology eTech)
std::vector< StauHit > StauHits
std::vector< StauMDTHitExtra > StauMDTHitExtras
NRpcCablingAlg reads raw condition data and writes derived condition data to the condition store.
Ensure that the ATLAS eigen extensions are properly loaded.
TrackSurfaceIntersection(const Amg::Vector3D &pos, const Amg::Vector3D &dir, double path)
Constructor.
unsigned int numRpcHitsInSeg
void addHits(StauHits stauHits)
void addMDTHitExtras(StauMDTHitExtras stauMDTHitExtras)
std::optional< StauMDTHitExtras > extraMDTHitInfo
StauHit(StauHitTechnology tech, double tof, double ix, double iy, double iz, Identifier iid, double ie, double er=-1., double sh=0., bool isEta=false, double propTime=0., bool passMDTBetaCut=false)
StauHitTechnology eTech
StauMDTHitExtra(int iadc, float irdrift)