Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

RecMucTrack Class Reference

#include <RecMucTrack.h>

Inheritance diagram for RecMucTrack:

DstMucTrack DstMucTrack ContainedObject ContainedObject ContainedObject ContainedObject List of all members.

Public Member Functions

void AttachDirection (Hep3Vector dir)
 Attach the direction to this trajectory.
void AttachDirection (Hep3Vector dir)
 Attach the direction to this trajectory.
void AttachHit (MucRecHit *hit)
 Attach the given hit to this track.
void AttachHit (MucRecHit *hit)
 Attach the given hit to this track.
void AttachInsct (Hep3Vector insct)
 Attach the intersection to this trajectory.
void AttachInsct (Hep3Vector insct)
 Attach the intersection to this trajectory.
int brFirstLayer () const
 Which gap on Barrel is the first one with hits attached to this track?
int brFirstLayer () const
 Which gap on Barrel is the first one with hits attached to this track?
int brLastLayer () const
int brLastLayer () const
Hep3Vector CalculateInsct (const int part, const int seg, const int gap)
 Calculate intersection from all hits attached on this gap.
Hep3Vector CalculateInsct (const int part, const int seg, const int gap)
 Calculate intersection from all hits attached on this gap.
double chi2 () const
double chi2 () const
virtual const CLID & clID () const
virtual const CLID & clID () const
int ComputeDepth (int method)
 Compute depth.
void ComputeDepth ()
 Compute depth.
int ComputeDepth (int method)
 Compute depth.
void ComputeDepth ()
 Compute depth.
void ComputeDistanceMatch ()
 Compute distance match //2006.11.08.
void ComputeDistanceMatch ()
 Compute distance match //2006.11.08.
void ComputeLastGap ()
 Comute last gap in barrel and endcap.
void ComputeLastGap ()
 Comute last gap in barrel and endcap.
void ComputeMaxHitsInGap ()
 ComputeMaxHitsInGap;.
void ComputeMaxHitsInGap ()
 ComputeMaxHitsInGap;.
void ComputeNGapsWithHits ()
 ComputeNGapsWithHits;.
void ComputeNGapsWithHits ()
 ComputeNGapsWithHits;.
void ComputeTrackInfo (int fittingmethod)
 Compute all infomation of this track;.
void ComputeTrackInfo (int fittingmethod)
 Compute all infomation of this track;.
void CorrectDir ()
 Correct direction of this trajectory.
void CorrectDir ()
 Correct direction of this trajectory.
void CorrectPos ()
 Correct current position of this trajectory.
void CorrectPos ()
 Correct current position of this trajectory.
double deltaPhi () const
double deltaPhi () const
double depth () const
double depth () const
double distance () const
double distance () const
int dof () const
int dof () const
int ecFirstLayer () const
 Which gap on EndCap is the first one with hits attached to this track?
int ecFirstLayer () const
 Which gap on EndCap is the first one with hits attached to this track?
int ecLastLayer () const
int ecLastLayer () const
int endPart () const
int endPart () const
void Extend ()
 Extend mucpos and extmucpos to first layer of muc.
void Extend ()
 Extend mucpos and extmucpos to first layer of muc.
int FindSegWithMaxHits (int &part, int &seg)
 Find the segment which contains most hits, return max hits number.
int FindSegWithMaxHits (int &part, int &seg)
 Find the segment which contains most hits, return max hits number.
Hep3Vector GetCurrentDir () const
 Current direction.
Hep3Vector GetCurrentDir () const
 Current direction.
Hep3Vector GetCurrentInsct () const
 Current intersection.
Hep3Vector GetCurrentInsct () const
 Current intersection.
Hep3Vector GetCurrentPos () const
 Current position.
Hep3Vector GetCurrentPos () const
 Current position.
float GetDepth3 () const
 Length of the track penetrating in iron absorber.
float GetDepth3 () const
 Length of the track penetrating in iron absorber.
vector< float > getDistHits () const
vector< float > getDistHits () const
vector< MucRecHit * > GetExpectedHits () const
vector< MucRecHit * > GetExpectedHits () const
vector< int > getExpHits () const
vector< int > getExpHits () const
vector< float > getExtDistHits () const
vector< float > getExtDistHits () const
Hep3Vector GetExtMucDistance () const
 Distance match of the ext track with muc track in first layer.
Hep3Vector GetExtMucDistance () const
 Distance match of the ext track with muc track in first layer.
Hep3Vector getExtMucMomentum () const
 Start momentum of the Ext track in Muc.
Hep3Vector getExtMucMomentum () const
 Start momentum of the Ext track in Muc.
Hep3Vector getExtMucPos () const
 start position of the Ext track in Muc.
Hep3Vector getExtMucPos () const
 start position of the Ext track in Muc.
int getExtTrackID () const
 The identifier of the Ext track as seed.
int getExtTrackID () const
 The identifier of the Ext track as seed.
MucRecHitGetHit (const int part, const int gap) const
 Get a pointer to the first hit attached in a particular gap.
MucRecHitGetHit (const int part, const int gap) const
 Get a pointer to the first hit attached in a particular gap.
float GetHitDistance (const MucRecHit *hit)
 Calculate the distance of the hit to the intersection in read direction.
float GetHitDistance (const MucRecHit *hit)
 Calculate the distance of the hit to the intersection in read direction.
float GetHitDistance2 (const MucRecHit *hit)
 no abs value
float GetHitDistance2 (const MucRecHit *hit)
 no abs value
vector< long > GetHitIndices () const
 Get indices of all hits in the track.
vector< long > GetHitIndices () const
 Get indices of all hits in the track.
int GetHitInGap (const int part, const int gap) const
 How many hits per gap does this track contain?
int GetHitInGap (const int part, const int gap) const
 How many hits per gap does this track contain?
int GetHitInSeg (const int part, const int seg) const
 How many hits does a segment contains.
int GetHitInSeg (const int part, const int seg) const
 How many hits does a segment contains.
int GetHitInSegOrient (const int part, const int seg, const int orient) const
 How many hits does a segment contains in one orient.
int GetHitInSegOrient (const int part, const int seg, const int orient) const
 How many hits does a segment contains in one orient.
vector< MucRecHit * > GetHits () const
 Get all hits on this track.
vector< MucRecHit * > GetHits () const
 Get all hits on this track.
void GetMdcExtTrack (Hep3Vector mdcStartPos, Hep3Vector mdcStartMomentum, int charge, Hep3Vector &mucStartPos, Hep3Vector &mucStartMomentum)
 compute ext track myself from mdc.
void GetMdcExtTrack (Hep3Vector mdcStartPos, Hep3Vector mdcStartMomentum, int charge, Hep3Vector &mucStartPos, Hep3Vector &mucStartMomentum)
 compute ext track myself from mdc.
Hep3Vector getMdcMomentum () const
 momentum of this track in Mdc
Hep3Vector getMdcMomentum () const
 momentum of this track in Mdc
Hep3Vector getMucMomentum () const
 Start momentum of this track in Muc.
Hep3Vector getMucMomentum () const
 Start momentum of this track in Muc.
Hep3Vector getMucPos () const
 start position of this track in Muc.
Hep3Vector getMucPos () const
 start position of this track in Muc.
Hep3Vector getMucPosSigma () const
Hep3Vector getMucPosSigma () const
Hep3Vector GetMucStripPos () const
Hep3Vector GetMucStripPos () const
int GetNGapsWithHits () const
 How many gaps provide hits attached to this track?
int GetNGapsWithHits () const
 How many gaps provide hits attached to this track?
int GetNSharedHits (const RecMucTrack *track) const
 How many hits do two tracks share?
int GetNSharedHits (const RecMucTrack *track) const
 How many hits do two tracks share?
vector< float > getQuadDistHits () const
vector< float > getQuadDistHits () const
int GetRecMode () const
int GetRecMode () const
int GetTotalHits () const
 How many hits in all does this track contain?
int GetTotalHits () const
 How many hits in all does this track contain?
vector< int > getVecHits () const
vector< int > getVecHits () const
bool HasHit (const int part, const int seg, const int gap, const int strip) const
 Does this track contains an assigned hit?
bool HasHit (const int part, const int seg, const int gap, const int strip) const
 Does this track contains an assigned hit?
bool HasHitInGap (const int part, const int gap) const
 Does this track contain any hits in the given gap?
bool HasHitInGap (const int part, const int gap) const
 Does this track contain any hits in the given gap?
int id () const
int id () const
bool IsInsideSuperConductor (Hep3Vector pos)
bool IsInsideSuperConductor (Hep3Vector pos)
void LineFit (int fittingMethod)
 Line fit with hits on a seg with max hits.
void LineFit (int fittingMethod)
 Line fit with hits on a seg with max hits.
int maxHitsInLayer () const
int maxHitsInLayer () const
int numHits () const
int numHits () const
int numLayers () const
int numLayers () const
RecMucTrackoperator= (const DstMucTrack &dstTrack)
 Assignment constructor from DstMucTrack.
RecMucTrackoperator= (const RecMucTrack &orig)
 Assignment constructor.
RecMucTrackoperator= (const DstMucTrack &dstTrack)
 Assignment constructor from DstMucTrack.
RecMucTrackoperator= (const RecMucTrack &orig)
 Assignment constructor.
void OutputUnitChange ()
 change unit
void OutputUnitChange ()
 change unit
void PrintHitsInfo () const
 Print Hits Infomation.
void PrintHitsInfo () const
 Print Hits Infomation.
void Project (const int &part, const int &gap, float &x, float &y, float &z, int &seg)
 Where does the trajectory of this track intersect a specific gap?
void Project (const int &part, const int &gap, float &x, float &y, float &z, int &seg)
 Where does the trajectory of this track intersect a specific gap?
void pushExtDistHits (float dist)
void pushExtDistHits (float dist)
double px () const
double px () const
double py () const
double py () const
double pz () const
double pz () const
 RecMucTrack (const DstMucTrack &dstTrack)
 Copy constructor from DstMucTrack.
 RecMucTrack (const RecMucTrack &source)
 Copy constructor.
 RecMucTrack ()
 Constructor.
 RecMucTrack (const DstMucTrack &dstTrack)
 Copy constructor from DstMucTrack.
 RecMucTrack (const RecMucTrack &source)
 Copy constructor.
 RecMucTrack ()
 Constructor.
double rms () const
double rms () const
void setBrLastLayer (int layer)
void setBrLastLayer (int layer)
void setChi2 (double chi2)
void setChi2 (double chi2)
void SetCurrentDir (const float x, const float y, const float z)
 set current direction of the trajectory.
void SetCurrentDir (const float x, const float y, const float z)
 set current direction of the trajectory.
void SetCurrentInsct (const float x, const float y, const float z)
 set current intersection of the trajectory with strip plane.
void SetCurrentInsct (const float x, const float y, const float z)
 set current intersection of the trajectory with strip plane.
void SetCurrentPos (const float x, const float y, const float z)
 set current position of the trajectory.
void SetCurrentPos (const float x, const float y, const float z)
 set current position of the trajectory.
void SetDefault ()
void SetDefault ()
void setDeltaPhi (double dphi)
void setDeltaPhi (double dphi)
void setDepth (double depth)
void setDepth (double depth)
void setDistance (double dist)
void setDistance (double dist)
void setDistHits (vector< float > &disthits)
void setDistHits (vector< float > &disthits)
void setDof (int dof)
void setDof (int dof)
void setEcLastLayer (int layer)
void setEcLastLayer (int layer)
void setEndPart (int part)
void setEndPart (int part)
void setExpHits (vector< int > &exphits)
void setExpHits (vector< MucRecHit * > &pHits)
void setExpHits (vector< int > &exphits)
void setExpHits (vector< MucRecHit * > &pHits)
void setExtDistHits (vector< float > &disthits)
void setExtDistHits (vector< float > &disthits)
void SetExtMucMomentum (const float px, const float py, const float pz)
 set start moment of ext track in Muc.
void SetExtMucMomentum (const float px, const float py, const float pz)
 set start moment of ext track in Muc.
void SetExtMucPos (const float x, const float y, const float z)
 set start position of ext track in Muc. (compute from MdcPos MdcMomentum or get from ExtTrack)
void SetExtMucPos (const float x, const float y, const float z)
 set start position of ext track in Muc. (compute from MdcPos MdcMomentum or get from ExtTrack)
void SetExtTrack (RecExtTrack *extTrack)
 set Ext track point.
void SetExtTrack (RecExtTrack *extTrack)
 set Ext track point.
void SetExtTrackID (int id)
 set Ext track id. for compute from mdc myself
void SetExtTrackID (int id)
 set Ext track id. for compute from mdc myself
void setId (int id)
void setId (int id)
void setMaxHitsInLayer (int maxHits)
void setMaxHitsInLayer (int maxHits)
void SetMdcMomentum (const float px, const float py, const float pz)
 set start moment of the track in Mdc.
void SetMdcMomentum (const float px, const float py, const float pz)
 set start moment of the track in Mdc.
void SetMdcPos (const float x, const float y, const float z)
 set start position of the track in Mdc.
void SetMdcPos (const float x, const float y, const float z)
 set start position of the track in Mdc.
void SetMucMomentum (const float px, const float py, const float pz)
 set start moment of the track in Muc.
void SetMucMomentum (const float px, const float py, const float pz)
 set start moment of the track in Muc.
void SetMucPos (const float x, const float y, const float z)
 set start position of the track in Muc. (after line fit and correction)
void SetMucPos (const float x, const float y, const float z)
 set start position of the track in Muc. (after line fit and correction)
void SetMucPosSigma (const float sigmax, const float sigmay, const float sigmaz)
void SetMucPosSigma (const float sigmax, const float sigmay, const float sigmaz)
void setNumHits (int numHits)
void setNumHits (int numHits)
void setNumLayers (int numLayers)
void setNumLayers (int numLayers)
void setPx (double px)
void setPx (double px)
void setPy (double py)
void setPy (double py)
void setPz (double pz)
void setPz (double pz)
void setQuadDistHits (vector< float > &disthits)
void setQuadDistHits (vector< float > &disthits)
void SetRecMode (int recmode)
void SetRecMode (int recmode)
void setRms (double rms)
void setRms (double rms)
void setStartPart (int part)
void setStartPart (int part)
void setStatus (int st)
void setStatus (int st)
void setTrackId (const int trackId)
 set the index for this track.
void setTrackId (const int trackId)
 set the index for this track.
void setType (int type)
void setType (int type)
void setVecHits (vector< int > &vechits)
void setVecHits (vector< MucRecHit * > &pHits)
 reload setVecHits
void setVecHits (vector< int > &vechits)
void setVecHits (vector< MucRecHit * > &pHits)
 reload setVecHits
void setXPos (double x)
void setXPos (double x)
void setXPosSigma (double xsigma)
void setXPosSigma (double xsigma)
void setYPos (double y)
void setYPos (double y)
void setYPosSigma (double ysigma)
void setYPosSigma (double ysigma)
void setZPos (double z)
void setZPos (double z)
void setZPosSigma (double zsigma)
void setZPosSigma (double zsigma)
int startPart () const
int startPart () const
int status () const
int status () const
int trackId () const
int trackId () const
int type () const
int type () const
vector< int > vecHits () const
vector< int > vecHits () const
double xPos () const
double xPos () const
double xPosSigma () const
double xPosSigma () const
double yPos () const
double yPos () const
double yPosSigma () const
double yPosSigma () const
double zPos () const
double zPos () const
double zPosSigma () const
double zPosSigma () const
 ~RecMucTrack ()
 Destructor.
 ~RecMucTrack ()
 Destructor.

Static Public Member Functions

const CLID & classID ()
const CLID & classID ()

Protected Attributes

