a9e2aefa |
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$ */ |
30178c30 |
7 | // Revision of includes 07/05/2004 |
a9e2aefa |
8 | |
692de412 |
9 | /// \ingroup base |
10 | /// \class AliMUONDigit |
11 | /// \brief MUON digit |
12 | |
5a91ea86 |
13 | #ifndef ALIMUONVDIGIT_H |
14 | # include "AliMUONVDigit.h" |
15 | #endif |
a9e2aefa |
16 | |
5a91ea86 |
17 | class AliMUONDigit : public AliMUONVDigit |
5350e3a6 |
18 | { |
a9e2aefa |
19 | public: |
5a91ea86 |
20 | AliMUONDigit(); |
21 | AliMUONDigit(Int_t detElemId, Int_t manuId, Int_t manuChannel, Int_t cathode); |
22 | |
d694b6f6 |
23 | AliMUONDigit(const AliMUONDigit& rhs); |
a450cfad |
24 | virtual ~AliMUONDigit(); |
61adb9bd |
25 | |
d694b6f6 |
26 | AliMUONDigit& operator=(const AliMUONDigit& rhs); |
a450cfad |
27 | |
a25ae7b5 |
28 | /// Own clone methods (as the default TObject::Clone turned out to be pretty slow !) |
4554058b |
29 | virtual TObject* Clone(const char* /*newname*/ = "") const { return new AliMUONDigit(*this); } |
a25ae7b5 |
30 | |
5a91ea86 |
31 | virtual Bool_t HasMCInformation() const { return kTRUE; } |
32 | |
5398f946 |
33 | virtual Int_t DetElemId()const {return fDetElemId;} ///< Return detection element ID |
34 | virtual Int_t PadX() const {return fPadX;} ///< Return pad number along x |
35 | virtual Int_t PadY() const {return fPadY;} ///< Return pad number along y |
36 | virtual Int_t Cathode() const {return fCathode;} ///< Return cathode number |
81b31073 |
37 | |
5a91ea86 |
38 | virtual Float_t Charge() const {return fSignal;} ///< Return signal amplitude |
81b31073 |
39 | |
5398f946 |
40 | virtual Int_t Hit() const {return fHit;} ///< Return MC hit number |
5350e3a6 |
41 | |
ea232c10 |
42 | virtual Float_t Time() const {return fTime;} /// Return MC hit age |
43 | |
5398f946 |
44 | virtual Int_t Ntracks() const { return fNtracks; } ///< Return MC tracks making to this digit |
8a92eee6 |
45 | virtual void AddTrack(Int_t trackNumber, Float_t trackCharge); |
5350e3a6 |
46 | virtual Int_t Track(Int_t i) const; |
8a92eee6 |
47 | virtual Float_t TrackCharge(Int_t i) const; |
81b31073 |
48 | |
5398f946 |
49 | virtual Int_t ADC() const { return fADC; } ///< Return ADC value |
50 | virtual Int_t ManuId() const { return fManuId; } ///< Return Id of the MANU chip |
51 | virtual Int_t ManuChannel() const { return fManuChannel; } ///< Return Channel within the MANU chip |
81b31073 |
52 | virtual Bool_t IsSaturated() const; |
b1d79ad7 |
53 | virtual Bool_t IsNoiseOnly() const; |
1d4e6965 |
54 | virtual Bool_t IsEfficiencyApplied() const; |
ca8c8223 |
55 | virtual Bool_t IsConverted() const; |
5d950f54 |
56 | virtual Bool_t IsChargeInFC() const; |
71a2d3aa |
57 | virtual UInt_t StatusMap() const { return fStatusMap; } ///< Return Neighbouring pad status |
81b31073 |
58 | |
b1d79ad7 |
59 | virtual void NoiseOnly(Bool_t value=kTRUE); |
81b31073 |
60 | virtual void Saturated(Bool_t saturated=kTRUE); |
1d4e6965 |
61 | virtual void EfficiencyApplied(Bool_t value=kTRUE); |
ca8c8223 |
62 | virtual void Converted(Bool_t value=kTRUE); |
5d950f54 |
63 | virtual void ChargeInFC(Bool_t value=kTRUE); |
ca8c8223 |
64 | |
71a2d3aa |
65 | virtual void SetADC(Int_t adc) {fADC=adc; } ///< Set ADC value |
5a91ea86 |
66 | virtual void SetPadXY(Int_t padx, Int_t pady) {fPadX = padx; fPadY=pady; } ///< Set pad number along x |
67 | virtual void SetCharge(Float_t q) {fSignal = q;} ///< Set charge |
5398f946 |
68 | virtual void SetHit(Int_t n) {fHit = n;} ///< Set MC hit number |
ea232c10 |
69 | virtual void SetTime(Float_t t) {fTime = t;} ///< Set MC hit age |
71a2d3aa |
70 | virtual void SetStatusMap(UInt_t statusMap) { fStatusMap = statusMap; } ///< Set status map |
81b31073 |
71 | |
81b31073 |
72 | virtual void Copy(TObject& digit) const; |
73 | |
5350e3a6 |
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 | |
5398f946 |
80 | // Add mask to the track numbers. |
5350e3a6 |
81 | virtual void PatchTracks(Int_t mask); |
82 | |
5a91ea86 |
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 | |
5350e3a6 |
93 | private: |
18b6b8c7 |
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. |
8a92eee6 |
97 | Float_t fSignal; ///< Signal amplitude |
5350e3a6 |
98 | |
18b6b8c7 |
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 ?) |
a450cfad |
104 | |
18b6b8c7 |
105 | Int_t fNtracks; ///< MC tracks making to this digit. |
106 | |
107 | /// charges of MC track making this digit |
8a92eee6 |
108 | Float_t* fTcharges; //[fNtracks] charges of MC track making this digit |
18b6b8c7 |
109 | |
110 | /// primary MC tracks making this digit |
111 | Int_t* fTracks; //[fNtracks] primary MC tracks making this digit |
112 | |
18b6b8c7 |
113 | Int_t fHit; ///< MC hit number - temporary solution |
ea232c10 |
114 | Float_t fTime; ///< MC hit age |
5350e3a6 |
115 | |
aaf7adc0 |
116 | UInt_t fStatusMap; ///< Neighbouring pad status (whether ped, gains, hv were ok or not) |
117 | |
18b6b8c7 |
118 | static const UInt_t fgkSaturatedMask = 0x1; ///< the mask (part of fFlags) to indicate this digit is saturated |
5a91ea86 |
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 |
18b6b8c7 |
121 | static const UInt_t fgkNoiseOnlyMask = 0x1000; ///< indicate a simulated digit due to noise only |
1d4e6965 |
122 | static const UInt_t fgkEfficiencyMask = 0x2000; ///< indicate chamber efficiency has been applied to a simulated digit |
ca8c8223 |
123 | static const UInt_t fgkConverted = 0x4000; ///< has been converted from a real digit |
5d950f54 |
124 | static const UInt_t fgkChargeInFC = 0x8000; ///< charge unit are femto coulomb |
ca8c8223 |
125 | |
5d950f54 |
126 | ClassDef(AliMUONDigit,12) //Digits for MUON |
a9e2aefa |
127 | }; |
5a91ea86 |
128 | |
a9e2aefa |
129 | #endif |