-
Notifications
You must be signed in to change notification settings - Fork 184
/
TrkrTruthTrackv1.cc
88 lines (78 loc) · 2.12 KB
/
TrkrTruthTrackv1.cc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
/**
* @file g4tpc/TrkrTruthTrackv1.cc
* @author D. Stewart
* @date September 2022
* @brief Version 1 of TrkrTruthTrack
*/
#include "TrkrTruthTrackv1.h"
#include <g4main/PHG4Particle.h>
#include <g4main/PHG4VtxPoint.h>
#include <TLorentzVector.h>
#include <cmath>
void TrkrTruthTrackv1::identify(std::ostream& os) const
{
os << " TrkrTruthTrack: " << std::endl
<< " trackid(" << trackid << ") [X0,Y0,Z0](" << X0 << "," << Y0 << "," << Z0 << ") "
<< " [pseudorapidity,pt,phi](" << pseudoRapidity << "," << pt << "," << phi << ")" << std::endl;
os << " Clusters HitSetKey(layer) : " << std::endl
<< " ";
int cnt = 0;
for (auto cluster : clusters)
{
if (cnt == 8)
{
cnt = 0;
os << std::endl
<< " ";
}
if (cnt > 0)
{
os << ", ";
}
uint32_t i_hitsetkey = TrkrDefs::getHitSetKeyFromClusKey(cluster);
int layer = TrkrDefs::getLayer(cluster);
os << " " << i_hitsetkey << "(" << layer << ")";
++cnt;
}
if (cnt != 0)
{
os << std::endl;
}
}
TrkrTruthTrackv1::TrkrTruthTrackv1(unsigned int _trackid, PHG4Particle* p, PHG4VtxPoint* vtx)
: trackid{_trackid}
, clusters{}
{
X0 = vtx->get_x();
Y0 = vtx->get_y();
Z0 = vtx->get_z();
TLorentzVector v1;
v1.SetPxPyPzE(p->get_px(), p->get_py(), p->get_pz(), p->get_e());
phi = v1.Phi();
pseudoRapidity = v1.PseudoRapidity();
pt = v1.Pt();
}
void TrkrTruthTrackv1::addCluster(TrkrDefs::cluskey key)
{
clusters.push_back(key);
}
bool TrkrTruthTrackv1::has_hitsetkey(TrkrDefs::hitsetkey key) const
{
return std::binary_search(clusters.begin(), clusters.end(), key, CompHitSetKey());
}
bool TrkrTruthTrackv1::has_hitsetkey(TrkrDefs::cluskey key) const
{
return std::binary_search(clusters.begin(), clusters.end(), key, CompHitSetKey());
}
std::pair<bool, TrkrDefs::cluskey> TrkrTruthTrackv1::get_cluskey(TrkrDefs::hitsetkey hitsetkey) const
{
auto lb = std::lower_bound(clusters.begin(), clusters.end(), hitsetkey, CompHitSetKey());
if (lb == clusters.end() || TrkrDefs::getHitSetKeyFromClusKey(*lb) != hitsetkey)
{
return {false, 0.};
}
else
{
return {true, *lb};
}
}