Making the HLTReconstructor and RawReaderHLT not a direct child of the HLTPluginBase...
authorrichterm <richterm@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 28 May 2009 14:07:21 +0000 (14:07 +0000)
committerrichterm <richterm@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 28 May 2009 14:07:21 +0000 (14:07 +0000)
HLT/rec/AliHLTReconstructor.cxx
HLT/rec/AliHLTReconstructor.h
HLT/rec/AliRawReaderHLT.cxx
HLT/rec/AliRawReaderHLT.h

index 40e19e0..5858c8d 100644 (file)
 #include "AliHLTOUTRawReader.h"
 #include "AliHLTOUTDigitReader.h"
 #include "AliHLTEsdManager.h"
+#include "AliHLTPluginBase.h"
 
 ClassImp(AliHLTReconstructor)
 
 AliHLTReconstructor::AliHLTReconstructor()
   : 
   AliReconstructor(),
-  AliHLTPluginBase(),
   fFctProcessHLTOUT(NULL),
-  fpEsdManager(NULL)
+  fpEsdManager(NULL),
+  fpPluginBase(new AliHLTPluginBase)
 { 
   //constructor
 }
@@ -49,9 +50,9 @@ AliHLTReconstructor::AliHLTReconstructor()
 AliHLTReconstructor::AliHLTReconstructor(const char* options)
   : 
   AliReconstructor(),
-  AliHLTPluginBase(),
   fFctProcessHLTOUT(NULL),
