- adding AliHLTEMCALDigitMakerComponent
authorodjuvsla <odjuvsla@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 18 Feb 2010 12:18:10 +0000 (12:18 +0000)
committerodjuvsla <odjuvsla@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 18 Feb 2010 12:18:10 +0000 (12:18 +0000)
- adding AliHLTEMCALClusterizerComponent to build system

HLT/EMCAL/AliHLTEMCALDigitMakerComponent.cxx [new file with mode: 0644]
HLT/EMCAL/AliHLTEMCALDigitMakerComponent.h [new file with mode: 0644]
HLT/libAliHLTEMCAL.pkg

diff --git a/HLT/EMCAL/AliHLTEMCALDigitMakerComponent.cxx b/HLT/EMCAL/AliHLTEMCALDigitMakerComponent.cxx
new file mode 100644 (file)
index 0000000..77edd0c
--- /dev/null
@@ -0,0 +1,204 @@
+ // $Id$
+
+ /**************************************************************************
+ * This file is property of and copyright by the ALICE HLT Project        *
+ * All rights reserved.                                                   *
+ *                                                                        *
+ * Primary Authors: Oystein Djuvsland                                     *
+ *                                                                        *
+ * Permission to use, copy, modify and distribute this software and its   *
+ * documentation strictly for non-commercial purposes is hereby granted   *
+ * without fee, provided that the above copyright notice appears in all   *
+ * copies and that both the copyright notice and this permission notice   *
+ * appear in the supporting documentation. The authors make no claims     *
+ * about the suitability of this software for any purpose. It is          *
+ * provided "as is" without express or implied warranty.                  *
+ **************************************************************************/
+
+#include "AliHLTEMCALDigitMakerComponent.h"
+#include "AliHLTCaloDigitMaker.h"
+#include "AliHLTCaloDigitDataStruct.h"
+#include "AliHLTCaloChannelDataHeaderStruct.h"
+#include "AliHLTCaloChannelDataStruct.h"
+#include "AliHLTEMCALMapper.h"
+#include "AliHLTEMCALDefinitions.h"
+#include "TFile.h"
+#include <sys/stat.h>
+#include <sys/types.h>
+
+
+/** 
+ * @file   AliHLTEMCALDigitMakerComponent.cxx
+ * @author Oystein Djuvsland
+ * @date   
+ * @brief  A digit maker component for EMCAL HLT
+*/
+
+// see below for class documentation
+// or
+// refer to README to build package
+// or
+// visit http://web.ift.uib.no/~kjeks/doc/alice-hlt
+
+
+AliHLTEMCALDigitMakerComponent gAliHLTEMCALDigitMakerComponent;
+
+AliHLTEMCALDigitMakerComponent::AliHLTEMCALDigitMakerComponent() :
+  AliHLTCaloProcessor(),
+  fDigitMakerPtr(0),
+  fDigitContainerPtr(0)
+{
+  //see header file for documentation
+}
+
+
+AliHLTEMCALDigitMakerComponent::~AliHLTEMCALDigitMakerComponent()
+{
+  //see header file for documentation
+}
+
+int 
+AliHLTEMCALDigitMakerComponent::Deinit()
+{ 
+  //see header file for documentation
+  if(fDigitMakerPtr)
+    {
+      delete fDigitMakerPtr;
+      fDigitMakerPtr = 0;
+    }
+  return 0;
+}
+
+const char*
+AliHLTEMCALDigitMakerComponent::GetComponentID()
+{
+  //see header file for documentation
+  return "EmcalDigitMaker";
+}
+
+
+void
+AliHLTEMCALDigitMakerComponent::GetInputDataTypes(vector<AliHLTComponentDataType>& list)
+{ 
+  //see header file for documentation
+  list.clear();
+  list.push_back(AliHLTEMCALDefinitions::fgkChannelDataType);
+}
+
+AliHLTComponentDataType 
+AliHLTEMCALDigitMakerComponent::GetOutputDataType()
+{
+  //see header file for documentation
+  return AliHLTEMCALDefinitions::fgkDigitDataType;
+}
+
+
+void 
+AliHLTEMCALDigitMakerComponent::GetOutputDataSize(unsigned long& constBase, double& inputMultiplier)
+{
+  //see header file for documentation
+  constBase = 0;
+  inputMultiplier = (float)sizeof(AliHLTCaloDigitDataStruct)/sizeof(AliHLTCaloChannelDataStruct) + 1;
+}
+
+int 
+AliHLTEMCALDigitMakerComponent::DoEvent(const AliHLTComponentEventData& evtData, const AliHLTComponentBlockData* blocks,
+                                       AliHLTComponentTriggerData& /*trigData*/, AliHLTUInt8_t* outputPtr, AliHLTUInt32_t& size,
+                                       std::vector<AliHLTComponentBlockData>& outputBlocks)
+{
+  //see header file for documentation
+  UInt_t offset           = 0; 
+  UInt_t mysize           = 0;
+  Int_t digitCount        = 0;
+  Int_t ret               = 0;
+
+  AliHLTUInt8_t* outBPtr;
+  outBPtr = outputPtr;
+  const AliHLTComponentBlockData* iter = 0; 
+  unsigned long ndx; 
+
+  UInt_t specification = 0;
+  AliHLTCaloChannelDataHeaderStruct* tmpChannelData = 0;
+  
+  //  fDigitMakerPtr->SetDigitHeaderPtr(reinterpret_cast<AliHLTCaloDigitHeaderStruct*>(outputPtr));
+
+  fDigitMakerPtr->SetDigitDataPtr(reinterpret_cast<AliHLTCaloDigitDataStruct*>(outputPtr));
+
+  for( ndx = 0; ndx < evtData.fBlockCnt; ndx++ )
+    {
+      iter = blocks+ndx;
+      
+      if(iter->fDataType != AliHLTEMCALDefinitions::fgkChannelDataType)
+       {
+         HLTError("Data block is not of type fgkChannelDataType");
+         continue;
+       }
+
+      specification |= iter->fSpecification;
+      tmpChannelData = reinterpret_cast<AliHLTCaloChannelDataHeaderStruct*>(iter->fPtr);
+    
+      ret = fDigitMakerPtr->MakeDigits(tmpChannelData, size-(digitCount*sizeof(AliHLTCaloDigitDataStruct)));
+      if(ret == -1) 
+       {
+         HLTError("Trying to write over buffer size");
+         return -ENOBUFS;
+       }
+      digitCount += ret; 
+    }
+  
+  mysize += digitCount*sizeof(AliHLTCaloDigitDataStruct);
+
+  HLTDebug("# of digits: %d, used memory size: %d, available size: %d", digitCount, mysize, size);
+
+  if(mysize > 0) 
+    {
+      AliHLTComponentBlockData bd;
+      FillBlockData( bd );
+      bd.fOffset = offset;
+      bd.fSize = mysize;
+      bd.fDataType = AliHLTEMCALDefinitions::fgkDigitDataType;
+      bd.fSpecification = specification;
+      outputBlocks.push_back(bd);
+    }
+
+  fDigitMakerPtr->Reset();
+
+  size = mysize; 
+
+  return 0;
+}
+
+
+int
+AliHLTEMCALDigitMakerComponent::DoInit(int argc, const char** argv )
+{
+  //see header file for documentation
+
+  fDigitMakerPtr = new AliHLTCaloDigitMaker("EMCAL");
+
+  AliHLTCaloMapper *mapper = new AliHLTEMCALMapper(2);
+  fDigitMakerPtr->SetMapper(mapper);
+  
+  for(int i = 0; i < argc; i++)
+    {
+      if(!strcmp("-lowgainfactor", argv[i]))
+       {
+         fDigitMakerPtr->SetGlobalLowGainFactor(atof(argv[i+1]));
+       }
+      if(!strcmp("-highgainfactor", argv[i]))
+       {
+         fDigitMakerPtr->SetGlobalHighGainFactor(atof(argv[i+1]));
+       }
+    }
+  //fDigitMakerPtr->SetDigitThreshold(2);
+
+  return 0;
+}
+
+AliHLTComponent*
+AliHLTEMCALDigitMakerComponent::Spawn()
+{
+  //see header file for documentation
+  return new AliHLTEMCALDigitMakerComponent();
+}
diff --git a/HLT/EMCAL/AliHLTEMCALDigitMakerComponent.h b/HLT/EMCAL/AliHLTEMCALDigitMakerComponent.h
new file mode 100644 (file)
index 0000000..4795ae2
--- /dev/null
@@ -0,0 +1,155 @@
+//-*- Mode: C++ -*-
+// $Id$
+
+/**************************************************************************
+ * This file is property of and copyright by the ALICE HLT Project        *
+ * All rights reserved.                                                   *
+ *                                                                        *
+ * Primary Authors: Oystein Djuvsland                                     *
+ *                                                                        *
+ * Permission to use, copy, modify and distribute this software and its   *
+ * documentation strictly for non-commercial purposes is hereby granted   *
+ * without fee, provided that the above copyright notice appears in all   *
+ * copies and that both the copyright notice and this permission notice   *
+ * appear in the supporting documentation. The authors make no claims     *
+ * about the suitability of this software for any purpose. It is          *
+ * provided "as is" without express or implied warranty.                  *
+ **************************************************************************/
+#ifndef ALIHLTEMCALDIGITMAKERCOMPONENT_H
+#define ALIHLTEMCALDIGITMAKERCOMPONENT_H
+
+/** @file   AliHLTEMCALDigitMakerComponent.h
+    @author Oystein Djuvsland
+    @date   
+    @brief  A digit maker component for EMCAL HLT
+*/
+
+// see below for class documentation
+// or
+// refer to README to build package
+// or
+// visit http://web.ift.uib.no/~kjeks/doc/alice-hlt
+
+#include "AliHLTCaloProcessor.h"
+
+
+class AliHLTCaloDigitMaker;
+class AliHLTCaloDigitContainerDataStruct;
+
+/**
+ * @class AliHLTEMCALDigitMakerComponent
+ * 
+ * Creates the digit used for the clusterizer. Digits are equivalent to the ones in 
+ * offline reconstruction
+ *
+ * <h2>General properties:</h2>
+ *
+ * Component ID: \b PhosDigitMaker <br>
+ * Library: \b libAliHLTEMCAL.so     <br>
+ * Input Data Types: @ref AliHLTEMCALDefinitions::fkgChannelDataType<br>
+ * Output Data Types: @ref AliHLTEMCALDefinitions::fgkDigitDataType<br>
+ *
+ * <h2>Mandatory arguments:</h2>
+ * <!-- NOTE: ignore the \li. <i> and </i>: it's just doxygen formatting -->
+ * \li No mandatory arguments for component                           <br>
+ *
+ * <h2>Optional arguments:</h2>
+ * <!-- NOTE: ignore the \li. <i> and </i>: it's just doxygen formatting -->
+ * \li -lowgainfactor      <i> value </i> <br>
+ *      sets a global low gain factor 
+ * \li -highgainfactor <i> value </i> <br>
+ *      sets a global high gain factor
+ * \li -reverseorder <br>
+ *      set if one expects the low gain channels to come before the high gain ones
+ *
+ * <h2>Configuration:</h2>
+ * <!-- NOTE: ignore the \li. <i> and </i>: it's just doxygen formatting -->
+ * \li No configuration arguments 
+ *
+ * <h2>Default CDB entries:</h2>
+ * \li No CDB entry yet, will come.
+ *
+ * <h2>Performance:</h2>
+ * Pretty good
+ *
+ * <h2>Memory consumption:</h2>
+ * Pretty low
+ *
+ * <h2>Output size:</h2>
+ * Depends on the event...
+ *
+ * More detailed description. (Soon)
+ *
+ * @ingroup alihlt_emcal
+ */ 
+
+class AliHLTEMCALDigitMakerComponent : public AliHLTCaloProcessor
+{
+public:
+
+  /** Constructor */
+  AliHLTEMCALDigitMakerComponent();
+
+  /** Destructor */ 
+  virtual ~AliHLTEMCALDigitMakerComponent();
+
+  /** Copy constructor */  
+  AliHLTEMCALDigitMakerComponent(const AliHLTEMCALDigitMakerComponent &) : 
+    AliHLTCaloProcessor(),
+    fDigitMakerPtr(0),
+    fDigitContainerPtr(0)
+  {
+    //Copy constructor not implemented
+  }
+  
+  /** Assignment */
+  AliHLTEMCALDigitMakerComponent & operator = (const AliHLTEMCALDigitMakerComponent)
+  {
+    //Assignment
+    return *this; 
+  }
+
+  /** interface function, see @ref AliHLTComponent for description */
+  const char* GetComponentID();
+
+  /** interface function, see @ref AliHLTComponent for description */
+  void GetInputDataTypes(std::vector<AliHLTComponentDataType>& list);
+
+  /** interface function, see @ref AliHLTComponent for description */
+  AliHLTComponentDataType GetOutputDataType();
+
+  /** interface function, see @ref AliHLTComponent for description */
+  void GetOutputDataSize(unsigned long& constBase, double& inputMultiplier);
+
+  /** interface function, see @ref AliHLTComponent for description */
+  int DoEvent(const AliHLTComponentEventData& evtData, const AliHLTComponentBlockData* blocks,
+             AliHLTComponentTriggerData& trigData, AliHLTUInt8_t* outputPtr, AliHLTUInt32_t& size,
+             std::vector<AliHLTComponentBlockData>& outputBlocks);
+  
+  /** interface function, see @ref AliHLTComponent for description */
+  AliHLTComponent* Spawn();
+  
+protected:
+
+  /** interface function, see @ref AliHLTComponent for description */
+  virtual int DoInit(int argc, const char** argv);
+
+  using AliHLTCaloProcessor::DoEvent;
+
+  /** interface function, see @ref AliHLTComponent for description */
+  virtual int Deinit(); ////////// PTH WARNING you should Define a class AliHLTEMCALModuleProcessor
+  
+//  virtual int DoInit(int, const char**) {;}
+  virtual int DoDeinit(){;}
+  
+private:
+
+  /** Pointer to the digit maker itself */
+  AliHLTCaloDigitMaker *fDigitMakerPtr;                    //! transient
+
+  /** The output of the component, digits in a container */
+  AliHLTCaloDigitContainerDataStruct *fDigitContainerPtr;  //! transient
+
+};
+#endif
index d3281c4..ea97212 100644 (file)
@@ -11,7 +11,10 @@ CLASS_HDRS:= \
        AliHLTEMCALRawAnalyzerLMSComponent.h \
        AliHLTEMCALRawAnalyzerPeakFinderComponent.h \
        AliHLTEMCALSharedMemoryInterface.h  \
-       AliHLTEMCALConstants.h
+       AliHLTEMCALConstants.h \
+       AliHLTEMCALDigitMakerComponent.h \
+       AliHLTEMCALClusterizerComponent.h \
+       AliHLTEMCALGeometry.h
 # library sources
 MODULE_SRCS= \
        $(CLASS_HDRS:.h=.cxx)