the errors (in global coordinates) on the starting point of the
authorbelikov <belikov@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 19 Mar 2007 11:16:04 +0000 (11:16 +0000)
committerbelikov <belikov@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 19 Mar 2007 11:16:04 +0000 (11:16 +0000)
STEER/AliStrLine.cxx
STEER/AliStrLine.h

index 0e96d22..53fc94b 100644 (file)
@@ -39,6 +39,7 @@ AliStrLine::AliStrLine() :
   // Default constructor
   for(Int_t i=0;i<3;i++) {
     fP0[i] = 0.;
+    fSigma2P0[i] = 0.;
     fCd[i] = 0.;
   }
 }
@@ -55,6 +56,7 @@ AliStrLine::AliStrLine(Double_t *point, Double_t *cd,Bool_t twopoints) :
   // 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.;
   if(twopoints){
     InitTwoPoints(point,cd);
   }
@@ -80,6 +82,7 @@ AliStrLine::AliStrLine(Float_t *pointf, Float_t *cdf,Bool_t twopoints) :
   for(Int_t i=0;i<3;i++){
     point[i] = pointf[i];
     cd[i] = cdf[i];
+    fSigma2P0[i] = 0.;
   }
   if(twopoints){
     InitTwoPoints(point,cd);
@@ -90,6 +93,53 @@ AliStrLine::AliStrLine(Float_t *pointf, Float_t *cdf,Bool_t twopoints) :
 }
 
 //________________________________________________________
+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];
+  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];
+  }
+  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.;
@@ -131,6 +181,9 @@ void AliStrLine::PrintStatus() const {
   cout <<"Known point: ";
   for(Int_t i=0;i<3;i++)cout <<fP0[i]<<"; ";
   cout <<endl;
+  cout <<"Error on known point: ";
+  for(Int_t i=0;i<3;i++)cout <<TMath::Sqrt(fSigma2P0[i])<<"; ";
+  cout <<endl;
   cout <<"Current value for the parameter: "<<fTpar<<endl;
   cout <<" Debug flag: "<<fDebug<<endl;
 }
index 07e27a9..d70d884 100644 (file)
@@ -17,12 +17,16 @@ class AliStrLine : public TObject {
     AliStrLine();        // default constructor
     AliStrLine(Double_t *point, Double_t *cd, Bool_t twopoints=kFALSE);  // standard constructor
     AliStrLine(Float_t *pointf, Float_t *cdf, Bool_t twopoints=kFALSE); 
+    AliStrLine(Double_t *point, Double_t *sig2point, Double_t *cd, Bool_t twopoints=kFALSE);
+    AliStrLine(Float_t *pointf, Float_t *sig2point, Float_t *cdf, Bool_t twopoints=kFALSE); 
     virtual ~AliStrLine(); // destructor
     void PrintStatus() const;
     void SetP0(Double_t *point) {for(Int_t i=0;i<3;i++)fP0[i]=point[i];}
+    void SetSigma2P0(Double_t *sigsq) {for(Int_t i=0;i<3;i++)fSigma2P0[i]=sigsq[i];}
     void SetCd(Double_t *cd) {for(Int_t i=0;i<3;i++)fCd[i]=cd[i];}
     void SetDebug(Int_t dbfl = 0){fDebug = dbfl; }  
     void GetP0(Double_t *point) const {for(Int_t i=0;i<3;i++)point[i]=fP0[i];}
+    void GetSigma2P0(Double_t *sigsq) const {for(Int_t i=0;i<3;i++)sigsq[i]=fSigma2P0[i];}
     void GetCd(Double_t *cd) const {for(Int_t i=0;i<3;i++)cd[i]=fCd[i];}
     void GetCurrentPoint(Double_t *point) const;
     Int_t IsParallelTo(AliStrLine *line) const;
@@ -35,13 +39,14 @@ class AliStrLine : public TObject {
     void InitDirection(Double_t *point, Double_t *cd);
     void InitTwoPoints(Double_t *pA, Double_t *pB);
     Double_t fP0[3];           // given point
+    Double_t fSigma2P0[3];           // errors on coordinates of given point
     Double_t fCd[3];           // direction cosines
     Double_t fTpar;            //! parameter 
     Int_t   fDebug;           //! debug flag - verbose printing if >0
  private:
     void SetPar(Double_t par){fTpar = par;}
 
-  ClassDef(AliStrLine,1);
+  ClassDef(AliStrLine,2);
 };
 
 #endif