Belle II Software  release-05-02-19
CDCWireTopology.h
1 /**************************************************************************
2  * BASF2 (Belle Analysis Framework 2) *
3  * Copyright(C) 2013 - 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 #pragma once
11 
12 #include <tracking/trackFindingCDC/topology/CDCWireSuperLayer.h>
13 #include <tracking/trackFindingCDC/topology/CDCWireLayer.h>
14 
15 #include <tracking/trackFindingCDC/topology/WireNeighborKind.h>
16 #include <tracking/trackFindingCDC/topology/WireNeighborPair.h>
17 #include <tracking/trackFindingCDC/topology/CDCWire.h>
18 
19 #include <tracking/trackFindingCDC/topology/ISuperLayer.h>
20 #include <tracking/trackFindingCDC/topology/ILayer.h>
21 #include <tracking/trackFindingCDC/topology/IWire.h>
22 #include <tracking/trackFindingCDC/topology/EWirePosition.h>
23 
24 #include <tracking/trackFindingCDC/utilities/MayBePtr.h>
25 
26 #include <cdc/dataobjects/WireID.h>
27 
28 #include <vector>
29 
30 namespace Belle2 {
35  namespace TrackFindingCDC {
36 
46  class CDCWireTopology {
47 
48  public:
50  static CDCWireTopology& getInstance();
51 
52  public:
55  { initialize(); }
56 
58  CDCWireTopology(const CDCWireTopology& wireTopology) = delete;
59 
61  void operator=(const CDCWireTopology& wireTopology) = delete;
62 
63  public:
65  static const IWire c_NWires = 14336;
66 
68  static const ILayer c_NLayers = 56;
69 
71  static const ISuperLayer c_NSuperLayers = 9;
72 
73  private:
78  void initialize();
79 
80  public:
82  void reinitialize(EWirePosition wirePosition, bool ignoreWireSag);
83 
84  public:
89 
92  bool isValidWireID(const WireID& wireID) const
93  { return isValidIWire(wireID.getISuperLayer(), wireID.getILayer(), wireID.getIWire()); }
94 
96  bool isValidIWire(ILayer iCLayer, IWire iWire) const
97  { return isValidICLayer(iCLayer) and getWireLayer(iCLayer).isValidIWire(iWire); }
98 
100  bool isValidIWire(ISuperLayer iSuperLayer, ILayer iLayer, IWire iWire) const
101  { return isValidISuperLayer(iSuperLayer) and getWireSuperLayer(iSuperLayer).isValidIWire(iLayer, iWire); }
102 
104  const CDCWire& getWire(const WireID& wireId) const
105  { return getWireLayer(wireId.getICLayer()).getWire(wireId.getIWire()) ; }
106 
108  const CDCWire& getWire(ILayer iCLayer, IWire iWire) const
109  { return getWireLayer(iCLayer).getWire(iWire) ; }
110 
112  const CDCWire& getWire(ISuperLayer iSuperLayer, ILayer iLayer , IWire iWire) const
113  { return getWireSuperLayer(iSuperLayer).getWireLayer(iLayer).getWire(iWire) ; }
114 
116  const std::vector<Belle2::TrackFindingCDC::CDCWire>& getWires() const
117  { return m_wires; }
119 
124 
127  ILayer getNLayers() const
128  { return getWireLayers().size(); }
129 
131  bool isValidICLayer(ILayer iCLayer) const
132  { return 0 <= iCLayer and iCLayer < int(getWireLayers().size()); }
133 
135  bool isValidILayer(ISuperLayer iSuperLayer, ILayer iLayer) const
136  { return isValidISuperLayer(iSuperLayer) and getWireSuperLayer(iSuperLayer).isValidILayer(iLayer); }
137 
139  const CDCWireLayer& getWireLayer(const WireID& wireId) const
140  { return getWireLayer(wireId.getICLayer()); }
141 
143  const CDCWireLayer& getWireLayer(ILayer iCLayer) const
144  { return m_wireLayers[ iCLayer ]; }
145 
147  const CDCWireLayer& getWireLayer(ISuperLayer iSuperLayer, ILayer iLayer) const
148  { return getWireSuperLayer(iSuperLayer).getWireLayer(iLayer); }
149 
151  const std::vector<Belle2::TrackFindingCDC::CDCWireLayer>& getWireLayers() const
152  { return m_wireLayers; }
154 
159 
162  ISuperLayer getNSuperLayers() const
163  { return getWireSuperLayers().size(); }
164 
166  bool isValidISuperLayer(ISuperLayer iSuperLayer) const
167  { return 0 <= iSuperLayer and iSuperLayer < int(getWireSuperLayers().size()); }
168 
170  ISuperLayer getISuperLayerAtCylindricalR(double cylindricalR);
171 
173  const CDCWireSuperLayer& getWireSuperLayer(const WireID& wireID) const
174  { return getWireSuperLayer(wireID.getISuperLayer()); }
175 
177  const CDCWireSuperLayer& getWireSuperLayer(ISuperLayer iSuperLayer) const
178  {
179  return m_wireSuperLayers[iSuperLayer];
180  }
181 
183  const std::vector<Belle2::TrackFindingCDC::CDCWireSuperLayer>& getWireSuperLayers() const
184  { return m_wireSuperLayers; }
186 
200  WireNeighborKind getNeighborKind(const WireID& wireID, const WireID& otherWireID) const;
201 
203  bool arePrimaryNeighbors(const WireID& wireID, const WireID& otherWireID) const
204  { return getNeighborKind(wireID, otherWireID).getCellDistance() == 1; }
205 
207  bool areSeconaryNeighbors(const WireID& wireID, const WireID& otherWireID) const
208  { return getNeighborKind(wireID, otherWireID).getCellDistance() == 2; }
209 
211  MayBePtr<const CDCWire> getPrimaryNeighbor(short oClockDirection, const WireID& wireID) const
212  { return getPrimaryNeighbor(oClockDirection, wireID.getISuperLayer(), wireID.getILayer(), wireID.getIWire()); }
213 
216  { return getNeighborsOutwards(wireID.getISuperLayer(), wireID.getILayer(), wireID.getIWire()); }
217 
220  { return getNeighborsInwards(wireID.getISuperLayer(), wireID.getILayer(), wireID.getIWire()); }
221 
223  MayBePtr<const CDCWire> getNeighborCCWOutwards(const WireID& wireID) const
224  { return getNeighborCCWOutwards(wireID.getISuperLayer(), wireID.getILayer(), wireID.getIWire()); }
225 
227  MayBePtr<const CDCWire> getNeighborCWOutwards(const WireID& wireID) const
228  { return getNeighborCWOutwards(wireID.getISuperLayer(), wireID.getILayer(), wireID.getIWire()); }
229 
231  MayBePtr<const CDCWire> getNeighborCCW(const WireID& wireID) const
232  { return getNeighborCCW(wireID.getISuperLayer(), wireID.getILayer(), wireID.getIWire()); }
233 
235  MayBePtr<const CDCWire> getNeighborCW(const WireID& wireID) const
236  { return getNeighborCW(wireID.getISuperLayer(), wireID.getILayer(), wireID.getIWire()); }
237 
239  MayBePtr<const CDCWire> getNeighborCCWInwards(const WireID& wireID) const
240  { return getNeighborCCWInwards(wireID.getISuperLayer(), wireID.getILayer(), wireID.getIWire()); }
241 
243  MayBePtr<const CDCWire> getNeighborCWInwards(const WireID& wireID) const
244  { return getNeighborCWInwards(wireID.getISuperLayer(), wireID.getILayer(), wireID.getIWire()); }
256  MayBePtr<const CDCWire> getPrimaryNeighbor(short oClockDirection,
258  ISuperLayer iSuperLayer,
259  ILayer iLayer,
260  IWire iWire) const
261  { return getWireSuperLayer(iSuperLayer).getPrimaryNeighbor(oClockDirection, iLayer, iWire);}
262 
263 
265  WireNeighborPair getNeighborsOutwards(ISuperLayer iSuperLayer,
266  ILayer iLayer,
267  IWire iWire) const
268  { return getWireSuperLayer(iSuperLayer).getNeighborsOutwards(iLayer, iWire); }
269 
271  WireNeighborPair getNeighborsInwards(ISuperLayer iSuperLayer,
272  ILayer iLayer,
273  IWire iWire) const
274  { return getWireSuperLayer(iSuperLayer).getNeighborsInwards(iLayer, iWire); }
275 
277  MayBePtr<const CDCWire> getNeighborCCWOutwards(ISuperLayer iSuperLayer,
278  ILayer iLayer,
279  IWire iWire) const
280  { return getWireSuperLayer(iSuperLayer).getNeighborCCWOutwards(iLayer, iWire); }
281 
283  MayBePtr<const CDCWire> getNeighborCWOutwards(ISuperLayer iSuperLayer,
284  ILayer iLayer,
285  IWire iWire) const
286  { return getWireSuperLayer(iSuperLayer).getNeighborCWOutwards(iLayer, iWire); }
287 
289  MayBePtr<const CDCWire> getNeighborCCW(ISuperLayer iSuperLayer,
290  ILayer iLayer,
291  IWire iWire) const
292  { return getWireSuperLayer(iSuperLayer).getNeighborCCW(iLayer, iWire); }
293 
295  MayBePtr<const CDCWire> getNeighborCW(ISuperLayer iSuperLayer,
296  ILayer iLayer,
297  IWire iWire) const
298  { return getWireSuperLayer(iSuperLayer).getNeighborCW(iLayer, iWire); }
299 
301  MayBePtr<const CDCWire> getNeighborCCWInwards(ISuperLayer iSuperLayer,
302  ILayer iLayer,
303  IWire iWire) const
304  { return getWireSuperLayer(iSuperLayer).getNeighborCCWInwards(iLayer, iWire); }
305 
307  MayBePtr<const CDCWire> getNeighborCWInwards(ISuperLayer iSuperLayer,
308  ILayer iLayer,
309  IWire iWire) const
310  { return getWireSuperLayer(iSuperLayer).getNeighborCWInwards(iLayer, iWire); }
326  MayBePtr<const CDCWire> getSecondaryNeighbor(short oClockDirection, const WireID& wireID) const
328  { return getSecondaryNeighbor(oClockDirection, wireID.getISuperLayer(), wireID.getILayer(), wireID.getIWire()); }
329 
331  MayBePtr<const CDCWire> getSecondNeighborOneOClock(const WireID& wireID) const
332  { return getSecondNeighborOneOClock(wireID.getISuperLayer(), wireID.getILayer(), wireID.getIWire()); }
333 
335  MayBePtr<const CDCWire> getSecondNeighborTwoOClock(const WireID& wireID) const
336  { return getSecondNeighborTwoOClock(wireID.getISuperLayer(), wireID.getILayer(), wireID.getIWire()); }
337 
339  MayBePtr<const CDCWire> getSecondNeighborThreeOClock(const WireID& wireID) const
340  { return getSecondNeighborThreeOClock(wireID.getISuperLayer(), wireID.getILayer(), wireID.getIWire()); }
341 
343  MayBePtr<const CDCWire> getSecondNeighborFourOClock(const WireID& wireID) const
344  { return getSecondNeighborFourOClock(wireID.getISuperLayer(), wireID.getILayer(), wireID.getIWire()); }
345 
347  MayBePtr<const CDCWire> getSecondNeighborFiveOClock(const WireID& wireID) const
348  { return getSecondNeighborFiveOClock(wireID.getISuperLayer(), wireID.getILayer(), wireID.getIWire()); }
349 
351  MayBePtr<const CDCWire> getSecondNeighborSixOClock(const WireID& wireID) const
352  { return getSecondNeighborSixOClock(wireID.getISuperLayer(), wireID.getILayer(), wireID.getIWire()); }
353 
355  MayBePtr<const CDCWire> getSecondNeighborSevenOClock(const WireID& wireID) const
356  { return getSecondNeighborSevenOClock(wireID.getISuperLayer(), wireID.getILayer(), wireID.getIWire()); }
357 
359  MayBePtr<const CDCWire> getSecondNeighborEightOClock(const WireID& wireID) const
360  { return getSecondNeighborEightOClock(wireID.getISuperLayer(), wireID.getILayer(), wireID.getIWire()); }
361 
363  MayBePtr<const CDCWire> getSecondNeighborNineOClock(const WireID& wireID) const
364  { return getSecondNeighborNineOClock(wireID.getISuperLayer(), wireID.getILayer(), wireID.getIWire()); }
365 
367  MayBePtr<const CDCWire> getSecondNeighborTenOClock(const WireID& wireID) const
368  { return getSecondNeighborTenOClock(wireID.getISuperLayer(), wireID.getILayer(), wireID.getIWire()); }
369 
371  MayBePtr<const CDCWire> getSecondNeighborElevenOClock(const WireID& wireID) const
372  { return getSecondNeighborElevenOClock(wireID.getISuperLayer(), wireID.getILayer(), wireID.getIWire()); }
373 
375  MayBePtr<const CDCWire> getSecondNeighborTwelveOClock(const WireID& wireID) const
376  { return getSecondNeighborTwelveOClock(wireID.getISuperLayer(), wireID.getILayer(), wireID.getIWire()); }
391  MayBePtr<const CDCWire> getSecondaryNeighbor(short oClockDirection,
393  ISuperLayer iSuperLayer,
394  ILayer iLayer,
395  IWire iWire) const
396  { return getWireSuperLayer(iSuperLayer).getSecondaryNeighbor(oClockDirection, iLayer, iWire);}
397 
399  MayBePtr<const CDCWire> getSecondNeighborOneOClock(ISuperLayer iSuperLayer,
400  ILayer iLayer,
401  IWire iWire) const
402  { return getWireSuperLayer(iSuperLayer).getSecondNeighborOneOClock(iLayer, iWire); }
403 
405  MayBePtr<const CDCWire> getSecondNeighborTwoOClock(ISuperLayer iSuperLayer,
406  ILayer iLayer,
407  IWire iWire) const
408  { return getWireSuperLayer(iSuperLayer).getSecondNeighborTwoOClock(iLayer, iWire); }
409 
411  MayBePtr<const CDCWire> getSecondNeighborThreeOClock(ISuperLayer iSuperLayer,
412  ILayer iLayer,
413  IWire iWire) const
414  { return getWireSuperLayer(iSuperLayer).getSecondNeighborThreeOClock(iLayer, iWire); }
415 
417  MayBePtr<const CDCWire> getSecondNeighborFourOClock(ISuperLayer iSuperLayer,
418  ILayer iLayer,
419  IWire iWire) const
420  { return getWireSuperLayer(iSuperLayer).getSecondNeighborFourOClock(iLayer, iWire); }
421 
423  MayBePtr<const CDCWire> getSecondNeighborFiveOClock(ISuperLayer iSuperLayer,
424  ILayer iLayer,
425  IWire iWire) const
426  { return getWireSuperLayer(iSuperLayer).getSecondNeighborFiveOClock(iLayer, iWire); }
427 
429  MayBePtr<const CDCWire> getSecondNeighborSixOClock(ISuperLayer iSuperLayer,
430  ILayer iLayer,
431  IWire iWire) const
432  { return getWireSuperLayer(iSuperLayer).getSecondNeighborSixOClock(iLayer, iWire); }
433 
435  MayBePtr<const CDCWire> getSecondNeighborSevenOClock(ISuperLayer iSuperLayer,
436  ILayer iLayer,
437  IWire iWire) const
438  { return getWireSuperLayer(iSuperLayer).getSecondNeighborSevenOClock(iLayer, iWire); }
439 
441  MayBePtr<const CDCWire> getSecondNeighborEightOClock(ISuperLayer iSuperLayer,
442  ILayer iLayer,
443  IWire iWire) const
444  { return getWireSuperLayer(iSuperLayer).getSecondNeighborEightOClock(iLayer, iWire); }
445 
447  MayBePtr<const CDCWire> getSecondNeighborNineOClock(ISuperLayer iSuperLayer,
448  ILayer iLayer,
449  IWire iWire) const
450  { return getWireSuperLayer(iSuperLayer).getSecondNeighborNineOClock(iLayer, iWire); }
451 
453  MayBePtr<const CDCWire> getSecondNeighborTenOClock(ISuperLayer iSuperLayer,
454  ILayer iLayer,
455  IWire iWire) const
456  { return getWireSuperLayer(iSuperLayer).getSecondNeighborTenOClock(iLayer, iWire); }
457 
459  MayBePtr<const CDCWire> getSecondNeighborElevenOClock(ISuperLayer iSuperLayer,
460  ILayer iLayer,
461  IWire iWire) const
462  { return getWireSuperLayer(iSuperLayer).getSecondNeighborElevenOClock(iLayer, iWire); }
463 
465  MayBePtr<const CDCWire> getSecondNeighborTwelveOClock(ISuperLayer iSuperLayer,
466  ILayer iLayer,
467  IWire iWire) const
468  { return getWireSuperLayer(iSuperLayer).getSecondNeighborTwelveOClock(iLayer, iWire); }
471  public:
473  double getOuterCylindricalR() const
474  { return m_wireLayers.back().getOuterCylindricalR(); }
475 
477  double getInnerCylindricalR() const
478  { return m_wireLayers.front().getInnerCylindricalR(); }
479 
480  private:
482  std::vector<Belle2::TrackFindingCDC::CDCWire> m_wires;
483 
485  std::vector<Belle2::TrackFindingCDC::CDCWireLayer> m_wireLayers;
486 
488  std::vector<Belle2::TrackFindingCDC::CDCWireSuperLayer> m_wireSuperLayers;
489 
490  };
491  }
493 }
Belle2::TrackFindingCDC::CDCWireSuperLayer::getNeighborsOutwards
WireNeighborPair getNeighborsOutwards(ILayer iLayer, IWire iWire) const
Getter for the two closest neighbors in the layer outwards of the given on.
Definition: CDCWireSuperLayer.cc:100
Belle2::TrackFindingCDC::CDCWireTopology::getSecondNeighborFiveOClock
MayBePtr< const CDCWire > getSecondNeighborFiveOClock(const WireID &wireID) const
Getter for secondary neighbor at the five o'clock position.
Definition: CDCWireTopology.h:355
Belle2::WireID
Class to identify a wire inside the CDC.
Definition: WireID.h:44
Belle2::TrackFindingCDC::WireNeighborKind::getCellDistance
short getCellDistance() const
Get the distance to the wire neighbor counted in number of cells.
Definition: WireNeighborKind.h:72
Belle2::TrackFindingCDC::CDCWireTopology::getNSuperLayers
ISuperLayer getNSuperLayers() const
Getter for the total number of superlayers.
Definition: CDCWireTopology.h:170
Belle2::TrackFindingCDC::CDCWireTopology::getSecondNeighborSixOClock
MayBePtr< const CDCWire > getSecondNeighborSixOClock(const WireID &wireID) const
Getter for secondary neighbor at the six o'clock position.
Definition: CDCWireTopology.h:359
Belle2::TrackFindingCDC::CDCWireTopology::getNeighborsInwards
WireNeighborPair getNeighborsInwards(const WireID &wireID) const
Getter for the two closest neighbors in the layer inwards.
Definition: CDCWireTopology.h:227
Belle2::TrackFindingCDC::CDCWireTopology::getNeighborCW
MayBePtr< const CDCWire > getNeighborCW(const WireID &wireID) const
Getter for the nearest clockwise neighbor.
Definition: CDCWireTopology.h:243
Belle2::TrackFindingCDC::CDCWireTopology::getSecondNeighborTwoOClock
MayBePtr< const CDCWire > getSecondNeighborTwoOClock(const WireID &wireID) const
Getter for secondary neighbor at the two o'clock position.
Definition: CDCWireTopology.h:343
Belle2::TrackFindingCDC::CDCWireLayer::isValidIWire
bool isValidIWire(IWire iWire) const
Checks if the given wire id belongs to a valid wire in this layer.
Definition: CDCWireLayer.h:144
Belle2::TrackFindingCDC::CDCWireSuperLayer::getNeighborCCWOutwards
MayBePtr< const CDCWire > getNeighborCCWOutwards(ILayer iLayer, IWire iWire) const
Getter for the nearest clockwise neighbor in the next layer outwards by wire id and layer id with in ...
Definition: CDCWireSuperLayer.h:215
Belle2::WireID::getILayer
unsigned short getILayer() const
Getter for layer within the Super-Layer.
Definition: WireID.h:146
Belle2::TrackFindingCDC::CDCWireSuperLayer::getSecondNeighborFourOClock
MayBePtr< const CDCWire > getSecondNeighborFourOClock(ILayer iLayer, IWire iWire) const
Getter for secondary neighbor at the four o'clock position.
Definition: CDCWireSuperLayer.h:300
Belle2::TrackFindingCDC::CDCWireTopology::m_wireLayers
std::vector< Belle2::TrackFindingCDC::CDCWireLayer > m_wireLayers
Storage for all wire layers in the CDC.
Definition: CDCWireTopology.h:493
Belle2::TrackFindingCDC::CDCWireTopology::m_wires
std::vector< Belle2::TrackFindingCDC::CDCWire > m_wires
Storage for all wires in the CDC.
Definition: CDCWireTopology.h:490
Belle2::TrackFindingCDC::CDCWireTopology::areSeconaryNeighbors
bool areSeconaryNeighbors(const WireID &wireID, const WireID &otherWireID) const
Checks if two wires are secondary neighbors.
Definition: CDCWireTopology.h:215
Belle2::TrackFindingCDC::CDCWireSuperLayer::getSecondNeighborEightOClock
MayBePtr< const CDCWire > getSecondNeighborEightOClock(ILayer iLayer, IWire iWire) const
Getter for secondary neighbor at the eight o'clock position.
Definition: CDCWireSuperLayer.h:318
Belle2::TrackFindingCDC::CDCWireTopology::initialize
void initialize()
Create all wires, wire layers and wire superlayers and their interdependences with base geometry from...
Definition: CDCWireTopology.cc:29
Belle2::TrackFindingCDC::CDCWireTopology::getInstance
static CDCWireTopology & getInstance()
Getter for the singleton instance of the wire topology.
Definition: CDCWireTopology.cc:22
Belle2::WireID::getISuperLayer
unsigned short getISuperLayer() const
Getter for Super-Layer.
Definition: WireID.h:140
Belle2::TrackFindingCDC::CDCWireTopology::getNeighborCWInwards
MayBePtr< const CDCWire > getNeighborCWInwards(const WireID &wireID) const
Getter for the nearest clockwise neighbor in the next layer outwards.
Definition: CDCWireTopology.h:251
Belle2::TrackFindingCDC::CDCWireSuperLayer::getNeighborCW
MayBePtr< const CDCWire > getNeighborCW(ILayer iLayer, IWire iWire) const
Getter for the nearest clockwise neighbor by wire id and layer id with in this superlayer.
Definition: CDCWireSuperLayer.h:223
Belle2::TrackFindingCDC::CDCWireTopology::getWireLayer
const CDCWireLayer & getWireLayer(const WireID &wireId) const
Getter for wire layer getter by wireID object.
Definition: CDCWireTopology.h:147
Belle2::TrackFindingCDC::CDCWireSuperLayer::getNeighborCCW
MayBePtr< const CDCWire > getNeighborCCW(ILayer iLayer, IWire iWire) const
Getter for the nearest counterclockwise neighbor by wire id and layer id with in this superlayer.
Definition: CDCWireSuperLayer.h:227
Belle2::TrackFindingCDC::CDCWireTopology::getSecondNeighborElevenOClock
MayBePtr< const CDCWire > getSecondNeighborElevenOClock(const WireID &wireID) const
Getter for secondary neighbor at the eleven o'clock position.
Definition: CDCWireTopology.h:379
Belle2::TrackFindingCDC::CDCWireSuperLayer::getNeighborCWInwards
MayBePtr< const CDCWire > getNeighborCWInwards(ILayer iLayer, IWire iWire) const
Getter for the nearest clockwise neighbor in the next layer outwards by wire id and layer id with in ...
Definition: CDCWireSuperLayer.h:235
Belle2::TrackFindingCDC::CDCWireSuperLayer::getSecondNeighborElevenOClock
MayBePtr< const CDCWire > getSecondNeighborElevenOClock(ILayer iLayer, IWire iWire) const
Getter for secondary neighbor at the elven o'clock position.
Definition: CDCWireSuperLayer.h:331
Belle2::TrackFindingCDC::CDCWireSuperLayer::getNeighborCWOutwards
MayBePtr< const CDCWire > getNeighborCWOutwards(ILayer iLayer, IWire iWire) const
Getter for the nearest clockwise neighbor in the next layer outwards by wire id and layer id with in ...
Definition: CDCWireSuperLayer.h:219
Belle2::TrackFindingCDC::CDCWireTopology::c_NLayers
static const ILayer c_NLayers
Total number of layers.
Definition: CDCWireTopology.h:76
Belle2::TrackFindingCDC::CDCWireTopology::isValidWireID
bool isValidWireID(const WireID &wireID) const
Checks the validity of a wireID convinience object.
Definition: CDCWireTopology.h:100
Belle2::TrackFindingCDC::CDCWireSuperLayer::getSecondNeighborThreeOClock
MayBePtr< const CDCWire > getSecondNeighborThreeOClock(ILayer iLayer, IWire iWire) const
Getter for secondary neighbor at the three o'clock position.
Definition: CDCWireSuperLayer.h:296
Belle2::TrackFindingCDC::CDCWireTopology::getWireLayers
const std::vector< Belle2::TrackFindingCDC::CDCWireLayer > & getWireLayers() const
Getter for the underlying storing layer vector.
Definition: CDCWireTopology.h:159
Belle2::TrackFindingCDC::CDCWireTopology::getInnerCylindricalR
double getInnerCylindricalR() const
Getter for the inner radius of the inner most wire layer.
Definition: CDCWireTopology.h:485
Belle2::TrackFindingCDC::CDCWireTopology::c_NWires
static const IWire c_NWires
Total number of wires.
Definition: CDCWireTopology.h:73
Belle2::TrackFindingCDC::CDCWireSuperLayer::getSecondNeighborNineOClock
MayBePtr< const CDCWire > getSecondNeighborNineOClock(ILayer iLayer, IWire iWire) const
Getter for secondary neighbor at the nine o'clock position.
Definition: CDCWireSuperLayer.h:322
Belle2::TrackFindingCDC::CDCWireTopology::getWires
const std::vector< Belle2::TrackFindingCDC::CDCWire > & getWires() const
Getter for the underlying storing wire vector.
Definition: CDCWireTopology.h:124
Belle2::TrackFindingCDC::CDCWireTopology::getWire
const CDCWire & getWire(const WireID &wireId) const
Getter for wire getter by wireID object.
Definition: CDCWireTopology.h:112
Belle2::TrackFindingCDC::CDCWireSuperLayer::getSecondNeighborOneOClock
MayBePtr< const CDCWire > getSecondNeighborOneOClock(ILayer iLayer, IWire iWire) const
Getter for secondary neighbor at the one o'clock position.
Definition: CDCWireSuperLayer.h:287
Belle2::TrackFindingCDC::CDCWireSuperLayer::isValidIWire
bool isValidIWire(ILayer iLayer, IWire iWire) const
Checks if the given wire id belongs to a valid wire in this superlayer.
Definition: CDCWireSuperLayer.h:109
Belle2::TrackFindingCDC::CDCWireTopology::getPrimaryNeighbor
MayBePtr< const CDCWire > getPrimaryNeighbor(short oClockDirection, const WireID &wireID) const
Getter for the primary neighbor of the given wire id.
Definition: CDCWireTopology.h:219
Belle2::TrackFindingCDC::CDCWireTopology::c_NSuperLayers
static const ISuperLayer c_NSuperLayers
Total number of superlayers.
Definition: CDCWireTopology.h:79
Belle2::TrackFindingCDC::CDCWireTopology::getSecondNeighborTenOClock
MayBePtr< const CDCWire > getSecondNeighborTenOClock(const WireID &wireID) const
Getter for secondary neighbor at the ten o'clock position.
Definition: CDCWireTopology.h:375
Belle2::TrackFindingCDC::CDCWireTopology::getNeighborCCWOutwards
MayBePtr< const CDCWire > getNeighborCCWOutwards(const WireID &wireID) const
Getter for the nearest counterclockwise neighbor in the next layer outwards.
Definition: CDCWireTopology.h:231
Belle2::TrackFindingCDC::CDCWireSuperLayer::getNeighborCCWInwards
MayBePtr< const CDCWire > getNeighborCCWInwards(ILayer iLayer, IWire iWire) const
Getter for the nearest clockwise neighbor in the next layer outwards by wire id and layer id with in ...
Definition: CDCWireSuperLayer.h:231
Belle2::TrackFindingCDC::CDCWireSuperLayer::getPrimaryNeighbor
MayBePtr< const CDCWire > getPrimaryNeighbor(short oClockDirection, ILayer iLayer, IWire iWire) const
Getter for the two closest neighbors in the given o'clock direction.
Definition: CDCWireSuperLayer.h:185
Belle2::TrackFindingCDC::CDCWireSuperLayer::getSecondNeighborSixOClock
MayBePtr< const CDCWire > getSecondNeighborSixOClock(ILayer iLayer, IWire iWire) const
Getter for secondary neighbor at the six o'clock position.
Definition: CDCWireSuperLayer.h:309
Belle2::TrackFindingCDC::CDCWireTopology::getWireSuperLayers
const std::vector< Belle2::TrackFindingCDC::CDCWireSuperLayer > & getWireSuperLayers() const
Getter for the underlying storing superlayer vector.
Definition: CDCWireTopology.h:191
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19
Belle2::TrackFindingCDC::CDCWireTopology::getSecondNeighborTwelveOClock
MayBePtr< const CDCWire > getSecondNeighborTwelveOClock(const WireID &wireID) const
Getter for secondary neighbor at the twelve o'clock position.
Definition: CDCWireTopology.h:383
Belle2::TrackFindingCDC::CDCWireTopology::getSecondaryNeighbor
MayBePtr< const CDCWire > getSecondaryNeighbor(short oClockDirection, const WireID &wireID) const
Getter for the secondary neighbor of the given wire id.
Definition: CDCWireTopology.h:335
Belle2::TrackFindingCDC::CDCWireTopology::getISuperLayerAtCylindricalR
ISuperLayer getISuperLayerAtCylindricalR(double cylindricalR)
Returns the logical superlayer number at the given radius.
Definition: CDCWireTopology.cc:79
Belle2::TrackFindingCDC::CDCWireTopology::getNeighborsOutwards
WireNeighborPair getNeighborsOutwards(const WireID &wireID) const
Getter for the two closest neighbors in the layer outwards.
Definition: CDCWireTopology.h:223
Belle2::TrackFindingCDC::CDCWireTopology::getWireSuperLayer
const CDCWireSuperLayer & getWireSuperLayer(const WireID &wireID) const
Getter for wire superlayer getter by wireID object.
Definition: CDCWireTopology.h:181
Belle2::TrackFindingCDC::CDCWireLayer::getWire
const CDCWire & getWire(IWire iWire) const
Gives the wire by its id in the layer.
Definition: CDCWireLayer.h:148
Belle2::TrackFindingCDC::CDCWireSuperLayer::getSecondNeighborTwelveOClock
MayBePtr< const CDCWire > getSecondNeighborTwelveOClock(ILayer iLayer, IWire iWire) const
Getter for secondary neighbor at the twelve o'clock position.
Definition: CDCWireSuperLayer.h:335
Belle2::TrackFindingCDC::CDCWireSuperLayer::getSecondNeighborFiveOClock
MayBePtr< const CDCWire > getSecondNeighborFiveOClock(ILayer iLayer, IWire iWire) const
Getter for secondary neighbor at the five o'clock position.
Definition: CDCWireSuperLayer.h:305
Belle2::TrackFindingCDC::CDCWireSuperLayer::getSecondNeighborSevenOClock
MayBePtr< const CDCWire > getSecondNeighborSevenOClock(ILayer iLayer, IWire iWire) const
Getter for secondary neighbor at the seven o'clock position.
Definition: CDCWireSuperLayer.h:313
Belle2::TrackFindingCDC::CDCWireTopology::getSecondNeighborSevenOClock
MayBePtr< const CDCWire > getSecondNeighborSevenOClock(const WireID &wireID) const
Getter for secondary neighbor at the seven o'clock position.
Definition: CDCWireTopology.h:363
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::CDCWireLayer
Class representating a sense wire layer in the central drift chamber.
Definition: CDCWireLayer.h:51
Belle2::TrackFindingCDC::CDCWireTopology::getSecondNeighborThreeOClock
MayBePtr< const CDCWire > getSecondNeighborThreeOClock(const WireID &wireID) const
Getter for secondary neighbor at the three o'clock position - always exists.
Definition: CDCWireTopology.h:347
Belle2::TrackFindingCDC::CDCWireTopology::getSecondNeighborEightOClock
MayBePtr< const CDCWire > getSecondNeighborEightOClock(const WireID &wireID) const
Getter for secondary neighbor at the eight o'clock position.
Definition: CDCWireTopology.h:367
Belle2::TrackFindingCDC::CDCWireTopology::getNLayers
ILayer getNLayers() const
Getter for the total number of wire layers.
Definition: CDCWireTopology.h:135
Belle2::TrackFindingCDC::CDCWireSuperLayer::getSecondNeighborTenOClock
MayBePtr< const CDCWire > getSecondNeighborTenOClock(ILayer iLayer, IWire iWire) const
Getter for secondary neighbor at the ten o'clock position.
Definition: CDCWireSuperLayer.h:326
Belle2::TrackFindingCDC::CDCWireTopology::reinitialize
void reinitialize(EWirePosition wirePosition, bool ignoreWireSag)
Reload all geometry parameters form the CDCGeometryPar to adjust to changes in geometry.
Definition: CDCWireTopology.cc:64
Belle2::TrackFindingCDC::NWirePosition::EWirePosition
EWirePosition
Wire position set.
Definition: EWirePosition.h:40
Belle2::TrackFindingCDC::CDCWireSuperLayer::getSecondaryNeighbor
MayBePtr< const CDCWire > getSecondaryNeighbor(short oClockDirection, ILayer iLayer, IWire iWire) const
@getSecondaryNeighbor Secondary neighborhood The secondary neighbors are numbered like positions on t...
Definition: CDCWireSuperLayer.h:251
Belle2::TrackFindingCDC::CDCWireSuperLayer
Class representating a sense wire superlayer in the central drift chamber.
Definition: CDCWireSuperLayer.h:53
Belle2::TrackFindingCDC::CDCWireTopology::isValidILayer
bool isValidILayer(ISuperLayer iSuperLayer, ILayer iLayer) const
Checks the validity of the superlayer id, layer id combination.
Definition: CDCWireTopology.h:143
Belle2::TrackFindingCDC::CDCWireSuperLayer::getNeighborsInwards
WireNeighborPair getNeighborsInwards(ILayer iLayer, IWire iWire) const
Getter for the two closest neighbors in the layer inwards of the given on.
Definition: CDCWireSuperLayer.cc:78
Belle2::TrackFindingCDC::CDCWireSuperLayer::isValidILayer
bool isValidILayer(ILayer iLayer) const
Checks if the given layer id belongs to a valid layer in this superlayer.
Definition: CDCWireSuperLayer.h:92
Belle2::TrackFindingCDC::CDCWire
Class representing a sense wire in the central drift chamber.
Definition: CDCWire.h:60
Belle2::TrackFindingCDC::CDCWireSuperLayer::getWireLayer
const CDCWireLayer & getWireLayer(ILayer iLayer) const
Gives the layer by its layer id within the superlayer.
Definition: CDCWireSuperLayer.h:96
Belle2::TrackFindingCDC::CDCWireTopology::m_wireSuperLayers
std::vector< Belle2::TrackFindingCDC::CDCWireSuperLayer > m_wireSuperLayers
Storage for all wire superlayers in the CDC.
Definition: CDCWireTopology.h:496
Belle2::TrackFindingCDC::CDCWireTopology::getNeighborCCW
MayBePtr< const CDCWire > getNeighborCCW(const WireID &wireID) const
Getter for the nearest counterclockwise neighbor.
Definition: CDCWireTopology.h:239
Belle2::TrackFindingCDC::WireNeighborKind
Type for the neighbor relationship from one wire to another.
Definition: WireNeighborKind.h:35
Belle2::TrackFindingCDC::CDCWireTopology::isValidICLayer
bool isValidICLayer(ILayer iCLayer) const
Checks the validity of the continuous layer id.
Definition: CDCWireTopology.h:139
Belle2::TrackFindingCDC::CDCWireTopology::operator=
void operator=(const CDCWireTopology &wireTopology)=delete
Disallow copy assignment of the wire topology.
Belle2::WireID::getIWire
unsigned short getIWire() const
Getter for wire within the layer.
Definition: WireID.h:155
Belle2::WireID::getICLayer
unsigned short getICLayer() const
Getter for continuous layer numbering.
Definition: WireID.cc:26
Belle2::TrackFindingCDC::CDCWireTopology::getOuterCylindricalR
double getOuterCylindricalR() const
Getter for the outer radius of the outer most wire layer.
Definition: CDCWireTopology.h:481
Belle2::TrackFindingCDC::WireNeighborPair
Class representing a pair of neighbors in the CDC in a single layer For certain circumstances it is a...
Definition: WireNeighborPair.h:39
Belle2::TrackFindingCDC::CDCWireTopology::getNeighborCWOutwards
MayBePtr< const CDCWire > getNeighborCWOutwards(const WireID &wireID) const
Getter for the nearest clockwise neighbor in the next layer outwards.
Definition: CDCWireTopology.h:235
Belle2::TrackFindingCDC::CDCWireTopology::CDCWireTopology
CDCWireTopology()
Default constructor for ROOT compatibility. Use rather getInstance to get the shared singleton instan...
Definition: CDCWireTopology.h:62
Belle2::TrackFindingCDC::CDCWireTopology
Class representating the sense wire arrangement in the whole of the central drift chamber.
Definition: CDCWireTopology.h:54
Belle2::TrackFindingCDC::CDCWireTopology::getSecondNeighborOneOClock
MayBePtr< const CDCWire > getSecondNeighborOneOClock(const WireID &wireID) const
Getter for secondary neighbor at the one o'clock position.
Definition: CDCWireTopology.h:339
Belle2::TrackFindingCDC::CDCWireSuperLayer::getSecondNeighborTwoOClock
MayBePtr< const CDCWire > getSecondNeighborTwoOClock(ILayer iLayer, IWire iWire) const
Getter for secondary neighbor at the two o'clock position.
Definition: CDCWireSuperLayer.h:292
Belle2::TrackFindingCDC::CDCWireTopology::getNeighborKind
WireNeighborKind getNeighborKind(const WireID &wireID, const WireID &otherWireID) const
Checks if two wires are closest neighbors.
Definition: CDCWireTopology.cc:101
Belle2::TrackFindingCDC::CDCWireTopology::getSecondNeighborFourOClock
MayBePtr< const CDCWire > getSecondNeighborFourOClock(const WireID &wireID) const
Getter for secondary neighbor at the four o'clock position.
Definition: CDCWireTopology.h:351
Belle2::TrackFindingCDC::CDCWireTopology::getNeighborCCWInwards
MayBePtr< const CDCWire > getNeighborCCWInwards(const WireID &wireID) const
Getter for the nearest counterclockwise neighbor in the next layer outwards.
Definition: CDCWireTopology.h:247
Belle2::TrackFindingCDC::CDCWireTopology::isValidIWire
bool isValidIWire(ILayer iCLayer, IWire iWire) const
Checks the validity of the continuous layer id, wire id combination.
Definition: CDCWireTopology.h:104
Belle2::TrackFindingCDC::CDCWireTopology::isValidISuperLayer
bool isValidISuperLayer(ISuperLayer iSuperLayer) const
Checks the validity of the superlayer id.
Definition: CDCWireTopology.h:174
Belle2::TrackFindingCDC::CDCWireTopology::getSecondNeighborNineOClock
MayBePtr< const CDCWire > getSecondNeighborNineOClock(const WireID &wireID) const
Getter for secondary neighbor at the nine o'clock position - always exists.
Definition: CDCWireTopology.h:371