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.
An intersection with a Surface is given by.
std::string hitTechnologyName(StauHitTechnology eTech)
std::vector< StauMDTHitExtra > StauMDTHitExtras
std::vector< StauHit > StauHits
NRpcCablingAlg reads raw condition data and writes derived condition data to the condition store.
Ensure that the ATLAS eigen extensions are properly loaded.
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)