1 #ifndef ALIMUONLOCALTRIGGERBOARD_H
2 #define ALIMUONLOCALTRIGGERBOARD_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * See cxx source for full Copyright notice */
9 /// \class AliMUONLocalTriggerBoard
10 /// \brief Implementation of local trigger board objects
12 /// A local trigger board has as input a bit pattern and returns
13 /// the local trigger response after comparison w/ a LUT
15 /// \author Rachid Guernane (LPCCFd)
17 #include "AliMUONTriggerBoard.h"
19 class AliMUONTriggerLut;
21 class AliMUONLocalTriggerBoard : public AliMUONTriggerBoard
37 AliMUONLocalTriggerBoard();
38 AliMUONLocalTriggerBoard(const char *name, Int_t a, AliMUONTriggerLut* lut);
39 virtual ~AliMUONLocalTriggerBoard() {;}
41 Bool_t HasLUT() const { return (fLUT != 0); }
43 void SetLUT(AliMUONTriggerLut* lut) { fLUT = lut; }
45 virtual void Setbit(Int_t strip, Int_t cathode, Int_t chamber);
46 virtual void SetbitM(Int_t strip, Int_t cathode, Int_t chamber);
48 virtual void Pattern(Option_t *option = "X Y") const; // default option displays X then Y bp
52 virtual void SetSwitch(Int_t i, Int_t value) {fSwitch[i] = value;}
54 virtual UShort_t GetSwitch(Int_t i) const {return fSwitch[i];}
56 virtual void SetTC(Bool_t con) {fTC = con;}
58 virtual Bool_t GetTC() const {return fTC;}
60 virtual void SetNumber(Int_t nb) {fNumber = nb;}
62 virtual Int_t GetNumber() const {return fNumber;}
64 virtual void Module(char *mod);
66 virtual void GetX34(UShort_t *X) const {for (Int_t i=0;i<2;i++) X[i] = fXY[0][i+2];}
68 virtual void SetX34(UShort_t *X) {for (Int_t i=0;i<2;i++) fXY[0][i+2] = X[i];}
70 virtual void GetY(UShort_t *Y) const {for (Int_t i=0;i<4;i++) Y[i] = fXY[1][i];}
72 virtual void SetY(UShort_t *Y) {for (Int_t i=0;i<4;i++) fXY[1][i] = Y[i];}
74 virtual void GetXY(UShort_t XY[2][4]) const {for (Int_t i=0;i<2;i++) for (Int_t j=0;j<4;j++) XY[i][j] = fXY[i][j];}
76 virtual UShort_t GetXY(Int_t i, Int_t j) const {return fXY[i][j];}
78 virtual void SetXY(UShort_t XY[2][4]) {for (Int_t i=0;i<2;i++) for (Int_t j=0;j<4;j++) fXY[i][j] = XY[i][j];}
80 virtual void Conf() const;
82 virtual void Response();
84 virtual void Mask(Int_t index, UShort_t value);
86 virtual void TrigX(Int_t ch1q[16], Int_t ch2q[16], Int_t ch3q[32], Int_t ch4q[32],
89 virtual void Sort2x5(Int_t dev1[6], Int_t dev2[6],
90 Int_t minDev[6], Int_t &dev1GTdev2);
92 virtual void TrigY(Int_t y1[16], Int_t y2[16], Int_t y3[16], Int_t y4[16],
93 Int_t y3u[16], Int_t y3d[16], Int_t y4u[16], Int_t y4d[16],
96 virtual void SetXYU(UShort_t V[2][4]) {for (Int_t i=0;i<2;i++) for (Int_t j=0;j<4;j++) fXYU[i][j] = V[i][j];}
98 virtual void SetXYD(UShort_t V[2][4]) {for (Int_t i=0;i<2;i++) for (Int_t j=0;j<4;j++) fXYD[i][j] = V[i][j];}
100 virtual void Scan(Option_t *option = "") const;
102 virtual Int_t GetI() const;
104 virtual void LocalTrigger();
106 virtual Int_t Triggered() const {return fOutput;}
108 virtual Int_t GetStripX11() const {return fStripX11;}
110 virtual Int_t GetStripY11() const {return fStripY11;}
112 virtual Int_t GetDev() const {return fDev;}
114 virtual void SetCrate(TString crate) {fCrate = crate;}
116 virtual TString GetCrate() const {return fCrate;}
119 AliMUONLocalTriggerBoard(const AliMUONLocalTriggerBoard& right);
120 AliMUONLocalTriggerBoard& operator = (const AliMUONLocalTriggerBoard& right);
122 static const Int_t fgkCircuitId[234]; // old numbering (to be removed)
124 virtual void Resp(Option_t *option) const; // local trigger info before ("I") and after ("F") LUT
126 virtual void BP(Option_t *option) const; // display X/Y bp
130 Int_t fNumber; // Board number
132 TString fCrate; // Crate name
134 UShort_t fSwitch[10]; // Switch
135 UShort_t fXY[2][4]; // Bit pattern
136 UShort_t fXYU[2][4]; // Bit pattern UP
137 UShort_t fXYD[2][4]; // Bit pattern DOWN
138 UShort_t fMask[2][4]; // Mask
140 Bool_t fTC; // Transverse connector
142 Int_t fStripX11; // MT1 X position of the valid road
144 Int_t fStripY11; // MT1 Y position of the valid road
146 Int_t fDev; // Deviation in [0;+30]
148 Int_t fLutLpt[2]; // Low Pt cuts estimated from LUT
149 Int_t fLutHpt[2]; // High Pt cuts estimated from LUT
150 Int_t fLutApt[2]; // All Pt cuts estimated from LUT
152 // Outputs of the local logic
153 Int_t fOutput; // Board has triggered
154 Int_t fMinDevStrip[5]; // X (from algo)
155 Int_t fMinDev[5]; // Dev (from algo)
156 Int_t fCoordY[5]; // Y (from algo)
158 AliMUONTriggerLut *fLUT; //! Pointer to trigger LUT, that we do not own.
160 ClassDef(AliMUONLocalTriggerBoard,1)