3 //**************************************************************************
4 //* This file is property of and copyright by the ALICE HLT Project *
5 //* ALICE Experiment at CERN, All rights reserved. *
7 //* Primary Authors: Matthias Richter <Matthias.Richter@ift.uib.no> *
8 //* for The ALICE HLT Project. *
10 //* Permission to use, copy, modify and distribute this software and its *
11 //* documentation strictly for non-commercial purposes is hereby granted *
12 //* without fee, provided that the above copyright notice appears in all *
13 //* copies and that both the copyright notice and this permission notice *
14 //* appear in the supporting documentation. The authors make no claims *
15 //* about the suitability of this software for any purpose. It is *
16 //* provided "as is" without express or implied warranty. *
17 //**************************************************************************
19 /** @file AliHLTEsdManager.cxx
20 @author Matthias Richter
22 @brief Manager for merging and writing of HLT ESDs
25 #include "AliHLTEsdManager.h"
30 /** ROOT macro for the implementation of ROOT specific class methods */
31 ClassImp(AliHLTEsdManager)
33 AliHLTEsdManager::AliHLTEsdManager()
37 // see header file for class documentation
39 // refer to README to build package
41 // visit http://web.ift.uib.no/~kjeks/doc/alice-hlt
44 AliHLTEsdManager::~AliHLTEsdManager()
46 // see header file for class documentation
49 const char* AliHLTEsdManager::fgkImplName="AliHLTEsdManagerImplementation";
50 const char* AliHLTEsdManager::fgkImplLibrary="libHLTrec.so";
53 AliHLTEsdManager* AliHLTEsdManager::New()
55 // see header file for class documentation
57 AliHLTEsdManager* instance=NULL;
60 ROOT::NewFunc_t pNewFunc=NULL;
62 pCl=TClass::GetClass(fgkImplName);
63 } while (!pCl && (iLibResult=gSystem->Load(fgkImplLibrary))==0);
65 if (pCl && (pNewFunc=pCl->GetNew())!=NULL) {
66 void* p=(*pNewFunc)(NULL);
68 instance=reinterpret_cast<AliHLTEsdManager*>(p);
70 log.Logging(kHLTLogError, "AliHLTEsdManager::New", "ESD handling", "type cast to AliHLTEsdManager instance failed");
73 log.Logging(kHLTLogError, "AliHLTEsdManager::New", "ESD handling", "can not create AliHLTEsdManager instance from class descriptor");
76 log.Logging(kHLTLogError, "AliHLTEsdManager::New", "ESD handling", "can not find AliHLTEsdManager class descriptor");
79 log.Logging(kHLTLogError, "AliHLTEsdManager::New", "ESD handling", "can not load libHLTrec library");
84 void AliHLTEsdManager::Delete(AliHLTEsdManager* instance)
86 // see header file for class documentation
87 if (!instance) return;
89 // check if the library is still there in order to have the
90 // destructor available
91 TClass* pCl=TClass::GetClass(fgkImplName);
94 log.Logging(kHLTLogError, "AliHLTEsdManager::Delete", "ESD handling", "potential memory leak: libHLTrec library not available, skipping destruction %p", instance);