]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - HLT/src/AliLevel3.cxx
Changes done to make the Cluser Finder calculate the errors in Pad and Time direction...
[u/mrichter/AliRoot.git] / HLT / src / AliLevel3.cxx
index 4c66ae5a383262ae38f0e289662cdcd5e2402e90..24c870d6a3f1a10f2307ddf71e24d51b4940ff44 100644 (file)
@@ -99,17 +99,21 @@ void AliLevel3::Init(Char_t *path,Bool_t binary=kTRUE,Int_t npatches=6)
        <<"You have not supplied the input rootfile; use the appropriate ctor!"<<ENDLOG;
       return;
     }
+  
+  AliL3Transform::Init(path);//Initialize the detector parameters.
   fWriteOut = kFALSE;
-  fGlobalMerger=0;
-  fTransformer = new AliL3Transform(path);
+  fUseBinary = binary;
+  SetPath(path);
+  fGlobalMerger = 0;
+
   fDoRoi = kFALSE;
   fDoNonVertex = kFALSE;
-  fClusterDeconv = kTRUE;
+  fFindVertex = kFALSE;
+  SetClusterFinderParam();
+
   fEta[0] = 0.;
   fEta[1] = 0.9;
-  fUseBinary = binary;
-  SetPath(path);
-  fFindVertex =kFALSE;
+
   fEvent=0;
 
   switch(npatches){
@@ -138,7 +142,7 @@ void AliLevel3::Init(Char_t *path,Bool_t binary=kTRUE,Int_t npatches=6)
     fRow[4][0] = 142;
     fRow[4][1] = 175;   // last row
     break;
-  default:
+  default: //should match entries in AliL3Transform
     fNPatch = 6;        //number of patches change row in process
     fRow[0][0] = 0;     // first row
     fRow[0][1] = 31;
@@ -181,15 +185,21 @@ void AliLevel3::DoMc(char* file){
 
 AliLevel3::~AliLevel3(){
   //Destructor
-  if(fVertexFinder)  delete fVertexFinder;
-  if(fVertex)  delete fVertex;
+  if(fVertexFinder) delete fVertexFinder;
+  if(fVertex) delete fVertex;
   if(fTracker) delete fTracker;
-  if(fTransformer) delete fTransformer;
   if(fTrackMerger) delete fTrackMerger;
   if(fInterMerger) delete fInterMerger;
   if(fFileHandler) delete fFileHandler;
 }
 
+void AliLevel3::SetClusterFinderParam(Float_t fXYError, Float_t fZError, Bool_t deconv)
+{
+  fXYClusterError=fXYError;
+  fZClusterError=fZError;
+  fClusterDeconv=deconv;
+}
+
 void AliLevel3::SetTrackerParam(Int_t phi_segments, Int_t eta_segments,
                                Int_t trackletlength, Int_t tracklength,
                                Int_t rowscopetracklet, Int_t rowscopetrack,
@@ -216,7 +226,7 @@ void AliLevel3::SetTrackerParam(Int_t phi_segments, Int_t eta_segments,
 
 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
+  //Slices numbering in TPC goes from 0-35, which means that one slice
   //corresponds to inner+outer sector.E.g. slice 2 corresponds to
   //inner=2 + outer=38.
   fGlobalMerger= new AliL3GlobalMerger(first,last);  
@@ -224,7 +234,6 @@ void AliLevel3::ProcessEvent(Int_t first,Int_t last,Int_t event){
   for(Int_t i=first; i<=last; i++){
     ProcessSlice(i);
     fGlobalMerger->SetVertex(fVertex);
-    fGlobalMerger->SetTransformer(fTransformer);
     fGlobalMerger->InitSlice(i);
     fGlobalMerger->FillTracks(fNTrackData,fTrackData);
     fFileHandler->Free();   //free the memory
@@ -253,13 +262,11 @@ void AliLevel3::ProcessSlice(Int_t slice){
   const Int_t maxpoints=100000;
   const Int_t pointsize = maxpoints * sizeof(AliL3SpacePointData);
   AliL3MemHandler *memory = new AliL3MemHandler();
-  
+
   fTrackMerger->Reset();
-  fTrackMerger->SetTransformer(fTransformer);
   fTrackMerger->SetRows(fRow[0]);
   for(Int_t patch=fNPatch-1;patch>=0;patch--){
-    fFileHandler->Init(slice,patch,fRow[patch]);
-    fFileHandler->SetTransformer(fTransformer);
+    fFileHandler->Init(slice,patch,&fRow[patch][0]);
     UInt_t npoints=0;
     AliL3SpacePointData *points =0;
     UInt_t ndigits=0;
@@ -355,12 +362,13 @@ void AliLevel3::ProcessSlice(Int_t slice){
 
       points = (AliL3SpacePointData *) memory->Allocate(pointsize);
   
-      fClusterFinder = new AliL3ClustFinderNew(fTransformer);
-      fClusterFinder->InitSlice(slice,patch,fRow[patch][0],fRow[patch][1]
-                               ,maxpoints);
+      fClusterFinder = new AliL3ClustFinderNew();
+      fClusterFinder->InitSlice(slice,patch,fRow[patch][0],fRow[patch][1],maxpoints);
       fClusterFinder->SetDeconv(fClusterDeconv);
-      fClusterFinder->SetXYError(0.2);
-      fClusterFinder->SetZError(0.3);
+      fClusterFinder->SetXYError(fXYClusterError);
+      fClusterFinder->SetZError(fZClusterError);
+      if((fXYClusterError>0)&&(fZClusterError>0))
+       fClusterFinder->SetCalcErr(kFALSE);
       fClusterFinder->SetOutputArray(points);
       fClusterFinder->Read(ndigits,digits);
       fBenchmark->Start("Cluster Finder");
@@ -368,12 +376,10 @@ void AliLevel3::ProcessSlice(Int_t slice){
       fBenchmark->Stop("Cluster Finder");
       npoints = fClusterFinder->GetNumberOfClusters();
       delete fClusterFinder;
-      fClusterFinder =0;
+      fClusterFinder = 0;
       fFileHandler->Free();
       LOG(AliL3Log::kInformational,"AliLevel3::ProcessSlice","Cluster Finder")
         <<AliL3Log::kDec<<"Found "<<npoints<<" Points"<<ENDLOG;
-    
-    
     }//end UseCF
     else{// if not use Clusterfinder
       if(fUseBinary){//Binary to Memory
@@ -460,7 +466,6 @@ void AliLevel3::ProcessSlice(Int_t slice){
     }
     */
     fInterMerger->Reset();
-    fInterMerger->SetTransformer(fTransformer);
     fInterMerger->Init(fRow[patch],patch);
 
     fInterMerger->FillTracks(ntracks0,trackdata0);
@@ -489,9 +494,9 @@ void AliLevel3::ProcessSlice(Int_t slice){
     memory->Free();
   }
   fBenchmark->Start("Patch Merger");
-//  fTrackMerger->SlowMerge();
+  fTrackMerger->SlowMerge();
   //fTrackMerger->AddAllTracks();
-  fTrackMerger->Merge();
+  //fTrackMerger->Merge();
   fBenchmark->Stop("Patch Merger");
   /*
   //write merged tracks
@@ -514,7 +519,6 @@ void AliLevel3::WriteSpacePoints(UInt_t npoints,AliL3SpacePointData *points,
   char name[256];
   sprintf(name,"%spoints_%d_%d.raw",fWriteOutPath,slice,patch);
   AliL3MemHandler * memory = new AliL3MemHandler();
-  memory->SetTransformer(fTransformer);
   memory->SetBinaryOutput(name);
   memory->Transform(npoints,points,slice);
   memory->Memory2Binary(npoints,points);
@@ -522,7 +526,6 @@ void AliLevel3::WriteSpacePoints(UInt_t npoints,AliL3SpacePointData *points,
   delete  memory;
 }
 
-
 Int_t AliLevel3::WriteTracks(char *filename,AliL3Merger *merger,char opt){
   AliL3MemHandler *memory = new AliL3MemHandler();
   memory->SetBinaryOutput(filename);