Belle II Software development
EventLevelTrackingInfo Class Reference

Tracking-related info on event-level, for example number of unassigned measurements. More...

#include <EventLevelTrackingInfo.h>

Inheritance diagram for EventLevelTrackingInfo:

Public Member Functions

 EventLevelTrackingInfo ()=default
 default constructor
 
uint16_t getNCDCHitsNotAssigned () const
 Getter for number of CDC measurements, that are not assigned to any Track.
 
void setNCDCHitsNotAssigned (uint16_t const nCDCHitsNotAssigned)
 Setter for number of CDC measurements, that are not assigned to any Track.
 
uint16_t getNCDCHitsNotAssignedPostCleaning () const
 Getter for number of CDC measurements, that are not assigned to any Track nor very likely beam-background.
 
void setNCDCHitsNotAssignedPostCleaning (uint16_t const nCDCHitsNotAssignedPostCleaning)
 Setter for number of CDC measurements, that are not assigned to any Track nor very likely beam-background.
 
bool hasCDCLayer (uint16_t const cdcLayer) const
 Getter for presence of hit in specific CDC Layer.
 
void setCDCLayer (uint16_t const cdcLayer)
 Setter for presence of hit in specific CDC Layer.
 
bool hasCDCSLayer (uint16_t const cdcSLayer) const
 Getter for the presence of hit in a SuperLayer.
 
uint16_t getNCDCSegments () const
 Getter for number of segments not used in Tracks.
 
void setNCDCSegments (uint16_t nHits)
 Setter for number of Segments not used in Tracks.
 
uint16_t getNVXDClustersInLayer (uint16_t const layer, bool const isU)
 Getter for number of clusters in a specific VXD layer, SVD separated by direction.
 
uint16_t getNVXDClustersInLayer (uint16_t const layer)
 Getter for number of clusters in specific VXD layer, SVD directions are accumulated.
 
void setNVXDClustersInLayer (uint16_t const layer, bool const isU, uint16_t const nClusters)
 Setter for number of clusters in specific VXD layer, SVD directions are separated.
 
int8_t getSVDFirstSampleTime () const
 Getter for time of first SVD sample relative to event T0.
 
void setSVDFirstSampleTime (int8_t const sampleTime)
 Setter for time of first SVD sample relatvie to event T0.
 
bool hasAnErrorFlag () const
 Check if any flag was set in the event.
 
bool hasUnspecifiedTrackFindingFailure () const
 Getter for unspecified hint of track finding failure.
 
void setUnspecifiedTrackFindingFailure ()
 Setter for unspecified hint of track finding failure.
 
bool hasVXDTF2AbortionFlag () const
 Getter for flag indicating that the VXDTF2 was aborted due to high combinatorics in the event.
 
void setVXDTF2AbortionFlag ()
 Setter for flag indicating that the VXDTF2 was aborted due to high combinatorics in the event.
 
bool hasSVDCKFAbortionFlag () const
 Getter for flag indicating that the SVD CKF was aborted due to high combinatorics in the event.
 
void setSVDCKFAbortionFlag ()
 Setter for flag indicating that the SVD CKF was aborted due to high combinatorics in the event.
 
bool hasPXDCKFAbortionFlag () const
 Getter for flag indicating that the PXD CKF was aborted due to high combinatorics in the event.
 
void setPXDCKFAbortionFlag ()
 Setter for flag indicating that the PXD CKF was aborted due to high combinatorics in the event.
 
bool hasSVDSpacePointCreatorAbortionFlag () const
 Getter for flag indicating that the SVD Space Point Creator was aborted due to very busy event.
 
void setSVDSpacePointCreatorAbortionFlag ()
 Setter for flag indicating that the SVD Space Point Creator was aborted due to very busy event.
 

Private Types

enum  ETrackingErrorFlags {
  c_unspecifiedError = 0 ,
  c_vxdtf2Abortion = 1 ,
  c_svdckfAbortion = 2 ,
  c_pxdckfAbortion = 3 ,
  c_svdSpacePointAbortion = 4
}
 Enum to specify meaning of bits in m_flagBlock bitset. More...
 

Private Member Functions

 ClassDef (EventLevelTrackingInfo, 2)
 ROOTification.
 

