]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
Merging my version with Constantins last checkin.
authorvestbo <vestbo@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 5 Jul 2002 16:02:46 +0000 (16:02 +0000)
committervestbo <vestbo@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 5 Jul 2002 16:02:46 +0000 (16:02 +0000)
New function added EvaluatePatch(), which only looks
in 1 patch, instead of globally looking at the slice.
Small bugfix in AliL3HoughEval.

HLT/hough/AliL3Hough.cxx
HLT/hough/AliL3Hough.h
HLT/hough/AliL3HoughEval.cxx

index 54575e19be64ad764b38e882fa8c2add12172669..687418a5c267bb3adacec332ec9df9535cea3bdd 100644 (file)
@@ -134,7 +134,8 @@ void AliL3Hough::Init(Char_t *path,Bool_t binary,Int_t n_eta_segments,Bool_t bit
   Init(); //do the rest
 }
 
-void AliL3Hough::Init(Bool_t doit=kFALSE, Bool_t addhists=kFALSE){
+void AliL3Hough::Init(Bool_t doit=kFALSE, Bool_t addhists=kFALSE)
+{
   fDoIterative   = doit; 
   fAddHistograms = addhists;
 
@@ -155,13 +156,13 @@ void AliL3Hough::Init(Bool_t doit=kFALSE, Bool_t addhists=kFALSE){
       default:
        fHoughTransformer[i] = new AliL3HoughTransformer(1,i,fNEtaSegments);
       }
-
+                  
       fHoughTransformer[i]->CreateHistograms(fNBinX,fLowPt,fNBinY,-fPhi,fPhi);
       fHoughTransformer[i]->SetLowerThreshold(fThreshold);
-
+      
       LOG(AliL3Log::kInformational,"AliL3Hough::Init","Version")
        <<"Initializing Hough transformer version "<<fVersion<<ENDLOG;
-
+      
       fEval[i] = new AliL3HoughEval();
       fTracks[i] = new AliL3TrackArray("AliL3HoughTrack");
       if(fUse8bits)
@@ -182,7 +183,7 @@ void AliL3Hough::Init(Bool_t doit=kFALSE, Bool_t addhists=kFALSE){
 #endif
     }
 
-  fPeakFinder = new AliL3HoughMaxFinder("KappaPhi",100);
+  fPeakFinder = new AliL3HoughMaxFinder("KappaPhi",1000);
   fMerger = new AliL3HoughMerger(fNPatches);
   fInterMerger = new AliL3HoughIntMerger();
   fGlobalMerger = 0;
@@ -428,57 +429,32 @@ Int_t AliL3Hough::Evaluate(Int_t road_width,Int_t nrowstomiss)
       return 0;
     }
   
-  InitEvaluate();
-  
   Int_t removed_tracks=0;
   AliL3TrackArray *tracks=0;
-  Int_t *total_rows=0;
+
   if(fAddHistograms)
-    {    
+    {
       tracks = fTracks[0];
-      total_rows = new Int_t[tracks->GetNTracks()];
       for(Int_t i=0; i<tracks->GetNTracks(); i++)
-       total_rows[i]=0;
-    }
-
-  for(Int_t i=0; i<fNPatches; i++)
-    {
-      fEval[i]->InitTransformer(fHoughTransformer[i]);
-      fEval[i]->SetNumOfPadsToLook(road_width);
-      fEval[i]->SetNumOfRowsToMiss(nrowstomiss);
-      if(!fAddHistograms)
-       tracks = fTracks[i];
-      
-      for(Int_t j=0; j<tracks->GetNTracks(); j++)
        {
-         AliL3HoughTrack *track = (AliL3HoughTrack*)tracks->GetCheckedTrack(j);
-         if(!track)
-           {
-             LOG(AliL3Log::kWarning,"AliL3Hough::Evaluate","Track array")
-               <<"Track object missing!"<<ENDLOG;
-             continue;
-           }
-         
-         Bool_t result = fEval[i]->LookInsideRoad(track,total_rows[j]);
-         if(!fAddHistograms)//the track crossed too few good padrows (padrows with signal) in the patch, so remove it
-           {
-             if(result == kFALSE)
-               tracks->Remove(j);
-           }
-       }
-      if(!fAddHistograms)
-       {
-         tracks->Compress();
-         tracks->QSort(); 
-         fMerger->FillTracks(tracks,i); //Copy tracks to the track merger
+         AliL3Track *track = tracks->GetCheckedTrack(i);
+         if(!track) continue;
+         track->SetNHits(0);
        }
     }
   
+  
+  for(Int_t i=0; i<fNPatches; i++)
+    EvaluatePatch(i,road_width,nrowstomiss);
+  
+  
   if(fAddHistograms) //Here we check the tracks globally; how many good rows (padrows with signal) did it cross in the slice
     {
       for(Int_t j=0; j<tracks->GetNTracks(); j++)
        {
-         if(total_rows[j] < AliL3Transform::GetNRows() - nrowstomiss)
+         AliL3HoughTrack *track = (AliL3HoughTrack*)tracks->GetCheckedTrack(j);
+         
+         if(track->GetNHits() < AliL3Transform::GetNRows() - nrowstomiss)
            {
              tracks->Remove(j);
              removed_tracks++;
@@ -487,11 +463,60 @@ Int_t AliL3Hough::Evaluate(Int_t road_width,Int_t nrowstomiss)
       tracks->Compress();
       tracks->QSort();
     }
+    
+  return removed_tracks;
+}
+
+void AliL3Hough::EvaluatePatch(Int_t i,Int_t road_width,Int_t nrowstomiss)
+{
+  //Evaluate patch i.
   
-  if(total_rows)
-    delete [] total_rows;
+  fEval[i]->InitTransformer(fHoughTransformer[i]);
+  fEval[i]->SetNumOfPadsToLook(road_width);
+  fEval[i]->SetNumOfRowsToMiss(nrowstomiss);
+  //fEval[i]->RemoveFoundTracks();
   
-  return removed_tracks;
+  AliL3TrackArray *tracks=0;
+  
+  if(!fAddHistograms)
+    tracks = fTracks[i];
+  else
+    tracks = fTracks[0];
+  
+  Int_t nrows=0;
+  for(Int_t j=0; j<tracks->GetNTracks(); j++)
+    {
+      AliL3HoughTrack *track = (AliL3HoughTrack*)tracks->GetCheckedTrack(j);
+      if(!track)
+       {
+         LOG(AliL3Log::kWarning,"AliL3Hough::EvaluatePatch","Track array")
+           <<"Track object missing!"<<ENDLOG;
+         continue;
+       } 
+      nrows=0;
+      Bool_t result = fEval[i]->LookInsideRoad(track,nrows);
+      if(fAddHistograms)
+       {
+         Int_t pre=track->GetNHits();
+         track->SetNHits(pre+nrows);
+       }
+      //else//the track crossed too few good padrows (padrows with signal) in the patch, so remove it
+      //{
+      if(result == kFALSE)
+       tracks->Remove(j);
+      //}
+    }
+  
+  tracks->Compress();
+  /*
+    if(!fAddHistograms)
+    {
+    tracks->Compress();
+    tracks->QSort(); 
+    fMerger->FillTracks(tracks,i); //Copy tracks to the track merger
+    }
+  */
+
 }
 
 void AliL3Hough::EvaluateWithEta()
index a5049e4dbd444dfcfed24eb4e3fc8c0ba7aababc..32f0f75e95cc1e3361d562ed620fdd5bc9d9a9a7 100644 (file)
@@ -66,6 +66,7 @@ class AliL3Hough {
   void FindTrackCandidates();
   void AddAllHistograms();
   Int_t Evaluate(Int_t road_width=1,Int_t nrowstomiss=1);
+  void EvaluatePatch(Int_t i,Int_t road_width,Int_t nrowstomiss);
   void EvaluateWithEta();
   void WriteTracks(Int_t slice,Char_t *path="./");
   void WriteDigits(Char_t *outfile="output_digits.root");
index 6a26d0cba86313bb4d4247834c4dc7314099e32e..1ba22b751038494f10f0a37ef3f88f5696a48b83 100644 (file)
@@ -93,22 +93,6 @@ Bool_t AliL3HoughEval::LookInsideRoad(AliL3HoughTrack *track,Int_t &nrows_crosse
   
   Int_t total_charge=0;//total charge along the road
     
-  /*
-  //Check if the track is leaving the sector at some point
-  //This does not work, if the track is bending _in_ to the slice.....
-  Float_t maxrow=300;
-  Double_t angle=AliL3Transform::Pi()/18;
-  track->CalculateEdgePoint(angle);
-  if(!track->IsPoint())
-    {
-      track->CalculateEdgePoint(-1.*angle);
-      if(track->IsPoint())
-       maxrow = track->GetPointX();
-    }
-  else
-    maxrow = track->GetPointX();
-  */
-  
   for(Int_t padrow = AliL3Transform::GetFirstRow(fPatch); padrow <= AliL3Transform::GetLastRow(fPatch); padrow++)
     {
       //if(AliL3Transform::Row2X(padrow) > maxrow) break;//The track has left this slice
@@ -147,7 +131,7 @@ Bool_t AliL3HoughEval::LookInsideRoad(AliL3HoughTrack *track,Int_t &nrows_crosse
              Double_t eta = AliL3Transform::GetEta(padrow,pad,time);
              Int_t pixel_index = fHoughTransformer->GetEtaIndex(eta);
              if(pixel_index > track->GetEtaIndex()) continue;
-             if(pixel_index != track->GetEtaIndex()) break;
+             if(pixel_index != track->GetEtaIndex()) continue;
              total_charge += digPt[j].fCharge;
              if(remove)
                digPt[j].fCharge = 0; //Erase the track from image