adding methods for handling ESDEvent objects outside liHLTbase
authorrichterm <richterm@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 14 Jan 2011 09:19:10 +0000 (09:19 +0000)
committerrichterm <richterm@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 14 Jan 2011 09:19:10 +0000 (09:19 +0000)
HLT/BASE/AliHLTEsdManager.h
HLT/rec/AliHLTEsdManagerImplementation.cxx
HLT/rec/AliHLTEsdManagerImplementation.h

index 0d7b7c7..44727b5 100644 (file)
@@ -110,6 +110,28 @@ class AliHLTEsdManager : public AliHLTLogging {
    */
   virtual TString GetFileNames(AliHLTComponentDataType dt=kAliHLTAnyDataType) const = 0;
 
+  /**
+   * Create an AliESDEvent object.
+   * The standard content can optionally be initialized.
+   */
+  virtual AliESDEvent* CreateEsdEvent(bool bCreateStdContent=false) const = 0;
+
+  /**
+   * Add object to ESD event.
+   * Checks the existance of the object under the name 'branchname'
+   * Note: some of the objects have (branch-)names which differ from the object name
+   * However, parameter branchname is never used when adding an object not yet existing.
+   */
+  virtual int AddObject(AliESDEvent* pESD, const TObject* pObject, const char* branchname) const = 0;
+
+  /**
+   * Reset the specified object.
+   * The purpose of this method is to disentangle library dependencies.
+   * The actual implementation is outside the HLT base library in a
+   * child class.
+   */
+  virtual int ResetEsdEvent(AliESDEvent* pESD) const = 0;
+
  protected:
   /** constructor */
   AliHLTEsdManager();
index 8565f98..e6f6dd7 100644 (file)
@@ -587,3 +587,34 @@ int AliHLTEsdManagerImplementation::CheckClassConditions() const
 
   return 0;
 }
+
+AliESDEvent* AliHLTEsdManagerImplementation::CreateEsdEvent(bool bCreateStdContent) const
+{
+  // create ESDEvent object and optionally initialize standard content
+  AliESDEvent* pESD=new AliESDEvent;
+  if (pESD && bCreateStdContent) pESD->CreateStdContent();
+  return pESD;
+}
+
+int AliHLTEsdManagerImplementation::AddObject(AliESDEvent* pESD, const TObject* pObject, const char* branchname) const
+{
+  // add object to the list of ESD contributors
+  if (!pESD || !pObject) return -EINVAL;
+  TObject* pESDObject=pESD->FindListObject(branchname);
+  if (pESDObject) {
+    // copy the content to the already existing object
+    pObject->Copy(*pESDObject);
+  } else {
+    // add a new object
+    pESD->AddObject(pObject->Clone());
+  }
+  return 0;
+}
+
+int AliHLTEsdManagerImplementation::ResetEsdEvent(AliESDEvent* pESD) const
+{
+  // reset the specified ESD object
+  if (!pESD) return -EINVAL;
+  pESD->Reset();
+  return 0;
+}
index 14aec61..77d57b8 100644 (file)
@@ -105,6 +105,12 @@ class AliHLTEsdManagerImplementation : public AliHLTEsdManager {
 
   int CheckClassConditions() const;
 
+  AliESDEvent* CreateEsdEvent(bool bCreateStdContent=false) const;
+
+  int AddObject(AliESDEvent* pESD, const TObject* pObject, const char* branchname) const;
+
+  int ResetEsdEvent(AliESDEvent* pESD) const;
+
  protected:
 
  private: