]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - TRD/AliTRDtrackerV1.cxx
updated dndeta analysis
[u/mrichter/AliRoot.git] / TRD / AliTRDtrackerV1.cxx
index 0e073acd61683d756d73d8f38dbcb130b746e315..8c59d17fae8fae3e1928558a2e40e756d0d4270b 100644 (file)
@@ -342,7 +342,7 @@ Int_t AliTRDtrackerV1::PropagateBack(AliESDEvent *event)
     track.SetKink(Bool_t(seed->GetKinkIndex(0)));
     expectedClr = FollowBackProlongation(track);
     // check if track entered the TRD fiducial volume
-    if(track.GetTrackLow()){ 
+    if(track.GetTrackIn()){ 
       seed->UpdateTrackParams(&track, AliESDtrack::kTRDin);
       nTRDseeds++;
     }
@@ -503,22 +503,22 @@ Int_t AliTRDtrackerV1::RefitInward(AliESDEvent *event)
     Bool_t kUPDATE = kFALSE;
     Double_t xTPC = 250.0;
     if(FollowProlongation(track)){     
-      // Prolongate to TPC
-      if (PropagateToX(track, xTPC, fgkMaxStep)) { //  -with update
-        seed->UpdateTrackParams(&track, AliESDtrack::kTRDrefit);
-        found++;
-        kUPDATE = kTRUE;
-      }
-
       // Update the friend track
       if (fkRecoParam->GetStreamLevel(AliTRDrecoParam::kTracker) > 0 && fkRecoParam->IsOverPtThreshold(track.Pt())){ 
         TObject *o = NULL; Int_t ic = 0;
         AliTRDtrackV1 *calibTrack = NULL; 
         while((o = seed->GetCalibObject(ic++))){
           if(!(calibTrack = dynamic_cast<AliTRDtrackV1*>(o))) continue;
-          calibTrack->SetTrackHigh(track.GetTrackHigh());
+          calibTrack->SetTrackOut(&track);
         }
       }
+
+      // Prolongate to TPC
+      if (PropagateToX(track, xTPC, fgkMaxStep)) { //  -with update
+        seed->UpdateTrackParams(&track, AliESDtrack::kTRDrefit);
+        found++;
+        kUPDATE = kTRUE;
+      }
     }
     
     // Prolongate to TPC without update
@@ -560,7 +560,6 @@ Int_t AliTRDtrackerV1::FollowProlongation(AliTRDtrackV1 &t)
   // Debug level 2
   //
   
-  Bool_t kStoreIn = kTRUE;
   Int_t    nClustersExpected = 0;
   for (Int_t iplane = kNPlanes; iplane--;) {
     Int_t   index(-1);
@@ -609,10 +608,6 @@ Int_t AliTRDtrackerV1::FollowProlongation(AliTRDtrackV1 &t)
       t.PropagateTo(x, xx0, xrho);
       if (!AdjustSector(&t)) break;
     }
-    if(kStoreIn){
-      t.SetTrackHigh(); 
-      kStoreIn = kFALSE;
-    }
 
     Double_t cov[3]; tracklet->GetCovAt(x, cov);
     Double_t p[2] = { tracklet->GetY(), tracklet->GetZ()};
@@ -838,7 +833,7 @@ Int_t AliTRDtrackerV1::FollowBackProlongation(AliTRDtrackV1 &t)
     }
     // mark track as entering the FIDUCIAL volume of TRD
     if(kStoreIn){
-      t.SetTrackLow(); 
+      t.SetTrackIn(); 
       kStoreIn = kFALSE;
     }
 
@@ -937,7 +932,7 @@ Int_t AliTRDtrackerV1::FollowBackProlongation(AliTRDtrackV1 &t)
       break;
     }
     if(kPropagateIn){
-      t.SetTrackLow(); 
+      t.SetTrackIn(); 
       kPropagateIn = kFALSE;
     }
     Double_t cov[3]; ptrTracklet->GetCovAt(x, cov);
