Belle II Software  release-05-01-25
PXDStateTruthVarSet.cc
1 /**************************************************************************
2  * BASF2 (Belle Analysis Framework 2) *
3  * Copyright(C) 2017 - Belle II Collaboration *
4  * *
5  * Author: The Belle II Collaboration *
6  * Contributors: Nils Braun *
7  * *
8  * This software is provided "as is" without any warranty. *
9  **************************************************************************/
10 #include <tracking/ckf/pxd/filters/states/PXDStateTruthVarSet.h>
11 
12 #include <tracking/mcMatcher/TrackMatchLookUp.h>
13 #include <tracking/dataobjects/RecoTrack.h>
14 
15 using namespace std;
16 using namespace Belle2;
17 using namespace TrackFindingCDC;
18 
19 bool PXDStateTruthVarSet::extract(const BasePXDStateFilter::Object* pair)
20 {
21  const std::vector<TrackFindingCDC::WithWeight<const CKFToPXDState*>>& previousStates = pair->first;
22  const CKFToPXDState* state = pair->second;
23 
24  std::vector<TrackFindingCDC::WithWeight<const CKFToPXDState*>> allStates = previousStates;
25  allStates.emplace_back(state, 0);
26 
27  const RecoTrack* seedTrack = previousStates.front()->getSeed();
28  B2ASSERT("Path without seed?", seedTrack);
29 
30  var<named("truth_event_id")>() = m_eventMetaData->getEvent();
31  var<named("truth_seed_number")>() = seedTrack->getArrayIndex();
32 
33  // Default to 0
34  var<named("truth_position_x")>() = 0;
35  var<named("truth_position_y")>() = 0;
36  var<named("truth_position_z")>() = 0;
37  var<named("truth_momentum_x")>() = 0;
38  var<named("truth_momentum_y")>() = 0;
39  var<named("truth_momentum_z")>() = 0;
40  var<named("truth")>() = 0;
41 
42  if (not m_mcUtil.allStatesCorrect(allStates)) {
43  // Keep all variables set to false and return.
44  return true;
45  }
46 
47  const std::string& seedTrackStoreArrayName = seedTrack->getArrayName();
48 
49  TrackMatchLookUp mcCDCMatchLookUp("MCRecoTracks", seedTrackStoreArrayName);
50  const RecoTrack* cdcMCTrack = mcCDCMatchLookUp.getRelatedMCRecoTrack(*seedTrack);
51 
52  var<named("truth")>() = 1;
53 
54  var<named("truth_position_x")>() = cdcMCTrack->getPositionSeed().X();
55  var<named("truth_position_y")>() = cdcMCTrack->getPositionSeed().Y();
56  var<named("truth_position_z")>() = cdcMCTrack->getPositionSeed().Z();
57  var<named("truth_momentum_x")>() = cdcMCTrack->getMomentumSeed().X();
58  var<named("truth_momentum_y")>() = cdcMCTrack->getMomentumSeed().Y();
59  var<named("truth_momentum_z")>() = cdcMCTrack->getMomentumSeed().Z();
60 
61  return true;
62 }
Belle2::CKFToPXDState
Specialized CKF State for extrapolating into the PXD.
Definition: CKFToPXDState.h:29
Belle2::RelationsInterface::getArrayName
std::string getArrayName() const
Get name of array this object is stored in, or "" if not found.
Definition: RelationsObject.h:379
Belle2::TrackMatchLookUp
Class to provide convenient methods to look up matching information between pattern recognition and M...
Definition: TrackMatchLookUp.h:43
Belle2::RecoTrack
This is the Reconstruction Event-Data Model Track.
Definition: RecoTrack.h:78
Belle2::RecoTrack::getPositionSeed
TVector3 getPositionSeed() const
Return the position seed stored in the reco track. ATTENTION: This is not the fitted position.
Definition: RecoTrack.h:477
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19
Belle2::TrackMatchLookUp::getRelatedMCRecoTrack
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.
Definition: TrackMatchLookUp.cc:119
Belle2::RelationsInterface::getArrayIndex
int getArrayIndex() const
Returns this object's array index (in StoreArray), or -1 if not found.
Definition: RelationsObject.h:387
Belle2::RecoTrack::getMomentumSeed
TVector3 getMomentumSeed() const
Return the momentum seed stored in the reco track. ATTENTION: This is not the fitted momentum.
Definition: RecoTrack.h:484
Belle2::TrackFindingCDC::Filter::Object
AObject Object
Type of the object to be analysed.
Definition: Filter.dcl.h:43