#ifndef ALIITSPLISTITEM_H
#define ALIITSPLISTITEM_H
#include <TObject.h>
using std::istream;
class AliITSpListItem: public TObject {
public:
AliITSpListItem();
AliITSpListItem(Int_t track,Int_t hit,Int_t module,Int_t index,
Double_t signal);
AliITSpListItem(Int_t module,Int_t index,Double_t signal);
virtual ~AliITSpListItem();
AliITSpListItem(const AliITSpListItem &source);
virtual AliITSpListItem& operator=(const AliITSpListItem &source);
void Build(Int_t module,Int_t index,Double_t noise);
void Build(Int_t track,Int_t hit,Int_t module,Int_t index,Double_t signal);
void Build(const AliITSpListItem &source);
virtual Double_t GetSignal(Int_t i) const {
return ( (i>=0&&i<fgksize) ? fSignal[i] : 0.0);}
virtual Double_t GetSignal() const {
return fTsignal;}
virtual Double_t GetSignalAfterElect() const {
return fSignalAfterElect;}
virtual Double_t GetSumSignal() const {return fTsignal+fNoise;}
virtual Double_t GetNoise() const {return fNoise;}
virtual Int_t GetNsignals() const {return fgksize;}
virtual void AddSignal(Int_t track,Int_t hit,Int_t module,
Int_t index,Double_t signal);
virtual void AddSignalAfterElect(Int_t module,Int_t index,Double_t signal);
virtual void AddNoise(Int_t module,Int_t index,Double_t noise);
virtual Int_t GetTrack(Int_t i) const {
return ((i>=0&&i<fgksize) ? fTrack[i] : 0);}
virtual Int_t GetHit(Int_t i) const {
return ((i>=0&&i<fgksize) ? fHits[i] : 0);}
virtual Int_t GetModule() const {
return fmodule;}
virtual Int_t GetIndex() const {
return findex;}
virtual void Add(AliITSpListItem *pl);
virtual void AddTo(Int_t fileIndex,AliITSpListItem *pl);
virtual Int_t ShiftIndex(Int_t in,Int_t trk) const;
void Print(ostream *os) const;
void Read(istream *is);
virtual void Print(Option_t *option="") const {TObject::Print(option);}
virtual Int_t Read(const char *name) {return TObject::Read(name);}
Bool_t IsUsed() const {return fUsed;}
void MarkUnused() {fUsed = kFALSE;}
static Int_t GetMaxKept() {return fgksize;};
private:
static const Int_t fgksize = 10;
Int_t fmodule;
Int_t findex;
Int_t fTrack[fgksize];
Int_t fHits[fgksize];
Double_t fSignal[fgksize];
Double_t fTsignal;
Double_t fNoise;
Double_t fSignalAfterElect;
Bool_t fUsed;
ClassDef(AliITSpListItem,4)
};
ostream & operator<<(ostream &os,AliITSpListItem &source);
istream & operator>>(istream &is,AliITSpListItem &source);
#endif