int m_brLastLayer
double m_chi2
double m_deltaPhi
double m_depth
double m_distance
int m_dof
int m_ecLastLayer
int m_endPart
int m_id
int m_maxHitsInLayer
int m_numHits
int m_numLayers
double m_px
double m_py
double m_pz
double m_rms
int m_startPart
int m_status
int m_trackId
int m_type
double m_xPos
double m_xPosSigma
double m_yPos
double m_yPosSigma
double m_zPos
double m_zPosSigma

Private Attributes

int m_brFirstLayer
bool m_changeUnit
Hep3Vector m_CurrentDir
Hep3Vector m_CurrentInsct
Hep3Vector m_CurrentPos
float m_depth_3
vector< Hep3Vector > m_Directions
vector< Hep3Vector > m_Directions
Hep3Vector m_Dist_muc_ext
vector< float > m_distHits
vector< float > m_distHits
vector< float > m_distHits_ext
vector< float > m_distHits_ext
vector< float > m_distHits_quad
vector< float > m_distHits_quad
int m_ecFirstLayer
int m_ecPart
vector< int > m_expHits
vector< int > m_expHits
Hep3Vector m_ExtMucMomentum
Hep3Vector m_ExtMucPos
RecExtTrackm_ExtTrack
RecExtTrackm_ExtTrack
int m_ExtTrackID
int m_Good3DLine
int m_Good3DPart
Hep3Vector m_IntersectionInner [9]
Hep3Vector m_IntersectionOuter [9]
vector< Hep3Vector > m_Intersections
vector< Hep3Vector > m_Intersections
Hep3Vector m_MdcMomentum
Hep3Vector m_MdcPos
Hep3Vector m_MucMomentum
Hep3Vector m_MucPos
Hep3Vector m_MucPosSigma
vector< MucRecHit * > m_pExpectedHits
vector< MucRecHit * > m_pExpectedHits
vector< MucRecHit * > m_pHits
vector< MucRecHit * > m_pHits
int m_recmode
Hep3Vector m_StripPhi
vector< int > m_vecHits
vector< int > m_vecHits

Constructor & Destructor Documentation

RecMucTrack::RecMucTrack  ) 
 

Constructor.

00027   : //m_trackId(-1),    //--------------->
00028   m_ExtTrackID(-1),
00029   m_MdcPos(0.0, 0.0, 0.0),
00030   m_MdcMomentum(0.0, 0.0, 0.0),
00031   m_MucPos(0.0, 0.0, 0.0),
00032   m_MucPosSigma(0.0, 0.0, 0.0),
00033   m_MucMomentum(0.0, 0.0, 0.0),
00034   m_CurrentPos(0.0, 0.0, 0.0),
00035   m_CurrentDir(0.0, 0.0, 0.0),
00036   m_CurrentInsct(0.0, 0.0, 0.0),
00037   m_Good3DLine(0),
00038   m_pHits(0),
00039   m_pExpectedHits(0),
00040   m_Intersections(0),
00041   m_Directions(0)
00042 { 
00043   // initialize m_IntersectionInner/Outer.
00044   for(int igap = 0; igap < 9; igap++){
00045     m_IntersectionInner[igap].set(-9999,-9999,-9999);
00046     m_IntersectionOuter[igap].set(-9999,-9999,-9999);    
00047   }
00048   m_id = 0;
00049   m_status = -1;
00050   m_type = -1;
00051 
00052   m_numHits = 0;  
00053   m_startPart = -1;
00054   m_endPart = -1;
00055   m_brLastLayer = -1;
00056   m_ecLastLayer = -1;
00057   m_brFirstLayer = -1;
00058   m_ecFirstLayer = -1;
00059   m_ecPart = -1;
00060   m_numLayers = 0;
00061   m_maxHitsInLayer = 0;
00062   m_depth = -99;
00063   m_dof = 0;
00064   m_chi2 = 0.0;
00065   m_rms = 0.0;
00066   m_deltaPhi = 0.0; 
00067 
00068   m_xPosSigma = 0.0;
00069   m_yPosSigma = 0.0;
00070   m_zPosSigma = 0.0;
00071 
00072   m_changeUnit = false;
00073   m_recmode = 0;
00074 }

RecMucTrack::RecMucTrack const RecMucTrack source  ) 
 

Copy constructor.

00123   : //m_trackId        (source.m_trackId),    //--------------->
00124     m_ExtTrackID   (source.m_ExtTrackID),
00125     m_MdcPos       (source.m_MdcPos),
00126     m_MdcMomentum  (source.m_MdcMomentum),
00127     m_MucPos       (source.m_MucPos),
00128     m_MucPosSigma  (source.m_MucPosSigma),
00129     m_MucMomentum  (source.m_MucMomentum),
00130     m_CurrentPos   (source.m_CurrentPos),
00131     m_CurrentDir   (source.m_CurrentDir),
00132     m_CurrentInsct (source.m_CurrentInsct),
00133     m_pHits        (source.m_pHits),
00134     m_pExpectedHits(source.m_pExpectedHits),
00135     m_Intersections(source.m_Intersections),
00136     m_Directions   (source.m_Directions)
00137 { 
00138     m_id           = source.m_id;
00139     m_status       = source.m_status;
00140     m_type         = source.m_type;
00141     m_numHits      = source.m_numHits;    //--------------->
00142     m_startPart    = source.m_startPart;
00143     m_endPart      = source.m_endPart;
00144     m_brLastLayer  = source.m_brLastLayer;
00145     m_ecLastLayer  = source.m_ecLastLayer;
00146     m_numLayers    = source.m_numLayers;
00147     m_maxHitsInLayer= source.m_maxHitsInLayer;
00148     m_depth        = source.m_depth;
00149     m_dof          = source.m_dof;
00150     m_chi2         = source.m_chi2;
00151     m_rms          = source.m_rms;
00152     m_deltaPhi     = source.m_deltaPhi;
00153     m_xPosSigma    = source.m_xPosSigma;
00154     m_yPosSigma    = source.m_yPosSigma;
00155     m_zPosSigma    = source.m_zPosSigma;
00156     m_changeUnit   = source.m_changeUnit;
00157     m_recmode      = source.m_recmode;
00158     
00159 }

RecMucTrack::RecMucTrack const DstMucTrack dstTrack  ) 
 

Copy constructor from DstMucTrack.

00162   :DstMucTrack(dstTrack)
00163 {
00164 
00165   SetDefault();
00166   
00167 }

RecMucTrack::~RecMucTrack  ) 
 

Destructor.

00185 { 
00186 for(int i = 0 ; i < m_pExpectedHits.size(); i++)
00187           delete m_pExpectedHits[i];
00188 }

RecMucTrack::RecMucTrack  ) 
 

Constructor.

RecMucTrack::RecMucTrack const RecMucTrack source  ) 
 

Copy constructor.

RecMucTrack::RecMucTrack const DstMucTrack dstTrack  ) 
 

Copy constructor from DstMucTrack.

RecMucTrack::~RecMucTrack  ) 
 

Destructor.


Member Function Documentation

void RecMucTrack::AttachDirection Hep3Vector  dir  ) 
 

Attach the direction to this trajectory.

void RecMucTrack::AttachDirection Hep3Vector  dir  ) 
 

Attach the direction to this trajectory.

00598 {
00599   m_Directions.push_back(dir);
00600 }

void RecMucTrack::AttachHit MucRecHit hit  ) 
 

Attach the given hit to this track.

void RecMucTrack::AttachHit MucRecHit hit  ) 
 

Attach the given hit to this track.

00376 {
00377   //  cout << "Muc2DRoad::AttachHit-I0  hit = " << hit << endl;
00378 
00379   if (!hit) {
00380     cout << "RecMucTrack::AttachHit-E1  null hit pointer!" << endl;
00381     return ;
00382   }
00383   
00384   int part = hit->Part();
00385   int gap  = hit->Gap();
00386   if ( (gap < 0) || (gap >= (int)MucID::getGapNum(part)) ) {
00387     // The gap number of the hit is out of range.
00388     cout << "Muc2DRoad::AttachHit(MucRecHit*), bad gap number = " << gap
00389          << endl;
00390     return;
00391   }
00392 
00393   // Attach the hit to the road.
00394   m_pHits.push_back(hit);
00395   
00396   //  m_HitDistance[gap] = dX;
00397 
00398   // Now recalculate the total number of hits and the max. number of
00399   // hits per gap.
00400   //CountHits();
00401 }

void RecMucTrack::AttachInsct Hep3Vector  insct  ) 
 

Attach the intersection to this trajectory.

void RecMucTrack::AttachInsct Hep3Vector  insct  ) 
 

Attach the intersection to this trajectory.

00592 {
00593   m_Intersections.push_back(insct);
00594 }

int RecMucTrack::brFirstLayer  )  const [inline]
 

Which gap on Barrel is the first one with hits attached to this track?

00221 { return m_brFirstLayer; }

int RecMucTrack::brFirstLayer  )  const [inline]
 

Which gap on Barrel is the first one with hits attached to this track?

00221 { return m_brFirstLayer; }

int DstMucTrack::brLastLayer  )  const [inline, inherited]
 

00039 { return   m_brLastLayer;  } // last layer with hits in barrel 

int DstMucTrack::brLastLayer  )  const [inline, inherited]
 

00039 { return   m_brLastLayer;  } // last layer with hits in barrel 

Hep3Vector RecMucTrack::CalculateInsct const int  part,
const int  seg,
const int  gap
 

Calculate intersection from all hits attached on this gap.

Hep3Vector RecMucTrack::CalculateInsct const int  part,
const int  seg,
const int  gap
 

Calculate intersection from all hits attached on this gap.

00527 {
00528   MucGeoGap *gapPtr = MucGeoGeneral::Instance()->GetGap(part, seg, gap);
00529   vector<int> hitSeq;
00530   for(int i = 0; i < (int)m_pHits.size(); i++) {
00531     MucRecHit *aHit = m_pHits[i];
00532     if(aHit->Part() == part &&
00533        aHit->Seg()  == seg  &&
00534        aHit->Gap()  == gap) {
00535       hitSeq.push_back(i);
00536     }  
00537   }    
00538   int nHitInGap = hitSeq.size();
00539   //cout << "nHitInGap " << nHitInGap << endl;
00540   
00541   HepPoint3D insctLocal = gapPtr->TransformToGap(m_CurrentInsct);
00542   //HepPoint3D newInsct(0.0, 0.0, 0.0);
00543   HepPoint3D newInsctLocal = insctLocal;
00544 
00545   vector<float> x;
00546   for(int i = 0; i < nHitInGap; i++) x.push_back(0);
00547   float xInsct = 0, xNewInsct = 0;
00548 
00549 
00550   int orient = gapPtr->Orient();
00551   if(orient == 1) xInsct = insctLocal.x();
00552   if(orient == 0) xInsct = insctLocal.y();
00553   
00554   for(int i = 0; i < nHitInGap; i++) {
00555     float xStrip, yStrip, zStrip;
00556     (m_pHits[hitSeq[i]])->GetStrip()->GetCenterPos(xStrip, yStrip, zStrip);
00557     if(orient == 1) x[i] = xStrip;
00558     if(orient == 0) x[i] = yStrip;
00559   }
00560   //cout << "local Old" << insctLocal << endl;
00561 
00562   //if == 0, no direction change;
00563   if(nHitInGap > 0) {
00564     xNewInsct = xInsct * kInsctWeight;
00565 
00566     //float minDist = kInfinity;
00567     for(int i = 0; i < nHitInGap; i++) {
00568       //if(fabs(x[i] - xInsct) < minDist) {
00569       //xNewInsct = x[i];    //}
00570       xNewInsct += x[i] * ((1.0 - kInsctWeight) / nHitInGap);
00571     }
00572     
00573     if(orient == 1) {
00574       newInsctLocal.setX(xNewInsct);
00575       newInsctLocal.setY(insctLocal.y());
00576     }
00577     if(orient == 0) {
00578       newInsctLocal.setX(insctLocal.x());
00579       newInsctLocal.setY(xNewInsct);
00580     }
00581   }
00582 
00583   m_CurrentInsct = gapPtr->TransformToGlobal(newInsctLocal);
00584   //cout << "local  New" << newInsctLocal << endl;
00585   //cout << "global New" << m_CurrentInsct << endl;
00586   
00587   return m_CurrentInsct;
00588 }

double DstMucTrack::chi2  )  const [inline, inherited]
 

00046 { return   m_chi2;   }

double DstMucTrack::chi2  )  const [inline, inherited]
 

00046 { return   m_chi2;   }

const CLID& RecMucTrack::classID  )  [inline, static]
 

Reimplemented from DstMucTrack.

00050     {
00051       return CLID_RecMucTrack;
00052     }

const CLID& RecMucTrack::classID  )  [inline, static]
 

Reimplemented from DstMucTrack.

00050     {
00051       return CLID_RecMucTrack;
00052     }

virtual const CLID& RecMucTrack::clID  )  const [inline, virtual]
 

Reimplemented from DstMucTrack.

00045     {
00046       return RecMucTrack::classID();
00047     }

virtual const CLID& RecMucTrack::clID  )  const [inline, virtual]
 

Reimplemented from DstMucTrack.

00045     {
00046       return RecMucTrack::classID();
00047     }

int RecMucTrack::ComputeDepth int  method  ) 
 

Compute depth.

void RecMucTrack::ComputeDepth  ) 
 

Compute depth.

int RecMucTrack::ComputeDepth int  method  ) 
 

Compute depth.

