//*-- Author: Rachid Guernane (LPCCFd)
#include "AliMUONGlobalTriggerBoard.h"
-
+#include "AliLog.h"
#include "TBits.h"
#include <Riostream.h>
for (Int_t i=0;i<16;i++) fRegionalResponse[i] = 0;
}
+//___________________________________________
+void AliMUONGlobalTriggerBoard::Mask(Int_t index, UShort_t mask)
+{
+ if ( index>=0 && index < 16 )
+ {
+ fMask[index]=mask;
+ }
+ else
+ {
+ AliError(Form("Index %d out of bounds (max %d)",index,16));
+ }
+}
+
//___________________________________________
void AliMUONGlobalTriggerBoard::Response()
{
Int_t t[16];
- for (Int_t i=0;i<16;i++) t[i] = fRegionalResponse[i];
+ for (Int_t i=0;i<16;i++) t[i] = fRegionalResponse[i] & fMask[i];
Int_t rank = 8;
virtual void Resp(Option_t*) {}
+ void Mask(Int_t index, UShort_t mask);
+
private:
UShort_t fRegionalResponse[16];
+ UShort_t fMask[16];
ClassDef(AliMUONGlobalTriggerBoard,1)
};
//___________________________________________
AliMUONLocalTriggerBoard::AliMUONLocalTriggerBoard()
- : AliMUONTriggerBoard()
+: AliMUONTriggerBoard()
{
fNumber = 0;
}
//___________________________________________
-AliMUONLocalTriggerBoard::AliMUONLocalTriggerBoard(const char *name, Int_t a)
- : AliMUONTriggerBoard(name, a)
+AliMUONLocalTriggerBoard::AliMUONLocalTriggerBoard(const char *name, Int_t a,
+ AliMUONTriggerLut* lut)
+: AliMUONTriggerBoard(name, a)
{
fNumber = 0;
fTC = kTRUE;
- fLUT = new AliMUONTriggerLut();
+ fLUT = lut;
for (Int_t i=0; i<5; i++) fMinDevStrip[i] = fMinDev[i] = fCoordY[i] = 0;
}
//___________________________________________
-void AliMUONLocalTriggerBoard::Mask(UShort_t M[2][4])
+void AliMUONLocalTriggerBoard::Mask(Int_t index, UShort_t mask)
{
- for (Int_t i=0; i<2; i++)
- for (Int_t j=0; j<4; j++)
- fMask[i][j] = M[i][j];
+ if ( index >= 0 && index < 2*4 )
+ {
+ Int_t i = index/4;
+ Int_t j = index - i*4;
+ fMask[i][j]=mask;
+ }
+ else
+ {
+ AliError(Form("Index %d out of bounds (max %d)",index,8));
+ }
}
//___________________________________________
// }
}
-//___________________________________________
-void AliMUONLocalTriggerBoard::Mask(char *chan, UShort_t M)
-{
- char *cath[2] = {"X", "Y"};
-
- char *cham[4] = {"1", "2", "3", "4"};
-
- for (Int_t i=0; i<2; i++)
- for (Int_t j=0; j<4; j++)
- {
- strcat(cath[i],cham[j]);
-
- if (!strcmp(cath[i],chan)) fMask[i][j] = M;
- }
-}
-
//___________________________________________
void AliMUONLocalTriggerBoard::Response()
{
{
public:
AliMUONLocalTriggerBoard();
- AliMUONLocalTriggerBoard(const char *name, Int_t a);
+ AliMUONLocalTriggerBoard(const char *name, Int_t a, AliMUONTriggerLut* lut);
virtual ~AliMUONLocalTriggerBoard() {;}
virtual void Setbit(Int_t strip, Int_t cathode, Int_t chamber);
virtual void Response();
-// inclusive masking
- virtual void Mask(UShort_t M[2][4]);
-
-// exclusive masking
- virtual void Mask(char *in, UShort_t M);
+ virtual void Mask(Int_t index, UShort_t value);
virtual void TrigX(Int_t ch1q[16], Int_t ch2q[16], Int_t ch3q[32], Int_t ch4q[32],
Int_t coinc44);
virtual void SetCrate(TString crate) {fCrate = crate;}
virtual TString GetCrate() {return fCrate;}
-
-
protected:
AliMUONLocalTriggerBoard(const AliMUONLocalTriggerBoard& right);
AliMUONLocalTriggerBoard& operator = (const AliMUONLocalTriggerBoard& right);
Int_t fMinDev[5];
Int_t fCoordY[5];
- AliMUONTriggerLut *fLUT;
+ AliMUONTriggerLut *fLUT; //! Pointer to trigger LUT, that we do not own.
ClassDef(AliMUONLocalTriggerBoard,1)
};
#include "AliMUONRegionalTriggerBoard.h"
+#include "AliLog.h"
+
#include "TBits.h"
#include <Riostream.h>
{
Int_t t[16];
- for (Int_t i=0;i<16;i++) t[i] = fLocalResponse[i];
+ for (Int_t i=0;i<16;i++) t[i] = fLocalResponse[i] & fMask[i];
Int_t rank = 8;
}
+//___________________________________________
+void AliMUONRegionalTriggerBoard::Mask(Int_t index, UShort_t mask)
+{
+ if ( index>=0 && index < 16 )
+ {
+ fMask[index]=mask;
+ }
+ else
+ {
+ AliError(Form("Index %d out of bounds (max %d)",index,16));
+ }
+}
ClassImp(AliMUONRegionalTriggerBoard)
virtual UShort_t Algo(UShort_t i, UShort_t j, char *thres, Int_t level);
- protected:
-
+ void Mask(Int_t index, UShort_t mask);
+
private:
-
UShort_t fLocalResponse[16];
-
+ UShort_t fMask[16];
+
ClassDef(AliMUONRegionalTriggerBoard,1)
};
#endif
virtual UShort_t GetResponse() {return fResponse;}
+ virtual void Mask(Int_t index, UShort_t mask) = 0;
+
protected:
Int_t fSlot;