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