Commit 70d156e8 authored by Frank Winklmeier's avatar Frank Winklmeier
Browse files

Merge branch 'TrackSummary_try_to_simplify_clean' into 'master'

Trk Track Summary. Use unique_ptr, default move ctors , tidy up the code

See merge request !44474
parents 0d2afd3d ad2b0557
......@@ -559,7 +559,7 @@ InDet::InDetTrackSummaryHelperTool::addDetailedTrackSummary(
return;
}
ATH_MSG_DEBUG("Adding detailed indet track summary");
delete summary.m_indetTrackSummary;
summary.m_indetTrackSummary.reset();
Trk::InDetTrackSummary* indetTrackSummary = new Trk::InDetTrackSummary();
Trk::InDetTrackSummary& trackSummary = *indetTrackSummary;
if (m_usePixel and not m_pixeldedxtool.empty() and
......@@ -582,7 +582,7 @@ InDet::InDetTrackSummaryHelperTool::addDetailedTrackSummary(
m_pixeldedxtool->getMass(ctx, dedx, p, ngoodhits);
}
}
summary.m_indetTrackSummary = indetTrackSummary;
summary.m_indetTrackSummary.reset(indetTrackSummary);
}
StatusCode
......
......@@ -368,7 +368,7 @@ void Muon::MuonTrackSummaryHelperTool::addDetailedTrackSummary(const Trk::Track&
// given that we cannot separate eta/phi holes, redo the assignment before moving to the next chamber
if (currentChamberSummary && !currentChamberSummary->isMdt()) { updateHoleContent(*currentChamberSummary); }
summary.m_muonTrackSummary = muonTrackSummary;
summary.m_muonTrackSummary.reset(muonTrackSummary);
}
void Muon::MuonTrackSummaryHelperTool::updateHoleContent(Trk::MuonTrackSummary::ChamberHitSummary& chamberHitSummary) const {
......
/*
Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
*/
#ifndef TRK_INDETTRACKSUMMARY_H
......@@ -11,45 +11,52 @@ class MsgStream;
class InDetTrackSummaryCnv_p1;
class TrackSummaryCnv_p2;
namespace InDet {
class InDetTrackSummaryHelperTool;
class InDetTrackSummaryHelperTool;
}
namespace Trk {
/**
Detailed track summary for the indet system
*/
class InDetTrackSummary {
public:
friend class InDet::InDetTrackSummaryHelperTool;
friend class ::InDetTrackSummaryCnv_p1;
friend class ::TrackSummaryCnv_p2;
/** default constructor */
InDetTrackSummary();
/** destructor */
~InDetTrackSummary();
/** access to the vector of likelihoods (pion/kaon/proton) */
const std::vector<float>& likelihoodsPixeldEdx() const { return m_likelihoodspixeldedx; }
/** access to mass calculated using pixel dEdx */
float massPixeldEdx() const { return m_massdedx; }
private:
std::vector<float> m_likelihoodspixeldedx; //<! vector with likelihoods
float m_massdedx; //<! mass calculated using pixel dEdx
};
/**
Detailed track summary for the indet system
*/
class InDetTrackSummary
{
public:
friend class InDet::InDetTrackSummaryHelperTool;
friend class ::InDetTrackSummaryCnv_p1;
friend class ::TrackSummaryCnv_p2;
/** default constructor */
InDetTrackSummary();
InDetTrackSummary(const InDetTrackSummary&) = default;
InDetTrackSummary(InDetTrackSummary&&) = default;
InDetTrackSummary& operator=(const InDetTrackSummary&) = default;
InDetTrackSummary& operator=(InDetTrackSummary&&) = default;
/** destructor */
~InDetTrackSummary() = default;
/** access to the vector of likelihoods (pion/kaon/proton) */
const std::vector<float>& likelihoodsPixeldEdx() const
{
return m_likelihoodspixeldedx;
}
/** access to mass calculated using pixel dEdx */
float massPixeldEdx() const { return m_massdedx; }
private:
std::vector<float> m_likelihoodspixeldedx; //<! vector with likelihoods
float m_massdedx; //<! mass calculated using pixel dEdx
};
/**output. This dumps the values of each of the possible summary enums*/
MsgStream& operator<<(MsgStream& out, const InDetTrackSummary& trackSum);
MsgStream&
operator<<(MsgStream& out, const InDetTrackSummary& trackSum);
/**output. This dumps the values of each of the possible summary enums*/
std::ostream& operator<<(std::ostream& out, const InDetTrackSummary& trackSum);
std::ostream&
operator<<(std::ostream& out, const InDetTrackSummary& trackSum);
}
#endif
/*
Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
*/
#ifndef TRK_MUONTRACKSUMMARY_H
......@@ -12,155 +12,158 @@ class MuonTrackSummaryCnv_p1;
class MuonTrackSummaryCnv_p2;
class TrackSummaryCnv_p2;
namespace Muon {
class MuonTrackSummaryHelperTool;
class MuonTrackSummaryHelperTool;
}
namespace Trk {
/**
Detailed track summary for the muon system
Give access to hit counts per chamber.
*/
class MuonTrackSummary {
public:
/**
Detailed track summary for the muon system
Give access to hit counts per chamber.
*/
class MuonTrackSummary
{
public:
friend class Muon::MuonTrackSummaryHelperTool;
/** structure to hold information per chamber in the muon system */
struct ChamberHitSummary
{
friend class Muon::MuonTrackSummaryHelperTool;
/** structure to hold information per chamber in the muon system */
struct ChamberHitSummary {
friend class Muon::MuonTrackSummaryHelperTool;
/** structure to hold the information for the eta/phi projection of RPC, TGC and CSC
chambers and per multilayer for MDT chambers */
struct Projection {
/** structure to hold the information for the eta/phi projection of RPC, TGC and CSC
chambers and per multilayer for MDT chambers */
struct Projection
{
Projection() {}
int nhits{0}; //<! number of hits on track in the projection
int nholes{0}; //<! number of holes in the projection
int noutliers{0}; //<! number of outliers in the projection
int ndeltas{0}; //<! number of delta electrons in the projection (only filled for MDT chambers)
int ncloseHits{0}; //<! number of hits within a road around the track in the projection
int ngoodHits{0}; //<! number of hits that matter for the track
int noutBounds{0}; //<! number of out-of-bounds hits
};
int nhits{ 0 }; //<! number of hits on track in the projection
int nholes{ 0 }; //<! number of holes in the projection
int noutliers{ 0 }; //<! number of outliers in the projection
int ndeltas{ 0 }; //<! number of delta electrons in the projection (only filled for MDT chambers)
int ncloseHits{ 0 }; //<! number of hits within a road around the track in the projection
int ngoodHits{ 0 }; //<! number of hits that matter for the track
int noutBounds{ 0 }; //<! number of out-of-bounds hits
};
/** constructor taking the Identifier of the chamber and a boolean whether we are dealing with a MDT chamber or not
(the boolean is passed as the ChamberHitSummary cannot unpack the identifier and it needs to know whether it is dealing
with a MDT chamber) */
ChamberHitSummary( Identifier chID, bool isMdtTube ) : m_chId(chID),m_isMdt(isMdtTube) {}
/** constructor taking the Identifier of the chamber and a boolean whether we are dealing with a MDT chamber or not
(the boolean is passed as the ChamberHitSummary cannot unpack the identifier and it needs to know whether it is
dealing with a MDT chamber) */
ChamberHitSummary(Identifier chID, bool isMdtTube)
: m_chId(chID)
, m_isMdt(isMdtTube)
{}
/** returns the chamber identifier */
const Identifier& chamberId() const { return m_chId; }
/** returns the chamber identifier */
const Identifier& chamberId() const { return m_chId; }
/** returns whether this is a MDT chamber */
bool isMdt() const { return m_isMdt; }
/** returns whether this is a MDT chamber */
bool isMdt() const { return m_isMdt; }
/** returns the total number of hits on track in the chamber */
int nhits() const { return m_first.nhits + m_second.nhits; }
/** returns the total number of hits on track in the chamber */
int nhits() const { return m_first.nhits + m_second.nhits; }
/** returns the total number of holes in the chamber */
int nholes() const { return m_first.nholes + m_second.nholes; }
/** returns the total number of holes in the chamber */
int nholes() const { return m_first.nholes + m_second.nholes; }
/** returns the total number of outliers in the chamber */
int noutliers() const { return m_first.noutliers + m_second.noutliers; }
/** returns the total number of outliers in the chamber */
int noutliers() const { return m_first.noutliers + m_second.noutliers; }
/** returns the total number of delta electrons in the chamber */
int ndeltas() const { return m_first.ndeltas + m_second.ndeltas; }
/** returns the total number of delta electrons in the chamber */
int ndeltas() const { return m_first.ndeltas + m_second.ndeltas; }
/** returns the total number of close hits in the chamber */
int ncloseHits() const { return m_first.ncloseHits + m_second.ncloseHits; }
/** returns the total number of close hits in the chamber */
int ncloseHits() const { return m_first.ncloseHits + m_second.ncloseHits; }
/** returns the number of non-deweighted hits in the chamber */
int ngoodHits() const { return m_first.ngoodHits + m_second.ngoodHits; }
/** returns the number of non-deweighted hits in the chamber */
int ngoodHits() const { return m_first.ngoodHits + m_second.ngoodHits; }
//returns the number of out of bounds hits
int noutBoundsHits() const { return m_first.noutBounds + m_second.noutBounds; }
// returns the number of out of bounds hits
int noutBoundsHits() const { return m_first.noutBounds + m_second.noutBounds; }
/** returns the total number of eta hits on track in the chamber */
int netaHits() const { return isMdt() ? nhits() : m_first.nhits; }
/** returns the total number of eta hits on track in the chamber */
int netaHits() const { return isMdt() ? nhits() : m_first.nhits; }
/** returns the total number of phi hits on track in the chamber */
int nphiHits() const { return isMdt() ? 0 : m_second.nhits; }
/** returns the total number of phi hits on track in the chamber */
int nphiHits() const { return isMdt() ? 0 : m_second.nhits; }
/** returns the total number of MDT hits on track in the first multi layer */
int nMdtHitsMl1() const { return isMdt() ? m_first.nhits : 0; }
/** returns the total number of MDT hits on track in the first multi layer */
int nMdtHitsMl1() const { return isMdt() ? m_first.nhits : 0; }
/** returns the total number of MDT hits on track in the second multi layer */
int nMdtHitsMl2() const { return isMdt() ? m_second.nhits : 0; }
/** returns the total number of MDT hits on track in the second multi layer */
int nMdtHitsMl2() const { return isMdt() ? m_second.nhits : 0; }
/** access to the data of the first MDT multi layer, users have to check whether this is a MDT chamber first!! */
const Projection& mdtMl1() const { return m_first; }
/** access to the data of the first MDT multi layer, users have to check whether this is a MDT chamber first!! */
const Projection& mdtMl1() const { return m_first; }
/** access to the data of the second MDT multi layer, users have to check whether this is a MDT chamber first!! */
const Projection& mdtMl2() const { return m_second; }
/** access to the data of the second MDT multi layer, users have to check whether this is a MDT chamber first!! */
const Projection& mdtMl2() const { return m_second; }
/** access to the data of the eta projection, users have to check whether this is NOT a MDT chamber first!! */
const Projection& etaProjection() const { return m_first; }
/** access to the data of the eta projection, users have to check whether this is NOT a MDT chamber first!! */
const Projection& etaProjection() const { return m_first; }
/** access to the data of the phi projection, users have to check whether this is NOT a MDT chamber first!! */
const Projection& phiProjection() const { return m_second; }
/** access to the data of the phi projection, users have to check whether this is NOT a MDT chamber first!! */
const Projection& phiProjection() const { return m_second; }
private:
friend class ::MuonTrackSummaryCnv_p1;
friend class ::MuonTrackSummaryCnv_p2;
friend class ::TrackSummaryCnv_p2;
private:
friend class ::MuonTrackSummaryCnv_p1;
friend class ::MuonTrackSummaryCnv_p2;
friend class ::TrackSummaryCnv_p2;
Identifier m_chId{ 0 }; //<! chamber identifier
bool m_isMdt{ false }; //<! is this a MDT chamber
Identifier m_chId{0}; //<! chamber identifier
bool m_isMdt{false}; //<! is this a MDT chamber
Projection m_first; //<! eta projections for cluster chambers, first multi layer for mdt chambers
Projection m_second; //<! phi projections for cluster chambers, first multi layer for mdt chambers
};
Projection m_first; //<! eta projections for cluster chambers, first multi layer for mdt chambers
Projection m_second; //<! phi projections for cluster chambers, first multi layer for mdt chambers
};
/** default constructor */
MuonTrackSummary();
/** default constructor */
MuonTrackSummary();
/** destructor */
~MuonTrackSummary();
/** number of eta hits on the track */
unsigned int netaHits() const;
/** destructor */
~MuonTrackSummary();
/** number of phi hits on the track */
unsigned int nphiHits() const;
/** number of eta hits on the track */
unsigned int netaHits() const;
/** number of eta trigger hits on the track */
unsigned int noutliers() const;
/** number of phi hits on the track */
unsigned int nphiHits() const;
/** number of holes on the track */
unsigned int nholes() const;
/** number of eta trigger hits on the track */
unsigned int noutliers() const;
/** number of holes on the track */
unsigned int ncloseHits() const;
/** number of holes on the track */
unsigned int nholes() const;
/** number of scattering centres on the track */
unsigned int nscatterers() const { return m_nscatterers; }
/** number of holes on the track */
unsigned int ncloseHits() const;
/** number of pseudo measurements on the track */
unsigned int npseudoMeasurements() const { return m_npseudoMeasurements; }
/** number of scattering centres on the track */
unsigned int nscatterers() const { return m_nscatterers; }
/** access to the vector of chamber hit summaries on the track */
const std::vector<ChamberHitSummary>& chamberHitSummary() const { return m_chamberHitSummary; }
/** number of pseudo measurements on the track */
unsigned int npseudoMeasurements() const { return m_npseudoMeasurements; }
private:
friend class ::MuonTrackSummaryCnv_p1;
friend class ::MuonTrackSummaryCnv_p2;
friend class ::TrackSummaryCnv_p2;
/** access to the vector of chamber hit summaries on the track */
const std::vector<ChamberHitSummary>& chamberHitSummary() const { return m_chamberHitSummary; }
unsigned int m_nscatterers; //<! number of scattering centres on the track
unsigned int m_npseudoMeasurements; //<! number of pseudomeasurements on the track
std::vector<ChamberHitSummary> m_chamberHitSummary; //<! vector with chamber hit summaries
private:
friend class ::MuonTrackSummaryCnv_p1;
friend class ::MuonTrackSummaryCnv_p2;
friend class ::TrackSummaryCnv_p2;
};
unsigned int m_nscatterers; //<! number of scattering centres on the track
unsigned int m_npseudoMeasurements; //<! number of pseudomeasurements on the track
std::vector<ChamberHitSummary> m_chamberHitSummary; //<! vector with chamber hit summaries
};
/**output. This dumps the values of each of the possible summary enums*/
MsgStream& operator<<(MsgStream& out, const MuonTrackSummary& trackSum);
MsgStream&
operator<<(MsgStream& out, const MuonTrackSummary& trackSum);
/**output. This dumps the values of each of the possible summary enums*/
std::ostream& operator<<(std::ostream& out, const MuonTrackSummary& trackSum);
std::ostream&
operator<<(std::ostream& out, const MuonTrackSummary& trackSum);
}
#endif
/*
Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
*/
/***************************************************************************
Summary.h - description
......@@ -8,331 +8,436 @@ begin : Tue Feb 17 2004
email : edward.moyse@cern.ch
***************************************************************************/
#ifndef TRKTRACKSUMMARY_H
#define TRKTRACKSUMMARY_H
#include <vector>
#include <iostream>
#include <bitset>
#include "TrkTrackSummary/InDetTrackSummary.h"
#include "TrkTrackSummary/MuonTrackSummary.h"
#include <atomic>
#include <bitset>
#include <iostream>
#include <memory>
#include <vector>
class MsgStream;
class TrackSummaryCnv_p1;
class TrackSummaryCnv_p2;
namespace InDet {
class InDetTrackSummaryHelperTool;
class InDetTrackSummaryHelperTool;
}
namespace Muon {
class MuonTrackSummaryHelperTool;
class MuonTrackSummaryHelperTool;
}
namespace Trk {
// forward declarations
class Track;
class TrackSummaryTool;
//forward declarations
class Track;
class InDetTrackSummary;
class MuonTrackSummary;
class TrackSummaryTool;
/** enumerates the different types of information stored in Summary. Use in get(const SummaryType type), for for example, summary.get(numOfPixelHits)
When adding a new transient information type, please make sure to increase numberOfTrackSummaryTypes.*/
enum SummaryType {
// --- Inner Detector
numberOfContribPixelLayers =29, //!< number of contributing layers of the pixel detector
numberOfBLayerHits = 0, //!< these are the hits in the first pixel layer, i.e. b-layer
numberOfBLayerOutliers =31, //!< number of blayer outliers
numberOfBLayerSharedHits =16, //!< number of Pixel b-layer hits shared by several tracks.
numberOfBLayerSplitHits =43, //!< number of Pixel b-layer hits split by cluster splitting
expectBLayerHit =42, //!< Do we expect a b-layer hit for this track?
expectInnermostPixelLayerHit =52, //!< Do we expect a 0th-layer hit for this track?
numberOfInnermostPixelLayerHits =53, //!< these are the hits in the 0th pixel layer?
numberOfInnermostPixelLayerOutliers =54, //!< number of 0th layer outliers
numberOfInnermostPixelLayerSharedHits =55, //!< number of Pixel 0th layer hits shared by several tracks.
numberOfInnermostLayerSplitHits =56, //!< number of Pixel 0th layer hits split by cluster splitting
expectNextToInnermostPixelLayerHit =57, //!< Do we expect a 1st-layer hit for this track?
numberOfNextToInnermostPixelLayerHits = 58, //!< these are the hits in the 1st pixel layer
numberOfNextToInnermostPixelLayerOutliers =59, //!< number of 1st pixel layer outliers
numberOfNextToInnermostPixelLayerSharedHits =60, //!< number of Pixel 1st layer hits shared by several tracks.
numberOfNextToInnermostLayerSplitHits =61, //!< number of Pixel 1st layer hits split by cluster splitting
numberOfPixelHits = 2, //!< these are the pixel hits, including the b-layer
numberOfPixelOutliers =41, //!< these are the pixel outliers, including the b-layer
numberOfPixelHoles = 1, //!< number of pixel layers on track with absence of hits
numberOfPixelSharedHits =17, //!< number of Pixel all-layer hits shared by several tracks.
numberOfPixelSplitHits =44, //!< number of Pixel all-layer hits split by cluster splitting
numberOfGangedPixels =14, //!< number of pixels which have a ganged ambiguity.
numberOfGangedFlaggedFakes =32, //!< number of Ganged Pixels flagged as fakes
numberOfPixelDeadSensors =33, //!< number of dead pixel sensors crossed
numberOfPixelSpoiltHits =35, //!< number of pixel hits with broad errors (width/sqrt(12))
numberOfDBMHits =63, //!< number of DBM Hits
numberOfSCTHits = 3, //!< number of hits in SCT
numberOfSCTOutliers =39, //!< number of SCT outliers
numberOfSCTHoles = 4, //!< number of SCT holes
numberOfSCTDoubleHoles =28, //!< number of Holes in both sides of a SCT module
numberOfSCTSharedHits =18, //!< number of SCT hits shared by several tracks.
numberOfSCTDeadSensors =34, //!< number of dead SCT sensors crossed
numberOfSCTSpoiltHits =36, //!< number of SCT hits with broad errors (width/sqrt(12))
numberOfTRTHits = 5, //!< number of TRT hits
numberOfTRTOutliers =19, //!< number of TRT outliers
numberOfTRTHoles =40, //!< number of TRT holes
numberOfTRTHighThresholdHits = 6, //!< number of TRT hits which pass the high threshold (only xenon counted)
numberOfTRTHighThresholdHitsTotal= 64,//!< total number of TRT hits which pass the high threshold
numberOfTRTHitsUsedFordEdx = 65, //!< number of TRT hits used for dE/dx computation
numberOfTRTHighThresholdOutliers=20, //!< number of TRT high threshold outliers (only xenon counted)
numberOfTRTDeadStraws =37, //!< number of dead TRT straws crossed
numberOfTRTTubeHits =38, //!< number of TRT tube hits
numberOfTRTXenonHits =46, //!< number of TRT hits on track in straws with xenon
numberOfTRTSharedHits =62, //!< number of TRT hits used by more than one track
// --- Muon Spectrometer
numberOfMdtHits = 7, //!< number of mdt hits
numberOfTgcPhiHits = 8, //!< tgc, rpc and csc measure both phi and eta coordinate
numberOfTgcEtaHits = 9,
numberOfCscPhiHits =10,
numberOfCscEtaHits =11,
numberOfRpcPhiHits =12,
numberOfRpcEtaHits =13,
numberOfCscEtaHoles =21, //! number of CSC Eta measurements missing from the track
numberOfCscPhiHoles =22, //! number of CSC Phi measurements missing from the track
numberOfRpcEtaHoles =23, //! number of RPC Eta measurements missing from the track
numberOfRpcPhiHoles =24, //! number of RPC Phi measurements missing from the track
numberOfMdtHoles =25, //! number of MDT measurements missing from the track
numberOfTgcEtaHoles =26, //! number of TGC Eta measurements missing from the track
numberOfTgcPhiHoles =27, //! number of TGC Phi measurements missing from the track
// New Small Wheel
numberOfStgcEtaHits =67, //! number of TGC Eta measurements missing from the track
numberOfStgcPhiHits =68, //! number of TGC Phi measurements missing from the track
numberOfMmHits =69, //! number of TGC Eta measurements missing from the track
numberOfStgcEtaHoles =70, //! number of TGC Eta measurements missing from the track
numberOfStgcPhiHoles =71, //! number of TGC Phi measurements missing from the track
numberOfMmHoles =72, //! number of TGC Eta measurements missing from the track
numberOfCscUnspoiltEtaHits =45, //! number of unspoilt CSC eta measurements (all CSC phi measurements are by definition spoilt). See Muon::CscClusterStatus for definitions of 'spoiled' hits.
numberOfGoodMdtHits =66, //!number of non-deweighted MDT hits. Only here as a placeholder, will be filled only on xAOD::Muon
// --- all
numberOfOutliersOnTrack =15, //!< number of measurements flaged as outliers in TSOS
standardDeviationOfChi2OS = 30, //!< 100 times the standard deviation of the chi2 from the surfaces
//reserved: added to keep synchronisation with xAOD::TrackSummary in anticipation of the two being merged
eProbabilityComb_res = 47, //!< Electron probability from combining the below probabilities [float].
eProbabilityHT_res = 48, //!< Electron probability from High Threshold (HT) information [float].
eProbabilityToT_res = 49, //!< Electron probability from Time-Over-Threshold (ToT) information [float].
eProbabilityBrem_res = 50, //!< Electron probability from Brem fitting (DNA) [float].
pixeldEdx_res = 51, //!< the dE/dx estimate, calculated using the pixel clusters [?]
eProbabilityNN_res = 73, //!< Electron probability from NN [float].
TRTTrackOccupancy_res = 74, //!< TRT track occupancy.
TRTdEdx_res = 75, //!< dEdx from TRT ToT measurement.
// -- numbers...
numberOfTrackSummaryTypes = 76
};
/** enumerates the different types of information stored in Summary. Use in
get(const SummaryType type), for for example, summary.get(numOfPixelHits) When
adding a new transient information type, please make sure to increase
numberOfTrackSummaryTypes.*/
enum SummaryType
{
// --- Inner Detector
//!< number of contributing layers of the pixel detector
numberOfContribPixelLayers = 29,
//!< these are the hits in the first pixel layer, i.e. b-layer
numberOfBLayerHits = 0,
//!< number of blayer outliers
numberOfBLayerOutliers = 31,
//!< number of Pixel b-layer hits shared by several tracks.
numberOfBLayerSharedHits = 16,
//!< number of Pixel b-layer hits split by cluster splitting
numberOfBLayerSplitHits = 43,
//!< Do we expect a b-layer hit for this track?
expectBLayerHit = 42,
//!< Do we expect a 0th-layer hit for this track?
expectInnermostPixelLayerHit = 52,
//!< these are the hits in the 0th pixel layer?
numberOfInnermostPixelLayerHits = 53,
//!< number of 0th layer outliers
numberOfInnermostPixelLayerOutliers = 54,
//!< number of Pixel 0th layer hits shared by several tracks.
numberOfInnermostPixelLayerSharedHits = 55,
//!< number of Pixel 0th layer hits split by cluster splitting
numberOfInnermostLayerSplitHits = 56,
//!< Do we expect a 1st-layer hit for this track?
expectNextToInnermostPixelLayerHit = 57,
//!< these are the hits in the 1st pixel layer
numberOfNextToInnermostPixelLayerHits = 58,
//!< number of 1st pixel layer outliers
numberOfNextToInnermostPixelLayerOutliers = 59,
//!< number of Pixel 1st layer hits shared by several tracks.
numberOfNextToInnermostPixelLayerSharedHits = 60,
//!< number of Pixel 1st layer hits split by cluster splitting
numberOfNextToInnermostLayerSplitHits = 61,
//!< these are the pixel hits, including the b-layer
numberOfPixelHits = 2,
//!< these are the pixel outliers, including the b-layer
numberOfPixelOutliers = 41,
//!< number of pixel layers on track with absence of hits
numberOfPixelHoles = 1,
//!< number of Pixel all-layer hits shared by several tracks.