00657 {
00658   if( m_numLayers == 0 ) {
00659     m_depth = m_depth_3 = -99; return 0; 
00660   } 
00661   else if( m_numLayers == 1 && (m_brLastLayer == 0 || m_ecLastLayer == 0) ) {
00662     m_depth = m_depth_3 = 0; return 0;
00663   }
00664   
00665   m_depth_3 = 0.0;
00666   
00667   float brThickness = 0.0;  float ecThickness = 0.0;  float deltaPhi = 0.0;
00668   int betweenSeg = 0;
00669 
00670   float phi = m_MucMomentum.phi();
00671   float theta = m_MucMomentum.theta();
00672 
00673   vector<MucRecHit*>::const_iterator iHit;
00674   int ngap = MucID::getGapMax();
00675   //cout<<"ngap:\t"<<ngap<<endl;
00676   
00677   int Seg[9]; int part, seg, gap, strip;
00678   for(int gap = 0; gap < ngap; gap++){Seg[gap] = -1;}
00679   for(iHit = m_pHits.begin(); iHit != m_pHits.end(); iHit++) {
00680     if(*iHit) {  // Check for a null pointer.
00681       part   = (*iHit)->Part();
00682       seg    = (*iHit)->Seg();
00683       gap    = (*iHit)->Gap();
00684       strip  = (*iHit)->Strip();
00685       if(part==1) Seg[gap] = seg;
00686     }
00687   }
00688 
00689   int segTrackBr = -1;
00690   for(int gap = 0; gap <= brLastLayer(); gap++){
00691     if(Seg[gap] != -1) segTrackBr = Seg[gap];
00692   }
00693   // BR, the innermost layer is RPC module
00694   for(int gap = 0; gap <= brLastLayer(); gap++){
00695     float thickness = 0.0;
00696     if(Seg[gap] != -1 && Seg[brLastLayer()-1] != -1 && Seg[gap] != Seg[brLastLayer()-1]) betweenSeg = 1; 
00697     thickness = MucGeoGeneral::Instance()->GetGap(1, 0, gap)->GetIronThickness();
00698     //cout<<"RecMucTrack  gap="<<gap<<" brlastgap="<<brLastLayer()<<" "<<thickness<<endl;
00699     if(sin(m_MucMomentum.theta()) != 0 ) thickness /= sin(m_MucMomentum.theta());
00700     else ;//cout<<"RecMucTrack::ComputeDepth, In Barrel,theta=0?"<<endl;
00701     deltaPhi = m_MucMomentum.phi() - segTrackBr*kPi/4;
00702     if(Seg[gap] == -1 && betweenSeg == 1) {
00703       thickness += 40;  // gap width
00704     }
00705     if(cos(deltaPhi) != 0 ) thickness /= cos(deltaPhi);
00706     else ;//cout<<"RecMucTrack::ComputeDepth, In Barrel,Cos(phi)=0?"<<endl;
00707     if(deltaPhi == 0 && Seg[brLastLayer()-1]==2 ) thickness = 0;
00708     //cout<<"in muctrack "<<thickness<<" "<<brThickness<<" theta "<<m_MucMomentum.theta()<<" phi="<<deltaPhi<<" "<<m_MucMomentum.phi()<<endl;
00709 
00710     if(brFirstLayer()<brLastLayer())  brThickness += thickness; 
00711     else if(brFirstLayer()==brLastLayer()) {  //only one gap
00712       if(m_MucMomentum.mag()>1000 || brFirstLayer()<2)  brThickness += thickness;  //high momentum or only one or two gap
00713       //cout<<"mom="<<m_MucMomentum.mag()<<" "<<brFirstLayer()<<" "<<brThickness<<" "<<thickness<<endl;
00714     }
00715     else cout<<"in RecMucTrack: Wrong Gap Info"<<endl;
00716 
00717     //cout<<brThickness<<endl;
00718   }
00719 
00720   //cout<<"eclastgap= "<<ecLastLayer()<<"  ecfirstgap= "<<ecFirstLayer()<<endl;
00721 
00722   // EC, the innermost layer is Iron
00723   //for (int gap = ecFirstLayer(); gap!=-1&&gap <= ecLastLayer(); gap++) {
00724   for (int gap = 0; gap!=-1&&gap <= ecLastLayer(); gap++) {
00725     ecThickness += MucGeoGeneral::Instance()->GetGap(0, 0, gap)->GetIronThickness();
00726   }
00727   
00728   if (cos(theta) != 0.0) ecThickness /= cos(theta);
00729   else ;//cout << "RecMucTrack::ComputeDepth, In EndCap, Track theta = 90.0 ? " << endl;
00730   ecThickness  = fabs(ecThickness);
00731   
00732   //cout<<"eclastgap= "<<ecLastLayer()<<" ecthickness="<<ecThickness<<endl;
00733 
00734   if(method == 2){
00735     //barrel first
00736     if((m_Good3DLine == 1) &&(m_Good3DPart == 1)){
00737       if(m_IntersectionInner[0].x()!=-9999){
00738         for(int gap = 1;gap <= brLastLayer(); gap++)//Inner[gap1]-Outer[gap0] ...
00739           {
00740           if(m_IntersectionInner[gap].x() != -9999 && m_IntersectionInner[gap-1].x() != -9999)
00741             m_depth_3 += (m_IntersectionInner[gap] - m_IntersectionOuter[gap-1]).mag();
00742           }
00743         //may be pass some gap in endcap!
00744         m_depth_3 += ecThickness;
00745       }
00746       else m_depth_3 = brThickness + ecThickness;
00747     }
00748     if((m_Good3DLine == 1) &&(m_Good3DPart != 1)){
00749       for(int gap = 1;gap <= ecLastLayer(); gap++)//Inner[gap1]-Outer[gap0] ...
00750       {
00751         if(m_IntersectionInner[gap].x() != -9999 && m_IntersectionInner[gap-1].x() != -9999)
00752           m_depth_3 += (m_IntersectionInner[gap] - m_IntersectionOuter[gap-1]).mag();
00753       }
00754       //may be pass some gap in barrel!
00755       m_depth_3 += brThickness;
00756       if (cos(theta) != 0.0) m_depth_3 += 40/cos(theta); //there is 1 absorber before first gap in endcap!
00757     }
00758     if(m_Good3DLine == 0) m_depth_3 = brThickness + ecThickness;
00759     if(m_depth_3>2000) m_depth_3 = brThickness + ecThickness;  //unreasonable depth! so use previous method!
00760   }
00761   else  //method == 1 linefit
00762     {
00763       m_depth_3 = brThickness + ecThickness;
00764 
00765     }
00766   
00767   double offset = 50.0;
00768   //if(GetTotalHits() > 0) m_depth_3 += offset;
00769 
00770   m_depth = m_depth_3; 
00771 
00772   //if(m_depth<0||m_depth>2000) m_depth = 0;
00773   if(m_depth>2000) m_depth = -99;
00774   //cout<<"depth= "<<m_depth<<endl;
00775 
00776 }

void RecMucTrack::ComputeDepth  ) 
 

Compute depth.

00780 {
00781   m_depth = -99.0;
00782   // Part 1 first.
00783   float brThickness = 0.0;
00784   for (int gap = 0; gap <= brLastLayer(); gap++) {
00785     brThickness += MucGeoGeneral::Instance()->GetGap(1, 0, gap)->GetIronThickness();
00786   }
00787 
00788   // second alg
00789   float brThickness_2 = 0.0;
00790   for (int gap = 0; gap <= brLastLayer(); gap++) {
00791     if(HasHitInGap(1,gap)){
00792       brThickness_2 += MucGeoGeneral::Instance()->GetGap(1, 0, gap)->GetIronThickness();
00793     }
00794   }
00795   // third alg
00796   float brThickness_3 = 0.0;
00797   vector<MucRecHit*>::const_iterator iHit;
00798   int ngap = MucID::getGapMax();
00799   int Seg[9]; int part, seg, gap, strip;
00800   for(int gap = 0; gap < ngap; gap++){Seg[gap] = -1;}
00801   for(iHit = m_pHits.begin(); iHit != m_pHits.end(); iHit++) {
00802     if(*iHit) {  // Check for a null pointer.
00803       part   = (*iHit)->Part();
00804       seg    = (*iHit)->Seg();
00805       gap    = (*iHit)->Gap();
00806       strip  = (*iHit)->Strip();
00807       if(part==1) Seg[gap] = seg;
00808     }
00809   }
00810   
00811   float deltaPhi_3 = 0.0;
00812   int betweenSeg = 0;
00813 
00814   int segTrackBr = -1;
00815   for(int gap = 0; gap <= brLastLayer(); gap++){
00816     if(Seg[gap] != -1) segTrackBr = Seg[gap];
00817   }
00818 
00819   for(int gap = 0; gap <= brLastLayer(); gap++){
00820     float thickness = 0.0;
00821     if(Seg[gap] != -1 && Seg[brLastLayer()-1] != -1 && Seg[gap] != Seg[brLastLayer()-1]) betweenSeg = 1; 
00822     thickness = MucGeoGeneral::Instance()->GetGap(1, 0, gap)->GetIronThickness();
00823     if(sin(m_MucMomentum.theta()) != 0 ) thickness /= sin(m_MucMomentum.theta());
00824     else cout<<"RecMucTrack::ComputeDepth, In Barrel,theta=0?"<<endl;
00825     //if(Seg[gap] != -1) deltaPhi_3 = m_MucMomentum.phi() - Seg[gap]*kPi/4;
00826     deltaPhi_3 = m_MucMomentum.phi() - segTrackBr*kPi/4;   //some times, no hits in a gap, but a good track exist!
00827     if(Seg[gap] == -1 && betweenSeg == 1) {
00828       cout<<"between segment"<<endl;
00829       thickness += 40;  // gap width
00830     }
00831 
00832     if(cos(deltaPhi_3) != 0 ) thickness /= cos(deltaPhi_3);
00833     else cout<<"RecMucTrack::ComputeDepth, In Barrel,Cos(phi)=0?"<<endl;
00834 
00835     if(deltaPhi_3 == 0 && Seg[brLastLayer()-1]==2 ) thickness = 0;
00836     //cout<<"in muctrack "<<thickness<<" "<<brThickness_3<<" theta "<<m_MucMomentum.theta()<<" phi="<<deltaPhi_3<<" "<<m_MucMomentum.phi()<<endl;
00837     brThickness_3 += thickness;
00838     
00839   }
00840 
00841   //cout<<"in RecMucTrack: compare thickness "<<brThickness<<" "<<brThickness_2<<" "<<brThickness_3<<endl;
00842 
00843   float phi = m_MucMomentum.phi();
00844   float deltaPhi = phi - kPi/4*(int)(phi/(kPi/4));
00845   if (deltaPhi > kPi/8) deltaPhi = kPi/4 - deltaPhi;
00846   float theta = m_MucMomentum.theta();
00847 //   cout << "br LastGap " << brLastLayer() << " Thick " << brThickness 
00848 //     << " 1/sin(theta) " << 1/sin(theta) << " 1/cos(deltaPhi) " << 1/cos(deltaPhi) << endl;
00849 
00850   if (sin(theta) != 0.0) brThickness /= sin(theta);
00851   else cout << "RecMucTrack::ComputeDepth, In Barrel, Track theta = 0.0 ? " << endl; 
00852 
00853   brThickness /= cos(deltaPhi);
00854   brThickness  = fabs(brThickness);
00855   //cout << "br Depth " << brThickness << endl;
00856   
00857   // EC, then
00858   float ecThickness = 0.0;
00859   for (int gap = 0; gap <= ecLastLayer(); gap++) {
00860     ecThickness += MucGeoGeneral::Instance()->GetGap(0, 0, gap)->GetIronThickness();
00861   }
00862   //cout << "ec LastGap " << ecLastLayer() << " Thick " << ecThickness
00863   //   << " 1/cos(theta) " << 1/cos(theta) << endl;
00864   
00865   if (cos(theta) != 0.0) ecThickness /= cos(theta);
00866   else ; //cout << "RecMucTrack::ComputeDepth, In EndCap, Track theta = 90.0 ? " << endl;
00867   ecThickness  = fabs(ecThickness);
00868   //cout << "ec Depth " << ecThickness << endl;
00869 
00870   m_depth = brThickness + ecThickness;
00871   m_depth_3 = brThickness_3 + ecThickness;
00872   cout << "Depth " << m_depth << " Depth3 = "<<m_depth_3<<endl;
00873   m_depth = m_depth_3;
00874   double offset = 50.0;
00875   if(GetTotalHits() > 0) m_depth += offset; // since brThickness on gap 0 is zero, give an offset for track arriving muc.
00876 
00877 }

void RecMucTrack::ComputeDistanceMatch  ) 
 

Compute distance match //2006.11.08.

void RecMucTrack::ComputeDistanceMatch  ) 
 

Compute distance match //2006.11.08.

00881 {
00882   bool firstHitFound = false;
00883   MucGeoGap *firstGap = 0; 
00884   vector<MucRecHit*>::const_iterator iHit;
00885   vector<MucRecHit*> hitsGap0;
00886   float stripLocal[3]={0.0, 0.0, 0.0};
00887   float stripGlobal[3]={0.0, 0.0, 0.0};
00888   int nStrip = 0;
00889 
00890   int part, seg, gap, strip;
00891   int barrel_gap0_exist = 0;
00892 
00893   for(iHit = m_pHits.begin(); iHit != m_pHits.end(); iHit++) {
00894     if(*iHit) {  // Check for a null pointer.
00895       part   = (*iHit)->Part();
00896       seg    = (*iHit)->Seg();
00897       gap    = (*iHit)->Gap();
00898       strip  = (*iHit)->Strip();
00899       if(!firstHitFound && gap == 0) {
00900         firstGap = MucGeoGeneral::Instance()->GetGap(part, seg, gap);
00901         firstHitFound = true;
00902       }
00903       if(firstGap && part == firstGap->Part() && seg == firstGap->Seg() && gap == firstGap->Gap()) {
00904         //cout<<"in RecMucTrack "<<part<<" "<<seg<<" "<<gap<<" "<<strip<<endl;
00905         HepPoint3D posHit        = (*iHit)->GetCenterPos();
00906         HepPoint3D posHitLocal   = (*iHit)->GetGap()->TransformToGap(posHit);
00907         if(part==1&&gap==0) barrel_gap0_exist = 1;  //exist
00908         
00909         stripLocal[0] += posHitLocal.x();
00910         stripLocal[1] += posHitLocal.y();
00911         stripLocal[2] += posHitLocal.z(); 
00912 
00913         stripGlobal[0] += posHit.x();   //to calc phi of this strip 
00914         stripGlobal[1] += posHit.y();
00915         stripGlobal[2] += posHit.z();
00916  
00917         nStrip++;
00918       }
00919     }
00920   }
00921 
00922   //cout<<"in RecMucTrack: extpos "<<m_ExtMucPos<<" mucpos "<< m_MucPos<<endl;
00923   
00924   int apart = -1, aseg = -1;
00925   int nHits = FindSegWithMaxHits(apart, aseg);
00926   MucGeoGap *fakefirstGap = 0;   // maybe not exist!
00927   if(apart == -1 && aseg== -1)
00928     {m_Dist_muc_ext.set(0,0,0);}
00929   else {
00930     fakefirstGap = MucGeoGeneral::Instance()->GetGap(apart, aseg, 0);
00931     HepPoint3D fextLocal = fakefirstGap->TransformToGap(m_ExtMucPos);
00932     HepPoint3D fmucLocal = fakefirstGap->TransformToGap(m_MucPos);
00933     float dist_x = fextLocal.x() - fmucLocal.x();
00934     float dist_y = fextLocal.y() - fmucLocal.y();
00935     float dist_z = fextLocal.z() - fmucLocal.z();
00936     m_Dist_muc_ext.set(dist_x,dist_y,dist_z);
00937     //cout<<"in RecMucTrack dist = "<<dist_x<<" "<<dist_y<<" "<<dist_z<<endl;
00938     if (fakefirstGap->Orient() == 0) { // part 0,2
00939       //cout<<"in RecMucTrack "<< extLocal.y()<<" "<<stripLocal[1]<<endl;
00940     }
00941     else {
00942       //cout<<"in RecMucTrack1 "<< extLocal.x()<<" "<<stripLocal[0]<<endl;
00943     }
00944   }
00945 
00946   float distance = -9990;
00947 
00948   if (nStrip == 0 || !firstGap) {
00949     distance = -9990;
00950     //cout << "no hits on first gap" << endl;
00951   }  
00952   else{
00953     for (int k = 0; k < 3; k++) stripLocal[k] /= nStrip;
00954     for (int k = 0; k < 3; k++) stripGlobal[k] /= nStrip;
00955     
00956     m_StripPhi.set(stripGlobal[0],stripGlobal[1],stripGlobal[2]);
00957 
00958     HepPoint3D extLocal = firstGap->TransformToGap(m_ExtMucPos);
00959     // extmucpos may be can be used to identify mu/pion
00960 
00961 //     cout<<"in RecMucTrack mom "<<m_MucMomentum.x()<<" "<<m_MucMomentum.y()<<" "<<m_MucMomentum.z()<<endl;
00962 //     cout<<"in RecMucTrack extpos "<<m_ExtMucPos.x()<<" "<<m_ExtMucPos.y()<<" "<<m_ExtMucPos.z()<<endl;
00963 //     cout<<"in RecMucTrack extpos2 "<<ExtMucPos_2.x()<<" "<<ExtMucPos_2.y()<<" "<<ExtMucPos_2.z()<<endl;
00964 //     cout<<"in RecMucTrack extloc "<<extLocal.x()<<" "<<extLocal.y()<<" "<<extLocal.z()<<endl;
00965     if (firstGap->Orient() == 0) { // part 0,2
00966       distance = extLocal.y() - stripLocal[1];
00967       //cout<<"in RecMucTrack "<< extLocal.y()<<" "<<stripLocal[1]<<endl;
00968     }
00969     else {
00970       distance = extLocal.x() - stripLocal[0];
00971       //cout<<"in RecMucTrack1 "<< extLocal.x()<<" "<<stripLocal[0]<<endl;
00972     }
00973   }
00974 
00975   m_distance = distance;
00976 
00977   //use m_chi2 temporary 
00978   //m_chi2 = distance;
00979   // cout<<"in RecMucTrack  distance= "<<m_distance<<" n= "<<nStrip<<endl;
00980 }

void RecMucTrack::ComputeLastGap  ) 
 

