X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=MUON%2FAliMUONRegionalTriggerBoard.cxx;h=42f9fe5c8a219f9564a0ab1639ff72c99685107f;hb=033da0c5a0ff365a812cabb30788262ae2b1e5f7;hp=556eb9350c82317344f0007dc96cb9916a93cf5c;hpb=3d1463c8f7148e36069c24f20cde34e096d5d6a9;p=u%2Fmrichter%2FAliRoot.git diff --git a/MUON/AliMUONRegionalTriggerBoard.cxx b/MUON/AliMUONRegionalTriggerBoard.cxx index 556eb9350c8..42f9fe5c8a2 100644 --- a/MUON/AliMUONRegionalTriggerBoard.cxx +++ b/MUON/AliMUONRegionalTriggerBoard.cxx @@ -21,9 +21,9 @@ /// - entry are local board responses /// - output is 12-bit word /// - algorithm is similar to the global one -/// \todo Change member functions comments in capital letters to normal text /// /// \author Rachid Guernane (LPCCFd) +/// Corrected by Christian Finck (Subatech) //----------------------------------------------------------------------------- #include "AliMUONRegionalTriggerBoard.h" @@ -40,13 +40,17 @@ ClassImp(AliMUONRegionalTriggerBoard) //___________________________________________ AliMUONRegionalTriggerBoard::AliMUONRegionalTriggerBoard() + : AliMUONTriggerBoard(), + fMask(0x0) { /// Default constructor for (Int_t i=0; i<16; i++) fLocalResponse[i] = 0; } //___________________________________________ -AliMUONRegionalTriggerBoard::AliMUONRegionalTriggerBoard(const char *name, Int_t a) : AliMUONTriggerBoard(name, a) +AliMUONRegionalTriggerBoard::AliMUONRegionalTriggerBoard(const char *name, Int_t a) + : AliMUONTriggerBoard(name, a), + fMask(0x0) { /// Standard constructor for (Int_t i=0; i<16; i++) fLocalResponse[i] = 0; @@ -61,22 +65,31 @@ AliMUONRegionalTriggerBoard::~AliMUONRegionalTriggerBoard() //___________________________________________ void AliMUONRegionalTriggerBoard::Response() { -/// RESPONSE IS GIVEN FOLLOWING THE REGIONAL ALGORITHM +/// response is given following the regional algorithm +// output from local trigger algorithm +// [+, -] * [Hpt, Lpt] +// transformed to [+, -, US, LS] * [Hpt, Lpt] Int_t t[16]; - for (Int_t i=0;i<16;i++) t[i] = fLocalResponse[i] & fMask[i]; - + for (Int_t i = 0; i < 16; ++i) + { + if ((fMask >> i) & 0x1) + t[i] = fLocalResponse[i]; + else + t[i] = 0; + } + Int_t rank = 8; - for (Int_t i=0;i<4;i++) + for (Int_t i = 0; i < 4; ++i) { Int_t ip = 0; - for (Int_t j=0;j 0 a ,b = reg response = Hpt (+|-|us|ls) | Lpt (+|-|us|ls) + TBits a(8), b(8); a.Set(8,&i); b.Set(8,&j); TBits trg1(2), trg2(2), trg(2); if (!strcmp(thres,"LPT")) { - if (!level) + + if (!level) { trg1[0] = a[0]; trg1[1] = a[1]; trg2[0] = b[0]; trg2[1] = b[1]; @@ -138,13 +154,17 @@ UShort_t AliMUONRegionalTriggerBoard::Algo(UShort_t i, UShort_t j, char *thres, { if (!strcmp(thres,"LPT")) { - trgLS1[0] = a[1]; trgUS1[0] = a[0]; - trgLS2[0] = b[1]; trgUS2[0] = b[0]; + //trgLS1[0] = a[1]; trgUS1[0] = a[0]; + //trgLS2[0] = b[1]; trgUS2[0] = b[0]; + trgLS1[0] = a[0]; trgUS1[0] = a[1]; + trgLS2[0] = b[0]; trgUS2[0] = b[1]; } else { - trgLS1[0] = a[5]; trgUS1[0] = a[4]; - trgLS2[0] = b[5]; trgUS2[0] = b[4]; + //trgLS1[0] = a[5]; trgUS1[0] = a[4]; + //trgLS2[0] = b[5]; trgUS2[0] = b[4]; + trgLS1[0] = a[4]; trgUS1[0] = a[5]; + trgLS2[0] = b[4]; trgUS2[0] = b[5]; } } @@ -156,21 +176,21 @@ UShort_t AliMUONRegionalTriggerBoard::Algo(UShort_t i, UShort_t j, char *thres, TBits v(4); - v[0] = trgUS[0]; - v[1] = trgLS[0]; + //v[0] = trgUS[0]; + //v[1] = trgLS[0]; + v[0] = trgLS[0]; + v[1] = trgUS[0]; v[2] = trg[0]; v[3] = trg[1]; - UShort_t rv = 0; v.Get(&rv); - return rv; } //___________________________________________ void AliMUONRegionalTriggerBoard::Scan(Option_t*) const { -/// SCAN LOCAL BOARD ENTRIES +/// scan local board entries for (Int_t i=0; i<16; i++) { @@ -182,18 +202,13 @@ void AliMUONRegionalTriggerBoard::Scan(Option_t*) const } } - //___________________________________________ -void AliMUONRegionalTriggerBoard::Mask(Int_t index, UShort_t mask) +void AliMUONRegionalTriggerBoard::Mask(UShort_t mask) { -/// MASK ENTRY index - - if ( index>=0 && index < 16 ) - { - fMask[index]=mask; - } - else - { - AliError(Form("Index %d out of bounds (max %d)",index,16)); - } +/// mask entry index + + fMask = mask; } + + +