/* $Id$ */
-/// \ingroup sim
+/// \ingroup trigger
/// \class AliMUONGlobalTriggerBoard
-/// \brief GLOBAL TRIGGER
+/// \brief Global trigger board
///
-/// \author Rachid Guernane (LPCCFd)
+// Author: Rachid Guernane (LPCCFd)
#include "AliMUONTriggerBoard.h"
AliMUONGlobalTriggerBoard();
AliMUONGlobalTriggerBoard(const char *name, Int_t a);
- virtual ~AliMUONGlobalTriggerBoard() {;}
-
+ virtual ~AliMUONGlobalTriggerBoard();
+
+ /// Set regional board responses
virtual void SetRegionalResponse(UShort_t resp[16]) {for (Int_t i=0; i<16; i++) fRegionalResponse[i] = resp[i];}
virtual void Response();
- virtual UShort_t Algo(UShort_t i, UShort_t j, char *thres);
-
+ /// response of the algorithm
+ virtual UShort_t Algo(UShort_t i, UShort_t j, const char *thres);
+
+ /// Reset regional board responses
virtual void Reset() {for (Int_t i=0; i<16; i++) fRegionalResponse[i] = 0;}
+ /// scan response of regional boards
virtual void Scan(Option_t *option) const;
+ /// Dummy implementation
virtual void Resp(Option_t*) const {}
- void Mask(Int_t index, UShort_t mask);
+ /// Set mask for global input (from regional boards)
+ void Mask(Int_t index, UInt_t mask);
+
+ /// Build the 4 words (32bits) global input
+ void BuildGlobalInput();
+ /// Apply masks to global input
+ void MaskGlobalInput();
+ /// Global input 4 words (32bits) from regional responses
+ UInt_t* GetGlobalInput() { return fGlobalInput; }
+
+ void RecomputeRegional(UInt_t globalInput[4]);
private:
- UShort_t fRegionalResponse[16]; ///< REGIONAL BOARD RESPONSES
- UShort_t fMask[16]; ///< MASK
+ UShort_t InvertPairBits(Int_t iReg);
+
+ UShort_t fRegionalResponse[16]; ///< Regional board responses
+ UInt_t fGlobalInput[4]; ///< Global input
+ UInt_t fMask[4]; ///< Mask for the global input
- ClassDef(AliMUONGlobalTriggerBoard,1)
+ ClassDef(AliMUONGlobalTriggerBoard,2) //Global trigger board
};
#endif