/* $Id$ */
//-------------------------------------------------------------------------
-// AOD track implementation of AliVParticle
+// AOD track implementation of AliVTrack
// Author: Markus Oldenburg, CERN
// Markus.Oldenburg@cern.ch
//-------------------------------------------------------------------------
//______________________________________________________________________________
AliAODTrack::AliAODTrack() :
- AliVParticle(),
+ AliVTrack(),
fChi2perNDF(-999.),
fChi2MatchTrigger(0.),
fFlags(0),
AODTrk_t ttype,
UInt_t selectInfo,
Float_t chi2perNDF) :
- AliVParticle(),
+ AliVTrack(),
fChi2perNDF(chi2perNDF),
fChi2MatchTrigger(0.),
fFlags(0),
AODTrk_t ttype,
UInt_t selectInfo,
Float_t chi2perNDF) :
- AliVParticle(),
+ AliVTrack(),
fChi2perNDF(chi2perNDF),
fChi2MatchTrigger(0.),
fFlags(0),
//______________________________________________________________________________
AliAODTrack::AliAODTrack(const AliAODTrack& trk) :
- AliVParticle(trk),
+ AliVTrack(trk),
fChi2perNDF(trk.fChi2perNDF),
fChi2MatchTrigger(trk.fChi2MatchTrigger),
fFlags(trk.fFlags),
// Assignment operator
if(this!=&trk) {
- AliVParticle::operator=(trk);
+ AliVTrack::operator=(trk);
trk.GetP(fMomentum);
trk.GetPosition(fPosition);
/* $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:
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;
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]; }
#include "AliESDVertex.h"
#include "AliESDtrack.h"
#include "AliKalmanTrack.h"
+#include "AliVTrack.h"
#include "AliLog.h"
#include "AliTrackPointArray.h"
#include "TPolyMarker3D.h"
if (track.fFriendTrack) fFriendTrack=new AliESDfriendTrack(*(track.fFriendTrack));
}
+//_______________________________________________________________________
+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(),
-
#ifndef ALIESDTRACK_H
#define ALIESDTRACK_H
/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
#include <TBits.h>
#include "AliExternalTrackParam.h"
+#include "AliVTrack.h"
#include "AliPID.h"
#include "AliESDfriendTrack.h"
};
AliESDtrack();
AliESDtrack(const AliESDtrack& track);
+ AliESDtrack(const AliVTrack* track);
AliESDtrack(TParticle * part);
virtual ~AliESDtrack();
virtual void Copy(TObject &obj) const;
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;}
//_____________________________________________________________________________
AliExternalTrackParam::AliExternalTrackParam() :
- AliVParticle(),
+ AliVTrack(),
fX(0),
fAlpha(0)
{
//_____________________________________________________________________________
AliExternalTrackParam::AliExternalTrackParam(const AliExternalTrackParam &track):
- AliVParticle(track),
+ AliVTrack(track),
fX(track.fX),
fAlpha(track.fAlpha)
{
//
if (this!=&trkPar) {
- AliVParticle::operator=(trkPar);
+ AliVTrack::operator=(trkPar);
fX = trkPar.fX;
fAlpha = trkPar.fAlpha;
AliExternalTrackParam::AliExternalTrackParam(Double_t x, Double_t alpha,
const Double_t param[5],
const Double_t covar[15]) :
- AliVParticle(),
+ AliVTrack(),
fX(x),
fAlpha(alpha)
{
for (Int_t i = 0; i < 15; i++) fC[i] = covar[i];
}
+//_____________________________________________________________________________
+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
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;
}
//_____________________________________________________________________________
*****************************************************************************/
#include "TMath.h"
-#include "AliVParticle.h"
+#include "AliVTrack.h"
const Double_t kVeryBig=1./kAlmost0;
const Double_t kMostProbablePt=0.35;
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; }
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 {
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) {
--- /dev/null
+/**************************************************************************
+ * 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;
+}
+
--- /dev/null
+#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
#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+;
#-*- Mode: Makefile -*-
SRCS = AliVParticle.cxx \
+ AliVTrack.cxx \
AliVVertex.cxx \
AliVEvent.cxx \
AliVHeader.cxx \