Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2025-08-05 08:18:19

0001 /**
0002  * @file g4tpc/TrkrTruthTrackv1.cc
0003  * @author D. Stewart
0004  * @date September 2022
0005  * @brief Version 1 of TrkrTruthTrack
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 }