ROOT logo
#ifndef ALIFMDDIGIT_H
#define ALIFMDDIGIT_H
/** @file    AliFMDDigit.h
    @author  Christian Holm Christensen <cholm@nbi.dk>
    @date    Mon Mar 27 12:37:41 2006
    @brief   Digits for the FMD 
*/
//___________________________________________________________________
//
//  Digits classes for the FMD
//  AliFMDBaseDigit - base class 
//  AliFMDDigit     - Normal (smeared) digit             
//  AliFMDSDigit    - Summable (non-smeared) digit             
//
#ifndef ALIFMDBASEDIGIT_H
# include <AliFMDBaseDigit.h>
#endif
#ifndef ROOT_TArrayI
# include <TArrayI.h>
#endif


//____________________________________________________________________
/** @class AliFMDDigit AliFMDDigit.h <FMD/AliFMDDigit.h>
    @brief class for digits 
    @ingroup FMD_base
 */
class AliFMDDigit : public AliFMDBaseDigit
{
public:
  /** CTOR */
  AliFMDDigit();
  /** 
   * Constrctor 
   *
   * @param detector Detector 
   * @param ring     Ring
   * @param sector   Sector
   * @param strip    Strip 
   * @param count    ADC (first sample)
   * @param count2   ADC (second sample, or -1 if not used)
   * @param count3   ADC (third sample, or -1 if not used) 
   * @param refs     Track references
   */
  AliFMDDigit(UShort_t       detector, 
	      Char_t         ring='\0', 
	      UShort_t       sector=0, 
	      UShort_t       strip=0, 
	      UShort_t       count=0, 
	      Short_t        count2=-1, 
	      Short_t        count3=-1, 
	      Short_t        count4=-1, 
	      UShort_t       nrefs=0,
	      const Int_t*   refs=0);
  /** 
   * DTOR 
   */
  virtual ~AliFMDDigit() {}
  /** 
   * @param i # of sample to get 
   * 
   * @return sample # @a i 
   */
  Int_t Count(UShort_t i=0) const;
  /** 
   * 
   * @return ADC count (first sample) 
   */
  UShort_t Count1() const { return fCount1;   }
  /** 
   * 
   * @return ADC count (second sample, or -1 if not used) 
   */
  Short_t  Count2() const { return fCount2;   }
  /** 
   * 
   * @return ADC count (third sample, or -1 if not used) 
   */
  Short_t  Count3() const { return fCount3;   }
  /** 
   * 
   * @return ADC count (third sample, or -1 if not used) 
   */
  Short_t  Count4() const { return fCount4;   }
  /** 
   * 
   * @return Canonical ADC counts 
   */
  UShort_t Counts() const;
  /** 
   * Print info 
   * 
   * @param opt Not used 
   */
  void     Print(Option_t* opt="") const;
  /** 
   * 
   * @return Title 
   */
  const char* GetTitle() const;
  /** 
   * Set the count value 
   * 
   * @param s Sample number 
   * @param c Counts 
   */
  void SetCount(UShort_t s, Short_t c);
  /**
   * Initialize all counts to appropriate values for this oversampling
   * rate.  That is 
   *
   * @verbatim
   *     Rate | Sample 1 | Sample 2 | Sample 3 | Sample 4 
   *     -----+----------+----------+----------+----------
   *     1    | 0        | -1       | -1       | -1
   *     2    | 0        | 0        | -1       | -1
   *     3    | 0        | 0        | 0        | -1
   *     4    | 0        | 0        | 0        | 0
   * @endverbatim
   *
   * @param rate Oversampling rate 
   */
  void SetDefaultCounts(UShort_t rate);
protected:
  UShort_t fCount1;     // Digital signal 
  Short_t  fCount2;     // Digital signal (-1 if not used)
  Short_t  fCount3;     // Digital signal (-1 if not used)
  Short_t  fCount4;     // Digital signal (-1 if not used)
  ClassDef(AliFMDDigit,2)     // Normal FMD digit
};

