3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * See cxx source for full Copyright notice */
7 // Revision of includes 07/05/2004
10 /// \class AliMUONDigit
13 #ifndef ALIMUONVDIGIT_H
14 # include "AliMUONVDigit.h"
17 class AliMUONDigit : public AliMUONVDigit
21 AliMUONDigit(Int_t detElemId, Int_t manuId, Int_t manuChannel, Int_t cathode);
23 AliMUONDigit(const AliMUONDigit& rhs);
24 virtual ~AliMUONDigit();
26 AliMUONDigit& operator=(const AliMUONDigit& rhs);
28 /// Own clone methods (as the default TObject::Clone turned out to be pretty slow !)
29 virtual TObject* Clone(const char* /*newname*/ = "") const { return new AliMUONDigit(*this); }
31 virtual Bool_t HasMCInformation() const { return kTRUE; }
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
38 virtual Float_t Charge() const {return fSignal;} ///< Return signal amplitude
40 virtual Int_t Hit() const {return fHit;} ///< Return MC hit number
42 virtual Int_t Ntracks() const { return fNtracks; } ///< Return MC tracks making to this digit
43 virtual void AddTrack(Int_t trackNumber, Float_t trackCharge);
44 virtual Int_t Track(Int_t i) const;
45 virtual Float_t TrackCharge(Int_t i) const;
47 virtual Int_t ADC() const { return fADC; } ///< Return ADC value
48 virtual Int_t ManuId() const { return fManuId; } ///< Return Id of the MANU chip
49 virtual Int_t ManuChannel() const { return fManuChannel; } ///< Return Channel within the MANU chip
50 virtual Bool_t IsSaturated() const;
51 virtual Bool_t IsNoiseOnly() const;
52 virtual Bool_t IsEfficiencyApplied() const;
53 virtual UInt_t StatusMap() const { return fStatusMap; } ///< Return Neighbouring pad status
55 virtual void NoiseOnly(Bool_t value=kTRUE);
56 virtual void Saturated(Bool_t saturated=kTRUE);
57 virtual void EfficiencyApplied(Bool_t value=kTRUE);
59 virtual void SetADC(Int_t adc) {fADC=adc; } ///< Set ADC value
60 virtual void SetPadXY(Int_t padx, Int_t pady) {fPadX = padx; fPadY=pady; } ///< Set pad number along x
61 virtual void SetCharge(Float_t q) {fSignal = q;} ///< Set charge
62 virtual void SetHit(Int_t n) {fHit = n;} ///< Set MC hit number
63 virtual void SetStatusMap(UInt_t statusMap) { fStatusMap = statusMap; } ///< Set status map
65 virtual void Copy(TObject& digit) const;
67 /** Delete the internal track arrays (which are dynamically allocated).
68 * This is to insure we can put those digits in e.g. TClonesArray
71 virtual void Clear(Option_t*);
73 // Add mask to the track numbers.
74 virtual void PatchTracks(Int_t mask);
76 virtual Bool_t MergeWith(const AliMUONVDigit& other);
78 virtual Bool_t IsUsed() const;
79 virtual void Used(Bool_t value);
81 virtual Bool_t IsCalibrated() const;
82 virtual void Calibrated(Bool_t value);
84 virtual UInt_t GetUniqueID() const;
87 Int_t fDetElemId; ///< Detection element ID
88 Int_t fManuId; ///< Id of the MANU chip.
89 Int_t fManuChannel; ///< Channel within the MANU chip.
90 Float_t fSignal; ///< Signal amplitude
92 Int_t fPadX; ///< Pad number along x
93 Int_t fPadY; ///< Pad number along y
94 Int_t fCathode; ///< Cathode number
95 Int_t fADC; ///< ADC value
96 UInt_t fFlags; ///< Special flags (e.g. is the signal an overflow ?)
98 Int_t fNtracks; ///< MC tracks making to this digit.
100 /// charges of MC track making this digit
101 Float_t* fTcharges; //[fNtracks] charges of MC track making this digit
103 /// primary MC tracks making this digit
104 Int_t* fTracks; //[fNtracks] primary MC tracks making this digit
106 Int_t fHit; ///< MC hit number - temporary solution
108 UInt_t fStatusMap; ///< Neighbouring pad status (whether ped, gains, hv were ok or not)
110 static const UInt_t fgkSaturatedMask = 0x1; ///< the mask (part of fFlags) to indicate this digit is saturated
111 static const UInt_t fgkUsedMask = 0x10; ///< whether this digit is used by whatever other object (typically a cluster, though)
112 static const UInt_t fgkCalibratedMask = 0x100; ///< whether this digits has been calibrated
113 static const UInt_t fgkNoiseOnlyMask = 0x1000; ///< indicate a simulated digit due to noise only
114 static const UInt_t fgkEfficiencyMask = 0x2000; ///< indicate chamber efficiency has been applied to a simulated digit
116 ClassDef(AliMUONDigit,9) //Digits for MUON