/// [US:2, LS:2, Single:2] with [Hpt, Lpt]
/// remove Apt
- // don't have the information anymore of the sign
- fSingleLpt = globalResponse & 0x1;
- fSingleHpt = (globalResponse >> 1) & 0x1;
+ fSingleLpt = (globalResponse >> 1) & 0x1;
+ fSingleHpt = (globalResponse >> 2) & 0x1;
- fPairUnlikeLpt = (globalResponse >> 4) & 0x1;
- fPairUnlikeHpt = (globalResponse >> 5) & 0x1;
+ fPairLikeLpt = (globalResponse >> 3) & 0x1;
+ fPairLikeHpt = (globalResponse >> 4) & 0x1;
- fPairLikeLpt = (globalResponse >> 2) & 0x1;
- fPairLikeHpt = (globalResponse >> 3) & 0x1;
+ fPairUnlikeLpt = (globalResponse >> 5) & 0x1;
+ fPairUnlikeHpt = (globalResponse >> 6) & 0x1;
}
/// from class member values
/// [US:2, LS:2, Single:2] with [Hpt, Lpt]
- Int_t response = 0;
+ UChar_t response = 0;
- if (SingleLpt()) response|= 0x1;
- if (SingleHpt()) response|= 0x2;
+ if (SingleLpt()) response|= 0x2;
+ if (SingleHpt()) response|= 0x4;
- if (PairLikeLpt()) response|= 0x4;
- if (PairLikeHpt()) response|= 0x8;
+ if (PairLikeLpt()) response|= 0x8;
+ if (PairLikeHpt()) response|= 0x10;
- if (PairUnlikeLpt()) response|= 0x10;
- if (PairUnlikeHpt()) response|= 0x20;
+ if (PairUnlikeLpt()) response|= 0x20;
+ if (PairUnlikeHpt()) response|= 0x40;
return response;
}
for (Int_t i=0;i<16;i++) fRegionalResponse[i] = 0;
for (Int_t i=0;i< 4;i++) fGlobalInput[i] = 0;
+ for (Int_t i=0;i< 4;i++) fMask[i] = 0xffffffff;
}
//___________________________________________
for (Int_t i=0;i<16;i++) fRegionalResponse[i] = 0;
for (Int_t i=0;i< 4;i++) fGlobalInput[i] = 0;
+ for (Int_t i=0;i< 4;i++) fMask[i] = 0xffffffff;
}
//___________________________________________
usLpt = ((t[0] & 0x2 ) != 0);
usHpt = ((t[0] & 0x20) != 0);
- sHpt <<= 1;
- lsLpt <<= 2;
- lsHpt <<= 3;
- usLpt <<= 4;
- usHpt <<= 5;
+ // LSB is zero (trigger choice to send to CTP: sLpt or sHpt)
+
+ sLpt <<= 1;
+ sHpt <<= 2;
+ lsLpt <<= 3;
+ lsHpt <<= 4;
+ usLpt <<= 5;
+ usHpt <<= 6;
fResponse = sLpt | sHpt | lsLpt | lsHpt | usLpt |usHpt;
TBits rs(8), rsi(8);
for (Int_t iReg = 0; iReg < 16; iReg++) {
- // invert bit in regional response
+ // invert bits in regional response ?
rs.Set(8,&fRegionalResponse[iReg]);
for (Int_t i = 0; i < 4; i++) {
- rsi[2*i] = rs[2*i+1];
- rsi[2*i+1] = rs[2*i];
+ // ... YES
+ //rsi[2*i] = rs[2*i+1];
+ //rsi[2*i+1] = rs[2*i];
+ // ... NO
+ rsi[2*i] = rs[2*i];
+ rsi[2*i+1] = rs[2*i+1];
}
regRespInv = 0;
rsi.Get(®RespInv);
// Hpt
fRegionalResponse[iReg] |= ((gitmp[3] >> (4*(iReg-8))) & 0xF) << 4;
}
- // invert bit in regional response
+ // invert bits in regional response ?
rs.Set(8,&fRegionalResponse[iReg]);
for (Int_t i = 0; i < 4; i++) {
rsi[2*i] = rs[2*i+1];
}
regRespInv = 0;
rsi.Get(®RespInv);
- fRegionalResponse[iReg] = regRespInv;
+ // uncomment if ... YES
+ //fRegionalResponse[iReg] = regRespInv;
}
}
void AliMUONGlobalTriggerBoard::Scan(Option_t*) const
{
/// print global trigger output
- TBits w(6); w.Set(6,&fResponse);
+ TBits w(7); w.Set(7,&fResponse);
// TRG[1:0]
// 00 noth
Int_t iS[2] = {0,0};
- iS[0] = (Int_t)w.TestBitNumber(0);
- iS[1] = (Int_t)w.TestBitNumber(1);
+ iS[0] = (Int_t)w.TestBitNumber(1);
+ iS[1] = (Int_t)w.TestBitNumber(2);
- Int_t iPU[2] = {w[4],w[5]};
- Int_t iPL[2] = {w[2],w[3]};
+ Int_t iPU[2] = {w[5],w[6]};
+ Int_t iPL[2] = {w[3],w[4]};
printf("============================================\n");
printf(" Global Trigger output Low pt High pt\n");