]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - VZERO/AliVZERODigitizer.h
Adding include path to allow compilation of CleanGeom task
[u/mrichter/AliRoot.git] / VZERO / AliVZERODigitizer.h
index 4c8612337fe57d793dfe27f4789277368230b551..45a019c76b5e1af848ddb29a24d3e1d9c78b1956 100644 (file)
 
 #include "AliDigitizer.h"
 
+#include "AliVZEROConst.h"
+
 class TClonesArray;
-class AliRunDigitizer;
+class TF1;
+class AliDigitizationInput;
 class AliCDBManager;
 class AliCDBStorage;
 class AliVZEROCalibData;
+class AliVZERO;
 
 class AliVZERODigitizer: public AliDigitizer {
 
  public:
 
-   AliVZERODigitizer() ;                       // constructor
-   AliVZERODigitizer(AliRunDigitizer *manager);// constructor
-   virtual ~AliVZERODigitizer() ;              // destructor
+   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   Exec(Option_t* option=0);
+   virtual void   Digitize(Option_t* option=0);
 
-   void AddDigit(Int_t cellnumber, Int_t adc, Int_t time);
-   void ResetDigit();
-  
+   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): 
-      AliDigitizer(digitizer)
-      {Fatal("AliVZERODigitizer", "copy constructor not implemented");}
-   AliVZERODigitizer& operator = (const AliVZERODigitizer& /*digitizer*/) 
-      {Fatal("operator=", "assignment operator not implemented"); return *this;}
+   AliVZERODigitizer(const AliVZERODigitizer& /*digitizer*/); 
+      
+   AliVZERODigitizer& operator = (const AliVZERODigitizer& /*digitizer*/); 
   
-   Float_t fPhotoCathodeEfficiency; // Photocathode efficiency
-   Float_t fPMVoltage ;             // Photomultiplier voltage
-   Float_t fPMGain;                 // Photomultiplier gain
+   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
 
-   Int_t   fNdigits;                //! Number of digits
-   TClonesArray *fDigits;           //! List of digits
+   DigiTask_t fTask;                 //! The task (to be) executed by the digitizer
+   AliVZERO  *fVZERO;                //! Pointer to AliDetector object
 
-   ClassDef(AliVZERODigitizer,2)    // digitizer for VZERO
+   ClassDef(AliVZERODigitizer,7)     // digitizer for VZERO
 
 };