8#include <tracking/trackFindingCDC/legendre/quadtree/OffOriginExtension.h>
10#include <tracking/trackFindingCDC/legendre/quadtree/AxialHitQuadTreeProcessor.h>
11#include <tracking/trackFindingCDC/processing/AxialTrackUtil.h>
13#include <tracking/trackFindingCDC/fitting/CDCKarimakiFitter.h>
14#include <tracking/trackingUtilities/eventdata/hits/CDCWireHit.h>
16#include <tracking/trackingUtilities/eventdata/trajectories/CDCTrajectory2D.h>
18#include <tracking/trackingUtilities/numerics/LookupTable.h>
20#include <Math/Vector2D.h>
25using namespace TrackFindingCDC;
26using namespace TrackingUtilities;
29 double levelPrecision)
36 void* qt __attribute__((unused)))
39 for (
const CDCWireHit* wireHit : inputWireHits) {
40 (*wireHit)->setTakenFlag(
false);
43 std::vector<const CDCWireHit*> candidateHits =
roadSearch(inputWireHits);
50std::vector<const CDCWireHit*>
56 double chi2 = trackTrajectory2D.
getChi2();
67 hit->getAutomatonCell().setTakenFlag(
true);
74 hit->getAutomatonCell().setTakenFlag(
false);
77 if (newWireHits.size() == 0)
return wireHits;
79 std::vector<const CDCWireHit*> combinedWireHits;
82 combinedWireHits.push_back(hit);
86 combinedWireHits.push_back(hit);
90 double combinedChi2 = combinedTrajectory2D.
getChi2();
92 if (combinedChi2 < chi2 * 2.) {
93 return combinedWireHits;
99std::vector<const CDCWireHit*>
106 YSpan curvSpan{curv - curvPrecision, curv + curvPrecision};
112 std::vector<const CDCWireHit*> newWireHits = qtProcessor.
getAssignedItems();
A QuadTreeProcessor for TrackHits.
std::vector< TrackingUtilities::CDCTrack > m_tracks
Collected tracks.
BaseCandidateReceiver(std::vector< const TrackingUtilities::CDCWireHit * > allAxialWireHits)
Constructor.
std::vector< const TrackingUtilities::CDCWireHit * > m_allAxialWireHits
Pool of all axial hits from which the road search may select additional hits.
Class implementing the fitter using Karimakis method.
static const CDCKarimakiFitter & getNoDriftVarianceFitter()
Static getter for a general fitter that does not use the drift length variances.
std::vector< const TrackingUtilities::CDCWireHit * > getHitsWRTtoRefPos(const ROOT::Math::XYVector &refPos, float curv, float theta)
Get hits which are compatible with given trajectory.
double m_levelPrecision
Precision level for the width of the off origin hough search.
std::vector< const TrackingUtilities::CDCWireHit * > roadSearch(const std::vector< const TrackingUtilities::CDCWireHit * > &wireHits)
Perform transformation for set of given hits; reference position taken as POCA of the fitted trajecto...
void operator()(const std::vector< const TrackingUtilities::CDCWireHit * > &inputWireHits, void *qt) final
Main entry point for the post processing call from the QuadTreeProcessor.
OffOriginExtension(std::vector< const TrackingUtilities::CDCWireHit * > allAxialWireHits, double levelPrecision=9)
Constructor.
std::vector< AData * > getAssignedItems()
Get items that have been assigned to the seed level The returned elements are unique even if items ar...
typename QuadTree::YSpan YSpan
void seed(const std::vector< AData * > &datas)
Fill in the items in the given vector.
Particle trajectory as it is seen in xy projection represented as a circle.
PerigeeCircle getGlobalCircle() const
Getter for the circle in global coordinates.
double getChi2() const
Getter for the chi2 value of the circle fit.
ROOT::Math::XYVector getGlobalPerigee() const
Getter for the closest approach on the trajectory to the global origin.
double getCurvature() const
Getter for the curvature as seen from the xy projection.
Class representing a hit wire in the central drift chamber.
Class which holds precomputed values of a function.
double phi0() const
Getter for the azimuth angle of the direction of flight at the perigee.
Abstract base class for different kinds of events.
static void addCandidateFromHits(const std::vector< const TrackingUtilities::CDCWireHit * > &foundAxialWireHits, const std::vector< const TrackingUtilities::CDCWireHit * > &allAxialWireHits, std::vector< TrackingUtilities::CDCTrack > &axialTracks, bool withPostprocessing=true)
Create CDCTrack using CDCWireHit hits and store it in the list. Then call the postprocessing on it.