]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - MUON/MUONrawclusters.C
Adding local data container for clusterisation and tracking (Christian Finck)
[u/mrichter/AliRoot.git] / MUON / MUONrawclusters.C
index 52efe77fd0301a4b89436ee19a5e532d60c32cfe..2a42f8caa3a40cf45f9718a5b2db1304d4e6d483 100644 (file)
@@ -15,7 +15,8 @@
 
 /* $Id$ */
 
-#include "iostream.h"
+#if !defined(__CINT__) || defined(__MAKECINT__)
+//#include "iostream.h"
 
 #include <TClassTable.h>
 #include <TClonesArray.h>
 #include "AliMUON.h"
 
 #include "AliMUONClusterFinderVS.h"
+//#include "AliMUONClusterFinderAZ.h"
+#include "AliMUONClusterReconstructor.h"
+#endif
 
 void MUONrawclusters (char* filename="galice.root", Int_t evNumber1=0,Int_t evNumber2=9999) 
 {
-  //////////////////////////////////////
-  //                                  //
-  // ROOT macro for ALICE Dimuon Arm: //
-  // Clusterization of digits         //
-  //                                  //
-  //////////////////////////////////////
-  //
-  // Adds the tree TR for raw clusters
-  // to the ROOT file "galice.root"
-  // containing the digits (tree TD).
-  //
-  // Arguments:
-  //   evNumber1 = first event number to act on in file "galice.root"
-  //   evNumber2 = last event number to act on in file "galice.root"
-  //
-  // Input/output file:
-  //   "galice.root"
-  //
-  //__________________________________________________________________________
-
-//  // Dynamically link some shared libs
-
-  //if (gClassTable->GetID("AliRun") < 0) {
-  //   gROOT->LoadMacro("$ALICE_ROOT/macros/loadlibs.C");
-  //   loadlibs();
-  //    }
-
  // Creating Run Loader and openning file containing Hits
-  AliRunLoader * RunLoader = AliRunLoader::Open(filename,"MUONFolder","UPDATE");
+  AliRunLoader* RunLoader = AliRunLoader::Open(filename,"MUONLoader","UPDATE");
   if (RunLoader ==0x0) {
     printf(">>> Error : Error Opening %s file \n",filename);
     return;
   }
-
-  // Loading AliRun master
-  RunLoader->UnloadgAlice();
-  RunLoader->LoadgAlice();
-  gAlice = RunLoader->GetAliRun();
-
+  if (RunLoader->GetAliRun() == 0x0) RunLoader->LoadgAlice();
+  
   // Loading MUON subsystem
-  AliMUON * MUON = (AliMUON *) gAlice->GetDetector("MUON");
-  AliLoader * MUONLoader = RunLoader->GetLoader("MUONLoader");
-  AliMUONData * muondata = MUON->GetMUONData();
+  AliLoader* MUONLoader = RunLoader->GetLoader("MUONLoader");
+  
+  MUONLoader->LoadDigits("READ");
+  MUONLoader->LoadRecPoints("UPDATE");
 
   Int_t ievent, nevents;
   nevents = RunLoader->GetNumberOfEvents();
 
+  AliMUONClusterReconstructor* Reco = new AliMUONClusterReconstructor(MUONLoader);
+  AliMUONData* muondata = Reco->GetMUONData();
+
   for (Int_t i=0; i<10; i++) {
-    //RecModel = new AliMUONClusterFinderVS();
-    AliMUONClusterFinderVS *RecModel = new AliMUONClusterFinderVS();
+    AliMUONClusterFinderVS* RecModel = new AliMUONClusterFinderVS();
     // RecModel->SetTracks(16,17);    
     // RecModel->SetTracks(266,267);    
     RecModel->SetGhostChi2Cut(10);
-    MUON->SetReconstructionModel(i,RecModel);
+    Reco->SetReconstructionModel(i,RecModel);
   } 
 
-  MUONLoader->LoadDigits("READ");
-  MUONLoader->LoadRecPoints("UPDATE");
-//
-//   Loop over events              
-  //
-    Int_t Nh=0;
-    Int_t Nh1=0;
-    //    gAlice->RunReco("MUON", evNumber1, evNumber2);
-    if (evNumber2>nevents) evNumber2=nevents;
-    for(Int_t ievent=evNumber1; ievent<evNumber2; ievent++) {
+  // Testing if RawClusterisation has already been done
+  RunLoader->GetEvent(0);
+  if (MUONLoader->TreeR()) {
+    if (muondata->IsRawClusterBranchesInTree()) {
+      MUONLoader->UnloadRecPoints();
+      MUONLoader->LoadRecPoints("RECREATE");
+      printf("Recreating RecPoints files\n");
+    }
+  }
+
+//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+    if (evNumber2 > nevents) evNumber2 = nevents;
+
+    for(ievent = evNumber1; ievent < evNumber2; ievent++) {
       printf("event %d\n",ievent);
       RunLoader->GetEvent(ievent);
 
@@ -106,15 +86,23 @@ void MUONrawclusters (char* filename="galice.root", Int_t evNumber1=0,Int_t evNu
       if (MUONLoader->TreeR() == 0x0) 
        MUONLoader->MakeRecPointsContainer();
       else {
-       if (muondata->IsRawClusterBranchesInTree()){ // Test if rawcluster has already been done before
-         if (ievent==evNumber1) MUONLoader->UnloadRecPoints();
+       if (muondata->IsRawClusterBranchesInTree()){ 
+         // Test if rawcluster has already been done before
+         if (ievent == evNumber1) MUONLoader->UnloadRecPoints();
          MUONLoader->MakeRecPointsContainer();  // Redoing clusterisation
-         Info("RecPointsContainer","Recreating RecPointsContainer and deleting previous ones");
+         Info("RecPointsContainer",
+              "Recreating RecPointsContainer and deleting previous ones");
        }
       }
       muondata->MakeBranch("RC");
       muondata->SetTreeAddress("D,RC");
-      MUON->Digits2Reco(); 
+
+      Reco->Digits2Clusters();
+  
+      muondata->Fill("RC"); //Filling Reconstructed Cluster
+      MUONLoader->WriteRecPoints("OVERWRITE");
+      muondata->ResetRawClusters();  
+      muondata->ResetDigits();     
     }
     MUONLoader->UnloadDigits();
     MUONLoader->UnloadRecPoints();