adding component for object re-compression
authorrichterm <richterm@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 10 Nov 2010 01:56:47 +0000 (01:56 +0000)
committerrichterm <richterm@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 10 Nov 2010 01:56:47 +0000 (01:56 +0000)
HLT/BASE/util/AliHLTAgentUtil.cxx
HLT/BASE/util/AliHLTObjectCompressionComponent.cxx [new file with mode: 0644]
HLT/BASE/util/AliHLTObjectCompressionComponent.h [new file with mode: 0644]
HLT/libAliHLTUtil.pkg

index dac739d..f3c9ad1 100644 (file)
@@ -46,6 +46,7 @@
 #include "AliHLTOUTPublisherComponent.h"
 #include "AliHLTCompStatCollector.h"
 #include "AliHLTCorruptorComponent.h"
+#include "AliHLTObjectCompressionComponent.h"
 
 /** global instance for agent registration */
 AliHLTAgentUtil gAliHLTAgentUtil;
@@ -131,6 +132,7 @@ int AliHLTAgentUtil::RegisterComponents(AliHLTComponentHandler* pHandler) const
   pHandler->AddComponent(new AliHLTOUTPublisherComponent);
   pHandler->AddComponent(new AliHLTCompStatCollector);
   pHandler->AddComponent(new AliHLTCorruptorComponent);
+  pHandler->AddComponent(new AliHLTObjectCompressionComponent);
   return 0;
 }
 
