3 * @file print-ESD-HLTdecision.C
4 * @brief Print HLT decisions per event of ESD
7 * Usage: aliroot -b -q print-ESD-HLTdecision.C
10 * The input file can be a file on Grid like e.g.
11 * "alien:///alice/data/2009/LHC09d/000104321/ESDs/pass5/09000104321018.30/AliESDs.root"
12 * In that case you need a valid token in order to connect to the Grid.
13 * Use 'alien-token-init' from your alien installation.
15 * @author Matthias.Richter@ift.uib.no
16 * @ingroup alihlt_programs
18 int print_ESD_HLTdecision(const char* esdFileName="AliESDs.root",
19 int minEvent=0, int maxEvent=-1)
22 TString strfile=esdFileName;
23 if (strfile.Contains("://") && !strfile.Contains("local://")) {
24 TGrid::Connect("alien");
28 if (esdFileName && esdFileName[0]!=0) esdFile=TFile::Open(esdFileName);
29 if (!esdFileName || esdFileName[0]==0 || esdFile->IsZombie()) {
30 if (esdFileName && esdFileName[0]!=0)
31 cerr << "can not open esd file " << esdFileName << endl;
33 cerr << "print-ESD-HLTdecision.C Print HLT decisions per event of ESD" << endl;
34 cerr << "===============================================================" << endl;
35 cerr << "usage: aliroot -b -q -l print-ESD-HLTdecision.C'(\"AliESDs.root\" " << endl;
36 cerr << " minEvent, maxEvent)'" << endl << endl;
37 cerr << " Parameter:" << endl;
38 cerr << " esdFileName default \"AliESDs.root\"" << endl;
39 cerr << " minEvent first event (optional)" << endl;
40 cerr << " maxEvent last event (optional)" << endl;
41 cerr << "===============================================================" << endl;
45 esdFile->GetObject("esdTree", pTree);
47 cerr << "can not find ESD tree" << endl;
51 AliESDEvent* esd=new AliESDEvent;
52 esd->CreateStdContent();
53 esd->ReadFromTree(pTree);
56 esdFile->GetObject("HLTesdTree", pHLTTree);
58 cerr << "can not find HLT ESD tree" << endl;
62 if (pTree->GetEntries() != pHLTTree->GetEntries()) {
63 cerr << "entries differ: ESD tree " << pTree->GetEntries() << " HLT ESD tree " << pHLTTree->GetEntries() << endl;
66 AliESDEvent* HLTesd=new AliESDEvent;
67 HLTesd->CreateStdContent();
68 HLTesd->ReadFromTree(pHLTTree);
70 for (int event=minEvent;
71 event<pTree->GetEntries() && (maxEvent<minEvent || event<=maxEvent);
73 pTree->GetEvent(event);
74 pHLTTree->GetEvent(event);
75 cout << "===================== event " << event << " ==========================" << endl;
76 cout << "\t ESD: # in file: " << esd->GetEventNumberInFile() << " time stamp (UCT): " << esd->GetTimeStamp() << endl;
77 cout << "\t orbit no (offline/hlt): " << esd->GetOrbitNumber() << "/" << HLTesd->GetOrbitNumber() << endl;
78 cout << "\t bunch crossing (offline/hlt): " << esd->GetBunchCrossNumber() << "/" << HLTesd->GetBunchCrossNumber() << endl;
79 cout << "\t tracks (offline/hlt):\t " << esd->GetNumberOfTracks() << "/"<< HLTesd->GetNumberOfTracks() << endl;
80 cout << "\t hltESD content:" << endl;
81 cout << "\t fired triggers:\t" << HLTesd->GetFiredTriggerClasses() << endl;
82 cout << "\t trigger mask:\t 0x" << hex << HLTesd->GetTriggerMask() << dec << endl;
83 cout << "\t time stamp (UCT):\t " << HLTesd->GetTimeStamp() << endl;
84 TObject* decision=HLTesd->GetHLTTriggerDecision();
85 if (decision) decision->Print();
86 else cout << " no HLT decision found" << endl;