- cleaning up debug output
[u/mrichter/AliRoot.git] / HLT / CALO / AliHLTCaloClusterizerComponent.cxx
index 2b68cc26e3727f0a6164802802a9c0c702acdfda..2359c82568a54c47d28c7a8dc4eeff263aac8e6b 100644 (file)
  * provided "as is" without express or implied warranty.                  *
  **************************************************************************/
 
-#include <iostream>
-
 #include "AliHLTCaloClusterizerComponent.h"
 #include "AliHLTCaloClusterizer.h"
+#include "AliHLTCaloClusterAnalyser.h" 
 #include "AliHLTCaloRecPointDataStruct.h"
 #include "AliHLTCaloRecPointHeaderStruct.h"
 #include "AliHLTCaloDigitDataStruct.h"
 #include "AliHLTCaloDigitContainerDataStruct.h"
 #include "AliHLTCaloDefinitions.h"
+#include "AliHLTCaloClusterDataStruct.h"
 #include "TString.h"
 
 /** @file   AliHLTCaloClusterizerComponent.cxx
 // or
 // visit http://web.ift.uib.no/~kjeks/doc/alice-hlt
 
-
 AliHLTCaloClusterizerComponent::AliHLTCaloClusterizerComponent(TString det): 
   AliHLTCaloProcessor(),
   AliHLTCaloConstantsHandler(det),
+  fDataOrigin('\0'),
+  fAnalyserPtr(0),
   fDigitsPointerArray(0), 
+  fOutputDigitsArray(0),
   fClusterizerPtr(0),
   fDigitCount(0)
-
 {
   //See headerfile for documentation
 
@@ -53,13 +54,15 @@ AliHLTCaloClusterizerComponent::AliHLTCaloClusterizerComponent(TString det):
   fClusterizerPtr = new AliHLTCaloClusterizer(det);
 
   fClusterizerPtr->SetDigitArray(fDigitsPointerArray);
-
+   
+  fAnalyserPtr = new AliHLTCaloClusterAnalyser();
+  
 }
 
 AliHLTCaloClusterizerComponent::~AliHLTCaloClusterizerComponent()
 {
   //See headerfile for documentation
-
+delete fAnalyserPtr;
   if(fClusterizerPtr)
     {
       delete fClusterizerPtr;
@@ -73,7 +76,7 @@ AliHLTCaloClusterizerComponent::Deinit()
 {
   //See headerfile for documentation
 
-  if (fClusterizerPtr)
+if (fClusterizerPtr)
     {
       delete fClusterizerPtr;
       fClusterizerPtr = 0;
@@ -82,30 +85,6 @@ AliHLTCaloClusterizerComponent::Deinit()
   return 0;
 }
 
-// void
-// AliHLTCaloClusterizerComponent::GetInputDataTypes( vector<AliHLTComponentDataType>& list)
-// {
-//   //See headerfile for documentation
-//   list.clear();
-//   list.push_back(AliHLTCaloDefinitions::fgkDigitDataType|kAliHLTDataOriginPHOS);
-// }
-
-// AliHLTComponentDataType
-// AliHLTCaloClusterizerComponent::GetOutputDataType()
-// {
-//   //See headerfile for documentation
-//   return AliHLTCaloDefinitions::fgkRecPointDataType|kAliHLTDataOriginPHOS;
-// }
-
-// void
-// AliHLTCaloClusterizerComponent::GetOutputDataSize(unsigned long& constBase, double& inputMultiplier )
-
-// {
-//   //See headerfile for documentation
-//   constBase = sizeof(AliHLTCaloRecPointHeaderStruct) + sizeof(AliHLTCaloRecPointDataStruct) + (sizeof(AliHLTCaloDigitDataStruct) << 7); //Reasonable estimate... ;
-//   inputMultiplier = 1.5;
-// }
-
 int
 AliHLTCaloClusterizerComponent::DoEvent(const AliHLTComponentEventData& evtData, const AliHLTComponentBlockData* blocks,
                                         AliHLTComponentTriggerData& /*trigData*/, AliHLTUInt8_t* outputPtr, AliHLTUInt32_t& size,
