VZERO reco moved to LocalEventReconstruction method of AliReconstruction, i.e. the...
[u/mrichter/AliRoot.git] / VZERO / AliVZEROReconstructor.cxx
index 8485a03..c4da8bf 100644 (file)
@@ -22,7 +22,9 @@
 ///////////////////////////////////////////////////////////////////////////////
 
 #include "AliRunLoader.h"
+#include "AliRawReader.h"
 #include "AliVZEROReconstructor.h"
+#include "AliVZERORawStream.h"
 #include "AliESD.h"
 
 ClassImp(AliVZEROReconstructor)
@@ -69,19 +71,41 @@ void AliVZEROReconstructor::Init(AliRunLoader* runLoader)
 }
 
 //______________________________________________________________________
-void AliVZEROReconstructor::Reconstruct(AliRunLoader* runLoader) const
+void AliVZEROReconstructor::ConvertDigits(AliRawReader* rawReader, TTree* digitsTree) const
 {
+  if (!digitsTree) {
+    AliError("No digits tree!");
+    return;
+  }
 
-  AliVZEROLoader* loader = (AliVZEROLoader* )runLoader->GetLoader( "VZEROLoader" );
-//  AliVZEROLoader* loader = (AliVZEROLoader* )fRunLoader->GetLoader( "VZEROLoader" );
-  loader->LoadDigits("READ");
-  TTree* vzeroDigitsTree = loader->TreeD();
-  if (!vzeroDigitsTree) return;
+  TClonesArray* digitsArray = new TClonesArray("AliVZEROdigit");
+  digitsTree->Branch("VZERODigit", &digitsArray);
+
+  rawReader->Reset();
+  AliVZERORawStream rawStream(rawReader);
+  while (rawStream.Next()) {
+    Int_t pmNumber = rawStream.GetCell();
+    Int_t adc = rawStream.GetADC();  
+    Int_t time = rawStream.GetTime();
+    new ((*digitsArray)[digitsArray->GetEntriesFast()])
+      AliVZEROdigit(pmNumber,adc,time);
+  }
+
+  digitsTree->Fill();
+}
+
+//______________________________________________________________________
+void AliVZEROReconstructor::FillESD(TTree* digitsTree, TTree* /*clustersTree*/,
+                                   AliESD* esd) const
+{
+  if (!digitsTree) {
+    AliError("No digits tree!");
+    return;
+  }
 
-  TClonesArray* vzeroDigits = new TClonesArray("AliVZEROdigit",1000);
-  TBranch* digitBranch = vzeroDigitsTree->GetBranch("VZERODigit");
-  digitBranch->SetAddress(&vzeroDigits);
+  TClonesArray* digitsArray = NULL;
+  TBranch* digitBranch = digitsTree->GetBranch("VZERODigit");
+  digitBranch->SetAddress(&digitsArray);
 
   Int_t   NbPMV0A = 0;
   Int_t   NbPMV0C = 0;
@@ -106,14 +130,14 @@ void AliVZEROReconstructor::Reconstruct(AliRunLoader* runLoader) const
        MRingV0C[j] = 0;}
      
   // loop over VZERO entries
-  Int_t nEntries = (Int_t)vzeroDigitsTree->GetEntries();
+  Int_t nEntries = (Int_t)digitsTree->GetEntries();
   for (Int_t e=0; e<nEntries; e++) {
-    vzeroDigitsTree->GetEvent(e);
+    digitsTree->GetEvent(e);
 
-    Int_t nDigits = vzeroDigits->GetEntriesFast();
+    Int_t nDigits = digitsArray->GetEntriesFast();
     
     for (Int_t d=0; d<nDigits; d++) {    
-      AliVZEROdigit* digit = (AliVZEROdigit*)vzeroDigits->At(d);      
+      AliVZEROdigit* digit = (AliVZEROdigit*)digitsArray->At(d);      
       Int_t  PMNumber      = digit->PMNumber();  
       ADC[PMNumber] = digit->ADC();  
       if (PMNumber<=31) {
@@ -152,20 +176,10 @@ void AliVZEROReconstructor::Reconstruct(AliRunLoader* runLoader) const
   fESDVZERO->SetMRingV0A(MRingV0A);
   fESDVZERO->SetMRingV0C(MRingV0C);
   
-}
-
-
-//_____________________________________________________________________________
-void AliVZEROReconstructor::FillESD(AliRunLoader* /*runLoader*/, 
-                                   AliESD* esd) const
-{
-// fill ESD 
-
-   if (esd) { 
-      AliDebug(1, Form("Writing VZERO data to ESD tree"));
-      esd->SetVZEROData(fESDVZERO);
-   }
-  
+  if (esd) { 
+    AliDebug(1, Form("Writing VZERO data to ESD tree"));
+    esd->SetVZEROData(fESDVZERO);
+  }
 }
 
 //_____________________________________________________________________________