]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
adding option to skip some of the std content of the ESD, by default
authorrichterm <richterm@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 19 Mar 2010 10:10:50 +0000 (10:10 +0000)
committerrichterm <richterm@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 19 Mar 2010 10:10:50 +0000 (10:10 +0000)
AliESDZDC,AliESDFMD,Cascades,Kinks,AliRawDataErrorLogs,AliESDACORDE are skipped
component argument '-skipobject=name1,name2' can be used the change the list of
objects, names refer to the ESD std object identifiers.

Speedup for pp min bias 2.5, for Hijing 1000 PbPb 1.4

HLT/global/AliHLTGlobalEsdConverterComponent.cxx
HLT/global/AliHLTGlobalEsdConverterComponent.h

index db9591830c1dfe7dcfbf4c3fe9383fac15b4ad6f..bc871161da8f94087d4d9c56efd726f0b9c44b88 100644 (file)
@@ -172,6 +172,27 @@ int AliHLTGlobalEsdConverterComponent::DoInit(int argc, const char** argv)
   TString argument="";
   int bMissingParam=0;
 
+  // default list of skiped ESD objects
+  TString skipObjects=
+    // "AliESDRun,"
+    // "AliESDHeader,"
+    "AliESDZDC,"
+    "AliESDFMD,"
+    // "AliESDVZERO,"
+    // "AliESDTZERO,"
+    // "TPCVertex,"
+    // "SPDVertex,"
+    // "PrimaryVertex,"
+    // "AliMultiplicity,"
+    // "PHOSTrigger,"
+    // "EMCALTrigger,"
+    // "SPDPileupVertices,"
+    // "TrkPileupVertices,"
+    "Cascades,"
+    "Kinks,"
+    "AliRawDataErrorLogs,"
+    "AliESDACORDE";
+
   iResult=Reconfigure(NULL, NULL);
   TString allArgs = "";
   for ( int i = 0; i < argc; i++ ) {
@@ -195,10 +216,14 @@ int AliHLTGlobalEsdConverterComponent::DoInit(int argc, const char** argv)
       } else if (argument.CompareTo("-solenoidBz")==0) {
        if ((bMissingParam=(++i>=pTokens->GetEntries()))) break;
        HLTInfo("Magnetic Field set to: %s", ((TObjString*)pTokens->At(i))->GetString().Data());
-       fSolenoidBz=((TObjString*)pTokens->At(i))->GetString().Atof();
+       HLTWarning("argument '-solenoidBz' is deprecated, solenoid field initiaized from CDB settings");
        continue;
+      } else if (argument.Contains("-skipobject=")) {
+       argument.ReplaceAll("-skipobject=", "");
+       skipObjects=argument;
       } else {
        HLTError("unknown argument %s", argument.Data());
+       iResult=-EINVAL;
        break;
       }
     }
