19#include "BDSHitThinThing.hh"
20#include "BDSTrajectoryPoint.hh"
21#include "BDSTrajectoryPointHit.hh"
22#include "BDSTrajectoryPrimary.hh"
24#include "G4Allocator.hh"
30G4Allocator<BDSHitThinThing> BDSAllocatorThinThing;
40 turnsTaken(turnsTakenIn),
51 std::vector<const BDSTrajectoryPoint*> result;
56 for (G4int i = 0; i < (G4int)hits->entries(); i++)
57 {result.push_back((*hits)[i]->hit);}
67std::vector<const BDSTrajectoryPointHit*>
68BDSHitThinThing::ResolvePossibleEarlierThinHits(
const std::vector<const BDSTrajectoryPrimary*>& primaryTrajectoryHits,
71 auto basicResult = [&]()
73 std::vector<const BDSTrajectoryPointHit*> result;
74 for (
auto p : primaryTrajectoryHits)
76 auto fh = p->FirstHit();
86 {
return primaryTrajectoryHits.empty() ? std::vector<const BDSTrajectoryPointHit*>() : basicResult();}
87 else if (thinThingHits->entries() == 0)
88 {
return basicResult();}
93 std::map<G4int, std::vector<const BDSTrajectoryPointHit*>> hitsPerPrimary;
94 for (G4int i = 0; i < (G4int)thinThingHits->entries(); i++)
96 auto hit = (*thinThingHits)[i];
97 hitsPerPrimary[hit->trackID].push_back(hit->GetNewTrajectoryPointHit());
99 for (
auto p : primaryTrajectoryHits)
112 std::vector<const BDSTrajectoryPointHit*> result;
113 for (
auto& primaryPoints : hitsPerPrimary)
115 auto& points = primaryPoints.second;
116 std::sort(points.begin(), points.end(), TrajPointComp);
117 result.push_back(points[0]);
BDSHitThinThing()=delete
No default constructor.
BDSTrajectoryPointHit * GetNewTrajectoryPointHit() const
Allocate and return a new hit object.
virtual ~BDSHitThinThing()
Note this should not be inline when we use a G4Allocator.
static std::vector< const BDSTrajectoryPoint * > TrajectoryPointsFromHC(BDSHitsCollectionThinThing *hits)
Utility function to get a vector of trajectory points from the hits collection.
A summary trajectory object of a loss point.
A Point in a trajectory with extra information.