2121#include " ReconstructionDataFormats/PrimaryVertex.h"
2222#include < array>
2323#include < vector>
24+ #include < bit>
2425
2526namespace o2 ::trackstudy
2627{
27- struct MCTrackInfo {
2828
29- inline float getMCTimeMUS () const { return bcInTF * o2::constants::lhc::LHCBunchSpacingMUS; }
30- inline bool hasITSHitOnLr (int i) const { return (pattITSCl & ((0x1 << i) & 0x7f )) != 0 ; }
29+ struct ITSTrackInfo {
30+ inline bool hasITSHitOnLr (int i) const { return (pattClITS & ((0x1 << i) & 0x7f )) != 0 ; }
3131 int getNITSClusCont () const ;
3232 int getNITSClusForAB () const ;
3333 int getLowestITSLayer () const ;
3434 int getHighestITSLayer () const ;
35+ int getNITSClusTrackable () const noexcept { return std::popcount (pattClITS); }
36+
37+ uint8_t nClITS = 0 ;
38+ uint8_t pattClITS = 0 ;
39+
40+ ClassDefNV (ITSTrackInfo, 1 );
41+ };
42+
43+ struct MCTrackInfo : public ITSTrackInfo {
44+ inline float getMCTimeMUS () const { return bcInTF * o2::constants::lhc::LHCBunchSpacingMUS; }
3545
3646 o2::track::TrackPar track{};
3747 o2::MCCompLabel label{};
@@ -41,21 +51,20 @@ struct MCTrackInfo {
4151 int pdg = 0 ;
4252 int pdgParent = 0 ;
4353 int parentEntry = -1 ;
44- int16_t nTPCCl = 0 ;
45- int16_t nTPCClShared = 0 ;
54+ uint16_t nTPCCl = 0 ;
55+ uint16_t nTPCClShared = 0 ;
4656 int8_t parentDecID = -1 ;
47- uint8_t minTPCRow = -1 ;
48- uint8_t maxTPCRow = 0 ;
57+ int8_t minTPCRow = -1 ;
58+ int8_t maxTPCRow = 0 ;
4959 uint8_t nUsedPadRows = 0 ;
5060 uint8_t maxTPCRowInner = 0 ; // highest row in the sector containing the lowest one
51- uint8_t minTPCRowSect = -1 ;
52- uint8_t maxTPCRowSect = -1 ;
53- int8_t nITSCl = 0 ;
54- int8_t pattITSCl = 0 ;
55- ClassDefNV (MCTrackInfo, 4 );
61+ int8_t minTPCRowSect = -1 ;
62+ int8_t maxTPCRowSect = -1 ;
63+ uint8_t nITSClInv = 0 ;
64+ ClassDefNV (MCTrackInfo, 5 );
5665};
5766
58- struct RecTrack {
67+ struct RecTrack : public ITSTrackInfo {
5968 enum FakeFlag {
6069 FakeITS = 0x1 << 0 ,
6170 FakeTPC = 0x1 << 1 ,
@@ -71,9 +80,7 @@ struct RecTrack {
7180 o2::MCEventLabel pvLabel{};
7281 short pvID = -1 ;
7382 uint8_t flags = 0 ;
74- uint8_t nClITS = 0 ;
7583 uint8_t nClTPC = 0 ;
76- uint8_t pattITS = 0 ;
7784 int8_t lowestPadRow = -1 ;
7885
7986 bool isFakeGLO () const { return flags & FakeGLO; }
@@ -83,7 +90,7 @@ struct RecTrack {
8390 bool isFakeTOF () const { return flags & FakeTOF; }
8491 bool isFakeITSTPC () const { return flags & FakeITSTPC; }
8592
86- ClassDefNV (RecTrack, 1 );
93+ ClassDefNV (RecTrack, 2 );
8794};
8895
8996struct TrackPairInfo {
0 commit comments