ROOT logo
#ifndef ALIVZERORECONSTRUCTOR_H
#define ALIVZERORECONSTRUCTOR_H
/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved.*/
/* See cxx source for full Copyright notice                              */
/* $Id$  */

///////////////////////////////////////////////////////////////////////////
///                                                                      //
/// class for VZERO reconstruction                                       //
///                                                                      //
///////////////////////////////////////////////////////////////////////////

#include "AliReconstructor.h"
#include "AliCDBManager.h"
#include "AliCDBStorage.h"
#include "AliCDBEntry.h"

#include "AliLog.h"
#include "AliESDVZERO.h"
#include "AliVZERORecoParam.h"

class TF1;
class TH1F;
class AliVZEROCalibData;
class AliVZEROTriggerData;
class AliESDEvent;
class AliESDVZEROfriend;

class AliVZEROReconstructor: public AliReconstructor {
public:
  AliVZEROReconstructor();
  virtual ~AliVZEROReconstructor();
  virtual void   Init();
  
  virtual void   Reconstruct(AliRawReader* /*rawReader*/, 
		             TTree* /*clustersTree*/) const {
                 AliError("Method not implemented"); return;};
  virtual void   Reconstruct(TTree*, TTree*) const {return;};
  
  virtual void   FillESD(TTree* digitsTree, TTree* /*clustersTree*/, 
			 AliESDEvent* esd) const;

  virtual void   FillESD(AliRawReader* /*rawReader*/, TTree* /*clustersTree*/, 
			 AliESDEvent* /*esd*/) const {
                 AliError("Method not implemented"); return;};
  
  virtual Bool_t HasDigitConversion() const { return kTRUE; }
  virtual void   ConvertDigits(AliRawReader* rawReader,
			       TTree* digitsTree) const;

  static const AliVZERORecoParam* GetRecoParam() { return dynamic_cast<const AliVZERORecoParam*>(AliReconstructor::GetRecoParam(12)); }
                 		 
  AliCDBStorage     *SetStorage(const char* uri);
  void GetCollisionMode();
  
  AliVZEROCalibData *GetCalibData() const; 
  Float_t            CorrectLeadingTime(Int_t i, Float_t time, Float_t adc) const;

  enum {kInvalidADC   =  -1024,
        kInvalidTime  =  -1024};

  AliESDVZERO*    GetESDVZERO() { return fESDVZERO; }

protected:
  AliESDVZERO*        fESDVZERO;       // ESD output object  
  AliESDEvent*             fESD;       // ESD object
  AliESDVZEROfriend*  fESDVZEROfriend; // ESD friend object (complete raw data)
  
private:
  AliVZEROReconstructor(const AliVZEROReconstructor& reconstructor);
  AliVZEROReconstructor& operator = (const AliVZEROReconstructor& reconstructor);
  
  AliVZEROCalibData* fCalibData;      //! calibration data
  AliVZEROTriggerData* fTriggerData;    //! calibration data
  Float_t            fTimeOffset[64]; //! HPTDC time offsets channel by channel
  TF1*               fTimeSlewing;    //! Function for time slewing correction
  TObjArray*         fSaturationCorr; //! Array with functions for correcting the signal saturation
  TH1F*              fEqFactors;      //! Histogram with the equalization factors used in event-plane reconstruction

  Int_t              fCollisionMode;  // =0->p-p, =1->A-A
  Float_t            fBeamEnergy;     // beam energy

  mutable TClonesArray *fDigitsArray; // clones-array for ConvertDigits() and FillESD()

  ClassDef(AliVZEROReconstructor, 5)  // class for the VZERO reconstruction
};

#endif
 AliVZEROReconstructor.h:1
 AliVZEROReconstructor.h:2
 AliVZEROReconstructor.h:3
 AliVZEROReconstructor.h:4
 AliVZEROReconstructor.h:5
 AliVZEROReconstructor.h:6
 AliVZEROReconstructor.h:7
 AliVZEROReconstructor.h:8
 AliVZEROReconstructor.h:9
 AliVZEROReconstructor.h:10
 AliVZEROReconstructor.h:11
 AliVZEROReconstructor.h:12
 AliVZEROReconstructor.h:13
 AliVZEROReconstructor.h:14
 AliVZEROReconstructor.h:15
 AliVZEROReconstructor.h:16
 AliVZEROReconstructor.h:17
 AliVZEROReconstructor.h:18
 AliVZEROReconstructor.h:19
 AliVZEROReconstructor.h:20
 AliVZEROReconstructor.h:21
 AliVZEROReconstructor.h:22
 AliVZEROReconstructor.h:23
 AliVZEROReconstructor.h:24
 AliVZEROReconstructor.h:25
 AliVZEROReconstructor.h:26
 AliVZEROReconstructor.h:27
 AliVZEROReconstructor.h:28
 AliVZEROReconstructor.h:29
 AliVZEROReconstructor.h:30
 AliVZEROReconstructor.h:31
 AliVZEROReconstructor.h:32
 AliVZEROReconstructor.h:33
 AliVZEROReconstructor.h:34
 AliVZEROReconstructor.h:35
 AliVZEROReconstructor.h:36
 AliVZEROReconstructor.h:37
 AliVZEROReconstructor.h:38
 AliVZEROReconstructor.h:39
 AliVZEROReconstructor.h:40
 AliVZEROReconstructor.h:41
 AliVZEROReconstructor.h:42
 AliVZEROReconstructor.h:43
 AliVZEROReconstructor.h:44
 AliVZEROReconstructor.h:45
 AliVZEROReconstructor.h:46
 AliVZEROReconstructor.h:47
 AliVZEROReconstructor.h:48
 AliVZEROReconstructor.h:49
 AliVZEROReconstructor.h:50
 AliVZEROReconstructor.h:51
 AliVZEROReconstructor.h:52
 AliVZEROReconstructor.h:53
 AliVZEROReconstructor.h:54
 AliVZEROReconstructor.h:55
 AliVZEROReconstructor.h:56
 AliVZEROReconstructor.h:57
 AliVZEROReconstructor.h:58
 AliVZEROReconstructor.h:59
 AliVZEROReconstructor.h:60
 AliVZEROReconstructor.h:61
 AliVZEROReconstructor.h:62
 AliVZEROReconstructor.h:63
 AliVZEROReconstructor.h:64
 AliVZEROReconstructor.h:65
 AliVZEROReconstructor.h:66
 AliVZEROReconstructor.h:67
 AliVZEROReconstructor.h:68
 AliVZEROReconstructor.h:69
 AliVZEROReconstructor.h:70
 AliVZEROReconstructor.h:71
 AliVZEROReconstructor.h:72
 AliVZEROReconstructor.h:73
 AliVZEROReconstructor.h:74
 AliVZEROReconstructor.h:75
 AliVZEROReconstructor.h:76
 AliVZEROReconstructor.h:77
 AliVZEROReconstructor.h:78
 AliVZEROReconstructor.h:79
 AliVZEROReconstructor.h:80
 AliVZEROReconstructor.h:81
 AliVZEROReconstructor.h:82
 AliVZEROReconstructor.h:83
 AliVZEROReconstructor.h:84
 AliVZEROReconstructor.h:85
 AliVZEROReconstructor.h:86
 AliVZEROReconstructor.h:87
 AliVZEROReconstructor.h:88