ROOT logo
// $Id$
/**
 * @file hltout-collect-esd.C
 * @brief Example for the AliHLTEsdCollectorComponent
 *
 * Example macro to run a small chain with the AliHLTOUTPublisherComponent
 * and the AliHLTEsdCollectorComponent. The AliHLTOUTPublisherComponent
 * is configured to publish all ESD objects from the HLTOUT data, the
 * AliHLTEsdCollectorComponent writes the files using the AliHLTEsdManager.
 *
 * Usage: aliroot -b -q \
 *             hltout-collect-esd.C'("raw.root","local://$ALICE_ROOT/OCDB",0,5)' | tee hltout-collect-esd.log
 * or 
 *  
 *    aliroot -b -l -q \
 *                hltout-collect-esd.C'("alien:///alice/data/2010/LHC10b/000115322/raw/10000115322040.80.root","raw://",0,5)'  | tee hltout-collect-esd.log
 * 
 * 
 * The macro asumes HLTOUT raw data ddl files in order to open an
 * AliRawReaderFile, e.g. simulated using the default AliSimulation with
 * at least SetWriteRawData("HLT") enabled.
 *
 * \b Note: The example disables a few steps in the AliReconstruction,
 * mainly because of crashes in various parts of AliRoot. This does not
 * have any impact to the HLT features to be presented.
 *
 * @author Matthias.Richter@ift.uib.no
 * @ingroup alihlt_tutorial
 */
