ATLAS Offline Software
Loading...
Searching...
No Matches
MuonRoI_v1.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3*/
4
5// xAOD include(s):
7
8// Local include(s):
10
11// get bitsmasks from common definition source:
13using namespace LVL1::MuCTPIBits;
14
15namespace xAOD{
16
21
31 void MuonRoI_v1::initialize( uint32_t roiword, float eta, float phi,
32 const std::string& thrname, float thrvalue,
33 uint32_t extraword ) {
34
35 setRoIWord( roiword );
36 setEta( eta );
37 setPhi( phi );
38 setThrValue( thrvalue );
39 setThrName( thrname );
40 setRoIExtraWord( extraword );
41 return;
42 }
43
45 //
46 // Raw/simple data accessor functions
47 //
48
52 setRoIWord )
54 setThrValue )
55
57 setThrName )
58 // for Run-4+ only
60 setRoIExtraWord )
61 //
63
65 //
66 // Implementation of the RoI word decoder functions
67 // available only in Run-1/2/3
68 //
69
76 int MuonRoI_v1::getThrNumber() const {
77 if (isRun4()) return static_cast<int>((roiExtraWord() >> THR_SHIFT) & THR_MASK);
78 else if (isRun3()) return ( ( roiWord() >> RUN3_CAND_PT_SHIFT ) & RUN3_CAND_PT_MASK );
79 else return ( ( roiWord() >> CAND_PT_SHIFT ) & CAND_PT_MASK );
80 }
81
89 int MuonRoI_v1::getRoI() const {
90 if (isRun4()) {
91 return 0; // TBI
92 } else if (isRun3()) {
93 if( this->getSource() == Forward ) {
94 return ( ( roiWord() >> RUN3_ROI_SHIFT ) & FORWARD_ROI_MASK );
95 } else if( this->getSource() == Endcap ) {
96 return ( ( roiWord() >> RUN3_ROI_SHIFT ) & ENDCAP_ROI_MASK );
97 } else if( this->getSource() == Barrel ) {
98 return ( ( roiWord() >> RUN3_ROI_SHIFT ) & BARREL_ROI_MASK );
99 }
100 } else {
101 if( this->getSource() == Forward ) {
102 return ( ( roiWord() >> ROI_SHIFT ) & FORWARD_ROI_MASK );
103 } else if( this->getSource() == Endcap ) {
104 return ( ( roiWord() >> ROI_SHIFT ) & ENDCAP_ROI_MASK );
105 } else if( this->getSource() == Barrel ) {
106 return ( ( roiWord() >> ROI_SHIFT ) & BARREL_ROI_MASK );
107 }
108 }
109 return 0;
110 }
111
123 if (isRun4()) return 0; // TBI
126 }
127
134 if (isRun4()) {
135 return 0; // TBI
136 } else if (isRun3()) {
137 if( this->getSource() == Forward ) {
139 } else if( this->getSource() == Endcap ) {
141 } else if( this->getSource() == Barrel ) {
143 }
144 } else {
145 if( this->getSource() == Forward ) {
147 } else if( this->getSource() == Endcap ) {
149 } else if( this->getSource() == Barrel ) {
151 }
152 }
153 return 0;
154 }
155
164 if (isRun4()) return true; // TBI
165 else if (isRun3()) return true; // undefined in run3, return default true
166 else return ( ( roiWord() >> CAND_HIGHEST_PT_SHIFT ) & CAND_HIGHEST_PT_MASK );
167 }
168
175 if (isRun4()) {
176 return false; // TBI
177 } else if (isRun3()) {
178 if (getSource() == Barrel) return ( ( roiWord() >> RUN3_ROI_OVERFLOW_SHIFT ) & ROI_OVERFLOW_MASK );
179 else return false; // Endcap + Fwd have no flag for this
180 } else {
181 return ( ( roiWord() >> ROI_OVERFLOW_SHIFT ) & ROI_OVERFLOW_MASK );
182 }
183 }
184
191 if (isRun4()) return false; // TBI
192 else if (isRun3()) return ( ( roiWord() >> RUN3_CAND_OVERFLOW_SHIFT ) & CAND_OVERFLOW_MASK );
193 else return ( ( roiWord() >> CAND_OVERFLOW_SHIFT ) & CAND_OVERFLOW_MASK );
194 }
195
203 if (isRun4()) return Barrel; // TBI - not correct
204 //same mask for run2 and run3
205 if( this->getSectorAddress() & ENDCAP_ADDRESS_MASK ) {
206 return Endcap;
207 } else if( this->getSectorAddress() & FORWARD_ADDRESS_MASK ) {
208 return Forward;
209 } else {
210 return Barrel;
211 }
212 }
213
221 if (isRun4()) return Positive; // TBI - not correct
222 //same mask for run2 and run3
224 return Positive;
225 } else {
226 return Negative;
227 }
228 }
229
235 if (isRun4()) return false; // TBI
236 if (isRun3()) {
238 else return false;
239 } else {
241 else return false;
242 }
243 }
244
250 if (isRun4()) return false; // TBI
251 if (isRun3()) return false;
252 else {
254 else return (roiWord() >> ENDCAP_OL_SHIFT) & ENDCAP_OL_MASK;
255 }
256 }
257
265 if (isRun4()) {
266 return ((roiWord() >> CHARGE_SHIFT) & 0x1) ? Pos : Neg;
267 }
268
269 if( getSource() == Barrel ) return Undef;
270
271 if (isRun3()) {
272 if( ( roiWord() >> RUN3_CAND_TGC_CHARGE_SIGN_SHIFT) & 0x1 ) {
273 return Pos;
274 } else {
275 return Neg;
276 }
277 } else {
278 if( ( roiWord() >> CAND_TGC_CHARGE_SIGN_SHIFT) & 0x1 ) {
279 return Pos;
280 } else {
281 return Neg;
282 }
283 }
284 }
285
290 if (isRun4()) return false; // TBI
291 if (isRun3() && getSource() != Barrel) return (roiWord() >> RUN3_CAND_TGC_BW2OR3_SHIFT) & 0x1;
292 else return false;
293 }
294
295
300 if (isRun4()) return false; // TBI
301 if (isRun3() && getSource() != Barrel) return (roiWord() >> RUN3_CAND_TGC_INNERCOIN_SHIFT) & 0x1;
302 else return false;
303 }
304
305
310 if (isRun4()) return false; // TBI
311 if (isRun3() && getSource() != Barrel) return (roiWord() >> RUN3_CAND_TGC_GOODMF_SHIFT) & 0x1;
312 else return false;
313 }
314
319 bool MuonRoI_v1::isVetoed() const {
320 if (isRun4()) return false; // TBI
321 if (isRun3()) return ( ( roiWord() >> RUN3_CAND_VETO_SHIFT) & 0x1 );
322 else return ( ( roiWord() >> CAND_VETO_SHIFT) & 0x1 );
323 }
324
328 bool MuonRoI_v1::isRun3() const {
329 return isRun4() ? false : (roiWord() >> 31 & 0x1);
330 }
331
332 //
334
336 //
337 // Implementation for Run-4+ only RoI interfaces
338 //
339
342 float MuonRoI_v1::pt() const {
343 if (isRun4()) return static_cast<float>((roiWord() >> PT_SHIFT) & PT_MASK) * PT_WIDTH;
344 else return 0.;
345 }
346
349 bool MuonRoI_v1::isRun4() const {
350 static const Accessor<uint32_t> acc{"roiExtraWord"};
351 if (!acc.isAvailable(*this)) {
352 return false;
353 } else {
354 return (roiExtraWord() > 0);
355 }
356 }
357
358} // namespace xAOD
Scalar eta() const
pseudorapidity method
#define AUXSTORE_PRIMITIVE_SETTER_AND_GETTER(CL, TYPE, NAME, SETTER)
Macro creating the accessors of primitive auxiliary properties.
SG::Accessor< T, ALLOC > Accessor
Definition AuxElement.h:572
AuxElement()
Default constructor.
Class describing a LVL1 muon region of interest.
Definition MuonRoI_v1.h:29
float eta() const
The pseudorapidity ( ) of the muon candidate.
float pt() const
the transverse momentum of the muon candidate
void setRoIExtraWord(uint32_t value)
Set the second "raw" RoI word, describing extra information of the muon candidate.
uint32_t roiExtraWord() const
The second "raw" RoI word describing extra information of the muon candidate.
static constexpr uint32_t PT_SHIFT
Definition MuonRoI_v1.h:156
int getSectorAddress() const
Get the full sector address.
bool getInnerCoincidence() const
Returns whether or not there was an inner coincidence in the TGC.
void initialize(uint32_t roiword, float eta, float phi, const std::string &thrname, float thrvalue, uint32_t extraword=0u)
Initialise the object with all its properties.
static constexpr uint32_t CHARGE_SHIFT
Definition MuonRoI_v1.h:155
static constexpr uint32_t THR_SHIFT
Definition MuonRoI_v1.h:158
bool getBW3Coincidence() const
Returns whether or not there was a 3-station coincidence in the TGC.
bool isVetoed() const
Returns the veto flag for the candidate.
Hemisphere getHemisphere() const
Returns the hemisphere that detected the muon candidate.
void setEta(float v)
Set the pseudorapidity of the muon candidate.
static constexpr uint32_t PT_MASK
Definition MuonRoI_v1.h:149
RoISource getSource() const
Returns the system that detected the muon candidate.
uint32_t roiWord() const
The "raw" RoI word describing the muon candidate.
bool getEtaOverlap() const
Returns whether there's overlap between the barrel-EC sectors.
void setRoIWord(uint32_t value)
Set the "raw" RoI word, describing the muon candidate.
bool getPhiOverlap() const
Returns whether there's overlap between barrel sectors.
int getThrNumber() const
Get the logic number of the highest threshold this RoI passed.
bool isMoreCandInRoI() const
Returns if there were other muons detected in the same RoI.
static constexpr uint32_t THR_MASK
Definition MuonRoI_v1.h:150
float phi() const
The azimuthal angle ( ) of the muon candidate.
RoISource
RoI source enumeration.
Definition MuonRoI_v1.h:33
@ Endcap
The muon candidate was detected in the endcap region.
Definition MuonRoI_v1.h:35
@ Forward
The muon candidate was detected in the forward region.
Definition MuonRoI_v1.h:36
@ Barrel
The muon candidate was detected in the barrel region.
Definition MuonRoI_v1.h:34
Charge getCharge() const
Returns the charge sign of the muon candidate.
int getSectorID() const
Get the sector ID number.
MuonRoI_v1()
Default constructor.
Hemisphere
RoI hemisphere enumeration.
Definition MuonRoI_v1.h:39
@ Positive
The candidate came from the +z side (side A)
Definition MuonRoI_v1.h:40
@ Negative
The candidate came from the -z side (side C)
Definition MuonRoI_v1.h:41
Charge
Charge sign.
Definition MuonRoI_v1.h:44
@ Neg
Candidate is a mu- from a TGC sector.
Definition MuonRoI_v1.h:45
@ Pos
Candidate is a mu+ from a TGC sector.
Definition MuonRoI_v1.h:46
@ Undef
This is an RPC candidate.
Definition MuonRoI_v1.h:47
void setThrValue(float v)
Set the threshold value passed by the muon candidate.
bool isRun3() const
Returns extra flag at end of RoI word indicating that it's in Run3 format.
static constexpr float PT_WIDTH
Definition MuonRoI_v1.h:160
void setPhi(float v)
Set the azimuthal angle of the muon candidate.
int getRoI() const
Get the "RoI number" (position inside the sector)
bool getGoodMF() const
Returns whether or not there was a good magnetic field quality in the TGC.
bool isFirstCandidate() const
Returns if the candidate had the highest pT in the sector.
void setThrName(const std::string &value)
Set the name of the threshold passed by the muon candidate.
bool isMoreCandInSector() const
Returns if there were other muons detected in the same sector.
bool isRun4() const
flag whether it is Run4+ RoI definition
static constexpr uint32_t FORWARD_SECTORID_MASK
Mask for extracting the sector ID for forward candidates from the data word.
static constexpr uint32_t RUN3_ROI_SHIFT
Position of the RoI bits in the data word.
Definition MuCTPI_Bits.h:45
static constexpr uint32_t RUN3_CAND_VETO_SHIFT
Position of the bit specifying if a candidate was vetoed in the multiplicity sum.
static constexpr uint32_t FORWARD_ADDRESS_MASK
Bit in the candidate's address turned on for forward candidates.
Definition MuCTPI_Bits.h:89
static constexpr uint32_t SECTOR_HEMISPHERE_MASK
Mask for the bit showing which hemisphere the candidate came from.(1: positive; 0: negative)
Definition MuCTPI_Bits.h:80
static constexpr uint32_t CAND_HIGHEST_PT_MASK
gone in v2 Mask for extracting the bit from the data word showing whether the candidate had the highe...
static constexpr uint32_t CAND_OVERFLOW_SHIFT
Definition MuCTPI_Bits.h:28
static constexpr uint32_t ENDCAP_OL_MASK
Mask for extracting the overlap bits for endcap candidates from the data words.
Definition MuCTPI_Bits.h:56
static constexpr uint32_t RUN3_CAND_PT_MASK
Mask for extracting the pT threshold passed by the candidate from the data word.
Definition MuCTPI_Bits.h:62
static constexpr uint32_t BARREL_SECTORID_MASK
Mask for extracting the sector ID for barrel candidates from the data word.
static constexpr uint32_t ENDCAP_ROI_MASK
Mask for extracting the RoI for endcap candidates from the data words.
Definition MuCTPI_Bits.h:41
static constexpr uint32_t RUN3_CAND_TGC_GOODMF_SHIFT
Position of the bit specifying if RoI is in a good b-field region (1=good, 0=bad)
static constexpr uint32_t BARREL_ROI_MASK
new in v2
Definition MuCTPI_Bits.h:39
static constexpr uint32_t ENDCAP_OL_SHIFT
Position of the overlap bits in endcap data words.
Definition MuCTPI_Bits.h:59
static constexpr uint32_t CAND_VETO_SHIFT
static constexpr uint32_t RUN3_CAND_SECTOR_ADDRESS_SHIFT
Position of the muon candidate's address in the data word.
Definition MuCTPI_Bits.h:82
static constexpr uint32_t ROI_OVERFLOW_MASK
Mask for the bit showing if more than one muon candidates were in the sector RoI.
Definition MuCTPI_Bits.h:31
static constexpr uint32_t CAND_SECTOR_ADDRESS_SHIFT
Definition MuCTPI_Bits.h:83
static constexpr uint32_t CAND_PT_MASK
Definition MuCTPI_Bits.h:63
static constexpr uint32_t RUN3_CAND_TGC_INNERCOIN_SHIFT
Position of the bit specifying coincidence with inner detectors.
static constexpr uint32_t CAND_TGC_CHARGE_SIGN_SHIFT
static constexpr uint32_t RUN3_CAND_PT_SHIFT
Position of the pT threshold bits in the data words.
Definition MuCTPI_Bits.h:65
static constexpr uint32_t RUN3_CAND_WORD_CANDFLAGS_BA_PHIOVERLAP_SHIFT
static constexpr uint32_t BARREL_ETA_OL_MASK
Definition MuCTPI_Bits.h:52
static constexpr uint32_t ENDCAP_SECTORID_MASK
Mask for extracting the sector ID for endcap candidates from the data word.
static constexpr uint32_t BARREL_OL_SHIFT
Position of the overlap bits in barrel data words.
Definition MuCTPI_Bits.h:54
static constexpr uint32_t RUN3_CAND_WORD_CANDFLAGS_BA_PHIOVERLAP_MASK
static constexpr uint32_t CAND_HIGHEST_PT_SHIFT
Position of the "highest p<sub>T</sub>" bit.
static constexpr uint32_t ENDCAP_ADDRESS_MASK
Bit in the candidate's address turned on for endcap candidates.
Definition MuCTPI_Bits.h:87
static constexpr uint32_t BARREL_PHI_OL_MASK
Definition MuCTPI_Bits.h:51
static constexpr uint32_t CAND_PT_SHIFT
Definition MuCTPI_Bits.h:66
static constexpr uint32_t ROI_OVERFLOW_SHIFT
Definition MuCTPI_Bits.h:34
static constexpr uint32_t RUN3_CAND_TGC_CHARGE_SIGN_SHIFT
Position of the bit specifying the candidate's sign.
static constexpr uint32_t RUN3_CAND_SECTORID_SHIFT
static constexpr uint32_t RUN3_ROI_OVERFLOW_SHIFT
Position of the RoI overflow mask.
Definition MuCTPI_Bits.h:33
static constexpr uint32_t RUN3_CAND_TGC_BW2OR3_SHIFT
Position of the bit specifying 3-station coincidence from the big wheel.
static constexpr uint32_t RUN3_CAND_OVERFLOW_SHIFT
Position of the candidate overflow mask.
Definition MuCTPI_Bits.h:27
static constexpr uint32_t CAND_SECTORID_SHIFT
static constexpr uint32_t CAND_SECTOR_ADDRESS_MASK
Definition MuCTPI_Bits.h:78
static constexpr uint32_t FORWARD_ROI_MASK
Mask for extracting the RoI for forward candidates from the data words.
Definition MuCTPI_Bits.h:43
static constexpr uint32_t CAND_OVERFLOW_MASK
Mask for the bit showing if more than two muon candidates were in the trigger sector.
Definition MuCTPI_Bits.h:25
static constexpr uint32_t ROI_SHIFT
Definition MuCTPI_Bits.h:46
Forward declaration.
STL namespace.
ICaloAffectedTool is abstract interface for tools checking if 4 mom is in calo affected region.
AUXSTORE_PRIMITIVE_SETTER_AND_GETTER(BTagging_v1, float, IP2D_pb, setIP2D_pb) AUXSTORE_PRIMITIVE_SETTER_AND_GETTER(BTagging_v1
static const SG::AuxElement::Accessor< ElementLink< IParticleContainer > > acc("originalObjectLink")
Object used for setting/getting the dynamic decoration in question.
AUXSTORE_OBJECT_SETTER_AND_GETTER(CaloRings_v1, RingSetLinks, ringSetLinks, setRingSetLinks) unsigned CaloRings_v1
setEventNumber uint32_t
setThrValue roiExtraWord