ROOT logo
#ifndef ALIVZERODigitizer_H
#define ALIVZERODigitizer_H
/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 * See cxx source for full Copyright notice                               */
  
///_________________________________________________________________________
///
///  Class for making Digits in VZERO 
///_________________________________________________________________________   


// --- Standard library ---

// --- AliRoot header files ---

#include "AliDigitizer.h"

#include "AliVZEROConst.h"

class TClonesArray;
class TF1;
class AliDigitizationInput;
class AliCDBManager;
class AliCDBStorage;
class AliVZEROCalibData;
class AliVZERO;

class AliVZERODigitizer: public AliDigitizer {

 public:

   enum DigiTask_t { 
     kHits2Digits, 
     kHits2SDigits
   };
  
   AliVZERODigitizer() ;                       // default constructor
   AliVZERODigitizer(AliVZERO *vzero, DigiTask_t task);         // constructor
   AliVZERODigitizer(AliDigitizationInput* digInput); // constructor
   virtual ~AliVZERODigitizer() ;              // destructor

   virtual Bool_t Init();
   virtual void   Digitize(Option_t* option=0);

   void DigitizeHits();
   void DigitizeSDigits();
   void WriteDigits(AliLoader *loader);
   void WriteSDigits(AliLoader *loader);
   void ReadSDigits();

   void AddDigit(Int_t pmnumber, Float_t time, Float_t width, Bool_t integrator, Short_t *chargeADC, Int_t *labels);
   void AddSDigit(Int_t pmnumber, Int_t nbins, Float_t *charges, Int_t *labels);
   TClonesArray* DigitsArray(); 
   TClonesArray* SDigitsArray(); 
   void ResetDigits();
						
   AliVZEROCalibData *GetCalibData() const;

   TF1*   GetSignalShape() const { return fSignalShape; }
   TF1*   GetPMResponse() const { return fPMResponse; }
   TF1*   GetSinglePhESpectrum() const { return fSinglePhESpectrum; }
   double SignalShape(double *x, double *par);
   double PMResponse(double *x, double *par);
   double SinglePhESpectrum(double *x, double *par);

   Int_t  Cell2Pmt(Int_t cell) const;

 protected:
 
   AliVZEROCalibData *fCalibData;  //! calibration data
 
 private:
 
   AliVZERODigitizer(const AliVZERODigitizer& /*digitizer*/); 
      
   AliVZERODigitizer& operator = (const AliVZERODigitizer& /*digitizer*/); 
  
   Float_t  fPhotoCathodeEfficiency; // Photocathode efficiency

   Int_t    fNdigits;                //! Number of digits
   TClonesArray *fDigits;            //! List of digits
   
   TF1*     fSignalShape;            // function which describes the PMT signal shape
   TF1*     fPMResponse;             // function which describes the PM time response
   TF1*     fSinglePhESpectrum;      // function which describes the single ph.e. PM response

   Float_t  fAdc[64][kNClocks];      //! Container for ADC samples
   Float_t  fLeadingTime[64];        //! Leading time container
   Float_t  fTimeWidth[64];          //! Time width container
   Float_t  fAdcPedestal[64][2];     //! Pedestals, one per integrator
   Float_t  fAdcSigma[64][2];        //! Sigma of pedestals
   Float_t  fPmGain[64];             //! PMT gains
   Int_t    fNBins[64];              //! Number of bins in fTime container
   Int_t    fNBinsLT[64];            //! Number of bins in fTime container (match window only)
   Float_t  fBinSize[64];            //! Bin size in fTime container
   Float_t  fHptdcOffset[64];        //! HPTDC time offsets channel by channel
   Float_t  fClockOffset[64];        //! Clock offsets channel by channel

   Float_t *fTime[64];               //! Main container used in digitization
   Int_t    fLabels[64][3];          //! Container for MC labels
   Bool_t   fEvenOrOdd;              //! Choise of integrator in central ADC sample

   DigiTask_t fTask;                 //! The task (to be) executed by the digitizer
   AliVZERO  *fVZERO;                //! Pointer to AliDetector object

   ClassDef(AliVZERODigitizer,7)     // digitizer for VZERO

};

