X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=FMD%2FAliFMDDigit.h;h=5168476ffb83551e46c4145d48d79b1b888b0f57;hb=b626371c810c0b068e5c7dcec0337fa06187f3b3;hp=9ea0bfde9d532be9787a4e9355ed22b75c48cf58;hpb=f8616692c3315d6fccbdb31611c6de1906712b40;p=u%2Fmrichter%2FAliRoot.git diff --git a/FMD/AliFMDDigit.h b/FMD/AliFMDDigit.h index 9ea0bfde9d5..5168476ffb8 100644 --- a/FMD/AliFMDDigit.h +++ b/FMD/AliFMDDigit.h @@ -1,5 +1,10 @@ #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 @@ -7,51 +12,13 @@ // 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 AliFMDDigit.h - @brief base class for digits - @ingroup FMD_base - */ -class AliFMDBaseDigit : public TObject -{ -public: - /** CTOR */ - AliFMDBaseDigit(); - /** Constrctor - @param detector Detector - @param ring Ring - @param sector Sector - @param strip Strip */ - AliFMDBaseDigit(UShort_t detector, - Char_t ring='\0', - UShort_t sector=0, - UShort_t strip=0); - /** DTOR */ - virtual ~AliFMDBaseDigit() {} - /** @return Detector # */ - UShort_t Detector() const { return fDetector; } - /** @return Ring ID */ - Char_t Ring() const { return fRing; } - /** @return sector # */ - UShort_t Sector() const { return fSector; } - /** @return strip # */ - UShort_t Strip() const { return fStrip; } - /** Print information - @param opt Not used */ - virtual void Print(Option_t* opt="") const; - /** @return Name */ - const char* GetName() 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 @@ -63,110 +30,150 @@ 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) */ - 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); - /** DTOR */ + /** + * 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() {} - /** @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 Canonical ADC counts */ - UShort_t Counts() const; - /** Print info - @param opt Not used */ + /** + * @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 */ + /** + * + * @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) - ClassDef(AliFMDDigit,1) // Normal FMD digit + 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 AliFMDDigit.h - @brief class for summable digits - @ingroup FMD_base - */ -class AliFMDSDigit : public AliFMDBaseDigit +inline Int_t +AliFMDDigit::Count(UShort_t i) const { -public: - /** CTOR */ - AliFMDSDigit(); - /** Constrctor - @param detector Detector - @param ring Ring - @param sector Sector - @param strip Strip - @param edep Energy deposited - @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) */ - 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); - /** DTOR */ - virtual ~AliFMDSDigit() {} - /** @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 Canonical ADC counts */ - UShort_t Counts() const; - /** @return Energy deposited */ - Float_t Edep() const { return fEdep; } - /** Print info - @param opt Not used */ - void Print(Option_t* opt="") 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) - 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 //____________________________________________________________________ //