Belle II Software development
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
26using namespace Belle2;
27using namespace TrackFindingCDC;
28
29
31{
33}
34
35
37{
39}
40
41
43{
44 return CDCMCManager::getMCMap().getSimHit(ptrHit);
45}
46
47
49{
51}
52
53
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
72float 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
83{
85}
86
87
89{
91}
92
93
95{
97}
98
99
100
102{
104}
105
106
108{
110}
111
112
113bool 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
120ITrackType CDCMCHitLookUp::getMCTrackId(const CDCHit* ptrHit) const
121{
122 const MCParticle* ptrMCParticle = getMCParticle(ptrHit);
123 return ptrMCParticle ? ptrMCParticle->getArrayIndex() : INVALID_ITRACK;
124}
125
126
127Index CDCMCHitLookUp::getInTrackId(const CDCHit* ptrHit) const
128{
130}
131
132
134{
136}
137
138
140{
142}
143
144
145Index CDCMCHitLookUp::getNLoops(const CDCHit* ptrHit) const
146{
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 singleton instance of the CDCSimHitLookUp.
Definition: CDCMCManager.cc:90
static const CDCMCHitLookUp & getMCHitLookUp()
Getter for the singleton instance of the CDCMCHitLookUp.
Definition: CDCMCManager.cc:95
static const CDCMCTrackStore & getMCTrackStore()
Getter for the singleton instance of the CDCMCTrackStore.
Definition: CDCMCManager.cc:85
static const CDCMCMap & getMCMap()
Getter for the singleton 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 singleton 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
static const CDCWire * getInstance(const WireID &wireID)
Getter from the wireID convenience object. Does not construct a new object.
Definition: CDCWire.cc:24
const Vector2D & getRefPos2D() const
Getter for the wire reference position for 2D tracking Gives the wire's reference position projected ...
Definition: CDCWire.h:229
A two dimensional vector which is equipped with functions for correct handling of orientation relate...
Definition: Vector2D.h:32
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.