X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=FMD%2FAliFMDDigit.h;h=466f2e992490fa1e4c95098eae3e5984e71bcbc5;hb=dcc2ade075ecd6298757d84b65bdd14ca92f42f6;hp=167431e4669077598baa6869edc37df4f52f2def;hpb=42403906a791989192b0a7f2f5fda18146e5455c;p=u%2Fmrichter%2FAliRoot.git diff --git a/FMD/AliFMDDigit.h b/FMD/AliFMDDigit.h index 167431e4669..466f2e99249 100644 --- a/FMD/AliFMDDigit.h +++ b/FMD/AliFMDDigit.h @@ -1,109 +1,179 @@ #ifndef ALIFMDDIGIT_H #define ALIFMDDIGIT_H - -////////////////////////////////////////////////////////////////////// +/** @file AliFMDDigit.h + @author Christian Holm Christensen + @date Mon Mar 27 12:37:41 2006 + @brief Digits for the FMD +*/ +//___________________________________________________________________ // -// Digits classes for the FMD +// Digits classes for the FMD +// AliFMDBaseDigit - base class +// AliFMDDigit - Normal (smeared) digit +// AliFMDSDigit - Summable (non-smeared) digit // -////////////////////////////////////////////////////////////////////// -#ifndef ROOT_TObject -# include +#ifndef ALIFMDBASEDIGIT_H +# include +#endif +#ifndef ROOT_TArrayI +# include #endif -//____________________________________________________________________ -class AliFMDBaseDigit : public TObject -{ -public: - AliFMDBaseDigit(); - AliFMDBaseDigit(UShort_t detector, - Char_t ring='\0', - UShort_t sector=0, - UShort_t strip=0); - virtual ~AliFMDBaseDigit() {} - UShort_t Detector() const { return fDetector; } - Char_t Ring() const { return fRing; } - UShort_t Sector() const { return fSector; } - UShort_t Strip() const { return fStrip; } - virtual void Print(Option_t* opt="") const; - -protected: - UShort_t fDetector; // (Sub) Detector # (1,2, or 3) - Char_t fRing; // Ring ID ('I' or 'O') - UShort_t fSector; // Sector # (phi division) - UShort_t fStrip; // Strip # (radial division) - ClassDef(AliFMDBaseDigit, 1) // Base class for FMD digits -}; //____________________________________________________________________ +/** @class AliFMDDigit AliFMDDigit.h + @brief class for digits + @ingroup FMD_base + */ class AliFMDDigit : public AliFMDBaseDigit { -protected: - UShort_t fCount1; // Digital signal - Short_t fCount2; // Digital signal (-1 if not used) - Short_t fCount3; // Digital signal (-1 if not used) public: + /** CTOR */ AliFMDDigit(); - 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); + /** + * 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, + Int_t* refs=0); + /** + * DTOR + */ virtual ~AliFMDDigit() {} - UShort_t Count1() const { return fCount1; } - Short_t Count2() const { return fCount2; } - Short_t Count3() const { return fCount3; } - UShort_t Counts() const; + /** + * @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; - ClassDef(AliFMDDigit,1) // Normal FMD digit + /** + * + * @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 { - return fCount1 - + (fCount2 >= 0 ? fCount2 : 0) - + (fCount3 >= 0 ? fCount3 : 0); + if (fCount4 >= 0) return fCount3; + if (fCount3 >= 0) return fCount2; + if (fCount2 >= 0) return fCount2; + return fCount1; } -//____________________________________________________________________ -class AliFMDSDigit : public AliFMDBaseDigit +inline Int_t +AliFMDDigit::Count(UShort_t i) const { -protected: - Float_t fEdep; // Energy deposited - UShort_t fCount1; // Digital signal - Short_t fCount2; // Digital signal (-1 if not used) - Short_t fCount3; // Digital signal (-1 if not used) -public: - AliFMDSDigit(); - AliFMDSDigit(UShort_t detector, - Char_t ring='\0', - UShort_t sector=0, - UShort_t strip=0, - Float_t edep=0, - UShort_t count=0, - Short_t count2=-1, - Short_t count3=-1); - virtual ~AliFMDSDigit() {} - UShort_t Count1() const { return fCount1; } - Short_t Count2() const { return fCount2; } - Short_t Count3() const { return fCount3; } - Float_t Edep() const { return fEdep; } - UShort_t Counts() const; - void Print(Option_t* opt="") const; - ClassDef(AliFMDSDigit,1) // Summable FMD digit -}; - -inline UShort_t -AliFMDSDigit::Counts() 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) { - return fCount1 - + (fCount2 >= 0 ? fCount2 : 0) - + (fCount3 >= 0 ? fCount3 : 0); + switch (i) { + case 0: fCount1 = c; break; + case 1: fCount2 = c; break; + case 2: fCount3 = c; break; + case 3: fCount4 = c; break; + } } - #endif //____________________________________________________________________ //