]>
Commit | Line | Data |
---|---|---|
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 | 18 | int 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 | } |