///////////////////////////////////////////////////////////////////////////////
#include "AliRunLoader.h"
+#include "AliRawReader.h"
#include "AliVZEROReconstructor.h"
+#include "AliVZERORawStream.h"
#include "AliESD.h"
ClassImp(AliVZEROReconstructor)
}
//______________________________________________________________________
-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;
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) {
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);
+ }
}
//_____________________________________________________________________________