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>
19#include <tracking/trackingUtilities/geometry/Vector2D.h>
24using namespace TrackFindingCDC;
25using namespace TrackingUtilities;
28 double levelPrecision)
35 void* qt __attribute__((unused)))
38 for (
const CDCWireHit* wireHit : inputWireHits) {
39 (*wireHit)->setTakenFlag(
false);
42 std::vector<const CDCWireHit*> candidateHits =
roadSearch(inputWireHits);
49std::vector<const CDCWireHit*>
55 double chi2 = trackTrajectory2D.
getChi2();
66 hit->getAutomatonCell().setTakenFlag(
true);
73 hit->getAutomatonCell().setTakenFlag(
false);
76 if (newWireHits.size() == 0)
return wireHits;
78 std::vector<const CDCWireHit*> combinedWireHits;
81 combinedWireHits.push_back(hit);
85 combinedWireHits.push_back(hit);
89 double combinedChi2 = combinedTrajectory2D.
getChi2();
91 if (combinedChi2 < chi2 * 2.) {
92 return combinedWireHits;
98std::vector<const CDCWireHit*>
105 YSpan curvSpan{curv - curvPrecision, curv + curvPrecision};
111 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 TrackingUtilities::Vector2D &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.
Vector2D 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.
A two dimensional vector which is equipped with functions for correct handling of orientation relate...
static Vector2D Phi(const double phi)
Constructs a unit vector with azimuth angle equal to phi.
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.