]>
Commit | Line | Data |
---|---|---|
0328db2d | 1 | // ... |
2 | ||
e47370f7 | 3 | enum libModes {mLocal,mLocalSource}; |
e47370f7 | 4 | |
0328db2d | 5 | const Int_t nFilesMax = 10; // number of files to be accessed to estimate spread |
6 | ||
7 | Bool_t showPlotForReferenceFlow = kTRUE; | |
8 | Bool_t showPlotForIntegratedFlowRP = kTRUE; | |
9 | Bool_t showPlotForIntegratedFlowPOI = kTRUE; | |
10 | Bool_t showErrorOnMergedResult = kTRUE; | |
11 | ||
12 | const Int_t nMethods = 13; | |
13 | TString method[nMethods] = {"MCEP","SP","2,GFC","2,QC","4,GFC","4,QC","6,GFC","6,QC","8,GFC","8,QC","FQD","LYZ1SUM","LYZ1PROD"}; | |
14 | Int_t methodMarkerStyle[nMethods] = {21,21,21,21,21,21,21,21,21,21,21,21,21}; | |
15 | Int_t methodMarkerColor[nMethods] = {kGray+1,kViolet-8,kBlue-9,kRed-7,kBlue-9,kRed-7,kBlue-9,kRed-7,kBlue-9,kRed-7,kOrange-8,kYellow-5,kYellow-2}; | |
16 | Int_t methodMeshColor[nMethods] = {kGray,kViolet-9,kBlue-10,kRed-10,kBlue-10,kRed-10,kBlue-10,kRed-10,kBlue-10,kRed-10,kOrange-9,kYellow-8,kYellow-6}; | |
17 | ||
18 | /* | |
19 | const Int_t nMethods = 4; | |
20 | TString method[nMethods] = {"2,QC","4,QC","6,QC","8,QC"}; | |
21 | Int_t methodMarkerStyle[nMethods] = {21,21,21,21}; | |
22 | Int_t methodMarkerColor[nMethods] = {kRed-7,kRed-7,kRed-7,kRed-7}; | |
23 | Int_t methodMeshColor[nMethods] = {kRed-10,kRed-10,kRed-10,kRed-10}; | |
24 | */ | |
25 | ||
9455e15e | 26 | void showSpread(TString type="", Int_t mode=mLocal) |
6a6afe42 | 27 | { |
940a5ed1 | 28 | // type: type of analysis can be ESD, AOD, MC, ESDMCkineESD, ESDMCkineMC |
0328db2d | 29 | // (if type="" output files are from MC simulation (default)) |
30 | // mode: if mode = mLocal: analyze data on your computer using aliroot | |
31 | // if mode = mLocalSource: analyze data on your computer using root + source files | |
95de4bf0 | 32 | |
0328db2d | 33 | // Cross-check if the user's settings make sense: |
34 | CrossCheckUserSettings(); | |
6a6afe42 | 35 | |
0328db2d | 36 | // Load needed libraries: |
37 | LoadLibrariesSS(mode); | |
38 | ||
39 | // Output file name: | |
40 | TString outputFileName = "AnalysisResults.root"; | |
e47370f7 | 41 | |
0328db2d | 42 | // Labels for reference flow, integrated flow of RPs and of POIs: |
43 | TString label[3] = {"","RP","POI"}; | |
44 | ||
45 | // Standard magic: | |
46 | TString *baseDirPath = new TString(gSystem->pwd()); | |
47 | TSystemDirectory *baseDir = new TSystemDirectory(".",baseDirPath->Data()); | |
48 | TList *listOfFilesInBaseDir = baseDir->GetListOfFiles(); | |
49 | TStopwatch timer; | |
50 | timer.Start(); | |
51 | // listOfFilesInBaseDir->Print(); | |
52 | Int_t nFiles = listOfFilesInBaseDir->GetEntries(); | |
53 | Int_t fileCounter = 0; | |
54 | Double_t result[nMethods][3][nFilesMax] = {{{0.}}}; // [3 = "", "RP" or "POI"] | |
55 | Double_t error[nMethods][3][nFilesMax] = {{{0.}}}; // [3 = "", "RP" or "POI"] | |
56 | Double_t resultMinMax[nMethods][3][2] = {{{0.}}}; // [3 = "", "RP" or "POI"], [2 = min value, max value] | |
57 | for(Int_t m=0;m<nMethods;m++) | |
6a6afe42 | 58 | { |
0328db2d | 59 | for(Int_t l=0;l<3;l++) |
6a6afe42 | 60 | { |
0328db2d | 61 | resultMinMax[m][l][0] = 44.; |
62 | resultMinMax[m][l][1] = -44.; | |
63 | } | |
64 | } | |
65 | Double_t styleHistMinMax[3][2] = {{0.}}; // [3 = "", "RP" or "POI"], [2 = min value, max value] | |
66 | for(Int_t l=0;l<3;l++) | |
9455e15e | 67 | { |
0328db2d | 68 | styleHistMinMax[l][0] = 44.; |
69 | styleHistMinMax[l][1] = -44.; | |
70 | } | |
71 | cout<<endl; | |
72 | for(Int_t iFile=0;iFile<nFiles;iFile++) | |
9455e15e | 73 | { |
0328db2d | 74 | TSystemFile *currentFile = (TSystemFile*)listOfFilesInBaseDir->At(iFile); |
75 | // Consider only subdirectories: | |
76 | if(!currentFile || | |
77 | !currentFile->IsDirectory() || | |
78 | strcmp(currentFile->GetName(), ".") == 0 || | |
79 | strcmp(currentFile->GetName(), "..") == 0) continue; | |
80 | // Accessing the output file "AnalysisResults.root" in current subdirectory: | |
81 | TString currentSubDirName = baseDirPath->Data(); | |
82 | (currentSubDirName+="/")+=currentFile->GetName(); | |
83 | currentSubDirName+="/"; | |
84 | TString fileName = currentSubDirName; | |
85 | fileName+=outputFileName.Data(); | |
86 | if(!(gSystem->AccessPathName(fileName.Data(),kFileExists))) | |
87 | { | |
88 | TFile *file = NULL; | |
89 | file = TFile::Open(fileName.Data(),"READ"); | |
90 | for(Int_t m=0;m<nMethods;m++) | |
91 | { | |
92 | // Access from common output file the output file for particular method: | |
93 | TDirectoryFile *methodFile = NULL; | |
94 | methodFile = GetMethodFile(file,method[m],type); | |
95 | for(Int_t l=0;l<3;l++) | |
6a6afe42 | 96 | { |
0328db2d | 97 | TH1D *histResult = NULL; |
98 | histResult = GetHistogramWithResult(method[m],label[l],methodFile); | |
99 | if(histResult) | |
6a6afe42 | 100 | { |
0328db2d | 101 | // Access the results: |
102 | result[m][l][fileCounter] = histResult->GetBinContent(1); | |
103 | // Access the errors: | |
104 | error[m][l][fileCounter] = histResult->GetBinError(1); | |
105 | if(TMath::Abs(result[m][l][fileCounter])>pow(10.,-6.)) // take into account only if != 0 (to be improved - special care for < 0 is required) | |
9455e15e | 106 | { |
0328db2d | 107 | // Establish min and max values for results: |
108 | if(resultMinMax[m][l][0] > result[m][l][fileCounter]) resultMinMax[m][l][0] = result[m][l][fileCounter]; // min value | |
109 | if(resultMinMax[m][l][1] < result[m][l][fileCounter]) resultMinMax[m][l][1] = result[m][l][fileCounter]; // max value | |
110 | // Establish min and max values for style histograms: | |
111 | if(styleHistMinMax[l][0] > result[m][l][fileCounter]) styleHistMinMax[l][0] = result[m][l][fileCounter]; // min value | |
112 | if(styleHistMinMax[l][1] < result[m][l][fileCounter]) styleHistMinMax[l][1] = result[m][l][fileCounter]; // max value | |
9455e15e | 113 | } |
9455e15e | 114 | } |
0328db2d | 115 | } // end of for(Int_t l=0;l<3;l++) |
116 | } // end of for(Int_t m=0;m<nMethods;m++) | |
117 | if(file) file->Close(); | |
118 | fileCounter++; | |
119 | //if(fileCounter%10==0) | |
120 | //{ | |
121 | cout<<Form("Accessed %d files \"AnalysisResults.root\" so far....",fileCounter)<<"\r"<<flush; | |
122 | //} | |
123 | } | |
124 | if(fileCounter == nFilesMax) break; | |
125 | } // end of for(Int_t iFile=0;iFile<nFiles;iFile++) | |
e47370f7 | 126 | |
0328db2d | 127 | cout<<Form("Accessed %d files \"AnalysisResults.root\" in total to estimate spread. ",fileCounter)<<endl; |
128 | cout<<endl; | |
129 | const Int_t nFilesFinal = fileCounter; | |
130 | ||
131 | // Make for each method graph holding results: | |
132 | TGraph *methodGraph[nMethods][3] = {{NULL}}; // [3 = "", "RP" or "POI"] | |
133 | Double_t x[nMethods][nFilesFinal] = {{0.}}; | |
134 | for(Int_t m=0;m<nMethods;m++) | |
b5425e51 | 135 | { |
0328db2d | 136 | for(Int_t f=0;f<nFilesFinal;f++) |
b5425e51 | 137 | { |
0328db2d | 138 | x[m][f]=m+0.5; |
139 | } | |
140 | } | |
141 | for(Int_t m=0;m<nMethods;m++) | |
142 | { | |
143 | for(Int_t l=0;l<3;l++) | |
b5425e51 | 144 | { |
0328db2d | 145 | methodGraph[m][l] = new TGraph(nFilesFinal,x[m],result[m][l]); |
146 | methodGraph[m][l]->SetMarkerStyle(methodMarkerStyle[m]); | |
147 | methodGraph[m][l]->SetMarkerColor(methodMarkerColor[m]); | |
148 | } // end of for(Int_t l=0;l<3;l++) | |
149 | } // for(Int_t m=0;m<nMethods;m++) | |
150 | ||
151 | // Make for each method coloured mesh out of min and max values: | |
152 | Double_t meshWidth = 0.25; | |
153 | TGraph *methodMesh[nMethods][3] = {{NULL}}; // [3 = "", "RP" or "POI"] | |
154 | for(Int_t m=0;m<nMethods;m++) | |
155 | { | |
156 | for(Int_t l=0;l<3;l++) | |
b5425e51 | 157 | { |
0328db2d | 158 | if(resultMinMax[m][l][0]<44. && resultMinMax[m][l][1]>-44.) |
159 | { | |
160 | methodMesh[m][l] = new TGraph(5); | |
161 | methodMesh[m][l]->SetPoint(0,(m+1-0.5)-meshWidth,resultMinMax[m][l][0]); | |
162 | methodMesh[m][l]->SetPoint(1,(m+1-0.5)+meshWidth,resultMinMax[m][l][0]); | |
163 | methodMesh[m][l]->SetPoint(2,(m+1-0.5)+meshWidth,resultMinMax[m][l][1]); | |
164 | methodMesh[m][l]->SetPoint(3,(m+1-0.5)-meshWidth,resultMinMax[m][l][1]); | |
165 | methodMesh[m][l]->SetPoint(4,(m+1-0.5)-meshWidth,resultMinMax[m][l][0]); | |
166 | methodMesh[m][l]->SetFillStyle(1001); | |
167 | methodMesh[m][l]->SetFillColor(methodMeshColor[m]); | |
b5425e51 | 168 | } |
169 | } | |
0328db2d | 170 | } |
171 | ||
172 | // Access for each method the results from the merged, large statistics file: | |
173 | Double_t resultMerged[nMethods][3] = {{0.}}; // [3 = "", "RP" or "POI"] | |
174 | TString mergedFileName = Form("%s%s%s",gSystem->pwd(),"/",outputFileName.Data()); | |
175 | TFile *mergedFile = NULL; | |
176 | mergedFile = TFile::Open(mergedFileName.Data(),"READ"); | |
177 | for(Int_t m=0;m<nMethods;m++) | |
178 | { | |
179 | TDirectoryFile *methodFile = NULL; | |
180 | if(!(gSystem->AccessPathName(fileName.Data(),kFileExists))) | |
b5425e51 | 181 | { |
0328db2d | 182 | if(mergedFile) methodFile = GetMethodFile(mergedFile,method[m],type); |
183 | } else | |
184 | { | |
185 | cout<<"WARNING: Couldn't find the merged, large statistics file "<<endl; | |
186 | cout<<" "<<fileName.Data()<<endl; | |
187 | cout<<" in directory "<<gSystem->pwd()<<" !!!!"<<endl; | |
188 | cout<<" Use macros mergeOuput.C and redoFinish.C to get it."<<endl; | |
189 | cout<<endl; | |
190 | break; | |
191 | } | |
192 | for(Int_t l=0;l<3;l++) | |
b5425e51 | 193 | { |
0328db2d | 194 | TH1D *histResult = NULL; |
195 | if(methodFile) | |
196 | { | |
197 | histResult = GetHistogramWithResult(method[m],label[l],methodFile); | |
198 | } | |
199 | if(histResult) | |
b5425e51 | 200 | { |
0328db2d | 201 | // Access the results from the merged, large statistics file: |
202 | resultMerged[m][l] = histResult->GetBinContent(1); | |
203 | } // end of for(Int_t l=0;l<3;l++) | |
b5425e51 | 204 | } |
0328db2d | 205 | } // end of for(Int_t m=0;m<nMethods;m++) |
206 | if(mergedFile) mergedFile->Close(); | |
207 | ||
208 | // Make for each method graph holding results from the merged, large statistics file | |
209 | // and the errors from the randomly chosen small statistics file: | |
210 | TGraphErrors *methodMergedGraph[nMethods][3] = {{NULL}}; // [3 = "", "RP" or "POI"] | |
211 | Double_t xMerged[nMethods] = {0.}; | |
212 | for(Int_t m=0;m<nMethods;m++) | |
9455e15e | 213 | { |
0328db2d | 214 | xMerged[m]=m+0.5; |
9455e15e | 215 | } |
0328db2d | 216 | // Select randomly small statistics file: |
217 | gRandom->SetSeed((UInt_t) (4400*timer.RealTime()/fileCounter)); | |
218 | Int_t randomFile = (Int_t)gRandom->Uniform(0,fileCounter); | |
219 | for(Int_t m=0;m<nMethods;m++) | |
95de4bf0 | 220 | { |
0328db2d | 221 | for(Int_t l=0;l<3;l++) |
222 | { | |
223 | methodMergedGraph[m][l] = new TGraphErrors(1); | |
224 | methodMergedGraph[m][l]->SetPoint(0,xMerged[m],resultMerged[m][l]); | |
225 | if(showErrorOnMergedResult) methodMergedGraph[m][l]->SetPointError(0,0.,error[m][l][randomFile]); | |
226 | methodMergedGraph[m][l]->SetMarkerStyle(25); | |
227 | methodMergedGraph[m][l]->SetMarkerColor(kBlack); | |
228 | } // end of for(Int_t l=0;l<3;l++) | |
229 | } // for(Int_t m=0;m<nMethods;m++) | |
230 | ||
231 | // Final drawing: | |
232 | gROOT->SetStyle("Plain"); // removing default gray color and setting white instead | |
233 | gStyle->SetOptStat(0); // removing statistics box from all histograms | |
234 | Bool_t showPlot[3] = {showPlotForReferenceFlow,showPlotForIntegratedFlowRP,showPlotForIntegratedFlowPOI}; | |
235 | TString title[3] = {"Reference Flow","Integrated Flow (RP)","Integrated Flow (POI)"} | |
236 | TCanvas *canvas[3] = {NULL}; // [3 = "", "RP" or "POI"] | |
237 | for(Int_t l=0;l<3;l++) | |
e47370f7 | 238 | { |
0328db2d | 239 | if(showPlot[l]) |
9455e15e | 240 | { |
0328db2d | 241 | canvas[l] = new TCanvas(Form("%s",title[l].Data()),Form("%s",title[l].Data())); |
242 | TH1D *styleHist = StyleHist(title[l]); | |
243 | styleHist->SetMinimum(0.99*styleHistMinMax[l][0]); | |
244 | styleHist->SetMaximum(1.01*styleHistMinMax[l][1]); | |
245 | styleHist->Draw(); | |
246 | for(Int_t m=0;m<nMethods;m++) | |
247 | { | |
248 | if(methodMesh[m][l]) methodMesh[m][l]->Draw("lfsame"); | |
249 | if(methodGraph[m][l]) methodGraph[m][l]->Draw("psame"); | |
250 | if(TMath::Abs(*(methodMergedGraph[m][l]->GetY()))>pow(10.,-6.)) // draw only if not == 0. | |
9455e15e | 251 | { |
0328db2d | 252 | methodMergedGraph[m][l]->Draw("psame"); |
253 | } | |
254 | } // end of for(Int_t m=0;m<nMethods;m++) | |
255 | } // end of if(showPlot[l]) | |
256 | } // end of for(Int_t l=0;l<3;l++) | |
e47370f7 | 257 | |
0328db2d | 258 | timer.Stop(); |
259 | timer.Print(); | |
260 | cout<<endl; | |
6a6afe42 | 261 | |
0328db2d | 262 | } // end of void showSpread(TString type="", Int_t mode=mLocal) |
6a6afe42 | 263 | |
0328db2d | 264 | // ============================================================================================= |
6a6afe42 | 265 | |
0328db2d | 266 | TH1D *StyleHist(TString histTitle) |
267 | { | |
268 | // Make the style histogram. | |
269 | Int_t n = 2; // harmonic (to be improved - access this from common control hist) | |
270 | TH1D *styleHist = new TH1D(Form("%s",histTitle.Data()),Form("%s",histTitle.Data()),nMethods,0,nMethods); | |
271 | styleHist->GetYaxis()->SetTickLength(0.01); | |
272 | for(Int_t m=0;m<nMethods;m++) | |
273 | { | |
274 | styleHist->GetXaxis()->SetBinLabel(m+1,Form("v_{%d}{%s}",n,method[m].Data())); | |
275 | if(method[m]=="LYZ1SUM" || method[m]=="LYZ2SUM") | |
276 | { | |
277 | styleHist->GetXaxis()->SetBinLabel(m+1,Form("v_{%d}{%s}",n,"LYZ,sum")); | |
278 | } | |
279 | else if(method[m]=="LYZ1PROD" || method[m]=="LYZ2PROD") | |
280 | { | |
281 | styleHist->GetXaxis()->SetBinLabel(m+1,Form("v_{%d}{%s}",n,"LYZ,prod")); | |
282 | } | |
283 | } // end of for(Int_t m=0;m<nMethods;m++) | |
6a6afe42 | 284 | |
0328db2d | 285 | return styleHist; |
286 | } | |
287 | ||
288 | // ============================================================================================= | |
289 | ||
290 | TDirectoryFile* GetMethodFile(TFile *commonFile, TString method, TString type) | |
291 | { | |
292 | // Form a file name for each method: | |
293 | TString methodFileName = "output"; | |
294 | if(method.Contains("GFC")) | |
9455e15e | 295 | { |
0328db2d | 296 | methodFileName+="GFC"; |
297 | } else if(method.Contains("QC")) | |
9455e15e | 298 | { |
0328db2d | 299 | methodFileName+="QC"; |
300 | } else | |
301 | { | |
302 | methodFileName+=method.Data(); | |
303 | } | |
304 | methodFileName+="analysis"; | |
305 | methodFileName+=type.Data(); | |
306 | TDirectoryFile *methodFile = NULL; | |
307 | if(commonFile) | |
b78897bc | 308 | { |
0328db2d | 309 | methodFile = (TDirectoryFile*)commonFile->FindObjectAny(methodFileName.Data()); |
310 | } | |
b78897bc | 311 | |
0328db2d | 312 | return methodFile; |
b78897bc | 313 | |
0328db2d | 314 | } // end of TDirectoryFile* AccessMethodFile(TString commonFile, TString method, TString type) |
b78897bc | 315 | |
0328db2d | 316 | // ============================================================================================= |
e47370f7 | 317 | |
0328db2d | 318 | TH1D* GetHistogramWithResult(TString method, TString label, TDirectoryFile *methodFile) |
319 | { | |
320 | // Access first the common list holding all output histograms: | |
321 | TList *methodList = NULL; | |
322 | if(method.Contains("GFC")) | |
323 | { | |
324 | methodFile->GetObject("cobjGFC",methodList); | |
325 | } else if(method.Contains("QC")) | |
326 | { | |
327 | methodFile->GetObject("cobjQC",methodList); | |
328 | } else | |
329 | { | |
330 | methodFile->GetObject(Form("cobj%s",method.Data()),methodList); | |
331 | } | |
332 | // Access from the common list the needed histogram: | |
333 | if(methodList) | |
334 | { | |
335 | AliFlowCommonHistResults *commonHistRes = NULL; | |
336 | if(!(method.Contains("GFC") || method.Contains("QC"))) | |
337 | { | |
338 | commonHistRes = dynamic_cast<AliFlowCommonHistResults*> methodList->FindObject(Form("AliFlowCommonHistResults%s",method.Data())); | |
339 | } | |
340 | else if(method=="2,GFC") | |
341 | { | |
342 | commonHistRes = dynamic_cast<AliFlowCommonHistResults*> methodList->FindObject("AliFlowCommonHistResults2ndOrderGFC"); | |
343 | } | |
344 | else if(method=="4,GFC") | |
345 | { | |
346 | commonHistRes = dynamic_cast<AliFlowCommonHistResults*> methodList->FindObject("AliFlowCommonHistResults4thOrderGFC"); | |
347 | } | |
348 | else if(method=="6,GFC") | |
349 | { | |
350 | commonHistRes = dynamic_cast<AliFlowCommonHistResults*> methodList->FindObject("AliFlowCommonHistResults6thOrderGFC"); | |
351 | } | |
352 | else if(method=="8,GFC") | |
353 | { | |
354 | commonHistRes = dynamic_cast<AliFlowCommonHistResults*> methodList->FindObject("AliFlowCommonHistResults8thOrderGFC"); | |
355 | } | |
356 | else if(method=="2,QC") | |
357 | { | |
358 | commonHistRes = dynamic_cast<AliFlowCommonHistResults*> methodList->FindObject("AliFlowCommonHistResults2ndOrderQC"); | |
359 | } | |
360 | else if(method=="4,QC") | |
361 | { | |
362 | commonHistRes = dynamic_cast<AliFlowCommonHistResults*> methodList->FindObject("AliFlowCommonHistResults4thOrderQC"); | |
363 | } | |
364 | else if(method=="6,QC") | |
365 | { | |
366 | commonHistRes = dynamic_cast<AliFlowCommonHistResults*> methodList->FindObject("AliFlowCommonHistResults6thOrderQC"); | |
367 | } | |
368 | else if(method=="8,QC") | |
369 | { | |
370 | commonHistRes = dynamic_cast<AliFlowCommonHistResults*> methodList->FindObject("AliFlowCommonHistResults8thOrderQC"); | |
371 | } | |
372 | } // end of if(methodList) | |
b78897bc | 373 | |
0328db2d | 374 | // Access histogram with results for reference flow or integrated flow of RPs or POIs: |
375 | TH1D *hist = NULL; | |
376 | if(label=="") | |
377 | { | |
378 | hist = commonHistRes->GetHistIntFlow(); | |
379 | } else if(label=="RP") | |
380 | { | |
381 | hist = commonHistRes->GetHistIntFlowRP(); | |
382 | } else if(label=="POI") | |
383 | { | |
384 | hist = commonHistRes->GetHistIntFlowPOI(); | |
385 | } | |
b78897bc | 386 | |
0328db2d | 387 | if(hist) return hist; |
b78897bc | 388 | |
0328db2d | 389 | } // end of TH1D *GetHistogramWithResult(TString method, TString rf_rp_poi, TString file); |
390 | ||
391 | // ============================================================================================= | |
392 | ||
393 | void CrossCheckUserSettings() | |
394 | { | |
395 | // Check in this method if the user settings make sense. | |
48385911 | 396 | |
0328db2d | 397 | if(nFilesMax<=0) |
398 | { | |
399 | cout<<endl; | |
400 | cout<<"WARNING: nFilesMax must be a positive integer (not too large, though) !!!!"<<endl; | |
401 | cout<<endl; | |
402 | exit(0); | |
b78897bc | 403 | } |
0328db2d | 404 | if(nFilesMax>44) |
b78897bc | 405 | { |
0328db2d | 406 | cout<<endl; |
407 | cout<<"WARNING: You may want to set nFilesMax to the smaller value."<<endl; | |
408 | cout<<" Otherwise you might wait forever to see the plots."<<endl; | |
409 | } | |
b78897bc | 410 | |
0328db2d | 411 | } // end of void CrossCheckUserSettings() |
e47370f7 | 412 | |
0328db2d | 413 | // ============================================================================================= |
414 | ||
415 | void LoadLibrariesSS(const libModes mode) { | |
e47370f7 | 416 | |
417 | //-------------------------------------- | |
418 | // Load the needed libraries most of them already loaded by aliroot | |
419 | //-------------------------------------- | |
b5425e51 | 420 | //gSystem->Load("libTree"); |
b125a454 | 421 | gSystem->Load("libGeom"); |
422 | gSystem->Load("libVMC"); | |
423 | gSystem->Load("libXMLIO"); | |
424 | gSystem->Load("libPhysics"); | |
e47370f7 | 425 | |
426 | //---------------------------------------------------------- | |
427 | // >>>>>>>>>>> Local mode <<<<<<<<<<<<<< | |
428 | //---------------------------------------------------------- | |
429 | if (mode==mLocal) { | |
430 | //-------------------------------------------------------- | |
431 | // If you want to use already compiled libraries | |
432 | // in the aliroot distribution | |
433 | //-------------------------------------------------------- | |
434 | ||
435 | //================================================================================== | |
436 | //load needed libraries: | |
437 | gSystem->AddIncludePath("-I$ROOTSYS/include"); | |
b5425e51 | 438 | //gSystem->Load("libTree"); |
e47370f7 | 439 | |
440 | // for AliRoot | |
441 | gSystem->AddIncludePath("-I$ALICE_ROOT/include"); | |
b125a454 | 442 | gSystem->Load("libANALYSIS"); |
443 | gSystem->Load("libPWG2flowCommon"); | |
b5425e51 | 444 | //cerr<<"libPWG2flowCommon loaded ..."<<endl; |
e47370f7 | 445 | |
446 | } | |
447 | ||
448 | else if (mode==mLocalSource) { | |
449 | ||
450 | // In root inline compile | |
451 | ||
452 | // Constants | |
453 | gROOT->LoadMacro("AliFlowCommon/AliFlowCommonConstants.cxx+"); | |
454 | gROOT->LoadMacro("AliFlowCommon/AliFlowLYZConstants.cxx+"); | |
5062cb0f | 455 | |
e47370f7 | 456 | // Flow event |
457 | gROOT->LoadMacro("AliFlowCommon/AliFlowVector.cxx+"); | |
5062cb0f | 458 | gROOT->LoadMacro("AliFlowCommon/AliFlowTrackSimple.cxx+"); |
e47370f7 | 459 | gROOT->LoadMacro("AliFlowCommon/AliFlowTrackSimpleCuts.cxx+"); |
5062cb0f | 460 | gROOT->LoadMacro("AliFlowCommon/AliFlowEventSimple.cxx+"); |
461 | ||
0328db2d | 462 | // Output histograms |
e47370f7 | 463 | gROOT->LoadMacro("AliFlowCommon/AliFlowCommonHist.cxx+"); |
464 | gROOT->LoadMacro("AliFlowCommon/AliFlowCommonHistResults.cxx+"); | |
465 | gROOT->LoadMacro("AliFlowCommon/AliFlowLYZHist1.cxx+"); | |
466 | gROOT->LoadMacro("AliFlowCommon/AliFlowLYZHist2.cxx+"); | |
0328db2d | 467 | |
468 | // Functions needed for various methods | |
469 | gROOT->LoadMacro("AliFlowCommon/AliCumulantsFunctions.cxx+"); | |
470 | gROOT->LoadMacro("AliFlowCommon/AliFlowLYZEventPlane.cxx+"); | |
471 | ||
472 | // Flow Analysis code for various methods | |
473 | gROOT->LoadMacro("AliFlowCommon/AliFlowAnalysisWithMCEventPlane.cxx+"); | |
474 | gROOT->LoadMacro("AliFlowCommon/AliFlowAnalysisWithScalarProduct.cxx+"); | |
475 | gROOT->LoadMacro("AliFlowCommon/AliFlowAnalysisWithLYZEventPlane.cxx+"); | |
476 | gROOT->LoadMacro("AliFlowCommon/AliFlowAnalysisWithLeeYangZeros.cxx+"); | |
477 | gROOT->LoadMacro("AliFlowCommon/AliFlowAnalysisWithCumulants.cxx+"); | |
478 | gROOT->LoadMacro("AliFlowCommon/AliFlowAnalysisWithQCumulants.cxx+"); | |
479 | gROOT->LoadMacro("AliFlowCommon/AliFlowAnalysisWithFittingQDistribution.cxx+"); | |
480 | gROOT->LoadMacro("AliFlowCommon/AliFlowAnalysisWithMixedHarmonics.cxx+"); | |
481 | gROOT->LoadMacro("AliFlowCommon/AliFlowAnalysisWithNestedLoops.cxx+"); | |
482 | ||
e47370f7 | 483 | cout << "finished loading macros!" << endl; |
484 | ||
0328db2d | 485 | } // end of else if (mode==mLocalSource) |
e47370f7 | 486 | |
0328db2d | 487 | } // end of void LoadLibrariesSS(const libModes mode) |