9 fCenPosition(TVector3(0,0,0)),
10 fRotationMatrix(TMatrixT<double>(3,3)),
33 fTubeParms(tube.GetTubeParameters()),
35 fRotationMatrix(TMatrixT<double>(3,3)),
36 fRadIn(tube.GetRadIn()),
37 fRadOut(tube.GetRadOut()),
38 fSectorID(tube.GetSectorID()),
39 fLayerID(tube.GetLayerID()),
40 fLayerLimit(tube.IsLayerLimit()),
41 fSectorLimit(tube.IsSectorLimit())
54 fCenPosition(TVector3(x,y,z)),
55 fRotationMatrix(TMatrixT<double>(3,3)),
146 for(
int itube = 0; itube <
fNeighborings.GetSize(); itube++) {
161 double distance = -1;
167 distance =
fabs((tubeextr1 - extr1).Dot((extr2 - extr1).Cross(tubeextr2 - tubeextr1)))/((extr2 - extr1).Cross(tubeextr2 - tubeextr1)).Mag();
169 double s = (( (extr2 - extr1).Dot(tubeextr2 - tubeextr1)) * ( (tubeextr2 - tubeextr1).Dot(extr1 - tubeextr1)) - ( (tubeextr2 - tubeextr1).Dot(tubeextr2 - tubeextr1)) * ( (extr2 - extr1).Dot(extr1 - tubeextr1))) / (((extr2 - extr1).Dot(extr2 - extr1)) * ((tubeextr2 - tubeextr1).Dot(tubeextr2 - tubeextr1)) - ( (extr2 - extr1).Dot(tubeextr2 - tubeextr1)) *( (extr2 - extr1).Dot(tubeextr2 - tubeextr1)) );
170 double t = (( (extr2 - extr1).Dot(extr2 - extr1)) * ( (tubeextr2 - tubeextr1).Dot(extr1 - tubeextr1)) - ( (extr2 - extr1).Dot(tubeextr2 - tubeextr1)) * ( (extr2 - extr1).Dot(extr1 - tubeextr1)) )/ (((extr2 - extr1).Dot(extr2 - extr1)) * ((tubeextr2 - tubeextr1).Dot(tubeextr2 - tubeextr1)) - ( (extr2 - extr1).Dot(tubeextr2 - tubeextr1)) *( (extr2 - extr1).Dot(tubeextr2 - tubeextr1)) );
172 TVector3 point1 = extr1 + s * (extr2 - extr1);
173 TVector3 point2 = tubeextr1 + t * (tubeextr2 - tubeextr1);
179 if(point1.Z() < extr1.Z() || point1.Z() > extr2.Z()|| point2.Z() < tubeextr1.Z() || point2.Z() > tubeextr2.Z()) {
181 distance = (extr1 - tubeextr1).Mag() < (extr2 - tubeextr2).Mag() ? (extr1 - tubeextr1).Mag() : (extr2 - tubeextr2).Mag();
Double_t GetDistance(PndSttTube *tube)
void SetNeighborings(TArrayI neighborings)
PndSttTubeParameters * GetTubeParameters()
Bool_t IsNeighboring(int tubeID)
TArrayI GetNeighborings()
friend F32vec4 fabs(const F32vec4 &a)
TMatrixT< double > fRotationMatrix
PndSttTubeParameters * fTubeParms
Int_t GetNeighboring(int i)
cout<<"the mcX, mcY, mcZ are "<< mcX<<","<< mcY<<","<< mcZ<< endl;vecmc.SetXYZ(mcX, mcY, mcZ);vecrc=hit-> GetPosition()
TMatrixT< Double_t > GetRotationMatrix()
TVector3 GetWireDirection()