]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - HLT/PHOS/AliHLTPHOSClusterizerComponent.cxx
updated macros for Kaon Femto analysis
[u/mrichter/AliRoot.git] / HLT / PHOS / AliHLTPHOSClusterizerComponent.cxx
index 51b6e240a8d04301cd8dbc9fdfc25165f45bcf7b..db6c9a1cf783e2a9cd4721fcb615b50977a4f79c 100644 (file)
@@ -1,3 +1,5 @@
+// $Id$
+
 /**************************************************************************
  * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
  *                                                                        *
 #include <iostream>
 
 #include "AliHLTPHOSClusterizerComponent.h"
-#include "AliHLTPHOSClusterizer.h"
-#include "AliHLTPHOSRecPointDataStruct.h"
-#include "AliHLTPHOSDigitContainerDataStruct.h"
+#include "AliHLTCaloRecPointDataStruct.h"
+#include "AliHLTCaloRecPointHeaderStruct.h"
+#include "AliHLTPHOSGeometry.h"
+#include "AliHLTCaloClusterAnalyser.h"
+
 
 
 
 // refer to README to build package
 // or
 // visit http://web.ift.uib.no/~kjeks/doc/alice-hlt
-
-#if __GNUC__>= 3
-using namespace std;
-#endif
-
-const AliHLTComponentDataType AliHLTPHOSClusterizerComponent::fgkInputDataTypes[]=
-  {
-    kAliHLTVoidDataType,{0,"",""}
-  };
-
-AliHLTPHOSClusterizerComponent gAliHLTPHOSClusterizerComponent;
-
+#include "AliHLTCaloDefinitions.h"
+#include "AliHLTPHOSGeometry.h"
+#include "AliHLTPHOSRecoParamHandler.h"
+#include "AliHLTCaloClusterizer.h"
 
 AliHLTPHOSClusterizerComponent::AliHLTPHOSClusterizerComponent(): 
-  AliHLTPHOSProcessor(), 
-  fAllDigitsPtr(0),
-  fClusterizerPtr(0),
-  fRecPointStructArrayPtr(0),
-  fDigitCount(0),
-  fModuleClusterizationMode(false),
-  fNoCrazyness(0)
-{
-  //See headerfile for documentation
-}
-
-AliHLTPHOSClusterizerComponent::~AliHLTPHOSClusterizerComponent()
-{
-  //See headerfile for documentation
-
-  if(fClusterizerPtr)
-    {
-      delete fClusterizerPtr;
-      fClusterizerPtr = 0;
-    }
-  if(fRecPointStructArrayPtr)
-    {
-      for (int i = 0; i < 1000; i++)
-        {
-          //     fRecPointStructArrayPtr[i].Del();
-        }
-      delete fRecPointStructArrayPtr;
-      fRecPointStructArrayPtr = 0;
-    }
-  if(fAllDigitsPtr)
-    {
-      delete fAllDigitsPtr;
-      fAllDigitsPtr = 0;
-    }
-}
-
-
-int
-AliHLTPHOSClusterizerComponent::Deinit()
+  AliHLTCaloClusterizerComponent("PHOS")
 {
   //See headerfile for documentation
 
-  if (fClusterizerPtr)
-    {
-      delete fClusterizerPtr;
-      fClusterizerPtr = 0;
-    }
-  for (int i = 0; i < 1000; i++)
-    {
-      //    fRecPointStructArrayPtr[i].Del();
-    }
-
-  if (fRecPointStructArrayPtr)
-    {
-      for (int i = 0; i < 1000; i++)
-        {
-          //     fRecPointStructArrayPtr[i].Del();
-        }
-      delete fRecPointStructArrayPtr;
-      fRecPointStructArrayPtr = 0;
-    }
+  fDataOrigin = const_cast<char*>(kAliHLTDataOriginPHOS);
 
-  return 0;
+  //AliHLTPHOSGeometry *geom = new AliHLTPHOSGeometry;
+  
 }
 
-const Char_t*
-AliHLTPHOSClusterizerComponent::GetComponentID()
+AliHLTPHOSClusterizerComponent::~AliHLTPHOSClusterizerComponent()
 {
   //See headerfile for documentation
-
-  return "PhosClusterizer";
 }
 
 void
 AliHLTPHOSClusterizerComponent::GetInputDataTypes( vector<AliHLTComponentDataType>& list)
 {
+  //See headerfile for documentation
   list.clear();
-  list.push_back(AliHLTPHOSDefinitions::fgkDigitDataType);
+  list.push_back(AliHLTCaloDefinitions::fgkDigitDataType|kAliHLTDataOriginPHOS);
 }
 
 AliHLTComponentDataType
 AliHLTPHOSClusterizerComponent::GetOutputDataType()
 {
   //See headerfile for documentation
-  return AliHLTPHOSDefinitions::fgkClusterDataType;
+  return kAliHLTDataTypeCaloCluster|kAliHLTDataOriginPHOS;
 }
 
 void
@@ -138,135 +77,50 @@ AliHLTPHOSClusterizerComponent::GetOutputDataSize(unsigned long& constBase, doub
 
 {
   //See headerfile for documentation
-  constBase = 30;
-  inputMultiplier = 1;
+  constBase = sizeof(AliHLTCaloRecPointHeaderStruct) + sizeof(AliHLTCaloRecPointDataStruct) + (sizeof(AliHLTCaloDigitDataStruct) << 7); //Reasonable estimate... ;
+  inputMultiplier = 2.0;
 }
 
-int
-AliHLTPHOSClusterizerComponent::DoEvent(const AliHLTComponentEventData& evtData, const AliHLTComponentBlockData* blocks,
-                                        AliHLTComponentTriggerData& trigData, AliHLTUInt8_t* outputPtr, AliHLTUInt32_t& size,
-                                        std::vector<AliHLTComponentBlockData>& outputBlocks)
+const Char_t*
+AliHLTPHOSClusterizerComponent::GetComponentID()
 {
   //See headerfile for documentation
-  AliHLTComponentTriggerData &trDta = trigData;  
-  trDta.fDataSize++;
-  trDta.fDataSize--; //shutting up the compiler, we dont use trigData now but will do in near future 
-  
-  UInt_t tSize            = 0;
-  UInt_t offset           = 0;
-  UInt_t mysize           = 0;
-  Int_t nRecPoints        = 0;
-  Int_t j =0;
-
-  AliHLTUInt8_t* outBPtr;
-  outBPtr = outputPtr;
-  const AliHLTComponentBlockData* iter = 0;
-  unsigned long ndx;
-
-  UInt_t specification = 0;
-
-  AliHLTPHOSDigitContainerDataStruct *digitContainerPtr = 0;
-  fClusterizerPtr->SetRecPointContainer((AliHLTPHOSRecPointContainerStruct*)outBPtr);
-  
-  for ( ndx = 0; ndx < evtData.fBlockCnt; ndx++ )
-    {
-      iter = blocks+ndx;
-      if (iter->fDataType == AliHLTPHOSDefinitions::fgkDigitDataType)
-        {
-         specification = specification|iter->fSpecification;
-         digitContainerPtr = reinterpret_cast<AliHLTPHOSDigitContainerDataStruct*>(iter->fPtr);
-         if(fModuleClusterizationMode)
-           {
-             for (UInt_t i = 0; i < digitContainerPtr->fNDigits; i++)
-               {
-                 fAllDigitsPtr->fDigitDataStruct[j].fX = digitContainerPtr->fDigitDataStruct[i].fX;
-                 fAllDigitsPtr->fDigitDataStruct[j].fZ = digitContainerPtr->fDigitDataStruct[i].fZ;
-                 fAllDigitsPtr->fDigitDataStruct[j].fAmplitude = digitContainerPtr->fDigitDataStruct[i].fAmplitude;
-                 fAllDigitsPtr->fDigitDataStruct[j].fTime = digitContainerPtr->fDigitDataStruct[i].fTime;
-                 fAllDigitsPtr->fDigitDataStruct[j].fCrazyness = digitContainerPtr->fDigitDataStruct[i].fCrazyness;
-                 j++;
-               }
-         
-           }
-       }
-    }
-  if(fModuleClusterizationMode && fAllDigitsPtr != 0)
-    {
-      fClusterizerPtr->SetDigitContainer(fAllDigitsPtr);
-    }
-  else if(digitContainerPtr != 0)
-    {
-      fClusterizerPtr->SetDigitContainer(digitContainerPtr);
-    }      
-  if(digitContainerPtr != 0)
-    {
-      nRecPoints = fClusterizerPtr->ClusterizeEvent();
-      
-      mysize = 0;
-      offset = tSize;
-
-      mysize += sizeof(AliHLTPHOSRecPointContainerStruct);
-      
-      AliHLTComponentBlockData bd;
-      FillBlockData( bd );
-      bd.fOffset = offset;
-      bd.fSize = mysize;
-      bd.fDataType = AliHLTPHOSDefinitions::fgkClusterDataType;
-      bd.fSpecification = specification;
-      outputBlocks.push_back( bd );
-      tSize += mysize;
-      outBPtr += mysize;
-  
-    }
-  
-  if ( tSize > size )
-    {
-      Logging( kHLTLogFatal, "HLT::AliHLTPHOSClusterizerComponent::DoEvent", "Too much data",
-               "Data written over allowed buffer. Amount written: %lu, allowed amount: %lu."
-               , tSize, size );
-      return EMSGSIZE;
-    }
-  
-  return 0;
-
-
+  return "PhosClusterizer";
 }
 
-int
-AliHLTPHOSClusterizerComponent::DoInit(int argc, const char** argv )
+AliHLTComponent*
+AliHLTPHOSClusterizerComponent::Spawn()
 {
   //See headerfile for documentation
 
-  fAllDigitsPtr = new AliHLTPHOSDigitContainerDataStruct();
-  fClusterizerPtr = new AliHLTPHOSClusterizer();
-  fClusterizerPtr->SetDigitContainer(fAllDigitsPtr);
-  fNoCrazyness = false;
-  //
+  return new AliHLTPHOSClusterizerComponent();
+}
+
+int AliHLTPHOSClusterizerComponent::DoInit(int argc, const char** argv)
+{
+   
+   fClusterizerPtr = new AliHLTCaloClusterizer("PHOS");
+   
+   fRecoParamsPtr = new AliHLTPHOSRecoParamHandler(); 
+    
+    return AliHLTCaloClusterizerComponent::DoInit(argc, argv);
+}
 
-  ScanArguments(argc, argv);
-  for (int i = 0; i < argc; i++)
+int AliHLTPHOSClusterizerComponent::DoDeinit()
+{
+    if(fRecoParamsPtr) 
     {
-      if(!strcmp("-digitthreshold", argv[i]))
-       {
-         fClusterizerPtr->SetEmcMinEnergyThreshold(atof(argv[i+1]));
-       }
-      if(!strcmp("-recpointthreshold", argv[i]))
-       {
-         fClusterizerPtr->SetEmcClusteringThreshold(atof(argv[i+1]));
-       }
-      if(!strcmp("-modulemode", argv[i]))
-       {
-         fModuleClusterizationMode = true;
-       }
+       delete fRecoParamsPtr;
+       fRecoParamsPtr = 0;
     }
-
-  return 0;
+    return AliHLTCaloClusterizerComponent::DoDeinit();
 }
 
-AliHLTComponent*
-AliHLTPHOSClusterizerComponent::Spawn()
-{
-  //See headerfile for documentation
 
-  return new AliHLTPHOSClusterizerComponent();
+Int_t AliHLTPHOSClusterizerComponent::InitialiseGeometry()
+{
+  fAnalyserPtr->SetGeometry(new AliHLTPHOSGeometry);
+  return 0;
 }