3 * @author Christian Holm Christensen <cholm@nbi.dk>
4 * @date Tue Oct 16 17:49:49 2012
6 * @brief Script to run a train
8 * @ingroup pwglf_forward_trains
13 * @param name Name of script
14 * @param verbose Whether to be verbose
15 * @param force Whether to force re-compilation
16 * @param debug Whether to enable debug symbols
18 * @return true on success
20 * @ingroup pwglf_forward_trains
23 BuildScript(const char* name, Bool_t verbose, Bool_t force, Bool_t debug)
25 const char opt[] = { (force ? '+' : debug ? 'g' : '\0'),
26 (force && debug ? 'g' : '\0'), '\0' };
27 if (verbose) Printf("Building %s ...",name);
29 Int_t ret = gROOT->LoadMacro(Form("%s.C+%s", name, opt), &error);
30 if (ret < 0 || error) {
31 Error("BuildScript", "Failed to build %s: %d", error);
39 * Build all helper classes
41 * @param verbose Whether to be verbose
42 * @param force Whether to force re-builds
43 * @param debug Whether to enable debug symbols
44 * @param all Whether to build all helpers
46 * @return true on success
48 * @ingroup pwglf_forward_trains
51 BuildHelpers(Bool_t verbose, Bool_t force, Bool_t debug,
54 gSystem->AddIncludePath("-I$ALICE_ROOT/include");
55 gSystem->AddIncludePath("-I$ALICE_ROOT/PWGLF/FORWARD/trains/");
56 gROOT->SetMacroPath(Form("%s:$ALICE_ROOT/PWGLF/FORWARD/trains",
57 gROOT->GetMacroPath()));
58 gSystem->Load("libANALYSIS");
59 gSystem->Load("libANALYSISalice");
60 const char* scripts[] = { "AvailableSoftware",
67 (all ? "LocalHelper" : 0),
75 const char** ptr = scripts;
77 if (!BuildScript(*ptr, verbose, force, debug)) return false;
87 * @ingroup pwglf_forward_trains
91 std::cout << "Usage: .x RunTrain.C(NAME,CLASS,OPTIONS)\n\n"
92 << " NAME Name of train (free form)\n"
93 << " CLASS Name of class implementing TrainSetup\n"
94 << " OPTIONS Comma separated list of options\n"
99 * Function to run a train.
101 * @param name Name of the train.
102 * @param cls class name of train setup
103 * @param uri Exection URI
106 * @return true on success
108 * @ingroup pwglf_forward_trains
110 Bool_t RunTrain(const TString& name, const TString& cls,
111 const TUrl& uri, const TString& opts)
114 if (name.IsNull() || name.EqualTo("help", TString::kIgnoreCase) ||
115 cls.IsNull() || cls.EqualTo("help", TString::kIgnoreCase) ||
121 Bool_t verb = opts.Contains("verbose");
123 if (!BuildHelpers(verb, false, true)) return false;
126 if (!opts.EndsWith(",")) opts.Append(",");
128 opts.Append(uri.GetUrl());
129 TObjArray* optList = opts.Tokenize(",");
130 return TrainSetup::Main(name, cls, optList, false);