Belle II Software development
PXDResultTruthVarSet.cc
1/**************************************************************************
2 * basf2 (Belle II Analysis Software Framework) *
3 * Author: The Belle II Collaboration *
4 * *
5 * See git log for contributors and copyright holders. *
6 * This file is licensed under LGPL-3.0, see LICENSE.md. *
7 **************************************************************************/
8#include <tracking/ckf/pxd/filters/results/PXDResultTruthVarSet.h>
9
10#include <tracking/mcMatcher/TrackMatchLookUp.h>
11#include <tracking/dataobjects/RecoTrack.h>
12
13using namespace Belle2;
14using namespace TrackFindingCDC;
15
17{
18 const RecoTrack* seedTrack = result->getSeed();
19 if (not seedTrack) return false;
20
21 var<named("truth_event_number")>() = m_eventMetaData->getEvent();
22 var<named("truth_seed_number")>() = seedTrack->getArrayIndex();
23
24 const std::string& seedTrackStoreArrayName = seedTrack->getArrayName();
25
26 TrackMatchLookUp mcCDCMatchLookUp("MCRecoTracks", seedTrackStoreArrayName);
27 const RecoTrack* mcTrack = mcCDCMatchLookUp.getRelatedMCRecoTrack(*seedTrack);
28
29 // Default to false
30 var<named("truth_number_of_correct_hits")>() = 0;
31 var<named("truth")>() = 0;
32 var<named("truth_number_of_mc_pxd_hits")>() = 0;
33 var<named("truth_number_of_mc_svd_hits")>() = 0;
34 var<named("truth_number_of_mc_cdc_hits")>() = 0;
35
36 if (not mcTrack) {
37 // track is a fake.
38 return true;
39 }
40
41 // Count the number of times the related MC-track is also related to the clusters.
42 const unsigned int numberOfCorrectHits = m_mcUtil.getNumberOfCorrectPXDHits(mcTrack, result->getHits());
43
44 var<named("truth_number_of_correct_hits")>() = numberOfCorrectHits;
45 var<named("truth_number_of_mc_pxd_hits")>() = mcTrack->getNumberOfPXDHits();
46 var<named("truth_number_of_mc_svd_hits")>() = mcTrack->getNumberOfSVDHits();
47 var<named("truth_number_of_mc_cdc_hits")>() = mcTrack->getNumberOfCDCHits();
48
49 var<named("truth")>() = static_cast<double>(numberOfCorrectHits) / static_cast<double>(mcTrack->getNumberOfPXDHits());
50
51 return true;
52}
Specialized CKF Result for extrapolating into the PXD.
unsigned int getNumberOfCorrectPXDHits(const RecoTrack *mcRecoTrack, const std::vector< const SpacePoint * > &hits) const
How many of the given space points are also in the MC track? Runs pxdHitIsCorrect on all of them.
Definition: PXDMCUtil.cc:64
MCUtil m_mcUtil
MC information used in the PXD CKF.
bool extract(const CKFToPXDResult *result) final
Generate and assign the variables from the object.
StoreObjPtr< EventMetaData > m_eventMetaData
Pointer to the object containing event number etc.
This is the Reconstruction Event-Data Model Track.
Definition: RecoTrack.h:79
unsigned int getNumberOfSVDHits() const
Return the number of svd hits.
Definition: RecoTrack.h:424
unsigned int getNumberOfCDCHits() const
Return the number of cdc hits.
Definition: RecoTrack.h:427
unsigned int getNumberOfPXDHits() const
Return the number of pxd hits.
Definition: RecoTrack.h:421
std::string getArrayName() const
Get name of array this object is stored in, or "" if not found.
int getArrayIndex() const
Returns this object's array index (in StoreArray), or -1 if not found.
static constexpr int named(const char *name)
Getter for the index from the name.
Definition: VarSet.h:78
Float_t & var()
Reference getter for the value of the ith variable. Static version.
Definition: VarSet.h:93
Class to provide convenient methods to look up matching information between pattern recognition and M...
const RecoTrack * getRelatedMCRecoTrack(const RecoTrack &prRecoTrack) const
Looks for a related Monte Carlo track for the given pattern recognition track and return it if found.
Abstract base class for different kinds of events.