-  fpEsdManager(NULL)
+  fpEsdManager(NULL),
+  fpPluginBase(new AliHLTPluginBase)
 { 
   //constructor
   if (options) Init(options);
@@ -61,14 +62,18 @@ AliHLTReconstructor::~AliHLTReconstructor()
 { 
   //destructor
 
-  AliHLTSystem* pSystem=GetInstance();
+  if (fpPluginBase) {
+  AliHLTSystem* pSystem=fpPluginBase->GetInstance();
   if (pSystem) {
-    AliDebug(0, Form("delete HLT system: status %#x", pSystem->GetStatusFlags()));
+    AliDebug(0, Form("terminate HLT system: status %#x", pSystem->GetStatusFlags()));
     if (pSystem->CheckStatus(AliHLTSystem::kStarted)) {
       // send specific 'event' to execute the stop sequence
       pSystem->Reconstruct(0, NULL, NULL);
     }
   }
+  delete fpPluginBase;
+  }
+  fpPluginBase=NULL;
 
   if (fpEsdManager) AliHLTEsdManager::Delete(fpEsdManager);
   fpEsdManager=NULL;
@@ -84,7 +89,12 @@ void AliHLTReconstructor::Init(const char* options)
 void AliHLTReconstructor::Init()
 {
   // init the reconstructor
-  AliHLTSystem* pSystem=GetInstance();
+  if (!fpPluginBase) {
+    AliError("internal memory error: can not get AliHLTSystem instance from plugin");
+    return;
+  }
+
+  AliHLTSystem* pSystem=fpPluginBase->GetInstance();
   if (!pSystem) {
     AliError("can not create AliHLTSystem object");
     return;
@@ -168,8 +178,13 @@ void AliHLTReconstructor::Reconstruct(AliRawReader* rawReader, TTree* /*clusters
   // For each event, HLT reconstruction chains can be executed and
   // added to the existing HLTOUT data
   // The HLTOUT data is finally processed in FillESD
+  if (!fpPluginBase) {
+    AliError("internal memory error: can not get AliHLTSystem instance from plugin");
+    return;
+  }
+
   int iResult=0;
-  AliHLTSystem* pSystem=GetInstance();
+  AliHLTSystem* pSystem=fpPluginBase->GetInstance();
 
   if (pSystem) {
     if (pSystem->CheckStatus(AliHLTSystem::kError)) {
@@ -194,7 +209,12 @@ void AliHLTReconstructor::FillESD(AliRawReader* rawReader, TTree* /*clustersTree
     return;
   }
 
-  AliHLTSystem* pSystem=GetInstance();
+  if (!fpPluginBase) {
+    AliError("internal memory error: can not get AliHLTSystem instance from plugin");
+    return;
+  }
+
+  AliHLTSystem* pSystem=fpPluginBase->GetInstance();
 
   if (pSystem) {
     if (pSystem->CheckStatus(AliHLTSystem::kError)) {
@@ -250,7 +270,12 @@ void AliHLTReconstructor::FillESD(TTree* /*digitsTree*/, TTree* /*clustersTree*/
                    "        sim.Run();\n"
                    "        /*********************************************************/", option.Data()));
   }
-  AliHLTSystem* pSystem=GetInstance();
+  if (!fpPluginBase) {
+    AliError("internal memory error: can not get AliHLTSystem instance from plugin");
+    return;
+  }
+
+  AliHLTSystem* pSystem=fpPluginBase->GetInstance();
   if (pSystem) {
     if (pSystem->CheckStatus(AliHLTSystem::kError)) {
       AliError("HLT system in error state");
@@ -275,7 +300,12 @@ void AliHLTReconstructor::ProcessHLTOUT(AliHLTOUT* pHLTOUT, AliESDEvent* esd, bo
 {
   // treatment of simulated or real HLTOUT data
   if (!pHLTOUT) return;
-  AliHLTSystem* pSystem=GetInstance();
+  if (!fpPluginBase) {
+    AliError("internal memory error: can not get AliHLTSystem instance from plugin");
+    return;
+  }
+
+  AliHLTSystem* pSystem=fpPluginBase->GetInstance();
   if (!pSystem) {
     AliError("error getting HLT system instance");
     return;
index 57176fc..08a0e2e 100644 (file)
 */
 
 #include "AliReconstructor.h"
-#include "AliHLTPluginBase.h"
 
 class AliHLTSystem;
 class AliRawReader;
 class AliESDEvent;
 class AliHLTOUT;
 class AliHLTEsdManager;
+class AliHLTPluginBase;
 /**
  * @defgroup alihlt_aliroot_reconstruction AliRoot reconstruction.
  *
@@ -190,7 +190,7 @@ class AliHLTEsdManager;
  * @ingroup alihlt_aliroot_reconstruction
  * @section sec_alihltreconstructor_members Class members
  */
-class AliHLTReconstructor: public AliReconstructor, public AliHLTPluginBase {
+class AliHLTReconstructor: public AliReconstructor {
 public:
   /** standard constructor */
   AliHLTReconstructor();
@@ -288,7 +288,10 @@ private:
   /** ESD manger instance for this reconstruction */
   AliHLTEsdManager* fpEsdManager; //!transient
 
-  ClassDef(AliHLTReconstructor, 5)   // class for the HLT reconstruction
+  /** base class for AliRoot HLT plugins */
+  AliHLTPluginBase* fpPluginBase;                                     //!transient
+
+  ClassDef(AliHLTReconstructor, 6)   // class for the HLT reconstruction
 
 };
 
index 84644c1..d7091da 100644 (file)
@@ -34,6 +34,7 @@
 #include "AliHLTOUTHandler.h"
 #include "AliHLTOUTHandlerEquId.h"
 #include "AliHLTSystem.h"
+#include "AliHLTPluginBase.h"
 #include "AliLog.h"
 #include "AliDAQ.h"            // RAW, for detector names and equipment ids
 #include "TObjString.h"
@@ -45,7 +46,6 @@ ClassImp(AliRawReaderHLT)
 AliRawReaderHLT::AliRawReaderHLT(AliRawReader* pRawreader, const char* options)
   :
   AliRawReader(),
-  AliHLTPluginBase(),
   fpParentReader(pRawreader),
   fOptions(),
   fSystemOptions(),
@@ -58,7 +58,8 @@ AliRawReaderHLT::AliRawReaderHLT(AliRawReader* pRawreader, const char* options)
   fDetectors(),
   fpHLTOUT(NULL),
   fbReadFirst(true),
-  fpDataHandler(NULL)
+  fpDataHandler(NULL),
+  fpPluginBase(new AliHLTPluginBase)
 {
   // see header file for class documentation
   // or
@@ -73,6 +74,8 @@ AliRawReaderHLT::~AliRawReaderHLT()
 {
   // see header file for class documentation
   ReleaseHLTData();
+  if (fpPluginBase) delete fpPluginBase;
+  fpPluginBase=NULL;
 }
 
 UInt_t AliRawReaderHLT::GetType() const
@@ -462,7 +465,11 @@ Bool_t   AliRawReaderHLT::ReadNextHLTData()
     if (!fpHLTOUT) {
     fpHLTOUT=new AliHLTOUTRawReader(fpParentReader);
     if ((result=(fpHLTOUT!=NULL))) {
-      AliHLTSystem* pSystem=GetInstance();
+      if (!fpPluginBase) {
+       AliFatal("internal data error: can not get AliHLTSystem instance from plugin");
+       return false;
+      }
+      AliHLTSystem* pSystem=fpPluginBase->GetInstance();
       if (pSystem) {
        pSystem->ScanOptions(fSystemOptions.Data());
       }
index 6f034d0..047fa67 100644 (file)
 
 #include "AliHLTDataTypes.h"
 #include "AliRawReader.h"      // RAW, base class
-#include "AliHLTPluginBase.h"
 #include "TString.h"
 #include <vector>
 
 class AliHLTOUT;
 class AliHLTOUTHandler;
+class AliHLTPluginBase;
 
 /**
  * @class AliRawReaderHLT
@@ -116,7 +116,7 @@ class AliHLTOUTHandler;
  *
  * @ingroup alihlt_aliroot_reconstruction
  */
-class AliRawReaderHLT : public AliRawReader, public AliHLTPluginBase {
+class AliRawReaderHLT : public AliRawReader {
  public:
   /** constructor */
   AliRawReaderHLT(AliRawReader* pParentReader, const char* options=NULL);
@@ -263,7 +263,10 @@ class AliRawReaderHLT : public AliRawReader, public AliHLTPluginBase {
   /** instance of the data handler providing the current data buffer */
   AliHLTOUTHandler* fpDataHandler; // !transient
 
-  ClassDef(AliRawReaderHLT, 4)
+  /** base class for AliRoot HLT plugins */
+  AliHLTPluginBase* fpPluginBase;                                     //!transient
+
+  ClassDef(AliRawReaderHLT, 5)
 };
 
 #define ALIHLTREC_LIBRARY                   "libHLTrec.so"