@@ -1131,6 +1126,10 @@ Float_t AliTRDtrackerV1::FitTiltedRiemanConstraint(AliTRDseedV1 *tracklets, Doub
       if(!tracklets[ilr].IsUsable(itb)) continue;
       cl = tracklets[ilr].GetClusters(itb);
       if(!cl->IsInChamber()) continue;
+      if(cl->GetSigmaY2()<1.e-6 || cl->GetSigmaZ2()<1.e-6){
+        if(AliLog::GetDebugLevel("TRD", "AliTRDtrackerV1")>1) printf("D-AliTRDtrackerV1::FitTiltedRiemanConstraint: Cluster error parameterization missing. This should appear only in HLT tests.");
+        continue;
+      }
       x = cl->GetX();
       y = cl->GetY();
       z = cl->GetZ();
@@ -1230,10 +1229,15 @@ Float_t AliTRDtrackerV1::FitTiltedRieman(AliTRDseedV1 *tracklets, Bool_t sigErro
     for(Int_t itb = 0; itb < AliTRDseedV1::kNclusters; itb++){
       if(!(cl = tracklets[ipl].GetClusters(itb))) continue;
       if(!cl->IsInChamber()) continue;
-      //if (!tracklets[ipl].IsUsable(itb)) continue;
+      if (!tracklets[ipl].IsUsable(itb)) continue;
       x = cl->GetX();
       y = cl->GetY();
       z = cl->GetZ();
+      if(cl->GetSigmaY2()<1.e-6 || cl->GetSigmaZ2()<1.e-6){
+        if(AliLog::GetDebugLevel("TRD", "AliTRDtrackerV1")>1) printf("D-AliTRDtrackerV1::FitTiltedRieman: Cluster error parameterization missing. This should appear only in HLT tests.");
+        tracklets[ipl].Print("a");
+        continue;
+      }
       dx = x - xref;
       // Transformation
       t = 1./(x*x + y*y);
@@ -1964,9 +1968,9 @@ Int_t AliTRDtrackerV1::BuildTrackingContainers()
 {
 // Building tracking containers for clusters
 
-  Int_t nin =0, icl = fClusters->GetEntriesFast();
-  while (icl--) {
-    AliTRDcluster *c = (AliTRDcluster *) fClusters->UncheckedAt(icl);
+  Int_t nin(0), ncl(fClusters->GetEntriesFast());
+  while (ncl--) {
+    AliTRDcluster *c = (AliTRDcluster *) fClusters->UncheckedAt(ncl);
     if(c->IsInChamber()) nin++;
     if(fkReconstructor->IsHLT()) c->SetRPhiMethod(AliTRDcluster::kCOG);
     Int_t detector       = c->GetDetector();
@@ -1974,13 +1978,12 @@ Int_t AliTRDtrackerV1::BuildTrackingContainers()
     Int_t stack          = fGeom->GetStack(detector);
     Int_t layer          = fGeom->GetLayer(detector);
     
-    fTrSec[sector].GetChamber(stack, layer, kTRUE)->InsertCluster(c, icl);
+    fTrSec[sector].GetChamber(stack, layer, kTRUE)->InsertCluster(c, ncl, fkReconstructor->IsHLT());
   }
 
-  const AliTRDCalDet *cal = AliTRDcalibDB::Instance()->GetT0Det();
   for(int isector =0; isector<AliTRDgeometry::kNsector; isector++){ 
     if(!fTrSec[isector].GetNChambers()) continue;
-    fTrSec[isector].Init(fkReconstructor, cal);
+    fTrSec[isector].Init(fkReconstructor);
   }
 
   return nin;
@@ -2228,7 +2231,6 @@ Int_t AliTRDtrackerV1::Clusters2TracksStack(AliTRDtrackingChamber **stack, TClon
   // 8. Build ESD track and register it to the output list
   //
 
-  const AliTRDCalDet *cal = AliTRDcalibDB::Instance()->GetT0Det();
   AliTRDtrackingChamber *chamber = NULL;
   AliTRDtrackingChamber **ci = NULL;
   AliTRDseedV1 sseed[kMaxTracksStack*6]; // to be initialized
@@ -2449,7 +2451,7 @@ Int_t AliTRDtrackerV1::Clusters2TracksStack(AliTRDtrackingChamber **stack, TClon
     
     for(Int_t ip = 0; ip < kNPlanes; ip++){ 
       if(!(chamber = stack[ip])) continue;
-      chamber->Build(fGeom, cal);//Indices(fSieveSeeding);
+      chamber->Build(fGeom);//Indices(fSieveSeeding);
     }
 
     if(fkRecoParam->GetStreamLevel(AliTRDrecoParam::kTracker) > 10){ 
@@ -2786,6 +2788,7 @@ Int_t AliTRDtrackerV1::MakeSeeds(AliTRDtrackingChamber **stack, AliTRDseedV1 * c
             if(!cseed[jLayer].AttachClusters(chamber, kTRUE)) continue;
             cseed[jLayer].Fit();
           }
+          FitTiltedRiemanConstraint(&cseed[0], GetZ());
           fTrackQuality[ntracks] = 1.; // dummy value
           ntracks++;
           if(ntracks == kMaxTracksStack) return ntracks;