@@ -214,6 +239,45 @@ int AliHLTGlobalEsdConverterComponent::DoInit(int argc, const char** argv)
     fESD = new AliESDEvent;
     if (fESD) {
       fESD->CreateStdContent();
+
+      // remove some of the objects which are not needed
+      if (fESD->GetList() && !skipObjects.IsNull()) {
+       pTokens=skipObjects.Tokenize(",");
+       if (pTokens) {
+         const char* id=NULL;
+         TIter next(pTokens);
+         TObject* pObject=NULL;
+         while ((pObject=next())!=NULL) {
+           id=((TObjString*)pObject)->GetString().Data();
+           if (fESD->GetList()->FindObject(id)) {
+             HLTDebug("removing object %s", id);
+             fESD->GetList()->Remove(fESD->GetList()->FindObject(id));
+           } else {
+             HLTWarning("failed to remove object '%s' from ESD", id);
+           }
+         }
+         // id="AliESDRun";           if (fESD->GetList()->FindObject(id)) fESD->GetList()->Remove(fESD->GetList()->FindObject(id));
+         // id="AliESDHeader";        if (fESD->GetList()->FindObject(id)) fESD->GetList()->Remove(fESD->GetList()->FindObject(id));
+         // id="AliESDZDC";           if (fESD->GetList()->FindObject(id)) fESD->GetList()->Remove(fESD->GetList()->FindObject(id));
+         // id="AliESDFMD";           if (fESD->GetList()->FindObject(id)) fESD->GetList()->Remove(fESD->GetList()->FindObject(id));
+         // id="AliESDVZERO";         if (fESD->GetList()->FindObject(id)) fESD->GetList()->Remove(fESD->GetList()->FindObject(id));
+         // id="AliESDTZERO";         if (fESD->GetList()->FindObject(id)) fESD->GetList()->Remove(fESD->GetList()->FindObject(id));
+         // id="TPCVertex";           if (fESD->GetList()->FindObject(id)) fESD->GetList()->Remove(fESD->GetList()->FindObject(id));
+         // id="SPDVertex";           if (fESD->GetList()->FindObject(id)) fESD->GetList()->Remove(fESD->GetList()->FindObject(id));
+         // id="PrimaryVertex";       if (fESD->GetList()->FindObject(id)) fESD->GetList()->Remove(fESD->GetList()->FindObject(id));
+         // id="AliMultiplicity";     if (fESD->GetList()->FindObject(id)) fESD->GetList()->Remove(fESD->GetList()->FindObject(id));
+         // id="PHOSTrigger";         if (fESD->GetList()->FindObject(id)) fESD->GetList()->Remove(fESD->GetList()->FindObject(id));
+         // id="EMCALTrigger";        if (fESD->GetList()->FindObject(id)) fESD->GetList()->Remove(fESD->GetList()->FindObject(id));
+         // id="SPDPileupVertices";   if (fESD->GetList()->FindObject(id)) fESD->GetList()->Remove(fESD->GetList()->FindObject(id));
+         // id="TrkPileupVertices";   if (fESD->GetList()->FindObject(id)) fESD->GetList()->Remove(fESD->GetList()->FindObject(id));
+         // id="Cascades";            if (fESD->GetList()->FindObject(id)) fESD->GetList()->Remove(fESD->GetList()->FindObject(id));
+         // id="Kinks";               if (fESD->GetList()->FindObject(id)) fESD->GetList()->Remove(fESD->GetList()->FindObject(id));
+         // id="AliRawDataErrorLogs"; if (fESD->GetList()->FindObject(id)) fESD->GetList()->Remove(fESD->GetList()->FindObject(id));
+         // id="AliESDACORDE";        if (fESD->GetList()->FindObject(id)) fESD->GetList()->Remove(fESD->GetList()->FindObject(id));
+         fESD->GetStdContent();
+         delete pTokens;
+       }
+      }
     } else {
       iResult=-ENOMEM;
     }
index 45fed1a248294219516c880e18c9ad45bd8e615b..33d26aadbd770fbf7aafcba9e788c638fc4f6e8c 100644 (file)
@@ -6,11 +6,11 @@
 //* ALICE Experiment at CERN, All rights reserved.                         *
 //* See cxx source for full Copyright notice                               *
 
-/** @file   AliHLTGlobalEsdConverterComponent.h
-    @author Matthias Richter
-    @date   
-    @brief  Global ESD converter component.
-*/
+/ @file   AliHLTGlobalEsdConverterComponent.h
+//  @author Matthias Richter
+//  @date   
+//  @brief  Global ESD converter component.
+//  @note
 
 #include "AliHLTProcessor.h"
 #include "AliHLTComponentBenchmark.h"
@@ -34,6 +34,10 @@ struct AliHLTTracksData;
  *      this has been made the default behavior in Sep 2008.
  * \li -tree                                                            <br>
  *      write ESD directly to TTree and to output (::kAliHLTDataTypeESDTree)
+ * \li -skipobject=name1,name2,...                                   <br>
+ *      comma separated list of ESD object names to be skipped, default is
+ *      AliESDZDC,AliESDFMD,Cascades,Kinks,AliRawDataErrorLogs,AliESDACORDE
+ *      leave blank to disable the option
  *
  * @ingroup alihlt_tpc_components
  */