// $Id$
/**
* @file extract-hltout-payload.C
* @brief Extraction of data blocks from HLTOUT
*
* <pre>
* Usage: aliroot -b -q extract-hltout-payload.C'("raw.root", "selection", nofEvents)' \
* | tee extract-hltout-payload.log
*
* Defaults
* selection="" -> no data type selection
* nofEvents=-1 -> all events
* </pre>
*
* The raw input file can be accessed directly from the GRID, e.g
* "alien:///alice/data/2010/LHC10b/000115887/raw/10000115887021.20.root"
*
* The macro stores all data blocks from the HLTOUT payload into separated
* folders for each event. The file names are derived from data type and
* specification of the block. Data is read from a raw reader. An input
* file can be specified as the first argument, default is "./" and reads
* ddl files through AliRawReaderFile.
*
* A selection criterion can be specified as second argument, the format
* of the selection string follows the arguments of the
* AliHLTOUTPublisherComponent except from the quote which need to be
* replaced by brackets due to CINT, e.g.
*
* <pre>
* aliroot -b -q extract-hltout-payload.C'("raw.root", "-datatype {DDL_RAW } ISDD")'
* aliroot -b -q extract-hltout-payload.C'("raw.root", "-origin {TPC }")'
* </pre>
*
* @author Matthias.Richter@ift.uib.no
* @ingroup alihlt_programs
*/
void extract_hltout_payload(const char* input, const char* selection="", int maxEvent=-1)
{
/////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////
//
// setup GRID if input is not a local file
TString strfile=input;
if (strfile.Contains("://") && !strfile.Contains("local://")) {
TGrid::Connect("alien");
}
/////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////
//
// 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("%s", selection);
arg.ReplaceAll("{", "'");
arg.ReplaceAll("}", "'");
AliHLTConfiguration publisher("hltout-publisher", "AliHLTOUTPublisher" , NULL, arg.Data());
// the writer configuration
arg.Form("-subdir=event_%%d -blocknofmt= -datafile hltout.dat -specfmt");
AliHLTConfiguration collector("sink1", "FileWriter" , "hltout-publisher", arg.Data());
/////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////
//
// setup of the reconstruction
AliHLTReconstructor hltRec;
hltRec.Init("chains=sink1 ignore-ctp");
AliRawReader* rawreader=AliRawReader::Create(input);
if (!rawreader) {
return;
}
rawreader->RewindEvents();
int count=0;
if (!rawreader->NextEvent()) {
cout << "no events found in " << input << endl;
return;
}
do {
cout << "processing event " << count++ << endl;
hltRec.Reconstruct(rawreader, NULL);
} while (rawreader->NextEvent() && (maxEvent<0 || count<maxEvent));
}
void extract_hltout_payload()
{
cerr << "==============================================================================" << endl;
cerr << "usage: aliroot -b -q -l extract-hltout-payload.C'(input, selection, maxEvent)'" << endl << endl;
cerr << "please provide input, e.g. \"raw.root\", or \"./\"" << endl;
cerr << "optional data type selection, e.g \"-datatype {DDL_RAW } ISDD\", " << endl;
cerr << " \"-origin {TPC }\", \"-typeid {DDL_RAW }\"" << endl;
cerr << "optional max event" << endl;
cerr << "==============================================================================" << endl;
}
extract-hltout-payload.C:1 extract-hltout-payload.C:2 extract-hltout-payload.C:3 extract-hltout-payload.C:4 extract-hltout-payload.C:5 extract-hltout-payload.C:6 extract-hltout-payload.C:7 extract-hltout-payload.C:8 extract-hltout-payload.C:9 extract-hltout-payload.C:10 extract-hltout-payload.C:11 extract-hltout-payload.C:12 extract-hltout-payload.C:13 extract-hltout-payload.C:14 extract-hltout-payload.C:15 extract-hltout-payload.C:16 extract-hltout-payload.C:17 extract-hltout-payload.C:18 extract-hltout-payload.C:19 extract-hltout-payload.C:20 extract-hltout-payload.C:21 extract-hltout-payload.C:22 extract-hltout-payload.C:23 extract-hltout-payload.C:24 extract-hltout-payload.C:25 extract-hltout-payload.C:26 extract-hltout-payload.C:27 extract-hltout-payload.C:28 extract-hltout-payload.C:29 extract-hltout-payload.C:30 extract-hltout-payload.C:31 extract-hltout-payload.C:32 extract-hltout-payload.C:33 extract-hltout-payload.C:34 extract-hltout-payload.C:35 extract-hltout-payload.C:36 extract-hltout-payload.C:37 extract-hltout-payload.C:38 extract-hltout-payload.C:39 extract-hltout-payload.C:40 extract-hltout-payload.C:41 extract-hltout-payload.C:42 extract-hltout-payload.C:43 extract-hltout-payload.C:44 extract-hltout-payload.C:45 extract-hltout-payload.C:46 extract-hltout-payload.C:47 extract-hltout-payload.C:48 extract-hltout-payload.C:49 extract-hltout-payload.C:50 extract-hltout-payload.C:51 extract-hltout-payload.C:52 extract-hltout-payload.C:53 extract-hltout-payload.C:54 extract-hltout-payload.C:55 extract-hltout-payload.C:56 extract-hltout-payload.C:57 extract-hltout-payload.C:58 extract-hltout-payload.C:59 extract-hltout-payload.C:60 extract-hltout-payload.C:61 extract-hltout-payload.C:62 extract-hltout-payload.C:63 extract-hltout-payload.C:64 extract-hltout-payload.C:65 extract-hltout-payload.C:66 extract-hltout-payload.C:67 extract-hltout-payload.C:68 extract-hltout-payload.C:69 extract-hltout-payload.C:70 extract-hltout-payload.C:71 extract-hltout-payload.C:72 extract-hltout-payload.C:73 extract-hltout-payload.C:74 extract-hltout-payload.C:75 extract-hltout-payload.C:76 extract-hltout-payload.C:77 extract-hltout-payload.C:78 extract-hltout-payload.C:79 extract-hltout-payload.C:80 extract-hltout-payload.C:81 extract-hltout-payload.C:82 extract-hltout-payload.C:83 extract-hltout-payload.C:84 extract-hltout-payload.C:85 extract-hltout-payload.C:86 extract-hltout-payload.C:87 extract-hltout-payload.C:88 extract-hltout-payload.C:89 extract-hltout-payload.C:90 extract-hltout-payload.C:91 extract-hltout-payload.C:92 extract-hltout-payload.C:93 extract-hltout-payload.C:94 extract-hltout-payload.C:95 extract-hltout-payload.C:96 extract-hltout-payload.C:97 extract-hltout-payload.C:98 extract-hltout-payload.C:99 extract-hltout-payload.C:100 extract-hltout-payload.C:101 extract-hltout-payload.C:102 extract-hltout-payload.C:103 extract-hltout-payload.C:104 extract-hltout-payload.C:105 extract-hltout-payload.C:106 extract-hltout-payload.C:107 extract-hltout-payload.C:108