#ifndef ALIPHOSDIGIT_H
#define ALIPHOSDIGIT_H
#include "AliDigitNew.h"
using std::ostream;
class AliPHOSDigit : public AliDigitNew {
friend ostream& operator << ( ostream& , const AliPHOSDigit&) ;
public:
AliPHOSDigit() ;
AliPHOSDigit(Int_t primary, Int_t id, Int_t DigEnergy, Float_t Time, Int_t index = -1) ;
AliPHOSDigit(Int_t primary, Int_t id, Float_t energy , Float_t Time, Int_t index = -1) ;
AliPHOSDigit(const AliPHOSDigit & digit) ;
virtual ~AliPHOSDigit() ;
void Clear(const Option_t*);
Bool_t operator==(const AliPHOSDigit &rValue) const;
AliPHOSDigit& operator += (AliPHOSDigit const &rValue) ;
AliPHOSDigit& operator *= (Float_t factor) ;
public:
Int_t Compare(const TObject * obj) const ;
Int_t GetNprimary() const { return fNprimary ; }
Int_t GetPrimary(Int_t index) const ;
Float_t GetEnergy(void) const {return fEnergy ;}
Float_t GetTime(void) const {return fTime ;}
Float_t GetTimeR(void) const {return fTimeR ;}
Int_t GetNSamplesHG() const {return fNSamplesHG;}
Int_t GetNSamplesLG() const {return fNSamplesLG;}
UShort_t *GetSamplesHG() const {return fSamplesHG;}
UShort_t *GetSamplesLG() const {return fSamplesLG;}
Bool_t IsSortable() const { return kTRUE ; }
Bool_t IsLG() const {return fIsLG ;}
void Print(const Option_t * = "") const;
void SetAmp(Int_t Amp) {fAmp = Amp ;}
void SetEnergy(Float_t E) {fEnergy= E ;}
void SetTime(Float_t time) {fTime = time ;}
void SetTimeR(Float_t time) {fTimeR = time ;}
void SetALTROSamplesHG(Int_t nSamplesHG, Int_t *samplesHG);
void SetALTROSamplesLG(Int_t nSamplesLG, Int_t *samplesLG);
void ShiftPrimary(Int_t shift);
void SetLG(Bool_t inLG){fIsLG=inLG;}
private:
AliPHOSDigit & operator = (const AliPHOSDigit & );
private:
Bool_t fIsLG;
Int_t fNprimary ;
Int_t * fPrimary ;
Float_t fEnergy ;
Float_t fTime ;
Float_t fTimeR ;
Int_t fNSamplesHG;
Int_t fNSamplesLG;
UShort_t *fSamplesHG;
UShort_t *fSamplesLG;
ClassDef(AliPHOSDigit,7)
} ;
#endif // ALIPHOSDIGIT_H