diff --git a/HLT/BASE/util/AliHLTObjectCompressionComponent.cxx b/HLT/BASE/util/AliHLTObjectCompressionComponent.cxx
new file mode 100644 (file)
index 0000000..bdd7e0b
--- /dev/null
@@ -0,0 +1,112 @@
+// $Id$
+
+//**************************************************************************
+//* This file is property of and copyright by the ALICE HLT Project        * 
+//* ALICE Experiment at CERN, All rights reserved.                         *
+//*                                                                        *
+//* Primary Authors: Matthias Richter <Matthias.Richter@ift.uib.no>        *
+//*                  for The ALICE HLT Project.                            *
+//*                                                                        *
+//* 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.                  *
+//**************************************************************************
+
+/// @file   AliHLTObjectCompressionComponent.cxx
+/// @author Matthias Richter
+/// @date   2009-11-09
+/// @brief  Component for compression adaption of TObjects
+///
+
+//#include <cstdlib>
+//#include <cassert>
+#include "AliHLTObjectCompressionComponent.h"
+
+/** ROOT macro for the implementation of ROOT specific class methods */
+ClassImp(AliHLTObjectCompressionComponent)
+
+AliHLTObjectCompressionComponent::AliHLTObjectCompressionComponent()
+  : AliHLTProcessor()
+{
+  // see header file for class documentation
+  // or
+  // refer to README to build package
+  // or
+  // visit http://web.ift.uib.no/~kjeks/doc/alice-hlt
+}
+
+AliHLTObjectCompressionComponent::~AliHLTObjectCompressionComponent()
+{
+  // see header file for class documentation
+}
+
+void AliHLTObjectCompressionComponent::GetInputDataTypes(AliHLTComponentDataTypeList& list)
+{
+  // see header file for class documentation
+  list.clear();
+  list.push_back(kAliHLTAnyDataType);
+}
+
+AliHLTComponentDataType AliHLTObjectCompressionComponent::GetOutputDataType()
+{
+  // see header file for class documentation
+  return kAliHLTAnyDataType;
+}
+
+void AliHLTObjectCompressionComponent::GetOutputDataSize( unsigned long& constBase, double& inputMultiplier )
+{
+  // see header file for class documentation
+  constBase=0;
+  inputMultiplier=2.0; // have to adjust an upper limit according to compression level
+}
+
+int AliHLTObjectCompressionComponent::DoInit( int argc, const char** argv )
+{
+  // see header file for class documentation
+  int iResult=0;
+
+  iResult=ConfigureFromArgumentString(argc, argv);
+
+  return iResult;
+}
+
+int AliHLTObjectCompressionComponent::ScanConfigurationArgument(int argc, const char** argv)
+{
+  // see header file for class documentation
+  if (argc<=0) return 0;
+  int i=0;
+  TString argument=argv[i];
+
+  // -verbose
+  if (argument.CompareTo("-verbose")==0) {
+    // 
+    return 1;
+  }    
+
+  return 0;
+}
+
+int AliHLTObjectCompressionComponent::DoDeinit()
+{
+  // see header file for class documentation
+  int iResult=0;
+  return iResult;
+}
+
+int AliHLTObjectCompressionComponent::DoEvent(const AliHLTComponentEventData& /*evtData*/,
+                                  AliHLTComponentTriggerData& /*trigData*/)
+{
+  // see header file for class documentation
+  int iResult=0;
+  for (const TObject* pObject=GetFirstInputObject();
+       pObject!=NULL; 
+       pObject=GetNextInputObject()) {
+    PushBack(pObject, GetDataType(), GetSpecification());
+  }
+
+  return iResult;
+}
diff --git a/HLT/BASE/util/AliHLTObjectCompressionComponent.h b/HLT/BASE/util/AliHLTObjectCompressionComponent.h
new file mode 100644 (file)
index 0000000..30fca3e
--- /dev/null
@@ -0,0 +1,105 @@
+// -*- Mode: C++ -*-
+// $Id$
+
+#ifndef ALIHLTOBJECTCOMPRESSIONCOMPONENT_H
+#define ALIHLTOBJECTCOMPRESSIONCOMPONENT_H
+//* This file is property of and copyright by the ALICE HLT Project        * 
+//* ALICE Experiment at CERN, All rights reserved.                         *
+//* See cxx source for full Copyright notice                               *
+
+/// @file   AliHLTObjectCompressionComponent.h
+/// @author Matthias Richter
+/// @date   2010-11-09
+/// @brief  
+///
+
+#include "AliHLTProcessor.h"
+
+/**
+ * @class AliHLTObjectCompressionComponent
+ * Component for compression of TObjects with a different compression level.
+ * The level is adjusted by the common AliHLTComponent @ref alihlt_component_arguments.
+ *
+ * <h2>General properties:</h2>
+ *
+ * Component ID: \b TObjectCompressor                                       <br>
+ * Library: \b libAliHLTUtil.so                                                    <br>
+ * Input Data Types: kAliHLTAnyDataType                                            <br>
+ * Output Data Types: according to input blocks                                    <br>
+ *
+ * <h2>Mandatory arguments:</h2>
+ * <!-- NOTE: ignore the \li. <i> and </i>: it's just doxygen formatting -->
+ *      
+ * <h2>Optional arguments:</h2>
+ * <!-- NOTE: ignore the \li. <i> and </i>: it's just doxygen formatting -->
+ * \li -object-compression=level                                             <br>
+ *      
+ *
+ * <h2>Configuration:</h2>
+ * <!-- NOTE: ignore the \li. <i> and </i>: it's just doxygen formatting -->
+ * Configuration by component arguments.
+ *
+ * <h2>Default CDB entries:</h2>
+ * The component loads no CDB entries.
+ *
+ * <h2>Performance:</h2>
+ * Low profile: input objects are unpacked and binary copied, no streaming
+ * of obejcts.
+ *
+ * <h2>Memory consnumption:</h2>
+ * The component allocates memory of the maximum size for every input
+ * object.
+ *
+ * <h2>Output size:</h2>
+ * 
+ * @ingroup alihlt_util_components
+ */
+class AliHLTObjectCompressionComponent : public AliHLTProcessor
+{
+ public:
+  /// standard constructor
+  AliHLTObjectCompressionComponent();
+  /// destructor
+  virtual ~AliHLTObjectCompressionComponent();
+
+  /// inherited from AliHLTComponent, get component id
+  virtual const char* GetComponentID() {return "TObjectCompressor";};
+
+  /// inherited from AliHLTComponent, get the input data type
+  void GetInputDataTypes( AliHLTComponentDataTypeList& );
+
+  /// inherited from AliHLTComponent, get the output data type
+  AliHLTComponentDataType GetOutputDataType();
+
+  /// inherited from AliHLTComponent, get the output data size estimator
+  void GetOutputDataSize( unsigned long& constBase, double& inputMultiplier );
+
+  /// inherited from AliHLTComponent, create a component
+  virtual AliHLTComponent* Spawn() {return new AliHLTObjectCompressionComponent;}
+
+ protected:
+
+  /// inherited from AliHLTProcessor, data processing
+  int DoEvent( const AliHLTComponentEventData& evtData,
+              AliHLTComponentTriggerData& trigData );
+  
+  using AliHLTProcessor::DoEvent;
+
+  /// inherited from AliHLTComponent, component initialisation
+  int DoInit( int argc, const char** argv );
+
+  /// inherited from AliHLTComponent, scan argument
+  int ScanConfigurationArgument(int argc, const char** argv);
+
+  /// inherited from AliHLTComponent, component cleanup.
+  int DoDeinit();
+
+ private:
+  /// copy constructor prohibited
+  AliHLTObjectCompressionComponent(const AliHLTObjectCompressionComponent&);
+  /// assignment operator prohibited
+  AliHLTObjectCompressionComponent& operator=(const AliHLTObjectCompressionComponent&);
+
+  ClassDef(AliHLTObjectCompressionComponent, 0)
+};
+#endif
index 216b305..327e49a 100644 (file)
@@ -19,6 +19,7 @@ CLASS_HDRS:=          AliHLTFilePublisher.h \
                AliHLTDataGenerator.h \
                AliHLTBlockFilterComponent.h \
                AliHLTMonitoringRelay.h \
+               AliHLTObjectCompressionComponent.h \
                AliHLTCompStatCollector.h \
                AliHLTGlobalBarrelTrack.h \
                AliHLTAgentUtil.h \