Newer
Older
#ifndef CLUPATRA_TRACKINGHELPER
#define CLUPATRA_TRACKINGHELPER
#include "edm4hep/TrackState.h"
#include "edm4hep/Track.h"
#include "UTIL/BitField64.h"
#include "UTIL/CellIDDecoder.h"
#include "UTIL/ILDConf.h"
#include "lcio.h"
inline bool hasTrackStateAt(edm4hep::ConstTrack track, int location) {
for (auto it = track.trackStates_begin(); it != track.trackStates_end(); it++) {
if (it->location == location) {
return true;
}
}
return false;
}
inline edm4hep::TrackState getTrackStateAt(edm4hep::ConstTrack track, int location) {
for (auto it = track.trackStates_begin(); it != track.trackStates_end(); it++) {
if (it->location == location) {
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
}
}
return edm4hep::TrackState();
}
inline float getTanLambda(const edm4hep::ConstTrack &track) {
return track.getTrackStates(0).tanLambda;
}
inline float getOmega(const edm4hep::ConstTrack &track) {
return track.getTrackStates(0).omega;
}
inline float getD0(const edm4hep::ConstTrack &track) {
return track.getTrackStates(0).D0;
}
inline float getZ0(const edm4hep::ConstTrack &track) {
return track.getTrackStates(0).Z0;
}
inline float getPhi(const edm4hep::ConstTrack &track) {
return track.getTrackStates(0).phi;
}
inline int getLayer(const edm4hep::TrackerHit hit) {
UTIL::BitField64* _encoder = new UTIL::BitField64(lcio::ILDCellID0::encoder_string);
_encoder->setValue(hit.getCellID());
int layer = (*_encoder)[lcio::ILDCellID0::layer];
delete _encoder;
return layer;
}
inline int getLayer(const edm4hep::ConstTrackerHit hit) {
UTIL::BitField64* _encoder = new UTIL::BitField64(lcio::ILDCellID0::encoder_string);
_encoder->setValue(hit.getCellID());
int layer = (*_encoder)[lcio::ILDCellID0::layer];
delete _encoder;
return layer;
}
#endif