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->primaryTrackParticle(); 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 *m_muonAuthor = muonPointer->author();
243 *m_muonType = muonPointer->muonType();
244 *m_muonQuality = muonPointer->quality();
245 } // IF
246
247
248 // STORE ISOLATION ENERGIES
249 if(m_LevelOfDetails > 2){
250
251 if ( !muonPointer->isolation((*m_etcone20), Iso::IsolationType::etcone20 ) ) ATH_MSG_WARNING("No etcone20 defined");
252 if ( !muonPointer->isolation((*m_etcone30), Iso::IsolationType::etcone30 ) ) ATH_MSG_WARNING("No etcone30 defined");
253 if ( !muonPointer->isolation((*m_etcone40), Iso::IsolationType::etcone40 ) ) ATH_MSG_WARNING("No etcone40 defined");
254 if ( !muonPointer->isolation((*m_ptcone20), Iso::IsolationType::ptcone20 ) ) ATH_MSG_WARNING("No ptcone20 defined");
255 if ( !muonPointer->isolation((*m_ptcone30), Iso::IsolationType::ptcone30 ) ) ATH_MSG_WARNING("No ptcone30 defined");
256 if ( !muonPointer->isolation((*m_ptcone40), Iso::IsolationType::ptcone40 ) ) ATH_MSG_WARNING("No ptcone40 defined");
257 } // IF
258
259 if(m_LevelOfDetails > 1){
260
262 muonPointer->summaryValue( *uint8Ptr(m_numberOfPixelHits), xAOD::numberOfPixelHits );
263 muonPointer->summaryValue( *uint8Ptr(m_numberOfSCTHits), xAOD::numberOfSCTHits );
264 muonPointer->summaryValue( *uint8Ptr(m_numberOfTRTHits), xAOD::numberOfTRTHits );
267 muonPointer->summaryValue( *uint8Ptr(m_numberOfSCTHoles), xAOD::numberOfSCTHoles );
277
278/* //THIS NEEDS TO BE CONVERTED FOR xAODs AS IT IS ABOVE
279 // NUMBER OF HITS IN SUBDETECTORS
280 *m_numberOfMDTHits = muonPointer->numberOfMDTHits();
281 *m_numberOfMDTHoles = muonPointer->numberOfMDTHoles();
282 *m_numberOfCSCEtaHits = muonPointer->numberOfCSCEtaHits();
283 *m_numberOfCSCEtaHoles = muonPointer->numberOfCSCEtaHoles();
284 *m_numberOfCSCPhiHits = muonPointer->numberOfCSCPhiHits();
285 *m_numberOfCSCPhiHoles = muonPointer->numberOfCSCPhiHoles();
286 *m_numberOfRPCEtaHits = muonPointer->numberOfRPCEtaHits();
287 *m_numberOfRPCEtaHoles = muonPointer->numberOfRPCEtaHoles();
288 *m_numberOfRPCPhiHits = muonPointer->numberOfRPCPhiHits();
289 *m_numberOfRPCPhiHoles = muonPointer->numberOfRPCPhiHoles();
290 *m_numberOfTGCEtaHits = muonPointer->numberOfTGCEtaHits();
291 *m_numberOfTGCEtaHoles = muonPointer->numberOfTGCEtaHoles();
292 *m_numberOfTGCPhiHits = muonPointer->numberOfTGCPhiHits();
293 *m_numberOfTGCPhiHoles = muonPointer->numberOfTGCPhiHoles();
294 *m_numberOfGangedPixels = muonPointer->numberOfGangedPixels();
295 *m_numberOfOutliersOnTrack = muonPointer->numberOfOutliersOnTrack();
296 *m_numberOfTrackSummaryTypes = muonPointer->numberOfTrackSummaryTypes();
297*/
298 }
299
300
301 if(m_LevelOfDetails > 3){
303 auto perigee = m_trackToVertexTool->perigeeAtVertex(Gaudi::Hive::currentContext(), *muon_track);
304 *m_vtxX = perigee->parameters()[Trk::x];
305 *m_vtxY = perigee->parameters()[Trk::y];
306 *m_vtxZ = perigee->parameters()[Trk::z];
307 *m_d0 = perigee->parameters()[Trk::d0];
308 *m_z0 = perigee->parameters()[Trk::z0];
309 *m_phi0 = perigee->parameters()[Trk::phi0];
310 *m_theta = perigee->parameters()[Trk::theta];
311 *m_qOverP = perigee->parameters()[Trk::qOverP];
312 } // IF
313
314/* //THIST NEEDS TO MODIFY TO WORK ON xAODs
315 *m_matchChi2 = muonPointer->matchChi2();
316 *m_matchChi2OverDoF = muonPointer->matchChi2OverDoF();
317 *m_matchNumberDoF = muonPointer->matchNumberDoF();
318 *m_fitChi2 = muonPointer->fitChi2();
319 *m_fitNumberDoF = muonPointer->fitNumberDoF();
320 *m_fitChi2OverDoF = muonPointer->fitChi2OverDoF();
321 *m_bestMatch = muonPointer->bestMatch();
322 *m_isCorrected = muonPointer->isCorrected();
323*/
324 } // IF
325
326/* //THIS NEEDS TO MODIFY TO WORK ON xAODs
327 if(m_LevelOfDetails > 4){
328 // STORE MONTE CARLO TRUTH INFORMATION IF AVAILABLE
329 if(m_truthRetrieved.isSuccess() && m_MCtruth){
330 McEventCollection::const_iterator MCitr = m_MCtruth->begin();
331 HepMC::GenEvent::particle_const_iterator particle_itr = (*MCitr)->particles_begin();
332 HepMC::GenEvent::particle_const_iterator particle_eitr = (*MCitr)->particles_end();
333 for(;particle_itr!=particle_eitr;++particle_eitr){
334 HepMC::GenParticle* particle = *particle_itr;
335 if(abs(particle->pdg_id()) != 13) continue;
336 float deltaEta = fabs(*m_eta - particle->momentum().eta());
337 float deltaPhi = *m_phi - particle->momentum().phi();
338 deltaPhi = fabs(deltaPhi > M_PI ? deltaPhi - 2.*M_PI : ( deltaPhi < -M_PI ? deltaPhi + 2.*M_PI : deltaPhi ));
339 *m_truth_deltaR = sqrt(deltaEta*deltaEta + deltaPhi*deltaPhi);
340 *m_truth_vtxX = particle->production_vertex()->position().x();
341 *m_truth_vtxY = particle->production_vertex()->position().y();
342 *m_truth_vtxZ = particle->production_vertex()->position().z();
343 *m_truth_eta = particle->momentum().eta();
344 *m_truth_phi = particle->momentum().phi();
345 *m_truth_p = sqrt(particle->momentum().perp() * particle->momentum().perp() +
346 particle->momentum().z() * particle->momentum().z());
347 *m_truth_pT = particle->momentum().perp();
348 *m_truth_charge = particle->pdg_id();
349 } // FOR
350 } // IF
351 } // IF
352*/
353 return StatusCode::SUCCESS;
354} // TileMuonFillerTool::fill
355
356} // 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 — type-safe version.
unsigned short * m_numberOfMDTHits
ToolHandle< Reco::ITrackToVertex > m_trackToVertexTool
unsigned short * m_numberOfTGCPhiHoles
unsigned short * m_numberOfOutliersOnTrack
virtual double eta() const
The pseudorapidity ( ) of the particle.
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:105
const TrackParticle * primaryTrackParticle() const
Returns a pointer (which should not usually be NULL, but might be if the muon has been stripped of in...
Definition Muon_v1.cxx:396
virtual FourMom_t p4() const
The full 4-momentum of the particle.
Definition Muon_v1.cxx:71
Quality quality() const
Muon CP quality accessors.
Definition Muon_v1.cxx:220
virtual double phi() const
The azimuthal angle ( ) of the particle.
bool isolation(float &value, const Iso::IsolationType information) const
Accessor for Isolation values.
Definition Muon_v1.cxx:254
virtual double pt() const
The transverse momentum ( ) of the particle.
float charge() const
Author author() const
MuonType muonType() const
const TrackParticle * trackParticle(TrackParticleType type) const
Returns a pointer (which can be NULL) to the TrackParticle used in identification of this muon.
Definition Muon_v1.cxx:482
Block filler tool for noisy FEB information.
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].