File indexing completed on 2025-08-05 08:18:19
0001
0002
0003
0004
0005
0006
0007 #include "TrkrTruthTrackv1.h"
0008
0009 #include <g4main/PHG4Particle.h>
0010 #include <g4main/PHG4VtxPoint.h>
0011
0012 #include <TLorentzVector.h>
0013
0014 #include <cmath>
0015
0016 void TrkrTruthTrackv1::identify(std::ostream& os) const
0017 {
0018 os << " TrkrTruthTrack: " << std::endl
0019 << " trackid(" << trackid << ") [X0,Y0,Z0](" << X0 << "," << Y0 << "," << Z0 << ") "
0020 << " [pseudorapidity,pt,phi](" << pseudoRapidity << "," << pt << "," << phi << ")" << std::endl;
0021 os << " Clusters HitSetKey(layer) : " << std::endl
0022 << " ";
0023 int cnt = 0;
0024 for (auto cluster : clusters)
0025 {
0026 if (cnt == 8)
0027 {
0028 cnt = 0;
0029 os << std::endl
0030 << " ";
0031 }
0032 if (cnt > 0)
0033 {
0034 os << ", ";
0035 }
0036 uint32_t i_hitsetkey = TrkrDefs::getHitSetKeyFromClusKey(cluster);
0037 int layer = TrkrDefs::getLayer(cluster);
0038 os << " " << i_hitsetkey << "(" << layer << ")";
0039 ++cnt;
0040 }
0041 if (cnt != 0)
0042 {
0043 os << std::endl;
0044 }
0045 }
0046
0047 TrkrTruthTrackv1::TrkrTruthTrackv1(unsigned int _trackid, PHG4Particle* p, PHG4VtxPoint* vtx)
0048 : trackid{_trackid}
0049 , clusters{}
0050 {
0051 X0 = vtx->get_x();
0052 Y0 = vtx->get_y();
0053 Z0 = vtx->get_z();
0054
0055 TLorentzVector v1;
0056 v1.SetPxPyPzE(p->get_px(), p->get_py(), p->get_pz(), p->get_e());
0057 phi = v1.Phi();
0058 pseudoRapidity = v1.PseudoRapidity();
0059 pt = v1.Pt();
0060 }
0061
0062 void TrkrTruthTrackv1::addCluster(TrkrDefs::cluskey key)
0063 {
0064 clusters.push_back(key);
0065 }
0066
0067 bool TrkrTruthTrackv1::has_hitsetkey(TrkrDefs::hitsetkey key) const
0068 {
0069 return std::binary_search(clusters.begin(), clusters.end(), key, CompHitSetKey());
0070 }
0071
0072 bool TrkrTruthTrackv1::has_hitsetkey(TrkrDefs::cluskey key) const
0073 {
0074 return std::binary_search(clusters.begin(), clusters.end(), key, CompHitSetKey());
0075 }
0076
0077 std::pair<bool, TrkrDefs::cluskey> TrkrTruthTrackv1::get_cluskey(TrkrDefs::hitsetkey hitsetkey) const
0078 {
0079 auto lb = std::lower_bound(clusters.begin(), clusters.end(), hitsetkey, CompHitSetKey());
0080 if (lb == clusters.end() || TrkrDefs::getHitSetKeyFromClusKey(*lb) != hitsetkey)
0081 {
0082 return {false, 0.};
0083 }
0084 else
0085 {
0086 return {true, *lb};
0087 }
0088 }