ATLAS Offline Software
Loading...
Searching...
No Matches
TileMuonFillerTool.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3*/
4
5/*
6 * File: TileMuonFillerTool.cxx
7 * Author: Marco van Woerden <mvanwoer@cern.ch>
8 * Date: September 2012
9 *
10 * Archil Durglishvili <Archil.Durglishvili@cern.ch>
11 * Date: October 2014
12 */
13
14// INCLUDE HEADER FILE
16#include "TileMuonFillerTool.h"
17
18// CALORIMETER INCLUDES
19#include "TileEvent/TileCell.h"
21
22// MONTE CARLO INCLUDES
25#include "AtlasHepMC/GenEvent.h"
26
27//xAOD tools
29using namespace xAOD;
30
31namespace{
32 uint8_t *
33 uint8Ptr(auto * pv){
34 return reinterpret_cast<uint8_t *>(pv);
35 }
36
37}
38
39// ADD TILEMUONTRACKFILLERTOOL TO D3PD NAMESPACE
40namespace D3PD{
41//=========================================================================
43 const std::string& name,
44 const IInterface* parent)
45 : D3PD::BlockFillerTool<xAOD::Muon> (type, name, parent),
46 m_trackInCalo("TrackTools"),
47 m_trackToVertexTool("Reco::TrackToVertex"){
48//=========================================================================
49// CONSTRUCTOR
50
51 TileMuonFillerTool::book().ignore(); // AVOID COVERITY WARNINGS
52
53 // TRACK EXTRAPOLATOR TOOL
54 declareProperty("TrackTools", m_trackInCalo);
55 declareProperty("TrackToVertexTool", m_trackToVertexTool, "tool to map track to vertex");
56 declareProperty("CellsName", m_calocellContainerName="SelectedCells" );
57 declareProperty("TruthInfo", m_MCeventCollection="TruthEvent");
58 declareProperty("DefaultValue", m_defaultValue=0, "Default value to which to set unfilled variables.");
59 declareProperty("LevelOfDetails", m_LevelOfDetails = 1);
60 declareProperty("TryStandAloneMuons", m_standalone = "no");
61 declareProperty("TrackType", m_trackType = 0);
62} // TileMuonFillerTool::TileMuonFillerTool
63
64//==========================================
66//==========================================
67 ATH_MSG_DEBUG("TileMuonFillerTool::initialize()");
69
70 //THIS NEEDS TO MODIFY TO WORK ON xAODs
71 // MONTE CARLO EVENT COLLECTION
72 m_truthRetrieved = evtStore()->retrieve(m_MCtruth,m_MCeventCollection);
73 if(m_truthRetrieved.isFailure()) if(m_LevelOfDetails > 6) ATH_MSG_ERROR("NO TRUTH INFORMATION");
74
75 // RETRIEVE CALORIMETER EXTRAPOLATION TOOLS
76 if(m_LevelOfDetails > 3){
77 if(m_trackInCalo.retrieve().isFailure() ) {
78 ATH_MSG_ERROR(" Cannot retrieve extrapolator in calorimeter properly. ");
79 } // IF
80 } // IF
81
82 if(m_LevelOfDetails > 3){
83 if(m_trackToVertexTool.retrieve().isFailure() ) {
84 ATH_MSG_ERROR(" Cannot retrieve vertex tool properly. ");
85 } // IF
86 } // IF
87
88
89 return StatusCode::SUCCESS;
90 } // TileMuonFillerTool::initialize
91
92//====================================
94//====================================
95 // MUON PARAMETERS
96 if(m_LevelOfDetails > 0){
100 CHECK( addVariable("pT", m_pT, "", m_defaultValue));
101 CHECK( addVariable("p", m_p, "", m_defaultValue));
102 CHECK( addVariable("charge", m_charge, "", m_defaultValue));
103 CHECK( addVariable("eta", m_eta, "", m_defaultValue));
104 CHECK( addVariable("phi", m_phi, "", m_defaultValue));
105 } // IF
106
107
108 // MUON HITS IN SUBDETECTORS
109 if(m_LevelOfDetails > 1){
110 // HIT NUMBERS IN SUBDETECTORS
111 CHECK( addVariable("numberOfInnermostPixelLayerHits", m_numberOfBLayerHits, "", m_defaultValue));
112 CHECK( addVariable("numberOfPixelHits", m_numberOfPixelHits, "", m_defaultValue));
113 CHECK( addVariable("numberOfSCTHits", m_numberOfSCTHits, "", m_defaultValue));
114 CHECK( addVariable("numberOfTRTHits", m_numberOfTRTHits, "", m_defaultValue));
115 CHECK( addVariable("numberOfTRTHighThresholdHits", m_numberOfTRTHighThresholdHits, "", m_defaultValue));
116 CHECK( addVariable("numberOfInnermostPixelLayerSharedHits", m_numberOfBLayerSharedHits, "", m_defaultValue));
117 CHECK( addVariable("numberOfPixelSharedHits", m_numberOfPixelSharedHits, "", m_defaultValue));
118 CHECK( addVariable("numberOfPixelHoles", m_numberOfPixelHoles, "", m_defaultValue));
119 CHECK( addVariable("numberOfSCTSharedHits", m_numberOfSCTSharedHits, "", m_defaultValue));
120 CHECK( addVariable("numberOfSCTHoles", m_numberOfSCTHoles, "", m_defaultValue));
121 CHECK( addVariable("numberOfTRTOutliers", m_numberOfTRTOutliers, "", m_defaultValue));
122 CHECK( addVariable("numberOfTRTHighThresholdOutliers", m_numberOfTRTHighThresholdOutliers, "", m_defaultValue));
123 CHECK( addVariable("numberOfMDTHits", m_numberOfMDTHits, "", m_defaultValue));
124 CHECK( addVariable("numberOfMDTHoles", m_numberOfMDTHoles, "", m_defaultValue));
125 CHECK( addVariable("numberOfCSCEtaHits", m_numberOfCSCEtaHits, "", m_defaultValue));
126 CHECK( addVariable("numberOfCSCEtaHoles", m_numberOfCSCEtaHoles, "", m_defaultValue));
127 CHECK( addVariable("numberOfCSCPhiHits", m_numberOfCSCPhiHits, "", m_defaultValue));
128 CHECK( addVariable("numberOfCSCPhiHoles", m_numberOfCSCPhiHoles, "", m_defaultValue));
129 CHECK( addVariable("numberOfRPCEtaHits", m_numberOfRPCEtaHits, "", m_defaultValue));
130 CHECK( addVariable("numberOfRPCEtaHoles", m_numberOfRPCEtaHoles, "", m_defaultValue));
131 CHECK( addVariable("numberOfRPCPhiHits", m_numberOfRPCPhiHits, "", m_defaultValue));
132 CHECK( addVariable("numberOfRPCPhiHoles", m_numberOfRPCPhiHoles, "", m_defaultValue));
133 CHECK( addVariable("numberOfTGCEtaHits", m_numberOfTGCEtaHits, "", m_defaultValue));
134 CHECK( addVariable("numberOfTGCEtaHoles", m_numberOfTGCEtaHoles, "", m_defaultValue));
135 CHECK( addVariable("numberOfTGCPhiHits", m_numberOfTGCPhiHits, "", m_defaultValue));
136 CHECK( addVariable("numberOfTGCPhiHoles", m_numberOfTGCPhiHoles, "", m_defaultValue));
137 CHECK( addVariable("numberOfGangedPixels", m_numberOfGangedPixels, "", m_defaultValue));
138 CHECK( addVariable("numberOfOutliersOnTrack", m_numberOfOutliersOnTrack, "", m_defaultValue));
139 CHECK( addVariable("numberOfTrackSummaryTypes", m_numberOfTrackSummaryTypes, "", m_defaultValue));
140 CHECK( addVariable("numberOfPixelDeadSensors", m_numberOfPixelDeadSensors, "", m_defaultValue));
141 CHECK( addVariable("numberOfSCTDeadSensors", m_numberOfSCTDeadSensors, "", m_defaultValue));
142 }
143
144 CHECK (book2());
145
146 return StatusCode::SUCCESS;
147} // TileMuonFillerTool::book
148
149
151{
152 if(m_LevelOfDetails > 2){
153 CHECK( addVariable("nucone10", m_nucone10, "", m_defaultValue));
154 CHECK( addVariable("nucone20", m_nucone20, "", m_defaultValue));
155 CHECK( addVariable("nucone30", m_nucone30, "", m_defaultValue));
156 CHECK( addVariable("nucone40", m_nucone40, "", m_defaultValue));
157 CHECK( addVariable("etcone10", m_etcone10, "", m_defaultValue));
158 CHECK( addVariable("etcone20", m_etcone20, "", m_defaultValue));
159 CHECK( addVariable("etcone30", m_etcone30, "", m_defaultValue));
160 CHECK( addVariable("etcone40", m_etcone40, "", m_defaultValue));
161 CHECK( addVariable("ptcone10", m_ptcone10, "", m_defaultValue));
162 CHECK( addVariable("ptcone20", m_ptcone20, "", m_defaultValue));
163 CHECK( addVariable("ptcone30", m_ptcone30, "", m_defaultValue));
164 CHECK( addVariable("ptcone40", m_ptcone40, "", m_defaultValue));
165 } // IF
166
167
168 if(m_LevelOfDetails > 3){
169 CHECK( addVariable("vtxX", m_vtxX, "", m_defaultValue));
170 CHECK( addVariable("vtxY", m_vtxY, "", m_defaultValue));
171 CHECK( addVariable("vtxZ", m_vtxZ, "", m_defaultValue));
172 CHECK( addVariable("d0", m_d0, "", m_defaultValue));
173 CHECK( addVariable("z0", m_z0, "", m_defaultValue));
174 CHECK( addVariable("phi0", m_phi0, "", m_defaultValue));
175 CHECK( addVariable("theta", m_theta, "", m_defaultValue));
176 CHECK( addVariable("qOverP", m_qOverP, "", m_defaultValue));
177
178 CHECK( addVariable("matchChi2", m_matchChi2, "", m_defaultValue));
179 CHECK( addVariable("matchChi2OverDoF", m_matchChi2OverDoF, "", m_defaultValue));
180 CHECK( addVariable("matchNumberDoF", m_matchNumberDoF, "", m_defaultValue));
181 CHECK( addVariable("fitChi2", m_fitChi2, "", m_defaultValue));
182 CHECK( addVariable("fitNumberDoF", m_fitNumberDoF, "", m_defaultValue));
183 CHECK( addVariable("fitChi2OverDoF", m_fitChi2OverDoF, "", m_defaultValue));
184 CHECK( addVariable("bestMatch", m_bestMatch, "", m_defaultValue));
185 CHECK( addVariable("isCorrected", m_isCorrected, "", m_defaultValue));
186 } // IF
187
188 if(m_LevelOfDetails > 4){
189 if(m_truthRetrieved.isSuccess() && m_MCtruth){
190 CHECK( addVariable("truth_deltaR", m_truth_deltaR, "", m_defaultValue));
191 CHECK( addVariable("truth_vtxX", m_truth_vtxX, "", m_defaultValue));
192 CHECK( addVariable("truth_vtxY", m_truth_vtxY, "", m_defaultValue));
193 CHECK( addVariable("truth_vtxZ", m_truth_vtxZ, "", m_defaultValue));
194 CHECK( addVariable("truth_eta", m_truth_eta, "", m_defaultValue));
195 CHECK( addVariable("truth_phi", m_truth_phi, "", m_defaultValue));
196 CHECK( addVariable("truth_p", m_truth_p, "", m_defaultValue));
197 CHECK( addVariable("truth_pT", m_truth_pT, "", m_defaultValue));
198 CHECK( addVariable("truth_charge", m_truth_charge, "", m_defaultValue));
199 CHECK( addVariable("truth_mass", m_truth_mass, "", m_defaultValue));
200 } // IF
201 } // IF
202
203 return StatusCode::SUCCESS;
204}
205
206
207//===========================================================
209//===========================================================
210
211 ATH_MSG_DEBUG("TileMuonFillerTool::fill()");
212
213 // RETRIEVE APPROPRIATE POINTERS
214 const xAOD::Muon* muonPointer = &p;
215
216 if(!muonPointer) { ATH_MSG_INFO("NULL POINTER"); return StatusCode::RECOVERABLE; }
217
224 const xAOD::TrackParticle* muon_track = 0;
225 switch(m_trackType)
226 {
227 case 0: muon_track = muonPointer->trackParticle(xAOD::Muon::CombinedTrackParticle); break;
228 case 1: muon_track = muonPointer->trackParticle(xAOD::Muon::InnerDetectorTrackParticle); break;
229 case 2: muon_track = muonPointer->trackParticle(xAOD::Muon::MuonSpectrometerTrackParticle); break;
230 default: muon_track = muonPointer->trackParticle(xAOD::Muon::TrackParticleType::Primary); break;
231 } // SWITCH
232
233 if( !muon_track ){ return StatusCode::SUCCESS; }
234
235 // MUON TRACK PARAMETERS
236 if(m_LevelOfDetails > 0){
237 *m_pT = muonPointer->pt();
238 *m_p = muonPointer->p4().P();
239 *m_charge = muonPointer->charge();
240 *m_eta = muonPointer->eta();
241 *m_phi = muonPointer->phi();
242 using namespace Muon::MuonStationIndex;
243 *m_muonAuthor = toInt(muonPointer->author());
244 *m_muonType = toInt(muonPointer->muonType());
245 *m_muonQuality = toInt(muonPointer->quality());
246 } // IF
247
248
249 // STORE ISOLATION ENERGIES
250 if(m_LevelOfDetails > 2){
251
252 if ( !muonPointer->isolation((*m_etcone20), Iso::IsolationType::etcone20 ) ) ATH_MSG_WARNING("No etcone20 defined");
253 if ( !muonPointer->isolation((*m_etcone30), Iso::IsolationType::etcone30 ) ) ATH_MSG_WARNING("No etcone30 defined");
254 if ( !muonPointer->isolation((*m_etcone40), Iso::IsolationType::etcone40 ) ) ATH_MSG_WARNING("No etcone40 defined");
255 if ( !muonPointer->isolation((*m_ptcone20), Iso::IsolationType::ptcone20 ) ) ATH_MSG_WARNING("No ptcone20 defined");
256 if ( !muonPointer->isolation((*m_ptcone30), Iso::IsolationType::ptcone30 ) ) ATH_MSG_WARNING("No ptcone30 defined");
257 if ( !muonPointer->isolation((*m_ptcone40), Iso::IsolationType::ptcone40 ) ) ATH_MSG_WARNING("No ptcone40 defined");
258 } // IF
259
260 if(m_LevelOfDetails > 1){
261
263 muonPointer->summaryValue( *uint8Ptr(m_numberOfPixelHits), xAOD::numberOfPixelHits );
264 muonPointer->summaryValue( *uint8Ptr(m_numberOfSCTHits), xAOD::numberOfSCTHits );
265 muonPointer->summaryValue( *uint8Ptr(m_numberOfTRTHits), xAOD::numberOfTRTHits );
268 muonPointer->summaryValue( *uint8Ptr(m_numberOfSCTHoles), xAOD::numberOfSCTHoles );
278
279/* //THIS NEEDS TO BE CONVERTED FOR xAODs AS IT IS ABOVE
280 // NUMBER OF HITS IN SUBDETECTORS
281 *m_numberOfMDTHits = muonPointer->numberOfMDTHits();
282 *m_numberOfMDTHoles = muonPointer->numberOfMDTHoles();
283 *m_numberOfCSCEtaHits = muonPointer->numberOfCSCEtaHits();
284 *m_numberOfCSCEtaHoles = muonPointer->numberOfCSCEtaHoles();
285 *m_numberOfCSCPhiHits = muonPointer->numberOfCSCPhiHits();
286 *m_numberOfCSCPhiHoles = muonPointer->numberOfCSCPhiHoles();
287 *m_numberOfRPCEtaHits = muonPointer->numberOfRPCEtaHits();
288 *m_numberOfRPCEtaHoles = muonPointer->numberOfRPCEtaHoles();
289 *m_numberOfRPCPhiHits = muonPointer->numberOfRPCPhiHits();
290 *m_numberOfRPCPhiHoles = muonPointer->numberOfRPCPhiHoles();
291 *m_numberOfTGCEtaHits = muonPointer->numberOfTGCEtaHits();
292 *m_numberOfTGCEtaHoles = muonPointer->numberOfTGCEtaHoles();
293 *m_numberOfTGCPhiHits = muonPointer->numberOfTGCPhiHits();
294 *m_numberOfTGCPhiHoles = muonPointer->numberOfTGCPhiHoles();
295 *m_numberOfGangedPixels = muonPointer->numberOfGangedPixels();
296 *m_numberOfOutliersOnTrack = muonPointer->numberOfOutliersOnTrack();
297 *m_numberOfTrackSummaryTypes = muonPointer->numberOfTrackSummaryTypes();
298*/
299 }
300
301
302 if(m_LevelOfDetails > 3){
304 auto perigee = m_trackToVertexTool->perigeeAtVertex(Gaudi::Hive::currentContext(), *muon_track);
305 *m_vtxX = perigee->parameters()[Trk::x];
306 *m_vtxY = perigee->parameters()[Trk::y];
307 *m_vtxZ = perigee->parameters()[Trk::z];
308 *m_d0 = perigee->parameters()[Trk::d0];
309 *m_z0 = perigee->parameters()[Trk::z0];
310 *m_phi0 = perigee->parameters()[Trk::phi0];
311 *m_theta = perigee->parameters()[Trk::theta];
312 *m_qOverP = perigee->parameters()[Trk::qOverP];
313 } // IF
314
315/* //THIST NEEDS TO MODIFY TO WORK ON xAODs
316 *m_matchChi2 = muonPointer->matchChi2();
317 *m_matchChi2OverDoF = muonPointer->matchChi2OverDoF();
318 *m_matchNumberDoF = muonPointer->matchNumberDoF();
319 *m_fitChi2 = muonPointer->fitChi2();
320 *m_fitNumberDoF = muonPointer->fitNumberDoF();
321 *m_fitChi2OverDoF = muonPointer->fitChi2OverDoF();
322 *m_bestMatch = muonPointer->bestMatch();
323 *m_isCorrected = muonPointer->isCorrected();
324*/
325 } // IF
326
327/* //THIS NEEDS TO MODIFY TO WORK ON xAODs
328 if(m_LevelOfDetails > 4){
329 // STORE MONTE CARLO TRUTH INFORMATION IF AVAILABLE
330 if(m_truthRetrieved.isSuccess() && m_MCtruth){
331 McEventCollection::const_iterator MCitr = m_MCtruth->begin();
332 HepMC::GenEvent::particle_const_iterator particle_itr = (*MCitr)->particles_begin();
333 HepMC::GenEvent::particle_const_iterator particle_eitr = (*MCitr)->particles_end();
334 for(;particle_itr!=particle_eitr;++particle_eitr){
335 HepMC::GenParticle* particle = *particle_itr;
336 if(abs(particle->pdg_id()) != 13) continue;
337 float deltaEta = fabs(*m_eta - particle->momentum().eta());
338 float deltaPhi = *m_phi - particle->momentum().phi();
339 deltaPhi = fabs(deltaPhi > M_PI ? deltaPhi - 2.*M_PI : ( deltaPhi < -M_PI ? deltaPhi + 2.*M_PI : deltaPhi ));
340 *m_truth_deltaR = sqrt(deltaEta*deltaEta + deltaPhi*deltaPhi);
341 *m_truth_vtxX = particle->production_vertex()->position().x();
342 *m_truth_vtxY = particle->production_vertex()->position().y();
343 *m_truth_vtxZ = particle->production_vertex()->position().z();
344 *m_truth_eta = particle->momentum().eta();
345 *m_truth_phi = particle->momentum().phi();
346 *m_truth_p = sqrt(particle->momentum().perp() * particle->momentum().perp() +
347 particle->momentum().z() * particle->momentum().z());
348 *m_truth_pT = particle->momentum().perp();
349 *m_truth_charge = particle->pdg_id();
350 } // FOR
351 } // IF
352 } // IF
353*/
354 return StatusCode::SUCCESS;
355} // TileMuonFillerTool::fill
356
357} // namespace D3PD
#define ATH_MSG_ERROR(x)
#define ATH_MSG_INFO(x)
#define ATH_MSG_WARNING(x)
#define ATH_MSG_DEBUG(x)
#define CHECK(...)
Evaluate an expression and check for errors.
virtual StatusCode addVariable(const std::string &name, const std::type_info &ti, void *&ptr, const std::string &docstring="", const void *defval=0)
Type-safe wrapper for block filler tools.
unsigned short * m_numberOfCSCPhiHits
unsigned short * m_numberOfTrackSummaryTypes
unsigned short * m_numberOfGangedPixels
unsigned short * m_numberOfSCTHits
unsigned short * m_numberOfCSCEtaHits
unsigned short * m_numberOfBLayerSharedHits
unsigned short * m_numberOfSCTDeadSensors
unsigned short * m_numberOfSCTSharedHits
unsigned short * m_numberOfSCTHoles
unsigned short * m_numberOfTRTHighThresholdHits
ToolHandle< ITrackTools > m_trackInCalo
unsigned short * m_numberOfPixelDeadSensors
const McEventCollection * m_MCtruth
unsigned short * m_numberOfTGCPhiHits
unsigned short * m_numberOfPixelHits
unsigned short * m_numberOfCSCPhiHoles
unsigned short * m_numberOfTRTHighThresholdOutliers
unsigned short * m_numberOfRPCEtaHits
unsigned short * m_numberOfCSCEtaHoles
TileMuonFillerTool(const std::string &type, const std::string &name, const IInterface *parent)
unsigned short * m_numberOfBLayerHits
virtual StatusCode initialize()
unsigned short * m_numberOfPixelHoles
unsigned short * m_numberOfTRTOutliers
unsigned short * m_numberOfTGCEtaHoles
virtual StatusCode book()
Declare tuple variables.
unsigned short * m_numberOfTRTHits
unsigned short * m_numberOfRPCEtaHoles
unsigned short * m_numberOfPixelSharedHits
unsigned short * m_numberOfMDTHoles
unsigned short * m_numberOfTGCEtaHits
unsigned short * m_numberOfRPCPhiHits
unsigned short * m_numberOfRPCPhiHoles
virtual StatusCode fill(const xAOD::Muon &p)
Fill one block.
unsigned short * m_numberOfMDTHits
ToolHandle< Reco::ITrackToVertex > m_trackToVertexTool
unsigned short * m_numberOfTGCPhiHoles
unsigned short * m_numberOfOutliersOnTrack
bool summaryValue(uint8_t &value, const SummaryType information) const
Accessor for TrackSummary values (in most cases, retrieved from the 'primary' TrackParticle - though ...
Definition Muon_v1.cxx:118
virtual double pt() const override
The transverse momentum ( ) of the particle.
virtual double eta() const override
The pseudorapidity ( ) of the particle.
bool isolation(float &value, const Iso::IsolationType information) const
Accessor for Isolation values.
Definition Muon_v1.cxx:257
const TrackParticle * trackParticle(TrackParticleType type) const
Returns a pointer (which can be a nullptr) to the TrackParticle used in identification of this muon.
Definition Muon_v1.cxx:423
virtual double phi() const override
The azimuthal angle ( ) of the particle.
float charge() const
virtual FourMom_t p4() const override
The full 4-momentum of the particle.
Definition Muon_v1.cxx:84
Quality quality() const
Muon CP quality accessors.
Definition Muon_v1.cxx:228
Author author() const
MuonType muonType() const
Block filler tool for noisy FEB information.
constexpr int toInt(const EnumType enumVal)
NRpcCablingAlg reads raw condition data and writes derived condition data to the condition store.
@ x
Definition ParamDefs.h:55
@ z
global position (cartesian)
Definition ParamDefs.h:57
@ phi0
Definition ParamDefs.h:65
@ theta
Definition ParamDefs.h:66
@ qOverP
perigee
Definition ParamDefs.h:67
@ y
Definition ParamDefs.h:56
@ d0
Definition ParamDefs.h:63
@ z0
Definition ParamDefs.h:64
@ etcone20
Calorimeter isolation.
@ ptcone20
Track isolation.
ICaloAffectedTool is abstract interface for tools checking if 4 mom is in calo affected region.
TrackParticle_v1 TrackParticle
Reference the current persistent version:
Muon_v1 Muon
Reference the current persistent version:
@ numberOfPixelHoles
number of pixel layers on track with absence of hits [unit8_t].
@ numberOfTRTHighThresholdOutliers
number of TRT high threshold outliers (only xenon counted) [unit8_t].
@ numberOfInnermostPixelLayerSharedHits
number of Pixel 0th layer barrel hits shared by several tracks.
@ numberOfTRTHits
number of TRT hits [unit8_t].
@ numberOfSCTDeadSensors
number of dead SCT sensors crossed [unit8_t].
@ numberOfSCTHits
number of hits in SCT [unit8_t].
@ numberOfInnermostPixelLayerHits
these are the hits in the 0th pixel barrel layer
@ numberOfPixelHits
these are the pixel hits, including the b-layer [unit8_t].
@ numberOfPixelSharedHits
number of Pixel all-layer hits shared by several tracks [unit8_t].
@ numberOfSCTSharedHits
number of SCT hits shared by several tracks [unit8_t].
@ numberOfTRTHighThresholdHits
number of TRT hits which pass the high threshold (only xenon counted) [unit8_t].
@ numberOfTRTOutliers
number of TRT outliers [unit8_t].
@ numberOfPixelDeadSensors
number of dead pixel sensors crossed [unit8_t].
@ numberOfSCTHoles
number of SCT holes [unit8_t].