]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - HBTAN/AliHBTTrackPoints.cxx
Another portion of classes moved from HBTAN to ANALYSIS. HBTAN made working with...
[u/mrichter/AliRoot.git] / HBTAN / AliHBTTrackPoints.cxx
index 673aa8bb156812cbeb1a51333b9b6ba5daa5164d..469db3f11d416ece56bb6868bc0f654e0b51a048 100644 (file)
@@ -1,3 +1,4 @@
+#include "AliHBTTrackPoints.h"
 //_________________________________
 ////////////////////////////////////////////////////////////
 //                                                        //
 #include <TMath.h>
 
 #include "AliESDtrack.h"
-#include "AliHBTTrackPoints.h"
 #include "AliTPCtrack.h"
 #include "AliTrackReference.h"
+#include "AliITStrackV2.h"
 
 ClassImp(AliHBTTrackPoints)
 
 Int_t AliHBTTrackPoints::fgDebug = 0;
+
 AliHBTTrackPoints::AliHBTTrackPoints():
  fN(0),
  fX(0x0),
@@ -34,6 +36,31 @@ AliHBTTrackPoints::AliHBTTrackPoints():
 }
 /***************************************************************/
 
+AliHBTTrackPoints::AliHBTTrackPoints(AliHBTTrackPoints::ETypes type, AliESDtrack* track):
+ fN(0),
+ fX(0x0),
+ fY(0x0),
+ fZ(0x0)
+{
+  //constructor
+  switch (type)
+   {
+     case kITS:
+       //Used only in non-id analysis
+       fN = 6;
+       fX = new Float_t[fN];
+       fY = new Float_t[fN];
+       fZ = new Float_t[fN];
+       MakeITSPoints(track);
+       break;
+
+     default:
+       Info("AliHBTTrackPoints","Not recognized type");
+   }
+   
+}
+/***************************************************************/
+
 AliHBTTrackPoints::AliHBTTrackPoints(Int_t n, AliESDtrack* track, Float_t mf, Float_t dr, Float_t r0):
  fN(n),
  fX(new Float_t[fN]),
@@ -131,6 +158,16 @@ AliHBTTrackPoints::AliHBTTrackPoints(Int_t n, AliTPCtrack* track, Float_t dr, Fl
   Double_t c=track->GetC();
   MakePoints(dr,r0,x,par,c,alpha);
 }  
+/***************************************************************/
+
+AliHBTTrackPoints::~AliHBTTrackPoints()
+{
+  //destructor
+  delete [] fX;
+  delete [] fY;
+  delete [] fZ;
+}
+/***************************************************************/
 
 void AliHBTTrackPoints::MakePoints( Float_t dr, Float_t r0, Double_t x, Double_t* par, Double_t c, Double_t alpha)
 {
@@ -235,15 +272,26 @@ void AliHBTTrackPoints::MakePoints( Float_t dr, Float_t r0, Double_t x, Double_t
 }
 /***************************************************************/
 
-AliHBTTrackPoints::~AliHBTTrackPoints()
+void AliHBTTrackPoints::MakeITSPoints(AliESDtrack* track)
 {
-  //destructor
-  delete [] fX;
-  delete [] fY;
-  delete [] fZ;
+//Calculates points in ITS
+// z=R*Pz/Pt
+ AliITStrackV2 itstrack(*track,kTRUE);
+ Double_t x,y,z;
+ static const Double_t r[6] = {4.0, 7.0, 14.9, 23.8, 39.1, 43.6};
+ for (Int_t i = 0; i < 6; i++)
+  {
+    itstrack.GetGlobalXYZat(r[i],x,y,z);
+    fX[i] = x;
+    fY[i] = y;
+    fZ[i] = z;
+//    Info("MakeITSPoints","X %f Y %f Z %f R asked %f R obtained %f",
+//             fX[i],fY[i],fZ[i],r[i],TMath::Hypot(fX[i],fY[i]));
+  }   
 }
-/***************************************************************/
 
+/***************************************************************/
 void AliHBTTrackPoints::PositionAt(Int_t n, Float_t &x,Float_t &y,Float_t &z)
 {
   //returns position at point n
@@ -263,6 +311,18 @@ void AliHBTTrackPoints::PositionAt(Int_t n, Float_t &x,Float_t &y,Float_t &z)
 }
 /***************************************************************/
 
+void AliHBTTrackPoints::Move(Float_t x, Float_t y, Float_t z)
+{
+//Moves all points about vector
+ for (Int_t i = 0; i<fN; i++)
+   {
+     fX[i]+=x;
+     fY[i]+=y;
+     fZ[i]+=z;
+   }   
+}
+/***************************************************************/
+
 Double_t AliHBTTrackPoints::AvarageDistance(const AliHBTTrackPoints& tr)
 {
   //returns the aritmethic avarage distance between two tracks
@@ -585,3 +645,4 @@ void AliHBTTrackPoints::testtpc(Int_t entr)
   
   delete rl;
 }
+