From 303f052c08655c1b36ee08c9a9cb88cdf40d15de Mon Sep 17 00:00:00 2001 From: abercuci Date: Tue, 30 Sep 2008 11:45:37 +0000 Subject: [PATCH] Fix the definition of the radial interval for TRD --- TRD/qaRec/AliTRDtrackInfo/AliTRDtrackInfo.h | 7 ++-- TRD/qaRec/AliTRDtrackInfoGen.cxx | 8 +++-- TRD/qaRec/AliTRDtrackInfoGen.h | 5 +-- TRD/qaRec/AliTRDtrackingResolution.cxx | 37 ++++++++++++++------- 4 files changed, 38 insertions(+), 19 deletions(-) diff --git a/TRD/qaRec/AliTRDtrackInfo/AliTRDtrackInfo.h b/TRD/qaRec/AliTRDtrackInfo/AliTRDtrackInfo.h index eab8719b9a3..b1886a94707 100644 --- a/TRD/qaRec/AliTRDtrackInfo/AliTRDtrackInfo.h +++ b/TRD/qaRec/AliTRDtrackInfo/AliTRDtrackInfo.h @@ -25,6 +25,9 @@ class AliTrackReference; class AliExternalTrackParam; class AliTRDtrackInfo : public TObject{ public: + enum{ + kNTrackRefs = 12 + }; class AliESDinfo{ friend class AliTRDtrackInfo; public: @@ -60,12 +63,12 @@ public: Int_t GetLabel() const {return fLabel;} Int_t GetNTrackRefs() const {return fNTrackRefs;} Int_t GetPDG() const {return fPDG;} - AliTrackReference** GetTrackRefIter() {return &fTrackRefs[0];} + //AliTrackReference* const* GetTrackRefIter() const {return &fTrackRefs[0];} protected: Int_t fLabel; // MC label Int_t fPDG; // particle code Int_t fNTrackRefs; // number of track refs - AliTrackReference *fTrackRefs[12]; // track refs array + AliTrackReference *fTrackRefs[kNTrackRefs]; // track refs array ClassDef(AliMCinfo, 1) // MC info related to TRD }; diff --git a/TRD/qaRec/AliTRDtrackInfoGen.cxx b/TRD/qaRec/AliTRDtrackInfoGen.cxx index a1d4de2cf09..05c84fd76ff 100644 --- a/TRD/qaRec/AliTRDtrackInfoGen.cxx +++ b/TRD/qaRec/AliTRDtrackInfoGen.cxx @@ -59,6 +59,8 @@ ClassImp(AliTRDtrackInfoGen) +const Float_t AliTRDtrackInfoGen::xTPC = 290.; +const Float_t AliTRDtrackInfoGen::xTOF = 365.; //____________________________________________________________________ AliTRDtrackInfoGen::AliTRDtrackInfoGen(): @@ -181,7 +183,7 @@ void AliTRDtrackInfoGen::Exec(Option_t *){ if(esdTrack->GetNcls(1)) nTPC++; if(esdTrack->GetNcls(2)) nTRD++; - // look at esternal track param + // look at external track param const AliExternalTrackParam *op = esdTrack->GetOuterParam(); Double_t xyz[3]; if(op){ @@ -211,7 +213,7 @@ void AliTRDtrackInfoGen::Exec(Option_t *){ Int_t iref = 0; AliTrackReference *ref = 0x0; while(irefGetTrackReference(iref); - if(ref->LocalX() > 250.) break; + if(ref->LocalX() > xTPC) break; //printf("\ttrackRef[%2d] @ %7.3f\n", iref, ref->LocalX()); iref++; } @@ -233,7 +235,7 @@ void AliTRDtrackInfoGen::Exec(Option_t *){ Int_t jref = iref;//, kref = 0; while(jrefGetTrackReference(jref); - if(ref->LocalX() > 370.) break; + if(ref->LocalX() > xTOF) break; if(fDebugLevel>=3) printf("\ttrackRef[%2d (%2d)] @ %7.3f OK\n", jref-iref, jref, ref->LocalX()); fTrackInfo->AddTrackRef(ref); jref++; diff --git a/TRD/qaRec/AliTRDtrackInfoGen.h b/TRD/qaRec/AliTRDtrackInfoGen.h index af1b98c0c25..2c598a88b97 100644 --- a/TRD/qaRec/AliTRDtrackInfoGen.h +++ b/TRD/qaRec/AliTRDtrackInfoGen.h @@ -33,12 +33,13 @@ public: void Exec(Option_t *); void Terminate(Option_t *); + static const Float_t xTPC; + static const Float_t xTOF; + private: AliTRDtrackInfoGen(const AliTRDtrackInfoGen&); AliTRDtrackInfoGen& operator=(const AliTRDtrackInfoGen&); -private: - AliESDEvent *fESD; // ESD event AliMCEvent *fMC; // MC event AliESDfriend *fESDfriend; // ESD friends diff --git a/TRD/qaRec/AliTRDtrackingResolution.cxx b/TRD/qaRec/AliTRDtrackingResolution.cxx index 6cff8c41732..e73ce1a9ab4 100644 --- a/TRD/qaRec/AliTRDtrackingResolution.cxx +++ b/TRD/qaRec/AliTRDtrackingResolution.cxx @@ -396,19 +396,21 @@ void AliTRDtrackingResolution::GetRefFigure(Int_t ifig, Int_t &first, Int_t &las Bool_t AliTRDtrackingResolution::Resolution(AliTRDseedV1 *tracklet, AliTRDtrackInfo *fInfo, Double_t &p, Double_t &ymc, Double_t &zmc, Double_t &phi, Double_t &theta) { - AliTrackReference *fTrackRefs[2] = {0x0, 0x0}, *tempTrackRef = 0x0; + AliTrackReference *fTrackRefs[2] = {0x0, 0x0}; + Float_t x0 = tracklet->GetX0(); // check for 2 track ref where the radial position has a distance less than 3.7mm Int_t nFound = 0; - for(Int_t itr = 0; itr < fInfo->GetNTrackRefs(); itr++){ - if(!(tempTrackRef = fInfo->GetTrackRef(itr))) continue; - if(fDebugLevel>=5) printf("TrackRef %d: x = %f\n", itr, tempTrackRef->LocalX()); - if(TMath::Abs(tracklet->GetX0() - tempTrackRef->LocalX()) > 3.7) continue; - fTrackRefs[nFound++] = tempTrackRef; + for(Int_t itr = 0; itr < AliTRDtrackInfo::kNTrackRefs; itr++){ + if(!(fTrackRefs[nFound] = fInfo->GetTrackRef(itr))) break; + + if(fDebugLevel>=5) printf("\t\tref[%2d] x[%6.3f]\n", itr, fTrackRefs[nFound]->LocalX()); + if(TMath::Abs(x0 - fTrackRefs[nFound]->LocalX()) > 3.7) continue; + nFound++; if(nFound == 2) break; } if(nFound < 2){ - if(fDebugLevel>=4) printf("\t\tFound track crossing [%d] refX[%6.3f]\n", nFound, nFound>0 ? fTrackRefs[0]->LocalX() : 0.); + if(fDebugLevel>=3) printf("\t\tMissing track ref x0[%6.3f] ly[%d] nref[%d]\n", x0, tracklet->GetPlane(), fInfo->GetMCinfo()->GetNTrackRefs()); return kFALSE; } // We found 2 track refs for the tracklet, get y and z at the anode wire by a linear approximation @@ -417,7 +419,7 @@ Bool_t AliTRDtrackingResolution::Resolution(AliTRDseedV1 *tracklet, AliTRDtrackI // RESOLUTION Double_t dx = fTrackRefs[1]->LocalX() - fTrackRefs[0]->LocalX(); if(dx <= 0.){ - if(fDebugLevel>=4) printf("\t\ttrack ref in the wrong order refX0[%6.3f] refX1[%6.3f]\n", fTrackRefs[0]->LocalX(), fTrackRefs[1]->LocalX()); + if(fDebugLevel>=3) printf("\t\tTrack ref in the wrong order refX0[%6.3f] refX1[%6.3f]\n", fTrackRefs[0]->LocalX(), fTrackRefs[1]->LocalX()); return kFALSE; } Double_t dydx = (fTrackRefs[1]->LocalY() - fTrackRefs[0]->LocalY()) / dx; @@ -464,16 +466,20 @@ Bool_t AliTRDtrackingResolution::Resolution(AliTRDseedV1 *tracklet, AliTRDtrackI << "dphi=" << dphi << "\n"; + Int_t det, stk; Float_t z0 = 0.; AliTRDpadPlane *pp = 0x0; AliTRDcluster *c = 0x0; - for(Int_t ic=AliTRDseed::knTimebins-1; ic>=0; ic--){ - if(!(c = tracklet->GetClusters(ic))) continue; + tracklet->ResetClusterIter(kFALSE); + while((c = tracklet->PrevCluster())){ if(!pp){ - pp = fGeo->GetPadPlane(iplane, fGeo->GetStack(c->GetDetector())); + det = c->GetDetector(); + stk = fGeo->GetStack(det); + pp = fGeo->GetPadPlane(iplane, stk); z0 = pp->GetRow0() + AliTRDSimParam::Instance()->GetAnodeWireOffset(); } - dx = tracklet->GetX0() - c->GetX(); + Float_t xc = c->GetX(); + dx = tracklet->GetX0() - xc; Float_t yt = ymc - dx*dydx; Float_t zt = zmc - dx*dzdx; Float_t yc = c->GetY() - TMath::Tan(tracklet->GetTilt()) * (c->GetZ() - zt); @@ -481,11 +487,18 @@ Bool_t AliTRDtrackingResolution::Resolution(AliTRDseedV1 *tracklet, AliTRDtrackI Float_t d = z0 - zt; d -= ((Int_t)(2 * d)) / 2.0; (*fDebugStream) << "ResolutionClstr" + << "det=" << det << "ly=" << iplane + << "stk=" << stk << "pdg=" << pdg << "p=" << p << "phi=" << phi << "tht=" << theta + << "xc=" << xc + << "yc=" << yc + << "yt=" << yt + << "zt=" << zt + << "z0=" << z0 << "d=" << d << "dy=" << dy << "\n"; -- 2.43.5