13 #include <framework/gearbox/Unit.h>
14 #include <framework/gearbox/Const.h>
15 #include <framework/datastore/RelationsObject.h>
16 #include <pxd/dataobjects/PXDCluster.h>
17 #include <tracking/dataobjects/RecoTrack.h>
18 #include <tracking/dataobjects/PXDIntercept.h>
19 #include <genfit/MeasuredStateOnPlane.h>
25 #include <pxd/utilities/PXDUtilities.h>
26 #include <mdst/dataobjects/Track.h>
27 #include <mdst/dataobjects/HitPatternCDC.h>
28 #include <mdst/dataobjects/HitPatternVXD.h>
48 void setValues(
const PXDCluster& pxdCluster);
96 const std::string recoTracksName =
"",
97 const std::string pxdTrackClustersName =
"PXDClustersFromTracks");
109 template <
typename TTrackCluster>
120 const std::string recoTracksName =
"",
121 const std::string pxdInterceptsName =
"",
122 const std::string pxdTrackClustersName =
"PXDClustersFromTracks"
135 std::vector<TTrackCluster> trackClusters;
144 template <
typename TTrackCluster>
146 const RecoTrack& recoTrack,
const TVector3& ip,
147 const std::string recoTracksName,
148 const std::string pxdInterceptsName,
149 const std::string pxdTrackClustersName
155 B2ERROR(
"Expect a track for fitted recotracks. Found nothing!");
159 auto tfrPtr = trackPtr->getTrackFitResultWithClosestMass(
Const::pion);
161 B2ERROR(
"expect a track fit result for pion. Found Nothing!");
163 nCDCHits = tfrPtr->getHitPatternCDC().getNHits();
164 nSVDHits = tfrPtr->getHitPatternVXD().getNSVDHits();
165 nPXDHits = tfrPtr->getHitPatternVXD().getNPXDHits();
166 tanLambda = tfrPtr->getCotTheta();
167 pt = tfrPtr->getMomentum().Perp();
168 d0 = tfrPtr->getD0();
169 z0 = tfrPtr->getZ0();
170 phi0 = tfrPtr->getPhi0();
173 if (ip != TVector3(0, 0, 0)) {
175 auto uHelix = tfrPtr->getUncertainHelix();
176 uHelix.passiveMoveBy(ip);
177 d0p = uHelix.getD0();
178 z0p = uHelix.getZ0();
182 auto pxdIntercepts = recoTrack.
getRelationsTo<PXDIntercept>(pxdInterceptsName);
183 for (
auto& pxdIntercept : pxdIntercepts) {
186 if (temp.setValues(pxdIntercept, recoTracksName, pxdTrackClustersName))
187 trackClusters.push_back(temp);