using one instance of decoder for all events
authorrichterm <richterm@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 20 Jan 2012 10:23:25 +0000 (10:23 +0000)
committerrichterm <richterm@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 20 Jan 2012 10:23:25 +0000 (10:23 +0000)
HLT/TPCLib/AliHLTTPCClusterAccessHLTOUT.cxx
HLT/TPCLib/AliHLTTPCClusterAccessHLTOUT.h

index 5dfd168..281fec2 100644 (file)
@@ -52,6 +52,7 @@ AliHLTTPCClusterAccessHLTOUT::AliHLTTPCClusterAccessHLTOUT()
   , fVerbosity(0)
   , fClusters(NULL)
   , fCurrentSector(-1)
+  , fpDecoder(NULL)
 {
   // see header file for class documentation
   // or
@@ -68,6 +69,11 @@ AliHLTTPCClusterAccessHLTOUT::~AliHLTTPCClusterAccessHLTOUT()
     delete fClusters;
     fClusters=NULL;
   }
+  if (fpDecoder) {
+    fpDecoder->Clear();
+    delete fpDecoder;
+    fpDecoder=NULL;
+  }
 }
 
 void AliHLTTPCClusterAccessHLTOUT::Execute(const char *method,  const char *params, Int_t *error)
@@ -179,7 +185,17 @@ int AliHLTTPCClusterAccessHLTOUT::ProcessClusters(const char* params)
     return -EACCES;
   }
 
-  AliHLTTPCDataCompressionDecoder decoder;
+  if (!fpDecoder) {
+    fpDecoder=new AliHLTTPCDataCompressionDecoder;
+  }
+
+  if (!fpDecoder) {
+    AliError("failed to create decoder instance");
+    return -ENODEV;
+  }
+
+  AliHLTTPCDataCompressionDecoder& decoder=*fpDecoder;
+  decoder.Clear();
   decoder.SetVerbosity(fVerbosity);
   decoder.EnableClusterMerger();
 
index be6f8dc..de45b89 100644 (file)
@@ -21,6 +21,7 @@
 class AliTPCClustersRow;
 class AliHLTOUT;
 class TClonesArray;
+class AliHLTTPCDataCompressionDecoder;
 
 typedef std::map<AliHLTUInt32_t, AliHLTTPCClusterMCLabel> AliHLTTPCClusterMCDataList;
 
@@ -226,6 +227,7 @@ class AliHLTTPCClusterAccessHLTOUT : public TObject
   int fVerbosity; //! verbosity level
   AliTPCclusterMIContainer* fClusters; //! cluster container
   int fCurrentSector; //! current sector
+  AliHLTTPCDataCompressionDecoder* fpDecoder; //! decoder instance
 
   ClassDef(AliHLTTPCClusterAccessHLTOUT, 0)
 };