10 #include <tracking/ckf/pxd/utilities/PXDMCUtil.h>
12 #include <tracking/ckf/pxd/entities/CKFToPXDState.h>
13 #include <tracking/mcMatcher/TrackMatchLookUp.h>
14 #include <tracking/dataobjects/RecoTrack.h>
15 #include <pxd/dataobjects/PXDCluster.h>
16 #include <tracking/spacePointCreation/SpacePoint.h>
17 #include <tracking/trackFindingCDC/utilities/Algorithms.h>
23 const auto isSameMCTrack = [&mcRecoTrack](
const RecoTrack & clusterRecoTrack) {
24 return &clusterRecoTrack == mcRecoTrack;
28 const std::string& mcRecoTrackStoreArrayName = mcRecoTrack->
getArrayName();
31 const auto& relatedMCTracksToCluster = relatedCluster.getRelationsTo<
RecoTrack>(mcRecoTrackStoreArrayName);
32 if (not TrackFindingCDC::any(relatedMCTracksToCluster, isSameMCTrack)) {
40 B2ASSERT(
"Invalid MC information", recoHitInformationOfHit);
47 const auto& itToFirstEntryInDetector = std::find_if(recoHitInformationList.begin(), recoHitInformationList.end(),
49 return hitInformation->getTrackingDetector() == detector;
51 const auto& itToFirstEntryAfterDetector = std::find_if(itToFirstEntryInDetector, recoHitInformationList.end(),
53 return hitInformation->getTrackingDetector() != detector;
56 if (itToFirstEntryAfterDetector == recoHitInformationList.end()) {
62 const auto* firstHitAfterDetector = *itToFirstEntryAfterDetector;
63 return firstHitAfterDetector->getSortingParameter() >= recoHitInformationOfHit->
getSortingParameter();
69 const auto hitIsCorrectSpecialisation = [
this, mcRecoTrack](
const SpacePoint * spacePoint) {
73 const unsigned int numberOfCorrectHits = std::count_if(hits.begin(), hits.end(), hitIsCorrectSpecialisation);
74 return numberOfCorrectHits;
79 const RecoTrack* seed = states.front()->getSeed();
81 B2ASSERT(
"Path without a seed?", seed);
83 if (states.size() <= 1) {
88 const std::string& seedTrackStoreArrayName = seed->getArrayName();
95 B2DEBUG(100,
"Seed is a fake");
99 std::vector<const SpacePoint*> spacePoints;
101 const SpacePoint* spacePoint = state->getHit();
103 spacePoints.push_back(spacePoint);
109 B2DEBUG(100,
"Have found " << numberOfCorrectHits <<
" correct out of " << spacePoints.size() <<
" hits");
110 return numberOfCorrectHits == spacePoints.size();