616837f5f94507c94ccc08f99c205fbde3517485
[u/mrichter/AliRoot.git] / ITS / AliITSpListItem.h
1 #ifndef ALIITSPLISTITEM_H
2 #define ALIITSPLISTITEM_H
3 /* Copyright(c) 1998-1999, 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     // = Opoerator
25     virtual AliITSpListItem& operator=(const AliITSpListItem &source);
26     // Returns the signal value in the list of signals
27     virtual Double_t GetSignal(Int_t i) const {
28                             return ( (i>=0&&i<fgksize) ? fSignal[i] : 0.0);}
29     virtual Double_t GetSignal() const {
30                             return fTsignal;}
31     virtual Double_t GetSignalAfterElect() const {
32                             return fSignalAfterElect;}
33     // Returns the Sum/Total signal
34     virtual Double_t GetSumSignal() const {return fTsignal+fNoise;}
35     // Returns the  noise
36     virtual Double_t GetNoise() const {return fNoise;}
37     // Returns the number of stored singals.
38     virtual Int_t GetNsignals() const {return fgksize;}
39     // Addes track number and signal to this existing list.
40     virtual void AddSignal(Int_t track,Int_t hit,Int_t module,
41                            Int_t index,Double_t signal);
42     // Adds signal after electronics to this existing list.
43     virtual void AddSignalAfterElect(Int_t module,Int_t index,Double_t signal);
44     // Addes noise to this existing list.
45     virtual void AddNoise(Int_t module,Int_t index,Double_t noise);
46     // Returns track number.
47     virtual Int_t GetTrack(Int_t i) const {
48                             return ((i>=0&&i<fgksize) ? fTrack[i] : 0);}
49     // Returns hit number.
50     virtual Int_t GetHit(Int_t i) const {
51                             return ((i>=0&&i<fgksize) ? fHits[i] : 0);}
52     // Returns module number.
53     virtual Int_t GetModule() const {
54                             return fmodule;}
55     // Returns index number.
56     virtual Int_t GetIndex() const {
57                             return findex;}
58     // Adds the contents of pl to this 
59     virtual void Add(AliITSpListItem *pl);
60     // Adds the contents of pl to this with track number off set given by
61     // fileIndex.
62     virtual void AddTo(Int_t fileIndex,AliITSpListItem *pl);
63     // Shift an index number to occupy the upper four bits.
64     virtual Int_t ShiftIndex(Int_t in,Int_t trk) const;
65     // Standard ascii class print function
66     void Print(ostream *os) const;
67     // Standard ascii class read function
68     void Read(istream *is);
69     virtual void Print(Option_t *option="") const {TObject::Print(option);}
70     virtual Int_t Read(const char *name) {return TObject::Read(name);}
71
72     // Returns max size of array for for Tracks, Hits, and signals.
73     static Int_t GetMaxKept() {return fgksize;};
74
75  private:
76     static const Int_t fgksize = 10; // Array sizes
77     Int_t    fmodule;         // module number
78     Int_t    findex;          // Strip/row,col number linearlized.
79     Int_t    fTrack[fgksize];  //[fgksize] track Number
80     Int_t    fHits[fgksize];   //[fgksize] hit number
81     Double_t fSignal[fgksize]; //[fgksize] Signals
82     Double_t fTsignal;        // Total signal (no noise)
83     Double_t fNoise;          // Total noise, coupling, ...
84     Double_t fSignalAfterElect; // Signal after electronics
85
86     ClassDef(AliITSpListItem,3) // Item list of signals and track numbers
87 };      
88 // Input and output functions for standard C++ input/output.
89 ostream & operator<<(ostream &os,AliITSpListItem &source);
90 istream & operator>>(istream &is,AliITSpListItem &source);
91
92
93 #endif