8217fb1fd9d45fdc994c264e26e7ad64c0a6d9e9
[u/mrichter/AliRoot.git] / ITS / AliITSpListItem.h
1 #ifndef ALIITSPLISTITEM_H
2 #define ALIITSPLISTITEM_H
3 /* Copyright(c) 2007-2009, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice     */
5
6 /* $Id$ */
7
8 #include <TObject.h>
9
10
11 class AliITSpListItem: public TObject {
12  public:
13     // Default Constructor
14     AliITSpListItem();
15     // Standard Signal Constructor
16     AliITSpListItem(Int_t track,Int_t hit,Int_t module,Int_t index,
17                    Double_t signal);
18     // Standard Noise Constructor
19     AliITSpListItem(Int_t module,Int_t index,Double_t signal);
20     // Class destrutor
21     virtual ~AliITSpListItem();
22     // Copy Oporator
23     AliITSpListItem(const AliITSpListItem &source);
24     // = Operator
25     virtual AliITSpListItem& operator=(const AliITSpListItem &source);
26     // Building methods: they set completely the status of the object
27     void Build(Int_t module,Int_t index,Double_t noise);
28     void Build(Int_t track,Int_t hit,Int_t module,Int_t index,Double_t signal);
29     void Build(const AliITSpListItem &source);
30     // Returns the signal value in the list of signals
31     virtual Double_t GetSignal(Int_t i) const {
32                             return ( (i>=0&&i<fgksize) ? fSignal[i] : 0.0);}
33     virtual Double_t GetSignal() const {
34                             return fTsignal;}
35     virtual Double_t GetSignalAfterElect() const {
36                             return fSignalAfterElect;}
37     // Returns the Sum/Total signal
38     virtual Double_t GetSumSignal() const {return fTsignal+fNoise;}
39     // Returns the  noise
40     virtual Double_t GetNoise() const {return fNoise;}
41     // Returns the number of stored singals.
42     virtual Int_t GetNsignals() const {return fgksize;}
43     // Addes track number and signal to this existing list.
44     virtual void AddSignal(Int_t track,Int_t hit,Int_t module,
45                            Int_t index,Double_t signal);
46     // Adds signal after electronics to this existing list.
47     virtual void AddSignalAfterElect(Int_t module,Int_t index,Double_t signal);
48     // Addes noise to this existing list.
49     virtual void AddNoise(Int_t module,Int_t index,Double_t noise);
50     // Returns track number.
51     virtual Int_t GetTrack(Int_t i) const {
52                             return ((i>=0&&i<fgksize) ? fTrack[i] : 0);}
53     // Returns hit number.
54     virtual Int_t GetHit(Int_t i) const {
55                             return ((i>=0&&i<fgksize) ? fHits[i] : 0);}
56     // Returns module number.
57     virtual Int_t GetModule() const {
58                             return fmodule;}
59     // Returns index number.
60     virtual Int_t GetIndex() const {
61                             return findex;}
62     // Adds the contents of pl to this 
63     virtual void Add(AliITSpListItem *pl);
64     // Adds the contents of pl to this with track number off set given by
65     // fileIndex.
66     virtual void AddTo(Int_t fileIndex,AliITSpListItem *pl);
67     // Shift an index number to occupy the upper four bits.
68     virtual Int_t ShiftIndex(Int_t in,Int_t trk) const;
69     // Standard ascii class print function
70     void Print(ostream *os) const;
71     // Standard ascii class read function
72     void Read(istream *is);
73     virtual void Print(Option_t *option="") const {TObject::Print(option);}
74     virtual Int_t Read(const char *name) {return TObject::Read(name);}
75     // Check if the item is used or marked as unused
76     Bool_t IsUsed() const {return fUsed;}
77     // Mark the object as unused
78     void MarkUnused()  {fUsed = kFALSE;}
79     // Returns max size of array for for Tracks, Hits, and signals.
80     static Int_t GetMaxKept() {return fgksize;};
81
82  private:
83     static const Int_t fgksize = 10; // Array sizes
84     Int_t    fmodule;         // module number
85     Int_t    findex;          // Strip/row,col number linearlized.
86     Int_t    fTrack[fgksize];  //[fgksize] track Number
87     Int_t    fHits[fgksize];   //[fgksize] hit number
88     Double_t fSignal[fgksize]; //[fgksize] Signals
89     Double_t fTsignal;        // Total signal (no noise)
90     Double_t fNoise;          // Total noise, coupling, ...
91     Double_t fSignalAfterElect; // Signal after electronics
92     Bool_t fUsed;              //! kTRUE if the item is built and in use
93
94     ClassDef(AliITSpListItem,4) // Item list of signals and track numbers
95 };      
96 // Input and output functions for standard C++ input/output.
97 ostream & operator<<(ostream &os,AliITSpListItem &source);
98 istream & operator>>(istream &is,AliITSpListItem &source);
99
100
101 #endif