Generate and assign the contained variables.
33{
34 const CDCRLWireHit* rlWireHit = testPair->
getTo();
35 const CDCTrack* track = testPair->
getFrom();
36
37 if (not testPair or not rlWireHit or not track) return false;
38
39
40 const CDCTrajectory2D& trajectory2D = track->getStartTrajectory3D().getTrajectory2D();
41
43
46 const double size = track->size();
47 const ROOT::Math::XYZVector& reconstructedPosition = recoHit3D.
getRecoPos3D();
52 const double backArcLength2D = track->back().getArcLength2D();
53 const double frontArcLength2D = track->front().getArcLength2D();
54 const double arcLength2DSum = std::accumulate(track->begin(), track->end(), 0.0, [](const double sum,
55 const CDCRecoHit3D & listRecoHit) { return sum + listRecoHit.getArcLength2D();});
56
57 const CDCWire& wire = rlWireHit->
getWire();
58 ROOT::Math::XYVector wirePos = wire.
getWirePos2DAtZ(reconstructedPosition.z());
59 ROOT::Math::XYVector disp2D = VectorUtil::getXYVector(reconstructedPosition) - wirePos;
60 const double xyDistance = disp2D.R();
61
62 const auto nearestAxialHit = std::min_element(track->begin(), track->end(), [&reconstructedS](const CDCRecoHit3D & lhs,
63 const CDCRecoHit3D & rhs) {
64 return std::abs(lhs.getArcLength2D() - reconstructedS) < std::abs(rhs.getArcLength2D() - reconstructedS);
65 });
66
69 var<
named(
"reco_s")>() = toFinite(reconstructedS, 0);
70 var<
named(
"reco_z")>() = toFinite(reconstructedPosition.z(), 0);
71 var<
named(
"phi_track")>() = toFinite(startMomentum.Phi(), 0);
72 var<
named(
"phi_hit")>() = reconstructedPosition.Phi();
73 var<
named(
"theta_hit")>() = reconstructedPosition.Theta();
74 var<
named(
"drift_length")>() = reconstructedDriftLength;
75 var<
named(
"adc_count")>() = adcCount;
76 var<
named(
"xy_distance_zero_z")>() = toFinite(xyDistance, 0);
77 var<
named(
"right_hit")>() = rlInformation == ERightLeft::c_Right;
78 var<
named(
"track_back_s")>() = toFinite(backArcLength2D, 0);
79 var<
named(
"track_front_s")>() = toFinite(frontArcLength2D, 0);
80 var<
named(
"track_mean_s")>() = toFinite(arcLength2DSum / size, 0);
81 var<
named(
"s_distance")>() = toFinite(nearestAxialHit->getArcLength2D() - reconstructedS, 0);
82 var<
named(
"track_radius")>() = toFinite(radius, 0);
84 return true;
85}
unsigned short getADCCount() const
Getter for integrated charge.
ROOT::Math::XYVector getWirePos2DAtZ(const double z) const
Gives the xy projected position of the wire at the given z coordinate.
const CDCWireHit & getWireHit() const
Getter for the wire hit associated with the oriented hit.
CDC::ISuperLayer getISuperLayer() const
Getter for the superlayer id.
const CDC::CDCWire & getWire() const
Getter for the wire the oriented hit associated to.
ERightLeft getRLInfo() const
Getter for the right left passage information.
const ROOT::Math::XYZVector & getRecoPos3D() const
Getter for the 3d position of the hit.
double getSignedRecoDriftLength() const
Returns the drift length next to the reconstructed position.
static CDCRecoHit3D reconstruct(const CDCRecoHit2D &recoHit2D, const CDCTrajectory2D &trajectory2D)
Reconstructs the three dimensional hit from the two dimensional and the two dimensional trajectory.
double getArcLength2D() const
Getter for the travel distance in the xy projection.
double getAbsMom2D(double bZ) const
Get the estimation for the absolute value of the transvers momentum.
const UncertainPerigeeCircle & getLocalCircle() const
Getter for the circle in local coordinates.
ROOT::Math::XYVector getMom2DAtSupport(const double bZ) const
Get the momentum at the support point of the trajectory.
const CDCHit * getHit() const
Getter for the CDCHit pointer into the StoreArray.
double radius() const
Gives the signed radius of the circle. If it was a line this will be infinity.
static constexpr int named(const char *name)
From * getFrom() const
Getter for the pointer to the from side object.
To * getTo() const
Getter for the pointer to the to side object.
ERightLeft
Enumeration to represent the distinct possibilities of the right left passage.