Comute last gap in barrel and endcap.

void RecMucTrack::ComputeLastGap  ) 
 

Comute last gap in barrel and endcap.

00619 {
00620   int lastGap1, lastGap2;
00621   int firstGap1, firstGap2;
00622   lastGap1 = lastGap2 = -1;
00623   firstGap1 = firstGap2 = 99;
00624   vector<MucRecHit*>::const_iterator iHit;
00625   iHit = m_pHits.begin();
00626   for( ;iHit != m_pHits.end(); iHit++) 
00627   {
00628     if(*iHit) 
00629     {  // Check for a null pointer.
00630       int part = (*iHit)->Part();
00631       int gap  = (*iHit)->Gap();
00632       
00633       if(part == 1) {
00634         if(gap > lastGap1)  lastGap1 = gap;      
00635         if(gap < firstGap1) firstGap1 = gap;
00636       }
00637       else {
00638         if(gap > lastGap2)  { m_ecPart = part; m_endPart = part; lastGap2 = gap; }
00639         if(gap < firstGap2) firstGap2 = gap;
00640       }
00641     }
00642   }
00643   
00644   m_brLastLayer = lastGap1;
00645   if(firstGap1 == 99) m_brFirstLayer = -1;
00646   else if(firstGap1>=0&&firstGap1<9) m_brFirstLayer = firstGap1;
00647 
00648   m_ecLastLayer = lastGap2;
00649   if(firstGap2 == 99) m_ecFirstLayer = -1;
00650   else if(firstGap2>=0&&firstGap2<8) m_ecFirstLayer = firstGap2;
00651 
00652   //cout<<"MucTrack, br: "<<m_brFirstLayer<<", "<<m_brLastLayer<<"\tec: "<<m_ecFirstLayer<<", "<<m_ecLastLayer<<endl;
00653 }

void RecMucTrack::ComputeMaxHitsInGap  ) 
 

ComputeMaxHitsInGap;.

void RecMucTrack::ComputeMaxHitsInGap  ) 
 

ComputeMaxHitsInGap;.

01511 {
01512   int maxHits = 0;
01513   int hits = 0;
01514   for(int part = 0; part < (int)MucID::getPartNum(); part++) {
01515     for(int gap = 0; gap < (int)MucID::getGapNum(part); gap++) {
01516       hits = GetHitInGap(part, gap);
01517       if(hits > maxHits) maxHits = hits;
01518     }
01519   }
01520 
01521   m_maxHitsInLayer = maxHits;
01522 }

void RecMucTrack::ComputeNGapsWithHits  ) 
 

ComputeNGapsWithHits;.

void RecMucTrack::ComputeNGapsWithHits  ) 
 

ComputeNGapsWithHits;.

01395 {
01396   int ngap = MucID::getGapMax();
01397   int gap, count = 0;
01398   vector<int> firedGap;
01399   for(gap = 0; gap < ngap; gap++) firedGap.push_back(0);
01400 
01401   vector<MucRecHit*>::const_iterator iHit;
01402   for (iHit=m_pHits.begin(); iHit != m_pHits.end(); iHit++) {
01403     if (*iHit) {  // Check for a null pointer.
01404       gap = (*iHit)->Gap();
01405       firedGap[gap] = 1;
01406     }
01407   }
01408   
01409   for ( gap = 0; gap < ngap; gap++) {
01410     count += firedGap[gap];
01411   }
01412 
01413   m_numHits   = m_pHits.size();
01414   m_numLayers = count;
01415   //cout<<"nLayer:\t"<<m_numLayers<<endl;
01416 }

void RecMucTrack::ComputeTrackInfo int  fittingmethod  ) 
 

Compute all infomation of this track;.

void RecMucTrack::ComputeTrackInfo int  fittingmethod  ) 
 

Compute all infomation of this track;.

01653 {
01654   setVecHits(m_pHits);
01655   setExpHits(m_pExpectedHits);
01656   ComputeLastGap();
01657   ComputeNGapsWithHits(); 
01658   ComputeMaxHitsInGap();
01659   //ComputeDepth();
01660   ComputeDepth(fittingmethod);
01661   ComputeDistanceMatch();
01662   OutputUnitChange();
01663 }

void RecMucTrack::CorrectDir  ) 
 

Correct direction of this trajectory.

void RecMucTrack::CorrectDir  ) 
 

Correct direction of this trajectory.

00604 {
00605   //cout << "Before CorrectDir(), fCurrentDir " << m_CurrentDir << endl;
00606   m_CurrentDir = m_CurrentInsct - m_CurrentPos;
00607   m_CurrentDir.setMag(1.0);
00608   //cout << "After CorrectDir(), fCurrentDir " << m_CurrentDir << endl;
00609 }

void RecMucTrack::CorrectPos  ) 
 

Correct current position of this trajectory.

void RecMucTrack::CorrectPos  ) 
 

Correct current position of this trajectory.

00613 {
00614   m_CurrentPos = m_CurrentInsct;
00615 }

double DstMucTrack::deltaPhi  )  const [inline, inherited]
 

00063 { return m_deltaPhi;}

double DstMucTrack::deltaPhi  )  const [inline, inherited]
 

00063 { return m_deltaPhi;}

double DstMucTrack::depth  )  const [inline, inherited]
 

00045 { return   m_depth;  }    // depth of the track transport in iron

double DstMucTrack::depth  )  const [inline, inherited]
 

00045 { return   m_depth;  }    // depth of the track transport in iron

double DstMucTrack::distance  )  const [inline, inherited]
 

00062 { return m_distance;}

double DstMucTrack::distance  )  const [inline, inherited]
 

00062 { return m_distance;}

int DstMucTrack::dof  )  const [inline, inherited]
 

00047 { return   m_dof;    }

int DstMucTrack::dof  )  const [inline, inherited]
 

00047 { return   m_dof;    }

int RecMucTrack::ecFirstLayer  )  const [inline]
 

Which gap on EndCap is the first one with hits attached to this track?

00224 { return m_ecFirstLayer; }

int RecMucTrack::ecFirstLayer  )  const [inline]
 

Which gap on EndCap is the first one with hits attached to this track?

00224 { return m_ecFirstLayer; }

int DstMucTrack::ecLastLayer  )  const [inline, inherited]
 

00040 { return   m_ecLastLayer;  } // last layer with hits in end cap

int DstMucTrack::ecLastLayer  )  const [inline, inherited]
 

00040 { return   m_ecLastLayer;  } // last layer with hits in end cap

int DstMucTrack::endPart  )  const [inline, inherited]
 

00038 { return   m_endPart; }      // end   position of track locates in which part

int DstMucTrack::endPart  )  const [inline, inherited]
 

00038 { return   m_endPart; }      // end   position of track locates in which part

void RecMucTrack::Extend  ) 
 

Extend mucpos and extmucpos to first layer of muc.

void RecMucTrack::Extend  ) 
 

Extend mucpos and extmucpos to first layer of muc.

00984 {
00985   float x = m_ExtMucPos.x(), y = m_ExtMucPos.y(), z = m_ExtMucPos.z();
00986   //cout<<"in MucTrac, MucPos= "<<x<<" "<<y<<" "<<z<<endl;
00987   float step = 0.005;
00988   float myMucR = 1720.0;
00989   float myMucZ = 2110.0;
00990 
00991    while ( ( (fabs(x)<=myMucR) && (fabs(y)<=myMucR) && ((fabs(x-y)/sqrt(2.))<=myMucR) && ((fabs(x+y)/sqrt(2.))<=myMucR) && (fabs(z)<=myMucZ) ) ) {
00992     x += step * m_MucMomentum.x();
00993     y += step * m_MucMomentum.y();
00994     z += step * m_MucMomentum.z();
00995     //cout << "in RecMucTrack+ x " << x << " y " << y << " z " << z <<" mom "<< m_MucMomentum.x()<< " "<<m_MucMomentum.y()<<" "<<m_MucMomentum.z()<<endl;
00996   }
00997 
00998    int count = 0; 
00999   while( !( (fabs(x)<=myMucR) && (fabs(y)<=myMucR) && ((fabs(x-y)/sqrt(2.))<=myMucR) && ((fabs(x+y)/sqrt(2.))<=myMucR) && (fabs(z)<=myMucZ) )&&count<1000 ) {
01000     x -= step * m_MucMomentum.x();
01001     y -= step * m_MucMomentum.y();
01002     z -= step * m_MucMomentum.z();
01003     count++;
01004     //cout << "in RecMucTrack- x " << x << " y " << y << " z " << z <<" mom "<< m_MucMomentum.x()<< " "<<m_MucMomentum.y()<<" "<<m_MucMomentum.z()<<endl;
01005   } 
01006  
01007   if(count<1000){
01008     if(fabs(x)<2600&&fabs(y)<2600&&fabs(z)<2800){
01009       m_ExtMucPos.set(x, y, z);
01010       m_MucPos.set(x,y,z);
01011       m_xPos = x;
01012       m_yPos = y;
01013       m_zPos = z;
01014     }
01015   }
01016  
01017 }

int RecMucTrack::FindSegWithMaxHits int &  part,
int &  seg
 

Find the segment which contains most hits, return max hits number.

int RecMucTrack::FindSegWithMaxHits int &  part,
int &  seg
 

Find the segment which contains most hits, return max hits number.

01492 {
01493   int maxHits = 0;
01494   int hits = 0;
01495   for(int part = 0; part < (int)MucID::getPartNum(); part++) {
01496     for(int seg = 0; seg < (int)MucID::getSegNum(part); seg++) {
01497       hits = GetHitInSeg(part, seg);
01498       if (hits > maxHits) {
01499         maxHits  = hits;
01500         findPart = part;
01501         findSeg  = seg;
01502       }
01503     }
01504   }
01505 
01506   return maxHits;
01507 }

Hep3Vector RecMucTrack::GetCurrentDir  )  const [inline]
 

Current direction.

00212 { return m_CurrentDir/1000; }  

Hep3Vector RecMucTrack::GetCurrentDir  )  const [inline]
 

Current direction.

00212 { return m_CurrentDir/1000; }  

Hep3Vector RecMucTrack::GetCurrentInsct  )  const [inline]
 

Current intersection.

00215 { return m_CurrentInsct; } //internal  

Hep3Vector RecMucTrack::GetCurrentInsct  )  const [inline]
 

Current intersection.

00215 { return m_CurrentInsct; } //internal  

Hep3Vector RecMucTrack::GetCurrentPos  )  const [inline]
 

Current position.

00209 { return m_CurrentPos/10; }  

Hep3Vector RecMucTrack::GetCurrentPos  )  const [inline]
 

Current position.

00209 { return m_CurrentPos/10; }  

float RecMucTrack::GetDepth3  )  const [inline]
 

Length of the track penetrating in iron absorber.

00252 { return m_depth_3/10; }

float RecMucTrack::GetDepth3  )  const [inline]
 

Length of the track penetrating in iron absorber.

00252 { return m_depth_3/10; }

vector<float> RecMucTrack::getDistHits  )  const [inline]
 

00311 { return  m_distHits ;}

vector<float> RecMucTrack::getDistHits  )  const [inline]
 

00311 { return  m_distHits ;}

vector<MucRecHit*> RecMucTrack::GetExpectedHits  )  const
 

vector< MucRecHit * > RecMucTrack::GetExpectedHits  )  const
 

01626 {
01627     return m_pExpectedHits;
01628 }

vector<int> RecMucTrack::getExpHits  )  const [inline]
 

00309 { return  m_expHits ;}

vector<int> RecMucTrack::getExpHits  )  const [inline]
 

00309 { return  m_expHits ;}

vector<float> RecMucTrack::getExtDistHits  )  const [inline]
 

00315 { return  m_distHits_ext ;} 

vector<float> RecMucTrack::getExtDistHits  )  const [inline]
 

00315 { return  m_distHits_ext ;} 

Hep3Vector RecMucTrack::GetExtMucDistance  )  const [inline]
 

Distance match of the ext track with muc track in first layer.

00259 { return m_Dist_muc_ext;}

Hep3Vector RecMucTrack::GetExtMucDistance  )  const [inline]
 

Distance match of the ext track with muc track in first layer.

00259 { return m_Dist_muc_ext;}

Hep3Vector RecMucTrack::getExtMucMomentum  )  const [inline]
 

Start momentum of the Ext track in Muc.

00195 { return m_ExtMucMomentum/1000; }

Hep3Vector RecMucTrack::getExtMucMomentum  )  const [inline]
 

Start momentum of the Ext track in Muc.

00195 { return m_ExtMucMomentum/1000; }

Hep3Vector RecMucTrack::getExtMucPos  )  const [inline]
 

start position of the Ext track in Muc.

00192 { return m_ExtMucPos/10; }

Hep3Vector RecMucTrack::getExtMucPos  )  const [inline]
 

start position of the Ext track in Muc.

00192 { return m_ExtMucPos/10; }

int RecMucTrack::getExtTrackID  )  const [inline]
 

The identifier of the Ext track as seed.

00189 { return m_ExtTrackID; }

int RecMucTrack::getExtTrackID  )  const [inline]
 

The identifier of the Ext track as seed.

00189 { return m_ExtTrackID; }

MucRecHit* RecMucTrack::GetHit const int  part,
const int  gap
const
 

Get a pointer to the first hit attached in a particular gap.

MucRecHit * RecMucTrack::GetHit const int  part,
const int  gap
const
 

Get a pointer to the first hit attached in a particular gap.

01598 {
01599   if ( (gap < 0) || (gap >= (int)MucID::getGapNum(part)) ) {
01600     cout << "RecMucTrack::Hit-E1  invalid gap = " << gap << endl;
01601     return 0;
01602   }
01603   
01604   vector<MucRecHit*>::const_iterator iHit;
01605   
01606   for (iHit = m_pHits.begin(); iHit != m_pHits.end(); iHit++) {
01607     if (*iHit) {  // Check for a null pointer.
01608       if ( (*iHit)->Part() == part &&
01609            (*iHit)->Gap()  == gap) { 
01610         return (*iHit);
01611       }
01612     }
01613   }
01614   
01615   return 0L;
01616 }

float RecMucTrack::GetHitDistance const MucRecHit hit  ) 
 

Calculate the distance of the hit to the intersection in read direction.

float RecMucTrack::GetHitDistance const MucRecHit hit  ) 
 

Calculate the distance of the hit to the intersection in read direction.

00467 {
00468   if (!hit) {
00469     cout << "RecMucTrack:GetHitDistance-E1  null hit pointer!" << endl;
00470     return kInfinity;
00471   }
00472 
00473   int part = hit->Part();
00474   int gap  = hit->Gap();
00475   if ( (gap < 0) || (gap >= (int)MucID::getGapNum(part)) ) {
00476     cout << "RecMucTrack::GetHitDistance()  bad gap number = " << gap << endl;
00477     return kInfinity;
00478   }
00479 
00480   HepPoint3D posHit        = hit->GetCenterPos();
00481   HepPoint3D posHitLocal   = hit->GetGap()->TransformToGap(posHit);
00482   HepPoint3D posInsctLocal = hit->GetGap()->TransformToGap(m_CurrentInsct);
00483   int orient = hit->GetGap()->Orient();
00484 
00485   float distance = -9990;
00486   if(orient == 1) distance = fabs(posInsctLocal.x() - posHitLocal.x());
00487   if(orient == 0) distance = fabs(posInsctLocal.y() - posHitLocal.y());
00488 
00489   return distance;
00490 }

float RecMucTrack::GetHitDistance2 const MucRecHit hit  ) 
 

no abs value

float RecMucTrack::GetHitDistance2 const MucRecHit hit  ) 
 

no abs value

