namespace
{
const Int_t kPayLoadSizeOld = 236;
- const Int_t kPayLoadSizeNew = 245;
+ const Int_t kPayLoadSizeNew = 245;
}
ClassImp(AliEMCALTriggerSTURawStream)
word32[iword++] = w32;
}
-
+
if (iword != kPayLoadSizeOld && iword != kPayLoadSizeNew && iword != (kPayLoadSizeOld + 1536) && iword != (kPayLoadSizeNew + 1536))
{
AliError(Form("STU payload (eqId: %d, eqSize: %d) doesn't match expected size! %d word32",
eqId, eqSize, iword));
}
- int offset = 0;
+ int offset = 0, jetSize = 2;
switch (iword)
{
case kPayLoadSizeOld:
case kPayLoadSizeOld + 1536:
{
- fL1JetThreshold = ((word32[0]>>16) & 0xFFF);
- fL1GammaThreshold = (word32[0] & 0xFFF);
+ fL1JetThreshold = ((word32[0]>>16) & 0xFFFF);
+ fL1GammaThreshold = (word32[0] & 0xFFFF);
break;
}
case kPayLoadSizeNew:
case kPayLoadSizeNew + 1536:
{
- fV0A = ((word32[0]>>16) & 0xFFF);
- fV0C = (word32[0] & 0xFFF);
-
- UInt_t sV0 = fV0A + fV0C;
+ fV0A = ((word32[0]>>16) & 0xFFFF);
+ fV0C = (word32[0] & 0xFFFF);
fGA = word32[1];
fGB = word32[2];
fFrameReceived = word32[8];
fFwVersion = word32[9];
- fL1JetThreshold = fJA * sV0 * sV0 + fJB * sV0 + fJC;
- fL1GammaThreshold = fGA * sV0 * sV0 + fGB * sV0 + fGC;
+ jetSize += (fFwVersion >> 16);
+
+ fL1JetThreshold = GetThreshold(fJA, fJB, fJC, fV0A, fV0C);
+ fL1GammaThreshold = GetThreshold(fGA, fGB, fGC, fV0A, fV0C);
offset = 9;
break;
}
- default:
- AliError(Form("ERROR: STU payload size does not match any of the expected sizes! %d word32",iword));
- break;
}
///////////
// START DECODING
//////////
-
- for (Int_t jet_row = 0; jet_row < 11; jet_row++)
+
+ for (Int_t jet_row = 0; jet_row < 12 - (jetSize - 1); jet_row++)
{
UInt_t currentrow = word32[offset + 1 + jet_row];
}
}
}
+
+//_____________________________________________________________________________
+UShort_t AliEMCALTriggerSTURawStream::GetThreshold(Short_t A, Short_t B, Short_t C, UShort_t V0A, UShort_t V0C) const
+{
+ // Get threshold
+ ULong64_t v0sum = V0A + V0C;
+
+ ULong64_t sqrV0 = v0sum * v0sum;
+
+ sqrV0 *= A;
+
+ sqrV0 >>= 32;
+
+ v0sum *= B;
+
+ v0sum >>= 16;
+
+ return (UShort_t)(sqrV0 + v0sum + C);
+}