Parameters of the ESD track at the vertex position (P.Skowronski)
authorhristov <hristov@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 12 Sep 2003 21:16:56 +0000 (21:16 +0000)
committerhristov <hristov@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 12 Sep 2003 21:16:56 +0000 (21:16 +0000)
STEER/AliESDtrack.cxx
STEER/AliESDtrack.h

index cbd6aa486ca864bf4e5ddf554934ad80b4b0e584..ff293650cf5a6fb3f86a5a7b80f5f316a5eecd94 100644 (file)
@@ -24,6 +24,7 @@
 
 #include "AliESDtrack.h"
 #include "AliKalmanTrack.h"
+#include "../ITS/AliITStrackV2.h"
 
 ClassImp(AliESDtrack)
 
@@ -31,7 +32,8 @@ ClassImp(AliESDtrack)
 AliESDtrack::AliESDtrack() : 
 fFlags(0), 
 fITSncls(0),
-fTPCncls(0)
+fTPCncls(0),
+fVertex(kFALSE)
 {
   //
   // The default ESD constructor 
@@ -56,17 +58,21 @@ Float_t AliESDtrack::GetMass() const {
 }
 
 //_______________________________________________________________________
-Bool_t AliESDtrack::UpdateTrackParams(const AliKalmanTrack *t, ULong_t flags) {
+Bool_t AliESDtrack::UpdateTrackParams(AliKalmanTrack *t, ULong_t flags) {
   //
   // This function updates track's running parameters 
   //
   switch (flags) {
-  case kITSin: case kITSout: case kITSrefit:
+    
+  case kITSin:
+  case kITSout: 
+  case kITSrefit:
     fITSncls=t->GetNumberOfClusters();
     fITSchi2=t->GetChi2();
     for (Int_t i=0;i<fITSncls;i++) fITSindex[i]=t->GetClusterIndex(i);
     fITSsignal=t->GetPIDsignal();
     break;
+    
   case kTPCin: case kTPCout: case kTPCrefit:
     fTPCncls=t->GetNumberOfClusters();
     fTPCchi2=t->GetChi2();
@@ -99,6 +105,35 @@ Bool_t AliESDtrack::UpdateTrackParams(const AliKalmanTrack *t, ULong_t flags) {
   fRalpha=t->GetAlpha();
   t->GetExternalParameters(fRx,fRp);
   t->GetExternalCovariance(fRc);
+  
+  if (flags == kITSin)
+   {
+     AliITStrackV2* itstrack = dynamic_cast<AliITStrackV2*>(t);
+     if (itstrack)
+      {
+        itstrack->PropagateTo(3.,0.0028,65.19);
+        itstrack->PropagateToVertex();
+        
+        Double_t ralpha=t->GetAlpha();
+        Double_t rx;      // X-coordinate of the track reference plane 
+        Double_t rp[5];   // external track parameters  
+        t->GetExternalParameters(rx,rp);
+   
+        Double_t phi=TMath::ASin(rp[2]) + ralpha;
+        Double_t pt=1./TMath::Abs(rp[4]);
+        Double_t r=TMath::Sqrt(rx*rx + rp[0]*rp[0]);
+        
+        fVertexX=r*TMath::Cos(phi); 
+        fVertexY=r*TMath::Sin(phi); 
+        fVertexZ=rp[1]; 
+        
+        fVertexPx = pt*TMath::Cos(phi); 
+        fVertexPy = pt*TMath::Sin(phi); 
+        fVertexPz = pt*rp[3]; 
+        fVertex = kTRUE;
+      }
+   }
+  
   return kTRUE;
 }
 
@@ -258,3 +293,17 @@ void AliESDtrack::GetESDpid(Double_t *p) const {
   for (Int_t i=0; i<kSPECIES; i++) p[i]=fR[i];
 }
 
+void AliESDtrack::GetVertexXYZ(Double_t& x,Double_t& y, Double_t&z) const
+{
+//returns track position in DCA to vertex  
+  x = fVertexX;
+  y = fVertexY;
+  z = fVertexZ;
+}
+void AliESDtrack::GetVertexPxPyPz(Double_t& px,Double_t& py, Double_t& pz) const
+{
+//returns track momentum in DCA to vertex  
+  px = fVertexPx;
+  py = fVertexPy;
+  pz = fVertexPz;
+}
index ca5ddf6a915b0995b9585a3192ef6e37f23426a0..53ca5e340bba204a009b8243401e268503f8db67 100644 (file)
@@ -19,7 +19,7 @@ public:
   virtual ~AliESDtrack() {}
   void SetStatus(ULong_t flags) {fFlags|=flags;}
   void ResetStatus(ULong_t flags) {fFlags&=~flags;}
-  Bool_t UpdateTrackParams(const AliKalmanTrack *t, ULong_t flags);
+  Bool_t UpdateTrackParams(AliKalmanTrack *t, ULong_t flags);
   void SetIntegratedLength(Double_t l) {fTrackLength=l;}
   void SetIntegratedTimes(const Double_t *times);
   void SetESDpid(const Double_t *p);
@@ -60,6 +60,10 @@ public:
   void    GetTOFpid(Double_t *p) const;
   UInt_t  GetTOFcluster() const {return fTOFindex;}
   void  SetTOFcluster(UInt_t index) {fTOFindex=index;}
+  
+  void  GetVertexXYZ(Double_t& x,Double_t& y, Double_t&z) const;
+  void  GetVertexPxPyPz(Double_t& px,Double_t& py, Double_t& pz) const;
+  Bool_t  HasVertexParameters() const {return fVertex;}
 
   enum {
     kITSin=0x0001,kITSout=0x0002,kITSrefit=0x0004,kITSpid=0x0008,
@@ -99,7 +103,17 @@ protected:
   UInt_t  fITSindex[6];    //! indices of the assigned ITS clusters
   Float_t fITSsignal;      // detector's PID signal
   Float_t fITSr[kSPECIES]; //! "detector response probabilities" (for the PID)
-
+  
+  Double_t fVertexX;
+  Double_t fVertexY;
+  Double_t fVertexZ;
+  
+  Double_t fVertexPx;
+  Double_t fVertexPy;
+  Double_t fVertexPz;
+  
+  Bool_t   fVertex;
+  
   // TPC related track information
   Float_t fTPCchi2;        // chi2 in the TPC
   Int_t   fTPCncls;        // number of clusters assigned in the TPC