]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG0/PWG0Helper.C
Updated the DrawVertexRecoSyst function a bit.
[u/mrichter/AliRoot.git] / PWG0 / PWG0Helper.C
CommitLineData
0bd1f8a0 1/* $Id$ */
2
3// Helper macros can be found in this file
4// A set of them can be used to connect to proof and execute selectors.
5
6TVirtualProof* connectProof(const char* proofServer)
7{
8 TVirtualProof* proof = TProof::Open(proofServer);
9
10 if (!proof)
11 {
12 printf("ERROR: PROOF connection not established.\n");
13 return 0;
14 }
15
0bd1f8a0 16 // enable the new packetizer
17 //proof->AddInput(new TNamed("PROOF_Packetizer", "TPacketizerProgressive"));
18
19 proof->ClearInput();
20
21 return proof;
22}
23
24Bool_t prepareQuery(TString libraries, TString packages, Bool_t useAliRoot)
25{
26 // if not proof load libraries
27 if (!gProof)
28 {
29 TObjArray* librariesList = libraries.Tokenize(";");
30 for (Int_t i=0; i<librariesList->GetEntries(); ++i)
31 {
32 TObjString* str = dynamic_cast<TObjString*> (librariesList->At(i));
33 if (!str)
34 continue;
35
36 printf("Loading %s...", str->String().Data());
37 Int_t result = CheckLoadLibrary(str->String());
38 if (result < 0)
39 {
40 printf("failed\n");
41 //return kFALSE;
42 }
43 else
44 printf("succeeded\n");
45 }
46 }
47 else
48 {
49 if (useAliRoot)
50 ProofEnableAliRoot();
51
52 TObjArray* packagesList = packages.Tokenize(";");
53 for (Int_t i=0; i<packagesList->GetEntries(); ++i)
54 {
55 TObjString* str = dynamic_cast<TObjString*> (packagesList->At(i));
56 if (!str)
57 continue;
58
59 if (!EnablePackageLocal(str->String()))
60 {
61 printf("Loading of package %s locally failed\n", str->String().Data());
62 return kFALSE;
63 }
64
65 if (gProof->EnablePackage(str->String()))
66 {
67 printf("Loading of package %s failed\n", str->String().Data());
68 return kFALSE;
69 }
70 }
71 }
72
73 return kTRUE;
74}
75
76Int_t executeQuery(TChain* chain, TList* inputList, TString selectorName, const char* option = "")
77{
78 if (!gProof)
79 chain->GetUserInfo()->AddAll(inputList);
80 else
81 {
82 for (Int_t i=0; i<inputList->GetEntries(); ++i)
83 gProof->AddInput(inputList->At(i));
84 }
85
86 TStopwatch timer;
87 timer.Start();
88
89 Long64_t result = -1;
90
91 if (gProof)
92 result = chain->MakeTDSet()->Process(selectorName, option);
93 else
94 result = chain->Process(selectorName, option);
95
96 if (result < 0)
97 printf("ERROR: Executing process failed with %d.\n", result);
98
99 timer.Stop();
100 timer.Print();
101
102 return result;
103}
104
105void ProofEnableAliRoot()
106{
107 // enables a locally deployed AliRoot in a PROOF cluster
108
109 /* executes the following commands on each node:
110 gSystem->Setenv("ALICE_ROOT", "/home/alicecaf/ALICE/aliroot-head")
111 gSystem->AddIncludePath("/home/alicecaf/ALICE/aliroot-head/include");
112 gSystem->SetDynamicPath(Form("%s:%s", gSystem->GetDynamicPath(), "/home/alicecaf/ALICE/aliroot-head/lib/tgt_linux"))
113 gSystem->Load("libMinuit");
114 gROOT->Macro("$ALICE_ROOT/macros/loadlibs.C");
115 */
116
117 const char* location = "/home/alicecaf/ALICE/aliroot-head";
118
119 gProof->Exec(Form("gSystem->Setenv(\"ALICE_ROOT\", \"%s\")", location), kTRUE);
120 gProof->AddIncludePath(Form("%s/include", location));
121 gProof->AddDynamicPath(Form("%s/lib/tgt_linux", location));
122
123 // load all libraries
124 gProof->Exec("gSystem->Load(\"libMinuit\")");
125 gProof->Exec("gROOT->Macro(\"$ALICE_ROOT/macros/loadlibs.C\")");
126}
127
128Bool_t EnablePackageLocal(const char* package)
129{
130 printf("Enabling package %s locally...\n", package);
131
4c351225 132 TString currentDir(gSystem->pwd());
0bd1f8a0 133 if (!gSystem->cd(package))
134 return kFALSE;
135
136 gROOT->ProcessLine(".x PROOF-INF/SETUP.C");
4c351225 137 gSystem->cd(currentDir);
0bd1f8a0 138
139 return kTRUE;
140}
141
142Int_t CheckLoadLibrary(const char* library)
143{
144 // checks if a library is already loaded, if not loads the library
145
146 if (strlen(gSystem->GetLibraries(Form("%s.so", library), "", kFALSE)) > 0)
147 return 1;
148
149 return gSystem->Load(library);
150}
151
152void redeployPackages(const char* proofServer, Bool_t localAliRoot = kTRUE)
153{
154 // deploys PWG0base and PWG0dep (the latter only when localAliRoot is true) that are expected in $ALICE_ROOT
155 // when localAliRoot is false ESD.par is also deployed
156
157 TProof::Reset(proofServer);
158 TVirtualProof* proof = TProof::Open(proofServer);
159 proof->ClearPackages();
160
161 if (localAliRoot)
162 ProofEnableAliRoot();
163 else
164 {
165 proof->UploadPackage("$ALICE_ROOT/ESD.par");
166 proof->EnablePackage("ESD");
167 }
168
169 proof->UploadPackage("$ALICE_ROOT/PWG0base.par");
170 proof->EnablePackage("PWG0base");
171
172 proof->UploadPackage("$ALICE_ROOT/PWG0dep.par");
173 proof->EnablePackage("PWG0dep");
174}