Integrating the Cooked Matrix tracker into the commom reconstruction framework
[u/mrichter/AliRoot.git] / ITS / UPGRADE / AliITSUSDigit.h
1 #ifndef ALIITSUSDIGIT_H
2 #define ALIITSUSDIGIT_H
3 /* Copyright(c) 2007-2009, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice     */
5
6 #include <TObject.h>
7
8 using std::istream;
9
10 class AliITSUSDigit: public TObject 
11 {
12  public:
13   enum {kBuffSize=10};
14   //
15   AliITSUSDigit();
16   AliITSUSDigit(Int_t track,Int_t hit,UInt_t chip,UInt_t index,Double_t signal,Int_t roCycle=0);
17   AliITSUSDigit(UInt_t chip,UInt_t index,Double_t noise,Int_t roCycle=0);
18   AliITSUSDigit(const AliITSUSDigit &source);
19   AliITSUSDigit& operator=(const AliITSUSDigit &source);
20   virtual ~AliITSUSDigit() {}
21   Double_t GetSignal(Int_t i)    const {return ( (i>=0&&i<kBuffSize) ? fSignal[i] : 0.0);}
22   Double_t GetSignal()           const {return fTsignal;}
23   Double_t GetSignalAfterElect() const {return fSignalAfterElect;}
24   Double_t GetSumSignal()        const {return fTsignal+fNoise;}
25   Double_t GetNoise()            const {return fNoise;}
26   Int_t GetNsignals()            const {return kBuffSize;}
27   void AddSignal(Int_t track,Int_t hit,Double_t signal);
28   void AddSignalAfterElect(Double_t signal) {fSignalAfterElect += signal;}
29   void AddNoise(Double_t noise)  {fNoise += noise;}
30   void SetNoise(Double_t noise)  {fNoise = noise;}
31   void SetROCycle(Int_t cl)      {fROCycle=cl;}
32   //
33   Int_t GetTrack(Int_t i)        const {return ((i>=0&&i<kBuffSize) ? fTrack[i] : 0);}
34   Int_t GetHit(Int_t i)          const {return ((i>=0&&i<kBuffSize) ? fHits[i] : 0);}
35   Int_t GetChip()              const {return fChip;}
36   Int_t GetNTracks()             const {return fNTracks;}
37   Int_t GetROCycle()             const {return fROCycle;}
38   //
39   void Add(const AliITSUSDigit *pl);
40   void AddTo(Int_t fileIndex, const AliITSUSDigit *pl);
41   void ShiftIndices(Int_t fileIndex);
42   void Print(Option_t *option="")                 const;
43   Int_t Read(const char *name)                          {return TObject::Read(name);}
44   //
45   virtual Bool_t IsSortable()                     const {return kTRUE;}
46   virtual Bool_t IsEqual(const TObject* obj)      const {return GetUniqueID()==obj->GetUniqueID();}
47   virtual Int_t  Compare(const TObject* obj)      const;
48   //
49   static Int_t GetBuffSize() {return kBuffSize;};
50   //
51  private:
52   UShort_t fChip;            // chip number
53   UShort_t fNTracks;           // number of tracks contributing
54   Int_t    fROCycle;           // readOut cycle
55   Int_t    fTrack[kBuffSize];  // track Number
56   Int_t    fHits[kBuffSize];   // hit number
57   Float_t  fSignal[kBuffSize]; // Signals
58   Float_t  fTsignal;           // Total signal (no noise)
59   Float_t  fNoise;             // Total noise, coupling, ...
60   Float_t  fSignalAfterElect;  // Signal after electronics
61   //
62   ClassDef(AliITSUSDigit,2) // Item list of signals and track numbers
63 };      
64
65
66
67 #endif