Line data Source code
1 : #ifndef ALIMUONDIGIT_H
2 : #define ALIMUONDIGIT_H
3 : /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 : * See cxx source for full Copyright notice */
5 :
6 : /* $Id$ */
7 : // Revision of includes 07/05/2004
8 :
9 : /// \ingroup base
10 : /// \class AliMUONDigit
11 : /// \brief MUON digit
12 :
13 : #ifndef ALIMUONVDIGIT_H
14 : # include "AliMUONVDigit.h"
15 : #endif
16 :
17 : class AliMUONDigit : public AliMUONVDigit
18 : {
19 : public:
20 : AliMUONDigit();
21 : AliMUONDigit(Int_t detElemId, Int_t manuId, Int_t manuChannel, Int_t cathode);
22 :
23 : AliMUONDigit(const AliMUONDigit& rhs);
24 : virtual ~AliMUONDigit();
25 :
26 : AliMUONDigit& operator=(const AliMUONDigit& rhs);
27 :
28 : /// Own clone methods (as the default TObject::Clone turned out to be pretty slow !)
29 0 : virtual TObject* Clone(const char* /*newname*/ = "") const { return new AliMUONDigit(*this); }
30 :
31 0 : virtual Bool_t HasMCInformation() const { return kTRUE; }
32 :
33 31818 : virtual Int_t DetElemId()const {return fDetElemId;} ///< Return detection element ID
34 2166 : virtual Int_t PadX() const {return fPadX;} ///< Return pad number along x
35 2166 : virtual Int_t PadY() const {return fPadY;} ///< Return pad number along y
36 16620 : virtual Int_t Cathode() const {return fCathode;} ///< Return cathode number
37 :
38 7392 : virtual Float_t Charge() const {return fSignal;} ///< Return signal amplitude
39 :
40 0 : virtual Int_t Hit() const {return fHit;} ///< Return MC hit number
41 :
42 0 : virtual Float_t Time() const {return fTime;} /// Return MC hit age
43 :
44 2316 : virtual Int_t Ntracks() const { return fNtracks; } ///< Return MC tracks making to this digit
45 : virtual void AddTrack(Int_t trackNumber, Float_t trackCharge);
46 : virtual Int_t Track(Int_t i) const;
47 : virtual Float_t TrackCharge(Int_t i) const;
48 :
49 4770 : virtual Int_t ADC() const { return fADC; } ///< Return ADC value
50 23248 : virtual Int_t ManuId() const { return fManuId; } ///< Return Id of the MANU chip
51 21832 : virtual Int_t ManuChannel() const { return fManuChannel; } ///< Return Channel within the MANU chip
52 : virtual Bool_t IsSaturated() const;
53 : virtual Bool_t IsNoiseOnly() const;
54 : virtual Bool_t IsEfficiencyApplied() const;
55 : virtual Bool_t IsConverted() const;
56 : virtual Bool_t IsChargeInFC() const;
57 0 : virtual UInt_t StatusMap() const { return fStatusMap; } ///< Return Neighbouring pad status
58 :
59 : virtual void NoiseOnly(Bool_t value=kTRUE);
60 : virtual void Saturated(Bool_t saturated=kTRUE);
61 : virtual void EfficiencyApplied(Bool_t value=kTRUE);
62 : virtual void Converted(Bool_t value=kTRUE);
63 : virtual void ChargeInFC(Bool_t value=kTRUE);
64 :
65 1714 : virtual void SetADC(Int_t adc) {fADC=adc; } ///< Set ADC value
66 1948 : virtual void SetPadXY(Int_t padx, Int_t pady) {fPadX = padx; fPadY=pady; } ///< Set pad number along x
67 5088 : virtual void SetCharge(Float_t q) {fSignal = q;} ///< Set charge
68 1948 : virtual void SetHit(Int_t n) {fHit = n;} ///< Set MC hit number
69 1948 : virtual void SetTime(Float_t t) {fTime = t;} ///< Set MC hit age
70 1416 : virtual void SetStatusMap(UInt_t statusMap) { fStatusMap = statusMap; } ///< Set status map
71 :
72 : virtual void Copy(TObject& digit) const;
73 :
74 : /** Delete the internal track arrays (which are dynamically allocated).
75 : * This is to insure we can put those digits in e.g. TClonesArray
76 : * w/o leaking memory.
77 : */
78 : virtual void Clear(Option_t*);
79 :
80 : // Add mask to the track numbers.
81 : virtual void PatchTracks(Int_t mask);
82 :
83 : virtual Bool_t MergeWith(const AliMUONVDigit& other);
84 :
85 : virtual Bool_t IsUsed() const;
86 : virtual void Used(Bool_t value);
87 :
88 : virtual Bool_t IsCalibrated() const;
89 : virtual void Calibrated(Bool_t value);
90 :
91 : virtual UInt_t GetUniqueID() const;
92 :
93 : private:
94 : Int_t fDetElemId; ///< Detection element ID
95 : Int_t fManuId; ///< Id of the MANU chip.
96 : Int_t fManuChannel; ///< Channel within the MANU chip.
97 : Float_t fSignal; ///< Signal amplitude
98 :
99 : Int_t fPadX; ///< Pad number along x
100 : Int_t fPadY; ///< Pad number along y
101 : Int_t fCathode; ///< Cathode number
102 : Int_t fADC; ///< ADC value
103 : UInt_t fFlags; ///< Special flags (e.g. is the signal an overflow ?)
104 :
105 : Int_t fNtracks; ///< MC tracks making to this digit.
106 :
107 : /// charges of MC track making this digit
108 : Float_t* fTcharges; //[fNtracks] charges of MC track making this digit
109 :
110 : /// primary MC tracks making this digit
111 : Int_t* fTracks; //[fNtracks] primary MC tracks making this digit
112 :
113 : Int_t fHit; ///< MC hit number - temporary solution
114 : Float_t fTime; ///< MC hit age
115 :
116 : UInt_t fStatusMap; ///< Neighbouring pad status (whether ped, lv, hv were ok or not)
117 :
118 : static const UInt_t fgkSaturatedMask = 0x1; ///< the mask (part of fFlags) to indicate this digit is saturated
119 : static const UInt_t fgkUsedMask = 0x10; ///< whether this digit is used by whatever other object (typically a cluster, though)
120 : static const UInt_t fgkCalibratedMask = 0x100; ///< whether this digits has been calibrated
121 : static const UInt_t fgkNoiseOnlyMask = 0x1000; ///< indicate a simulated digit due to noise only
122 : static const UInt_t fgkEfficiencyMask = 0x2000; ///< indicate chamber efficiency has been applied to a simulated digit
123 : static const UInt_t fgkConverted = 0x4000; ///< has been converted from a real digit
124 : static const UInt_t fgkChargeInFC = 0x8000; ///< charge unit are femto coulomb
125 :
126 5542 : ClassDef(AliMUONDigit,13) //Digits for MUON
127 : };
128 :
129 : #endif
|