From 6984f7c1fd9fc774da1ae7db8d4635d37a02037b Mon Sep 17 00:00:00 2001 From: hristov Date: Fri, 9 May 2008 16:23:46 +0000 Subject: [PATCH] New representation of the raw TRD PID signal in ESD (Alex, Yuri) --- STEER/AliESDtrack.cxx | 121 ++++++++++++++++++----- STEER/AliESDtrack.h | 59 +++++------ TRD/AliTRDQADataMakerRec.cxx | 2 +- TRD/AliTRDpidESD.cxx | 4 +- TRD/AliTRDtrack.cxx | 23 +++-- TRD/AliTRDtrack.h | 4 +- TRD/AliTRDtrackV1.cxx | 37 +++---- TRD/AliTRDtracker.cxx | 31 +++--- TRD/Cal/AliTRDCalPIDRefMaker.cxx | 4 +- TRD/qaAnalysis/AliTRDqaEnergyDeposit.cxx | 2 +- 10 files changed, 179 insertions(+), 108 deletions(-) diff --git a/STEER/AliESDtrack.cxx b/STEER/AliESDtrack.cxx index 2c0644a71a9..516694d947b 100644 --- a/STEER/AliESDtrack.cxx +++ b/STEER/AliESDtrack.cxx @@ -113,12 +113,15 @@ AliESDtrack::AliESDtrack() : fITSClusterMap(0), fTRDncls(0), fTRDncls0(0), - fTRDpidQuality(0) + fTRDpidQuality(0), + fTRDnSlices(0), + fTRDslices(0x0) + { // // The default ESD constructor // - Int_t i, j; + Int_t i; for (i=0; i=kTRDnPlanes)) { + AliError("Wrong TRD plane !"); + return; + } + if ((slice<0) || (slice>=ns)) { + AliError("Wrong TRD slice !"); + return; + } + Int_t n=plane*ns + slice; + fTRDslices[n]=q; +} + +Double_t AliESDtrack::GetTRDslice(Int_t plane, Int_t slice) const { + //Gets the charge from the slice of the plane + Int_t ns=GetNumberOfTRDslices(); + if (ns==0) { + //AliError("No TRD slices allocated for this track !"); + return -1.; + } + + if ((plane<0) || (plane>=kTRDnPlanes)) { + AliError("Wrong TRD plane !"); + return -1.; + } + if ((slice<-1) || (slice>=ns)) { + //AliError("Wrong TRD slice !"); + return -1.; + } + + if (slice==-1) { + Double_t q=0.; + for (Int_t i=0; iGetTRDsignals(j, i-1); + dedx += track->GetTRDslice(j, i-1); } GetESDsData(41+i)->Fill(paramOut->GetP(), dedx/6.); } diff --git a/TRD/AliTRDpidESD.cxx b/TRD/AliTRDpidESD.cxx index a7935c3ddb5..cef2adcdf62 100644 --- a/TRD/AliTRDpidESD.cxx +++ b/TRD/AliTRDpidESD.cxx @@ -168,8 +168,8 @@ Int_t AliTRDpidESD::MakePID(AliESDEvent *event) for (Int_t iPlan = 0; iPlan < AliTRDgeometry::kNplan; iPlan++) { // read data for track segment for(int iSlice=0; iSliceGetTRDsignals(iPlan, iSlice); - dEdx = t->GetTRDsignals(iPlan, -1); + dedx[iSlice] = t->GetTRDslice(iPlan, iSlice); + dEdx = t->GetTRDslice(iPlan, -1); timebin = t->GetTRDTimBin(iPlan); // check data diff --git a/TRD/AliTRDtrack.cxx b/TRD/AliTRDtrack.cxx index 66b2aa95dc4..3d1c4c70589 100644 --- a/TRD/AliTRDtrack.cxx +++ b/TRD/AliTRDtrack.cxx @@ -18,7 +18,6 @@ #include #include "AliTracker.h" -#include "AliESDtrack.h" #include "AliTRDgeometry.h" #include "AliTRDcluster.h" @@ -335,7 +334,7 @@ AliTRDtrack::AliTRDtrack(const AliESDtrack &t) for (Int_t i = 0; i < kNplane; i++) { for (Int_t j = 0; j < kNslice; j++) { - fdEdxPlane[i][j] = t.GetTRDsignals(i,j); + fdEdxPlane[i][j] = t.GetTRDslice(i,j); } fTimBinPlane[i] = t.GetTRDTimBin(i); fMom[i] = -1.; @@ -491,9 +490,9 @@ void AliTRDtrack::CookdEdxTimBin(const Int_t/* tid*/) // // Max charge in chamber - Double_t maxcharge[AliESDtrack::kNPlane]; + Double_t maxcharge[kNplane]; // Number of clusters attached to track per chamber and slice - Int_t nCluster[AliESDtrack::kNPlane][AliESDtrack::kNSlice]; + Int_t nCluster[kNplane][kNslice]; // Number of time bins in chamber Int_t ntb = AliTRDcalibDB::Instance()->GetNumberOfTimeBins(); Int_t plane; // Plane of current cluster @@ -502,10 +501,10 @@ void AliTRDtrack::CookdEdxTimBin(const Int_t/* tid*/) AliTRDcluster *cluster = 0x0; // Pointer to current cluster // Reset class and local counters/variables - for (Int_t iPlane = 0; iPlane < AliESDtrack::kNPlane; iPlane++) { + for (Int_t iPlane = 0; iPlane < kNplane; iPlane++) { fTimBinPlane[iPlane] = -1; maxcharge[iPlane] = 0.0; - for (Int_t iSlice = 0; iSlice < AliESDtrack::kNSlice; iSlice++) { + for (Int_t iSlice = 0; iSlice < kNslice; iSlice++) { fdEdxPlane[iPlane][iSlice] = 0.0; nCluster[iPlane][iSlice] = 0; } @@ -519,7 +518,7 @@ void AliTRDtrack::CookdEdxTimBin(const Int_t/* tid*/) // Read info from current cluster plane = AliTRDgeometry::GetPlane(cluster->GetDetector()); - if (plane < 0 || plane >= AliESDtrack::kNPlane) { + if (plane < 0 || plane >= kNplane) { AliError(Form("Wrong plane %d", plane)); continue; } @@ -531,7 +530,7 @@ void AliTRDtrack::CookdEdxTimBin(const Int_t/* tid*/) continue; } - slice = tb * AliESDtrack::kNSlice / ntb; + slice = tb * kNslice / ntb; fdEdxPlane[plane][slice] += fdQdl[iClus]; if (fdQdl[iClus] > maxcharge[plane]) { @@ -544,8 +543,8 @@ void AliTRDtrack::CookdEdxTimBin(const Int_t/* tid*/) } // End of loop over cluster // Normalize fdEdxPlane to number of clusters and set track segments - for (Int_t iPlane = 0; iPlane < AliESDtrack::kNPlane; iPlane++) { - for (Int_t iSlice = 0; iSlice < AliESDtrack::kNSlice; iSlice++) { + for (Int_t iPlane = 0; iPlane < kNplane; iPlane++) { + for (Int_t iSlice = 0; iSlice < kNslice; iSlice++) { if (nCluster[iPlane][iSlice]) { fdEdxPlane[iPlane][iSlice] /= nCluster[iPlane][iSlice]; } @@ -572,7 +571,7 @@ void AliTRDtrack::CookdEdxNN(Float_t *dedx) const Int_t kMLPscale = 16000; // scaling of the MLP input to be smaller than 1 // Reset class and local contors/variables - for (Int_t iPlane = 0; iPlane < AliESDtrack::kNPlane; iPlane++){ + for (Int_t iPlane = 0; iPlane < kNplane; iPlane++){ for (Int_t iSlice = 0; iSlice < kNMLPslice; iSlice++) { *(dedx + (kNMLPslice * iPlane) + iSlice) = 0.0; } @@ -588,7 +587,7 @@ void AliTRDtrack::CookdEdxNN(Float_t *dedx) // Read info from current cluster plane = AliTRDgeometry::GetPlane(cluster->GetDetector()); - if (plane < 0 || plane >= AliESDtrack::kNPlane) { + if (plane < 0 || plane >= kNplane) { AliError(Form("Wrong plane %d",plane)); continue; } diff --git a/TRD/AliTRDtrack.h b/TRD/AliTRDtrack.h index 8feeb170317..e5bd051889c 100644 --- a/TRD/AliTRDtrack.h +++ b/TRD/AliTRDtrack.h @@ -12,6 +12,7 @@ // // /////////////////////////////////////////////////////////////////////////////// +#include "AliESDtrack.h" #include "AliKalmanTrack.h" #include "AliTRDtracklet.h" @@ -20,7 +21,6 @@ #include "AliTRDseedV1.h" #endif -class AliESDtrack; class AliTrackReference; class AliTRDcluster; class AliTRDtrack : public AliKalmanTrack { @@ -31,7 +31,7 @@ class AliTRDtrack : public AliKalmanTrack { enum { kNdet = 540 , kNstacks = 90 - , kNplane = 6 + , kNplane = AliESDtrack::kTRDnPlanes , kNcham = 5 , kNsect = 18 , kNslice = 3 diff --git a/TRD/AliTRDtrackV1.cxx b/TRD/AliTRDtrackV1.cxx index 637305383a3..dacf6535ce4 100644 --- a/TRD/AliTRDtrackV1.cxx +++ b/TRD/AliTRDtrackV1.cxx @@ -158,7 +158,7 @@ Bool_t AliTRDtrackV1::CookLabel(Float_t wrong) Bool_t labelAdded; Int_t label; AliTRDcluster *c = 0x0; - for (Int_t ip = 0; ip < AliESDtrack::kNPlane; ip++) { + for (Int_t ip = 0; ip < AliESDtrack::kTRDnPlanes; ip++) { if(fTrackletIndex[ip] < 0) continue; for (Int_t ic = 0; ic < AliTRDseed::knTimebins; ic++) { if(!(c = fTracklet[ip].GetClusters(ic))) continue; @@ -215,7 +215,7 @@ Bool_t AliTRDtrackV1::CookPID() // steer PID calculation @ tracklet level Double_t *prob = 0x0; fPIDquality = 0; - for(int itrklt=0; itrklt= AliESDtrack::kNPlane) return; + if(plane < 0 || plane >= AliESDtrack::kTRDnPlanes) return; fTracklet[plane] = (*trklt); fTrackletIndex[plane] = index; } @@ -391,20 +391,21 @@ Bool_t AliTRDtrackV1::Update(AliTRDseedV1 *trklt, Double_t chisq) void AliTRDtrackV1::UpdateESDtrack(AliESDtrack *track) { // - // Update the ESD track + // Update the TRD PID information in the ESD track // + + track->SetNumberOfTRDslices(kNslice); - // copy dEdx to ESD - Float_t *dedx = 0x0; - for (Int_t ip = 0; ip < AliESDtrack::kNPlane; ip++) { - if(fTrackletIndex[ip] < 0) continue; - fTracklet[ip].CookdEdx(AliESDtrack::kNSlice); - dedx = fTracklet[ip].GetdEdx(); - for (Int_t js = 0; js < AliESDtrack::kNSlice; js++) track->SetTRDsignals(dedx[js], ip, js); - //track->SetTRDTimBin(fTimBinPlane[i], i); - } + for (Int_t ip = 0; ip < kNplane; ip++) { + if(fTrackletIndex[ip] < 0) continue; + fTracklet[ip].CookdEdx(kNslice); + Float_t *dedx = fTracklet[ip].GetdEdx(); + for (Int_t js = 0; js < kNslice; js++) { + track->SetTRDslice(dedx[js], ip, js); + } + } - // copy PID to ESD - track->SetTRDpid(fPID); - track->SetTRDpidQuality(fPIDquality); + // copy PID to ESD + track->SetTRDpid(fPID); + track->SetTRDpidQuality(fPIDquality); } diff --git a/TRD/AliTRDtracker.cxx b/TRD/AliTRDtracker.cxx index 6894c261568..cdd6b01642b 100644 --- a/TRD/AliTRDtracker.cxx +++ b/TRD/AliTRDtracker.cxx @@ -22,7 +22,6 @@ // // // Authors: // // M. Ivanov (Marian.Ivanov@cern.ch) // -// Y. Belikov (Jouri.Belikov@cern.ch) // // // /////////////////////////////////////////////////////////////////////////////// @@ -598,9 +597,9 @@ Int_t AliTRDtracker::PropagateBack(AliESDEvent *event) seed->UpdateTrackParams(track,AliESDtrack::kTRDout); fHBackfit->Fill(10); - for (Int_t i = 0; i < AliESDtrack::kNPlane; i++) { - for (Int_t j = 0; j < AliESDtrack::kNSlice; j++) { - seed->SetTRDsignals(track->GetPIDsignals(i,j),i,j); + for (Int_t i = 0; i < AliTRDtrack::kNplane; i++) { + for (Int_t j = 0; j < AliTRDtrack::kNslice; j++) { + seed->SetTRDslice(track->GetPIDsignals(i,j),i,j); } seed->SetTRDTimBin(track->GetPIDTimBin(i),i); } @@ -620,9 +619,9 @@ Int_t AliTRDtracker::PropagateBack(AliESDEvent *event) fHBackfit->Fill(13); //seed->SetStatus(AliESDtrack::kTRDStop); - for (Int_t i = 0; i < AliESDtrack::kNPlane; i++) { - for (Int_t j = 0; j SetTRDsignals(track->GetPIDsignals(i,j),i,j); + for (Int_t i = 0; i < AliTRDtrack::kNplane; i++) { + for (Int_t j = 0; j SetTRDslice(track->GetPIDsignals(i,j),i,j); } seed->SetTRDTimBin(track->GetPIDTimBin(i),i); } @@ -707,8 +706,8 @@ Int_t AliTRDtracker::RefitInward(AliESDEvent *event) AliTRDtrack *pt = new AliTRDtrack(seed2,seed2.GetAlpha()); Int_t *indexes2 = seed2.GetIndexes(); - for (Int_t i = 0; i < AliESDtrack::kNPlane;i++) { - for (Int_t j = 0; j < AliESDtrack::kNSlice;j++) { + for (Int_t i = 0; i < AliTRDtrack::kNplane;i++) { + for (Int_t j = 0; j < AliTRDtrack::kNslice;j++) { pt->SetPIDsignals(seed2.GetPIDsignals(i,j),i,j); } pt->SetPIDTimBin(seed2.GetPIDTimBin(i),i); @@ -736,9 +735,9 @@ Int_t AliTRDtracker::RefitInward(AliESDEvent *event) seed->UpdateTrackParams(pt,AliESDtrack::kTRDrefit); fHRefit->Fill(5); - for (Int_t i = 0; i < AliESDtrack::kNPlane; i++) { - for (Int_t j = 0; j < AliESDtrack::kNSlice; j++) { - seed->SetTRDsignals(pt->GetPIDsignals(i,j),i,j); + for (Int_t i = 0; i < AliTRDtrack::kNplane; i++) { + for (Int_t j = 0; j < AliTRDtrack::kNslice; j++) { + seed->SetTRDslice(pt->GetPIDsignals(i,j),i,j); } seed->SetTRDTimBin(pt->GetPIDTimBin(i),i); } @@ -760,9 +759,9 @@ Int_t AliTRDtracker::RefitInward(AliESDEvent *event) seed->UpdateTrackParams(pt2,AliESDtrack::kTRDrefit); fHRefit->Fill(6); - for (Int_t i = 0; i < AliESDtrack::kNPlane; i++) { - for (Int_t j = 0; j < AliESDtrack::kNSlice; j++) { - seed->SetTRDsignals(pt2->GetPIDsignals(i,j),i,j); + for (Int_t i = 0; i < AliTRDtrack::kNplane; i++) { + for (Int_t j = 0; j < AliTRDtrack::kNslice; j++) { + seed->SetTRDslice(pt2->GetPIDsignals(i,j),i,j); } seed->SetTRDTimBin(pt2->GetPIDTimBin(i),i); } @@ -986,7 +985,7 @@ Int_t AliTRDtracker::FollowBackProlongation(AliTRDtrack &t) // } // Loop through the TRD planes - for (Int_t iplane = 0; iplane < AliESDtrack::kNPlane; iplane++) { + for (Int_t iplane = 0; iplane < AliTRDtrack::kNplane; iplane++) { Int_t hb = iplane * 10; fHClSearch->Fill(hb); diff --git a/TRD/Cal/AliTRDCalPIDRefMaker.cxx b/TRD/Cal/AliTRDCalPIDRefMaker.cxx index 850fd8e4bf4..65e32f1b3cf 100644 --- a/TRD/Cal/AliTRDCalPIDRefMaker.cxx +++ b/TRD/Cal/AliTRDCalPIDRefMaker.cxx @@ -296,8 +296,8 @@ Bool_t AliTRDCalPIDRefMaker::BuildLQReferences(Char_t *File, Char_t *dir) for (Int_t iPlane=0; iPlaneGetTRDsignals(iPlane, iSlice); - dEdx = esdTrack->GetTRDsignals(iPlane, -1); + dedx[iSlice] = esdTrack->GetTRDslice(iPlane, iSlice); + dEdx = esdTrack->GetTRDslice(iPlane, -1); timebin = esdTrack->GetTRDTimBin(iPlane); // check data diff --git a/TRD/qaAnalysis/AliTRDqaEnergyDeposit.cxx b/TRD/qaAnalysis/AliTRDqaEnergyDeposit.cxx index fbe931ff84c..f18eeba3361 100644 --- a/TRD/qaAnalysis/AliTRDqaEnergyDeposit.cxx +++ b/TRD/qaAnalysis/AliTRDqaEnergyDeposit.cxx @@ -186,7 +186,7 @@ void AliTRDqaEnergyDeposit::Exec(Option_t *) Double_t signal = 0; for(Int_t i=0; i<6; i++) - signal += track->GetTRDsignals(i, -1); + signal += track->GetTRDslice(i, -1); signal /= 6; fSignalPtSum[idx]->Fill(pt, signal); -- 2.43.0