@@ -121,7 +100,7 @@ AliHLTCaloClusterizerComponent::DoEvent(const AliHLTComponentEventData& evtData,
   Int_t nDigits           = 0;
   Int_t digCount          = 0;
 
-  //UInt_t availableSize = size;
+  UInt_t availableSize = size;
   AliHLTUInt8_t* outBPtr;
   outBPtr = outputPtr;
   const AliHLTComponentBlockData* iter = 0;
@@ -130,83 +109,78 @@ AliHLTCaloClusterizerComponent::DoEvent(const AliHLTComponentEventData& evtData,
   UInt_t specification = 0;
   
   AliHLTCaloDigitDataStruct *digitDataPtr = 0;
-
+  
   // Adding together all the digits, should be put in standalone method  
   for ( ndx = 0; ndx < evtData.fBlockCnt; ndx++ )
     {
       iter = blocks+ndx;
       //            HLTError("Got block");
-      if (iter->fDataType == (AliHLTCaloDefinitions::fgkDigitDataType|kAliHLTDataOriginPHOS))
+      if (iter->fDataType == (AliHLTCaloDefinitions::fgkDigitDataType|fDataOrigin))
        {
-         // Get the digit header
 
          // Update the number of digits
          nDigits = iter->fSize/sizeof(AliHLTCaloDigitDataStruct);;
-         //      HLTError("Got %d digits", nDigits);
-
+         
+         availableSize -= iter->fSize;
+         
          specification = specification|iter->fSpecification;
 
-         digitDataPtr = reinterpret_cast<AliHLTCaloDigitDataStruct*>(iter->fPtr);
-         for (Int_t i = 0; i < nDigits; i++)
-           {
-             fDigitsPointerArray[digCount] = digitDataPtr;
-             digCount++;
-             digitDataPtr++;
-           }
-
+         digitDataPtr = reinterpret_cast<AliHLTCaloDigitDataStruct*>(iter->fPtr);
+         for (Int_t i = 0; i < nDigits; i++)
+           {
+             fDigitsPointerArray[digCount] = digitDataPtr;
+             digCount++;
+             digitDataPtr++;
+           }
        }
     }
 
   if(digCount > 0)
     {
-  
+       
+      AliHLTCaloClusterHeaderStruct* caloClusterHeaderPtr = reinterpret_cast<AliHLTCaloClusterHeaderStruct*>(outBPtr);
+      caloClusterHeaderPtr->fNDigits = digCount;
+      
+      outBPtr += sizeof(AliHLTCaloClusterHeaderStruct);
+      mysize += sizeof(AliHLTCaloClusterHeaderStruct);
+      
       // Sort the digit pointers
       qsort(fDigitsPointerArray, digCount, sizeof(AliHLTCaloDigitDataStruct*), CompareDigits);
 
       // Copy the digits to the output
+      fOutputDigitsArray = reinterpret_cast<AliHLTCaloDigitDataStruct*>(outBPtr);
       for(Int_t n = 0; n < digCount; n++)
        {
          memcpy(outBPtr, fDigitsPointerArray[n], sizeof(AliHLTCaloDigitDataStruct));
+         //fOutputDigitsArray[n] = reinterpret_cast<AliHLTCaloDigitDataStruct*>(outBPtr);
          outBPtr = outBPtr + sizeof(AliHLTCaloDigitDataStruct);
        }
   
-      mysize += digCount*sizeof(AliHLTCaloDigitDataStruct);
-
-      AliHLTComponentBlockData bdDigits;
-      FillBlockData( bdDigits );
-      bdDigits.fOffset = offset;
-      bdDigits.fSize = mysize;
-      bdDigits.fDataType = iter->fDataType;
-      bdDigits.fSpecification = specification;
-      outputBlocks.push_back( bdDigits );
-  
+       mysize += digCount*sizeof(AliHLTCaloDigitDataStruct);
 
-      AliHLTCaloRecPointHeaderStruct* recPointHeaderPtr = reinterpret_cast<AliHLTCaloRecPointHeaderStruct*>(outBPtr);
+      //HLTDebug("Total number of digits: %d", digCount );
 
-      fClusterizerPtr->SetRecPointDataPtr(reinterpret_cast<AliHLTCaloRecPointDataStruct*>(outBPtr+sizeof(AliHLTCaloRecPointHeaderStruct)));
-  
-      //  HLTError("Total number of digits: %d", digCount );
+      nRecPoints = fClusterizerPtr->ClusterizeEvent(digCount);
 
-      printf("Total number of digits: %d\n", digCount);
+      //HLTDebug("Number of rec points found: %d", nRecPoints);
 
-      nRecPoints = fClusterizerPtr->ClusterizeEvent(digCount, size, mysize);
+      fAnalyserPtr->SetCaloClusterData(reinterpret_cast<AliHLTCaloClusterDataStruct*>(outBPtr));
+      
+      fAnalyserPtr->SetRecPointArray(fClusterizerPtr->GetRecPoints(), nRecPoints);
 
-      if(nRecPoints == -1)
-       {
-         //      HLTError("Running out of buffer, exiting for safety.");
-         return -ENOBUFS;
-       }
+      fAnalyserPtr->SetDigitDataArray(fOutputDigitsArray);
 
-      recPointHeaderPtr->fNRecPoints = nRecPoints;
-      mysize += sizeof(AliHLTCaloRecPointHeaderStruct);
+      Int_t nClusters = fAnalyserPtr->CreateClusters(nRecPoints, size, mysize);
   
-      //  HLTError("Number of clusters: %d", nRecPoints);
-
+      caloClusterHeaderPtr->fNClusters = nClusters;
+      
+      //HLTDebug("Number of clusters: %d", nRecPoints);
+      
       AliHLTComponentBlockData bd;
       FillBlockData( bd );
       bd.fOffset = offset;
       bd.fSize = mysize;
-      bd.fDataType = AliHLTCaloDefinitions::fgkClusterDataType;
+      bd.fDataType = kAliHLTDataTypeCaloCluster | kAliHLTDataOriginPHOS;
       bd.fSpecification = specification;
       outputBlocks.push_back( bd );
     }
@@ -282,4 +256,6 @@ AliHLTCaloClusterizerComponent::CompareDigits(const void *dig0, const void *dig1
 {
   // See header file for documentation
   return (*((AliHLTCaloDigitDataStruct**)(dig0)))->fID - (*((AliHLTCaloDigitDataStruct**)(dig1)))->fID;
+
+  //return (*((AliHLTCaloDigitDataStruct**)(dig0)))->fID - (*((AliHLTCaloDigitDataStruct**)(dig1)))->fID;
 }