8#include <tracking/trackFindingCDC/filters/facet/BasicFacetVarSet.h>
10#include <tracking/trackFindingCDC/eventdata/hits/CDCFacet.h>
13using namespace TrackFindingCDC;
17 if (not ptrFacet)
return false;
25 const double startDriftLengthSigma =
sqrt(startDriftLengthVar);
30 const double middleDriftLengthSigma =
sqrt(middleDriftLengthVar);
35 const double endDriftLengthSigma =
sqrt(endDriftLengthVar);
43 const short stableTwist = -sign(shape.
getOClockDelta()) * middleRLInfo;
44 const bool startToMiddleIsCrossing = startRLInfo != middleRLInfo;
45 const bool middleToEndIsCrossing = middleRLInfo != endRLInfo;
47 var<
named(
"superlayer_id")>() = superlayerID;
50 var<
named(
"start_drift_length")>() = startDriftLength;
51 var<
named(
"start_drift_length_sigma")>() = startDriftLengthSigma;
54 var<
named(
"middle_drift_length")>() = middleDriftLength;
55 var<
named(
"middle_drift_length_sigma")>() = middleDriftLengthSigma;
58 var<
named(
"end_drift_length")>() = endDriftLength;
59 var<
named(
"end_drift_length_sigma")>() = endDriftLengthSigma;
61 var<
named(
"oclock_delta")>() = oClockDelta;
63 var<
named(
"cell_extend")>() = cellExtend;
64 var<
named(
"n_crossing")>() = startToMiddleIsCrossing + middleToEndIsCrossing;
bool extract(const CDCFacet *ptrFacet) final
Generate and assign the contained variables.
Class representing a triple of neighboring oriented wire with additional trajectory information.
void adjustFitLine() const
Adjusts the contained fit line to touch such that it touches the first and third hit.
const UncertainParameterLine2D & getFitLine() const
Getter for the contained line fit information.
Type for the different shapes of a triple of neighboring wire hits.
short getCellExtend() const
Getter for the sum of cell distances from start to middle and middle to end.
short getOClockDelta() const
Getter for the o'clock direction difference from start to middle compared to middle to end.
ERightLeft getMiddleRLInfo() const
Getter for the right left passage information of the second oriented wire hit.
ISuperLayer getISuperLayer() const
Getter for the common superlayer id of the pair.
CDCRLWireHit & getStartRLWireHit()
Getter for the first oriented wire hit.
ERightLeft getStartRLInfo() const
Getter for the right left passage information of the first oriented wire hit.
ERightLeft getEndRLInfo() const
Getter for the right left passage information of the third oriented wire hit.
Shape getShape() const
Getter for the shape of this triple if all three oriented wire hits are neighbors....
CDCRLWireHit & getEndRLWireHit()
Getter for the third oriented wire hit.
CDCRLWireHit & getMiddleRLWireHit()
Getter for the second oriented wire hit.
Class representing an oriented hit wire including a hypotheses whether the causing track passes left ...
double getRefDriftLengthVariance() const
Getter for the variance of the drift length at the reference position of the wire.
double getSignedRefDriftLength() const
Getter for the drift length at the reference position of the wire.
Vector2D at(const double parameter) const
Evaluates the line formula at the parameter given.
const Vector2D & tangential() const
Gives the tangential vector of the line.
A parameter line including including an line covariance matrix which is interpreted as located in the...
static constexpr int named(const char *name)
Getter for the index from the name.
Float_t & var()
Reference getter for the value of the ith variable. Static version.
double angleWith(const Vector2D &rhs) const
The angle between this and rhs.
double sqrt(double a)
sqrt for double
ERightLeft
Enumeration to represent the distinct possibilities of the right left passage.
Abstract base class for different kinds of events.