#endif // AliVZERODigitizer_H
 AliVZERODigitizer.h:1
 AliVZERODigitizer.h:2
 AliVZERODigitizer.h:3
 AliVZERODigitizer.h:4
 AliVZERODigitizer.h:5
 AliVZERODigitizer.h:6
 AliVZERODigitizer.h:7
 AliVZERODigitizer.h:8
 AliVZERODigitizer.h:9
 AliVZERODigitizer.h:10
 AliVZERODigitizer.h:11
 AliVZERODigitizer.h:12
 AliVZERODigitizer.h:13
 AliVZERODigitizer.h:14
 AliVZERODigitizer.h:15
 AliVZERODigitizer.h:16
 AliVZERODigitizer.h:17
 AliVZERODigitizer.h:18
 AliVZERODigitizer.h:19
 AliVZERODigitizer.h:20
 AliVZERODigitizer.h:21
 AliVZERODigitizer.h:22
 AliVZERODigitizer.h:23
 AliVZERODigitizer.h:24
 AliVZERODigitizer.h:25
 AliVZERODigitizer.h:26
 AliVZERODigitizer.h:27
 AliVZERODigitizer.h:28
 AliVZERODigitizer.h:29
 AliVZERODigitizer.h:30
 AliVZERODigitizer.h:31
 AliVZERODigitizer.h:32
 AliVZERODigitizer.h:33
 AliVZERODigitizer.h:34
 AliVZERODigitizer.h:35
 AliVZERODigitizer.h:36
 AliVZERODigitizer.h:37
 AliVZERODigitizer.h:38
 AliVZERODigitizer.h:39
 AliVZERODigitizer.h:40
 AliVZERODigitizer.h:41
 AliVZERODigitizer.h:42
 AliVZERODigitizer.h:43
 AliVZERODigitizer.h:44
 AliVZERODigitizer.h:45
 AliVZERODigitizer.h:46
 AliVZERODigitizer.h:47
 AliVZERODigitizer.h:48
 AliVZERODigitizer.h:49
 AliVZERODigitizer.h:50
 AliVZERODigitizer.h:51
 AliVZERODigitizer.h:52
 AliVZERODigitizer.h:53
 AliVZERODigitizer.h:54
 AliVZERODigitizer.h:55
 AliVZERODigitizer.h:56
 AliVZERODigitizer.h:57
 AliVZERODigitizer.h:58
 AliVZERODigitizer.h:59
 AliVZERODigitizer.h:60
 AliVZERODigitizer.h:61
 AliVZERODigitizer.h:62
 AliVZERODigitizer.h:63
 AliVZERODigitizer.h:64
 AliVZERODigitizer.h:65
 AliVZERODigitizer.h:66
 AliVZERODigitizer.h:67
 AliVZERODigitizer.h:68
 AliVZERODigitizer.h:69
 AliVZERODigitizer.h:70
 AliVZERODigitizer.h:71
 AliVZERODigitizer.h:72
 AliVZERODigitizer.h:73
 AliVZERODigitizer.h:74
 AliVZERODigitizer.h:75
 AliVZERODigitizer.h:76
 AliVZERODigitizer.h:77
 AliVZERODigitizer.h:78
 AliVZERODigitizer.h:79
 AliVZERODigitizer.h:80
 AliVZERODigitizer.h:81
 AliVZERODigitizer.h:82
 AliVZERODigitizer.h:83
 AliVZERODigitizer.h:84
 AliVZERODigitizer.h:85
 AliVZERODigitizer.h:86
 AliVZERODigitizer.h:87
 AliVZERODigitizer.h:88
 AliVZERODigitizer.h:89
 AliVZERODigitizer.h:90
 AliVZERODigitizer.h:91
 AliVZERODigitizer.h:92
 AliVZERODigitizer.h:93
 AliVZERODigitizer.h:94
 AliVZERODigitizer.h:95
 AliVZERODigitizer.h:96
 AliVZERODigitizer.h:97
 AliVZERODigitizer.h:98
 AliVZERODigitizer.h:99
 AliVZERODigitizer.h:100
 AliVZERODigitizer.h:101
 AliVZERODigitizer.h:102
 AliVZERODigitizer.h:103
 AliVZERODigitizer.h:104
 AliVZERODigitizer.h:105
 AliVZERODigitizer.h:106
 AliVZERODigitizer.h:107
 AliVZERODigitizer.h:108
 AliVZERODigitizer.h:109
 AliVZERODigitizer.h:110