Generate and assign the variables from the VXD-CDC-pair.
25{
26 const std::vector<TrackFindingCDC::WithWeight<const CKFToPXDState*>>& previousStates = pair->first;
28
29 const RecoTrack* seedTrack = previousStates.front()->getSeed();
30 B2ASSERT("Path without seed?", seedTrack);
31
33 B2ASSERT("Path without hit?", spacePoint);
34
35 genfit::MeasuredStateOnPlane firstMeasurement;
38 } else {
39 firstMeasurement = previousStates.back()->getMeasuredStateOnPlane();
40 }
41
44
46
48
49 const double arcLength = trajectory.calcArcLength2D(hitPosition);
50 const Vector2D& trackPositionAtHit2D = trajectory.getTrajectory2D().getPos2DAtArcLength2D(arcLength);
51 double trackPositionAtHitZ = trajectory.getTrajectorySZ().mapSToZ(arcLength);
52
53 Vector3D trackPositionAtHit(trackPositionAtHit2D, trackPositionAtHitZ);
54 Vector3D distance = trackPositionAtHit - hitPosition;
55
56 var<
named(
"distance")>() =
static_cast<Float_t
>(distance.
norm());
57 var<
named(
"xy_distance")>() =
static_cast<Float_t
>(distance.
xy().
norm());
58 var<
named(
"z_distance")>() =
static_cast<Float_t
>(distance.
z());
59
60 Vector3D mSoP_distance = position - hitPosition;
61
62 var<
named(
"mSoP_distance")>() =
static_cast<Float_t
>(mSoP_distance.norm());
63 var<
named(
"mSoP_xy_distance")>() =
static_cast<Float_t
>(mSoP_distance.xy().norm());
64 var<
named(
"mSoP_z_distance")>() =
static_cast<Float_t
>(mSoP_distance.z());
65
66 var<
named(
"same_hemisphere")>() = fabs(position.
phi() - hitPosition.phi()) < TMath::PiOver2();
67
68 var<
named(
"arcLengthOfHitPosition")>() =
static_cast<Float_t
>(trajectory.calcArcLength2D(hitPosition));
69 var<
named(
"arcLengthOfCenterPosition")>() =
static_cast<Float_t
>(trajectory.calcArcLength2D(
Vector3D(0, 0, 0)));
70
72 var<
named(
"number")>() = previousStates.size();
73
74 var<
named(
"pt")>() =
static_cast<Float_t
>(momentum.xy().norm());
75 var<
named(
"tan_lambda")>() =
static_cast<Float_t
>(trajectory.getTanLambda());
76 var<
named(
"phi")>() =
static_cast<Float_t
>(momentum.phi());
77
79
80 var<
named(
"ladder")>() = sensorInfo.getLadderNumber();
81 var<
named(
"sensor")>() = sensorInfo.getSensorNumber();
82 var<
named(
"segment")>() = sensorInfo.getSegmentNumber();
83 var<
named(
"id")>() = sensorInfo.getID();
84
86 B2ASSERT("Must be related to exactly 1 cluster", clusters.size() == 1);
87 var<
named(
"cluster_charge")>() = clusters[0]->getCharge();
88 var<
named(
"cluster_seed_charge")>() = clusters[0]->getSeedCharge();
89 var<
named(
"cluster_size")>() = clusters[0]->getSize();
90 var<
named(
"cluster_size_u")>() = clusters[0]->getUSize();
91 var<
named(
"cluster_size_v")>() = clusters[0]->getVSize();
92
98 var<
named(
"last_cluster_charge")>() = 0;
99 var<
named(
"last_cluster_seed_charge")>() = 0;
100 var<
named(
"last_cluster_size")>() = 0;
101 var<
named(
"last_cluster_size_u")>() = 0;
102 var<
named(
"last_cluster_size_v")>() = 0;
103
105 const SpacePoint* parentSpacePoint = parent->getHit();
106 if (parentSpacePoint) {
107 const VxdID& parentSensorInfo = parentSpacePoint->
getVxdID();
108
114
116 B2ASSERT("Must be related to exactly 1 cluster", parentclusters.size() == 1);
117 var<
named(
"last_cluster_charge")>() = parentclusters[0]->getCharge();
118 var<
named(
"last_cluster_seed_charge")>() = parentclusters[0]->getSeedCharge();
119 var<
named(
"last_cluster_size")>() = parentclusters[0]->getSize();
120 var<
named(
"last_cluster_size_u")>() = parentclusters[0]->getUSize();
121 var<
named(
"last_cluster_size_v")>() = parentclusters[0]->getVSize();
122 }
123
125 var<
named(
"residual")>() = residual;
126
129 } else {
131 }
132
133 const TMatrixDSym& cov5 = firstMeasurement.getCov();
134 const Float_t sigmaUV = std::sqrt(std::max(cov5(4, 4), cov5(3, 3)));
136 var<
named(
"residual_over_sigma")>() = residual / sigmaUV;
137
138 return true;
139}
const genfit::MeasuredStateOnPlane & getMeasuredStateOnPlane() const
Get the mSoP if already set during extrapolation (or fitting)
const Hit * getHit() const
Return the SP this state is related to. May be nullptr.
double getChi2() const
Return the chi2 set during fitting. Is only valid after fitting.
bool isFitted() const
Check if state was already fitted.
bool mSoPSet() const
Is the mSoP already set? (= state was already extrapolated)
Specialized CKF State for extrapolating into the PXD.
The PXD Cluster class This class stores all information about reconstructed PXD clusters The position...
double calculateResidual(genfit::MeasuredStateOnPlane &measuredStateOnPlane, const CKFToPXDState &state)
Calculate the residual between the mSoP and the measurement in the state.
PXDKalmanStepper m_kalmanStepper
Kalmap update filter used in this var set.
This is the Reconstruction Event-Data Model Track.
short int getChargeSeed() const
Return the charge seed stored in the reco track. ATTENTION: This is not the fitted charge.
RelationVector< TO > getRelationsTo(const std::string &name="", const std::string &namedRelation="") const
Get the relations that point from this object to another store array.
SpacePoint typically is build from 1 PXDCluster or 1-2 SVDClusters.
VxdID getVxdID() const
Return the VxdID of the sensor on which the the cluster of the SpacePoint lives.
const B2Vector3D & getPosition() const
return the position vector in global coordinates
Particle full three dimensional trajectory.
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.
A two dimensional vector which is equipped with functions for correct handling of orientation relate...
double norm() const
Calculates the length of the vector.
A three dimensional vector.
const Vector2D & xy() const
Getter for the xy projected vector ( reference ! )
double phi() const
Getter for the azimuth angle.
double norm() const
Calculates the length of the vector.
double z() const
Getter for the z coordinate.
Class to uniquely identify a any structure of the PXD and SVD.
baseType getID() const
Get the unique id.
baseType getSensorNumber() const
Get the sensor id.
baseType getSegmentNumber() const
Get the sensor segment.
baseType getLadderNumber() const
Get the ladder id.
baseType getLayerNumber() const
Get the layer id.
HepGeom::Vector3D< double > Vector3D
3D Vector