X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=MUON%2FAliMUONRegionalTriggerBoard.cxx;h=80cdb7b4e55291e937c042f27fd6b7c7f0fb3976;hb=b88fed653be829b4aaa18dc1b3ff8b63d94718d5;hp=2d1f88a92d3bd6db46af8ed65945a83ecfca5662;hpb=c4ee792dc7a453b2f8639fe20c333afaf9ee5648;p=u%2Fmrichter%2FAliRoot.git diff --git a/MUON/AliMUONRegionalTriggerBoard.cxx b/MUON/AliMUONRegionalTriggerBoard.cxx index 2d1f88a92d3..80cdb7b4e55 100644 --- a/MUON/AliMUONRegionalTriggerBoard.cxx +++ b/MUON/AliMUONRegionalTriggerBoard.cxx @@ -15,6 +15,7 @@ /* $Id$ */ +//----------------------------------------------------------------------------- /// \class AliMUONRegionalTriggerBoard /// Dimuon regional trigger implementation: /// - entry are local board responses @@ -22,6 +23,8 @@ /// - algorithm is similar to the global one /// /// \author Rachid Guernane (LPCCFd) +/// Corrected by Christian Finck (Subatech) +//----------------------------------------------------------------------------- #include "AliMUONRegionalTriggerBoard.h" @@ -31,40 +34,62 @@ #include +/// \cond CLASSIMP ClassImp(AliMUONRegionalTriggerBoard) +/// \endcond //___________________________________________ 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; } +//___________________________________________ +AliMUONRegionalTriggerBoard::~AliMUONRegionalTriggerBoard() +{ +/// Destructor +} + //___________________________________________ void AliMUONRegionalTriggerBoard::Response() { -/* - RESPONSE IS GIVEN FOLLOWING THE REGIONAL ALGORITHM -*/ - Int_t t[16]; +/// response is given following the regional algorithm +// output from local trigger algorithm +// [+, -] * [Hpt, Lpt] +// transformed to [+, -, US, LS] * [Hpt, Lpt] - for (Int_t i=0;i<16;i++) t[i] = fLocalResponse[i] & fMask[i]; + Int_t t[16]; + 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]; @@ -125,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]; } } @@ -143,23 +176,22 @@ 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++) { TBits b; @@ -170,19 +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; } -ClassImp(AliMUONRegionalTriggerBoard) + +