fY(0),
fZ(0),
fCharge(0),
+ fDriftTime(0),
fSize(0),
fCov(0),
fVolumeID(0)
fY(new Float_t[npoints]),
fZ(new Float_t[npoints]),
fCharge(new Float_t[npoints]),
+ fDriftTime(new Float_t[npoints]),
fSize(6*npoints),
fCov(new Float_t[fSize]),
fVolumeID(new UShort_t[npoints])
fY[ip]=0;
fZ[ip]=0;
fCharge[ip]=0;
+ fDriftTime[ip]=0;
fVolumeID[ip]=0;
for (Int_t icov=0;icov<6; icov++)
fCov[6*ip+icov]=0;
fY(new Float_t[fNPoints]),
fZ(new Float_t[fNPoints]),
fCharge(new Float_t[fNPoints]),
+ fDriftTime(new Float_t[fNPoints]),
fSize(array.fSize),
fCov(new Float_t[fSize]),
fVolumeID(new UShort_t[fNPoints])
} else {
memset(fCharge, 0, fNPoints*sizeof(Float_t));
}
+ if (array.fDriftTime) {
+ memcpy(fDriftTime,array.fDriftTime,fNPoints*sizeof(Float_t));
+ } else {
+ memset(fDriftTime, 0, fNPoints*sizeof(Float_t));
+ }
memcpy(fVolumeID,array.fVolumeID,fNPoints*sizeof(UShort_t));
memcpy(fCov,array.fCov,fSize*sizeof(Float_t));
}
fZ = new Float_t[fNPoints];
delete [] fCharge;
fCharge = new Float_t[fNPoints];
+ delete [] fDriftTime;
+ fDriftTime = new Float_t[fNPoints];
delete [] fVolumeID;
fVolumeID = new UShort_t[fNPoints];
delete [] fCov;
memcpy(fY,array.fY,fNPoints*sizeof(Float_t));
memcpy(fZ,array.fZ,fNPoints*sizeof(Float_t));
memcpy(fCharge,array.fCharge,fNPoints*sizeof(Float_t));
+ memcpy(fDriftTime,array.fDriftTime,fNPoints*sizeof(Float_t));
memcpy(fVolumeID,array.fVolumeID,fNPoints*sizeof(UShort_t));
memcpy(fCov,array.fCov,fSize*sizeof(Float_t));
delete [] fY;
delete [] fZ;
delete [] fCharge;
+ delete [] fDriftTime;
delete [] fVolumeID;
delete [] fCov;
}
fY[i] = p->GetY();
fZ[i] = p->GetZ();
fCharge[i] = p->GetCharge();
+ fDriftTime[i] = p->GetDriftTime();
fVolumeID[i] = p->GetVolumeID();
memcpy(&fCov[6*i],p->GetCov(),6*sizeof(Float_t));
return kTRUE;
p.SetXYZ(fX[i],fY[i],fZ[i],&fCov[6*i]);
p.SetVolumeID(fVolumeID[i]);
p.SetCharge(fCharge[i]);
+ p.SetDriftTime(fDriftTime[i]);
return kTRUE;
}
fY(0),
fZ(0),
fCharge(0),
+ fDriftTime(0),
fVolumeID(0)
{
// Default constructor
//______________________________________________________________________________
-AliTrackPoint::AliTrackPoint(Float_t x, Float_t y, Float_t z, const Float_t *cov, UShort_t volid, Float_t charge) :
+AliTrackPoint::AliTrackPoint(Float_t x, Float_t y, Float_t z, const Float_t *cov, UShort_t volid, Float_t charge, Float_t drifttime) :
TObject(),
fX(0),
fY(0),
fZ(0),
fCharge(0),
+ fDriftTime(0),
fVolumeID(0)
{
// Constructor
//
SetXYZ(x,y,z,cov);
SetCharge(charge);
+ SetDriftTime(drifttime);
SetVolumeID(volid);
}
//______________________________________________________________________________
-AliTrackPoint::AliTrackPoint(const Float_t *xyz, const Float_t *cov, UShort_t volid, Float_t charge) :
+AliTrackPoint::AliTrackPoint(const Float_t *xyz, const Float_t *cov, UShort_t volid, Float_t charge, Float_t drifttime) :
TObject(),
fX(0),
fY(0),
fZ(0),
fCharge(0),
+ fDriftTime(0),
fVolumeID(0)
{
// Constructor
//
SetXYZ(xyz[0],xyz[1],xyz[2],cov);
SetCharge(charge);
+ SetDriftTime(drifttime);
SetVolumeID(volid);
}
fY(0),
fZ(0),
fCharge(0),
+ fDriftTime(0),
fVolumeID(0)
{
// Copy constructor
//
SetXYZ(p.fX,p.fY,p.fZ,&(p.fCov[0]));
SetCharge(p.fCharge);
+ SetDriftTime(p.fDriftTime);
SetVolumeID(p.fVolumeID);
}
SetXYZ(p.fX,p.fY,p.fZ,&(p.fCov[0]));
SetCharge(p.fCharge);
+ SetDriftTime(p.fDriftTime);
SetVolumeID(p.fVolumeID);
return *this;
printf("Y = %12.6f Ty = %12.6f%12.6f%12.6f\n", fY, fCov[1], fCov[3], fCov[4]);
printf("Z = %12.6f Tz = %12.6f%12.6f%12.6f\n", fZ, fCov[2], fCov[4], fCov[5]);
printf("Charge = %f\n", fCharge);
+ printf("Drift Time = %f\n", fDriftTime);
}
public:
AliTrackPoint();
- AliTrackPoint(Float_t x, Float_t y, Float_t z, const Float_t *cov, UShort_t volid, Float_t charge = 0);
- AliTrackPoint(const Float_t *xyz, const Float_t *cov, UShort_t volid, Float_t charge = 0);
+ AliTrackPoint(Float_t x, Float_t y, Float_t z, const Float_t *cov, UShort_t volid, Float_t charge = 0, Float_t drifttime = 0);
+ AliTrackPoint(const Float_t *xyz, const Float_t *cov, UShort_t volid, Float_t charge = 0, Float_t drifttime = 0);
AliTrackPoint(const AliTrackPoint &p);
AliTrackPoint& operator= (const AliTrackPoint& p);
virtual ~AliTrackPoint() {}
void SetXYZ(const Float_t *xyz, const Float_t *cov = 0);
void SetVolumeID(UShort_t volid) { fVolumeID = volid; }
void SetCharge(Float_t charge) { fCharge = charge; }
+ void SetDriftTime(Float_t time) { fDriftTime = time; }
Float_t GetX() const { return fX; }
Float_t GetY() const { return fY; }
const Float_t *GetCov() const { return &fCov[0]; }
UShort_t GetVolumeID() const { return fVolumeID; }
Float_t GetCharge() const { return fCharge; }
+ Float_t GetDriftTime() const { return fDriftTime;}
Float_t GetResidual(const AliTrackPoint &p, Bool_t weighted = kFALSE) const;
Bool_t GetPCA(const AliTrackPoint &p, AliTrackPoint &out) const;
Float_t fY; // Y coordinate
Float_t fZ; // Z coordinate
Float_t fCharge; // Cluster charge in arbitrary units
+ Float_t fDriftTime;// Drift time in SDD (in ns)
Float_t fCov[6]; // Cov matrix
UShort_t fVolumeID; // Volume ID
- ClassDef(AliTrackPoint,2)
+ ClassDef(AliTrackPoint,3)
};
//////////////////////////////////////////////////////////////////////////////
const Float_t* GetY() const { return &fY[0]; }
const Float_t* GetZ() const { return &fZ[0]; }
const Float_t* GetCharge() const { return &fCharge[0]; }
+ const Float_t* GetDriftTime() const { return &fDriftTime[0]; }
const Float_t* GetCov() const { return &fCov[0]; }
const UShort_t* GetVolumeID() const { return &fVolumeID[0]; }
Float_t *fY; //[fNPoints] Array with space point Y coordinates
Float_t *fZ; //[fNPoints] Array with space point Z coordinates
Float_t *fCharge; //[fNPoints] Array with clusters charge
+ Float_t *fDriftTime; //[fNPoints] Array with drift times
Int_t fSize; // Size of array with cov matrices = 6*N of points
Float_t *fCov; //[fSize] Array with space point coordinates cov matrix
UShort_t *fVolumeID; //[fNPoints] Array of space point volume IDs