Belle II Software  release-05-01-25
CDCSimHitLookUp.cc
1 /**************************************************************************
2  * BASF2 (Belle Analysis Framework 2) *
3  * Copyright(C) 2014 - Belle II Collaboration *
4  * *
5  * Author: The Belle II Collaboration *
6  * Contributors: Oliver Frost *
7  * *
8  * This software is provided "as is" without any warranty. *
9  **************************************************************************/
10 #include <tracking/trackFindingCDC/mclookup/CDCSimHitLookUp.h>
11 
12 #include <tracking/trackFindingCDC/mclookup/CDCMCManager.h>
13 #include <tracking/trackFindingCDC/mclookup/CDCMCMap.h>
14 
15 #include <tracking/trackFindingCDC/eventdata/hits/CDCRecoHit3D.h>
16 #include <tracking/trackFindingCDC/eventdata/hits/CDCRecoHit2D.h>
17 #include <tracking/trackFindingCDC/eventdata/hits/CDCWireHit.h>
18 
19 #include <tracking/trackFindingCDC/topology/CDCWireTopology.h>
20 
21 #include <tracking/trackFindingCDC/geometry/Vector3D.h>
22 
23 #include <tracking/trackFindingCDC/utilities/VectorRange.h>
24 
25 #include <cdc/dataobjects/CDCSimHit.h>
26 #include <cdc/dataobjects/CDCHit.h>
27 
28 #include <vector>
29 
30 using namespace Belle2;
31 using namespace TrackFindingCDC;
32 
34 {
36 }
37 
39 {
40  m_ptrMCMap = nullptr;
41 
42  m_primarySimHits.clear();
43  m_rightLeftInfos.clear();
44 }
45 
46 void CDCSimHitLookUp::fill(const CDCMCMap* ptrMCMap)
47 {
48  B2DEBUG(100, "In CDCSimHitLookUp::fill()");
49  clear();
50  m_ptrMCMap = ptrMCMap;
51 
53  fillRLInfo();
54 
55  B2DEBUG(100, "m_primarySimHits.size(): " << m_primarySimHits.size());
56  B2DEBUG(100, "m_rightLeftInfos.size(): " << m_rightLeftInfos.size());
57 }
58 
60 {
61  if (not m_ptrMCMap) {
62  B2WARNING("CDCMCMap not set. Cannot setup primary sim hit map");
63  return;
64  }
65 
66  const CDCMCMap& mcMap = *m_ptrMCMap;
67  int nMissingPrimarySimHits = 0;
68  for (const auto& relation : mcMap.getSimHitsByHit()) {
69 
70  const CDCHit* ptrHit = std::get<const CDCHit* const>(relation);
71  const CDCSimHit* ptrSimHit = std::get<const CDCSimHit*>(relation);
72 
73  if (not ptrSimHit) {
74  B2ERROR("CDCHit has no related CDCSimHit in CDCSimHitLookUp::fill()");
75  continue;
76  }
77 
78  if (mcMap.isReassignedSecondary(ptrSimHit)) {
79  MayBePtr<const CDCSimHit> primarySimHit = getClosestPrimarySimHit(ptrSimHit);
80  if (not primarySimHit) {
81  ++nMissingPrimarySimHits;
82  }
83  m_primarySimHits[ptrHit] = primarySimHit;
84  }
85  }
86  if (nMissingPrimarySimHits != 0) {
87  B2WARNING("NO primary hit found for " << nMissingPrimarySimHits << " reassigned secondaries");
88  }
89 }
90 
91 MayBePtr<const CDCSimHit> CDCSimHitLookUp::getClosestPrimarySimHit(const CDCSimHit* ptrSimHit) const
92 {
93  if (not ptrSimHit) {
94  return nullptr;
95  }
96  const CDCSimHit& simHit = *ptrSimHit;
97 
98  if (not m_ptrMCMap) {
99  B2WARNING("CDCMCMap not set. Cannot find primary sim hit");
100  return nullptr;
101  }
102 
103  const CDCMCMap& mcMap = *m_ptrMCMap;
104 
105  // Check if the CDCSimHit was reassigned from a secondary particle to its primary particle.
106  if (not mcMap.isReassignedSecondary(ptrSimHit)) {
107  return ptrSimHit;
108  } else {
109 
110  // Try to find the hit on the same wire from the primary particle.
111  const MCParticle* ptrMCParticle = mcMap.getMCParticle(ptrSimHit);
112  if (not ptrMCParticle) {
113  return nullptr;
114  }
115 
116  WireID wireID = simHit.getWireID();
117  std::vector<const CDCSimHit*> primarySimHitsOnSameOrNeighborWire;
118  const CDCWireTopology& wireTopology = CDCWireTopology::getInstance();
119 
120  for (const auto& simHitByMCParticleRelation : mcMap.getSimHits(ptrMCParticle)) {
121 
122  const CDCSimHit* ptrPrimarySimHit = std::get<const CDCSimHit*>(simHitByMCParticleRelation);
123  if (mcMap.isReassignedSecondary(ptrPrimarySimHit) or not ptrPrimarySimHit) continue;
124 
125  const CDCSimHit& primarySimHit = *ptrPrimarySimHit;
126 
127  if (wireTopology.arePrimaryNeighbors(primarySimHit.getWireID(), wireID) or
128  primarySimHit.getWireID() == wireID) {
129 
130  // Found a hit on the same wire from the primary particle.
131  primarySimHitsOnSameOrNeighborWire.push_back(ptrPrimarySimHit);
132  }
133  }
134 
135  // Now from the neighboring primary CDCSimHits pick to one with the smallest distance to the
136  // secondary CDCSimHit.
137  auto compareDistanceBetweenSimHits =
138  [&simHit](const CDCSimHit * primarySimHit,
139  const CDCSimHit * otherPrimarySimHit) -> bool {
140  Vector3D primaryHitPos(primarySimHit->getPosTrack());
141  Vector3D otherPrimaryHitPos(otherPrimarySimHit->getPosTrack());
142  Vector3D secondaryHitPos(simHit.getPosTrack());
143  return primaryHitPos.distance(secondaryHitPos) < otherPrimaryHitPos.distance(secondaryHitPos);
144  };
145 
146  auto itClosestPrimarySimHit = std::min_element(primarySimHitsOnSameOrNeighborWire.begin(),
147  primarySimHitsOnSameOrNeighborWire.end(),
148  compareDistanceBetweenSimHits);
149 
150  if (itClosestPrimarySimHit != primarySimHitsOnSameOrNeighborWire.end()) {
151  // Found primary simulated hit for secondary hit.
152  return *itClosestPrimarySimHit;
153  } else {
154  return nullptr;
155  }
156  }
157 }
158 
160 {
161  if (not m_ptrMCMap) {
162  B2WARNING("CDCMCMap not set in look up of closest primary sim hit.");
163  return nullptr;
164  }
165  const CDCMCMap& mcMap = *m_ptrMCMap;
166 
167  if (mcMap.isReassignedSecondary(ptrHit)) {
168  auto itFoundPrimarySimHit = m_primarySimHits.find(ptrHit);
169  if (itFoundPrimarySimHit != m_primarySimHits.end()) {
170  const CDCSimHit* simHit = itFoundPrimarySimHit->second;
171  if (simHit) return simHit;
172  }
173  }
174  // Return the normal (potentially secondary) CDCSimHit of no primary is available
175  return mcMap.getSimHit(ptrHit);
176 }
177 
179 {
180  if (not ptrHit) return Vector3D();
181 
182  if (not m_ptrMCMap) {
183  B2WARNING("CDCMCMap not set. Cannot find direction of flight");
184  return Vector3D();
185  }
186 
187  const CDCMCMap& mcMap = *m_ptrMCMap;
188 
189  const CDCSimHit* ptrSimHit = mcMap.getSimHit(ptrHit);
190 
191  if (not ptrSimHit) return Vector3D();
192 
193  const CDCSimHit* ptrPrimarySimHit =
194  mcMap.isReassignedSecondary(ptrHit) ? getClosestPrimarySimHit(ptrHit) : ptrSimHit;
195 
196  if (not ptrPrimarySimHit) {
197  // if no primary simhit is close to the secondary hit we can only take the secondary
198  ptrPrimarySimHit = ptrSimHit;
199 
200  // or invent something better at some point...
201  }
202 
203  const CDCSimHit& primarySimHit = *ptrPrimarySimHit;
204 
205  // Take the momentum of the primary hit
206  Vector3D directionOfFlight{primarySimHit.getMomentum()};
207  return directionOfFlight;
208 }
209 
211 {
212 
213  if (not m_ptrMCMap) {
214  B2WARNING("CDCMCMap not set. Cannot setup right left passage information map");
215  return;
216  }
217  const CDCMCMap& mcMap = *m_ptrMCMap;
218 
219  for (const auto& relation : mcMap.getSimHitsByHit()) {
220 
221  const CDCHit* ptrHit = std::get<const CDCHit* const>(relation);
222  const CDCSimHit* ptrSimHit = std::get<const CDCSimHit*>(relation);
223 
224  if (not ptrSimHit) continue;
225  const CDCSimHit& simHit = *ptrSimHit;
226 
227  Vector3D directionOfFlight = getDirectionOfFlight(ptrHit);
228  if (directionOfFlight.isNull()) continue;
229 
230  // find out if the wire is right or left of the track ( view in flight direction )
231  Vector3D trackPosToWire{simHit.getPosWire() - simHit.getPosTrack()};
232  ERightLeft rlInfo = trackPosToWire.xy().isRightOrLeftOf(directionOfFlight.xy());
233  m_rightLeftInfos[ptrHit] = rlInfo;
234  }
235 }
236 
238 {
239  auto itFoundHit = m_rightLeftInfos.find(ptrHit);
240  return itFoundHit == m_rightLeftInfos.end() ? ERightLeft::c_Invalid : itFoundHit->second;
241 }
242 
244 {
245  if (not m_ptrMCMap) {
246  B2WARNING("CDCMCMap not set. Cannot find reconstructed position");
247  return Vector3D();
248  }
249 
250  const CDCMCMap& mcMap = *m_ptrMCMap;
251  const CDCSimHit* ptrSimHit = mcMap.getSimHit(ptrHit);
252 
253  if (not ptrSimHit) {
254  B2WARNING("No CDCSimHit related to CDCHit");
255  return Vector3D();
256  }
257 
258  const CDCSimHit& simHit = *ptrSimHit;
259  return Vector3D{simHit.getPosTrack()};
260 }
261 
262 double CDCSimHitLookUp::getDriftLength(const CDCHit* ptrHit) const
263 {
264  if (not m_ptrMCMap) {
265  B2WARNING("CDCMCMap not set. Cannot find reconstructed position");
266  return NAN;
267  }
268 
269  const CDCMCMap& mcMap = *m_ptrMCMap;
270  const CDCSimHit* ptrSimHit = mcMap.getSimHit(ptrHit);
271 
272  if (not ptrSimHit) {
273  B2WARNING("No CDCSimHit related to CDCHit");
274  return NAN;
275  }
276 
277  const CDCSimHit& simHit = *ptrSimHit;
278  return simHit.getDriftLength();
279 }
280 
282 {
283  const CDCSimHit* ptrPrimarySimHit = getClosestPrimarySimHit(ptrHit);
284  if (ptrPrimarySimHit) {
285  const CDCSimHit& primarySimHit = *ptrPrimarySimHit;
286  return Vector3D{primarySimHit.getPosTrack()};
287  } else {
288  return getRecoPos3D(ptrHit);
289  }
290 }
292 {
293  const CDCSimHit* ptrPrimarySimHit = getClosestPrimarySimHit(ptrHit);
294  if (ptrPrimarySimHit) {
295  const CDCSimHit& primarySimHit = *ptrPrimarySimHit;
296  return primarySimHit.getDriftLength();
297  } else {
298  return getDriftLength(ptrHit);
299  }
300 }
301 
303  const std::vector<CDCWireHit>& wireHits) const
304 {
305  if (not ptrHit) return nullptr;
306  ConstVectorRange<CDCWireHit> wireHit{std::equal_range(wireHits.begin(), wireHits.end(), *ptrHit)};
307 
308  if (wireHit.empty()) {
309  return nullptr;
310  } else {
311  return &(wireHit.front());
312  }
313 }
314 
316  const std::vector<CDCWireHit>& wireHits) const
317 {
318  ERightLeft rlInfo = getRLInfo(ptrHit);
319  double driftLength = getDriftLength(ptrHit);
320  const CDCWireHit* wireHit = getWireHit(ptrHit, wireHits);
321  B2ASSERT("Could not find CDCWireHit for the requested hit", wireHit);
322  return CDCRLWireHit(wireHit, rlInfo, driftLength, CDCWireHit::c_simpleDriftLengthVariance);
323 }
324 
326  const std::vector<CDCWireHit>& wireHits) const
327 {
328  CDCRLWireHit rlWireHit = getRLWireHit(ptrHit, wireHits);
329  double driftLength = getDriftLength(ptrHit);
330  rlWireHit.setRefDriftLength(driftLength);
331  Vector3D recoPos3D = getRecoPos3D(ptrHit);
332  return CDCRecoHit3D(rlWireHit, recoPos3D);
333 }
334 
337  const std::vector<CDCWireHit>& wireHits) const
338 {
339  CDCRLWireHit rlWireHit = getRLWireHit(ptrHit, wireHits);
340  double driftLength = getClosestPrimaryDriftLength(ptrHit);
341  rlWireHit.setRefDriftLength(driftLength);
342  Vector3D recoPos3D = getClosestPrimaryRecoPos3D(ptrHit);
343  return CDCRecoHit3D(rlWireHit, recoPos3D);
344 }
345 
347  const std::vector<CDCWireHit>& wireHits) const
348 {
349  return getRecoHit3D(ptrHit, wireHits).getRecoHit2D();
350 }
351 
354  const std::vector<CDCWireHit>& wireHits) const
355 {
356  return getClosestPrimaryRecoHit3D(ptrHit, wireHits).getRecoHit2D();
357 }
Belle2::WireID
Class to identify a wire inside the CDC.
Definition: WireID.h:44
Belle2::TrackFindingCDC::CDCSimHitLookUp::getInstance
static const CDCSimHitLookUp & getInstance()
Getter for the singletone instance.
Definition: CDCSimHitLookUp.cc:33
Belle2::Vector3D
HepGeom::Vector3D< double > Vector3D
3D Vector
Definition: Cell.h:35
Belle2::TrackFindingCDC::CDCMCMap::getSimHits
auto getSimHits(const MCParticle *mcParticle) const
Getter for the range MCParticle to CDCSimHits relations which come from the given MCParticle.
Definition: CDCMCMap.h:108
Belle2::TrackFindingCDC::CDCRecoHit3D
Class representing a three dimensional reconstructed hit.
Definition: CDCRecoHit3D.h:62
Belle2::CDCSimHit::getPosTrack
TVector3 getPosTrack() const
The method to get position on the track.
Definition: CDCSimHit.h:234
Belle2::TrackFindingCDC::CDCSimHitLookUp::getDriftLength
double getDriftLength(const CDCHit *ptrHit) const
Look up the drift length from the primary ionisation to the wire from related simulated hit.
Definition: CDCSimHitLookUp.cc:262
Belle2::CDCHit
Class containing the result of the unpacker in raw data and the result of the digitizer in simulation...
Definition: CDCHit.h:51
Belle2::TrackFindingCDC::CDCWireTopology::getInstance
static CDCWireTopology & getInstance()
Getter for the singleton instance of the wire topology.
Definition: CDCWireTopology.cc:22
Belle2::TrackFindingCDC::CDCSimHitLookUp::getDirectionOfFlight
Vector3D getDirectionOfFlight(const CDCHit *ptrHit)
Calculate the local direction of flight. If the hit is secondary take the direction of flight from a ...
Definition: CDCSimHitLookUp.cc:178
Belle2::TrackFindingCDC::CDCSimHitLookUp::getRLWireHit
CDCRLWireHit getRLWireHit(const CDCHit *ptrHit, const std::vector< CDCWireHit > &wireHits) const
Retrieve the wire hit including right left passage information for the given CDCHit form the given wi...
Definition: CDCSimHitLookUp.cc:315
Belle2::TrackFindingCDC::CDCSimHitLookUp::clear
void clear()
Clear all information from the last event.
Definition: CDCSimHitLookUp.cc:38
Belle2::TrackFindingCDC::CDCMCMap::getMCParticle
MayBePtr< const MCParticle > getMCParticle(const CDCHit *hit) const
Seeks the MCParticle related to the CDCHit.
Definition: CDCMCMap.cc:273
Belle2::TrackFindingCDC::CDCSimHitLookUp::getRecoPos3D
Vector3D getRecoPos3D(const CDCHit *ptrHit) const
Look up the position of the primary ionisation from related simulated hit.
Definition: CDCSimHitLookUp.cc:243
Belle2::CDCSimHit
Example Detector.
Definition: CDCSimHit.h:33
Belle2::TrackFindingCDC::CDCSimHitLookUp::fill
void fill(const CDCMCMap *ptrMCMap)
Gather the information about the right left passage using the CDCMCMap.
Definition: CDCSimHitLookUp.cc:46
Belle2::TrackFindingCDC::CDCSimHitLookUp::getClosestPrimaryRecoPos3D
Vector3D getClosestPrimaryRecoPos3D(const CDCHit *ptrHit) const
Look up the position of the primary ionisation from the closest primary simulated hit.
Definition: CDCSimHitLookUp.cc:281
Belle2::TrackFindingCDC::CDCSimHitLookUp::getClosestPrimaryRecoHit2D
CDCRecoHit2D getClosestPrimaryRecoHit2D(const CDCHit *ptrHit, const std::vector< CDCWireHit > &wireHits) const
Construct an CDCRecoHit2D from the closest primary CDCSimHit information related to the CDCHit.
Definition: CDCSimHitLookUp.cc:353
Belle2::TrackFindingCDC::CDCRecoHit2D
Class representing a two dimensional reconstructed hit in the central drift chamber.
Definition: CDCRecoHit2D.h:57
Belle2::TrackFindingCDC::CDCSimHitLookUp::m_primarySimHits
std::map< const CDCHit *, MayBePtr< const CDCSimHit > > m_primarySimHits
Memory for the look up relation of close primary CDCSimHits.
Definition: CDCSimHitLookUp.h:135
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19
Belle2::TrackFindingCDC::CDCRLWireHit
Class representing an oriented hit wire including a hypotheses whether the causing track passes left ...
Definition: CDCRLWireHit.h:51
Belle2::TrackFindingCDC::Vector3D
A three dimensional vector.
Definition: Vector3D.h:34
Belle2::TrackFindingCDC::CDCSimHitLookUp::getRecoHit2D
CDCRecoHit2D getRecoHit2D(const CDCHit *ptrHit, const std::vector< CDCWireHit > &wireHits) const
Construct an CDCRecoHit2D from the (potential secondary) CDCSimHit information related to the CDCHit.
Definition: CDCSimHitLookUp.cc:346
Belle2::TrackFindingCDC::CDCSimHitLookUp::getClosestPrimaryDriftLength
double getClosestPrimaryDriftLength(const CDCHit *ptrHit) const
Look up the drift length from the primary ionisation to the wire from related simulated hit.
Definition: CDCSimHitLookUp.cc:291
Belle2::TrackFindingCDC::Vector3D::distance
double distance(const Vector3D &rhs=Vector3D(0.0, 0.0, 0.0)) const
Calculates the distance of this point to the rhs.
Definition: Vector3D.h:236
Belle2::TrackFindingCDC::Vector3D::isNull
bool isNull() const
Checks if the vector is the null vector.
Definition: Vector3D.h:151
Belle2::TrackFindingCDC::CDCSimHitLookUp::getClosestPrimaryRecoHit3D
CDCRecoHit3D getClosestPrimaryRecoHit3D(const CDCHit *ptrHit, const std::vector< CDCWireHit > &wireHits) const
Construct an CDCRecoHit3D from the closest primary CDCSimHit information related to the CDCHit.
Definition: CDCSimHitLookUp.cc:336
Belle2::TrackFindingCDC::CDCSimHitLookUp
Singletone class to gather local information about the hits.
Definition: CDCSimHitLookUp.h:50
Belle2::TrackFindingCDC::NRightLeft::ERightLeft
ERightLeft
Enumeration to represent the distinct possibilities of the right left passage.
Definition: ERightLeft.h:35
Belle2::CDCSimHit::getDriftLength
double getDriftLength() const
The method to get drift length.
Definition: CDCSimHit.h:198
Belle2::TrackFindingCDC::CDCWireTopology::arePrimaryNeighbors
bool arePrimaryNeighbors(const WireID &wireID, const WireID &otherWireID) const
Checks if two wires are primary neighbors.
Definition: CDCWireTopology.h:211
Belle2::TrackFindingCDC::CDCRLWireHit::setRefDriftLength
void setRefDriftLength(double driftLength)
Setter for the drift length at the reference position of the wire.
Definition: CDCRLWireHit.h:220
Belle2::TrackFindingCDC::Range
A pair of iterators usable with the range base for loop.
Definition: Range.h:35
Belle2::TrackFindingCDC::CDCMCManager::getSimHitLookUp
static const CDCSimHitLookUp & getSimHitLookUp()
Getter for the singletone instance of the CDCSimHitLookUp.
Definition: CDCMCManager.cc:92
Belle2::CDCSimHit::getPosWire
TVector3 getPosWire() const
The method to get position on wire.
Definition: CDCSimHit.h:216
Belle2::TrackFindingCDC::CDCSimHitLookUp::getRecoHit3D
CDCRecoHit3D getRecoHit3D(const CDCHit *ptrHit, const std::vector< CDCWireHit > &wireHits) const
Construct an CDCRecoHit3D from the (potential secondary) CDCSimHit information related to the CDCHit.
Definition: CDCSimHitLookUp.cc:325
Belle2::TrackFindingCDC::Vector3D::xy
const Vector2D & xy() const
Getter for the xy projected vector ( reference ! )
Definition: Vector3D.h:500
Belle2::TrackFindingCDC::CDCMCMap::getSimHit
MayBePtr< const CDCSimHit > getSimHit(const CDCHit *hit) const
Seeks the CDCSimHit related to the CDCHit.
Definition: CDCMCMap.cc:253
Belle2::TrackFindingCDC::CDCSimHitLookUp::getClosestPrimarySimHit
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...
Definition: CDCSimHitLookUp.cc:91
Belle2::TrackFindingCDC::CDCMCMap::isReassignedSecondary
bool isReassignedSecondary(const CDCSimHit *ptrSimHit) const
Indicates if the CDCSimHit has been reassigned to a primary MCParticle.
Definition: CDCMCMap.h:120
Belle2::TrackFindingCDC::CDCSimHitLookUp::getWireHit
const CDCWireHit * getWireHit(const CDCHit *ptrHit, const std::vector< CDCWireHit > &wireHits) const
Retrieve the wire hit the given CDCHit form the given wire hits.
Definition: CDCSimHitLookUp.cc:302
Belle2::CDCSimHit::getMomentum
TVector3 getMomentum() const
The method to get momentum.
Definition: CDCSimHit.h:210
Belle2::MCParticle
A Class to store the Monte Carlo particle information.
Definition: MCParticle.h:43
Belle2::TrackFindingCDC::CDCWireHit
Class representing a hit wire in the central drift chamber.
Definition: CDCWireHit.h:65
Belle2::TrackFindingCDC::CDCSimHitLookUp::m_rightLeftInfos
std::map< const CDCHit *, ERightLeft > m_rightLeftInfos
Memory for the look up relation of the right left passage information as defined in tracking.
Definition: CDCSimHitLookUp.h:138
Belle2::TrackFindingCDC::CDCSimHitLookUp::m_ptrMCMap
const CDCMCMap * m_ptrMCMap
Reference to the CDCMCMap to be used in this event.
Definition: CDCSimHitLookUp.h:132
Belle2::TrackFindingCDC::CDCWireHit::c_simpleDriftLengthVariance
static constexpr const double c_simpleDriftLengthVariance
A default value for the drift length variance if no variance from the drift length translation is ava...
Definition: CDCWireHit.h:74
Belle2::TrackFindingCDC::CDCMCMap::getSimHitsByHit
const std::multimap< const CDCHit *, const CDCSimHit * > & getSimHitsByHit() const
Getter for the CDCHit -> CDCSimHit relations.
Definition: CDCMCMap.h:144
Belle2::TrackFindingCDC::CDCMCMap
Class to organize and present the monte carlo hit information.
Definition: CDCMCMap.h:38
Belle2::CDCSimHit::getWireID
WireID getWireID() const
Getter for WireID object.
Definition: CDCSimHit.h:189
Belle2::TrackFindingCDC::CDCSimHitLookUp::fillRLInfo
void fillRLInfo()
Construct the look up relation for the right left passage information as used in track finding.
Definition: CDCSimHitLookUp.cc:210
Belle2::TrackFindingCDC::CDCWireTopology
Class representating the sense wire arrangement in the whole of the central drift chamber.
Definition: CDCWireTopology.h:54
Belle2::TrackFindingCDC::CDCSimHitLookUp::fillPrimarySimHits
void fillPrimarySimHits()
Constructs the relation from reassigned secondary to a close by primary hit from the same MCParticle.
Definition: CDCSimHitLookUp.cc:59
Belle2::TrackFindingCDC::CDCRecoHit3D::getRecoHit2D
CDCRecoHit2D getRecoHit2D() const
Constructs a two dimensional reconstructed hit by carrying out the stereo ! projection to the wire re...
Definition: CDCRecoHit3D.cc:199
Belle2::TrackFindingCDC::CDCSimHitLookUp::getRLInfo
ERightLeft getRLInfo(const CDCHit *ptrHit) const
Look up the Monte Carlo right left passage information for the given hit.
Definition: CDCSimHitLookUp.cc:237