Line data Source code
1 : #ifndef ALIFMDDIGIT_H
2 : #define ALIFMDDIGIT_H
3 : /** @file AliFMDDigit.h
4 : @author Christian Holm Christensen <cholm@nbi.dk>
5 : @date Mon Mar 27 12:37:41 2006
6 : @brief Digits for the FMD
7 : */
8 : //___________________________________________________________________
9 : //
10 : // Digits classes for the FMD
11 : // AliFMDBaseDigit - base class
12 : // AliFMDDigit - Normal (smeared) digit
13 : // AliFMDSDigit - Summable (non-smeared) digit
14 : //
15 : #ifndef ALIFMDBASEDIGIT_H
16 : # include <AliFMDBaseDigit.h>
17 : #endif
18 : #ifndef ROOT_TArrayI
19 : # include <TArrayI.h>
20 : #endif
21 :
22 :
23 : //____________________________________________________________________
24 : /** @class AliFMDDigit AliFMDDigit.h <FMD/AliFMDDigit.h>
25 : @brief class for digits
26 : @ingroup FMD_base
27 : */
28 0 : class AliFMDDigit : public AliFMDBaseDigit
29 : {
30 : public:
31 : /** CTOR */
32 : AliFMDDigit();
33 : /**
34 : * Constrctor
35 : *
36 : * @param detector Detector
37 : * @param ring Ring
38 : * @param sector Sector
39 : * @param strip Strip
40 : * @param count ADC (first sample)
41 : * @param count2 ADC (second sample, or -1 if not used)
42 : * @param count3 ADC (third sample, or -1 if not used)
43 : * @param refs Track references
44 : */
45 : AliFMDDigit(UShort_t detector,
46 : Char_t ring='\0',
47 : UShort_t sector=0,
48 : UShort_t strip=0,
49 : UShort_t count=0,
50 : Short_t count2=-1,
51 : Short_t count3=-1,
52 : Short_t count4=-1,
53 : UShort_t nrefs=0,
54 : const Int_t* refs=0);
55 : /**
56 : * DTOR
57 : */
58 921618 : virtual ~AliFMDDigit() {}
59 : /**
60 : * @param i # of sample to get
61 : *
62 : * @return sample # @a i
63 : */
64 : Int_t Count(UShort_t i=0) const;
65 : /**
66 : *
67 : * @return ADC count (first sample)
68 : */
69 0 : UShort_t Count1() const { return fCount1; }
70 : /**
71 : *
72 : * @return ADC count (second sample, or -1 if not used)
73 : */
74 0 : Short_t Count2() const { return fCount2; }
75 : /**
76 : *
77 : * @return ADC count (third sample, or -1 if not used)
78 : */
79 0 : Short_t Count3() const { return fCount3; }
80 : /**
81 : *
82 : * @return ADC count (third sample, or -1 if not used)
83 : */
84 0 : Short_t Count4() const { return fCount4; }
85 : /**
86 : *
87 : * @return Canonical ADC counts
88 : */
89 : UShort_t Counts() const;
90 : /**
91 : * Print info
92 : *
93 : * @param opt Not used
94 : */
95 : void Print(Option_t* opt="") const;
96 : /**
97 : *
98 : * @return Title
99 : */
100 : const char* GetTitle() const;
101 : /**
102 : * Set the count value
103 : *
104 : * @param s Sample number
105 : * @param c Counts
106 : */
107 : void SetCount(UShort_t s, Short_t c);
108 : /**
109 : * Initialize all counts to appropriate values for this oversampling
110 : * rate. That is
111 : *
112 : * @verbatim
113 : * Rate | Sample 1 | Sample 2 | Sample 3 | Sample 4
114 : * -----+----------+----------+----------+----------
115 : * 1 | 0 | -1 | -1 | -1
116 : * 2 | 0 | 0 | -1 | -1
117 : * 3 | 0 | 0 | 0 | -1
118 : * 4 | 0 | 0 | 0 | 0
119 : * @endverbatim
120 : *
121 : * @param rate Oversampling rate
122 : */
123 : void SetDefaultCounts(UShort_t rate);
124 : protected:
125 : UShort_t fCount1; // Digital signal
126 : Short_t fCount2; // Digital signal (-1 if not used)
127 : Short_t fCount3; // Digital signal (-1 if not used)
128 : Short_t fCount4; // Digital signal (-1 if not used)
129 22 : ClassDef(AliFMDDigit,2) // Normal FMD digit
130 : };
131 :
132 : inline void
133 : AliFMDDigit::SetDefaultCounts(UShort_t rate)
134 : {
135 1024000 : switch (rate) {
136 204800 : case 4: fCount4 = 0; // Fall through
137 204800 : case 3: fCount3 = 0; // Fall through
138 204800 : case 2: fCount2 = 0; // Fall through
139 204800 : case 1: fCount1 = 0;
140 204800 : break;
141 : default:
142 0 : fCount4 = fCount3 = fCount2 = fCount1 = 0;
143 0 : break;
144 : }
145 204800 : }
146 : inline UShort_t
147 : AliFMDDigit::Counts() const
148 : {
149 1843200 : if (fCount4 >= 0) return fCount3;
150 0 : if (fCount3 >= 0) return fCount2;
151 0 : if (fCount2 >= 0) return fCount2;
152 0 : return fCount1;
153 614400 : }
154 :
155 : inline Int_t
156 : AliFMDDigit::Count(UShort_t i) const
157 : {
158 1638400 : switch (i) {
159 204800 : case 0: return fCount1;
160 204800 : case 1: return fCount2;
161 204800 : case 2: return fCount3;
162 204800 : case 3: return fCount4;
163 : }
164 0 : return -1;
165 819200 : }
166 : inline void
167 : AliFMDDigit::SetCount(UShort_t i, Short_t c)
168 : {
169 2457600 : switch (i) {
170 204800 : case 0: fCount1 = c; break;
171 204800 : case 1: fCount2 = c; break;
172 204800 : case 2: fCount3 = c; break;
173 204800 : case 3: fCount4 = c; break;
174 : }
175 819200 : }
176 :
177 : #endif
178 : //____________________________________________________________________
179 : //
180 : // Local Variables:
181 : // mode: C++
182 : // End:
183 : //
184 : //
185 : // EOF
186 : //
|