inline void
AliFMDDigit::SetDefaultCounts(UShort_t rate)
{
  switch (rate) { 
  case 4: fCount4 = 0; // Fall through 
  case 3: fCount3 = 0; // Fall through 
  case 2: fCount2 = 0; // Fall through 
  case 1: fCount1 = 0;
    break;
  default: 
    fCount4 = fCount3 = fCount2 = fCount1 = 0;
    break;
  }
}
inline UShort_t 
AliFMDDigit::Counts() const 
{
  if (fCount4 >= 0) return fCount3;
  if (fCount3 >= 0) return fCount2;
  if (fCount2 >= 0) return fCount2;
  return fCount1;
}

inline Int_t
AliFMDDigit::Count(UShort_t i) const 
{
  switch (i) {
  case 0: return fCount1;
  case 1: return fCount2;
  case 2: return fCount3;
  case 3: return fCount4;
  }
  return -1;
}
inline void
AliFMDDigit::SetCount(UShort_t i, Short_t c)
{
  switch (i) {
  case 0: fCount1 = c; break;
  case 1: fCount2 = c; break;
  case 2: fCount3 = c; break;
  case 3: fCount4 = c; break;
  }
}

#endif
//____________________________________________________________________
//
// Local Variables:
//   mode: C++
// End:
//
//
// EOF
//
 AliFMDDigit.h:1
 AliFMDDigit.h:2
 AliFMDDigit.h:3
 AliFMDDigit.h:4
 AliFMDDigit.h:5
 AliFMDDigit.h:6
 AliFMDDigit.h:7
 AliFMDDigit.h:8
 AliFMDDigit.h:9
 AliFMDDigit.h:10
 AliFMDDigit.h:11
 AliFMDDigit.h:12
 AliFMDDigit.h:13
 AliFMDDigit.h:14
 AliFMDDigit.h:15
 AliFMDDigit.h:16
 AliFMDDigit.h:17
 AliFMDDigit.h:18
 AliFMDDigit.h:19
 AliFMDDigit.h:20
 AliFMDDigit.h:21
 AliFMDDigit.h:22
 AliFMDDigit.h:23
 AliFMDDigit.h:24
 AliFMDDigit.h:25
 AliFMDDigit.h:26
 AliFMDDigit.h:27
 AliFMDDigit.h:28
 AliFMDDigit.h:29
 AliFMDDigit.h:30
 AliFMDDigit.h:31
 AliFMDDigit.h:32
 AliFMDDigit.h:33
 AliFMDDigit.h:34
 AliFMDDigit.h:35
 AliFMDDigit.h:36
 AliFMDDigit.h:37
 AliFMDDigit.h:38
 AliFMDDigit.h:39
 AliFMDDigit.h:40
 AliFMDDigit.h:41
 AliFMDDigit.h:42
 AliFMDDigit.h:43
 AliFMDDigit.h:44
 AliFMDDigit.h:45
 AliFMDDigit.h:46
 AliFMDDigit.h:47
 AliFMDDigit.h:48
 AliFMDDigit.h:49
 AliFMDDigit.h:50
 AliFMDDigit.h:51
 AliFMDDigit.h:52
 AliFMDDigit.h:53
 AliFMDDigit.h:54
 AliFMDDigit.h:55
 AliFMDDigit.h:56
 AliFMDDigit.h:57
 AliFMDDigit.h:58
 AliFMDDigit.h:59
 AliFMDDigit.h:60
 AliFMDDigit.h:61
 AliFMDDigit.h:62
 AliFMDDigit.h:63
 AliFMDDigit.h:64
 AliFMDDigit.h:65
 AliFMDDigit.h:66
 AliFMDDigit.h:67
 AliFMDDigit.h:68
 AliFMDDigit.h:69
 AliFMDDigit.h:70
 AliFMDDigit.h:71
 AliFMDDigit.h:72
 AliFMDDigit.h:73
 AliFMDDigit.h:74
 AliFMDDigit.h:75
 AliFMDDigit.h:76
 AliFMDDigit.h:77
 AliFMDDigit.h:78
 AliFMDDigit.h:79
 AliFMDDigit.h:80
 AliFMDDigit.h:81
 AliFMDDigit.h:82
 AliFMDDigit.h:83
 AliFMDDigit.h:84
 AliFMDDigit.h:85
 AliFMDDigit.h:86
 AliFMDDigit.h:87
 AliFMDDigit.h:88
 AliFMDDigit.h:89
 AliFMDDigit.h:90
 AliFMDDigit.h:91
 AliFMDDigit.h:92
 AliFMDDigit.h:93
 AliFMDDigit.h:94
 AliFMDDigit.h:95
 AliFMDDigit.h:96
 AliFMDDigit.h:97
 AliFMDDigit.h:98
 AliFMDDigit.h:99
 AliFMDDigit.h:100
 AliFMDDigit.h:101
 AliFMDDigit.h:102
 AliFMDDigit.h:103
 AliFMDDigit.h:104
 AliFMDDigit.h:105
 AliFMDDigit.h:106
 AliFMDDigit.h:107
 AliFMDDigit.h:108
 AliFMDDigit.h:109
 AliFMDDigit.h:110
 AliFMDDigit.h:111
 AliFMDDigit.h:112
 AliFMDDigit.h:113
 AliFMDDigit.h:114
 AliFMDDigit.h:115
 AliFMDDigit.h:116
 AliFMDDigit.h:117
 AliFMDDigit.h:118
 AliFMDDigit.h:119
 AliFMDDigit.h:120
 AliFMDDigit.h:121
 AliFMDDigit.h:122
 AliFMDDigit.h:123
 AliFMDDigit.h:124
 AliFMDDigit.h:125
 AliFMDDigit.h:126
 AliFMDDigit.h:127
 AliFMDDigit.h:128
 AliFMDDigit.h:129
 AliFMDDigit.h:130
 AliFMDDigit.h:131
 AliFMDDigit.h:132
 AliFMDDigit.h:133
 AliFMDDigit.h:134
 AliFMDDigit.h:135
 AliFMDDigit.h:136
 AliFMDDigit.h:137
 AliFMDDigit.h:138
 AliFMDDigit.h:139
 AliFMDDigit.h:140
 AliFMDDigit.h:141
 AliFMDDigit.h:142
 AliFMDDigit.h:143
 AliFMDDigit.h:144
 AliFMDDigit.h:145
 AliFMDDigit.h:146
 AliFMDDigit.h:147
 AliFMDDigit.h:148
 AliFMDDigit.h:149
 AliFMDDigit.h:150
 AliFMDDigit.h:151
 AliFMDDigit.h:152
 AliFMDDigit.h:153
 AliFMDDigit.h:154
 AliFMDDigit.h:155
 AliFMDDigit.h:156
 AliFMDDigit.h:157
 AliFMDDigit.h:158
 AliFMDDigit.h:159
 AliFMDDigit.h:160
 AliFMDDigit.h:161
 AliFMDDigit.h:162
 AliFMDDigit.h:163
 AliFMDDigit.h:164
 AliFMDDigit.h:165
 AliFMDDigit.h:166
 AliFMDDigit.h:167
 AliFMDDigit.h:168
 AliFMDDigit.h:169
 AliFMDDigit.h:170
 AliFMDDigit.h:171
 AliFMDDigit.h:172
 AliFMDDigit.h:173
 AliFMDDigit.h:174
 AliFMDDigit.h:175
 AliFMDDigit.h:176
 AliFMDDigit.h:177
 AliFMDDigit.h:178
 AliFMDDigit.h:179
 AliFMDDigit.h:180
 AliFMDDigit.h:181
 AliFMDDigit.h:182
 AliFMDDigit.h:183
 AliFMDDigit.h:184
 AliFMDDigit.h:185
 AliFMDDigit.h:186