11#include <framework/gearbox/Unit.h>
12#include <framework/gearbox/Const.h>
13#include <framework/datastore/RelationsObject.h>
14#include <pxd/dataobjects/PXDCluster.h>
15#include <tracking/dataobjects/RecoTrack.h>
16#include <tracking/dataobjects/PXDIntercept.h>
17#include <genfit/MeasuredStateOnPlane.h>
22#include <mdst/dataobjects/Track.h>
23#include <mdst/dataobjects/HitPatternCDC.h>
24#include <mdst/dataobjects/HitPatternVXD.h>
97 const std::string& recoTracksName =
"",
98 const std::string& pxdTrackClustersName =
"PXDClustersFromTracks",
111 template <
typename TTrackCluster>
130 void setValues(
const RecoTrack& recoTrack,
const ROOT::Math::XYZVector& ip = ROOT::Math::XYZVector(0, 0, 0),
131 const std::string& recoTracksName =
"",
132 const std::string& pxdInterceptsName =
"",
133 const std::string& pxdTrackClustersName =
"PXDClustersFromTracks"
156 template <
typename TTrackCluster>
162 B2ERROR(
"Expect the track fit result. Found Nothing!");
169 d0 = tfrPtr->
getD0();
170 z0 = tfrPtr->
getZ0();
174 if (ip != ROOT::Math::XYZVector(0, 0, 0)) {
178 d0p = uHelix.getD0();
179 z0p = uHelix.getZ0();
183 template <
typename TTrackCluster>
185 const RecoTrack& recoTrack,
const ROOT::Math::XYZVector& ip,
186 const std::string& recoTracksName,
187 const std::string& pxdInterceptsName,
188 const std::string& pxdTrackClustersName
194 B2ERROR(
"Expect a track for fitted recotracks. Found nothing!");
198 auto tfrPtr = trackPtr->getTrackFitResultWithClosestMass(
200 setTrackVariables(tfrPtr, ip);
204 for (
auto& pxdIntercept : pxdIntercepts) {
207 if (temp.setValues(pxdIntercept, recoTracksName, pxdTrackClustersName))
208 trackClusters.push_back(temp);
static const ChargedStable pion
charged pion particle
static const double electronMass
electron mass
unsigned short getNHits() const
Get the total Number of CDC hits in the fit.
unsigned short getNPXDHits() const
Get total number of hits in the PXD.
unsigned short getNSVDHits() const
Get total number of hits in the SVD.
The PXD Cluster class This class stores all information about reconstructed PXD clusters The position...
PXDIntercept stores the U,V coordinates and uncertainties of the intersection of a track with an PXD ...
This is the Reconstruction Event-Data Model Track.
T * getRelated(const std::string &name="", const std::string &namedRelation="") const
Get the object to or from which this object has a relation.
RelationVector< TO > getRelationsTo(const std::string &name="", const std::string &namedRelation="") const
Get the relations that point from this object to another store array.
Values of the result of a track fit with a given particle hypothesis.
double getCotTheta() const
Getter for tanLambda with CDF naming convention.
double getD0() const
Getter for d0.
double getZ0() const
Getter for z0.
ROOT::Math::XYZVector getMomentum() const
Getter for vector of momentum at closest approach of track in r/phi projection.
HitPatternCDC getHitPatternCDC() const
Getter for the hit pattern in the CDC;.
UncertainHelix getUncertainHelix() const
Conversion to framework Uncertain Helix (i.e., with covariance).
double getPhi0() const
Getter for phi0.
HitPatternVXD getHitPatternVXD() const
Getter for the hit pattern in the VXD;.
Class that bundles various TrackFitResults.
double passiveMoveBy(const ROOT::Math::XYZVector &by)
Moves origin of the coordinate system (passive transformation) by the given vector.
TrackBase_t< TrackCluster_t > Track_t
Typedef TrackBase_t<TrackCluster_t> Track_t.
Abstract base class for different kinds of events.
Struct to hold variables for PXD clusters.
float posV
Local position along z.
Cluster_t()
Default constructor.
float posU
Local position in r-phi.
unsigned short pxdID
Human readable id: layer * 1000 + ladder * 10 + sensor.
void setValues(const PXDCluster &pxdCluster)
Update values from a PXDCluster.
unsigned short charge
Cluster charge in ADU.
unsigned short uSize
Cluster size in U.
unsigned short vSize
Cluster size in V.
unsigned short size
Cluster size.
Struct to hold variables from a track which contains a vector of data type like TrackCluster.
TrackBase_t()
Default constructor.
float z0
Impact parameter in z.
float pt
Transverse momentum.
float d0p
Corrected impact parameter in r-phi.
float d0
Impact parameter in r-phi.
float phi0
Track direction in r-phi.
unsigned short nCDCHits
Number of CDC Hits.
void setTrackVariables(const TrackFitResult *tfrPtr, const ROOT::Math::XYZVector &ip)
update track level variables from TrackFitResult
unsigned short nSVDHits
Number of SVD Hits.
float z0p
Corrected impact parameter in z.
unsigned short nPXDHits
Number of PXD Hits.
void setValues(const RecoTrack &recoTrack, const ROOT::Math::XYZVector &ip=ROOT::Math::XYZVector(0, 0, 0), const std::string &recoTracksName="", const std::string &pxdInterceptsName="", const std::string &pxdTrackClustersName="PXDClustersFromTracks")
Update values from a RecoTrack.
float tanLambda
Tangent of the dip angle.
std::vector< TTrackCluster > trackClusters
Vector of track cluster structs.
Struct to hold variables for track clusters.
TrackCluster_t()
Default constructor.
float dU
Residual (meas - prediction) in U.
bool usedInTrack
True if the cluster is used in tracking.
RecoTrack * setValues(const PXDIntercept &pxdIntercept, const std::string &recoTracksName="", const std::string &pxdTrackClustersName="PXDClustersFromTracks", const double &mass=Const::electronMass)
Update values from a PXDIntercept.
Cluster_t cluster
Cluster associated to the track.
TrackPoint_t intersection
The track-module intersection.
float dV
Residual (meas - prediciton) in V.
Struct to hold variables for intersection points.
bool inside
True if it's inside the active region.
float chargeMPV
Expected charge in ADU.
RecoTrack * setValues(const PXDIntercept &pxdIntercept, const std::string &recoTracksName="", const double &mass=Const::electronMass)
Update values from a PXDCluster.
float tol
The variables below are included here as they can be calculated w.o.
float y
Global position in y.
float x
Global position in x.
TrackPoint_t()
Default constructor.
float z
Global position in z.