Introducing a new AliVTrack class which will keep the features common for the ESD...
authorbelikov <belikov@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 24 Oct 2008 14:49:43 +0000 (14:49 +0000)
committerbelikov <belikov@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 24 Oct 2008 14:49:43 +0000 (14:49 +0000)
STEER/AliAODTrack.cxx
STEER/AliAODTrack.h
STEER/AliESDtrack.cxx
STEER/AliESDtrack.h
STEER/AliExternalTrackParam.cxx
STEER/AliExternalTrackParam.h
STEER/AliVTrack.cxx [new file with mode: 0644]
STEER/AliVTrack.h [new file with mode: 0644]
STEER/STEERBaseLinkDef.h
STEER/libSTEERBase.pkg

index 611dc62..6d3d47e 100644 (file)
@@ -16,7 +16,7 @@
 /* $Id$ */
 
 //-------------------------------------------------------------------------
-//     AOD track implementation of AliVParticle
+//     AOD track implementation of AliVTrack
 //     Author: Markus Oldenburg, CERN
 //     Markus.Oldenburg@cern.ch
 //-------------------------------------------------------------------------
@@ -28,7 +28,7 @@ ClassImp(AliAODTrack)
 
 //______________________________________________________________________________
 AliAODTrack::AliAODTrack() : 
-  AliVParticle(),
+  AliVTrack(),
   fChi2perNDF(-999.),
   fChi2MatchTrigger(0.),
   fFlags(0),
@@ -68,7 +68,7 @@ AliAODTrack::AliAODTrack(Short_t id,
                         AODTrk_t ttype,
                         UInt_t selectInfo,
                         Float_t chi2perNDF) :
-  AliVParticle(),
+  AliVTrack(),
   fChi2perNDF(chi2perNDF),
   fChi2MatchTrigger(0.),
   fFlags(0),
@@ -112,7 +112,7 @@ AliAODTrack::AliAODTrack(Short_t id,
                         AODTrk_t ttype,
                         UInt_t selectInfo,
                         Float_t chi2perNDF) :
-  AliVParticle(),
+  AliVTrack(),
   fChi2perNDF(chi2perNDF),
   fChi2MatchTrigger(0.),
   fFlags(0),
@@ -150,7 +150,7 @@ AliAODTrack::~AliAODTrack()
 
 //______________________________________________________________________________
 AliAODTrack::AliAODTrack(const AliAODTrack& trk) :
-  AliVParticle(trk),
+  AliVTrack(trk),
   fChi2perNDF(trk.fChi2perNDF),
   fChi2MatchTrigger(trk.fChi2MatchTrigger),
   fFlags(trk.fFlags),
