10#include <tracking/trackFindingCDC/topology/CDCWireLayer.h>
11#include <tracking/trackFindingCDC/topology/WireNeighborPair.h>
12#include <tracking/trackFindingCDC/topology/ISuperLayer.h>
13#include <tracking/trackFindingCDC/topology/ILayer.h>
14#include <tracking/trackFindingCDC/topology/IWire.h>
15#include <tracking/trackFindingCDC/topology/WireNeighborKind.h>
16#include <tracking/trackFindingCDC/topology/EStereoKind.h>
17#include <tracking/trackFindingCDC/utilities/VectorRange.h>
18#include <tracking/trackFindingCDC/utilities/MayBePtr.h>
25 namespace TrackFindingCDC {
77 {
return front().getISuperLayer(); }
87 {
return 0 <= iLayer and iLayer < int(
size()); }
129 {
return front().getStereoKind(); }
133 {
return front().getInnerCylindricalR(); }
137 {
return back().getOuterCylindricalR(); }
173 IWire iOtherWire)
const;
183 oClockDirection = modulo(oClockDirection, 12);
184 switch (oClockDirection) {
249 oClockDirection = modulo(oClockDirection, 12);
250 switch (oClockDirection) {
Class representing a sense wire layer in the central drift chamber.
const CDCWire & getWire(IWire iWire) const
Gives the wire by its id in the layer.
bool isValidIWire(IWire iWire) const
Checks if the given wire id belongs to a valid wire in this layer.
const CDCWire & getNeighborCCW(IWire iWire) const
Getter for the first counterclockwise neighbor by wire id in the layer.
const CDCWire & getWireWrappedAround(IWire iWire) const
Returns the wire by its id in the layer.
const CDCWire & getNeighborCW(IWire iWire) const
Getter for the first clockwise neighbor by wire id in the layer.
Class representing a sense wire superlayer in the central drift chamber.
MayBePtr< const CDCWire > getSecondNeighborSixOClock(ILayer iLayer, IWire iWire) const
Getter for secondary neighbor at the six o'clock position.
MayBePtr< const CDCWire > getSecondNeighborTwelveOClock(ILayer iLayer, IWire iWire) const
Getter for secondary neighbor at the twelve o'clock position.
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 ...
double m_refTanLambda
Memory for (fitted) proportionality factor between the increasing cylindrical radius and the referenc...
MayBePtr< const CDCWire > getSecondNeighborSevenOClock(ILayer iLayer, IWire iWire) const
Getter for secondary neighbor at the seven o'clock position.
double getMiddleCylindricalR() const
Getter for the radius in the middle of the layer.
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 ...
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.
void initialize()
Initializes the superlayer variables of according the layer range. Set the numbering shift of contain...
ISuperLayer getISuperLayer() const
Getter for the super layer id.
double m_outerRefZ
Memory for the (fitted) z of the reference wire reference points at the outer cylindricalR of this su...
bool isAxial() const
Indicates if the wire is axial or stereo.
MayBePtr< const CDCWire > getSecondNeighborThreeOClock(ILayer iLayer, IWire iWire) const
Getter for secondary neighbor at the three o'clock position.
MayBePtr< const CDCWire > getSecondNeighborElevenOClock(ILayer iLayer, IWire iWire) const
Getter for secondary neighbor at the elven o'clock position.
double m_innerRefZ
Memory for the (fitted) z of the reference wire reference points at the inner cylindricalR of this su...
MayBePtr< const CDCWire > getSecondNeighborFiveOClock(ILayer iLayer, IWire iWire) const
Getter for secondary neighbor at the five o'clock position.
MayBePtr< const CDCWire > getSecondNeighborEightOClock(ILayer iLayer, IWire iWire) const
Getter for secondary neighbor at the eight o'clock position.
CDCWireSuperLayer(CDCWireSuperLayer &&wireSuperLayer)=default
Allow move construction of wire super layers for use in std::vector.
double getInnerCylindricalR() const
Getter for the inner radius of the layer as retrieved from the CDCGeometryPar by the inner most layer...
WireNeighborPair getNeighborsOutwards(ILayer iLayer, IWire iWire) const
Getter for the two closest neighbors in the layer outwards of the given on.
void operator=(const CDCWireSuperLayer &wireSuperLayer)=delete
Disallow copy assignment of wire super layers.
MayBePtr< const CDCWire > getSecondNeighborTenOClock(ILayer iLayer, IWire iWire) const
Getter for secondary neighbor at the ten o'clock position.
double getOuterRefZ() const
Getter for the (fitted) z of the reference wire reference points at the outer cylindricalR of this su...
MayBePtr< const CDCWire > getSecondaryNeighbor(short oClockDirection, ILayer iLayer, IWire iWire) const
getSecondaryNeighbor Secondary neighborhood The secondary neighbors are numbered like positions on th...
bool isValidIWire(ILayer iLayer, IWire iWire) const
Checks if the given wire id belongs to a valid wire in this superlayer.
MayBePtr< const CDCWire > getSecondNeighborFourOClock(ILayer iLayer, IWire iWire) const
Getter for secondary neighbor at the four o'clock position.
MayBePtr< const CDCWire > getSecondNeighborTwoOClock(ILayer iLayer, IWire iWire) const
Getter for secondary neighbor at the two o'clock position.
CDCWireSuperLayer(const CDCWireSuperLayer &wireSuperLayer)=delete
Disallow copy construction of wire super layers.
CDCWireSuperLayer()
Empty constructor for creating an empty dummy CDCWireSuperLayer for studies with a CDC with missing s...
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.
bool isValidILayer(ILayer iLayer) const
Checks if the given layer id belongs to a valid layer in this superlayer.
const CDCWireLayer & getWireLayer(ILayer iLayer) const
Gives the layer by its layer id within the superlayer.
MayBePtr< const CDCWire > getSecondNeighborNineOClock(ILayer iLayer, IWire iWire) const
Getter for secondary neighbor at the nine o'clock position.
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 ...
MayBePtr< const CDCWire > getSecondNeighborOneOClock(ILayer iLayer, IWire iWire) const
Getter for secondary neighbor at the one o'clock position.
double getRefTanLambda() const
Getter for (fitted) proportionality factor between the increasing cylindrical radius and the referenc...
WireNeighborKind getNeighborKind(ILayer iLayer, IWire iWire, ILayer iOtherLayer, IWire iOtherWire) const
Checks if two wires are closest neighbors.
EStereoKind getStereoKind() const
Getter for the stereo type of the wire layer Gives the stereo type of the wire.
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 ...
double getOuterCylindricalR() const
Getter for the outer radius of the layer as retrieved from the CDCGeometryPar by the outer most layer...
double getInnerRefZ() const
Getter for the (fitted) z of the reference wire reference points at the inner cylindricalR of this su...
MayBePtr< const CDCWire > getPrimaryNeighbor(short oClockDirection, ILayer iLayer, IWire iWire) const
Getter for the two closest neighbors in the given o'clock direction.
const CDCWire & getWire(ILayer iLayer, IWire iWire) const
Gives the wire by its layer id within the superlayer and the wire id in the layer.
WireNeighborPair getNeighborsInwards(ILayer iLayer, IWire iWire) const
Getter for the two closest neighbors in the layer inwards of the given on.
Class representing a sense wire in the central drift chamber.
A pair of iterators usable with the range base for loop.
Reference back() const
Returns the dereferenced iterator before end()
Reference front() const
Returns the dereferenced iterator at begin()
std::size_t size() const
Returns the total number of objects in this range.
Reference at(std::size_t i) const
Returns the object at index i.
Type for the neighbor relationship from one wire to another.
Class representing a pair of neighbors in the CDC in a single layer For certain circumstances it is a...
Abstract base class for different kinds of events.