fZ(0),
fCharge(0),
fDriftTime(0),
+ fChargeRatio(0),
fIsExtra(0),
fSize(0),
fCov(0),
fZ(new Float_t[npoints]),
fCharge(new Float_t[npoints]),
fDriftTime(new Float_t[npoints]),
+ fChargeRatio(new Float_t[npoints]),
fIsExtra(new Bool_t[npoints]),
fSize(6*npoints),
fCov(new Float_t[fSize]),
fZ[ip]=0;
fCharge[ip]=0;
fDriftTime[ip]=0;
+ fChargeRatio[ip]=0;
fIsExtra[ip]=kFALSE;
fVolumeID[ip]=0;
for (Int_t icov=0;icov<6; icov++)
fZ(new Float_t[fNPoints]),
fCharge(new Float_t[fNPoints]),
fDriftTime(new Float_t[fNPoints]),
+ fChargeRatio(new Float_t[fNPoints]),
fIsExtra(new Bool_t[fNPoints]),
fSize(array.fSize),
fCov(new Float_t[fSize]),
} else {
memset(fDriftTime, 0, fNPoints*sizeof(Float_t));
}
+ if (array.fChargeRatio) {
+ memcpy(fChargeRatio,array.fChargeRatio,fNPoints*sizeof(Float_t));
+ } else {
+ memset(fChargeRatio, 0, fNPoints*sizeof(Float_t));
+ }
if (array.fIsExtra) {
memcpy(fIsExtra,array.fIsExtra,fNPoints*sizeof(Bool_t));
} else {
fCharge = new Float_t[fNPoints];
delete [] fDriftTime;
fDriftTime = new Float_t[fNPoints];
+ delete [] fChargeRatio;
+ fChargeRatio = new Float_t[fNPoints];
delete [] fIsExtra;
fIsExtra = new Bool_t[fNPoints];
delete [] fVolumeID;
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(fChargeRatio,array.fChargeRatio,fNPoints*sizeof(Float_t));
memcpy(fIsExtra,array.fIsExtra,fNPoints*sizeof(Bool_t));
memcpy(fVolumeID,array.fVolumeID,fNPoints*sizeof(UShort_t));
memcpy(fCov,array.fCov,fSize*sizeof(Float_t));
delete [] fZ;
delete [] fCharge;
delete [] fDriftTime;
+ delete [] fChargeRatio;
delete [] fIsExtra;
delete [] fVolumeID;
delete [] fCov;
fZ[i] = p->GetZ();
fCharge[i] = p->GetCharge();
fDriftTime[i] = p->GetDriftTime();
+ fChargeRatio[i]=p->GetChargeRatio();
fIsExtra[i] = p->IsExtra();
fVolumeID[i] = p->GetVolumeID();
memcpy(&fCov[6*i],p->GetCov(),6*sizeof(Float_t));
p.SetVolumeID(fVolumeID[i]);
p.SetCharge(fCharge[i]);
p.SetDriftTime(fDriftTime[i]);
+ p.SetChargeRatio(fChargeRatio[i]);
p.SetExtra(fIsExtra ? fIsExtra[i] : kFALSE);
return kTRUE;
}
fZ(0),
fCharge(0),
fDriftTime(0),
+ fChargeRatio(0),
fIsExtra(kFALSE),
fVolumeID(0)
{
//______________________________________________________________________________
-AliTrackPoint::AliTrackPoint(Float_t x, Float_t y, Float_t z, const Float_t *cov, UShort_t volid, Float_t charge, Float_t drifttime) :
+AliTrackPoint::AliTrackPoint(Float_t x, Float_t y, Float_t z, const Float_t *cov, UShort_t volid, Float_t charge, Float_t drifttime,Float_t chargeratio) :
TObject(),
fX(0),
fY(0),
fZ(0),
fCharge(0),
fDriftTime(0),
+ fChargeRatio(0),
fIsExtra(kFALSE),
fVolumeID(0)
{
SetXYZ(x,y,z,cov);
SetCharge(charge);
SetDriftTime(drifttime);
+ SetChargeRatio(chargeratio);
SetVolumeID(volid);
}
//______________________________________________________________________________
-AliTrackPoint::AliTrackPoint(const Float_t *xyz, const Float_t *cov, UShort_t volid, Float_t charge, Float_t drifttime) :
+AliTrackPoint::AliTrackPoint(const Float_t *xyz, const Float_t *cov, UShort_t volid, Float_t charge, Float_t drifttime,Float_t chargeratio) :
TObject(),
fX(0),
fY(0),
fZ(0),
fCharge(0),
fDriftTime(0),
+ fChargeRatio(0),
fIsExtra(kFALSE),
fVolumeID(0)
{
SetXYZ(xyz[0],xyz[1],xyz[2],cov);
SetCharge(charge);
SetDriftTime(drifttime);
+ SetChargeRatio(chargeratio);
SetVolumeID(volid);
}
fZ(0),
fCharge(0),
fDriftTime(0),
+ fChargeRatio(0),
fIsExtra(kFALSE),
fVolumeID(0)
{
SetXYZ(p.fX,p.fY,p.fZ,&(p.fCov[0]));
SetCharge(p.fCharge);
SetDriftTime(p.fDriftTime);
+ SetChargeRatio(p.fChargeRatio);
SetExtra(p.fIsExtra);
SetVolumeID(p.fVolumeID);
}
SetXYZ(p.fX,p.fY,p.fZ,&(p.fCov[0]));
SetCharge(p.fCharge);
SetDriftTime(p.fDriftTime);
+ SetChargeRatio(p.fChargeRatio);
SetExtra(p.fIsExtra);
SetVolumeID(p.fVolumeID);
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);
+ printf("Charge Ratio = %f\n", fChargeRatio);
if(fIsExtra) printf("This is an extra point\n");
}
public:
AliTrackPoint();
- 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(Float_t x, Float_t y, Float_t z, const Float_t *cov, UShort_t volid, Float_t charge = 0, Float_t drifttime = 0,Float_t chargeratio = 0);
+ AliTrackPoint(const Float_t *xyz, const Float_t *cov, UShort_t volid, Float_t charge = 0, Float_t drifttime = 0,Float_t chargeratio = 0);
AliTrackPoint(const AliTrackPoint &p);
AliTrackPoint& operator= (const AliTrackPoint& p);
virtual ~AliTrackPoint() {}
void SetVolumeID(UShort_t volid) { fVolumeID = volid; }
void SetCharge(Float_t charge) { fCharge = charge; }
void SetDriftTime(Float_t time) { fDriftTime = time; }
+ void SetChargeRatio(Float_t ratio) { fChargeRatio= ratio; }
void SetExtra(Bool_t flag=kTRUE) { fIsExtra = flag; }
Float_t GetX() const { return fX; }
UShort_t GetVolumeID() const { return fVolumeID; }
Float_t GetCharge() const { return fCharge; }
Float_t GetDriftTime() const { return fDriftTime;}
+ Float_t GetChargeRatio() const { return fChargeRatio;}
Bool_t IsExtra() const { return fIsExtra;}
Float_t GetResidual(const AliTrackPoint &p, Bool_t weighted = kFALSE) const;
Float_t fZ; // Z coordinate
Float_t fCharge; // Cluster charge in arbitrary units
Float_t fDriftTime;// Drift time in SDD (in ns)
+ Float_t fChargeRatio; // Charge ratio in SSD
Float_t fCov[6]; // Cov matrix
Bool_t fIsExtra; // attached by tracker but not used in fit
UShort_t fVolumeID; // Volume ID
- ClassDef(AliTrackPoint,5)
+ ClassDef(AliTrackPoint,6)
};
//////////////////////////////////////////////////////////////////////////////
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* GetChargeRatio() const { return &fChargeRatio[0]; }
const Bool_t* GetExtra() const { return &fIsExtra[0]; }
const Float_t* GetCov() const { return &fCov[0]; }
const UShort_t* GetVolumeID() const { return &fVolumeID[0]; }
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
+ Float_t *fChargeRatio; //[fNPoints] Array with charge ratio
Bool_t *fIsExtra; //[fNPoints] Array with extra flags
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
- ClassDef(AliTrackPointArray,5)
+ ClassDef(AliTrackPointArray,6)
};
#endif