@@ -183,7 +183,7 @@ AliAODTrack& AliAODTrack::operator=(const AliAODTrack& trk)
   // Assignment operator
   if(this!=&trk) {
 
-    AliVParticle::operator=(trk);
+    AliVTrack::operator=(trk);
 
     trk.GetP(fMomentum);
     trk.GetPosition(fPosition);
index c26ce17..769fb1e 100644 (file)
@@ -6,18 +6,18 @@
 /* $Id$ */
 
 //-------------------------------------------------------------------------
-//     AOD track implementation of AliVParticle
+//     AOD track implementation of AliVTrack
 //     Author: Markus Oldenburg, CERN
 //-------------------------------------------------------------------------
 
 #include <TRef.h>
 
-#include "AliVParticle.h"
+#include "AliVTrack.h"
 #include "AliAODVertex.h"
 #include "AliAODRedCov.h"
 #include "AliAODPid.h"
 
-class AliAODTrack : public AliVParticle {
+class AliAODTrack : public AliVTrack {
 
  public:
   
@@ -134,7 +134,7 @@ class AliAODTrack : public AliVParticle {
   ULong_t GetStatus() const { return GetFlags(); }
   ULong_t GetFlags() const { return fFlags; }
 
-  Short_t GetID() const { return fID; }
+  Int_t   GetID() const { return (Int_t)fID; }
   Int_t   GetLabel() const { return fLabel; } 
   Char_t  GetType() const { return fType;}
   Bool_t  IsPrimaryCandidate() const;
@@ -159,6 +159,9 @@ class AliAODTrack : public AliVParticle {
     if(!fCovMatrix) return kFALSE;
     fCovMatrix->GetCovMatrix(covMatrix); return kTRUE;}
 
+  Bool_t GetCovarianceXYZPxPyPz(Double_t cv[21]) const {
+    return GetCovMatrix(cv);}
+
   void RemoveCovMatrix() {delete fCovMatrix; fCovMatrix=NULL;}
 
   Double_t XAtDCA() const { return fPositionAtDCA[0]; }
index 4a7852e..8155e35 100644 (file)
 #include "AliESDVertex.h"
 #include "AliESDtrack.h"
 #include "AliKalmanTrack.h"
+#include "AliVTrack.h"
 #include "AliLog.h"
 #include "AliTrackPointArray.h"
 #include "TPolyMarker3D.h"
@@ -338,6 +339,108 @@ AliESDtrack::AliESDtrack(const AliESDtrack& track):
 }
 
 //_______________________________________________________________________
+AliESDtrack::AliESDtrack(const AliVTrack *track) : 
+  AliExternalTrackParam(track),
+  fCp(0),
+  fIp(0),
+  fTPCInner(0),
+  fOp(0),
+  fFriendTrack(0),
+  fTPCClusterMap(159),//number of padrows
+  fTPCSharedMap(159),//number of padrows
+  fFlags(0),
+  fID(),
+  fLabel(0),
+  fITSLabel(0),
+  fTPCLabel(0),
+  fTRDLabel(0),
+  fTOFCalChannel(0),
+  fTOFindex(-1),
+  fHMPIDqn(0),
+  fHMPIDcluIdx(0),
+  fEMCALindex(kEMCALNoMatch),
+  fHMPIDtrkTheta(0),
+  fHMPIDtrkPhi(0),
+  fHMPIDsignal(0),
+  fTrackLength(0),
+  fdTPC(0),fzTPC(0),
+  fCddTPC(0),fCdzTPC(0),fCzzTPC(0),
+  fCchi2TPC(0),
+  fD(0),fZ(0),
+  fCdd(0),fCdz(0),fCzz(0),
+  fCchi2(0),
+  fITSchi2(0),
+  fTPCchi2(0),
+  fTRDchi2(0),
+  fTOFchi2(0),
+  fHMPIDchi2(0),
+  fITSsignal(0),
+  fTPCsignal(0),
+  fTPCsignalS(0),
+  fTRDsignal(0),
+  fTRDQuality(0),
+  fTRDBudget(0),
+  fTOFsignal(0),
+  fTOFsignalToT(0),
+  fTOFsignalRaw(0),
+  fTOFsignalDz(0),
+  fHMPIDtrkX(0),
+  fHMPIDtrkY(0),
+  fHMPIDmipX(0),
+  fHMPIDmipY(0),
+  fTPCncls(0),
+  fTPCnclsF(0),
+  fTPCsignalN(0),
+  fITSncls(0),
+  fITSClusterMap(0),
+  fTRDncls(0),
+  fTRDncls0(0),
+  fTRDpidQuality(0),
+  fTRDnSlices(0),
+  fTRDslices(0x0)
+{
+  //
+  // ESD track from AliVTrack
+  //
+
+  // Reset all the arrays
+  Int_t i;
+  for (i=0; i<AliPID::kSPECIES; i++) {
+    fTrackTime[i]=0.;
+    fR[i]=0.;
+    fITSr[i]=0.;
+    fTPCr[i]=0.;
+    fTRDr[i]=0.;
+    fTOFr[i]=0.;
+    fHMPIDr[i]=0.;
+  }
+  
+  for (i=0; i<3; i++)   { fKinkIndexes[i]=0;}
+  for (i=0; i<3; i++)   { fV0Indexes[i]=-1;}
+  for (i=0;i<kTRDnPlanes;i++) {
+    fTRDTimBin[i]=0;
+  }
+  for (i=0;i<4;i++) {fTPCPoints[i]=0;}
+  for (i=0;i<3;i++) {fTOFLabel[i]=0;}
+  for (i=0;i<10;i++) {fTOFInfo[i]=0;}
+  for (i=0;i<12;i++) {fITSModule[i]=-1;}
+
+  // Set the ID
+  SetID(track->GetID());
+
+  // Set ITS cluster map
+  fITSClusterMap=track->GetITSClusterMap();
+
+  // Set the combined PID
+  const Double_t *pid = track->PID();
+  for (i=0; i<5; i++) fR[i]=pid[i];
+
+  // AliESD track label
+  SetLabel(track->GetLabel());
+
+}
+
+//_______________________________________________________________________
 AliESDtrack::AliESDtrack(TParticle * part) : 
   AliExternalTrackParam(),
   fCp(0),
index 4e33496..16ad158 100644 (file)
@@ -1,4 +1,3 @@
-
 #ifndef ALIESDTRACK_H
 #define ALIESDTRACK_H
 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
@@ -30,6 +29,7 @@
 
 #include <TBits.h>
 #include "AliExternalTrackParam.h"
+#include "AliVTrack.h"
 #include "AliPID.h"
 #include "AliESDfriendTrack.h"
 
@@ -59,6 +59,7 @@ public:
   };
   AliESDtrack();
   AliESDtrack(const AliESDtrack& track);
+  AliESDtrack(const AliVTrack* track);
   AliESDtrack(TParticle * part);
   virtual ~AliESDtrack();
   virtual void Copy(TObject &obj) const;
@@ -79,7 +80,8 @@ public:
   void SetIntegratedTimes(const Double_t *times);
   void SetESDpid(const Double_t *p);
   void GetESDpid(Double_t *p) const;
-  
+  const Double_t *PID() const { return fR; }
+
   Bool_t IsOn(Int_t mask) const {return (fFlags&mask)>0;}
   ULong_t GetStatus() const {return fFlags;}
   Int_t GetLabel() const {return fLabel;}
index 9e4c46c..79a9e0b 100644 (file)
@@ -38,7 +38,7 @@ Double32_t AliExternalTrackParam::fgMostProbablePt=kMostProbablePt;
  
 //_____________________________________________________________________________
 AliExternalTrackParam::AliExternalTrackParam() :
-  AliVParticle(),
+  AliVTrack(),
   fX(0),
   fAlpha(0)
 {
@@ -51,7 +51,7 @@ AliExternalTrackParam::AliExternalTrackParam() :
 
 //_____________________________________________________________________________
 AliExternalTrackParam::AliExternalTrackParam(const AliExternalTrackParam &track):
-  AliVParticle(track),
+  AliVTrack(track),
   fX(track.fX),
   fAlpha(track.fAlpha)
 {
@@ -70,7 +70,7 @@ AliExternalTrackParam& AliExternalTrackParam::operator=(const AliExternalTrackPa
   //
   
   if (this!=&trkPar) {
-    AliVParticle::operator=(trkPar);
+    AliVTrack::operator=(trkPar);
     fX = trkPar.fX;
     fAlpha = trkPar.fAlpha;
 
@@ -85,7 +85,7 @@ AliExternalTrackParam& AliExternalTrackParam::operator=(const AliExternalTrackPa
 AliExternalTrackParam::AliExternalTrackParam(Double_t x, Double_t alpha, 
                                             const Double_t param[5], 
                                             const Double_t covar[15]) :
-  AliVParticle(),
+  AliVTrack(),
   fX(x),
   fAlpha(alpha)
 {
@@ -97,13 +97,42 @@ AliExternalTrackParam::AliExternalTrackParam(Double_t x, Double_t alpha,
 }
 
 //_____________________________________________________________________________
+AliExternalTrackParam::AliExternalTrackParam(const AliVTrack *vTrack) :
+  AliVTrack(),
+  fX(0.),
+  fAlpha(0.)
+{
+  //
+  // constructor from virtual track
+  //
+  Double_t xyz[3]={vTrack->Xv(),vTrack->Yv(),vTrack->Zv()};
+  Double_t pxpypz[3]={vTrack->Px(),vTrack->Py(),vTrack->Pz()};
+  Double_t cv[21];
+  vTrack->GetCovarianceXYZPxPyPz(cv);
+  Short_t sign = (Short_t)vTrack->Charge();
+
+  Set(xyz,pxpypz,cv,sign);
+}
+
+//_____________________________________________________________________________
 AliExternalTrackParam::AliExternalTrackParam(Double_t xyz[3],Double_t pxpypz[3],
                                             Double_t cv[21],Short_t sign) :
-  AliVParticle(),
+  AliVTrack(),
   fX(0.),
   fAlpha(0.)
 {
   //
+  // constructor from the global parameters
+  //
+
+  Set(xyz,pxpypz,cv,sign);
+}
+
+//_____________________________________________________________________________
+void AliExternalTrackParam::Set(Double_t xyz[3],Double_t pxpypz[3],
+                               Double_t cv[21],Short_t sign) 
+{
+  //
   // create external track parameters from the global parameters
   // x,y,z,px,py,pz and their 6x6 covariance matrix
   // A.Dainese 10.10.08
@@ -174,6 +203,8 @@ AliExternalTrackParam::AliExternalTrackParam(Double_t xyz[3],Double_t pxpypz[3],
   fC[8 ] = (b4-b6*b1/b3)/(b5-b6*b2/b3);
   fC[13] = b1/b3-b2*fC[8]/b3;
   fC[9 ] = TMath::Abs((cv[20]-fC[14]*(m45*m45)-fC[13]*2.*m35*m45)/(m35*m35));
+
+  return;
 }
 
 //_____________________________________________________________________________
index 118954c..59582f2 100644 (file)
@@ -20,7 +20,7 @@
  *****************************************************************************/
 #include "TMath.h"
 
-#include "AliVParticle.h"
+#include "AliVTrack.h"
 
 const Double_t kVeryBig=1./kAlmost0;
 const Double_t kMostProbablePt=0.35;
@@ -30,19 +30,21 @@ Double_t ApproximateBetheBloch(Double_t);
 class AliVVertex;
 class TPolyMarker3D; 
 
-class AliExternalTrackParam: public AliVParticle {
+class AliExternalTrackParam: public AliVTrack {
  public:
   AliExternalTrackParam();
   AliExternalTrackParam(const AliExternalTrackParam &);
   AliExternalTrackParam& operator=(const AliExternalTrackParam & trkPar);
   AliExternalTrackParam(Double_t x, Double_t alpha, 
                        const Double_t param[5], const Double_t covar[15]);
+  AliExternalTrackParam(const AliVTrack *vTrack);
   AliExternalTrackParam(Double_t xyz[3],Double_t pxpypz[3],
                        Double_t cv[21],Short_t sign);
   virtual ~AliExternalTrackParam(){}
 
   void Set(Double_t x,Double_t alpha,
                        const Double_t param[5], const Double_t covar[15]);
+  void Set(Double_t xyz[3],Double_t pxpypz[3],Double_t cv[21],Short_t sign);
 
   static void SetMostProbablePt(Double_t pt) { fgMostProbablePt=pt; }
   static Double_t GetMostProbablePt() { return fgMostProbablePt; }
@@ -101,6 +103,11 @@ class AliExternalTrackParam: public AliVParticle {
   Short_t  Charge() const { return (Short_t)GetSign(); }
   const Double_t *PID() const { return 0x0; }
 
+  // additional functions from AliVTrack
+  virtual Int_t    GetID() const { return -999; }
+  virtual UChar_t  GetITSClusterMap() const {return 0; }
+  virtual ULong_t  GetStatus() const { return 0; }
+
   Double_t GetSign() const {return (fP[4]>0) ? 1 : -1;}
   Double_t GetP() const;
   Double_t GetSignedPt() const {
@@ -175,7 +182,7 @@ class AliExternalTrackParam: public AliVParticle {
 
   static Double32_t    fgMostProbablePt; // "Most probable" pt
                                          // (to be used if Bz=0)
-  ClassDef(AliExternalTrackParam, 7)
+  ClassDef(AliExternalTrackParam, 8)
 };
 
 inline void AliExternalTrackParam::ResetCovariance(Double_t s2) {
diff --git a/STEER/AliVTrack.cxx b/STEER/AliVTrack.cxx
new file mode 100644 (file)
index 0000000..f92e2b2
--- /dev/null
@@ -0,0 +1,36 @@
+/**************************************************************************
+ * Copyright(c) 1998-2008, ALICE Experiment at CERN, All rights reserved. *
+ *                                                                        *
+ * Author: The ALICE Off-line Project.                                    *
+ * Contributors are mentioned in the code where appropriate.              *
+ *                                                                        *
+ * Permission to use, copy, modify and distribute this software and its   *
+ * documentation strictly for non-commercial purposes is hereby granted   *
+ * without fee, provided that the above copyright notice appears in all   *
+ * copies and that both the copyright notice and this permission notice   *
+ * appear in the supporting documentation. The authors make no claims     *
+ * about the suitability of this software for any purpose. It is          *
+ * provided "as is" without express or implied warranty.                  *
+ **************************************************************************/
+
+
+//-------------------------------------------------------------------------
+//     base class for ESD and AOD tracks
+//     Author: A. Dainese
+//-------------------------------------------------------------------------
+
+#include "AliVTrack.h"
+
+ClassImp(AliVTrack)
+
+AliVTrack::AliVTrack(const AliVTrack& vTrack) :
+  AliVParticle(vTrack) { } // Copy constructor
+
+AliVTrack& AliVTrack::operator=(const AliVTrack& vTrack)
+{ if (this!=&vTrack) { 
+    AliVParticle::operator=(vTrack); 
+  }
+  
+  return *this; 
+}
+
diff --git a/STEER/AliVTrack.h b/STEER/AliVTrack.h
new file mode 100644 (file)
index 0000000..bab33a7
--- /dev/null
@@ -0,0 +1,32 @@
+#ifndef AliVTrack_H
+#define AliVTrack_H
+/* Copyright(c) 1998-2008, ALICE Experiment at CERN, All rights reserved. *
+ * See cxx source for full Copyright notice                               */
+
+
+//-------------------------------------------------------------------------
+//     base class for ESD and AOD tracks
+//     Author: A. Dainese
+//-------------------------------------------------------------------------
+
+#include "AliVParticle.h"
+
+
+class AliVTrack: public AliVParticle {
+
+public:
+  AliVTrack() { }
+  virtual ~AliVTrack() { }
+  AliVTrack(const AliVTrack& vTrack); 
+  AliVTrack& operator=(const AliVTrack& vTrack);
+
+  virtual Int_t    GetID() const = 0;
+  virtual UChar_t  GetITSClusterMap() const = 0;
+  virtual ULong_t  GetStatus() const = 0;
+  virtual Bool_t   GetCovarianceXYZPxPyPz(Double_t cv[21]) const = 0;
+  virtual Bool_t   PropagateTo(Double_t x, Double_t b) = 0;
+
+  ClassDef(AliVTrack,0)  // base class for tracks
+};
+
+#endif
index 0c6cf4c..dbf0fa0 100644 (file)
@@ -11,6 +11,7 @@
 #pragma link C++ enum   AliLog::EType_t;
  
 #pragma link C++ class AliVParticle+;
+#pragma link C++ class AliVTrack+;
 #pragma link C++ class AliVVertex+;
 #pragma link C++ class AliVEvent+;
 #pragma link C++ class AliVHeader+;
index eb8a2c5..ff1b79f 100644 (file)
@@ -1,6 +1,7 @@
 #-*- Mode: Makefile -*-
 
 SRCS = AliVParticle.cxx \
+       AliVTrack.cxx \
        AliVVertex.cxx \
        AliVEvent.cxx \
        AliVHeader.cxx \