]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - HLT/src/AliLevel3.cxx
Possible to switch onoff deconv
[u/mrichter/AliRoot.git] / HLT / src / AliLevel3.cxx
index ad52445a8f0855547b41fa5277859ef9e3d86e8a..6047670e1cc1c59dcfae1dd8106c4315ca7f235c 100644 (file)
@@ -1,6 +1,7 @@
-//Author:        Uli Frankenfeld
-//Author:        Anders Strand Vestbo
-//Last Modified: 13.12.2000
+//$Id$
+
+// Author: Anders Vestbo <mailto:vestbo$fi.uib.no>, Uli Frankenfeld <mailto:franken@fi.uib.no>
+//*-- Copyright &copy ASV
 
 #include <TFile.h>
 #include <TDirectory.h>
@@ -19,7 +20,7 @@
 #include "AliL3ConfMapPoint.h"
 #include "AliL3ConfMapTrack.h"
 #include "AliL3Transform.h"
-#include "AliL3ClustFinder.h"
+#include "AliL3ClustFinderNew.h"
 #include "AliL3DigitData.h"
 #include "AliL3TrackArray.h"
 #include "AliL3MemHandler.h"
@@ -33,7 +34,7 @@
 #include "AliL3SpacePointData.h"
 #include "AliL3VertexData.h"
 
-//_______________________________________
+//_____________________________________________________________
 //
 //  AliLevel3
 //
 //  AliLevel3 *level3 = new AliLevel3(inputfile,outputfile);
 //  level3->SetTrackerParam(); //Sets default tracking parameters
 //  level3->ProcessSector(2,2);  //Does tracking on sector 2 (actually 2+38)
+//Begin_Html
+/*
+<img src="tpcsectorsnb.gif">
+*/
+//End_Html
 
 ClassImp(AliLevel3)
 