Private Attributes

uint16_t m_nCDCHitsNotAssigned {0}
 Number of hits in the CDC, that were not assigned to any Track.
 
uint16_t m_nCDCHitsNotAssignedPostCleaning {0}
 Number of unassigned hits in the CDC, that survived the background filter.
 
uint64_t m_hitPatternCDCInitializer {0}
 Efficient way of storing, which layers in the CDC have at least a single hit.
 
uint16_t m_nPXDClusters [2] {0, 0}
 Storage for number of clusters in the PXD.
 
uint8_t m_nSVDClusters [8] {0, 0, 0, 0, 0, 0, 0, 0}
 Storage for number of clusters in the SVD.
 
int8_t m_sampleTime {0}
 storage for time of first SVD sample.
 
std::bitset< 16 > m_flagBlock
 Set of further flags useful in the context of tracking reconstruction.
 

Detailed Description

Tracking-related info on event-level, for example number of unassigned measurements.

This kind of information has various use-cases, e.g.

  • a large number of unassigned measurements can be a hint for unreconstructed charged particles;
  • a check, if background conditions are similar to e.g. off-resonance data etc. is possible;
  • possibly further merging, clone-removal, resolution estimation depending on this info may make sense;

Additionally, setters and getters for hints of track finding failure during an event are included in this object. If we have a reason to assume, that there was a track in the event, that we didn't find or the track finding process was affected in any way we set a flag, respectively, that might be useful for veto purposes. The covered causes for a failure coded in the member bitset m_flagBlock can be identified via the TrackingErrorFlags enum.

Definition at line 37 of file EventLevelTrackingInfo.h.

Member Enumeration Documentation

◆ ETrackingErrorFlags

enum ETrackingErrorFlags
private

Enum to specify meaning of bits in m_flagBlock bitset.

Enumerator
c_unspecifiedError 

Indicating a unspecified failure during track finding.

c_vxdtf2Abortion 

Indicating abortion of the VXDTF2 due to high combinatorics in the event.

c_svdckfAbortion 

Indicating abortion of the SVD CKF due to high combinatorics in the event.

c_pxdckfAbortion 

Indicating abortion of the PXD CKF due to high combinatorics in the event.

c_svdSpacePointAbortion 

Indicating abortion of the SVD Space Point Creator due to very busy event.

Definition at line 255 of file EventLevelTrackingInfo.h.

255 {
257 c_vxdtf2Abortion = 1,
258 c_svdckfAbortion = 2,
259 c_pxdckfAbortion = 3,
261 };
@ c_vxdtf2Abortion
Indicating abortion of the VXDTF2 due to high combinatorics in the event.
@ c_pxdckfAbortion
Indicating abortion of the PXD CKF due to high combinatorics in the event.
@ c_svdckfAbortion
Indicating abortion of the SVD CKF due to high combinatorics in the event.
@ c_unspecifiedError
Indicating a unspecified failure during track finding.
@ c_svdSpacePointAbortion
Indicating abortion of the SVD Space Point Creator due to very busy event.

Member Function Documentation

◆ getNCDCHitsNotAssigned()

uint16_t getNCDCHitsNotAssigned ( ) const
inline

Getter for number of CDC measurements, that are not assigned to any Track.

Definition at line 44 of file EventLevelTrackingInfo.h.

45 {
47 }
uint16_t m_nCDCHitsNotAssigned
Number of hits in the CDC, that were not assigned to any Track.

◆ getNCDCHitsNotAssignedPostCleaning()

uint16_t getNCDCHitsNotAssignedPostCleaning ( ) const
inline

Getter for number of CDC measurements, that are not assigned to any Track nor very likely beam-background.

CDC hits, that are close to each other are combined in clusters during the reconstruction, which are evaluated with respect to the likelihood to stem from beam-background and the like rather than from an interesting physics object. Before any real attempt to actually combine CDC hits into a track, a cut on the output of such a classifier is performed. Here we want to get only the number of those CDC hits, that survive that cut, but are then not used for an actual Track.

Definition at line 64 of file EventLevelTrackingInfo.h.

65 {
67 }
uint16_t m_nCDCHitsNotAssignedPostCleaning
Number of unassigned hits in the CDC, that survived the background filter.

