]> git.uio.no Git - u/mrichter/AliRoot.git/blob - MUON/AliMUONDigit.h
Adding method IsEfficiencyApplied to be used by trigger digitization (Laurent,Diego)
[u/mrichter/AliRoot.git] / MUON / AliMUONDigit.h
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 #include <TObject.h>
14
15 class AliMUONDigit : public TObject 
16 {
17  public:
18     AliMUONDigit();
19     AliMUONDigit(const AliMUONDigit& rhs);
20     virtual ~AliMUONDigit();
21
22     AliMUONDigit& operator=(const AliMUONDigit& rhs);
23     
24     virtual Bool_t IsSortable() const {return kTRUE;}        ///< Return true if sortable
25     virtual Int_t Compare(const TObject *obj) const;
26
27     virtual Int_t DetElemId()const     {return fDetElemId;}  ///< Return detection element ID  
28     virtual Int_t PadX() const         {return fPadX;}       ///< Return pad number along x
29     virtual Int_t PadY() const         {return fPadY;}       ///< Return pad number along y
30     virtual Int_t Cathode() const      {return fCathode;}    ///< Return cathode number
31     
32     virtual Float_t Signal() const       {return fSignal;}     ///< Return signal amplitude
33     
34     virtual Float_t Physics() const      {return fPhysics;}    ///< Return MC physics contribution to signal
35     
36     virtual Int_t Hit() const          {return fHit;}        ///< Return MC hit number
37     
38     virtual Int_t Ntracks() const { return fNtracks; }       ///< Return MC tracks making to this digit
39     virtual void AddTrack(Int_t trackNumber, Float_t trackCharge);
40     virtual Int_t Track(Int_t i) const;
41     virtual Float_t TrackCharge(Int_t i) const;
42     
43     virtual Int_t ADC() const { return fADC; }                 ///< Return ADC value
44     virtual Int_t ManuId() const { return fManuId; }           ///< Return Id of the MANU chip
45     virtual Int_t ManuChannel() const { return fManuChannel; } ///< Return Channel within the MANU chip
46     virtual Bool_t IsSaturated() const;
47     virtual Bool_t IsNoiseOnly() const;
48     virtual Bool_t IsEfficiencyApplied() const;
49     virtual UInt_t StatusMap() const { return fStatusMap; }
50     
51     virtual void NoiseOnly(Bool_t value=kTRUE);
52     virtual void Saturated(Bool_t saturated=kTRUE);
53     virtual void EfficiencyApplied(Bool_t value=kTRUE);
54     
55     virtual void SetElectronics(Int_t manuId, Int_t manuChannel);
56     virtual void SetADC(Int_t adc) { fADC=adc; }
57     virtual void SetDetElemId(Int_t id)    {fDetElemId = id;}  ///< Set detection element ID
58     virtual void SetPadX(Int_t pad)        {fPadX = pad;}      ///< Set pad number along x
59     virtual void SetPadY(Int_t pad)        {fPadY = pad;}      ///< Set pad number along y
60     virtual void SetSignal(Float_t q)        {fSignal = q;}      ///< Set signal amplitude
61     virtual void AddSignal(Float_t q)        {fSignal += q;}     ///< Add signal amplitude
62     virtual void AddPhysicsSignal(Float_t q) {fPhysics += q;}    ///< Add MC physics contribution to signal
63     virtual void SetHit(Int_t n)           {fHit = n;}         ///< Set MC hit number
64     virtual void SetCathode(Int_t c)       {fCathode = c;}     ///< Set cathode number
65     virtual void SetPhysicsSignal(Float_t q) {fPhysics = q; }    ///< Set MC physics contribution to signal
66     virtual void SetStatusMap(UInt_t statusMap) { fStatusMap = statusMap; }
67     
68     virtual void Print(Option_t* opt="") const;
69     
70     virtual void Copy(TObject& digit) const;
71     
72     /** Delete the internal track arrays (which are dynamically allocated).
73       * This is to insure we can put those digits in e.g. TClonesArray
74       * w/o leaking memory.
75       */
76     virtual void Clear(Option_t*);
77     
78     // Add mask to the track numbers.
79     virtual void PatchTracks(Int_t mask);
80     
81 private:
82     Int_t fDetElemId;     ///< Detection element ID
83     Int_t fManuId;        ///< Id of the MANU chip.
84     Int_t fManuChannel;   ///< Channel within the MANU chip.
85     Float_t fSignal;        ///< Signal amplitude    
86       
87     Int_t fPadX;          ///< Pad number along x
88     Int_t fPadY;          ///< Pad number along y
89     Int_t fCathode;       ///< Cathode number
90     Int_t fADC;           ///< ADC value
91     UInt_t fFlags;        ///< Special flags (e.g. is the signal an overflow ?)
92     
93     Int_t fNtracks;       ///< MC tracks making to this digit.
94     
95     /// charges of MC track making this digit
96     Float_t* fTcharges;     //[fNtracks]  charges of MC track making this digit
97
98     /// primary MC tracks making this digit
99     Int_t* fTracks;       //[fNtracks]  primary MC tracks making this digit
100
101     Float_t fPhysics;       ///< MC physics contribution to signal 
102     Int_t fHit;           ///< MC hit number - temporary solution
103   
104     UInt_t fStatusMap; ///< Neighbouring pad status (whether ped, gains, hv were ok or not)
105     
106     static const UInt_t fgkSaturatedMask = 0x1; ///< the mask (part of fFlags) to indicate this digit is saturated
107     static const UInt_t fgkNoiseOnlyMask = 0x1000; ///< indicate a simulated digit due to noise only
108     static const UInt_t fgkEfficiencyMask = 0x2000; ///< indicate chamber efficiency has been applied to a simulated digit
109     
110     ClassDef(AliMUONDigit,7)  //Digits for MUON
111 };
112 #endif