00495 {
00496   if (!hit) {
00497     cout << "RecMucTrack:GetHitDistance-E1  null hit pointer!" << endl;
00498     return kInfinity;
00499   } 
00500 
00501   int part = hit->Part();
00502   int gap  = hit->Gap();
00503   if ( (gap < 0) || (gap >= (int)MucID::getGapNum(part)) ) {
00504     cout << "RecMucTrack::GetHitDistance()  bad gap number = " << gap << endl;
00505     return kInfinity;
00506   }
00507   
00508   HepPoint3D posHit        = hit->GetCenterPos();
00509   HepPoint3D posHitLocal   = hit->GetGap()->TransformToGap(posHit);
00510   HepPoint3D posInsctLocal = hit->GetGap()->TransformToGap(m_CurrentInsct);
00511   int orient = hit->GetGap()->Orient();
00512       
00513   float distance = -9990;
00514   if(orient == 1) distance = (posInsctLocal.x() - posHitLocal.x());
00515   if(orient == 0) distance = (posInsctLocal.y() - posHitLocal.y());
00516  
00517   //cout<<"========in RecMucTrack: line insct: "<<posInsctLocal.x()<<" "<<posInsctLocal.y()<<"   ->  "<<posHitLocal.x()<<" "<<posHitLocal.y()<<endl;
00518  
00519   return distance;
00520 } 

vector<long> RecMucTrack::GetHitIndices  )  const
 

Get indices of all hits in the track.

vector< long > RecMucTrack::GetHitIndices  )  const
 

Get indices of all hits in the track.

01632 {
01633   vector<long> v;
01634   
01635   vector<MucRecHit*>::const_iterator iHit;
01636   for ( iHit = m_pHits.begin(); iHit != m_pHits.end(); iHit++) {
01637     if (*iHit) {  // Check for a null pointer.
01638       long index = (*iHit)->GetID();
01639       v.push_back(index);
01640       /*
01641       cout << " Muc2DRoad::HitIndices  gap  orientation  twopack= "
01642            <<  (*iHit)->ChannelID().Plane() << "   "
01643            <<  (*iHit)->ChannelID().Orient()  << "   "
01644            <<  (*iHit)->ChannelID().TwoPack() << endl; 
01645       */
01646     }
01647   }
01648   return v;
01649 }

int RecMucTrack::GetHitInGap const int  part,
const int  gap
const
 

How many hits per gap does this track contain?

int RecMucTrack::GetHitInGap const int  part,
const int  gap
const
 

How many hits per gap does this track contain?

01426 {
01427   if ( part < 0 || part > 2 ) {
01428     cout << "RecMucTrack::GetHitInGap(), invalid part " << part << endl;
01429     return 0;
01430   }
01431   if ( (gap < 0) || (gap >= (int)MucID::getGapNum(part)) ) {
01432     cout << "RecMucTrack::GetHitInGap(), invalid gap " << gap << endl;
01433     return 0;
01434   } 
01435   
01436   vector<MucRecHit*>::const_iterator iHit;
01437   int hitsInGap = 0;
01438   
01439   for (iHit = m_pHits.begin(); iHit != m_pHits.end(); iHit++) {
01440     
01441     if ( !(*iHit) ) {
01442       cout << "RecMucTrack::GetHitInGap() null hit pointer !"  << endl;
01443       return 0;
01444     }
01445     else {
01446       if( part == (*iHit)->Part() && gap  == (*iHit)->Gap() ) hitsInGap++;
01447     }
01448   }
01449   
01450   return hitsInGap;
01451 }

int RecMucTrack::GetHitInSeg const int  part,
const int  seg
const
 

How many hits does a segment contains.

int RecMucTrack::GetHitInSeg const int  part,
const int  seg
const
 

How many hits does a segment contains.

01455 {
01456   int num = GetHitInSegOrient(part, seg, 0) + GetHitInSegOrient(part, seg, 1);
01457   return num;
01458 }

int RecMucTrack::GetHitInSegOrient const int  part,
const int  seg,
const int  orient
const
 

How many hits does a segment contains in one orient.

int RecMucTrack::GetHitInSegOrient const int  part,
const int  seg,
const int  orient
const
 

How many hits does a segment contains in one orient.

01462 {
01463   if ( part < 0 || part > 2 ) {
01464     cout << "RecMucTrack::GetHitInSeg(), invalid part " << part << endl;
01465     return 0;
01466   }
01467   if ( (seg < 0) || (seg >= (int)MucID::getSegNum(part)) ) {
01468     cout << "RecMucTrack::GetHitInSeg(), invalid seg = " << seg << endl;
01469     return 0;
01470   } 
01471   
01472   vector<MucRecHit*>::const_iterator iHit;
01473   int hitsInSeg = 0;
01474   
01475   for (iHit = m_pHits.begin(); iHit != m_pHits.end(); iHit++) {
01476     
01477     if ( !(*iHit) ) {
01478       cout << "RecMucTrack::GetHitInSeg(), null hit pointer !"  << endl;
01479       return 0;
01480     }
01481     else {
01482       if( part == (*iHit)->Part() && seg == (*iHit)->Seg() && 
01483           orient == (*iHit)->GetGap()->Orient() ) hitsInSeg++;
01484     }
01485   }
01486   
01487   return hitsInSeg;
01488 }

vector<MucRecHit*> RecMucTrack::GetHits  )  const
 

Get all hits on this track.

vector< MucRecHit * > RecMucTrack::GetHits  )  const
 

Get all hits on this track.

01620 {
01621   return m_pHits;
01622 }

void RecMucTrack::GetMdcExtTrack Hep3Vector  mdcStartPos,
Hep3Vector  mdcStartMomentum,
int  charge,
Hep3Vector &  mucStartPos,
Hep3Vector &  mucStartMomentum
 

compute ext track myself from mdc.

void RecMucTrack::GetMdcExtTrack Hep3Vector  mdcStartPos,
Hep3Vector  mdcStartMomentum,
int  charge,
Hep3Vector &  mucStartPos,
Hep3Vector &  mucStartMomentum
 

compute ext track myself from mdc.

00322 {
00323 
00324   //cm->mm; GeV->MeV//
00325   mdcStartPos*=10;
00326   mdcStartMomentum*=1000;
00328 
00329 
00330   Hep3Vector pt = mdcStartMomentum;
00331   pt.setZ(0);
00332   //cout << "pt " << pt.mag() << endl;
00333   double radius = (pt.mag() * 1e6 / kvC * 1e3) / (fabs(charge * kMagnetField)) ;
00334   //double startPhi = startP.phi();
00335   double deltaPhi = -1.0 * (charge / abs(charge)) * kDeltaPhi;
00336   double deltaZ = (mdcStartMomentum.z() * 1e6 / kvC * 1e3) * kDeltaPhi / (abs(charge) * kMagnetField);
00337 
00338   //cout << "r = " << radius << endl;
00339   mucStartPos = mdcStartPos;
00340   mucStartMomentum = mdcStartMomentum;
00341   double phi;
00342   int    iter = 0;
00343   do {
00344     phi = mucStartMomentum.getPhi() + deltaPhi;
00345     mucStartPos.setX(mucStartPos.x() + radius * kDeltaPhi * cos(phi));
00346     mucStartPos.setY(mucStartPos.y() + radius * kDeltaPhi * sin(phi));
00347     mucStartPos.setZ(mucStartPos.z() + deltaZ);
00348     
00349     mucStartMomentum.setPhi(mucStartMomentum.phi() + deltaPhi);
00350     iter++;
00351     //cout << endP << "  " << mucStartPos << endl;
00352   }
00353   while(IsInsideSuperConductor(mucStartPos) && iter < kMdcExtIterMax);
00354 
00355   //mm->cm; MeV->GeV//
00356   mucStartPos/=10;
00357   mucStartMomentum/=1000;
00359 }

Hep3Vector RecMucTrack::getMdcMomentum  )  const [inline]
 

momentum of this track in Mdc

00206 { return m_MdcMomentum/1000; }

Hep3Vector RecMucTrack::getMdcMomentum  )  const [inline]
 

momentum of this track in Mdc

00206 { return m_MdcMomentum/1000; }

Hep3Vector RecMucTrack::getMucMomentum  )  const [inline]
 

Start momentum of this track in Muc.

00203 { return m_MucMomentum/1000; }

Hep3Vector RecMucTrack::getMucMomentum  )  const [inline]
 

Start momentum of this track in Muc.

00203 { return m_MucMomentum/1000; }

Hep3Vector RecMucTrack::getMucPos  )  const [inline]
 

start position of this track in Muc.

00198 { return m_MucPos/10; }

Hep3Vector RecMucTrack::getMucPos  )  const [inline]
 

start position of this track in Muc.

00198 { return m_MucPos/10; }

Hep3Vector RecMucTrack::getMucPosSigma  )  const [inline]
 

00200 { return m_MucPosSigma/10; }

Hep3Vector RecMucTrack::getMucPosSigma  )  const [inline]
 

00200 { return m_MucPosSigma/10; }

Hep3Vector RecMucTrack::GetMucStripPos  )  const [inline]
 

00261 { return m_StripPhi;}

Hep3Vector RecMucTrack::GetMucStripPos  )  const [inline]
 

00261 { return m_StripPhi;}

int RecMucTrack::GetNGapsWithHits  )  const [inline]
 

How many gaps provide hits attached to this track?

00267 { return m_numLayers; }

int RecMucTrack::GetNGapsWithHits  )  const [inline]
 

How many gaps provide hits attached to this track?

00267 { return m_numLayers; }

int RecMucTrack::GetNSharedHits const RecMucTrack track  )  const
 

How many hits do two tracks share?

int RecMucTrack::GetNSharedHits const RecMucTrack track  )  const
 

How many hits do two tracks share?

01569 {
01570   if (!track2) {
01571     return 0;
01572   }
01573 
01574   int count = 0;
01575   vector<MucRecHit*>::const_iterator iHit1;
01576   vector<MucRecHit*>::const_iterator iHit2;
01577   MucRecHit *hit1, *hit2;
01578 
01579   for( iHit1 = m_pHits.begin(); iHit1 != m_pHits.end(); iHit1++){
01580     for( iHit2 = track2->m_pHits.begin(); 
01581          iHit2 != track2->m_pHits.end(); iHit2++){
01582       hit1 = (*iHit1);
01583       hit2 = (*iHit2);
01584       
01585       if ( (hit1 != 0) && (hit2 != 0) ) {
01586         if (hit1->GetID() == hit2->GetID()) {
01587           count++;
01588         }
01589       }
01590     }
01591   }
01592   
01593   return count;
01594 }

vector<float> RecMucTrack::getQuadDistHits  )  const [inline]
 

00313 { return  m_distHits_quad ;}

vector<float> RecMucTrack::getQuadDistHits  )  const [inline]
 

00313 { return  m_distHits_quad ;}

int RecMucTrack::GetRecMode  )  const [inline]
 

00256 {return m_recmode;}

int RecMucTrack::GetRecMode  )  const [inline]
 

00256 {return m_recmode;}

int RecMucTrack::GetTotalHits  )  const
 

How many hits in all does this track contain?

int RecMucTrack::GetTotalHits  )  const
 

How many hits in all does this track contain?

01420 { 
01421   return m_pHits.size();
01422 }

vector<int> RecMucTrack::getVecHits void   )  const [inline]
 

00305 { return  m_vecHits ;}

vector<int> RecMucTrack::getVecHits void   )  const [inline]
 

00305 { return  m_vecHits ;}

bool RecMucTrack::HasHit const int  part,
const int  seg,
const int  gap,
const int  strip
const
 

Does this track contains an assigned hit?

bool RecMucTrack::HasHit const int  part,
const int  seg,
const int  gap,
const int  strip
const
 

Does this track contains an assigned hit?

01526 {
01527   bool found = false;
01528   vector<MucRecHit*>::const_iterator iHit;
01529 
01530   for (iHit = m_pHits.begin(); iHit != m_pHits.end(); iHit++) {
01531     if (*iHit) {  // Check for a null pointer.
01532       if ( (*iHit)->Part()  == part &&
01533            (*iHit)->Seg()   == seg &&
01534            (*iHit)->Gap()   == gap &&
01535            (*iHit)->Strip() == strip ) {
01536         found = true;
01537       }
01538     }
01539   }
01540 
01541   return found;
01542 }

bool RecMucTrack::HasHitInGap const int  part,
const int  gap
const
 

Does this track contain any hits in the given gap?

bool RecMucTrack::HasHitInGap const int  part,
const int  gap
const
 

Does this track contain any hits in the given gap?

01546 {
01547   if ( (gap < 0) || (gap >= (int)MucID::getGapNum(part)) ) {
01548     cout << "RecMucTrack::HasHitInGap-E2  invalid gap = " << gap << endl;
01549     return false;
01550   }
01551   
01552   bool found = false;
01553   vector<MucRecHit*>::const_iterator iHit;
01554 
01555   for (iHit = m_pHits.begin(); iHit != m_pHits.end(); iHit++) {
01556     if (*iHit) {  // Check for a null pointer.
01557       if ( (*iHit)->Part() == part &&
01558            (*iHit)->Gap() == gap ) {
01559         found = true;
01560       }
01561     }
01562   }
01563 
01564   return found;
01565 }

int DstMucTrack::id  )  const [inline, inherited]
 

00033 { return   m_id; }

int DstMucTrack::id  )  const [inline, inherited]
 

00033 { return   m_id; }

bool RecMucTrack::IsInsideSuperConductor Hep3Vector  pos  ) 
 

bool RecMucTrack::IsInsideSuperConductor Hep3Vector  pos  ) 
 

00363 {
00364   if(pos.mag() < kSuperConductorR && fabs(pos.z()) < kSuperConductorZ) {
00365     return true;
00366   }
00367   else {
00368     return false;
00369   }
00370 }

void RecMucTrack::LineFit int  fittingMethod  ) 
 

Line fit with hits on a seg with max hits.

void RecMucTrack::LineFit int  fittingMethod  ) 
 

Line fit with hits on a seg with max hits.

