#ifndef ALIPMDCLUSTERFINDER_H
#define ALIPMDCLUSTERFINDER_H
class TClonesArray;
class TFile;
class TTree;
class AliLoader;
class AliRunLoader;
class AliRawReader;
class AliPMDCalibData;
class AliPMDPedestal;
class AliPMDHotData;
class AliPMDNoiseCut;
class AliPMDddlinfoData;
class AliPMDRecoParam;
class AliPMDClusterFinder : public TObject
{
public:
AliPMDClusterFinder();
AliPMDClusterFinder(AliRunLoader* runLoader);
AliPMDClusterFinder(const AliPMDClusterFinder &finder);
AliPMDClusterFinder &operator=(const AliPMDClusterFinder &finder);
virtual ~AliPMDClusterFinder();
void Digits2RecPoints(TTree *digitsTree, TTree *clustersTree,Int_t gRecoMode);
void Digits2RecPoints(AliRawReader *rawReader, TTree *clustersTree,Int_t gRecoMode);
void AddRecPoint(Int_t idet, Int_t ismn, Float_t * clusdata);
void AddRecHit(Int_t celldataX, Int_t celldataY, Int_t celldataTr,
Int_t celldataPid, Float_t celldataAdc);
void ResetCellADC();
void ResetRecpoint();
void ResetRechit();
void Load();
void LoadClusters();
void UnLoad();
void UnLoadClusters();
AliPMDCalibData *GetCalibGain() const;
AliPMDPedestal *GetCalibPed() const;
AliPMDHotData *GetCalibHot() const;
AliPMDNoiseCut *GetNoiseCut() const;
AliPMDddlinfoData *GetDdlinfoData() const;
protected:
AliRunLoader *fRunLoader;
AliLoader *fPMDLoader;
AliPMDCalibData *fCalibGain;
AliPMDPedestal *fCalibPed;
AliPMDHotData *fCalibHot;
AliPMDNoiseCut *fNoiseCut;
AliPMDddlinfoData *fDdlinfo;
const AliPMDRecoParam *fRecoParam;
TTree *fTreeD;
TTree *fTreeR;
TClonesArray *fDigits;
TClonesArray *fRecpoints;
TClonesArray *fRechits;
Int_t fNpoint;
Int_t fNhit;
Int_t fDetNo;
static const Int_t fgkRow = 48;
static const Int_t fgkCol = 96;
Double_t fCellADC[fgkRow][fgkCol];
Int_t fCellTrack[fgkRow][fgkCol];
Int_t fCellPid[fgkRow][fgkCol];
ClassDef(AliPMDClusterFinder,19)
};
#endif