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