10#include <cdc/topology/EStereoKind.h>
11#include <cdc/topology/ISuperLayer.h>
12#include <cdc/topology/ILayer.h>
14#include <tracking/trackingUtilities/ca/AutomatonCell.h>
16#include <tracking/trackingUtilities/numerics/ERightLeft.h>
17#include <tracking/trackingUtilities/numerics/Index.h>
19#include <tracking/trackingUtilities/utilities/FunctorTag.h>
21#include <cdc/dataobjects/WireID.h>
23#include <Math/Vector2D.h>
24#include <Math/Vector3D.h>
42 namespace TrackingUtilities {
86 double chargeDeposit = 0,
87 double driftTime = 0);
107 double chargeDeposit = 0);
126 return &wireHit.
getWire() < &wire;
133 return &wire < &wireHit.
getWire();
141 return *wireHit < wire;
149 return wire < *wireHit;
353 template<
class T,
class SFINAE = decltype(&T::getWireHit)>
356 return t.getWireHit();
Class containing the result of the unpacker in raw data and the result of the digitizer in simulation...
CDCWireHit()=default
Default constructor for ROOT compatibility.
Abstract Base class for the ADC count translator.
Class representing a sense wire superlayer in the central drift chamber.
Class representing a sense wire in the central drift chamber.
Base class for translation of Drift Time into Drift Length.
Cell used by the cellular automata.
Particle trajectory as it is seen in xy projection represented as a circle.
Class representing a hit wire in the central drift chamber.
double getRefCylindricalR() const
The distance from the beam line at reference position of the underlying wire.
const CDCHit * getHit() const
Getter for the CDCHit pointer into the StoreArray.
static CDC::TDCCountTranslatorBase & getTDCCountTranslator()
Return an instance of the used TDC count translator.
double getRefDriftLengthVariance() const
Getter for the variance of the drift length at the reference position of the wire.
double getRefDriftLength() const
Getter for the drift length at the reference position of the wire.
const ROOT::Math::XYVector & getRefPos2D() const
The two dimensional reference position (z=0) of the underlying wire.
const WireID & getWireID() const
Getter for the WireID of the wire the hit is located on.
bool isAxial() const
Indicator if the underlying wire is axial.
friend bool operator<(const CDCWireHit *wireHit, const CDC::CDCWire &wire)
Defines CDCWires and CDCWireHits to be coaligned on the wire on which they are based.
friend bool operator<(const CDCWireHit &wireHit, const CDCHit &hit)
Defines CDCWireHits and raw CDCHit to be coaligned.
friend bool operator<(const CDCHit &hit, const CDCWireHit &wireHit)
Defines wire hits and raw CDCHit to be coaligned.
double getRefChargeDeposit() const
Getter for the charge due to energy deposit in the drift cell.
CDC::ISuperLayer getISuperLayer() const
Getter for the super layer id.
int m_iSuperCluster
Memory for the super cluster id.
AutomatonCell * operator->() const
Indirection to the automaton cell for easier access to the flags.
const ROOT::Math::XYZVector & getRefPos3D() const
The three dimensional reference position of the underlying wire.
CDCWireHit()=default
Default constructor for ROOT compatibility.
const CDC::CDCWire & getWire() const
Getter for the CDCWire the hit is located on.
void setISuperCluster(int iSuperCluster)
Setter for the super cluster id.
AutomatonCell & getAutomatonCell() const
Mutable getter for the automaton cell.
friend bool operator<(const CDC::CDCWire &wire, const CDCWireHit &wireHit)
Defines CDCWires and CDCWireHits to be coaligned on the wire on which they are based.
friend bool operator<(const CDC::CDCWire &wire, const CDCWireHit *wireHit)
Defines CDCWires and CDCWireHits to be coaligned on the wire on which they are based.
const CDCHit * m_hit
Memory for the CDCHit pointer.
static CDC::ADCCountTranslatorBase & getADCCountTranslator()
Return an instance of the used ADC count translator.
bool operator==(const CDCWireHit &rhs) const
Equality comparison based on the wire and the hit id.
static constexpr const double c_simpleDriftLengthVariance
A default value for the drift length variance if no variance from the drift length translation is ava...
bool operator<(const CDCWireHit &rhs) const
Total ordering relation based on the wire and the hit id.
friend bool operator<(const CDCWireHit &wireHit, const CDC::CDCWire &wire)
Defines CDCWires and CDCWireHits to be coaligned on the wire on which they are based.
Vector2D reconstruct2D(const CDCTrajectory2D &trajectory2D) const
Reconstructs a position of primary ionisation on the drift circle.
const CDC::CDCWire & attachWire() const
Reestablishes the pointer of the hit to the wire and returns it Since the DataStore only transport th...
WireID m_wireID
Memory for the WireID.
bool isOnWire(const CDC::CDCWire &wire) const
Checks if the wire hit is based on the given wire.
CDC::EStereoKind getStereoKind() const
Getter for the stereo type of the underlying wire.
double m_refDriftLength
Memory for the drift length at the wire reference point.
Index getStoreIHit() const
Getter for the index of the hit in the StoreArray holding this hit.
Circle2D conformalTransformed(const Vector2D &relativeTo) const
Applies the conformal transformation to the drift circle this hit represents.
double m_refDriftLengthVariance
Memory for the variance of the drift length at the wire reference point.
AutomatonCell m_automatonCell
Memory for the automaton cell.
Vector3D reconstruct3D(const CDCTrajectory2D &trajectory2D, ERightLeft rlInfo, double z=0) const
Attempts to reconstruct a three dimensional position (especially of stereo hits).
CDC::CDCWire const * m_wire
Memory for the CDCWire pointer - Trailing comment indicates to not stream this member.
int getISuperCluster() const
Getter for the super cluster id.
double getDriftTime() const
Return the drift time measured by the CDC for this hit.
double m_refChargeDeposit
Memory for the charge induced by the energy deposit in the drift cell.
CDC::ILayer getILayer() const
Getter for the layer id.
double m_refDriftTime
Measured drift time of the CDC hit.
A two dimensional circle in its natural representation using center and radius as parameters.
A two dimensional vector which is equipped with functions for correct handling of orientation relate...
A three dimensional vector.
Class to identify a wire inside the CDC.
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.
std::ostream & operator<<(std::ostream &output, const IntervalOfValidity &iov)
bool operator<(ExpRun a, ExpRun b)
less than for ExpRun
signed short ILayer
The type of the layer ids enumerating layers within a superlayer.
EStereoKind
Type for the stereo property of the wire.
signed short ISuperLayer
The type of the layer and superlayer ids.
Abstract base class for different kinds of events.
static bool isAxial(ISuperLayer iSuperLayer)
Returns if the super layer with the given id is axial.
static EStereoKind getStereoKind(ISuperLayer iSuperLayer)
Returns the stereo kind of the super layer.
Tag class to facilitate marking of class as a functor in the sense of this code.
Generic functor to get the wire hit from an object.
const CDCWireHit & operator()(const CDCWireHit &wireHit) const
If given a wire hit return it unchanged.
const CDCWireHit & operator()(const T &t) const
Returns the wire hit of an object.