ROOT logo
// $Id$
/**
 * @file publish-rawreader-data.C
 * @brief Publish data from the the RawReader provided by the AliReconstruction.
 *
 * Usage:
 * <pre>
 *   aliroot -b -q 'publish-rawreader-data.C("raw.root", 768, 769)' | tee publish-rawreader-data.log
 * </pre>
 *
 * This macro runs shows a use case of the AliHLTRawReaderPublisherComponent
 * An HLT chain is run inside the AliReconstruction and the DDL payload is
 * extracted from the AliRawReader in a given  equipment range.
 * Input can be either a root file or the path to the directory containing
 * the 'rawx' sub folders.
 *
 * @author Matthias.Richter@ift.uib.no
 */

const char* defaultInput="./";
const int defaultMinId=768;
const int defaultMaxId=769;

void publish_rawreader_data(const char* input, int iMinDDLno, int iMaxDDLno)
{
  /////////////////////////////////////////////////////////////////////////
  /////////////////////////////////////////////////////////////////////////
  //
  // some defaults
  const char* baseName="RAW.ddl";

  /////////////////////////////////////////////////////////////////////////
  /////////////////////////////////////////////////////////////////////////
  //
  // setup of the reconstruction
  if (!input) {
    cerr << "invalid path" << endl;
    cerr << "usage: aliroot -b -q 'publish-rawreader-data.C(\"raw.root\", 768, 769)'" << endl;
    return;
  }

  AliReconstruction rec;
  rec.SetInput(input);
  rec.SetOption("HLT", "libAliHLTUtil.so loglevel=0x7c chains=sink1");

  /////////////////////////////////////////////////////////////////////////
  /////////////////////////////////////////////////////////////////////////
  //
  // setup of the HLT system
  AliHLTSystem* pHLT=AliHLTPluginBase::GetInstance();
  if (!pHLT) {
    cerr << "fatal error: can not get HLT instance" << endl;
  }

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

  arg.Form("-minid %d -maxid %d -skipempty -verbose", iMinDDLno, iMaxDDLno);
  AliHLTConfiguration pubconf("publisher", "AliRawReaderPublisher", NULL , arg.Data());
  if (!writerInput.IsNull()) writerInput+=" ";
  writerInput+="publisher";

  // the writer configuration
  arg.Form("-specfmt=_%%d -subdir=out%%d -blocknofmt= -idfmt= -datafile %s", baseName);
  AliHLTConfiguration fwconf("sink1", "FileWriter"   , writerInput.Data(), arg.Data());


  /////////////////////////////////////////////////////////////////////////
  /////////////////////////////////////////////////////////////////////////
  //
  // the reconstruction loop
  rec.SetRunLocalReconstruction("HLT");
  rec.SetRunReconstruction("HLT");
  rec.SetRunTracking("");
  rec.SetFillESD("HLT");
  rec.SetFillTriggerESD(kFALSE);
  rec.SetRunQA(":");
  rec.SetRunVertexFinder(kFALSE);
  rec.SetLoadAlignFromCDB(0);
  rec.SetFillTriggerESD(kFALSE);
  rec.Run();
}

void publish_rawreader_data()
{
  cout << "runnig from defaults: input " << defaultInput << "  " << defaultMinId << "-" << defaultMaxId << endl;
  publish_rawreader_data(defaultInput, defaultMinId, defaultMaxId);
}
 publish-rawreader-data.C:1
 publish-rawreader-data.C:2
 publish-rawreader-data.C:3
 publish-rawreader-data.C:4
 publish-rawreader-data.C:5
 publish-rawreader-data.C:6
 publish-rawreader-data.C:7
 publish-rawreader-data.C:8
 publish-rawreader-data.C:9
 publish-rawreader-data.C:10
 publish-rawreader-data.C:11
 publish-rawreader-data.C:12
 publish-rawreader-data.C:13
 publish-rawreader-data.C:14
 publish-rawreader-data.C:15
 publish-rawreader-data.C:16
 publish-rawreader-data.C:17
 publish-rawreader-data.C:18
 publish-rawreader-data.C:19
 publish-rawreader-data.C:20
 publish-rawreader-data.C:21
 publish-rawreader-data.C:22
 publish-rawreader-data.C:23
 publish-rawreader-data.C:24
 publish-rawreader-data.C:25
 publish-rawreader-data.C:26
 publish-rawreader-data.C:27
 publish-rawreader-data.C:28
 publish-rawreader-data.C:29
 publish-rawreader-data.C:30
 publish-rawreader-data.C:31
 publish-rawreader-data.C:32
 publish-rawreader-data.C:33
 publish-rawreader-data.C:34
 publish-rawreader-data.C:35
 publish-rawreader-data.C:36
 publish-rawreader-data.C:37
 publish-rawreader-data.C:38
 publish-rawreader-data.C:39
 publish-rawreader-data.C:40
 publish-rawreader-data.C:41
 publish-rawreader-data.C:42
 publish-rawreader-data.C:43
 publish-rawreader-data.C:44
 publish-rawreader-data.C:45
 publish-rawreader-data.C:46
 publish-rawreader-data.C:47
 publish-rawreader-data.C:48
 publish-rawreader-data.C:49
 publish-rawreader-data.C:50
 publish-rawreader-data.C:51
 publish-rawreader-data.C:52
 publish-rawreader-data.C:53
 publish-rawreader-data.C:54
 publish-rawreader-data.C:55
 publish-rawreader-data.C:56
 publish-rawreader-data.C:57
 publish-rawreader-data.C:58
 publish-rawreader-data.C:59
 publish-rawreader-data.C:60
 publish-rawreader-data.C:61
 publish-rawreader-data.C:62
 publish-rawreader-data.C:63
 publish-rawreader-data.C:64
 publish-rawreader-data.C:65
 publish-rawreader-data.C:66
 publish-rawreader-data.C:67
 publish-rawreader-data.C:68
 publish-rawreader-data.C:69
 publish-rawreader-data.C:70
 publish-rawreader-data.C:71
 publish-rawreader-data.C:72
 publish-rawreader-data.C:73
 publish-rawreader-data.C:74
 publish-rawreader-data.C:75
 publish-rawreader-data.C:76
 publish-rawreader-data.C:77
 publish-rawreader-data.C:78
 publish-rawreader-data.C:79
 publish-rawreader-data.C:80
 publish-rawreader-data.C:81
 publish-rawreader-data.C:82
 publish-rawreader-data.C:83
 publish-rawreader-data.C:84
 publish-rawreader-data.C:85
 publish-rawreader-data.C:86
 publish-rawreader-data.C:87
 publish-rawreader-data.C:88
 publish-rawreader-data.C:89
 publish-rawreader-data.C:90
 publish-rawreader-data.C:91
 publish-rawreader-data.C:92
 publish-rawreader-data.C:93