◆ getNCDCSegments()

uint16_t getNCDCSegments ( ) const
inline

Getter for number of segments not used in Tracks.

During the CDC track finding, we search for segments within one superlayer. We want to store the number of segments, that we couldn't attach to any Track. The maximum number of unstored segments is 255.

Definition at line 106 of file EventLevelTrackingInfo.h.

107 {
108 return HitPatternCDC(m_hitPatternCDCInitializer).getNHits();
109 }
uint64_t m_hitPatternCDCInitializer
Efficient way of storing, which layers in the CDC have at least a single hit.

◆ getNVXDClustersInLayer() [1/2]

uint16_t getNVXDClustersInLayer ( uint16_t const  layer)
inline

Getter for number of clusters in specific VXD layer, SVD directions are accumulated.

Parameters
layer1 to 6 for respective VXD layer, for which you want to have the remaining clusters.

Definition at line 144 of file EventLevelTrackingInfo.h.

145 {
146 if (layer == 1 or layer == 2) {
147 return getNVXDClustersInLayer(layer, true);
148 }
149 return getNVXDClustersInLayer(layer, true) + getNVXDClustersInLayer(layer, false);
150 }
uint16_t getNVXDClustersInLayer(uint16_t const layer, bool const isU)
Getter for number of clusters in a specific VXD layer, SVD separated by direction.

◆ getNVXDClustersInLayer() [2/2]

uint16_t getNVXDClustersInLayer ( uint16_t const  layer,
bool const  isU 
)
inline

Getter for number of clusters in a specific VXD layer, SVD separated by direction.

All clusters, that have been part of a RecoTrack, that was converted into a Track, are removed. Only clusters, that in principle are considered valid, e.g. that are compatible with the event T0 are counted. The maximum number of clusters per layer and direction, that are considered in the SVD is 255.

Parameters
layer1 to 6 for respective VXD layer for which you want to have the remaining clusters.
isUonly used for layers 3 to 6, set true for u direction, false for v direction.

Definition at line 129 of file EventLevelTrackingInfo.h.

130 {
131 if (layer == 1 or layer == 2) {
132 return m_nPXDClusters[layer - 1];
133 }
134 if (layer > 2 and layer < 7) {
135 return m_nSVDClusters[layer - 3 + 4 * isU];
136 }
137 B2FATAL("The VXD only has layer 1 to 6, but you asked for " << layer);
138 }
uint16_t m_nPXDClusters[2]
Storage for number of clusters in the PXD.
uint8_t m_nSVDClusters[8]
Storage for number of clusters in the SVD.

◆ getSVDFirstSampleTime()

int8_t getSVDFirstSampleTime ( ) const
inline

Getter for time of first SVD sample relative to event T0.

An additional hint on the quality of the SVD reconstruction can be the time, at which the first sample point for the shape estimation was taken relative to the true T0 of the event. We assume, that the event type etc. that ultimately determines the total number of samples, that were taken, can be gotten from elsewhere. The minimum and maximum are -128 ns and 127 ns.

Definition at line 175 of file EventLevelTrackingInfo.h.

176 {
177 return m_sampleTime;
178 }
int8_t m_sampleTime
storage for time of first SVD sample.

◆ hasAnErrorFlag()

bool hasAnErrorFlag ( ) const
inline

Check if any flag was set in the event.

Definition at line 188 of file EventLevelTrackingInfo.h.

189 {
190 return m_flagBlock.any();
191 }
std::bitset< 16 > m_flagBlock
Set of further flags useful in the context of tracking reconstruction.

◆ hasCDCLayer()

bool hasCDCLayer ( uint16_t const  cdcLayer) const
inline

Getter for presence of hit in specific CDC Layer.

This information refers as well to the cleaned hits.

Parameters
cdcLayerSpecification, which layer in the CDC shall be tested for a hit.
Returns
true, if a non-assigned hit exists in the specified layer.

Definition at line 81 of file EventLevelTrackingInfo.h.

82 {
83 return HitPatternCDC(m_hitPatternCDCInitializer).hasLayer(cdcLayer);
84 }

◆ hasCDCSLayer()

bool hasCDCSLayer ( uint16_t const  cdcSLayer) const
inline

