adding missing argument in printf statement
[u/mrichter/AliRoot.git] / HLT / exa / recraw-local.C
1 // $Id$
2 /**
3  * @file recraw-local.C
4  * @brief Run reconstruction of raw data locally
5  *
6  * <pre>
7  * Usage: aliroot -b -q -l \
8  *     recraw-local.C'("file", "cdb", minEvent, maxEvent, modules)'
9  *
10  * Examples:
11  *     recraw-local.C'("alien:///alice/data/2009/.../....root")' 
12  *     recraw-local.C'("raw://run12345")'
13  *     recraw-local.C'("raw://run12345", minEvent, MaxEvent)'
14  *     recraw-local.C'("raw.root", "local://$PWD", minEvent, MaxEvent)'
15  *
16  * Defaults
17  *     cdb="raw://"  -> take OCDB from GRID
18  *     minEvent=-1   -> no lower event selection
19  *     maxEvent=-1   -> no upper event selection
20  *     modules="ALL" -> all modules
21  *     hltOption="loglevel=0x7c" -> logging level info and above
22  *
23  * </pre>
24  *
25  * The input file can be a file on the grid, indicated by the tag
26  * 'alien://' indicates. By default also the OCDB is set to the GRID.
27  * If either the file or the OCDB is taken from the GRID, the macros
28  * connects to the Grid in the beginning.
29  *
30  * Input files can be specified via te run number when using the tag
31  * 'raw://' followed by the string 'run12345' where the number needs
32  * to be adjusted.
33  *
34  * As for the OCDB it is always a good idea to use the OCDB from the
35  * Grid as this will contain all the necessary objects and the latest
36  * calibration. The special URI 'raw://' is most advisable as it selects
37  * the storage automatically from the run number. Other options are e.g.
38  * - "alien://folder=/alice/data/2010/OCDB"
39  * - "local://$ALICE_ROOT/OCDB"
40  *
41  * Re-running the HLT reconstruction
42  * By specifying the hlt options, the HLT chain can be re-run instead
43  * of just extracting the online result. E.g. the following options
44  * specify to ignore the HLTOUT payload and run the two chains defined
45  * in the agents. The translation of the online configuration into
46  * an HLT offline chain is under development.
47  * <pre>
48  *   ignore-hltout chains=GLOBAL-esd-converter,TPC-clusters
49  * <pre>
50  *
51  * Note: You need a valid GRID token, use 'alien-token-init' of your
52  * alien installation.
53  *
54  * @author Matthias.Richter@ift.uib.no
55  * @ingroup alihlt_qa
56  */
57 void recraw_local(const char *filename,
58                   const char *cdbURI,
59                   int minEvent=-1,
60                   int maxEvent=-1,
61                   const char *modules="ALL",
62                   const char *hltOptions="loglevel=0x7c")
63 {
64   // connect to the GRID if we use a file or OCDB from the GRID
65   TString struri=cdbURI;
66   TString strfile=filename;
67   if (struri.BeginsWith("raw://") ||
68       strfile.Contains("://") && !strfile.Contains("local://")) {
69     TGrid::Connect("alien");
70   }
71
72   // Set the CDB storage location
73   AliCDBManager * man = AliCDBManager::Instance();
74   man->SetDefaultStorage(cdbURI);
75
76   // Reconstruction settings
77   AliReconstruction rec;
78
79   if (minEvent>=0 || maxEvent>minEvent) {
80     if (minEvent<0) minEvent=0;
81     if (maxEvent<minEvent) maxEvent=minEvent;
82     rec.SetEventRange(minEvent,maxEvent);
83   }
84
85   TString strModules=modules;
86   if (modules)
87     rec.SetRunReconstruction(modules);
88   else
89     rec.SetRunReconstruction("ALL");
90
91   // QA options
92   TString qaOptions="HLT TPC";
93   if (!strModules.Contains("TPC")) qaOptions.ReplaceAll("TPC", "");
94   qaOptions+=":ALL";
95   rec.SetRunQA(qaOptions) ;
96   //rec.SetQARefDefaultStorage("local://$ALICE_ROOT/QAref") ;
97
98   // AliReconstruction settings
99   rec.SetWriteESDfriend(kTRUE);
100   rec.SetRunVertexFinder(strModules.Contains("ITS"));
101   rec.SetInput(filename);
102   rec.SetOption("HLT", hltOptions);
103
104   rec.SetRunPlaneEff(kFALSE);
105
106   // switch off cleanESD
107   rec.SetCleanESD(kFALSE);
108
109   AliLog::Flush();
110   rec.Run();
111
112 }
113
114 void recraw_local(const char *filename,
115                   int minEvent=-1,
116                   int maxEvent=-1,
117                   const char *modules="ALL",
118                   const char *hltOptions="loglevel=0x7f")
119 {
120   recraw_local(filename, "raw://", minEvent, maxEvent, modules, hltOptions);
121 }
122
123 void recraw_local()
124 {
125   cout << "recraw-local: Run AliRoot reconstruction locally" << endl;
126   cout << " Usage: aliroot -b -q -l \\" << endl;
127   cout << "     recraw-local.C'(\"file\", \"cdb\", minEvent, maxEvent, modules, hltOptions)'" << endl;
128   cout << "" << endl;
129   cout << " Examples:" << endl;
130   cout << "     recraw-local.C'(\"alien:///alice/data/2009/.../....root\")' " << endl;
131   cout << "     recraw-local.C'(\"raw://run12345\")'" << endl;
132   cout << "     recraw-local.C'(\"raw://run12345\", minEvent, MaxEvent)'" << endl;
133   cout << "     recraw-local.C'(\"raw.root\", \"local://$PWD\", minEvent, MaxEvent)'" << endl;
134   cout << "" << endl;
135   cout << " Defaults" << endl;
136   cout << "     cdb=\"raw://\"  -> take OCDB from GRID" << endl;
137   cout << "     minEvent=-1   -> no lower event selection" << endl;
138   cout << "     maxEvent=-1   -> no upper event selection" << endl;
139   cout << "     modules=\"ALL\" -> all modules" << endl;
140   cout << "     hltOption=\"loglevel=0x7c\" -> logging level info and above" << endl;
141 }