]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - EMCAL/AliEMCALTriggerSTURawStream.cxx
remove exec
[u/mrichter/AliRoot.git] / EMCAL / AliEMCALTriggerSTURawStream.cxx
index dc1183373579473a128c620ffcbb2e9497566460..de4b2c430b86c834158a73503eb052146fcb3ce4 100644 (file)
@@ -34,7 +34,7 @@ Author: R. GUERNANE LPSC Grenoble CNRS/IN2P3
 namespace
 {
        const Int_t kPayLoadSizeOld     = 236;
-       const Int_t kPayLoadSizeNew     = 245;
+       const Int_t kPayLoadSizeNew     = 245;        
 }
 
 ClassImp(AliEMCALTriggerSTURawStream)
@@ -142,7 +142,7 @@ Bool_t AliEMCALTriggerSTURawStream::ReadPayLoad()
                
                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",
@@ -156,25 +156,23 @@ Bool_t AliEMCALTriggerSTURawStream::ReadPayLoad()
                                         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];
@@ -186,23 +184,22 @@ Bool_t AliEMCALTriggerSTURawStream::ReadPayLoad()
                        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];
                
@@ -451,3 +448,22 @@ void AliEMCALTriggerSTURawStream::DumpPayLoad(const Option_t *option) const
                }
        }
 }
+
+//_____________________________________________________________________________
+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);
+}