Belle II Software  release-08-01-10
CDCMCHitLookUp.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/trackFindingCDC/mclookup/CDCMCHitLookUp.h>
9 
10 #include <tracking/trackFindingCDC/mclookup/CDCSimHitLookUp.h>
11 #include <tracking/trackFindingCDC/mclookup/CDCMCTrackStore.h>
12 #include <tracking/trackFindingCDC/mclookup/CDCMCMap.h>
13 #include <tracking/trackFindingCDC/mclookup/CDCMCManager.h>
14 
15 #include <tracking/trackFindingCDC/eventdata/hits/CDCWireHit.h>
16 
17 #include <tracking/trackFindingCDC/topology/CDCWire.h>
18 
19 #include <tracking/trackFindingCDC/geometry/Vector3D.h>
20 #include <tracking/trackFindingCDC/geometry/Vector2D.h>
21 
22 #include <cdc/dataobjects/CDCHit.h>
23 #include <cdc/dataobjects/CDCSimHit.h>
24 #include <mdst/dataobjects/MCParticle.h>
25 
26 using namespace Belle2;
27 using namespace TrackFindingCDC;
28 
29 
31 {
33 }
34 
35 
37 {
39 }
40 
41 
43 {
44  return CDCMCManager::getMCMap().getSimHit(ptrHit);
45 }
46 
47 
49 {
50  return CDCMCManager::getMCMap().getMCParticle(ptrHit);
51 }
52 
53 
54 const Vector2D CDCMCHitLookUp::getRefPos2D(const CDCHit* ptrHit) const
55 {
56  if (not ptrHit) return Vector2D();
57  const CDCHit& hit = *ptrHit;
58 
59  const CDCWire* ptrWire = CDCWire::getInstance(hit);
60 
61  if (not ptrWire) {
62  B2WARNING("Encountered CDCHit with wire ids that do not correspond to a valid wire in the CDC)");
63  return Vector2D();
64  }
65 
66  const CDCWire& wire = *ptrWire;
67  Vector2D refPos2D = wire.getRefPos2D();
68  return refPos2D;
69 }
70 
71 
72 float CDCMCHitLookUp::getRefDriftLength(const CDCHit* ptrHit) const
73 {
74 
75  if (not ptrHit) return NAN;
76  CDCWireHit wireHit(ptrHit);
77  return wireHit.getRefDriftLength();
78 
79 }
80 
81 
82 const Vector3D CDCMCHitLookUp::getRecoPos3D(const CDCHit* ptrHit) const
83 {
85 }
86 
87 
89 {
91 }
92 
93 
95 {
97 }
98 
99 
100 
102 {
104 }
105 
106 
108 {
109  return CDCMCManager::getSimHitLookUp().getRLInfo(ptrHit);
110 }
111 
112 
113 bool CDCMCHitLookUp::isBackground(const CDCHit* ptrHit) const
114 {
115  const CDCSimHit* ptrSimHit = getSimHit(ptrHit);
116  return ptrSimHit ? ptrSimHit->getBackgroundTag() != BackgroundMetaData::bg_none : false;
117 }
118 
119 
120 ITrackType CDCMCHitLookUp::getMCTrackId(const CDCHit* ptrHit) const
121 {
122  const MCParticle* ptrMCParticle = getMCParticle(ptrHit);
123  return ptrMCParticle ? ptrMCParticle->getArrayIndex() : INVALID_ITRACK;
124 }
125 
126 
127 Index CDCMCHitLookUp::getInTrackId(const CDCHit* ptrHit) const
128 {
130 }
131 
132 
133 Index CDCMCHitLookUp::getInTrackSegmentId(const CDCHit* ptrHit) const
134 {
136 }
137 
138 
140 {
142 }
143 
144 
145 Index CDCMCHitLookUp::getNLoops(const CDCHit* ptrHit) const
146 {
147  return CDCMCManager::getMCTrackStore().getNLoops(ptrHit);
148 }
Class containing the result of the unpacker in raw data and the result of the digitizer in simulation...
Definition: CDCHit.h:40
Example Detector.
Definition: CDCSimHit.h:21
A Class to store the Monte Carlo particle information.
Definition: MCParticle.h:32
int getArrayIndex() const
Get 0-based index of the particle in the corresponding MCParticle list.
Definition: MCParticle.h:244
virtual unsigned short getBackgroundTag() const
Get background tag.
Definition: SimHitBase.h:46
Interface class to the Monte Carlo information for individual hits.
Index getNPassedSuperLayers(const CDCHit *ptrHit) const
Returns the number of superlayers the track traversed until this hit.
const Vector3D getClosestPrimaryRecoPos3D(const CDCHit *ptrHit) const
Getter for the three dimensional position of the ionisation of the primary simulated hit for the hit.
void fill() const
Method for forwarding a request to fill the Monte Carlo lookup tables from Python.
bool isReassignedSecondary(const CDCHit *ptrHit) const
Indicates if the hit was reassigned to a different mc particle because it was caused by a secondary.
float getRefDriftLength(const CDCHit *ptrHit) const
Getter for the reference drift length in the two dimensional projection.
const CDCSimHit * getClosestPrimarySimHit(const CDCHit *ptrHit) const
Getter for the closest simulated hit of a primary particle to the given hit - may return nullptr of n...
bool isBackground(const CDCHit *ptrHit) const
Returns if this hit is considered background.
Index getInTrackSegmentId(const CDCHit *ptrHit) const
Returns the id of the segment in the track.
Index getNLoops(const CDCHit *ptrHit) const
Returns the number of loops the track traversed until this hit.
const Vector2D getRefPos2D(const CDCHit *ptrHit) const
Getter for the two dimensional reference position of the wire the given hit is located on - mainly fo...
ITrackType getMCTrackId(const CDCHit *ptrHit) const
Returns the track id for the hit.
const Belle2::MCParticle * getMCParticle(const CDCHit *ptrHit) const
Getter for the MCParticle which is related to the CDCHit contained in the given wire hit.
const Belle2::CDCSimHit * getSimHit(const CDCHit *ptrHit) const
Getter for the CDCSimHit which is related to the CDCHit contained in the given wire hit.
Index getInTrackId(const CDCHit *ptrHit) const
Returns the position of the wire hit in the track along the travel direction.
static const CDCMCHitLookUp & getInstance()
Getter for the singletone instance.
ERightLeft getRLInfo(const CDCHit *ptrHit) const
Returns the true right left passage information.
const Vector3D getRecoPos3D(const CDCHit *ptrHit) const
Getter for the three dimensional position of the primary ionisation for the hit.
static const CDCSimHitLookUp & getSimHitLookUp()
Getter for the singletone instance of the CDCSimHitLookUp.
Definition: CDCMCManager.cc:90
static const CDCMCHitLookUp & getMCHitLookUp()
Getter for the singletone instance of the CDCMCHitLookUp.
Definition: CDCMCManager.cc:95
static const CDCMCTrackStore & getMCTrackStore()
Getter for the singletone instance of the CDCMCTrackStore.
Definition: CDCMCManager.cc:85
static const CDCMCMap & getMCMap()
Getter for the singletone instance of the CDCMCMap.
Definition: CDCMCManager.cc:80
void fill()
Fill Monte Carlo look up maps from the DataStore.
static CDCMCManager & getInstance()
Getter for the singletone instance.
Definition: CDCMCManager.cc:74
MayBePtr< const CDCSimHit > getSimHit(const CDCHit *hit) const
Seeks the CDCSimHit related to the CDCHit.
Definition: CDCMCMap.cc:249
MayBePtr< const MCParticle > getMCParticle(const CDCHit *hit) const
Seeks the MCParticle related to the CDCHit.
Definition: CDCMCMap.cc:269
bool isReassignedSecondary(const CDCSimHit *ptrSimHit) const
Indicates if the CDCSimHit has been reassigned to a primary MCParticle.
Definition: CDCMCMap.h:110
Index getNPassedSuperLayers(const CDCHit *ptrHit) const
Getter for the number of super layers traversed until this hit.
Index getInTrackSegmentId(const CDCHit *ptrHit) const
Getter for the index of the segment of the hit within its track.
Index getNLoops(const CDCHit *ptrHit) const
Getter for the number of traversed loops until this hit.
Index getInTrackId(const CDCHit *ptrHit) const
Getter for the index of the hit within its track.
Vector3D getRecoPos3D(const CDCHit *ptrHit) const
Look up the position of the primary ionisation from related simulated hit.
MayBePtr< const CDCSimHit > getClosestPrimarySimHit(const CDCSimHit *ptrSimHit) const
Helper function to find the closest primary hit for the given CDCSimHit from the same MCParticle - nu...
ERightLeft getRLInfo(const CDCHit *ptrHit) const
Look up the Monte Carlo right left passage information for the given hit.
Vector3D getClosestPrimaryRecoPos3D(const CDCHit *ptrHit) const
Look up the position of the primary ionisation from the closest primary simulated hit.
Class representing a hit wire in the central drift chamber.
Definition: CDCWireHit.h:55
double getRefDriftLength() const
Getter for the drift length at the reference position of the wire.
Definition: CDCWireHit.h:224
Class representing a sense wire in the central drift chamber.
Definition: CDCWire.h:58
const Vector2D & getRefPos2D() const
Getter for the wire reference position for 2D tracking Gives the wire's reference position projected ...
Definition: CDCWire.h:229
static const CDCWire * getInstance(const WireID &wireID)
Getter from the wireID convinience object. Does not construct a new object.
Definition: CDCWire.cc:24
A two dimensional vector which is equipped with functions for correct handeling of orientation relat...
Definition: Vector2D.h:35
A three dimensional vector.
Definition: Vector3D.h:33
ERightLeft
Enumeration to represent the distinct possibilities of the right left passage.
Definition: ERightLeft.h:25
Abstract base class for different kinds of events.