18#include "BDSHitThinThing.hh"
19#include "BDSTrajectoryPoint.hh"
20#include "BDSTrajectoryPointHit.hh"
21#include "BDSTrajectoryPrimary.hh"
23#include "G4Allocator.hh"
29G4Allocator<BDSHitThinThing> BDSAllocatorThinThing;
39 turnsTaken(turnsTakenIn),
50 std::vector<const BDSTrajectoryPoint*> result;
55 for (G4int i = 0; i < (G4int)hits->entries(); i++)
56 {result.push_back((*hits)[i]->hit);}
66std::vector<const BDSTrajectoryPointHit*>
67BDSHitThinThing::ResolvePossibleEarlierThinHits(
const std::vector<const BDSTrajectoryPrimary*>& primaryTrajectoryHits,
70 auto basicResult = [&]()
72 std::vector<const BDSTrajectoryPointHit*> result;
73 for (
auto p : primaryTrajectoryHits)
75 auto fh = p->FirstHit();
85 {
return primaryTrajectoryHits.empty() ? std::vector<const BDSTrajectoryPointHit*>() : basicResult();}
86 else if (thinThingHits->entries() == 0)
87 {
return basicResult();}
92 std::map<G4int, std::vector<const BDSTrajectoryPointHit*>> hitsPerPrimary;
93 for (G4int i = 0; i < (G4int)thinThingHits->entries(); i++)
95 auto hit = (*thinThingHits)[i];
96 hitsPerPrimary[hit->trackID].push_back(hit->GetNewTrajectoryPointHit());
98 for (
auto p : primaryTrajectoryHits)
111 std::vector<const BDSTrajectoryPointHit*> result;
112 for (
auto& primaryPoints : hitsPerPrimary)
114 auto& points = primaryPoints.second;
115 std::sort(points.begin(), points.end(), TrajPointComp);
116 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.