Getter for the presence of hit in a SuperLayer.

Definition at line 95 of file EventLevelTrackingInfo.h.

96 {
97 return HitPatternCDC(m_hitPatternCDCInitializer).hasSLayer(cdcSLayer);
98 }

◆ hasPXDCKFAbortionFlag()

bool hasPXDCKFAbortionFlag ( ) const
inline

Getter for flag indicating that the PXD CKF was aborted due to high combinatorics in the event.

Definition at line 230 of file EventLevelTrackingInfo.h.

231 {
233 }

◆ hasSVDCKFAbortionFlag()

bool hasSVDCKFAbortionFlag ( ) const
inline

Getter for flag indicating that the SVD CKF was aborted due to high combinatorics in the event.

Definition at line 218 of file EventLevelTrackingInfo.h.

219 {
221 }

◆ hasSVDSpacePointCreatorAbortionFlag()

bool hasSVDSpacePointCreatorAbortionFlag ( ) const
inline

Getter for flag indicating that the SVD Space Point Creator was aborted due to very busy event.

Definition at line 242 of file EventLevelTrackingInfo.h.

243 {
245 }

◆ hasUnspecifiedTrackFindingFailure()

bool hasUnspecifiedTrackFindingFailure ( ) const
inline

Getter for unspecified hint of track finding failure.

Definition at line 194 of file EventLevelTrackingInfo.h.

195 {
197 }

◆ hasVXDTF2AbortionFlag()

bool hasVXDTF2AbortionFlag ( ) const
inline

Getter for flag indicating that the VXDTF2 was aborted due to high combinatorics in the event.

Definition at line 206 of file EventLevelTrackingInfo.h.

207 {
209 }

◆ setCDCLayer()

void setCDCLayer ( uint16_t const  cdcLayer)
inline

Setter for presence of hit in specific CDC Layer.

Definition at line 87 of file EventLevelTrackingInfo.h.

88 {
89 HitPatternCDC hitPatternCDC(m_hitPatternCDCInitializer);
90 hitPatternCDC.setLayer(cdcLayer);
91 m_hitPatternCDCInitializer = hitPatternCDC.getInteger();
92 }

◆ setNCDCHitsNotAssigned()

void setNCDCHitsNotAssigned ( uint16_t const  nCDCHitsNotAssigned)
inline

Setter for number of CDC measurements, that are not assigned to any Track.

Definition at line 50 of file EventLevelTrackingInfo.h.

51 {
52 m_nCDCHitsNotAssigned = nCDCHitsNotAssigned;
53 }

◆ setNCDCHitsNotAssignedPostCleaning()

void setNCDCHitsNotAssignedPostCleaning ( uint16_t const  nCDCHitsNotAssignedPostCleaning)
inline

Setter for number of CDC measurements, that are not assigned to any Track nor very likely beam-background.

Definition at line 70 of file EventLevelTrackingInfo.h.

71 {
72 m_nCDCHitsNotAssignedPostCleaning = nCDCHitsNotAssignedPostCleaning;
73 }

◆ setNCDCSegments()

void setNCDCSegments ( uint16_t  nHits)
inline

Setter for number of Segments not used in Tracks.

Definition at line 112 of file EventLevelTrackingInfo.h.

113 {
114 HitPatternCDC hitPatternCDC(m_hitPatternCDCInitializer);
115 hitPatternCDC.setNHits(nHits);
116 m_hitPatternCDCInitializer = hitPatternCDC.getInteger();
117 }

◆ setNVXDClustersInLayer()

void setNVXDClustersInLayer ( uint16_t const  layer,
bool const  isU,
uint16_t const  nClusters 
)
inline

Setter for number of clusters in specific VXD layer, SVD directions are separated.

Definition at line 153 of file EventLevelTrackingInfo.h.

154 {
155 if (layer == 1 or layer == 2) {
156 m_nPXDClusters[layer - 1] = nClusters;
157 return;
158 }
159 if (layer > 2 and layer < 7) {
160 m_nSVDClusters[layer - 3 + 4 * isU] = std::min(nClusters, static_cast<unsigned short>(255U));
161 return;
162 }
163 B2FATAL("The VXD only has layer 1 to 6, but you asked for " << layer);
164 }

