]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
Fix the definition of the radial interval for TRD
authorabercuci <abercuci@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 30 Sep 2008 11:45:37 +0000 (11:45 +0000)
committerabercuci <abercuci@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 30 Sep 2008 11:45:37 +0000 (11:45 +0000)
TRD/qaRec/AliTRDtrackInfo/AliTRDtrackInfo.h
TRD/qaRec/AliTRDtrackInfoGen.cxx
TRD/qaRec/AliTRDtrackInfoGen.h
TRD/qaRec/AliTRDtrackingResolution.cxx

index eab8719b9a34eed8b19fc2cfa504663f0b0393c2..b1886a94707b6c0ffef43f83cb2c480579f16bc1 100644 (file)
@@ -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
   };
 
index a1d4de2cf09d73e261d95261b4fb57634d98ed69..05c84fd76fff8d312a265bef7c09a730a8c17d2a 100644 (file)
@@ -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(iref<nRefs){
         ref = mcParticle->GetTrackReference(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(jref<nRefs){
         ref = mcParticle->GetTrackReference(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++;
index af1b98c0c25b741380bf69cde342ac6e1b831846..2c598a88b97dc9f9d6942c1879779a5eb9298f06 100644 (file)
@@ -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
index 6cff8c41732eec5ef7f1f489e8054c9f59b72560..e73ce1a9ab4aa75d5222e17ce1cab28e7c318364 100644 (file)
@@ -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";