01021 {
01022   Extend();
01023 
01024   int part = -1, seg = -1;
01025   int nHits = FindSegWithMaxHits(part, seg);
01026 //   cout << "RecMucTrack::ComputeDepth(), part " << part << " seg " << seg 
01027 //     << " contains most hits " << nHits << endl;
01028   if (part < 0 || seg < 0) {
01029     m_depth = 0;
01030     //cout << "No hit in this track" << endl;
01031     return;
01032   }
01033 
01034   float startPos[3] = {0.0, 0.0, 0.0};
01035   MucRec2DRoad road2D[2];
01036   vector<MucRecHit*>::const_iterator iHit;
01037   for (int orient = 0; orient <= 1; orient++) {
01038     road2D[orient] = MucRec2DRoad(part, seg, orient, startPos[0], startPos[1], startPos[2],fittingMethod );
01039     for(iHit = m_pHits.begin(); iHit != m_pHits.end(); iHit++) {
01040       if(*iHit) {  // Check for a null pointer.
01041         int hitPart   = (*iHit)->Part();
01042         int hitSeg    = (*iHit)->Seg();
01043         int hitOrient = (*iHit)->GetGap()->Orient();
01044         if (hitPart == part && hitSeg == seg && hitOrient == orient) {
01045           road2D[orient].AttachHit(*iHit);
01046         }
01047       }
01048     }
01049     //cout << "Orient " << orient
01050     // << " Slope " << road2D[orient].GetSlope()
01051     // << " Intercept " << road2D[orient].GetIntercept()
01052     // << " LastGap " << road2D[orient].GetLastGap()
01053     // << endl;
01054 
01055   }
01056   MucRec3DRoad road3D(&road2D[0], &road2D[1]);
01057   float vx, vy, x0, y0;
01058   if ( road3D.GetPart() == 1 ){
01059     road3D.TransformPhiRToXY( road2D[1].GetSlope(),     road2D[0].GetSlope(),     
01060         road2D[1].GetIntercept(), road2D[0].GetIntercept(),
01061         vx, vy, x0, y0);
01062   }
01063   else {
01064     vx = road2D[1].GetSlope();
01065     x0 = road2D[1].GetIntercept();
01066     vy = road2D[0].GetSlope();
01067     y0 = road2D[0].GetIntercept();
01068   }
01069   
01070   //cout << "road3D Last Gap " << road3D.GetLastGap() << endl;
01071   //cout << "vx " << vx << " x0 " << x0 << " vy " << vy << " y0 " << y0 << endl;
01072 
01073   // if number of gaps with hits >= 2 on both orient, change muc pos and momentum
01074   if (road2D[0].GetNGapsWithHits() >= 2 && road2D[1].GetNGapsWithHits() >= 2) {
01075 
01076     //good 3d road!!!
01077     m_Good3DLine = 1;
01078     m_status     = 1;
01079 
01080     m_Good3DPart = road3D.GetPart();
01081     road3D.SetSimpleFitParams(vx, x0, vy, y0);
01082     //road3D.PrintHitsInfo();
01083     
01084     float startx = 0.0, starty = 0.0, startz = 0.0;
01085     float startxSigma = 0.0, startySigma = 0.0, startzSigma = 0.0;
01086     float x1 = 0.0, y1 = 0.0, z1 = 0.0, x2 = 0.0, y2 = 0.0, z2 = 0.0;
01087     int gap = 0;
01088     
01089     if(fittingMethod==2){    //if choose quadratic fitting method!
01090       for(int igap=0; igap<9;igap++){
01091         road3D.Project(igap, x1, y1, z1, x2, y2, z2);
01092         m_IntersectionInner[igap].set(x1,y1,z1);
01093         m_IntersectionOuter[igap].set(x2,y2,z2);
01094         //cout<<"3dproject sur "<<x1<<" "<<y1<<" "<<z1<<" "<<x2<<" "<<y2<<" "<<z2<<endl;      
01095       }
01096     }
01097 
01098     do {
01099       //road3D.Project(gap, startx, starty, startz);
01100       road3D.ProjectWithSigma(gap, startx, starty, startz, startxSigma, startySigma, startzSigma);
01101       gap++;
01102     }
01103     while ( (startx*startx + starty*starty + startz*startz) < kMinor &&
01104               gap < (int)MucID::getGapNum(part) );
01105     
01106     if(fabs(startx)<2600&&fabs(starty)<2600&&fabs(startz)<2800){
01107       Hep3Vector MucPos_self;
01108       MucPos_self.set(startx, starty, startz);
01109       float dist = (MucPos_self - m_MucPos).mag();
01110     
01111       if(dist < 1000 ){  // (mm) maybe the fit is bad, if the dist is too big.
01112         m_MucPos.set(startx, starty, startz);
01113         m_xPos = startx;
01114         m_yPos = starty;
01115         m_zPos = startz;
01116       }
01117     }
01118     m_MucPosSigma.set(startxSigma, startySigma, startzSigma);
01119     m_xPosSigma = startxSigma;
01120     m_yPosSigma = startySigma;
01121     m_zPosSigma = startzSigma;
01122     
01123     //cout<<"in RecMucTrack gap= "<<gap<<" start= "<<startx<<" "<<starty<<" "<<startz<<" "<<endl;
01124     float momentum = m_MucMomentum.mag();
01125     float zDir = 1.0;
01126     if (m_MucMomentum.z() != 0.0) zDir  = m_MucMomentum.z() / fabs(m_MucMomentum.z());
01127     
01128     float px = road3D.GetSlopeZX()*zDir;
01129     float py = road3D.GetSlopeZY()*zDir;
01130     float pz = zDir;
01131     float segPhi = 0.25*kPi*seg;
01132     // if vr is opposite to original, but both are very small, e.x. -0.01 -> + 0.01, or you can say, pt~p, change it to guarantee vx, vy is correct.
01133     if (part == 1 && px*cos(segPhi)+py*sin(segPhi) < 0.0) { // when in barrel, pt dot segPhi < 0, angle between them > 90deg
01134       px *= -1.0;
01135       py *= -1.0;
01136       pz *= -1.0;
01137     }
01138 
01139     //if(sqrt(px*px+py*py)>0.01)m_MucMomentum.set(px, py, pz);
01140     m_MucMomentum.set(px, py, pz);
01141     m_MucMomentum.setMag(momentum);
01142 
01143     m_px = px; m_py = py; m_pz = pz;
01144     Hep3Vector phi_mdc, phi_muc;
01145     phi_mdc.set(m_MdcMomentum.x(),m_MdcMomentum.y(),0);
01146     phi_muc.set(px,py,0);
01147     double deltaPhi = phi_mdc.angle(phi_muc);
01148 
01149     m_deltaPhi = deltaPhi;
01150     m_dof  = road3D.GetDegreesOfFreedom();
01151     m_chi2 = road3D.GetReducedChiSquare();
01152     if(m_chi2<0||m_chi2>1000)  m_chi2 = 0;
01153     m_rms  = 0.0; // road3D.GetReducedChiSquare(); // ??? in MucRecRoad3D
01154 
01155 
01156    if(road2D[0].GetNGapsWithHits() >= 3 && road2D[1].GetNGapsWithHits() >= 3){ //need 3+ gap to do refit
01157       //calc distance between each hit with this track.
01158       //use GetHitDistance(), so we should provide m_CurrentInsct. 
01159       float xInsct = 0.0, yInsct = 0.0, zInsct = 0.0, sigmax = 0.0, sigmay = 0.0, sigmaz = 0.0;
01160       float quad_x1 = 0.0, quad_y1 = 0.0, quad_z1 = 0.0, quad_x2 = 0.0, quad_y2 = 0.0, quad_z2 = 0.0;
01161       for(int ihit = 0; ihit < m_pHits.size(); ihit++){
01162         int igap = (m_pHits[ihit])->Gap();
01163         road3D.ProjectNoCurrentGap(igap, xInsct, yInsct, zInsct, sigmax, sigmay, sigmaz, 
01164                                    quad_x1, quad_y1, quad_z1, quad_x2, quad_y2, quad_z2);
01165 
01166         SetCurrentInsct(xInsct, yInsct, zInsct);
01167 
01168         float dist_hit_track = GetHitDistance2(m_pHits[ihit]);
01169         m_distHits.push_back(dist_hit_track);
01170 
01171         //cout<<"===========in RecMucTrack: line dist: "<<dist_hit_track<<endl;
01172 
01173         if(fittingMethod==2) // ------calc local insct in a gap with quad line.
01174           {
01175            
01176             Hep3Vector center = m_pHits[ihit]->GetCenterPos();
01177             int iPart = m_pHits[ihit]->Part();
01178             int iSeg  = m_pHits[ihit]->Seg();
01179             int iGap  = m_pHits[ihit]->Gap();
01180             float xHit, yHit, zHit = 0.;
01181             if (iPart == 1) {
01182                     if ( iGap %2  == 1) {
01183                             xHit = center.z();
01184                             yHit = sqrt(center.x()*center.x()
01185                                             + center.y()*center.y());
01186                             if(iSeg==2) yHit = center.y();  //deal with seg2 seperately! because there is a hole here. 2006.11.9
01187                     } 
01188                     else {
01189                             xHit = center.x();
01190                             yHit = center.y();
01191                     }
01192             }
01193             else {
01194                     if ( iGap %2 == 0) {
01195                             xHit = center.z();
01196                             yHit = center.y();
01197                     }
01198                     else {
01199                             xHit = center.z();
01200                             yHit = center.x();
01201                     }
01202             }
01203             
01204             float distance1 = fabs(xHit - quad_x1)/(xHit - quad_x1) * sqrt((xHit - quad_x1)*(xHit - quad_x1) + (yHit - quad_y1)*(yHit - quad_y1));
01205             float distance2 = fabs(xHit - quad_x2)/(xHit - quad_x2) * sqrt((xHit - quad_x2)*(xHit - quad_x2) + (yHit - quad_y2)*(yHit - quad_y2));
01206 
01207             float dist_quad = distance1;
01208             if(fabs(distance1) > fabs(distance2)) dist_quad = distance2;
01209             
01210       //cout<<"============in RecMucTrack: quad xyz: "<<quad_x1<<" "<<quad_y1<<" "<<quad_z1<<" "<<quad_x2<<" "<<quad_y2<<endl;
01211             //cout<<"============in RecMucTrack: hit pos: "<<xHit<<" "<<yHit<<" "<<zHit<<endl;
01212             //cout<<"============in RecMucTrack: dist1 = "<<distance1<<" dist2 = "<<distance2<<" dist ="<<dist_quad<<endl; 
01213 
01214             if(quad_x1 == -9999) m_distHits_quad.push_back(-99);
01215             else m_distHits_quad.push_back(dist_quad);
01216 
01217           }
01218       }
01219     }
01220     else{
01221         for(int ihit = 0; ihit < m_pHits.size(); ihit++){
01222             m_distHits.push_back(-99);
01223             m_distHits_quad.push_back(-99);
01224         }
01225     }
01227 
01229     ComputeLastGap();
01230     //HepPoint3D initPos(startx, starty,startz);
01231     HepPoint3D initPos(startx-m_MucMomentum.x()/momentum, starty-m_MucMomentum.y()/momentum,startz-m_MucMomentum.z()/momentum);
01232 
01233     //for(int igap = 0; igap <= m_brLastLayer; igap++){
01234     for(int igap = 0; igap < 9 ; igap++){
01235       vector<int> padID;
01236       vector<float> intersect_x;
01237       vector<float> intersect_y;
01238       vector<float> intersect_z;
01239 
01240       //refit---------------------------------
01241       float zx, zy, x0, y0;
01242       int status = road3D.RefitNoCurrentGap(igap,zx,x0,zy,y0);
01243       Hep3Vector mom_refit;
01244       if(status == 0){ //refit succeed
01245               float zDir = 1.0;
01246               if (m_MucMomentum.z() != 0.0) zDir  = m_MucMomentum.z() / fabs(m_MucMomentum.z());
01247               float px_refit = zx * zDir;  
01248               float py_refit = zy * zDir;       
01249               float pz_refit = zDir;
01250               float segPhi = 0.25*kPi*seg;
01251               // if vr is opposite to original, but both are very small, e.x. -0.01 -> + 0.01, or you can say, pt~p, change it to guarantee vx, vy is correct.
01252               if (part == 1 && px_refit*cos(segPhi)+py_refit*sin(segPhi) < 0.0) { // when in barrel, pt dot segPhi < 0, angle between them > 90deg
01253                       px_refit *= -1.0;
01254                       py_refit *= -1.0;
01255                       pz_refit *= -1.0;
01256               }
01257 
01258               mom_refit.setX(px_refit);
01259               mom_refit.setY(py_refit);
01260               mom_refit.setZ(pz_refit);
01261               mom_refit.setMag(momentum);
01262       }
01263       else mom_refit = m_MucMomentum;  //use the former momentum
01264 
01265       HepPoint3D initPos_refit;
01266       if(status == 0){
01267               float initPosx_refit, initPosy_refit, initPosz_refit;
01268               float sigmax_refit, sigmay_refit, sigmaz_refit;
01269               road3D.Project(0, zx, x0, zy, y0, initPosx_refit, initPosy_refit, initPosz_refit);
01270               initPos_refit.setX(initPosx_refit-mom_refit.x()/momentum);
01271               initPos_refit.setY(initPosy_refit-mom_refit.y()/momentum);
01272               initPos_refit.setZ(initPosz_refit-mom_refit.z()/momentum);
01273       }
01274       else initPos_refit = initPos;
01275 
01276       //cout<<"initPos: "<<initPos<<"  "<<initPos_refit<<endl;
01277       //if((initPos - initPos_refit).mag()>100) cout<<"--------=====------to far"<<endl;
01278       //refit---------------------------------
01279       //cout<<"no gap: "<<igap<<"  mom: "<<m_MucMomentum<<"  refit: "<<mom_refit<<endl; 
01280       
01281       //vector<Identifier> MuId = road3D.ProjectToStrip(1,igap,initPos,m_MucMomentum,padID,intersect_x,intersect_y,intersect_z);
01282       vector<Identifier> MuId = road3D.ProjectToStrip(1,igap,initPos_refit,mom_refit,padID,intersect_x,intersect_y,intersect_z);
01283 
01284       //vector<Identifier> MuId = road3D.ProjectToStrip(1,igap,initPos,mom_refit,padID,intersect_x,intersect_y,intersect_z);
01285 
01286       vector<Identifier>::const_iterator mucid;
01287       int i = 0;
01288       for(mucid = MuId.begin(); mucid != MuId.end(); mucid++,i++)
01289       {
01290         MucRecHit *pHit = new MucRecHit(MucID::part(*mucid),MucID::seg(*mucid),MucID::gap(*mucid),MucID::strip(*mucid));
01291         pHit->SetPadID(padID[i]);
01292         pHit->SetIntersectX(intersect_x[i]);
01293         pHit->SetIntersectY(intersect_y[i]);
01294         pHit->SetIntersectZ(intersect_z[i]);
01295 
01296         m_pExpectedHits.push_back(pHit);
01297       }
01298     }
01299 
01300     if(m_endPart!=-1&&m_ecLastLayer!=-1)
01301     {
01302       //for(int igap = 0; igap <= m_ecLastLayer; igap++){
01303       for(int igap = 0; igap < 8; igap++){
01304         vector<int> padID;
01305         vector<float> intersect_x;
01306         vector<float> intersect_y;
01307         vector<float> intersect_z;
01308 
01309         //refit---------------------------------
01310         float zx, zy, x0, y0;
01311         //int status = road3D.RefitNoCurrentGap(igap,zy,y0,zx,x0);  //!!!!!different sequence
01312         int status = road3D.RefitNoCurrentGap(igap,zx,x0,zy,y0); 
01313         Hep3Vector mom_refit;
01314         if(status == 0){ //refit succeed
01315                 float zDir = 1.0;
01316                 if (m_MucMomentum.z() != 0.0) zDir  = m_MucMomentum.z() / fabs(m_MucMomentum.z());
01317                 float px_refit = zx * zDir;
01318                 float py_refit = zy * zDir;
01319                 float pz_refit = zDir;
01320                 float segPhi = 0.25*kPi*seg;
01321                 // if vr is opposite to original, but both are very small, e.x. -0.01 -> + 0.01, or you can say, pt~p, change it to guarantee vx, vy is correct.
01322                 if (part == 1 && px_refit*cos(segPhi)+py_refit*sin(segPhi) < 0.0) { // when in barrel, pt dot segPhi < 0, angle between them > 90deg
01323                         px_refit *= -1.0;
01324                         py_refit *= -1.0;
01325                         pz_refit *= -1.0;
01326                 }
01327 
01328                 mom_refit.setX(px_refit);
01329                 mom_refit.setY(py_refit);
01330                 mom_refit.setZ(pz_refit);
01331                 mom_refit.setMag(momentum);
01332         }
01333         else mom_refit = m_MucMomentum;  //use the former momentum
01334 
01335         HepPoint3D initPos_refit;
01336         if(status == 0){
01337                 float initPosx_refit, initPosy_refit, initPosz_refit;
01338                 float sigmax_refit, sigmay_refit, sigmaz_refit;
01339                 road3D.Project(0, zx, x0, zy, y0, initPosx_refit, initPosy_refit, initPosz_refit);
01340                 initPos_refit.setX(initPosx_refit-mom_refit.x()/momentum);
01341                 initPos_refit.setY(initPosy_refit-mom_refit.y()/momentum);
01342                 initPos_refit.setZ(initPosz_refit-mom_refit.z()/momentum);
01343         }
01344         else initPos_refit = initPos;
01345         //refit---------------------------------
01346         //cout<<"mom: "<<m_MucMomentum<<" "<<mom_refit<<" pos: "<<initPos<<"  "<<initPos_refit<<endl;  
01347         //vector<Identifier> MuId = road3D.ProjectToStrip(m_endPart,igap,initPos,m_MucMomentum,padID,intersect_x,intersect_y,intersect_z);
01348 
01349         vector<Identifier> MuId = road3D.ProjectToStrip(m_endPart,igap,initPos_refit,mom_refit,padID,intersect_x,intersect_y,intersect_z);
01350 
01351         vector<Identifier>::const_iterator mucid;
01352         int i = 0;
01353         for(mucid = MuId.begin(); mucid != MuId.end(); mucid++,i++)
01354         {
01355           MucRecHit *pHit = new MucRecHit(MucID::part(*mucid),MucID::seg(*mucid),MucID::gap(*mucid),MucID::strip(*mucid));
01356           pHit->SetPadID(padID[i]);
01357           pHit->SetIntersectX(intersect_x[i]);
01358           pHit->SetIntersectY(intersect_y[i]);
01359           pHit->SetIntersectZ(intersect_z[i]);
01360 
01361           m_pExpectedHits.push_back(pHit);
01362         }
01363       }
01364     }
01365 
01366     //cout<<"in RecMucTrack push back expected hits  size= "<<m_pExpectedHits.size()<<" ? "<<m_pHits.size()<<endl;
01367     for(int i=0; i< m_pExpectedHits.size(); i++)
01368     {
01369       MucRecHit *ihit = m_pExpectedHits[i];
01370       //cout<<"expected Hits: "<<ihit->Part()<<"  "<<ihit->Seg()<<"  "<<ihit->Gap()<<"  "<<ihit->Strip()<<endl;
01371       //cout<<"pad: "<<ihit->GetPadID()<<"  pos: "<<ihit->GetIntersectX()<<" "<<ihit->GetIntersectY()<<" "<<ihit->GetIntersectZ()<<" "<<endl;
01372     }
01373 
01374     for(int i=0; i< m_pHits.size(); i++)
01375     {
01376       MucRecHit *ihit = m_pHits[i];
01377       //cout<<"attachedd Hits: "<<ihit->Part()<<"  "<<ihit->Seg()<<"  "<<ihit->Gap()<<"  "<<ihit->Strip()<<" isseed: "<<ihit->HitIsSeed()<<endl;
01378     }
01379     //cout<<"1st: "<<brFirstLayer()<<"  "<<ecFirstLayer()<<"  last: "<<brLastLayer()<<"  "<<ecLastLayer()<<endl;
01380   
01381   }
01382   else {
01383     //calc distance between each hit with this track.
01384     //initialize distHits
01385     for(int ihit = 0; ihit < m_pHits.size(); ihit++){
01386       m_distHits.push_back(-99);
01387       m_distHits_quad.push_back(-99);
01388     }
01389   }
01390   //cout << "Muc Pos: x " << m_MucPos.x() << " y " << m_MucPos.y() << " z " << m_MucPos.z() << endl;
01391 }