◆ setPXDCKFAbortionFlag()

void setPXDCKFAbortionFlag ( )
inline

Setter for flag indicating that the PXD CKF was aborted due to high combinatorics in the event.

Definition at line 236 of file EventLevelTrackingInfo.h.

237 {
239 }

◆ setSVDCKFAbortionFlag()

void setSVDCKFAbortionFlag ( )
inline

Setter for flag indicating that the SVD CKF was aborted due to high combinatorics in the event.

Definition at line 224 of file EventLevelTrackingInfo.h.

225 {
227 }

◆ setSVDFirstSampleTime()

void setSVDFirstSampleTime ( int8_t const  sampleTime)
inline

Setter for time of first SVD sample relatvie to event T0.

Definition at line 181 of file EventLevelTrackingInfo.h.

182 {
183 m_sampleTime = sampleTime;
184 }

◆ setSVDSpacePointCreatorAbortionFlag()

void setSVDSpacePointCreatorAbortionFlag ( )
inline

Setter for flag indicating that the SVD Space Point Creator was aborted due to very busy event.

Definition at line 248 of file EventLevelTrackingInfo.h.

249 {
251 }

◆ setUnspecifiedTrackFindingFailure()

void setUnspecifiedTrackFindingFailure ( )
inline

Setter for unspecified hint of track finding failure.

Definition at line 200 of file EventLevelTrackingInfo.h.

201 {
203 }

◆ setVXDTF2AbortionFlag()

void setVXDTF2AbortionFlag ( )
inline

Setter for flag indicating that the VXDTF2 was aborted due to high combinatorics in the event.

Definition at line 212 of file EventLevelTrackingInfo.h.

213 {
215 }

Member Data Documentation

◆ m_flagBlock

std::bitset<16> m_flagBlock
private

Set of further flags useful in the context of tracking reconstruction.

Definition at line 309 of file EventLevelTrackingInfo.h.

◆ m_hitPatternCDCInitializer

uint64_t m_hitPatternCDCInitializer {0}
private

Efficient way of storing, which layers in the CDC have at least a single hit.

Using indirectly the HitPatternCDC. However, as that object has internal data, that isn't supposed to be written out, we only store an initalizer integer. As we are expecting a larger number of hits, some functionality can't be used and the corresponding information is handled with speparate members. Instead we store the number of segments into the bits reserved for number of hits in the Track.

See also
HitPatternCDC

Definition at line 288 of file EventLevelTrackingInfo.h.

◆ m_nCDCHitsNotAssigned

uint16_t m_nCDCHitsNotAssigned {0}
private

Number of hits in the CDC, that were not assigned to any Track.

HitPatternCDC saves only up to 255 hits, as its primary use-case is the Track, but we we can easily have a larger number of hits, that are not assigned. Therefore, we save this as a separate number.

Definition at line 269 of file EventLevelTrackingInfo.h.

◆ m_nCDCHitsNotAssignedPostCleaning

uint16_t m_nCDCHitsNotAssignedPostCleaning {0}
private

Number of unassigned hits in the CDC, that survived the background filter.

During the pattern recognition, a cleaning of hits, that are very likely due to background is performed. Here we save only the number of unassinged hits, that survive that cut.

Definition at line 276 of file EventLevelTrackingInfo.h.

◆ m_nPXDClusters

uint16_t m_nPXDClusters[2] {0, 0}
private

Storage for number of clusters in the PXD.

We can store up to 65'535 cluster per layer here. This is slightly above the hardware readout limit, and therefore sufficient.

Definition at line 295 of file EventLevelTrackingInfo.h.

◆ m_nSVDClusters

uint8_t m_nSVDClusters[8] {0, 0, 0, 0, 0, 0, 0, 0}
private

Storage for number of clusters in the SVD.

We can store up to 255 clusters per layer and direction. Typically events are much below that, if not, the event is a noisy one. The first 4 numbers refer to u-direction strips, the second 4 to the v-direction.

Definition at line 303 of file EventLevelTrackingInfo.h.

◆ m_sampleTime

int8_t m_sampleTime {0}
private

storage for time of first SVD sample.

Definition at line 306 of file EventLevelTrackingInfo.h.


The documentation for this class was generated from the following file: