From b7bcc8eda8f2d37d756fd770b617737383e6c0af Mon Sep 17 00:00:00 2001 From: cvetan Date: Wed, 3 Jun 2009 09:01:49 +0000 Subject: [PATCH] Adding the SSD charge ratio needed for the calibration of the detector (Marek) --- ITS/AliITStrackerMI.cxx | 2 ++ STEER/AliTrackPointArray.cxx | 28 ++++++++++++++++++++++++++-- STEER/AliTrackPointArray.h | 13 +++++++++---- 3 files changed, 37 insertions(+), 6 deletions(-) diff --git a/ITS/AliITStrackerMI.cxx b/ITS/AliITStrackerMI.cxx index 8b6e876f895..4abe88d2462 100644 --- a/ITS/AliITStrackerMI.cxx +++ b/ITS/AliITStrackerMI.cxx @@ -796,6 +796,7 @@ Bool_t AliITStrackerMI::GetTrackPoint(Int_t index, AliTrackPoint& p) const { p.SetXYZ(xyz, cov); p.SetCharge(cl->GetQ()); p.SetDriftTime(cl->GetDriftTime()); + p.SetChargeRatio(cl->GetChargeRatio()); AliGeomManager::ELayerID iLayer = AliGeomManager::kInvalidLayer; switch (l) { case 0: @@ -867,6 +868,7 @@ Bool_t AliITStrackerMI::GetTrackPointTrackingError(Int_t index, p.SetXYZ(xyz, cov); p.SetCharge(cl->GetQ()); p.SetDriftTime(cl->GetDriftTime()); + p.SetChargeRatio(cl->GetChargeRatio()); AliGeomManager::ELayerID iLayer = AliGeomManager::kInvalidLayer; switch (l) { diff --git a/STEER/AliTrackPointArray.cxx b/STEER/AliTrackPointArray.cxx index cb1ad556c8a..1bf1c0c33b1 100644 --- a/STEER/AliTrackPointArray.cxx +++ b/STEER/AliTrackPointArray.cxx @@ -42,6 +42,7 @@ AliTrackPointArray::AliTrackPointArray() : fZ(0), fCharge(0), fDriftTime(0), + fChargeRatio(0), fIsExtra(0), fSize(0), fCov(0), @@ -59,6 +60,7 @@ AliTrackPointArray::AliTrackPointArray(Int_t npoints): 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]), @@ -72,6 +74,7 @@ AliTrackPointArray::AliTrackPointArray(Int_t npoints): 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++) @@ -89,6 +92,7 @@ AliTrackPointArray::AliTrackPointArray(const AliTrackPointArray &array): 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]), @@ -109,6 +113,11 @@ AliTrackPointArray::AliTrackPointArray(const AliTrackPointArray &array): } 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 { @@ -139,6 +148,8 @@ AliTrackPointArray &AliTrackPointArray::operator =(const AliTrackPointArray& arr 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; @@ -150,6 +161,7 @@ AliTrackPointArray &AliTrackPointArray::operator =(const AliTrackPointArray& arr 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)); @@ -167,6 +179,7 @@ AliTrackPointArray::~AliTrackPointArray() delete [] fZ; delete [] fCharge; delete [] fDriftTime; + delete [] fChargeRatio; delete [] fIsExtra; delete [] fVolumeID; delete [] fCov; @@ -184,6 +197,7 @@ Bool_t AliTrackPointArray::AddPoint(Int_t i, const AliTrackPoint *p) 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)); @@ -201,6 +215,7 @@ Bool_t AliTrackPointArray::GetPoint(AliTrackPoint &p, Int_t i) const p.SetVolumeID(fVolumeID[i]); p.SetCharge(fCharge[i]); p.SetDriftTime(fDriftTime[i]); + p.SetChargeRatio(fChargeRatio[i]); p.SetExtra(fIsExtra ? fIsExtra[i] : kFALSE); return kTRUE; } @@ -251,6 +266,7 @@ AliTrackPoint::AliTrackPoint() : fZ(0), fCharge(0), fDriftTime(0), + fChargeRatio(0), fIsExtra(kFALSE), fVolumeID(0) { @@ -261,13 +277,14 @@ AliTrackPoint::AliTrackPoint() : //______________________________________________________________________________ -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) { @@ -276,17 +293,19 @@ AliTrackPoint::AliTrackPoint(Float_t x, Float_t y, Float_t z, const Float_t *cov 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) { @@ -295,6 +314,7 @@ AliTrackPoint::AliTrackPoint(const Float_t *xyz, const Float_t *cov, UShort_t vo SetXYZ(xyz[0],xyz[1],xyz[2],cov); SetCharge(charge); SetDriftTime(drifttime); + SetChargeRatio(chargeratio); SetVolumeID(volid); } @@ -306,6 +326,7 @@ AliTrackPoint::AliTrackPoint(const AliTrackPoint &p): fZ(0), fCharge(0), fDriftTime(0), + fChargeRatio(0), fIsExtra(kFALSE), fVolumeID(0) { @@ -314,6 +335,7 @@ AliTrackPoint::AliTrackPoint(const AliTrackPoint &p): 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); } @@ -329,6 +351,7 @@ AliTrackPoint &AliTrackPoint::operator =(const AliTrackPoint& p) 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); @@ -580,6 +603,7 @@ void AliTrackPoint::Print(Option_t *) const 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"); } diff --git a/STEER/AliTrackPointArray.h b/STEER/AliTrackPointArray.h index 4f1ff4ba36b..266f0af5879 100644 --- a/STEER/AliTrackPointArray.h +++ b/STEER/AliTrackPointArray.h @@ -21,8 +21,8 @@ class AliTrackPoint : public TObject { 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() {} @@ -34,6 +34,7 @@ class AliTrackPoint : public TObject { 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; } @@ -44,6 +45,7 @@ class AliTrackPoint : public TObject { 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; @@ -65,11 +67,12 @@ class AliTrackPoint : public TObject { 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) }; ////////////////////////////////////////////////////////////////////////////// @@ -103,6 +106,7 @@ class AliTrackPointArray : public TObject { 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]; } @@ -120,12 +124,13 @@ class AliTrackPointArray : public TObject { 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 -- 2.43.0