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