X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=STEER%2FAliStrLine.cxx;h=d551919fd8852d5c61c4eed73abb0b99d0224eee;hb=04cd9bcd360d53ac0d1772d679c603d51201ed54;hp=5a6ab1d65d4310d4f708d8063b8796ed1c946ad2;hpb=edc9798636361852c8bc83eb9ebc819ea275c132;p=u%2Fmrichter%2FAliRoot.git diff --git a/STEER/AliStrLine.cxx b/STEER/AliStrLine.cxx index 5a6ab1d65d4..d551919fd88 100644 --- a/STEER/AliStrLine.cxx +++ b/STEER/AliStrLine.cxx @@ -12,32 +12,196 @@ * about the suitability of this software for any purpose. It is * * provided "as is" without express or implied warranty. * **************************************************************************/ + +/* $Id$ */ + /////////////////////////////////////////////////////////////////// // // // A straight line is coded as a point (3 Double_t) and // // 3 direction cosines // // // /////////////////////////////////////////////////////////////////// + #include #include +#include + #include "AliStrLine.h" ClassImp(AliStrLine) //________________________________________________________ -AliStrLine::AliStrLine() { +AliStrLine::AliStrLine() : + TObject(), + fTpar(0), + fDebug(0) + { // Default constructor for(Int_t i=0;i<3;i++) { fP0[i] = 0.; + fSigma2P0[i] = 0.; fCd[i] = 0.; } - fTpar = 0.; - SetDebug(); + for(Int_t i=0;i<9;i++) fWMatrix[i] = 0.; +} + +//________________________________________________________ +AliStrLine::AliStrLine(Double_t *point, Double_t *cd,Bool_t twopoints) : + TObject(), + fTpar(0), + fDebug(0) +{ + // Standard constructor + // if twopoints is true: point and cd are the 3D coordinates of + // two points defininig the straight line + // if twopoint is false: point represents the 3D coordinates of a point + // belonging to the straight line and cd is the + // direction in space + for(Int_t i=0;i<3;i++){ + fSigma2P0[i] = 0.; + } + for(Int_t i=0;i<9;i++) fWMatrix[i] = 0.; + if(twopoints){ + InitTwoPoints(point,cd); + } + else { + InitDirection(point,cd); + } } //________________________________________________________ -AliStrLine::AliStrLine(Double_t *point, Double_t *cd) { +AliStrLine::AliStrLine(Float_t *pointf, Float_t *cdf,Bool_t twopoints) : + TObject(), + fTpar(0), + fDebug(0) +{ + // Standard constructor - with float arguments + // if twopoints is true: point and cd are the 3D coordinates of + // two points defininig the straight line + // if twopoint is false: point represents the 3D coordinates of a point + // belonging to the straight line and cd is the + // direction in space + Double_t point[3]; + Double_t cd[3]; + for(Int_t i=0;i<3;i++){ + point[i] = pointf[i]; + cd[i] = cdf[i]; + fSigma2P0[i] = 0.; + } + for(Int_t i=0;i<9;i++) fWMatrix[i] = 0.; + if(twopoints){ + InitTwoPoints(point,cd); + } + else { + InitDirection(point,cd); + } +} + +//________________________________________________________ +AliStrLine::AliStrLine(Double_t *point, Double_t *sig2point, Double_t *cd,Bool_t twopoints) : + TObject(), + fTpar(0), + fDebug(0) +{ // Standard constructor + // if twopoints is true: point and cd are the 3D coordinates of + // two points defininig the straight line + // if twopoint is false: point represents the 3D coordinates of a point + // belonging to the straight line and cd is the + // direction in space + for(Int_t i=0;i<3;i++){ + fSigma2P0[i] = sig2point[i]; + } + for(Int_t i=0;i<9;i++) fWMatrix[i] = 0.; + if(twopoints){ + InitTwoPoints(point,cd); + } + else { + InitDirection(point,cd); + } +} + +//________________________________________________________ +AliStrLine::AliStrLine(Float_t *pointf, Float_t *sig2point, Float_t *cdf,Bool_t twopoints) : + TObject(), + fTpar(0), + fDebug(0) +{ + // Standard constructor - with float arguments + // if twopoints is true: point and cd are the 3D coordinates of + // two points defininig the straight line + // if twopoint is false: point represents the 3D coordinates of a point + // belonging to the straight line and cd is the + // direction in space + Double_t point[3]; + Double_t cd[3]; + for(Int_t i=0;i<3;i++){ + point[i] = pointf[i]; + cd[i] = cdf[i]; + fSigma2P0[i] = sig2point[i]; + } + for(Int_t i=0;i<9;i++) fWMatrix[i] = 0.; + if(twopoints){ + InitTwoPoints(point,cd); + } + else { + InitDirection(point,cd); + } +} +//________________________________________________________ +AliStrLine::AliStrLine(Double_t *point, Double_t *sig2point, Double_t *wmat, Double_t *cd,Bool_t twopoints) : + TObject(), + fTpar(0), + fDebug(0) +{ + // Standard constructor + // if twopoints is true: point and cd are the 3D coordinates of + // two points defininig the straight line + // if twopoint is false: point represents the 3D coordinates of a point + // belonging to the straight line and cd is the + // direction in space + for(Int_t i=0;i<3;i++){ + fSigma2P0[i] = sig2point[i]; + } + for(Int_t i=0;i<9;i++) fWMatrix[i] = wmat[i]; + if(twopoints){ + InitTwoPoints(point,cd); + } + else { + InitDirection(point,cd); + } +} + +//________________________________________________________ +AliStrLine::AliStrLine(Float_t *pointf, Float_t *sig2point, Float_t *wmat, Float_t *cdf,Bool_t twopoints) : + TObject(), + fTpar(0), + fDebug(0) +{ + // Standard constructor - with float arguments + // if twopoints is true: point and cd are the 3D coordinates of + // two points defininig the straight line + // if twopoint is false: point represents the 3D coordinates of a point + // belonging to the straight line and cd is the + // direction in space + Double_t point[3]; + Double_t cd[3]; + for(Int_t i=0;i<3;i++){ + point[i] = pointf[i]; + cd[i] = cdf[i]; + fSigma2P0[i] = sig2point[i]; + } + for(Int_t i=0;i<9;i++) fWMatrix[i] = wmat[i]; + if(twopoints){ + InitTwoPoints(point,cd); + } + else { + InitDirection(point,cd); + } +} +//________________________________________________________ +void AliStrLine::InitDirection(Double_t *point, Double_t *cd){ + // Initialization from a point and a direction Double_t norm = 0.; for(Int_t i=0;i<3;i++)norm+=cd[i]*cd[i]; if(norm) { @@ -53,6 +217,15 @@ AliStrLine::AliStrLine(Double_t *point, Double_t *cd) { SetDebug(); } +//________________________________________________________ +void AliStrLine::InitTwoPoints(Double_t *pA, Double_t *pB){ + // Initialization from the coordinates of two + // points in the space + Double_t cd[3]; + for(Int_t i=0;i<3;i++)cd[i] = pB[i]-pA[i]; + InitDirection(pA,cd); +} + //________________________________________________________ AliStrLine::~AliStrLine() { // destructor @@ -68,6 +241,9 @@ void AliStrLine::PrintStatus() const { cout <<"Known point: "; for(Int_t i=0;i<3;i++)cout <GetDCA(&tmp); +}