8#include <tracking/trackFindingCDC/collectors/adders/StereoHitTrackAdder.h>
9#include <tracking/trackFindingCDC/eventdata/tracks/CDCTrack.h>
10#include <tracking/trackFindingCDC/eventdata/trajectories/CDCTrajectory2D.h>
11#include <tracking/trackFindingCDC/eventdata/hits/CDCRLWireHit.h>
12#include <tracking/trackFindingCDC/eventdata/hits/CDCWireHit.h>
13#include <tracking/trackFindingCDC/geometry/Vector3D.h>
15#include <tracking/trackFindingCDC/ca/AutomatonCell.h>
18using namespace TrackFindingCDC;
22 const CDCTrajectory2D& trajectory2D = track.getStartTrajectory3D().getTrajectory2D();
24 const bool isCurler = trajectory2D.
isCurler();
26 Vector3D recoPos3D = hit.reconstruct3D(trajectory2D);
28 if (isCurler and arcLength2D < 0) {
29 arcLength2D += 2 * TMath::Pi() * radius;
32 B2ASSERT(
"A stereo hit should not be added twice!", not hit.getWireHit().getAutomatonCell().hasTakenFlag());
33 track.emplace_back(hit, recoPos3D, arcLength2D);
34 hit.getWireHit().getAutomatonCell().setTakenFlag();
Class representing an oriented hit wire including a hypotheses whether the causing track passes left ...
Class representing a sequence of three dimensional reconstructed hits.
Particle trajectory as it is seen in xy projection represented as a circle.
PerigeeCircle getGlobalCircle() const
Getter for the circle in global coordinates.
double calcArcLength2D(const Vector2D &point) const
Calculate the travel distance from the start position of the trajectory.
bool isCurler(double factor=1) const
Checks if the trajectory leaves the outer radius of the CDC times the given tolerance factor.
double absRadius() const
Gives the signed radius of the circle. If it was a line this will be infinity.
void add(CDCTrack &track, const CDCRLWireHit &hit, Weight weight) override
Add the matched hits to the track and set the taken flag correctly.
A three dimensional vector.
const Vector2D & xy() const
Getter for the xy projected vector ( reference ! )
Abstract base class for different kinds of events.