]> git.uio.no Git - u/mrichter/AliRoot.git/blame_incremental - FMD/AliFMDDigit.h
Be sure to load mapping when needed
[u/mrichter/AliRoot.git] / FMD / AliFMDDigit.h
... / ...
CommitLineData
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 */
28class AliFMDDigit : public AliFMDBaseDigit
29{
30public:
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 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 UShort_t Count1() const { return fCount1; }
70 /**
71 *
72 * @return ADC count (second sample, or -1 if not used)
73 */
74 Short_t Count2() const { return fCount2; }
75 /**
76 *
77 * @return ADC count (third sample, or -1 if not used)
78 */
79 Short_t Count3() const { return fCount3; }
80 /**
81 *
82 * @return ADC count (third sample, or -1 if not used)
83 */
84 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);
124protected:
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 ClassDef(AliFMDDigit,2) // Normal FMD digit
130};
131
132inline void
133AliFMDDigit::SetDefaultCounts(UShort_t rate)
134{
135 switch (rate) {
136 case 4: fCount4 = 0; // Fall through
137 case 3: fCount3 = 0; // Fall through
138 case 2: fCount2 = 0; // Fall through
139 case 1: fCount1 = 0;
140 break;
141 default:
142 fCount4 = fCount3 = fCount2 = fCount1 = 0;
143 break;
144 }
145}
146inline UShort_t
147AliFMDDigit::Counts() const
148{
149 if (fCount4 >= 0) return fCount3;
150 if (fCount3 >= 0) return fCount2;
151 if (fCount2 >= 0) return fCount2;
152 return fCount1;
153}
154
155inline Int_t
156AliFMDDigit::Count(UShort_t i) const
157{
158 switch (i) {
159 case 0: return fCount1;
160 case 1: return fCount2;
161 case 2: return fCount3;
162 case 3: return fCount4;
163 }
164 return -1;
165}
166inline void
167AliFMDDigit::SetCount(UShort_t i, Short_t c)
168{
169 switch (i) {
170 case 0: fCount1 = c; break;
171 case 1: fCount2 = c; break;
172 case 2: fCount3 = c; break;
173 case 3: fCount4 = c; break;
174 }
175}
176
177#endif
178//____________________________________________________________________
179//
180// Local Variables:
181// mode: C++
182// End:
183//
184//
185// EOF
186//