int DstMucTrack::maxHitsInLayer  )  const [inline, inherited]
 

00043 { return   m_maxHitsInLayer; }

int DstMucTrack::maxHitsInLayer  )  const [inline, inherited]
 

00043 { return   m_maxHitsInLayer; }

int DstMucTrack::numHits  )  const [inline, inherited]
 

00041 { return   m_numHits;      } // total hits on the track   

int DstMucTrack::numHits  )  const [inline, inherited]
 

00041 { return   m_numHits;      } // total hits on the track   

int DstMucTrack::numLayers  )  const [inline, inherited]
 

00042 { return   m_numLayers;    } // number of layers with hits 

int DstMucTrack::numLayers  )  const [inline, inherited]
 

00042 { return   m_numLayers;    } // number of layers with hits 

RecMucTrack& RecMucTrack::operator= const DstMucTrack dstTrack  ) 
 

Assignment constructor from DstMucTrack.

RecMucTrack& RecMucTrack::operator= const RecMucTrack orig  ) 
 

Assignment constructor.

RecMucTrack & RecMucTrack::operator= const DstMucTrack dstTrack  ) 
 

Assignment constructor from DstMucTrack.

00170 {
00171   SetDefault();
00172   DstMucTrack::operator=(dstTrack);
00173   return *this;
00174 }

RecMucTrack & RecMucTrack::operator= const RecMucTrack orig  ) 
 

Assignment constructor.

00079 {
00080   // Assignment operator.
00081   if ( this != &orig ) {             // Watch out for self-assignment!
00082     //m_trackId         = orig.m_trackId;    //--------------->
00083     m_ExtTrackID    = orig.m_ExtTrackID;
00084     m_MdcPos        = orig.m_MdcPos;
00085     m_MdcMomentum   = orig.m_MdcMomentum;
00086     m_MucPos        = orig.m_MucPos;
00087     m_MucPosSigma   = orig.m_MucPosSigma;
00088     m_MucMomentum   = orig.m_MucMomentum;
00089     m_CurrentPos    = orig.m_CurrentPos;
00090     m_CurrentDir    = orig.m_CurrentDir;
00091     m_CurrentInsct  = orig.m_CurrentInsct;
00092     m_id            = orig.m_id;
00093     m_status        = orig.m_status;
00094     m_type          = orig.m_type;
00095     m_numHits       = orig.m_numHits;    //--------------->
00096     m_startPart     = orig.m_startPart;
00097     m_endPart       = orig.m_endPart;
00098     m_brLastLayer   = orig.m_brLastLayer;
00099     m_ecLastLayer   = orig.m_ecLastLayer;
00100     m_numLayers     = orig.m_numLayers;
00101     m_maxHitsInLayer= orig.m_maxHitsInLayer;
00102     m_depth         = orig.m_depth;
00103     m_dof           = orig.m_dof;
00104     m_chi2          = orig.m_chi2;
00105     m_rms           = orig.m_rms;
00106     m_deltaPhi      = orig.m_deltaPhi;
00107     m_pHits         = orig.m_pHits;
00108     m_pExpectedHits = orig.m_pExpectedHits;
00109     m_Intersections = orig.m_Intersections;
00110     m_Directions    = orig.m_Directions;
00111     m_xPosSigma     = orig.m_xPosSigma;
00112     m_yPosSigma     = orig.m_yPosSigma;
00113     m_zPosSigma     = orig.m_zPosSigma;
00114     m_changeUnit    = orig.m_changeUnit;
00115     m_recmode       = orig.m_recmode;
00116   }
00117 
00118   return *this;
00119 }

void RecMucTrack::OutputUnitChange  ) 
 

change unit

void RecMucTrack::OutputUnitChange  ) 
 

change unit

01689 {
01690   if(m_changeUnit == false){
01691     m_depth/=10;
01692 
01693     m_xPos /=10;
01694     m_yPos /=10;
01695     m_zPos /=10; 
01696 
01697     m_xPosSigma/=10;
01698     m_yPosSigma/=10;
01699     m_zPosSigma/=10;
01700 
01701     m_px /= 1000;
01702     m_py /= 1000;
01703     m_pz /= 1000;
01704 
01705     m_distance /= 10;
01706   }
01707 
01708   m_changeUnit = true;
01709 
01710 }

void RecMucTrack::PrintHitsInfo  )  const
 

Print Hits Infomation.

void RecMucTrack::PrintHitsInfo  )  const
 

Print Hits Infomation.

01667 {
01668   vector<MucRecHit*>::const_iterator iHit;
01669   for ( iHit = m_pHits.begin(); iHit != m_pHits.end(); iHit++) {
01670     if (*iHit) {  // Check for a null pointer.
01671       float xl, yl, zl;
01672       (*iHit)->GetStrip()->GetCenterPos(xl, yl, zl);
01673       HepPoint3D vl(xl, yl, zl);
01674       HepPoint3D vg = (*iHit)->GetGap()->TransformToGlobal(vl);
01675       
01676       cout << " part "   << (*iHit)->Part() 
01677            << " seg  "   << (*iHit)->Seg()
01678            << " gap  "   << (*iHit)->Gap()
01679            << " strip "  << (*iHit)->Strip()
01680            << " pos ("   << vg.x() << ", " << vg.y() << ", " << vg.z() << ")"  
01681            << endl;
01682     }
01683   }
01684 
01685 }

void RecMucTrack::Project const int &  part,
const int &  gap,
float &  x,
float &  y,
float &  z,
int &  seg
 

Where does the trajectory of this track intersect a specific gap?

void RecMucTrack::Project const int &  part,
const int &  gap,
float &  x,
float &  y,
float &  z,
int &  seg
 

Where does the trajectory of this track intersect a specific gap?

00408 {
00409   seg = -1;
00410   x = 0.0; y = 0.0; z = 0.0;
00411   
00412   if ( (gap < 0) || (gap >= (int)MucID::getGapNum(part)) ) {
00413     cout << "Muc2DRoad::Project(), invalid gap = " << gap << endl;
00414     return;
00415   }
00416 
00417   HepPoint3D pos = m_CurrentPos;
00418   Hep3Vector dir = m_CurrentDir;
00419 
00420   vector<HepPoint3D> insctCon = MucGeoGeneral::Instance()->FindIntersections(part, gap, pos, dir);
00421   if( insctCon.size() == 0 ) {
00422     return;
00423   }
00424 
00425   HepPoint3D intersection = insctCon[0];
00426   
00427   x = intersection.x();
00428   y = intersection.y();
00429   z = intersection.z();
00430 
00431   //cout << " x " << x << " y " << y << " z " << z << endl;
00432 
00433   float phi;
00434   if( (x*x+y*y+z*z) < kMinor) {
00435     return;
00436   }
00437   else {
00438     if(part == 1) {
00439       phi = acos(x/sqrt(x*x+y*y));
00440       if(y < 0) phi = 2.0*kPi - phi;
00441       phi = fmod((phi + kPi/8.0), 2.0*kPi);
00442       seg = int(phi/(kPi/4.0)); 
00443     }
00444     else {
00445       if(x >= 0.0) {
00446         if(y >= 0.0) {
00447           seg = 0;
00448         } 
00449         else {
00450           seg = 3;
00451         }
00452       }
00453       else {
00454         if(y >= 0.0) {
00455           seg = 1;
00456         }
00457         else {
00458           seg = 2;
00459         }
00460       }
00461     }
00462   }
00463 }

void RecMucTrack::pushExtDistHits float  dist  )  [inline]
 

00347 {m_distHits_ext.push_back(dist);}

void RecMucTrack::pushExtDistHits float  dist  )  [inline]
 

00347 {m_distHits_ext.push_back(dist);}

double DstMucTrack::px  )  const [inline, inherited]
 

00058 { return m_px; }   // momentum on the start of track in muc

double DstMucTrack::px  )  const [inline, inherited]
 

00058 { return m_px; }   // momentum on the start of track in muc

double DstMucTrack::py  )  const [inline, inherited]
 

00059 { return m_py; }

double DstMucTrack::py  )  const [inline, inherited]
 

00059 { return m_py; }

double DstMucTrack::pz  )  const [inline, inherited]
 

00060 { return m_pz; }

double DstMucTrack::pz  )  const [inline, inherited]
 

00060 { return m_pz; }

double DstMucTrack::rms void   )  const [inline, inherited]
 

00048 { return   m_rms;    }

double DstMucTrack::rms  )  const [inline, inherited]
 

00048 { return   m_rms;    }

void DstMucTrack::setBrLastLayer int  layer  )  [inline, inherited]
 

00075 {m_brLastLayer = layer; }

void DstMucTrack::setBrLastLayer int  layer  )  [inline, inherited]
 

00075 {m_brLastLayer = layer; }

void DstMucTrack::setChi2 double  chi2  )  [inline, inherited]
 

00082 { m_chi2   = chi2; }

void DstMucTrack::setChi2 double  chi2  )  [inline, inherited]
 

00082 { m_chi2   = chi2; }

void RecMucTrack::SetCurrentDir const float  x,
const float  y,
const float  z
 

set current direction of the trajectory.

void RecMucTrack::SetCurrentDir const float  x,
const float  y,
const float  z
 

set current direction of the trajectory.

00278 {
00279   m_CurrentDir.set(x*1000, y*1000, z*1000);  //unnecessary, because it's dir, not mom
00280 }

void RecMucTrack::SetCurrentInsct const float  x,
const float  y,
const float  z
 

set current intersection of the trajectory with strip plane.

void RecMucTrack::SetCurrentInsct const float  x,
const float  y,
const float  z
 

set current intersection of the trajectory with strip plane.

00286 {
00287   m_CurrentInsct.set(x, y, z);  
00288 }

void RecMucTrack::SetCurrentPos const float  x,
const float  y,
const float  z
 

set current position of the trajectory.

void RecMucTrack::SetCurrentPos const float  x,
const float  y,
const float  z
 

set current position of the trajectory.

00270 {
00271   m_CurrentPos.set(x*10, y*10, z*10);
00272 }

void RecMucTrack::SetDefault  ) 
 

void RecMucTrack::SetDefault  ) 
 

00177 {
00178   m_brFirstLayer = -99;
00179   m_ecFirstLayer = -99;
00180   m_Good3DPart   = -99;
00181 }

void DstMucTrack::setDeltaPhi double  dphi  )  [inline, inherited]
 

00099 {m_deltaPhi = dphi; }

void DstMucTrack::setDeltaPhi double  dphi  )  [inline, inherited]
 

00099 {m_deltaPhi = dphi; }

void DstMucTrack::setDepth double  depth  )  [inline, inherited]
 

00081 { m_depth  = depth; }

void DstMucTrack::setDepth double  depth  )  [inline, inherited]
 

00081 { m_depth  = depth; }

void DstMucTrack::setDistance double  dist  )  [inline, inherited]
 

00098 {m_distance = dist; }

void DstMucTrack::setDistance double  dist  )  [inline, inherited]
 

00098 {m_distance = dist; }

void RecMucTrack::setDistHits vector< float > &  disthits  )  [inline]
 

00341 { m_distHits = disthits;}

void RecMucTrack::setDistHits vector< float > &  disthits  )  [inline]
 

00341 { m_distHits = disthits;}

void DstMucTrack::setDof int  dof  )  [inline, inherited]
 

00083 { m_dof    = dof ; }

void DstMucTrack::setDof int  dof  )  [inline, inherited]
 

00083 { m_dof    = dof ; }

void DstMucTrack::setEcLastLayer int  layer  )  [inline, inherited]
 

00076 {m_ecLastLayer = layer; }

void DstMucTrack::setEcLastLayer int  layer  )  [inline, inherited]
 

00076 {m_ecLastLayer = layer; }

void DstMucTrack::setEndPart int  part  )  [inline, inherited]
 

00074 {m_endPart = part;   }

void DstMucTrack::setEndPart int  part  )  [inline, inherited]
 

00074 {m_endPart = part;   }

void RecMucTrack::setExpHits vector< int > &  exphits  )  [inline]
 

00339 { m_expHits = exphits;}  

void RecMucTrack::setExpHits vector< MucRecHit * > &  pHits  ) 
 

void RecMucTrack::setExpHits vector< int > &  exphits  )  [inline]
 

00339 { m_expHits = exphits;}  

void RecMucTrack::setExpHits vector< MucRecHit * > &  pHits  ) 
 

00314 { 
00315     for(int i = 0 ; i < pHits.size(); i++)
00316           m_expHits.push_back((pHits[i]->GetID()).get_value());
00317 }

void RecMucTrack::setExtDistHits vector< float > &  disthits  )  [inline]
 

00345 { m_distHits_ext = disthits;}

void RecMucTrack::setExtDistHits vector< float > &  disthits  )  [inline]
 

00345 { m_distHits_ext = disthits;}

void RecMucTrack::SetExtMucMomentum const float  px,
const float  py,
const float  pz
 

set start moment of ext track in Muc.

void RecMucTrack::SetExtMucMomentum const float  px,
const float  py,
const float  pz
 

set start moment of ext track in Muc.

00262 {
00263   m_ExtMucMomentum.set(px*1000, py*1000, pz*1000);
00264 }

void RecMucTrack::SetExtMucPos const float  x,
const float  y,
const float  z
 

