#include <RecMucTrack.h>
Inheritance diagram for RecMucTrack:
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. | |
MucRecHit * | GetHit (const int part, const int gap) const |
Get a pointer to the first hit attached in a particular gap. | |
MucRecHit * | GetHit (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 |
RecMucTrack & | operator= (const DstMucTrack &dstTrack) |
Assignment constructor from DstMucTrack. | |
RecMucTrack & | operator= (const RecMucTrack &orig) |
Assignment constructor. | |
RecMucTrack & | operator= (const DstMucTrack &dstTrack) |
Assignment constructor from DstMucTrack. | |
RecMucTrack & | operator= (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 |
RecExtTrack * | m_ExtTrack |
RecExtTrack * | m_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.
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 }
|
|
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 }
|
|
Copy constructor from DstMucTrack.
00162 :DstMucTrack(dstTrack) 00163 { 00164 00165 SetDefault(); 00166 00167 }
|
|
Destructor.
00185 { 00186 for(int i = 0 ; i < m_pExpectedHits.size(); i++) 00187 delete m_pExpectedHits[i]; 00188 }
|
|
Constructor.
|
|
Copy constructor.
|
|
Copy constructor from DstMucTrack.
|
|
Destructor.
|
|
Attach the direction to this trajectory.
|
|
Attach the direction to this trajectory.
00598 { 00599 m_Directions.push_back(dir); 00600 }
|
|
Attach the given hit to this track.
|
|
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 }
|
|
Attach the intersection to this trajectory.
|
|
Attach the intersection to this trajectory.
00592 { 00593 m_Intersections.push_back(insct); 00594 }
|
|
Which gap on Barrel is the first one with hits attached to this track?
00221 { return m_brFirstLayer; }
|
|
Which gap on Barrel is the first one with hits attached to this track?
00221 { return m_brFirstLayer; }
|
|
00039 { return m_brLastLayer; } // last layer with hits in barrel
|
|
00039 { return m_brLastLayer; } // last layer with hits in barrel
|
|
Calculate intersection from all hits attached on this 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 }
|
|
00046 { return m_chi2; }
|
|
00046 { return m_chi2; }
|
|
Reimplemented from DstMucTrack. 00050 {
00051 return CLID_RecMucTrack;
00052 }
|
|
Reimplemented from DstMucTrack. 00050 {
00051 return CLID_RecMucTrack;
00052 }
|
|
Reimplemented from DstMucTrack. 00045 { 00046 return RecMucTrack::classID(); 00047 }
|
|
Reimplemented from DstMucTrack. 00045 { 00046 return RecMucTrack::classID(); 00047 }
|
|
Compute depth.
|
|
Compute depth.
|
|
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 }
|
|
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 }
|
|
Compute distance match //2006.11.08.
|
|
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 }
|
|
Comute last gap in barrel and endcap.
|
|
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 }
|
|
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 }
|
|
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 }
|
|
Compute all infomation of this track;.
|
|
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 }
|
|
Correct direction of this trajectory.
|
|
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 }
|
|
Correct current position of this trajectory.
|
|
Correct current position of this trajectory.
00613 { 00614 m_CurrentPos = m_CurrentInsct; 00615 }
|
|
00063 { return m_deltaPhi;}
|
|
00063 { return m_deltaPhi;}
|
|
00045 { return m_depth; } // depth of the track transport in iron
|
|
00045 { return m_depth; } // depth of the track transport in iron
|
|
00062 { return m_distance;}
|
|
00062 { return m_distance;}
|
|
00047 { return m_dof; }
|
|
00047 { return m_dof; }
|
|
Which gap on EndCap is the first one with hits attached to this track?
00224 { return m_ecFirstLayer; }
|
|
Which gap on EndCap is the first one with hits attached to this track?
00224 { return m_ecFirstLayer; }
|
|
00040 { return m_ecLastLayer; } // last layer with hits in end cap
|
|
00040 { return m_ecLastLayer; } // last layer with hits in end cap
|
|
00038 { return m_endPart; } // end position of track locates in which part
|
|
00038 { return m_endPart; } // end position of track locates in which part
|
|
Extend mucpos and extmucpos to first layer of muc.
|
|
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 }
|
|
Find the segment which contains most hits, return max hits number.
|
|
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 }
|
|
Current direction.
00212 { return m_CurrentDir/1000; }
|
|
Current direction.
00212 { return m_CurrentDir/1000; }
|
|
Current intersection.
00215 { return m_CurrentInsct; } //internal
|
|
Current intersection.
00215 { return m_CurrentInsct; } //internal
|
|
Current position.
00209 { return m_CurrentPos/10; }
|
|
Current position.
00209 { return m_CurrentPos/10; }
|
|
Length of the track penetrating in iron absorber.
00252 { return m_depth_3/10; }
|
|
Length of the track penetrating in iron absorber.
00252 { return m_depth_3/10; }
|
|
00311 { return m_distHits ;}
|
|
00311 { return m_distHits ;}
|
|
|
|
01626 {
01627 return m_pExpectedHits;
01628 }
|
|
00309 { return m_expHits ;}
|
|
00309 { return m_expHits ;}
|
|
00315 { return m_distHits_ext ;}
|
|
00315 { return m_distHits_ext ;}
|
|
Distance match of the ext track with muc track in first layer.
00259 { return m_Dist_muc_ext;}
|
|
Distance match of the ext track with muc track in first layer.
00259 { return m_Dist_muc_ext;}
|
|
Start momentum of the Ext track in Muc.
00195 { return m_ExtMucMomentum/1000; }
|
|
Start momentum of the Ext track in Muc.
00195 { return m_ExtMucMomentum/1000; }
|
|
start position of the Ext track in Muc.
00192 { return m_ExtMucPos/10; }
|
|
start position of the Ext track in Muc.
00192 { return m_ExtMucPos/10; }
|
|
The identifier of the Ext track as seed.
00189 { return m_ExtTrackID; }
|
|
The identifier of the Ext track as seed.
00189 { return m_ExtTrackID; }
|
|
Get a pointer to the first hit attached in a particular gap.
|
|
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 }
|
|
Calculate the distance of the hit to the intersection in read direction.
|
|
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 }
|
|
no abs value
|
|
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 }
|
|
Get indices of all hits in the track.
|
|
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 }
|
|
How many hits per gap does this track contain?
|
|
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 }
|
|
How many hits does a segment contains.
|
|
How many hits does a segment contains.
01455 { 01456 int num = GetHitInSegOrient(part, seg, 0) + GetHitInSegOrient(part, seg, 1); 01457 return num; 01458 }
|
|
How many hits does a segment contains in one orient.
|
|
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 }
|
|
Get all hits on this track.
|
|
Get all hits on this track.
01620 {
01621 return m_pHits;
01622 }
|
|
compute ext track myself from mdc.
|
|
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 }
|
|
momentum of this track in Mdc
00206 { return m_MdcMomentum/1000; }
|
|
momentum of this track in Mdc
00206 { return m_MdcMomentum/1000; }
|
|
Start momentum of this track in Muc.
00203 { return m_MucMomentum/1000; }
|
|
Start momentum of this track in Muc.
00203 { return m_MucMomentum/1000; }
|
|
start position of this track in Muc.
00198 { return m_MucPos/10; }
|
|
start position of this track in Muc.
00198 { return m_MucPos/10; }
|
|
00200 { return m_MucPosSigma/10; }
|
|
00200 { return m_MucPosSigma/10; }
|
|
00261 { return m_StripPhi;}
|
|
00261 { return m_StripPhi;}
|
|
How many gaps provide hits attached to this track?
00267 { return m_numLayers; }
|
|
How many gaps provide hits attached to this track?
00267 { return m_numLayers; }
|
|
How many hits do two tracks share?
|
|
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 }
|
|
00313 { return m_distHits_quad ;}
|
|
00313 { return m_distHits_quad ;}
|
|
00256 {return m_recmode;}
|
|
00256 {return m_recmode;}
|
|
How many hits in all does this track contain?
|
|
How many hits in all does this track contain?
01420 { 01421 return m_pHits.size(); 01422 }
|
|
00305 { return m_vecHits ;}
|
|
00305 { return m_vecHits ;}
|
|
Does this track contains an assigned hit?
|
|
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 }
|
|
Does this track contain any hits in the given gap?
|
|
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 }
|
|
00033 { return m_id; }
|
|
00033 { return m_id; }
|
|
|
|
00363 { 00364 if(pos.mag() < kSuperConductorR && fabs(pos.z()) < kSuperConductorZ) { 00365 return true; 00366 } 00367 else { 00368 return false; 00369 } 00370 }
|
|
Line fit with hits on a seg with max hits.
|
|
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 }
|
|
00043 { return m_maxHitsInLayer; }
|
|
00043 { return m_maxHitsInLayer; }
|
|
00041 { return m_numHits; } // total hits on the track
|
|
00041 { return m_numHits; } // total hits on the track
|
|
00042 { return m_numLayers; } // number of layers with hits
|
|
00042 { return m_numLayers; } // number of layers with hits
|
|
Assignment constructor from DstMucTrack.
|
|
Assignment constructor.
|
|
Assignment constructor from DstMucTrack.
00170 { 00171 SetDefault(); 00172 DstMucTrack::operator=(dstTrack); 00173 return *this; 00174 }
|
|
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 }
|
|
change unit
|
|
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 }
|
|
Print Hits Infomation.
|
|
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 }
|
|
Where does the trajectory of this track intersect a specific gap?
|
|
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 }
|
|
00347 {m_distHits_ext.push_back(dist);}
|
|
00347 {m_distHits_ext.push_back(dist);}
|
|
00058 { return m_px; } // momentum on the start of track in muc
|
|
00058 { return m_px; } // momentum on the start of track in muc
|
|
00059 { return m_py; }
|
|
00059 { return m_py; }
|
|
00060 { return m_pz; }
|
|
00060 { return m_pz; }
|
|
00048 { return m_rms; }
|
|
00048 { return m_rms; }
|
|
00075 {m_brLastLayer = layer; }
|
|
00075 {m_brLastLayer = layer; }
|
|
00082 { m_chi2 = chi2; }
|
|
00082 { m_chi2 = chi2; }
|
|
set current direction of the trajectory.
|
|
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 }
|
|
set current intersection of the trajectory with strip plane.
|
|
set current intersection of the trajectory with strip plane.
00286 { 00287 m_CurrentInsct.set(x, y, z); 00288 }
|
|
set current position of the trajectory.
|
|
set current position of the trajectory.
00270 { 00271 m_CurrentPos.set(x*10, y*10, z*10); 00272 }
|
|
|
|
00177 { 00178 m_brFirstLayer = -99; 00179 m_ecFirstLayer = -99; 00180 m_Good3DPart = -99; 00181 }
|
|
00099 {m_deltaPhi = dphi; }
|
|
00099 {m_deltaPhi = dphi; }
|
|
00081 { m_depth = depth; }
|
|
00081 { m_depth = depth; }
|
|
00098 {m_distance = dist; }
|
|
00098 {m_distance = dist; }
|
|
00341 { m_distHits = disthits;}
|
|
00341 { m_distHits = disthits;}
|
|
00083 { m_dof = dof ; }
|
|
00083 { m_dof = dof ; }
|
|
00076 {m_ecLastLayer = layer; }
|
|
00076 {m_ecLastLayer = layer; }
|
|
00074 {m_endPart = part; }
|
|
00074 {m_endPart = part; }
|
|
00339 { m_expHits = exphits;}
|
|
|
|
00339 { m_expHits = exphits;}
|
|
00314 { 00315 for(int i = 0 ; i < pHits.size(); i++) 00316 m_expHits.push_back((pHits[i]->GetID()).get_value()); 00317 }
|
|
00345 { m_distHits_ext = disthits;}
|
|
00345 { m_distHits_ext = disthits;}
|
|
set start moment of ext track in Muc.
|
|
set start moment of ext track in Muc.
00262 { 00263 m_ExtMucMomentum.set(px*1000, py*1000, pz*1000); 00264 }
|
|
set start position of ext track in Muc. (compute from MdcPos MdcMomentum or get from ExtTrack)
|
|
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 }
|
|
set Ext track point.
|
|
set Ext track point.
00298 { 00299 m_ExtTrack = extTrack; 00300 if (m_ExtTrack) m_ExtTrackID = extTrack->GetTrackId(); 00301 }
|
|
set Ext track id. for compute from mdc myself
00132 { m_ExtTrackID = id; }
|
|
set Ext track id. for compute from mdc myself
00132 { m_ExtTrackID = id; }
|
|
00069 { m_id = id ; }
|
|
00069 { m_id = id ; }
|
|
00079 { m_maxHitsInLayer = maxHits; }
|
|
00079 { m_maxHitsInLayer = maxHits; }
|
|
set start moment of the track in Mdc.
|
|
set start moment of the track in Mdc.
00213 { 00214 m_MdcMomentum.set(px*1000, py*1000, pz*1000); 00215 }
|
|
set start position of the track in Mdc.
|
|
set start position of the track in Mdc.
00205 { 00206 m_MdcPos.set(x*10, y*10, z*10); 00207 }
|
|
set start moment of the track in Muc.
|
|
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 }
|
|
set start position of the track in Muc. (after line fit and correction)
|
|
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 }
|
|
|
|
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 }
|
|
00077 { m_numHits = numHits; }
|
|
00077 { m_numHits = numHits; }
|
|
00078 { m_numLayers = numLayers; }
|
|
00078 { m_numLayers = numLayers; }
|
|
00094 { m_px = px; }
|
|
00094 { m_px = px; }
|
|
00095 { m_py = py; }
|
|
00095 { m_py = py; }
|
|
00096 { m_pz = pz; }
|
|
00096 { m_pz = pz; }
|
|
00343 { m_distHits_quad = disthits;}
|
|
00343 { m_distHits_quad = disthits;}
|
|
00254 {m_recmode = recmode;}
|
|
00254 {m_recmode = recmode;}
|
|
00084 { m_rms = rms ; }
|
|
00084 { m_rms = rms ; }
|
|
00073 {m_startPart = part; }
|
|
00073 {m_startPart = part; }
|
|
00070 { m_status = st; }
|
|
00070 { m_status = st; }
|
|
set the index for this track.
Reimplemented from DstMucTrack. |
|
set the index for this track.
Reimplemented from DstMucTrack. 00193 { 00194 if(trackId >= 0) { 00195 m_trackId = trackId; 00196 } 00197 }
|
|
00071 { m_type = type; }
|
|
00071 { m_type = type; }
|
|
Reimplemented from DstMucTrack. 00337 { m_vecHits = vechits;}
|
|
reload setVecHits
|
|
Reimplemented from DstMucTrack. 00337 { m_vecHits = vechits;}
|
|
reload setVecHits
00307 { 00308 for(int i = 0 ; i < pHits.size(); i++) 00309 m_vecHits.push_back((pHits[i]->GetID()).get_value()); 00310 }
|
|
00086 { m_xPos = x; }
|
|
00086 { m_xPos = x; }
|
|
00090 { m_xPosSigma = xsigma; }
|
|
00090 { m_xPosSigma = xsigma; }
|
|
00087 { m_yPos = y; }
|
|
00087 { m_yPos = y; }
|
|
00091 { m_yPosSigma = ysigma; }
|
|
00091 { m_yPosSigma = ysigma; }
|
|
00088 { m_zPos = z; }
|
|
00088 { m_zPos = z; }
|
|
00092 { m_zPosSigma = zsigma; }
|
|
00092 { m_zPosSigma = zsigma; }
|
|
00037 { return m_startPart; } // start position of track locates in which part
|
|
00037 { return m_startPart; } // start position of track locates in which part
|
|
00034 { return m_status; }
|
|
00034 { return m_status; }
|
|
00032 { return m_trackId ; }
|
|
00032 { return m_trackId ; }
|
|
00035 { return m_type; }
|
|
00035 { return m_type; }
|
|
00065 { return m_vecHits ;}
|
|
00065 { return m_vecHits ;}
|
|
00050 { return m_xPos; } // position on the start of track in muc (vertex)
|
|
00050 { return m_xPos; } // position on the start of track in muc (vertex)
|
|
00054 { return m_xPosSigma; }
|
|
00054 { return m_xPosSigma; }
|
|
00051 { return m_yPos; }
|
|
00051 { return m_yPos; }
|
|
00055 { return m_yPosSigma; }
|
|
00055 { return m_yPosSigma; }
|
|
00052 { return m_zPos; }
|
|
00052 { return m_zPos; }
|
|
00056 { return m_zPosSigma; }
|
|
00056 { return m_zPosSigma; }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Reimplemented from DstMucTrack. |
|
Reimplemented from DstMucTrack. |
|
|
|
|
|
|
|
|
|
|
|
|