#ifndef ALIPMDDIGITIZER_H
#define ALIPMDDIGITIZER_H
#include "AliDigitizer.h"
class TClonesArray;
class TFile;
class TObjArray;
class TParticle;
class TTree;
class TNtuple;
class AliLoader;
class AliRunLoader;
class AliRun;
class AliDetector;
class AliPMDhit;
class AliHit;
class AliHeader;
class AliDigitizationInput;
class AliCDBManager;
class AliCDBStorage;
class AliPMDcell;
class AliPMDsdigit;
class AliPMDdigit;
class AliPMDCalibData;
class AliPMDPedestal;
class AliPMDDigitizer:public AliDigitizer
{
public:
AliPMDDigitizer();
AliPMDDigitizer(const AliPMDDigitizer &digitizer);
AliPMDDigitizer &operator=(const AliPMDDigitizer &digitizer);
AliPMDDigitizer(AliDigitizationInput* digInput);
virtual ~AliPMDDigitizer();
void OpengAliceFile(const char *file, Option_t *option);
void Hits2SDigits(Int_t ievt);
void Hits2Digits(Int_t ievt);
void SDigits2Digits(Int_t ievt);
void Digitize(Option_t *option);
void MergeSDigits(Int_t filenumber, Int_t troffset);
void TrackAssignment2CPVCell();
void TrackAssignment2Cell();
void MeV2ADC(Float_t mev, Float_t & adc) const;
void AddSDigit(Int_t trnumber, Int_t trpid, Int_t det, Int_t smnumber,
Int_t irow, Int_t icol, Float_t adc);
void AddDigit(Int_t trnumber, Int_t trpid, Int_t det, Int_t smnumber,
Int_t irow, Int_t icol, Float_t adc);
void SetZPosition(Float_t zpos);
Float_t GetZPosition() const;
void ResetCell();
void ResetSDigit();
void ResetDigit();
void ResetCellADC();
void UnLoad(Option_t * option);
Float_t Gain(Int_t det, Int_t smn, Int_t row, Int_t col) const;
AliPMDCalibData *GetCalibGain() const;
AliPMDPedestal *GetCalibPed() const;
protected:
AliRunLoader *fRunLoader;
AliPMDhit *fPMDHit;
AliDetector *fPMD;
AliLoader *fPMDLoader;
AliPMDCalibData *fCalibGain;
AliPMDPedestal *fCalibPed;
TClonesArray *fSDigits;
TClonesArray *fDigits;
TObjArray fCPVCell;
TObjArray fCell;
Int_t fNsdigit;
Int_t fNdigit;
Int_t fDetNo;
Float_t fZPos;
static const Int_t fgkTotUM = 24;
static const Int_t fgkRow = 48;
static const Int_t fgkCol = 96;
Float_t fCPV[fgkTotUM][fgkRow][fgkCol];
Float_t fPRE[fgkTotUM][fgkRow][fgkCol];
Int_t fCPVCounter[fgkTotUM][fgkRow][fgkCol];
Int_t fPRECounter[fgkTotUM][fgkRow][fgkCol];
Int_t fCPVTrackNo[fgkTotUM][fgkRow][fgkCol];
Int_t fPRETrackNo[fgkTotUM][fgkRow][fgkCol];
Int_t fCPVTrackPid[fgkTotUM][fgkRow][fgkCol];
Int_t fPRETrackPid[fgkTotUM][fgkRow][fgkCol];
ClassDef(AliPMDDigitizer,9)
};
#endif