// $Id$
/**
* @file print-ESD-HLTdecision.C
* @brief Print HLT decisions per event of ESD
*
* <pre>
* Usage: aliroot -b -q print-ESD-HLTdecision.C
* </pre>
*
* The input file can be a file on Grid like e.g.
* "alien:///alice/data/2009/LHC09d/000104321/ESDs/pass5/09000104321018.30/AliESDs.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
*/
int print_ESD_HLTdecision(const char* esdFileName="AliESDs.root",
int minEvent=0, int maxEvent=-1)
{
TString strfile=esdFileName;
if (strfile.Contains("://") && !strfile.Contains("local://")) {
TGrid::Connect("alien");
}
TFile* esdFile=NULL;
if (esdFileName && esdFileName[0]!=0) esdFile=TFile::Open(esdFileName);
if (!esdFileName || esdFileName[0]==0 || !esdFile || esdFile->IsZombie()) {
if (esdFileName && esdFileName[0]!=0)
cerr << "can not open esd file " << esdFileName << endl;
else
cerr << "print-ESD-HLTdecision.C Print HLT decisions per event of ESD" << endl;
cerr << "===============================================================" << endl;
cerr << "usage: aliroot -b -q -l print-ESD-HLTdecision.C'(\"AliESDs.root\" " << endl;
cerr << " minEvent, maxEvent)'" << endl << endl;
cerr << " Parameter:" << endl;
cerr << " esdFileName default \"AliESDs.root\"" << endl;
cerr << " minEvent first event (optional)" << endl;
cerr << " maxEvent last event (optional)" << endl << endl;
cerr << " The input file can be a file on Grid like e.g." << endl;
cerr << " \"alien:///alice/data/2009/LHC09d/000104321/ESDs/pass5/09000104321018.30/AliESDs.root\"" << endl;
cerr << "===============================================================" << endl;
return -1;
}
TTree* pTree=NULL;
esdFile->GetObject("esdTree", pTree);
if (!pTree) {
cerr << "can not find ESD tree" << endl;
return -1;
}
AliESDEvent* esd=new AliESDEvent;
esd->CreateStdContent();
esd->ReadFromTree(pTree);
TTree* pHLTTree=NULL;
esdFile->GetObject("HLTesdTree", pHLTTree);
if (!pHLTTree) {
cerr << "can not find HLT ESD tree" << endl;
return -1;
}
if (pTree->GetEntries() != pHLTTree->GetEntries()) {
cerr << "entries differ: ESD tree " << pTree->GetEntries() << " HLT ESD tree " << pHLTTree->GetEntries() << endl;
}
AliESDEvent* HLTesd=new AliESDEvent;
HLTesd->CreateStdContent();
HLTesd->ReadFromTree(pHLTTree);
for (int event=minEvent;
event<pTree->GetEntries() && (maxEvent<minEvent || event<=maxEvent);
event++) {
pTree->GetEvent(event);
pHLTTree->GetEvent(event);
cout << "===================== event " << event << " ==========================" << endl;
cout << "\t ESD: # in file: " << esd->GetEventNumberInFile() << " time stamp (UCT): " << esd->GetTimeStamp() << endl;
cout << "\t orbit no (offline/hlt): " << esd->GetOrbitNumber() << "/" << HLTesd->GetOrbitNumber() << endl;
cout << "\t bunch crossing (offline/hlt): " << esd->GetBunchCrossNumber() << "/" << HLTesd->GetBunchCrossNumber() << endl;
cout << "\t tracks (offline/hlt):\t " << esd->GetNumberOfTracks() << "/"<< HLTesd->GetNumberOfTracks() << endl;
cout << "\t hltESD content:" << endl;
cout << "\t fired triggers:\t" << HLTesd->GetFiredTriggerClasses() << endl;
cout << "\t trigger mask:\t 0x" << hex << HLTesd->GetTriggerMask() << dec << endl;
cout << "\t time stamp (UCT):\t " << HLTesd->GetTimeStamp() << endl;
TObject* decision=HLTesd->GetHLTTriggerDecision();
if (decision) decision->Print();
else cout << " no HLT decision found" << endl;
}
return 0;
}
print-ESD-HLTdecision.C:1 print-ESD-HLTdecision.C:2 print-ESD-HLTdecision.C:3 print-ESD-HLTdecision.C:4 print-ESD-HLTdecision.C:5 print-ESD-HLTdecision.C:6 print-ESD-HLTdecision.C:7 print-ESD-HLTdecision.C:8 print-ESD-HLTdecision.C:9 print-ESD-HLTdecision.C:10 print-ESD-HLTdecision.C:11 print-ESD-HLTdecision.C:12 print-ESD-HLTdecision.C:13 print-ESD-HLTdecision.C:14 print-ESD-HLTdecision.C:15 print-ESD-HLTdecision.C:16 print-ESD-HLTdecision.C:17 print-ESD-HLTdecision.C:18 print-ESD-HLTdecision.C:19 print-ESD-HLTdecision.C:20 print-ESD-HLTdecision.C:21 print-ESD-HLTdecision.C:22 print-ESD-HLTdecision.C:23 print-ESD-HLTdecision.C:24 print-ESD-HLTdecision.C:25 print-ESD-HLTdecision.C:26 print-ESD-HLTdecision.C:27 print-ESD-HLTdecision.C:28 print-ESD-HLTdecision.C:29 print-ESD-HLTdecision.C:30 print-ESD-HLTdecision.C:31 print-ESD-HLTdecision.C:32 print-ESD-HLTdecision.C:33 print-ESD-HLTdecision.C:34 print-ESD-HLTdecision.C:35 print-ESD-HLTdecision.C:36 print-ESD-HLTdecision.C:37 print-ESD-HLTdecision.C:38 print-ESD-HLTdecision.C:39 print-ESD-HLTdecision.C:40 print-ESD-HLTdecision.C:41 print-ESD-HLTdecision.C:42 print-ESD-HLTdecision.C:43 print-ESD-HLTdecision.C:44 print-ESD-HLTdecision.C:45 print-ESD-HLTdecision.C:46 print-ESD-HLTdecision.C:47 print-ESD-HLTdecision.C:48 print-ESD-HLTdecision.C:49 print-ESD-HLTdecision.C:50 print-ESD-HLTdecision.C:51 print-ESD-HLTdecision.C:52 print-ESD-HLTdecision.C:53 print-ESD-HLTdecision.C:54 print-ESD-HLTdecision.C:55 print-ESD-HLTdecision.C:56 print-ESD-HLTdecision.C:57 print-ESD-HLTdecision.C:58 print-ESD-HLTdecision.C:59 print-ESD-HLTdecision.C:60 print-ESD-HLTdecision.C:61 print-ESD-HLTdecision.C:62 print-ESD-HLTdecision.C:63 print-ESD-HLTdecision.C:64 print-ESD-HLTdecision.C:65 print-ESD-HLTdecision.C:66 print-ESD-HLTdecision.C:67 print-ESD-HLTdecision.C:68 print-ESD-HLTdecision.C:69 print-ESD-HLTdecision.C:70 print-ESD-HLTdecision.C:71 print-ESD-HLTdecision.C:72 print-ESD-HLTdecision.C:73 print-ESD-HLTdecision.C:74 print-ESD-HLTdecision.C:75 print-ESD-HLTdecision.C:76 print-ESD-HLTdecision.C:77 print-ESD-HLTdecision.C:78 print-ESD-HLTdecision.C:79 print-ESD-HLTdecision.C:80 print-ESD-HLTdecision.C:81 print-ESD-HLTdecision.C:82 print-ESD-HLTdecision.C:83 print-ESD-HLTdecision.C:84 print-ESD-HLTdecision.C:85 print-ESD-HLTdecision.C:86 print-ESD-HLTdecision.C:87 print-ESD-HLTdecision.C:88 print-ESD-HLTdecision.C:89 print-ESD-HLTdecision.C:90 print-ESD-HLTdecision.C:91 print-ESD-HLTdecision.C:92