12#ifndef MUC_REC_3DROAD_H
13#define MUC_REC_3DROAD_H
15#include "GaudiKernel/ContainedObject.h"
16#include "GaudiKernel/SmartRef.h"
17#include "GaudiKernel/ObjectVector.h"
19#include "MucRecEvent/MucRec2DRoad.h"
58 const float &m_InterceptZX,
59 const float &m_SlopeZY,
60 const float &m_InterceptZY);
68 vector<Identifier>
ProjectToStrip(
const int& part,
const int& gap,
const HepPoint3D& gPoint,
const Hep3Vector&gDirection);
70 vector<Identifier>
ProjectToStrip(
const int& part,
const int& gap,
const HepPoint3D& gPoint,
const Hep3Vector&gDirection, vector<int>&padID, vector<float>&intersect_x, vector<float>&intersect_y, vector<float>&intersect_z);
73 void ProjectWithSigma(
const int &gap,
float &x,
float &y,
float &z,
float &sigmaX,
float &sigmaY,
float &sigmaZ);
76 void ProjectNoCurrentGap(
const int &gap,
float &x,
float &y,
float &z,
float &sigmaX,
float &sigmaY,
float &sigmaZ,
77 float& quad_x1,
float& quad_y1,
float& quad_z1,
float& quad_x2,
float& quad_y2,
float& quad_z2);
80 void Project(
const int &gap,
float &x1,
float &y1,
float &z1,
float &x2,
float &y2,
float &z2);
83 void Project(
const int &gap,
const float zx,
const float x0,
const float zy,
const float y0 ,
float &x1,
float &y1,
float &z1);
93 const float &k0,
const float &r0,
95 float &x0,
float &y0)
const;
178 Hep3Vector m_VertexPos;
179 Hep3Vector m_VertexSigma;
ObjectVector< MucRec3DRoad > MucRec3DRoadContainer
int RefitNoCurrentGap(const int &gap, float &slopeZX, float &interceptZX, float &slopeZY, float &interceptZY)
refit the 3D road without the assigned gap
float GetSlopeZX() const
Get Z-X dimension slope.
float GetSlopeZY() const
Get Z-Y dimension slope.
void TransformPhiRToXY(const float &vk, const float &vr, const float &k0, const float &r0, float &vx, float &vy, float &x0, float &y0) const
Where does the trajectory of this road intersect the reference plane?
bool HasHitInGap(const int &gap) const
Does this road contain any hits in the given segment?
int GetLastGapDelta() const
Difference between the last gap in the two 1-D roads.
void SetIndex(const int &index)
set the index for this road
int GetHitsPerGap(const int &gap) const
How many hits per gap does this road contain?
void ProjectNoCurrentGap(const int &gap, float &x, float &y, float &z, float &sigmaX, float &sigmaY, float &sigmaZ, float &quad_x1, float &quad_y1, float &quad_z1, float &quad_x2, float &quad_y2, float &quad_z2)
Where does the trajectory of this road intersect a specific gap when refit without current gap!...
float GetVxSign(const float vk) const
Get sign of vx in TransformPhiRToXY.
MucRecHit * GetHit(const int &gap) const
Get a pointer to the first hit attached in a particular gap.
int GetPart() const
In which part was this road found?
vector< Identifier > ProjectToStrip(const int &part, const int &gap, const HepPoint3D &gPoint, const Hep3Vector &gDirection)
int GetLastGap() const
Which gap is the last one with hits attached to this road?
MucRec3DRoad & operator=(const MucRec3DRoad &orig)
Assignment constructor.
int GetTotalHitsDelta() const
Difference between the number of hits in the two 1-D roads.
void PrintHitsInfo()
Print Hits Infomation.
void SetGroup(const int &Group)
set the group index for this road
int GetTotalHits() const
How many hits in all does this road contain?
float GetInterceptZY() const
Get Z-Y dimension intercept.
int GetGroup() const
unique index of group this road belongs to
void SetSimpleFitParams(const float &m_SlopeZX, const float &m_InterceptZX, const float &m_SlopeZY, const float &m_InterceptZY)
set the fit parameters : slope and intercept for XZ and YZ.
int GetNSharedHits(const MucRec3DRoad *road) const
How many hits do two roads share?
int GetSeg() const
In which segment was this road found?
int GetDegreesOfFreedom() const
How many degrees of freedom in the trajectory fit?
~MucRec3DRoad()
Destructor.
MucRec2DRoad * Get2DRoad(const int &orient=0) const
Is the intersection of a pair of H and V clusters inside a panel?
void Project(const int &gap, float &x1, float &y1, float &z1, float &x2, float &y2, float &z2)
Where does the trajectory of this road intersect two surfaces of a specific gap?
vector< Identifier > GetHitsID() const
Get indices of all hits in the road.
void ProjectWithSigma(const int &gap, float &x, float &y, float &z, float &sigmaX, float &sigmaY, float &sigmaZ)
Where does the trajectory of this road intersect a specific gap?
float GetInterceptZX() const
Get Z-X dimension intercept.
int GetNGapsWithHits() const
How many gaps provide hits attached to this road?
int GetIndex() const
A unique identifier for this road in the current event.
float GetReducedChiSquare() const
Chi-square parameter (per degree of freedom) of the trajectory fit.
int GetMaxHitsPerGap() const
How many hits were attached in the gap with the most attached hits?