- Disentangle masks effect from trigger chamber efficiency estimation.
[u/mrichter/AliRoot.git] / MUON / AliMUONLocalTrigger.h
1 #ifndef ALIMUONLOCALTRIGGER_H
2 #define ALIMUONLOCALTRIGGER_H
3
4 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5  * See cxx source for full Copyright notice                               */
6
7 /* $Id$ */
8 // Revision of includes 07/05/2004
9
10 /// \ingroup trigger
11 /// \class AliMUONLocalTrigger
12 /// \brief Reconstructed Local Trigger object
13 //  Author Ph. Crochet
14
15 #include <TObject.h>
16 #include "AliMUONRawStreamTriggerHP.h"
17
18 class AliMUONLocalStruct;
19 class TArrayS;
20
21 class AliMUONLocalTrigger : public TObject {
22  public:
23   AliMUONLocalTrigger();
24   AliMUONLocalTrigger(const AliMUONLocalTrigger& rhs); // copy constructor !
25   virtual ~AliMUONLocalTrigger();
26   AliMUONLocalTrigger& operator=(const AliMUONLocalTrigger& rhs); 
27
28   // getter methods
29   //
30         /// Return Circuit number
31   Int_t LoCircuit() const {return fLoCircuit;}
32         /// Return X strip in MT11
33   Int_t LoStripX() const {return fLoStripX;}   
34         /// Return Deviation
35   Int_t LoDev() const {return fLoDev;}
36         /// Return Sign of Deviation
37   Int_t LoSdev() const {return fLoSdev;}
38         /// Return Trig Y
39   Int_t LoTrigY() const {return fLoTrigY;}
40         /// Return Y strip in MT11
41   Int_t LoStripY() const {return fLoStripY;}
42         /// Return Low pt
43   Int_t LoLpt() const {return fLoLpt;}
44         /// Return High p
45   Int_t LoHpt() const {return fLoHpt;}
46
47            /// Return X strip pattern for chamber 11
48   UShort_t GetX1Pattern() const {return fX1Pattern;}
49            /// Return X strip pattern for chamber 12  
50   UShort_t GetX2Pattern() const {return fX2Pattern;}
51            /// Return X strip pattern for chamber 21 
52   UShort_t GetX3Pattern() const {return fX3Pattern;}
53            /// Return X strip pattern for chamber 22
54   UShort_t GetX4Pattern() const {return fX4Pattern;}
55            /// return X pattern array
56    void    GetXPattern(TArrayS& array) const;
57
58
59            /// Return Y strip pattern for chamber 11 
60   UShort_t GetY1Pattern() const {return fY1Pattern;}
61            /// Return Y strip pattern for chamber 12
62   UShort_t GetY2Pattern() const {return fY2Pattern;}
63            /// Return Y strip pattern for chamber 21
64   UShort_t GetY3Pattern() const {return fY3Pattern;}
65            /// Return Y strip pattern for chamber 22
66   UShort_t GetY4Pattern() const {return fY4Pattern;}
67            /// return Y pattern array
68    void    GetYPattern(TArrayS& array) const;
69
70   Char_t GetLoDecision() const;
71   
72   Int_t GetDeviation() const;
73   void  SetDeviation(Int_t deviation);
74
75   /// Trigger response X strips
76   Bool_t IsTrigX() const;
77   /// Trigger response Y strips
78   Bool_t IsTrigY() const;
79
80   /// Hit pattern from the re-calculated trigger response after removing chambers one-by-one
81   UShort_t GetHitPatternFromResponse() const {return fHitPatternFromResponse; }
82
83   /// Triggers from the re-calculated trigger response after removing chambers one-by-one
84   UChar_t GetTriggerWithoutChamber() const {return fTriggerWithoutChamber; }
85
86   // setter methods
87   //
88            /// Set Circuit number
89   void SetLoCircuit(Int_t loCir) {fLoCircuit = loCir;}
90            /// Set X strip in MT11
91   void SetLoStripX(Int_t loStrX) {fLoStripX = loStrX;}   
92            /// Set Deviation
93   void SetLoDev(Int_t loDev)     {fLoDev = loDev;}
94              /// Set Sign of Deviation
95   void SetLoSdev(Int_t loSdev)   {fLoSdev = loSdev;}
96            /// Set Trig Y
97   void SetLoTrigY(Int_t loTrigY) {fLoTrigY = loTrigY;}
98            /// Set Y strip in MT11
99   void SetLoStripY(Int_t loStrY) {fLoStripY = loStrY;}
100            /// Set Low pt
101   void SetLoLpt(Int_t loLpt)     {fLoLpt = loLpt;}
102            /// Set High pt
103   void SetLoHpt(Int_t loHpt)     {fLoHpt = loHpt;}
104    
105            /// Set X strip pattern for chamber 11
106   void SetX1Pattern(UShort_t pat) {fX1Pattern = pat;}
107            /// Set X strip pattern for chamber 12
108   void SetX2Pattern(UShort_t pat) {fX2Pattern = pat;}
109            /// Set X strip pattern for chamber 21
110   void SetX3Pattern(UShort_t pat) {fX3Pattern = pat;}
111            /// Set X strip pattern for chamber 22
112   void SetX4Pattern(UShort_t pat) {fX4Pattern = pat;}
113
114            /// Set Y strip pattern for chamber 11
115   void SetY1Pattern(UShort_t pat) {fY1Pattern = pat;}
116            /// Set Y strip pattern for chamber 12
117   void SetY2Pattern(UShort_t pat) {fY2Pattern = pat;}
118            /// Set Y strip pattern for chamber 21
119   void SetY3Pattern(UShort_t pat) {fY3Pattern = pat;}
120            /// Set Y strip pattern for chamber 22
121   void SetY4Pattern(UShort_t pat) {fY4Pattern = pat;}
122
123   void SetLocalStruct(Int_t loCircuit, AliMUONLocalStruct& localStruct);
124   void SetLocalStruct(Int_t loCircuit, const AliMUONRawStreamTriggerHP::AliLocalStruct& localStruct);
125
126   Bool_t IsNull() const;
127   
128   virtual void Print(Option_t* opt="") const;
129   
130   virtual const char* GetName() const;
131
132   /// The board would provide a trigger even after removing chamber ich [0,3]
133   void SetTriggerWithoutChamber(Int_t ich){ fTriggerWithoutChamber |= 1 << (3 - ich); }
134
135   /// Trigger algorithm did NOT find hit in the specified chamber and cathode
136   void SetNoHitInPlane(Int_t icath, Int_t ich){ fHitPatternFromResponse &= ~(1 << (7 - 4*icath - ich)); }
137
138 private:
139   Int_t fLoCircuit; ///< Circuit number 
140   Int_t fLoStripX;  ///< X strip in MT11 
141   Int_t fLoDev;     ///< Deviation
142   Int_t fLoSdev;    ///< Sign of Deviation 
143   Int_t fLoTrigY;   ///< Trig Y
144   Int_t fLoStripY;  ///< Y strip in MT11 
145   Int_t fLoLpt;     ///< Low pt  0 : nothing, 1 : Minus, 2 : Plus, 3 : Undef
146   Int_t fLoHpt;     ///< High pt 0 : nothing, 1 : Minus, 2 : Plus, 3 : Undef
147   
148   UShort_t fX1Pattern; ///< X strip pattern for chamber 11
149   UShort_t fX2Pattern; ///< X strip pattern for chamber 12
150   UShort_t fX3Pattern; ///< X strip pattern for chamber 21
151   UShort_t fX4Pattern; ///< X strip pattern for chamber 22
152
153   UShort_t fY1Pattern; ///< Y strip pattern for chamber 11
154   UShort_t fY2Pattern; ///< Y strip pattern for chamber 12
155   UShort_t fY3Pattern; ///< Y strip pattern for chamber 21
156   UShort_t fY4Pattern; ///< Y strip pattern for chamber 22
157
158   UShort_t fHitPatternFromResponse; ///<  Fired plane according to re-computed repsonse
159   UChar_t fTriggerWithoutChamber; ///< Pattern of triggers after chamber removal
160
161   ClassDef(AliMUONLocalTrigger,5)  // reconstructed Local Trigger object
162 };
163 #endif
164
165
166
167
168
169