void hltout_collect_esd(const char *filename,
                        const char *cdbURI,
                        int minEvent=-1,
                        int maxEvent=-1)
{
  
  // connect to the GRID if we use a file or OCDB from the GRID
  TString struri=cdbURI;
  TString strfile=filename;
  if (struri.BeginsWith("raw://") ||
      strfile.Contains("://") && !strfile.Contains("local://")) {
    TGrid::Connect("alien");
  }

  // Set the CDB storage location
  AliCDBManager * man = AliCDBManager::Instance();
  man->SetDefaultStorage(cdbURI);
  if (struri.BeginsWith("local://")) {
    // set specific storage for GRP entry
    // search in the working directory and one level above, the latter
    // follows the standard simulation setup like e.g. in test/ppbench
    if (!gSystem->AccessPathName("GRP/GRP/Data")) {
      man->SetSpecificStorage("GRP/GRP/Data", "local://$PWD");
    } else if (!gSystem->AccessPathName("../GRP/GRP/Data")) {
      man->SetSpecificStorage("GRP/GRP/Data", "local://$PWD/..");
    }
  }
  /////////////////////////////////////////////////////////////////////////
  /////////////////////////////////////////////////////////////////////////
  //
  // setup of the HLT system
  AliHLTSystem* pHLT=AliHLTPluginBase::GetInstance();
  if (!pHLT) {
    cerr << "fatal error: can not get HLT instance" << endl;
  }

  /////////////////////////////////////////////////////////////////////////
  /////////////////////////////////////////////////////////////////////////
  //
  // the configuration chain
  TString arg;

  // the publisher configuration
  arg.Form("-typeid ALIESDV0");
  AliHLTConfiguration publisher("hltout-publisher", "AliHLTOUTPublisher" , NULL, arg.Data());

  // the writer configuration
  arg.Form("");
  AliHLTConfiguration collector("sink1", "EsdCollector"   , "hltout-publisher", arg.Data());

  /////////////////////////////////////////////////////////////////////////
  /////////////////////////////////////////////////////////////////////////
  //
  // setup of the reconstruction
  AliReconstruction rec; 
  
  if (minEvent>=0 || maxEvent>minEvent) {
    if (minEvent<0) minEvent=0;
    if (maxEvent<minEvent) maxEvent=minEvent;
    rec.SetEventRange(minEvent,maxEvent);
  }

  rec.SetInput(filename);
  rec.SetRunLocalReconstruction("HLT");
  rec.SetRunTracking("");
  rec.SetFillESD("");
  rec.SetRunQA(":");
  rec.SetFillTriggerESD(kFALSE);
  rec.SetRunVertexFinder(kFALSE);
  rec.SetOption("HLT", "libAliHLTUtil.so loglevel=0x7c chains=sink1");
  rec.Run();
}
 hltout-collect-esd.C:1
 hltout-collect-esd.C:2
 hltout-collect-esd.C:3
 hltout-collect-esd.C:4
 hltout-collect-esd.C:5
 hltout-collect-esd.C:6
 hltout-collect-esd.C:7
 hltout-collect-esd.C:8
 hltout-collect-esd.C:9
 hltout-collect-esd.C:10
 hltout-collect-esd.C:11
 hltout-collect-esd.C:12
 hltout-collect-esd.C:13
 hltout-collect-esd.C:14
 hltout-collect-esd.C:15
 hltout-collect-esd.C:16
 hltout-collect-esd.C:17
 hltout-collect-esd.C:18
 hltout-collect-esd.C:19
 hltout-collect-esd.C:20
 hltout-collect-esd.C:21
 hltout-collect-esd.C:22
 hltout-collect-esd.C:23
 hltout-collect-esd.C:24
 hltout-collect-esd.C:25
 hltout-collect-esd.C:26
 hltout-collect-esd.C:27
 hltout-collect-esd.C:28
 hltout-collect-esd.C:29
 hltout-collect-esd.C:30
 hltout-collect-esd.C:31
 hltout-collect-esd.C:32
 hltout-collect-esd.C:33
 hltout-collect-esd.C:34
 hltout-collect-esd.C:35
 hltout-collect-esd.C:36
 hltout-collect-esd.C:37
 hltout-collect-esd.C:38
 hltout-collect-esd.C:39
 hltout-collect-esd.C:40
 hltout-collect-esd.C:41
 hltout-collect-esd.C:42
 hltout-collect-esd.C:43
 hltout-collect-esd.C:44
 hltout-collect-esd.C:45
 hltout-collect-esd.C:46
 hltout-collect-esd.C:47
 hltout-collect-esd.C:48
 hltout-collect-esd.C:49
 hltout-collect-esd.C:50
 hltout-collect-esd.C:51
 hltout-collect-esd.C:52
 hltout-collect-esd.C:53
 hltout-collect-esd.C:54
 hltout-collect-esd.C:55
 hltout-collect-esd.C:56
 hltout-collect-esd.C:57
 hltout-collect-esd.C:58
 hltout-collect-esd.C:59
 hltout-collect-esd.C:60
 hltout-collect-esd.C:61
 hltout-collect-esd.C:62
 hltout-collect-esd.C:63
 hltout-collect-esd.C:64
 hltout-collect-esd.C:65
 hltout-collect-esd.C:66
 hltout-collect-esd.C:67
 hltout-collect-esd.C:68
 hltout-collect-esd.C:69
 hltout-collect-esd.C:70
 hltout-collect-esd.C:71
 hltout-collect-esd.C:72
 hltout-collect-esd.C:73
 hltout-collect-esd.C:74
 hltout-collect-esd.C:75
 hltout-collect-esd.C:76
 hltout-collect-esd.C:77
 hltout-collect-esd.C:78
 hltout-collect-esd.C:79
 hltout-collect-esd.C:80
 hltout-collect-esd.C:81
 hltout-collect-esd.C:82
 hltout-collect-esd.C:83
 hltout-collect-esd.C:84
 hltout-collect-esd.C:85
 hltout-collect-esd.C:86
 hltout-collect-esd.C:87
 hltout-collect-esd.C:88
 hltout-collect-esd.C:89
 hltout-collect-esd.C:90
 hltout-collect-esd.C:91
 hltout-collect-esd.C:92
 hltout-collect-esd.C:93
 hltout-collect-esd.C:94
 hltout-collect-esd.C:95
 hltout-collect-esd.C:96
 hltout-collect-esd.C:97
 hltout-collect-esd.C:98
 hltout-collect-esd.C:99
 hltout-collect-esd.C:100
 hltout-collect-esd.C:101
 hltout-collect-esd.C:102