10#include <cdc/topology/WireNeighborPair.h>
11#include <cdc/topology/WireLine.h>
13#include <cdc/topology/ISuperLayer.h>
14#include <cdc/topology/ILayer.h>
15#include <cdc/topology/IWire.h>
17#include <cdc/topology/WireNeighborKind.h>
18#include <cdc/topology/EStereoKind.h>
19#include <cdc/topology/EWirePosition.h>
21#include <tracking/trackingUtilities/utilities/MayBePtr.h>
23#include <cdc/dataobjects/WireID.h>
25#include <Math/Vector2D.h>
26#include <Math/Vector3D.h>
196 ROOT::Math::XYZVector
getClosest(
const ROOT::Math::XYZVector& pos3D)
const
284 bool isInCell(
const ROOT::Math::XYZVector& pos3D)
const;
287 bool isInCellZBounds(
const ROOT::Math::XYZVector& pos3D,
const double factor = 1)
const
350 TrackingUtilities::MayBePtr<const CDCWire>
getNeighborCCW()
const;
358 TrackingUtilities::MayBePtr<const CDCWire>
getNeighborCW()
const;
Class containing the result of the unpacker in raw data and the result of the digitizer in simulation...
Class representing a sense wire layer in the central drift chamber.
Class representing a sense wire superlayer in the central drift chamber.
Class representing a sense wire in the central drift chamber.
double getRefCylindricalR() const
Getter for the cylindrical radius at the wire reference position.
void operator=(const CDCWire &wire)=delete
Disallow copy assignment of wires.
double getStereoAngle() const
Getter for the stereo angle of the wire.
CDCWire(const WireID &wireID)
Constructor taking the combined wire id convenience object.
ISuperLayer getISuperLayer() const
Gives the superlayer id ranging from 0 - 8.
CDCWire(const CDCWire &wire)=delete
Disallow copy construction of wires.
ROOT::Math::XYZVector getWireVector() const
Getter for the vector pointing from the back end of the wire to the front end of the wire.
TrackingUtilities::MayBePtr< const CDCWire > getNeighborCWOutwards() const
Gives the closest neighbor in the clockwise outwards direction This does not cross superlayer boundar...
WireNeighborKind getNeighborKind(const CDCWire &wire) const
Returns gives the kind of neighborhood relation from this wire to the given wire.
double getBackwardCylindricalR() const
Getter for the distance to the beamline ( z-axes ) at the backward joint point.
WireLine m_wireLine
The line representation of the wire.
const ROOT::Math::XYVector & getRefPos2D() const
Getter for the wire reference position for 2D tracking Gives the wire's reference position projected ...
const WireID & getWireID() const
Getter for the wire id.
bool isAxial() const
Indicates if the wire is axial or stereo.
ROOT::Math::XYZVector getBackwardPos3D() const
Getter for the forward joint point of the wire with the wall.
TrackingUtilities::MayBePtr< const CDCWire > getNeighborCCWOutwards() const
Gives the closest neighbor in the countclockwise outwards direction This does not cross superlayer bo...
ROOT::Math::XYVector getMovePerZ() const
Getter for the vector describing the nominal positional change in the xy plane per unit z.
double getForwardCylindricalR() const
Getter for the nominal distance to the beamline ( z-axes ) at the forward joint point.
TrackingUtilities::MayBePtr< const CDCWire > getNeighborCCW() const
Gives the closest neighbor in the counterclockwise direction - always exists.
TrackingUtilities::MayBePtr< const CDCWire > getSecondaryNeighbor(short oClockDirection) const
Getter for the secondary neighbors of this wire id following the direction on the clock.
bool operator==(const CDCWire &other) const
Equality comparison based on wireID.
const ROOT::Math::XYZVector & getRefPos3D() const
Getter for the wire reference position.
double getForwardZ() const
Getter for the z coordinate at the forward joint points of the wires.
WireNeighborPair getNeighborsOutwards() const
Gives the two wires in the next layer outward.
IWire getIWire() const
Getter for the wire id within its layer.
bool isPrimaryNeighborWith(const CDCWire &wire) const
Returns whether the give wire is a neighbor of this wire.
double getDistance(const ROOT::Math::XYZVector &pos3D) const
Calculates the distance from the position to the wire.
void initialize(EWirePosition wirePosition, bool ignoreWireSag)
(Re)load all geometry parameters form the CDCGeometryPar to adjust to changes in geometry.
ROOT::Math::XYVector getWirePos2DAtZ(const double z) const
Gives the xy projected position of the wire at the given z coordinate.
ROOT::Math::XYZVector getWirePos3DAtZ(const double z) const
Gives position of the wire at the given z coordinate.
double getDriftLength(const ROOT::Math::XYZVector &pos3D) const
Calculates the straight drift length from the position to the wire This is essentially the same as th...
unsigned short getEWire() const
Getter for the encoded wire number.
static const CDCWire * getInstance(const WireID &wireID)
Getter from the wireID convenience object. Does not construct a new object.
ILayer getICLayer() const
Getter for the continuous layer id ranging from 0 - 55.
ROOT::Math::XYVector getMovePerZAtZ(double z) const
Getter for the vector describing the real positional change in the xy plane per unit z at the z posit...
ILayer getILayer() const
Getter for the layer id within its superlayer Gives the layer id within its superlayer ranging from ...
WireID m_wireID
The wireID of the wire.
TrackingUtilities::MayBePtr< const CDCWire > getNeighborCWInwards() const
Gives the closest neighbor in the clockwise inwards direction This does not cross superlayer boundari...
TrackingUtilities::MayBePtr< const CDCWire > getNeighborCW() const
Gives the closest neighbor in the clockwise direction - always exists.
const CDCWireLayer & getWireLayer() const
Getter for the wire layer.
double getLateralCellWidth() const
Getter for the cell widths in lateral direction.
bool isInCellZBounds(const ROOT::Math::XYZVector &pos3D, const double factor=1) const
Checks whether the position is in the z bounds of the drift cell (scaled by the factor) surrounding t...
double getTanStereoAngle() const
Getter for the tangents of the stereo angle of the wire.
friend std::ostream & operator<<(std::ostream &output, const CDCWire &wire)
String output operator for wire objects to help debugging.
TrackingUtilities::MayBePtr< const CDCWire > getNeighborCCWInwards() const
Gives the closest neighbor in the countclockwise inwards direction This does not cross superlayer bou...
EStereoKind getStereoKind() const
Getter for the stereo type of the wire.
double getRefZ() const
Getter for the wire reference z coordinate Gives the wire's reference z coordinate.
double m_refCylindricalR
Precomputed distance to the beam line at the reference position.
WireNeighborPair getNeighborsInwards() const
Gives the two wires in the next layer inward.
bool isInCell(const ROOT::Math::XYZVector &pos3D) const
Checks whether the position is in the drift cell surrounding the wire.
ROOT::Math::XYZVector getForwardPos3D() const
Getter for the forward joint point of the wire with the wall.
double getMinCylindricalR() const
Getter for the closest distance to the beamline ( z-axes )
CDCWire(CDCWire &&wire)=default
Allow move construction of wires for use in std::vector.
const CDCWireSuperLayer & getWireSuperLayer() const
Getter for the wire super layer.
double getBackwardZ() const
Getter for the z coordinate at the backward joint points of the wires.
double getRadialCellWidth() const
Getter for the cell widths in radial direction.
ROOT::Math::XYZVector getClosest(const ROOT::Math::XYZVector &pos3D) const
Calculates the closest approach in the wire to the position.
bool operator<(const CDCWire &other) const
Total ordering relation based on the wire id Defines a total ordering scheme for wire objects based o...
const WireLine & getWireLine() const
Getter for the wire line representation of the wire.
A three dimensional limited line represented by its closest approach to the z-axes (reference positio...
const ROOT::Math::XYVector & nominalMovePerZ() const
Gives the positional move in the xy projection per unit z.
ROOT::Math::XYZVector wireVector() const
Getter for the vector from backward to the forward position.
ROOT::Math::XYZVector backward3D() const
Gives the position of the backward point.
double sagDistance(const ROOT::Math::XYZVector &pos3D) const
Calculates the distance of the given point to the wire with wire sag effect.
ROOT::Math::XYVector sagPos2DAtZ(const double z) const
Gives the two dimensional position with wire sag effect of the line at the given z value.
double backwardZ() const
Gives the backward z coordinate.
double refZ() const
Returns the the z coordinate of the reference point.
ROOT::Math::XYZVector forward3D() const
Gives the position of the forward point.
double tanTheta() const
Returns the tangent of the opening angle between tangential vector and the z axes Also know as ds / d...
ROOT::Math::XYZVector sagPos3DAtZ(const double z) const
Gives the three dimensional position with wire sag effect of the line at the given z value.
double forwardZ() const
Gives the forward z coordinate.
ROOT::Math::XYVector sagMovePerZ(const double z) const
Gives the two dimensional position with wire sag effect of the line at the given z value.
double forwardCylindricalR() const
Gives the cylindrical radius of the forward position.
const ROOT::Math::XYVector & refPos2D() const
Returns the xy vector of the reference position.
const ROOT::Math::XYZVector & refPos3D() const
Returns the reference position.
ROOT::Math::XYZVector sagClosest3D(const ROOT::Math::XYZVector &point) const
Returns the closest approach on the wire with wire sag effect to the give point.
double theta() const
Returns the nominal opening angle between tangential vector and the z axes.
ROOT::Math::XYVector nominalPerigee2D() const
Returns the point of nominal closest approach to the z axes.
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...
Class to identify a wire inside the CDC.
unsigned short getICLayer() const
Getter for continuous layer numbering.
unsigned short getIWire() const
Getter for wire within the layer.
unsigned short getEWire() const
Getter for encoded wire number.
unsigned short getISuperLayer() const
Getter for Super-Layer.
unsigned short getILayer() const
Getter for layer within the Super-Layer.
signed short IWire
The type of the wire ids enumerating wires within a given layer.
signed short ILayer
The type of the layer ids enumerating layers within a superlayer.
EStereoKind
Type for the stereo property of the wire.
@ c_Axial
Constant for an axial wire.
CDCGeometryPar::EWirePosition EWirePosition
For ease-of-use just create a new alias for CDCGeometryPar::EWirePosition.
signed short ISuperLayer
The type of the layer and superlayer ids.
Abstract base class for different kinds of events.
static EStereoKind getStereoKind(ISuperLayer iSuperLayer)
Returns the stereo kind of the super layer.