set start position of ext track in Muc. (compute from MdcPos MdcMomentum or get from ExtTrack)

void RecMucTrack::SetExtMucPos const float  x,
const float  y,
const float  z
 

set start position of ext track in Muc. (compute from MdcPos MdcMomentum or get from ExtTrack)

00254 {
00255   m_ExtMucPos.set(x*10, y*10, z*10);
00256 }

void RecMucTrack::SetExtTrack RecExtTrack extTrack  ) 
 

set Ext track point.

void RecMucTrack::SetExtTrack RecExtTrack extTrack  ) 
 

set Ext track point.

00298 {
00299   m_ExtTrack = extTrack;
00300   if (m_ExtTrack) m_ExtTrackID = extTrack->GetTrackId(); 
00301 }

void RecMucTrack::SetExtTrackID int  id  )  [inline]
 

set Ext track id. for compute from mdc myself

00132 { m_ExtTrackID = id; }

void RecMucTrack::SetExtTrackID int  id  )  [inline]
 

set Ext track id. for compute from mdc myself

00132 { m_ExtTrackID = id; }

void DstMucTrack::setId int  id  )  [inline, inherited]
 

00069 { m_id = id ; }

void DstMucTrack::setId int  id  )  [inline, inherited]
 

00069 { m_id = id ; }

void DstMucTrack::setMaxHitsInLayer int  maxHits  )  [inline, inherited]
 

00079 { m_maxHitsInLayer = maxHits; }

void DstMucTrack::setMaxHitsInLayer int  maxHits  )  [inline, inherited]
 

00079 { m_maxHitsInLayer = maxHits; }

void RecMucTrack::SetMdcMomentum const float  px,
const float  py,
const float  pz
 

set start moment of the track in Mdc.

void RecMucTrack::SetMdcMomentum const float  px,
const float  py,
const float  pz
 

set start moment of the track in Mdc.

00213 {
00214   m_MdcMomentum.set(px*1000, py*1000, pz*1000);
00215 }

void RecMucTrack::SetMdcPos const float  x,
const float  y,
const float  z
 

set start position of the track in Mdc.

void RecMucTrack::SetMdcPos const float  x,
const float  y,
const float  z
 

set start position of the track in Mdc.

00205 {
00206   m_MdcPos.set(x*10, y*10, z*10);
00207 }

void RecMucTrack::SetMucMomentum const float  px,
const float  py,
const float  pz
 

set start moment of the track in Muc.

void RecMucTrack::SetMucMomentum const float  px,
const float  py,
const float  pz
 

set start moment of the track in Muc.

00243 {
00244   m_MucMomentum.set(px*1000, py*1000, pz*1000);
00245   m_px = px*1000;
00246   m_py = py*1000;
00247   m_pz = pz*1000;
00248 }

void RecMucTrack::SetMucPos const float  x,
const float  y,
const float  z
 

set start position of the track in Muc. (after line fit and correction)

void RecMucTrack::SetMucPos const float  x,
const float  y,
const float  z
 

set start position of the track in Muc. (after line fit and correction)

00221 {
00222   m_MucPos.set(x*10, y*10, z*10);
00223   m_xPos = x*10;
00224   m_yPos = y*10;
00225   m_zPos = z*10;
00226 }

void RecMucTrack::SetMucPosSigma const float  sigmax,
const float  sigmay,
const float  sigmaz
 

void RecMucTrack::SetMucPosSigma const float  sigmax,
const float  sigmay,
const float  sigmaz
 

00232 {
00233   m_MucPosSigma.set(x*10, y*10, z*10);
00234   m_xPosSigma = x*10;
00235   m_yPosSigma = y*10;
00236   m_zPosSigma = z*10;
00237 }

void DstMucTrack::setNumHits int  numHits  )  [inline, inherited]
 

00077 { m_numHits  = numHits; }

void DstMucTrack::setNumHits int  numHits  )  [inline, inherited]
 

00077 { m_numHits  = numHits; }

void DstMucTrack::setNumLayers int  numLayers  )  [inline, inherited]
 

00078 { m_numLayers = numLayers; }

void DstMucTrack::setNumLayers int  numLayers  )  [inline, inherited]
 

00078 { m_numLayers = numLayers; }

void DstMucTrack::setPx double  px  )  [inline, inherited]
 

00094 { m_px = px;  }

void DstMucTrack::setPx double  px  )  [inline, inherited]
 

00094 { m_px = px;  }

void DstMucTrack::setPy double  py  )  [inline, inherited]
 

00095 { m_py = py;  }

void DstMucTrack::setPy double  py  )  [inline, inherited]
 

00095 { m_py = py;  }

void DstMucTrack::setPz double  pz  )  [inline, inherited]
 

00096 { m_pz = pz;  }

void DstMucTrack::setPz double  pz  )  [inline, inherited]
 

00096 { m_pz = pz;  }

void RecMucTrack::setQuadDistHits vector< float > &  disthits  )  [inline]
 

00343 { m_distHits_quad = disthits;}

void RecMucTrack::setQuadDistHits vector< float > &  disthits  )  [inline]
 

00343 { m_distHits_quad = disthits;}

void RecMucTrack::SetRecMode int  recmode  )  [inline]
 

00254 {m_recmode = recmode;}

void RecMucTrack::SetRecMode int  recmode  )  [inline]
 

00254 {m_recmode = recmode;}

void DstMucTrack::setRms double  rms  )  [inline, inherited]
 

00084 { m_rms    = rms ; }

void DstMucTrack::setRms double  rms  )  [inline, inherited]
 

00084 { m_rms    = rms ; }

void DstMucTrack::setStartPart int  part  )  [inline, inherited]
 

00073 {m_startPart = part; }

void DstMucTrack::setStartPart int  part  )  [inline, inherited]
 

00073 {m_startPart = part; }

void DstMucTrack::setStatus int  st  )  [inline, inherited]
 

00070 { m_status = st;  }

void DstMucTrack::setStatus int  st  )  [inline, inherited]
 

00070 { m_status = st;  }

void RecMucTrack::setTrackId const int  trackId  ) 
 

set the index for this track.

Reimplemented from DstMucTrack.

void RecMucTrack::setTrackId const int  trackId  ) 
 

set the index for this track.

Reimplemented from DstMucTrack.

00193 {
00194   if(trackId >= 0) {
00195     m_trackId = trackId;
00196   }
00197 }

void DstMucTrack::setType int  type  )  [inline, inherited]
 

00071 { m_type = type; }

void DstMucTrack::setType int  type  )  [inline, inherited]
 

00071 { m_type = type; }

void RecMucTrack::setVecHits vector< int > &  vechits  )  [inline]
 

Reimplemented from DstMucTrack.

00337 { m_vecHits = vechits;}

void RecMucTrack::setVecHits vector< MucRecHit * > &  pHits  ) 
 

reload setVecHits

void RecMucTrack::setVecHits vector< int > &  vechits  )  [inline]
 

Reimplemented from DstMucTrack.

00337 { m_vecHits = vechits;}

void RecMucTrack::setVecHits vector< MucRecHit * > &  pHits  ) 
 

reload setVecHits

00307 {
00308   for(int i = 0 ; i < pHits.size(); i++)
00309     m_vecHits.push_back((pHits[i]->GetID()).get_value());
00310 }

void DstMucTrack::setXPos double  x  )  [inline, inherited]
 

00086 { m_xPos = x; }

void DstMucTrack::setXPos double  x  )  [inline, inherited]
 

00086 { m_xPos = x; }

void DstMucTrack::setXPosSigma double  xsigma  )  [inline, inherited]
 

00090 { m_xPosSigma = xsigma; }

void DstMucTrack::setXPosSigma double  xsigma  )  [inline, inherited]
 

00090 { m_xPosSigma = xsigma; }

void DstMucTrack::setYPos double  y  )  [inline, inherited]
 

00087 { m_yPos = y; }

void DstMucTrack::setYPos double  y  )  [inline, inherited]
 

00087 { m_yPos = y; }

void DstMucTrack::setYPosSigma double  ysigma  )  [inline, inherited]
 

00091 { m_yPosSigma = ysigma; }

void DstMucTrack::setYPosSigma double  ysigma  )  [inline, inherited]
 

00091 { m_yPosSigma = ysigma; }

void DstMucTrack::setZPos double  z  )  [inline, inherited]
 

00088 { m_zPos = z; }

void DstMucTrack::setZPos double  z  )  [inline, inherited]
 

00088 { m_zPos = z; }

void DstMucTrack::setZPosSigma double  zsigma  )  [inline, inherited]
 

00092 { m_zPosSigma = zsigma; }

void DstMucTrack::setZPosSigma double  zsigma  )  [inline, inherited]
 

00092 { m_zPosSigma = zsigma; }

int DstMucTrack::startPart  )  const [inline, inherited]
 

00037 { return   m_startPart; }    // start position of track locates in which part

int DstMucTrack::startPart  )  const [inline, inherited]
 

00037 { return   m_startPart; }    // start position of track locates in which part

int DstMucTrack::status void   )  const [inline, inherited]
 

00034 { return   m_status; } 

int DstMucTrack::status  )  const [inline, inherited]
 

00034 { return   m_status; } 

int DstMucTrack::trackId  )  const [inline, inherited]
 

00032 { return   m_trackId ; }

int DstMucTrack::trackId  )  const [inline, inherited]
 

00032 { return   m_trackId ; }

int DstMucTrack::type void   )  const [inline, inherited]
 

00035 { return   m_type;  }

int DstMucTrack::type  )  const [inline, inherited]
 

00035 { return   m_type;  }

vector<int> DstMucTrack::vecHits  )  const [inline, inherited]
 

00065 { return  m_vecHits ;}

vector<int> DstMucTrack::vecHits  )  const [inline, inherited]
 

00065 { return  m_vecHits ;}

double DstMucTrack::xPos  )  const [inline, inherited]
 

00050 { return m_xPos; }   // position on the start of track in muc (vertex) 

double DstMucTrack::xPos  )  const [inline, inherited]
 

00050 { return m_xPos; }   // position on the start of track in muc (vertex) 

double DstMucTrack::xPosSigma  )  const [inline, inherited]
 

00054 { return m_xPosSigma; } 

double DstMucTrack::xPosSigma  )  const [inline, inherited]
 

00054 { return m_xPosSigma; } 

double DstMucTrack::yPos  )  const [inline, inherited]
 

00051 { return m_yPos; }

double DstMucTrack::yPos  )  const [inline, inherited]
 

00051 { return m_yPos; }

double DstMucTrack::yPosSigma  )  const [inline, inherited]
 

00055 { return m_yPosSigma; }

double DstMucTrack::yPosSigma  )  const [inline, inherited]
 

00055 { return m_yPosSigma; }

double DstMucTrack::zPos  )  const [inline, inherited]
 

00052 { return m_zPos; }

double DstMucTrack::zPos  )  const [inline, inherited]
 

00052 { return m_zPos; }

double DstMucTrack::zPosSigma  )  const [inline, inherited]
 

00056 { return m_zPosSigma; }

double DstMucTrack::zPosSigma  )  const [inline, inherited]
 

00056 { return m_zPosSigma; }


Member Data Documentation

int RecMucTrack::m_brFirstLayer [private]
 

int DstMucTrack::m_brLastLayer [protected, inherited]
 

bool RecMucTrack::m_changeUnit [private]
 

double DstMucTrack::m_chi2 [protected, inherited]
 

Hep3Vector RecMucTrack::m_CurrentDir [private]
 

Hep3Vector RecMucTrack::m_CurrentInsct [private]
 

Hep3Vector RecMucTrack::m_CurrentPos [private]
 

double DstMucTrack::m_deltaPhi [protected, inherited]
 

double DstMucTrack::m_depth [protected, inherited]
 

float RecMucTrack::m_depth_3 [private]
 

vector<Hep3Vector> RecMucTrack::m_Directions [private]
 

vector<Hep3Vector> RecMucTrack::m_Directions [private]
 

Hep3Vector RecMucTrack::m_Dist_muc_ext [private]
 

double DstMucTrack::m_distance [protected, inherited]
 

vector<float> RecMucTrack::m_distHits [private]
 

vector<float> RecMucTrack::m_distHits [private]
 

vector<float> RecMucTrack::m_distHits_ext [private]
 

vector<float> RecMucTrack::m_distHits_ext [private]
 

vector<float> RecMucTrack::m_distHits_quad [private]
 

vector<float> RecMucTrack::m_distHits_quad [private]
 

int DstMucTrack::m_dof [protected, inherited]
 

int RecMucTrack::m_ecFirstLayer [private]
 

int DstMucTrack::m_ecLastLayer [protected, inherited]
 

int RecMucTrack::m_ecPart [private]
 

int DstMucTrack::m_endPart [protected, inherited]
 

vector<int> RecMucTrack::m_expHits [private]
 

vector<int> RecMucTrack::m_expHits [private]
 

Hep3Vector RecMucTrack::m_ExtMucMomentum [private]
 

Hep3Vector RecMucTrack::m_ExtMucPos [private]
 

RecExtTrack* RecMucTrack::m_ExtTrack [private]
 

RecExtTrack* RecMucTrack::m_ExtTrack [private]
 

int RecMucTrack::m_ExtTrackID [private]
 

int RecMucTrack::m_Good3DLine [private]
 

int RecMucTrack::m_Good3DPart [private]
 

int DstMucTrack::m_id [protected, inherited]
 

Hep3Vector RecMucTrack::m_IntersectionInner [private]
 

Hep3Vector RecMucTrack::m_IntersectionOuter [private]
 

vector<Hep3Vector> RecMucTrack::m_Intersections [private]
 

vector<Hep3Vector> RecMucTrack::m_Intersections [private]
 

int DstMucTrack::m_maxHitsInLayer [protected, inherited]
 

Hep3Vector RecMucTrack::m_MdcMomentum [private]
 

Hep3Vector RecMucTrack::m_MdcPos [private]
 

Hep3Vector RecMucTrack::m_MucMomentum [private]
 

Hep3Vector RecMucTrack::m_MucPos [private]
 

Hep3Vector RecMucTrack::m_MucPosSigma [private]
 

int DstMucTrack::m_numHits [protected, inherited]
 

int DstMucTrack::m_numLayers [protected, inherited]
 

vector<MucRecHit*> RecMucTrack::m_pExpectedHits [private]
 

vector<MucRecHit*> RecMucTrack::m_pExpectedHits [private]
 

vector<MucRecHit*> RecMucTrack::m_pHits [private]
 

vector<MucRecHit*> RecMucTrack::m_pHits [private]
 

double DstMucTrack::m_px [protected, inherited]
 

double DstMucTrack::m_py [protected, inherited]
 

double DstMucTrack::m_pz [protected, inherited]
 

int RecMucTrack::m_recmode [private]
 

double DstMucTrack::m_rms [protected, inherited]
 

int DstMucTrack::m_startPart [protected, inherited]
 

int DstMucTrack::m_status [protected, inherited]
 

Hep3Vector RecMucTrack::m_StripPhi [private]
 

int DstMucTrack::m_trackId [protected, inherited]
 

int DstMucTrack::m_type [protected, inherited]
 

vector<int> RecMucTrack::m_vecHits [private]
 

Reimplemented from DstMucTrack.

vector<int> RecMucTrack::m_vecHits [private]
 

Reimplemented from DstMucTrack.

double DstMucTrack::m_xPos [protected, inherited]
 

double DstMucTrack::m_xPosSigma [protected, inherited]
 

double DstMucTrack::m_yPos [protected, inherited]
 

double DstMucTrack::m_yPosSigma [protected, inherited]
 

double DstMucTrack::m_zPos [protected, inherited]
 

double DstMucTrack::m_zPosSigma [protected, inherited]
 


The documentation for this class was generated from the following files:
Generated on Wed Feb 2 16:47:43 2011 for BOSS6.5.5 by  doxygen 1.3.9.1