@@ -110,22 +116,27 @@ void AliLevel3::Init(){
   fGlobalMerger=0;
   fTransformer = new AliL3Transform();
   fDoRoi = kFALSE;
+  fDoNonVertex = kFALSE;
+  fClusterDeconv = kFALSE;
+  fEta[0] = 0.;
+  fEta[1] = 0.9;
   fUseBinary =kFALSE;
   SetPath("");
-  fFindVertex =kTRUE;
-  if(0){
+  fFindVertex =kFALSE;
+  fEvent=0;
+  if(1){
     fNPatch = 1;   //number of patches change row in process
     fRow[0][0] = 0;     // first row
-    fRow[0][1] = 173;   // last row
+    fRow[0][1] = 175;   // last row
   }
   if(0){
     fNPatch = 2;   //number of patches change row in process
     fRow[0][0] = 0;     // first row
     fRow[0][1] = 54;
     fRow[1][0] = 55;
-    fRow[1][1] = 173;   // last row
+    fRow[1][1] = 175;   // last row
   }
-  if(1){
+  if(0){
     fNPatch = 5;   //number of patches change row in process
     fRow[0][0] = 0;     // first row
     fRow[0][1] = 45;
@@ -136,7 +147,22 @@ void AliLevel3::Init(){
     fRow[3][0] = 110;
     fRow[3][1] = 141;
     fRow[4][0] = 142;
-    fRow[4][1] = 173;   // last row
+    fRow[4][1] = 175;   // last row
+  }
+  if(0){
+    fNPatch = 6;   //number of patches change row in process
+    fRow[0][0] = 0;     // first row
+    fRow[0][1] = 31;
+    fRow[1][0] = 32;
+    fRow[1][1] = 63;
+    fRow[2][0] = 64;
+    fRow[2][1] = 91;
+    fRow[3][0] = 92;
+    fRow[3][1] = 119;
+    fRow[4][0] = 120;
+    fRow[4][1] = 143;   
+    fRow[5][0] = 144;
+    fRow[5][1] = 175;   // last row 
   }
   fVertexFinder = new AliL3VertexFinder();
   fVertex = new AliL3Vertex();
@@ -157,10 +183,10 @@ void AliLevel3::DoBench(char* name){
 }
 
 void AliLevel3::DoMc(char* file){
-  #ifdef use_aliroot
+#ifdef use_aliroot
   if(!fFileHandler->IsDigit())
     fFileHandler->SetMCOutput(file);
-  #endif
+#endif
 }
 
 AliLevel3::~AliLevel3(){
@@ -180,26 +206,30 @@ void AliLevel3::SetTrackerParam(Int_t phi_segments, Int_t eta_segments,
                                   Double_t min_pt_fit, Double_t maxangle,
                                   Double_t goodDist, Double_t hitChi2Cut,
                                   Double_t goodHitChi2, Double_t trackChi2Cut,
-                                  Int_t maxdist)
+                                  Int_t maxdist,Bool_t vertexconstraint)
 {
   //Set parameters input to the tracker
   //If no arguments are given, default parameters will be used
   
   fTracker->SetNSegments(phi_segments,eta_segments);
-  fTracker->MainVertexSettings(trackletlength,tracklength,rowscopetracklet,rowscopetrack);
   fTracker->SetMaxDca(min_pt_fit);
-  fTracker->SetTrackletCuts(maxangle,goodDist,true);
-  fTracker->SetTrackCuts(hitChi2Cut,goodHitChi2,trackChi2Cut,maxdist);
-
+  fTracker->SetTrackCuts(hitChi2Cut,goodHitChi2,trackChi2Cut,maxdist,vertexconstraint);
+  fTracker->SetTrackletCuts(maxangle,goodDist,vertexconstraint);
+  if(vertexconstraint)
+    fTracker->MainVertexSettings(trackletlength,tracklength,rowscopetracklet,rowscopetrack);
+  else
+    fTracker->NonVertexSettings(trackletlength,tracklength,rowscopetracklet,rowscopetrack);
+  
   fTracker->SetParamDone(true);
 }
 
-void AliLevel3::ProcessEvent(Int_t first,Int_t last){
+void AliLevel3::ProcessEvent(Int_t first,Int_t last,Int_t event){
   //Do tracking on all slices in region [first,last]
   //Slices numbering in TPC goes from 0-35, which means that 1 slice
   //corresponds to inner+outer sector.E.g. slice 2 corresponds to
   //inner=2 + outer=38.
   fGlobalMerger= new AliL3GlobalMerger(first,last);  
+  fEvent=event;
   for(Int_t i=first; i<=last; i++){
     ProcessSlice(i);
     fGlobalMerger->SetVertex(fVertex);
@@ -211,8 +241,9 @@ void AliLevel3::ProcessEvent(Int_t first,Int_t last){
     fTrackData=0;
   }
   fBenchmark->Start("Global Merger");
-  fGlobalMerger->Merge();
-//  fGlobalMerger->SlowMerge();
+  //fGlobalMerger->AddAllTracks();
+  //fGlobalMerger->Merge();
+  fGlobalMerger->SlowMerge();
   fBenchmark->Stop("Global Merger");
 
   if(fWriteOut) WriteResults(); 
@@ -245,15 +276,15 @@ void AliLevel3::ProcessSlice(Int_t slice){
           if(0){     //Binary to Memory
             fFileHandler->Free();
             sprintf(name,"%sdigits_%d_%d.raw",fPath,slice,patch);
-            fFileHandler->SetBinaryInput(name);
+            if(!fFileHandler->SetBinaryInput(name)) return;
             digits= (AliL3DigitRowData *)fFileHandler->CompBinary2Memory(ndigits);
             fFileHandler->CloseBinaryInput(); 
           }
 
-          if(0){     //Binary to Memory with Benchmark 
+          if(1){     //Binary to Memory with Benchmark 
             fFileHandler->Free();
             sprintf(name,"%sdigits_%d_%d.raw",fPath,slice,patch);
-            memory->SetBinaryInput(name);
+            if(!memory->SetBinaryInput(name)) return;
             UInt_t compsize=memory->GetFileSize();
             UInt_t *comp=(UInt_t *)memory->Allocate(compsize);
             memory->CompBinary2CompMemory(ndigits,comp);
@@ -266,13 +297,13 @@ void AliLevel3::ProcessSlice(Int_t slice){
             memory->Free();
           }
   
-          if(1){     //Binary to Memory with Random
+          if(0){     //Binary to Memory with Random
             fFileHandler->Free();
             fFileHandler->ResetRandom();
             fFileHandler->SetRandomCluster(100);
             fFileHandler->SetNGenerate(100);
             sprintf(name,"%sdigits_%d_%d.raw",fPath,slice,patch);
-            memory->SetBinaryInput(name);
+            if(!memory->SetBinaryInput(name)) return;
             UInt_t compsize=memory->GetFileSize();
             UInt_t *comp=(UInt_t *)memory->Allocate(compsize);
             memory->CompBinary2CompMemory(ndigits,comp);
@@ -292,7 +323,7 @@ void AliLevel3::ProcessSlice(Int_t slice){
           Int_t sli[2]={0,0};
           fFileHandler->SetROI(fEta,sli);
           sprintf(name,"%sdigits_%d_%d.raw",fPath,slice,patch);
-          memory->SetBinaryInput(name);
+          if(!memory->SetBinaryInput(name)) return;
           UInt_t compsize=memory->GetFileSize();
           UInt_t *comp=(UInt_t *)memory->Allocate(compsize);
           memory->CompBinary2CompMemory(ndigits,comp);
@@ -318,7 +349,7 @@ void AliLevel3::ProcessSlice(Int_t slice){
         }
   
         if(1){     //Ali to Memory
-          digits=(AliL3DigitRowData *)fFileHandler->AliDigits2Memory(ndigits);
+          digits=(AliL3DigitRowData *)fFileHandler->AliDigits2Memory(ndigits,fEvent);
           if(fWriteOut){   //Memory to Binary
             fFileHandler->SetBinaryOutput(name);
             fFileHandler->Memory2CompBinary(ndigits,digits);
@@ -330,9 +361,10 @@ void AliLevel3::ProcessSlice(Int_t slice){
 
       points = (AliL3SpacePointData *) memory->Allocate(pointsize);
   
-      fClusterFinder = new AliL3ClustFinder(fTransformer);
+      fClusterFinder = new AliL3ClustFinderNew(fTransformer);
       fClusterFinder->InitSlice(slice,patch,fRow[patch][0],fRow[patch][1]
-                                                               ,maxpoints);
+                               ,maxpoints);
+      fClusterFinder->SetDeconv(fClusterDeconv);
       fClusterFinder->SetXYError(0.1);
       fClusterFinder->SetZError(0.2);
       fClusterFinder->SetOutputArray(points);
@@ -353,7 +385,7 @@ void AliLevel3::ProcessSlice(Int_t slice){
       if(fUseBinary){//Binary to Memory
         memory->Free();
         sprintf(name,"/%spoints_%d_%d.raw",fPath,slice,patch);
-        memory->SetBinaryInput(name);
+        if(!memory->SetBinaryInput(name)) return;
         points = (AliL3SpacePointData *) memory->Allocate();
         memory->Binary2Memory(npoints,points);
         memory->CloseBinaryInput();
@@ -393,7 +425,7 @@ void AliLevel3::ProcessSlice(Int_t slice){
       }
       fTrackMerger->SetVertex(fVertex);
     }
-    fTracker->InitSector(slice,fRow[patch],fEta);
+    fTracker->InitSector(slice,fRow[patch]);//,fEta);
     fTracker->SetVertex(fVertex);
     fBenchmark->Start("Tracker Read Hits");
     fTracker->ReadHits(npoints,points);
@@ -405,6 +437,8 @@ void AliLevel3::ProcessSlice(Int_t slice){
     fTracker->MainVertexTracking_b();
     fBenchmark->Stop("MainVertexTracking B");
     fBenchmark->Start("Tracking fit");
+    if(fDoNonVertex)
+      fTracker->NonVertexTracking();//Do a second pass for nonvertex tracks
     fTracker->FillTracks();
     fBenchmark->Stop("Tracking fit");
 
@@ -436,7 +470,7 @@ void AliLevel3::ProcessSlice(Int_t slice){
 
     fInterMerger->FillTracks(ntracks0,trackdata0);
     fBenchmark->Start("Inter Merger");
-    fInterMerger->Merge();
+    // fInterMerger->Merge();
 //    fInterMerger->SlowMerge();
     
     fBenchmark->Stop("Inter Merger");
@@ -461,7 +495,7 @@ void AliLevel3::ProcessSlice(Int_t slice){
   fBenchmark->Start("Patch Merger");
 //  fTrackMerger->SlowMerge();
   fTrackMerger->AddAllTracks();
-//  fTrackMerger->Merge();
+  fTrackMerger->Merge();
   fBenchmark->Stop("Patch Merger");
   //write merged tracks
   if(fWriteOut){