// $Id$
/**
* @file print-RAW-HLTdecision.C
* @brief Print HLT decisions per event of RAW data
* The uses the RawReader interface for data access and can be used
* with different types of data as long as a RawReader is implemented.
*
* <pre>
* Usage: aliroot -b -q print-RAW-HLTdecision.C'(input, minEvent, maxEvent)'
*
* For help: aliroot -b -q print-RAW-HLTdecision.C
* </pre>
*
* The input file can be a file on Grid like e.g.
* "alien:///alice/data/2009/LHC09d/000104321/raw/09000104321018.30.root"
* In that case you need a valid token in order to connect to the Grid.
* Use 'alien-token-init' from your alien installation.
*
* @author Matthias.Richter@ift.uib.no
* @ingroup alihlt_programs
*/
void print_RAW_HLTdecision(const char* rawFileName,
int minEvent=0, int maxEvent=-1)
{
AliHLTLogging log;
log.SetGlobalLoggingLevel(0x7c);
TString strfile=rawFileName;
if (strfile.Contains("://") && !strfile.Contains("local://")) {
TGrid::Connect("alien");
}
AliRawReader* rawReader=NULL;
if (rawFileName && rawFileName[0]!=0) rawReader=AliRawReader::Create(rawFileName);
if (!rawFileName || rawFileName[0]==0 || !rawReader) {
if (rawFileName && rawFileName[0]!=0)
cerr << "can not open raw reader " << rawFileName << endl;
else
cerr << "print-RAW-HLTdecision.C Print HLT decisions per event of RAW data" << endl;
cerr << "===============================================================" << endl;
cerr << "usage: aliroot -b -q -l print-RAW-HLTdecision.C'(rawFileName" << endl;
cerr << " minEvent, maxEvent)'" << endl << endl;
cerr << " Parameter:" << endl;
cerr << " rawFileName e.g \"raw.root\", \"./\"" << endl;
cerr << " minEvent first event (optional)" << endl;
cerr << " maxEvent last event (optional)" << endl;
cerr << "===============================================================" << endl;
return;
}
rawReader->RewindEvents();
int event=0;
if (!rawReader->NextEvent()) {
cout << "no events found in " << rawFileName << endl;
return;
}
AliHLTOUT* pHLTOUT=AliHLTOUT::New(rawReader);
if (!pHLTOUT) {
cerr << "can not create HLTOUT instance" << endl;
return;
}
do {
if (minEvent>=0 && event<minEvent) continue;
cout << "===================== event " << event << " ==========================" << endl;
if (pHLTOUT->Init()<0) {
cerr << "failed to initialize HLTOUT for event " << event << endl;
break;
}
bool found=false;
// in the original implementation, the GlobalTriggerDecision has been
// sent with data type kAliHLTDataTypeTObject, thats why we check for
// both
if (pHLTOUT->SelectFirstDataBlock(kAliHLTDataTypeGlobalTrigger)>=0 ||
pHLTOUT->SelectFirstDataBlock(kAliHLTDataTypeTObject)>=0) {
do {
TObject* decision = pHLTOUT->GetDataObject();
if (decision) {
if (decision->IsA() == AliHLTGlobalTriggerDecision::Class()) {
cout << "HLT Global Trigger: " << decision->GetOption() << " " << decision->GetTitle() << endl;
decision->Print();
found=true;
}
pHLTOUT->ReleaseDataObject(decision);
}
} while (!found && pHLTOUT->SelectNextDataBlock());
}
if (!found) {
cout << " no HLT decision found" << endl;
}
pHLTOUT->Reset();
event++;
} while (rawReader->NextEvent() && (maxEvent<0 || event<maxEvent));
}
void print_RAW_HLTdecision()
{
// print usage
print_RAW_HLTdecision(NULL);
}
print-RAW-HLTdecision.C:1 print-RAW-HLTdecision.C:2 print-RAW-HLTdecision.C:3 print-RAW-HLTdecision.C:4 print-RAW-HLTdecision.C:5 print-RAW-HLTdecision.C:6 print-RAW-HLTdecision.C:7 print-RAW-HLTdecision.C:8 print-RAW-HLTdecision.C:9 print-RAW-HLTdecision.C:10 print-RAW-HLTdecision.C:11 print-RAW-HLTdecision.C:12 print-RAW-HLTdecision.C:13 print-RAW-HLTdecision.C:14 print-RAW-HLTdecision.C:15 print-RAW-HLTdecision.C:16 print-RAW-HLTdecision.C:17 print-RAW-HLTdecision.C:18 print-RAW-HLTdecision.C:19 print-RAW-HLTdecision.C:20 print-RAW-HLTdecision.C:21 print-RAW-HLTdecision.C:22 print-RAW-HLTdecision.C:23 print-RAW-HLTdecision.C:24 print-RAW-HLTdecision.C:25 print-RAW-HLTdecision.C:26 print-RAW-HLTdecision.C:27 print-RAW-HLTdecision.C:28 print-RAW-HLTdecision.C:29 print-RAW-HLTdecision.C:30 print-RAW-HLTdecision.C:31 print-RAW-HLTdecision.C:32 print-RAW-HLTdecision.C:33 print-RAW-HLTdecision.C:34 print-RAW-HLTdecision.C:35 print-RAW-HLTdecision.C:36 print-RAW-HLTdecision.C:37 print-RAW-HLTdecision.C:38 print-RAW-HLTdecision.C:39 print-RAW-HLTdecision.C:40 print-RAW-HLTdecision.C:41 print-RAW-HLTdecision.C:42 print-RAW-HLTdecision.C:43 print-RAW-HLTdecision.C:44 print-RAW-HLTdecision.C:45 print-RAW-HLTdecision.C:46 print-RAW-HLTdecision.C:47 print-RAW-HLTdecision.C:48 print-RAW-HLTdecision.C:49 print-RAW-HLTdecision.C:50 print-RAW-HLTdecision.C:51 print-RAW-HLTdecision.C:52 print-RAW-HLTdecision.C:53 print-RAW-HLTdecision.C:54 print-RAW-HLTdecision.C:55 print-RAW-HLTdecision.C:56 print-RAW-HLTdecision.C:57 print-RAW-HLTdecision.C:58 print-RAW-HLTdecision.C:59 print-RAW-HLTdecision.C:60 print-RAW-HLTdecision.C:61 print-RAW-HLTdecision.C:62 print-RAW-HLTdecision.C:63 print-RAW-HLTdecision.C:64 print-RAW-HLTdecision.C:65 print-RAW-HLTdecision.C:66 print-RAW-HLTdecision.C:67 print-RAW-HLTdecision.C:68 print-RAW-HLTdecision.C:69 print-RAW-HLTdecision.C:70 print-RAW-HLTdecision.C:71 print-RAW-HLTdecision.C:72 print-RAW-HLTdecision.C:73 print-RAW-HLTdecision.C:74 print-RAW-HLTdecision.C:75 print-RAW-HLTdecision.C:76 print-RAW-HLTdecision.C:77 print-RAW-HLTdecision.C:78 print-RAW-HLTdecision.C:79 print-RAW-HLTdecision.C:80 print-RAW-HLTdecision.C:81 print-RAW-HLTdecision.C:82 print-RAW-HLTdecision.C:83 print-RAW-HLTdecision.C:84 print-RAW-HLTdecision.C:85 print-RAW-HLTdecision.C:86 print-RAW-HLTdecision.C:87 print-RAW-HLTdecision.C:88 print-RAW-HLTdecision.C:89 print-RAW-HLTdecision.C:90 print-RAW-HLTdecision.C:91 print-RAW-HLTdecision.C:92 print-RAW-HLTdecision.C:93 print-RAW-HLTdecision.C:94 print-RAW-HLTdecision.C:95 print-RAW-HLTdecision.C:96 print-RAW-HLTdecision.C:97 print-RAW-HLTdecision.C:98 print-RAW-HLTdecision.C:99 print-RAW-HLTdecision.C:100 print-RAW-HLTdecision.C:101 print-RAW-HLTdecision.C:102 print-RAW-HLTdecision.C:103 print-RAW-HLTdecision.C:104