fZ(0),
fCharge(0),
fDriftTime(0),
+ fIsExtra(0),
fSize(0),
fCov(0),
fVolumeID(0)
fZ(new Float_t[npoints]),
fCharge(new Float_t[npoints]),
fDriftTime(new Float_t[npoints]),
+ fIsExtra(new Bool_t[npoints]),
fSize(6*npoints),
fCov(new Float_t[fSize]),
fVolumeID(new UShort_t[npoints])
fZ[ip]=0;
fCharge[ip]=0;
fDriftTime[ip]=0;
+ fIsExtra[ip]=kFALSE;
fVolumeID[ip]=0;
for (Int_t icov=0;icov<6; icov++)
fCov[6*ip+icov]=0;
fZ(new Float_t[fNPoints]),
fCharge(new Float_t[fNPoints]),
fDriftTime(new Float_t[fNPoints]),
+ fIsExtra(new Bool_t[fNPoints]),
fSize(array.fSize),
fCov(new Float_t[fSize]),
fVolumeID(new UShort_t[fNPoints])
} else {
memset(fDriftTime, 0, fNPoints*sizeof(Float_t));
}
+ if (array.fIsExtra) {
+ memcpy(fIsExtra,array.fIsExtra,fNPoints*sizeof(Bool_t));
+ } else {
+ memset(fIsExtra, 0, fNPoints*sizeof(Bool_t));
+ }
memcpy(fVolumeID,array.fVolumeID,fNPoints*sizeof(UShort_t));
memcpy(fCov,array.fCov,fSize*sizeof(Float_t));
}
fCharge = new Float_t[fNPoints];
delete [] fDriftTime;
fDriftTime = new Float_t[fNPoints];
+ delete [] fIsExtra;
+ fIsExtra = new Bool_t[fNPoints];
delete [] fVolumeID;
fVolumeID = new UShort_t[fNPoints];
delete [] fCov;
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(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 [] fIsExtra;
delete [] fVolumeID;
delete [] fCov;
}
fZ[i] = p->GetZ();
fCharge[i] = p->GetCharge();
fDriftTime[i] = p->GetDriftTime();
+ fIsExtra[i] = p->IsExtra();
fVolumeID[i] = p->GetVolumeID();
memcpy(&fCov[6*i],p->GetCov(),6*sizeof(Float_t));
return kTRUE;
p.SetVolumeID(fVolumeID[i]);
p.SetCharge(fCharge[i]);
p.SetDriftTime(fDriftTime[i]);
+ p.SetExtra(fIsExtra[i]);
return kTRUE;
}
fZ(0),
fCharge(0),
fDriftTime(0),
+ fIsExtra(kFALSE),
fVolumeID(0)
{
// Default constructor
fZ(0),
fCharge(0),
fDriftTime(0),
+ fIsExtra(kFALSE),
fVolumeID(0)
{
// Constructor
fZ(0),
fCharge(0),
fDriftTime(0),
+ fIsExtra(kFALSE),
fVolumeID(0)
{
// Constructor
fZ(0),
fCharge(0),
fDriftTime(0),
+ fIsExtra(kFALSE),
fVolumeID(0)
{
// Copy constructor
SetXYZ(p.fX,p.fY,p.fZ,&(p.fCov[0]));
SetCharge(p.fCharge);
SetDriftTime(p.fDriftTime);
+ SetExtra(p.fIsExtra);
SetVolumeID(p.fVolumeID);
}
SetXYZ(p.fX,p.fY,p.fZ,&(p.fCov[0]));
SetCharge(p.fCharge);
SetDriftTime(p.fDriftTime);
+ SetExtra(p.fIsExtra);
SetVolumeID(p.fVolumeID);
return *this;
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);
+ if(fIsExtra) printf("This is an extra point\n");
}
}
+
void SetVolumeID(UShort_t volid) { fVolumeID = volid; }
void SetCharge(Float_t charge) { fCharge = charge; }
void SetDriftTime(Float_t time) { fDriftTime = time; }
+ void SetExtra(Bool_t flag=kTRUE) { fIsExtra = flag; }
Float_t GetX() const { return fX; }
Float_t GetY() const { return fY; }
UShort_t GetVolumeID() const { return fVolumeID; }
Float_t GetCharge() const { return fCharge; }
Float_t GetDriftTime() const { return fDriftTime;}
+ Bool_t IsExtra() const { return fIsExtra;}
Float_t GetResidual(const AliTrackPoint &p, Bool_t weighted = kFALSE) const;
Bool_t GetPCA(const AliTrackPoint &p, AliTrackPoint &out) const;
Float_t fCharge; // Cluster charge in arbitrary units
Float_t fDriftTime;// Drift time in SDD (in ns)
Float_t fCov[6]; // Cov matrix
+ Bool_t fIsExtra; // attached by tracker but not used in fit
UShort_t fVolumeID; // Volume ID
- ClassDef(AliTrackPoint,4)
+ ClassDef(AliTrackPoint,5)
};
//////////////////////////////////////////////////////////////////////////////
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 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
+ 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,4)
+ ClassDef(AliTrackPointArray,5)
};
#endif
+