]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG2/FLOW/macros/mergeOutput.C
merge in cycles
[u/mrichter/AliRoot.git] / PWG2 / FLOW / macros / mergeOutput.C
CommitLineData
b78897bc 1enum libModes {mLocal,mLocalSource};
b78897bc 2
6a6afe42 3void mergeOutput(TString type="", Int_t nRuns=-1, Int_t mode=mLocal)
6b983408 4{
5 // type: type of analysis can be ESD, AOD, MC, ESDMC0, ESDMC1
6 // (if type="" output files are from MC simulation (default))
7 // nRuns: specify here how many output .root files will be merged
8 // (if nRuns = -1 all of them will be merged)
9 // mode: if mode=mLocal analyze data on your computer using aliroot
10 // if mode=mLocalSource analyze data on your computer using root + source files
11
c3a99c05 12 Int_t cycle = 50; // if you cannot have >= 50 open files in memory, simply decrease this number
13
b78897bc 14 // load needed libraries:
6a6afe42 15 LoadSpreadLibrariesMO(mode);
6b983408 16
6a6afe42 17 // access the path of current directory:
1bc8ba5e 18 TString pwd(gSystem->pwd());
6b983408 19 pwd+="/";
20
b78897bc 21 // file mergers for the output file of each method separately:
22 // MCEP:
23 TFileMerger *mcepFileMerger = new TFileMerger();
6b983408 24 TString mergedFileNameMCEP("mergedMCEPanalysis");
25 (mergedFileNameMCEP+=(type.Data()))+=(".root");
26 TString pwdMCEP=pwd.Data();
27 if(!(gSystem->AccessPathName((pwdMCEP+=mergedFileNameMCEP).Data(),kFileExists)))
1bc8ba5e 28 {
29 cout<<"WARNING: You already have a merged output for MCEP !!!!"<<endl;
30 break;
31 }
c3a99c05 32 //mcepFileMerger->OutputFile(mergedFileNameMCEP);
b78897bc 33
34 // SP:
35 TFileMerger *spFileMerger = new TFileMerger();
6b983408 36 TString mergedFileNameSP("mergedSPanalysis");
37 (mergedFileNameSP+=(type.Data()))+=(".root");
38 TString pwdSP=pwd.Data();
39 if(!(gSystem->AccessPathName((pwdSP+=mergedFileNameSP).Data(),kFileExists)))
1bc8ba5e 40 {
41 cout<<"WARNING: You already have a merged output for SP !!!!"<<endl;
42 break;
43 }
b78897bc 44 spFileMerger->OutputFile(mergedFileNameSP);
6b983408 45
b78897bc 46 // GFC:
47 TFileMerger *gfcFileMerger = new TFileMerger();
6b983408 48 TString mergedFileNameGFC("mergedGFCanalysis");
49 (mergedFileNameGFC+=(type.Data()))+=(".root");
50 TString pwdGFC=pwd.Data();
51 if(!(gSystem->AccessPathName((pwdGFC+=mergedFileNameGFC).Data(),kFileExists)))
1bc8ba5e 52 {
53 cout<<"WARNING: You already have a merged output for GFC !!!!"<<endl;
54 break;
55 }
b78897bc 56 gfcFileMerger->OutputFile(mergedFileNameGFC);
57
58 // QC:
59 TFileMerger *qcFileMerger = new TFileMerger();
6b983408 60 TString mergedFileNameQC("mergedQCanalysis");
61 (mergedFileNameQC+=(type.Data()))+=(".root");
62 TString pwdQC=pwd.Data();
63 if(!(gSystem->AccessPathName((pwdQC+=mergedFileNameQC).Data(),kFileExists)))
1bc8ba5e 64 {
65 cout<<"WARNING: You already have a merged output for QC !!!!"<<endl;
66 break;
6b983408 67 }
b78897bc 68 qcFileMerger->OutputFile(mergedFileNameQC);
69
70 // FQD:
71 TFileMerger *fqdFileMerger = new TFileMerger();
6b983408 72 TString mergedFileNameFQD("mergedFQDanalysis");
73 (mergedFileNameFQD+=(type.Data()))+=(".root");
74 TString pwdFQD=pwd.Data();
75 if(!(gSystem->AccessPathName((pwdFQD+=mergedFileNameFQD).Data(),kFileExists)))
1bc8ba5e 76 {
77 cout<<"WARNING: You already have a merged output for FQD !!!!"<<endl;
78 break;
6b983408 79 }
b78897bc 80 fqdFileMerger->OutputFile(mergedFileNameFQD);
81
82 // LYZ1:
83 TFileMerger *lyz1FileMerger = new TFileMerger();
6b983408 84 TString mergedFileNameLYZ1("mergedLYZ1analysis");
85 (mergedFileNameLYZ1+=(type.Data()))+=(".root");
86 TString pwdLYZ1=pwd.Data();
87 if(!(gSystem->AccessPathName((pwdLYZ1+=mergedFileNameLYZ1).Data(),kFileExists)))
1bc8ba5e 88 {
89 cout<<"WARNING: You already have a merged output for LYZ1 !!!!"<<endl;
90 break;
6b983408 91 }
b78897bc 92 lyz1FileMerger->OutputFile(mergedFileNameLYZ1);
93
94 // LYZ2:
95 TFileMerger *lyz2FileMerger = new TFileMerger();
6b983408 96 TString mergedFileNameLYZ2("mergedLYZ2analysis");
97 (mergedFileNameLYZ2+=(type.Data()))+=(".root");
98 TString pwdLYZ2=pwd.Data();
99 if(!(gSystem->AccessPathName((pwdLYZ2+=mergedFileNameLYZ2).Data(),kFileExists)))
1bc8ba5e 100 {
101 cout<<"WARNING: You already have a merged output for LYZ2 !!!!"<<endl;
102 break;
103 }
b78897bc 104 lyz2FileMerger->OutputFile(mergedFileNameLYZ2);
105
106 // LYZEP:
107 TFileMerger *lyzepFileMerger = new TFileMerger();
6b983408 108 TString mergedFileNameLYZEP("mergedLYZEPanalysis");
109 (mergedFileNameLYZEP+=(type.Data()))+=(".root");
110 TString pwdLYZEP=pwd.Data();
111 if(!(gSystem->AccessPathName((pwdLYZEP+=mergedFileNameLYZEP).Data(),kFileExists)))
1bc8ba5e 112 {
113 cout<<"WARNING: You already have a merged output for LYZEP !!!!"<<endl;
114 break;
6b983408 115 }
b78897bc 116 lyzepFileMerger->OutputFile(mergedFileNameLYZEP);
117
118 // standard magic:
119 TString execDir(gSystem->pwd());
120 TSystemDirectory* baseDir = new TSystemDirectory(".",execDir.Data());
121 TList* dirList = baseDir->GetListOfFiles();
122 Int_t nDirs = dirList->GetEntries();
1bc8ba5e 123 gSystem->cd(execDir);
b78897bc 124
125 Int_t counter = 0;
c3a99c05 126
127 Int_t counterMCEP = 0;
128 Int_t maxCycleMCEP = 0;
129 Int_t counterSP = 0;
130 Int_t maxCycleSP = 0;
131 Int_t counterGFC = 0;
132 Int_t maxCycleGFC = 0;
133 Int_t counterQC = 0;
134 Int_t maxCycleQC = 0;
135 Int_t counterFQD = 0;
136 Int_t maxCycleFQD = 0;
137 Int_t counterLYZ1 = 0;
138 Int_t maxCycleLYZ1 = 0;
b78897bc 139
c3a99c05 140 if(cycle>nDirs) // to be improved (temporary workaroud)
141 {
142 cout<<"WARNING: Cycle "<<cycle<<" is too big. Decrease it's value in the declaration Int_t cycle in the macro !!!!"<<endl;
143 break;
144 }
145
b78897bc 146 for(Int_t iDir=0;iDir<nDirs;++iDir)
147 {
148 TSystemFile* presentDir = (TSystemFile*)dirList->At(iDir);
149 if(!presentDir || !presentDir->IsDirectory() || strcmp(presentDir->GetName(), ".") == 0 ||
150 strcmp(presentDir->GetName(), "..") == 0) continue;
151
152 if(nRuns != -1)
153 {
154 if (counter >= nRuns) break;
155 }
156
157 TString presentDirName(gSystem->pwd());
158 presentDirName += "/";
159 presentDirName += presentDir->GetName();
160 presentDirName += "/";
161
162 // accessing the output .root files from independent analysis for each method:
163 // MCEP:
164 TString fileNameMCEP = presentDirName;
6b983408 165 ((fileNameMCEP+="outputMCEPanalysis")+=type.Data())+=".root";
1bc8ba5e 166 if(!(gSystem->AccessPathName(fileNameMCEP.Data(),kFileExists)))
167 {
168 mcepFileMerger->AddFile(fileNameMCEP.Data());
c3a99c05 169 counterMCEP++;
6b983408 170 } else
171 {
172 cout<<"WARNING: Couldn't find a file "<<fileNameMCEP.Data()<<". Merging will continue without this file."<<endl;
173 }
174
c3a99c05 175 if(counterMCEP % cycle == 0)
176 {
177 maxCycleMCEP = counterMCEP/cycle;
178 TString mergedFileNameCurrentCycleMCEP("mergedMCEPanalysis");
179 ((mergedFileNameCurrentCycleMCEP+=(type.Data()))+=counterMCEP/cycle)+=(".root");
180 mcepFileMerger->OutputFile(mergedFileNameCurrentCycleMCEP);
181
182 TString mergedFileNamePreviousCycleMCEP("mergedMCEPanalysis");
183 ((mergedFileNamePreviousCycleMCEP+=(type.Data()))+=(counterMCEP/cycle-1))+=(".root");
184 if(!(gSystem->AccessPathName(mergedFileNamePreviousCycleMCEP.Data(),kFileExists)))
185 {
186 mcepFileMerger->AddFile(mergedFileNamePreviousCycleMCEP.Data());
187 }
188
189 Bool_t mcepMerged = kFALSE;
190 if(mcepFileMerger)
191 {
192 mcepMerged = mcepFileMerger->Merge();
193 mcepFileMerger->Reset();
194 }
195
196 if(mcepMerged)
197 {
198 TSystemFile *previousCycle = new TSystemFile(mergedFileNamePreviousCycleMCEP.Data(),gSystem->pwd());
199 if(previousCycle) previousCycle->Delete();
200 delete previousCycle;
201 }
202 } // end of if(counterMCEP % cycle == 0)
203
b78897bc 204 // SP:
205 TString fileNameSP = presentDirName;
6b983408 206 ((fileNameSP+="outputSPanalysis")+=type.Data())+=".root";
1bc8ba5e 207 if(!(gSystem->AccessPathName(fileNameSP.Data(),kFileExists)))
208 {
209 spFileMerger->AddFile(fileNameSP.Data());
c3a99c05 210 counterSP++;
6b983408 211 } else
212 {
213 cout<<"WARNING: Couldn't find a file "<<fileNameSP.Data()<<". Merging will continue without this file."<<endl;
214 }
215
c3a99c05 216 if(counterSP % cycle == 0)
217 {
218 maxCycleSP = counterSP/cycle;
219 TString mergedFileNameCurrentCycleSP("mergedSPanalysis");
220 ((mergedFileNameCurrentCycleSP+=(type.Data()))+=counterSP/cycle)+=(".root");
221 spFileMerger->OutputFile(mergedFileNameCurrentCycleSP);
222
223 TString mergedFileNamePreviousCycleSP("mergedSPanalysis");
224 ((mergedFileNamePreviousCycleSP+=(type.Data()))+=(counterSP/cycle-1))+=(".root");
225 if(!(gSystem->AccessPathName(mergedFileNamePreviousCycleSP.Data(),kFileExists)))
226 {
227 spFileMerger->AddFile(mergedFileNamePreviousCycleSP.Data());
228 }
229
230 Bool_t spMerged = kFALSE;
231 if(spFileMerger)
232 {
233 spMerged = spFileMerger->Merge();
234 spFileMerger->Reset();
235 }
236
237 if(spMerged)
238 {
239 TSystemFile *previousCycle = new TSystemFile(mergedFileNamePreviousCycleSP.Data(),gSystem->pwd());
240 if(previousCycle) previousCycle->Delete();
241 delete previousCycle;
242 }
243 } // end of if(counterSP % cycle == 0)
244
b78897bc 245 // GFC:
246 TString fileNameGFC = presentDirName;
6b983408 247 ((fileNameGFC+="outputGFCanalysis")+=type.Data())+=".root";
1bc8ba5e 248 if(!(gSystem->AccessPathName(fileNameGFC.Data(),kFileExists)))
6b983408 249 {
1bc8ba5e 250 gfcFileMerger->AddFile(fileNameGFC.Data());
c3a99c05 251 counterGFC++;
6b983408 252 } else
253 {
254 cout<<"WARNING: Couldn't find a file "<<fileNameGFC.Data()<<". Merging will continue without this file."<<endl;
c3a99c05 255 }
256
257 if(counterGFC % cycle == 0)
258 {
259 maxCycleGFC = counterGFC/cycle;
260 TString mergedFileNameCurrentCycleGFC("mergedGFCanalysis");
261 ((mergedFileNameCurrentCycleGFC+=(type.Data()))+=counterGFC/cycle)+=(".root");
262 gfcFileMerger->OutputFile(mergedFileNameCurrentCycleGFC);
263
264 TString mergedFileNamePreviousCycleGFC("mergedGFCanalysis");
265 ((mergedFileNamePreviousCycleGFC+=(type.Data()))+=(counterGFC/cycle-1))+=(".root");
266 if(!(gSystem->AccessPathName(mergedFileNamePreviousCycleGFC.Data(),kFileExists)))
267 {
268 gfcFileMerger->AddFile(mergedFileNamePreviousCycleGFC.Data());
269 }
270
271 Bool_t gfcMerged = kFALSE;
272 if(gfcFileMerger)
273 {
274 gfcMerged = gfcFileMerger->Merge();
275 gfcFileMerger->Reset();
276 }
277
278 if(gfcMerged)
279 {
280 TSystemFile *previousCycle = new TSystemFile(mergedFileNamePreviousCycleGFC.Data(),gSystem->pwd());
281 if(previousCycle) previousCycle->Delete();
282 delete previousCycle;
283 }
284 } // end of if(counterGFC % cycle == 0)
285
b78897bc 286 // QC:
287 TString fileNameQC = presentDirName;
6b983408 288 ((fileNameQC+="outputQCanalysis")+=type.Data())+=".root";
1bc8ba5e 289 if(!(gSystem->AccessPathName(fileNameQC.Data(),kFileExists)))
6b983408 290 {
1bc8ba5e 291 qcFileMerger->AddFile(fileNameQC.Data());
c3a99c05 292 counterQC++;
6b983408 293 } else
294 {
295 cout<<"WARNING: Couldn't find a file "<<fileNameQC.Data()<<". Merging will continue without this file."<<endl;
c3a99c05 296 }
6b983408 297
c3a99c05 298 if(counterQC % cycle == 0)
299 {
300 maxCycleQC = counterQC/cycle;
301 TString mergedFileNameCurrentCycleQC("mergedQCanalysis");
302 ((mergedFileNameCurrentCycleQC+=(type.Data()))+=counterQC/cycle)+=(".root");
303 qcFileMerger->OutputFile(mergedFileNameCurrentCycleQC);
304
305 TString mergedFileNamePreviousCycleQC("mergedQCanalysis");
306 ((mergedFileNamePreviousCycleQC+=(type.Data()))+=(counterQC/cycle-1))+=(".root");
307 if(!(gSystem->AccessPathName(mergedFileNamePreviousCycleQC.Data(),kFileExists)))
308 {
309 qcFileMerger->AddFile(mergedFileNamePreviousCycleQC.Data());
310 }
311
312 Bool_t qcMerged = kFALSE;
313 if(qcFileMerger)
314 {
315 qcMerged = qcFileMerger->Merge();
316 qcFileMerger->Reset();
317 }
318
319 if(qcMerged)
320 {
321 TSystemFile *previousCycle = new TSystemFile(mergedFileNamePreviousCycleQC.Data(),gSystem->pwd());
322 if(previousCycle) previousCycle->Delete();
323 delete previousCycle;
324 }
325 } // end of if(counterQC % cycle == 0)
326
b78897bc 327 // FQD:
328 TString fileNameFQD = presentDirName;
6b983408 329 ((fileNameFQD+="outputFQDanalysis")+=type.Data())+=".root";
1bc8ba5e 330 if(!(gSystem->AccessPathName(fileNameFQD.Data(),kFileExists)))
6b983408 331 {
1bc8ba5e 332 fqdFileMerger->AddFile(fileNameFQD.Data());
c3a99c05 333 counterFQD++;
6b983408 334 } else
335 {
336 cout<<"WARNING: Couldn't find a file "<<fileNameFQD.Data()<<". Merging will continue without this file."<<endl;
c3a99c05 337 }
338
339 if(counterFQD % cycle == 0)
340 {
341 maxCycleFQD = counterFQD/cycle;
342 TString mergedFileNameCurrentCycleFQD("mergedFQDanalysis");
343 ((mergedFileNameCurrentCycleFQD+=(type.Data()))+=counterFQD/cycle)+=(".root");
344 fqdFileMerger->OutputFile(mergedFileNameCurrentCycleFQD);
345
346 TString mergedFileNamePreviousCycleFQD("mergedFQDanalysis");
347 ((mergedFileNamePreviousCycleFQD+=(type.Data()))+=(counterFQD/cycle-1))+=(".root");
348 if(!(gSystem->AccessPathName(mergedFileNamePreviousCycleFQD.Data(),kFileExists)))
349 {
350 fqdFileMerger->AddFile(mergedFileNamePreviousCycleFQD.Data());
351 }
352
353 Bool_t fqdMerged = kFALSE;
354 if(fqdFileMerger)
355 {
356 fqdMerged = fqdFileMerger->Merge();
357 fqdFileMerger->Reset();
358 }
359
360 if(fqdMerged)
361 {
362 TSystemFile *previousCycle = new TSystemFile(mergedFileNamePreviousCycleFQD.Data(),gSystem->pwd());
363 if(previousCycle) previousCycle->Delete();
364 delete previousCycle;
365 }
366 } // end of if(counterFQD % cycle == 0)
6b983408 367
b78897bc 368 // LYZ1:
369 TString fileNameLYZ1 = presentDirName;
6b983408 370 ((fileNameLYZ1+="outputLYZ1analysis")+=type.Data())+=".root";
1bc8ba5e 371 if(!(gSystem->AccessPathName(fileNameLYZ1.Data(),kFileExists)))
6b983408 372 {
1bc8ba5e 373 lyz1FileMerger->AddFile(fileNameLYZ1.Data());
c3a99c05 374 counterLYZ1++;
6b983408 375 } else
376 {
377 cout<<"WARNING: Couldn't find a file "<<fileNameLYZ1.Data()<<". Merging will continue without this file."<<endl;
c3a99c05 378 }
6b983408 379
c3a99c05 380 if(counterLYZ1 % cycle == 0)
6b983408 381 {
c3a99c05 382 maxCycleLYZ1 = counterLYZ1/cycle;
383 TString mergedFileNameCurrentCycleLYZ1("mergedLYZ1analysis");
384 ((mergedFileNameCurrentCycleLYZ1+=(type.Data()))+=counterLYZ1/cycle)+=(".root");
385 lyz1FileMerger->OutputFile(mergedFileNameCurrentCycleLYZ1);
386
387 TString mergedFileNamePreviousCycleLYZ1("mergedLYZ1analysis");
388 ((mergedFileNamePreviousCycleLYZ1+=(type.Data()))+=(counterLYZ1/cycle-1))+=(".root");
389 if(!(gSystem->AccessPathName(mergedFileNamePreviousCycleLYZ1.Data(),kFileExists)))
390 {
391 lyz1FileMerger->AddFile(mergedFileNamePreviousCycleLYZ1.Data());
392 }
1bc8ba5e 393
c3a99c05 394 Bool_t lyz1Merged = kFALSE;
395 if(lyz1FileMerger)
396 {
397 lyz1Merged = lyz1FileMerger->Merge();
398 lyz1FileMerger->Reset();
399 }
400
401 if(lyz1Merged)
402 {
403 TSystemFile *previousCycle = new TSystemFile(mergedFileNamePreviousCycleLYZ1.Data(),gSystem->pwd());
404 if(previousCycle) previousCycle->Delete();
405 delete previousCycle;
406 }
407 } // end of if(counterLYZ1 % cycle == 0)
408
b78897bc 409 counter++;
410
411 } // end of for(Int_t iDir=0;iDir<nDirs;++iDir)
412
c3a99c05 413 // last cycle MCEP:
414 if(counterMCEP % cycle != 0)
415 {
416 TString mergedFileNameCurrentCycleMCEP("mergedMCEPanalysis");
417 ((mergedFileNameCurrentCycleMCEP+=(type.Data()))+=(maxCycleMCEP+1))+=(".root");
418 mcepFileMerger->OutputFile(mergedFileNameCurrentCycleMCEP);
419
420 TString mergedFileNamePreviousCycleMCEP("mergedMCEPanalysis");
421 ((mergedFileNamePreviousCycleMCEP+=(type.Data()))+=(maxCycleMCEP))+=(".root");
422 if(!(gSystem->AccessPathName(mergedFileNamePreviousCycleMCEP.Data(),kFileExists)))
423 {
424 mcepFileMerger->AddFile(mergedFileNamePreviousCycleMCEP.Data());
425 }
426
427 Bool_t mcepMerged = kFALSE;
428 if(mcepFileMerger)
429 {
430 mcepMerged = mcepFileMerger->Merge();
431 mcepFileMerger->Reset();
432 }
433
434 if(mcepMerged)
435 {
436 TSystemFile *previousCycle = new TSystemFile(mergedFileNamePreviousCycleMCEP.Data(),gSystem->pwd());
437 if(previousCycle) previousCycle->Delete();
438 delete previousCycle;
439 }
440 maxCycleMCEP++;
441 } // end of if(counterMCEP % cycle != 0)
442
443 // renaming the final merged output for MCEP:
444 TString finalMergedFileNameMCEP("mergedMCEPanalysis");
445 ((finalMergedFileNameMCEP+=(type.Data()))+=maxCycleMCEP)+=(".root");
446 TSystemFile *finalMergedFileMCEP = new TSystemFile(finalMergedFileNameMCEP.Data(),gSystem->pwd());
447 TString defaultMergedFileNameMCEP("mergedMCEPanalysis");
448 (defaultMergedFileNameMCEP+=(type.Data()))+=(".root");
449 if(finalMergedFileMCEP) finalMergedFileMCEP->Rename(defaultMergedFileNameMCEP.Data());
450
451 // last cycle SP:
452 if(counterSP % cycle != 0)
453 {
454 TString mergedFileNameCurrentCycleSP("mergedSPanalysis");
455 ((mergedFileNameCurrentCycleSP+=(type.Data()))+=(maxCycleSP+1))+=(".root");
456 spFileMerger->OutputFile(mergedFileNameCurrentCycleSP);
457
458 TString mergedFileNamePreviousCycleSP("mergedSPanalysis");
459 ((mergedFileNamePreviousCycleSP+=(type.Data()))+=(maxCycleSP))+=(".root");
460 if(!(gSystem->AccessPathName(mergedFileNamePreviousCycleSP.Data(),kFileExists)))
461 {
462 spFileMerger->AddFile(mergedFileNamePreviousCycleSP.Data());
463 }
464
465 Bool_t spMerged = kFALSE;
466 if(spFileMerger)
467 {
468 spMerged = spFileMerger->Merge();
469 spFileMerger->Reset();
470 }
471
472 if(spMerged)
473 {
474 TSystemFile *previousCycle = new TSystemFile(mergedFileNamePreviousCycleSP.Data(),gSystem->pwd());
475 if(previousCycle) previousCycle->Delete();
476 delete previousCycle;
477 }
478 maxCycleSP++;
479 } // end of if(counterSP % cycle != 0)
480
481 // renaming the final merged output for SP:
482 TString finalMergedFileNameSP("mergedSPanalysis");
483 ((finalMergedFileNameSP+=(type.Data()))+=maxCycleSP)+=(".root");
484 TSystemFile *finalMergedFileSP = new TSystemFile(finalMergedFileNameSP.Data(),gSystem->pwd());
485 TString defaultMergedFileNameSP("mergedSPanalysis");
486 (defaultMergedFileNameSP+=(type.Data()))+=(".root");
487 if(finalMergedFileSP) finalMergedFileSP->Rename(defaultMergedFileNameSP.Data());
488
489 // last cycle GFC:
490 if(counterGFC % cycle != 0)
491 {
492 TString mergedFileNameCurrentCycleGFC("mergedGFCanalysis");
493 ((mergedFileNameCurrentCycleGFC+=(type.Data()))+=(maxCycleGFC+1))+=(".root");
494 gfcFileMerger->OutputFile(mergedFileNameCurrentCycleGFC);
495
496 TString mergedFileNamePreviousCycleGFC("mergedGFCanalysis");
497 ((mergedFileNamePreviousCycleGFC+=(type.Data()))+=(maxCycleGFC))+=(".root");
498 if(!(gSystem->AccessPathName(mergedFileNamePreviousCycleGFC.Data(),kFileExists)))
499 {
500 gfcFileMerger->AddFile(mergedFileNamePreviousCycleGFC.Data());
501 }
502
503 Bool_t gfcMerged = kFALSE;
504 if(gfcFileMerger)
505 {
506 gfcMerged = gfcFileMerger->Merge();
507 gfcFileMerger->Reset();
508 }
509
510 if(gfcMerged)
511 {
512 TSystemFile *previousCycle = new TSystemFile(mergedFileNamePreviousCycleGFC.Data(),gSystem->pwd());
513 if(previousCycle) previousCycle->Delete();
514 delete previousCycle;
515 }
516 maxCycleGFC++;
517 } // end of if(counterGFC % cycle != 0)
518
519 // renaming the final merged output for GFC:
520 TString finalMergedFileNameGFC("mergedGFCanalysis");
521 ((finalMergedFileNameGFC+=(type.Data()))+=maxCycleGFC)+=(".root");
522 TSystemFile *finalMergedFileGFC = new TSystemFile(finalMergedFileNameGFC.Data(),gSystem->pwd());
523 TString defaultMergedFileNameGFC("mergedGFCanalysis");
524 (defaultMergedFileNameGFC+=(type.Data()))+=(".root");
525 if(finalMergedFileGFC) finalMergedFileGFC->Rename(defaultMergedFileNameGFC.Data());
526
527 // last cycle QC:
528 if(counterQC % cycle != 0)
529 {
530 TString mergedFileNameCurrentCycleQC("mergedQCanalysis");
531 ((mergedFileNameCurrentCycleQC+=(type.Data()))+=(maxCycleQC+1))+=(".root");
532 qcFileMerger->OutputFile(mergedFileNameCurrentCycleQC);
533
534 TString mergedFileNamePreviousCycleQC("mergedQCanalysis");
535 ((mergedFileNamePreviousCycleQC+=(type.Data()))+=(maxCycleQC))+=(".root");
536 if(!(gSystem->AccessPathName(mergedFileNamePreviousCycleQC.Data(),kFileExists)))
537 {
538 qcFileMerger->AddFile(mergedFileNamePreviousCycleQC.Data());
539 }
540
541 Bool_t qcMerged = kFALSE;
542 if(qcFileMerger)
543 {
544 qcMerged = qcFileMerger->Merge();
545 qcFileMerger->Reset();
546 }
547
548 if(qcMerged)
549 {
550 TSystemFile *previousCycle = new TSystemFile(mergedFileNamePreviousCycleQC.Data(),gSystem->pwd());
551 if(previousCycle) previousCycle->Delete();
552 delete previousCycle;
553 }
554 maxCycleQC++;
555 } // end of if(counterQC % cycle != 0)
556
557 // renaming the final merged output for QC:
558 TString finalMergedFileNameQC("mergedQCanalysis");
559 ((finalMergedFileNameQC+=(type.Data()))+=maxCycleQC)+=(".root");
560 TSystemFile *finalMergedFileQC = new TSystemFile(finalMergedFileNameQC.Data(),gSystem->pwd());
561 TString defaultMergedFileNameQC("mergedQCanalysis");
562 (defaultMergedFileNameQC+=(type.Data()))+=(".root");
563 if(finalMergedFileQC) finalMergedFileQC->Rename(defaultMergedFileNameQC.Data());
564
565 // last cycle FQD:
566 if(counterFQD % cycle != 0)
567 {
568 TString mergedFileNameCurrentCycleFQD("mergedFQDanalysis");
569 ((mergedFileNameCurrentCycleFQD+=(type.Data()))+=(maxCycleFQD+1))+=(".root");
570 fqdFileMerger->OutputFile(mergedFileNameCurrentCycleFQD);
571
572 TString mergedFileNamePreviousCycleFQD("mergedFQDanalysis");
573 ((mergedFileNamePreviousCycleFQD+=(type.Data()))+=(maxCycleFQD))+=(".root");
574 if(!(gSystem->AccessPathName(mergedFileNamePreviousCycleFQD.Data(),kFileExists)))
575 {
576 fqdFileMerger->AddFile(mergedFileNamePreviousCycleFQD.Data());
577 }
578
579 Bool_t fqdMerged = kFALSE;
580 if(fqdFileMerger)
581 {
582 fqdMerged = fqdFileMerger->Merge();
583 fqdFileMerger->Reset();
584 }
585
586 if(fqdMerged)
587 {
588 TSystemFile *previousCycle = new TSystemFile(mergedFileNamePreviousCycleFQD.Data(),gSystem->pwd());
589 if(previousCycle) previousCycle->Delete();
590 delete previousCycle;
591 }
592 maxCycleFQD++;
593 } // end of if(counterFQD % cycle != 0)
594
595 // renaming the final merged output for FQD:
596 TString finalMergedFileNameFQD("mergedFQDanalysis");
597 ((finalMergedFileNameFQD+=(type.Data()))+=maxCycleFQD)+=(".root");
598 TSystemFile *finalMergedFileFQD = new TSystemFile(finalMergedFileNameFQD.Data(),gSystem->pwd());
599 TString defaultMergedFileNameFQD("mergedFQDanalysis");
600 (defaultMergedFileNameFQD+=(type.Data()))+=(".root");
601 if(finalMergedFileFQD) finalMergedFileFQD->Rename(defaultMergedFileNameFQD.Data());
602
603 // last cycle LYZ1:
604 if(counterLYZ1 % cycle != 0)
605 {
606 TString mergedFileNameCurrentCycleLYZ1("mergedLYZ1analysis");
607 ((mergedFileNameCurrentCycleLYZ1+=(type.Data()))+=(maxCycleLYZ1+1))+=(".root");
608 lyz1FileMerger->OutputFile(mergedFileNameCurrentCycleLYZ1);
609
610 TString mergedFileNamePreviousCycleLYZ1("mergedLYZ1analysis");
611 ((mergedFileNamePreviousCycleLYZ1+=(type.Data()))+=(maxCycleLYZ1))+=(".root");
612 if(!(gSystem->AccessPathName(mergedFileNamePreviousCycleLYZ1.Data(),kFileExists)))
613 {
614 lyz1FileMerger->AddFile(mergedFileNamePreviousCycleLYZ1.Data());
615 }
616
617 Bool_t lyz1Merged = kFALSE;
618 if(lyz1FileMerger)
619 {
620 lyz1Merged = lyz1FileMerger->Merge();
621 lyz1FileMerger->Reset();
622 }
623
624 if(lyz1Merged)
625 {
626 TSystemFile *previousCycle = new TSystemFile(mergedFileNamePreviousCycleLYZ1.Data(),gSystem->pwd());
627 if(previousCycle) previousCycle->Delete();
628 delete previousCycle;
629 }
630 maxCycleLYZ1++;
631 } // end of if(counterLYZ1 % cycle != 0)
632
633 // renaming the final merged output for LYZ1:
634 TString finalMergedFileNameLYZ1("mergedLYZ1analysis");
635 ((finalMergedFileNameLYZ1+=(type.Data()))+=maxCycleLYZ1)+=(".root");
636 TSystemFile *finalMergedFileLYZ1 = new TSystemFile(finalMergedFileNameLYZ1.Data(),gSystem->pwd());
637 TString defaultMergedFileNameLYZ1("mergedLYZ1analysis");
638 (defaultMergedFileNameLYZ1+=(type.Data()))+=(".root");
639 if(finalMergedFileLYZ1) finalMergedFileLYZ1->Rename(defaultMergedFileNameLYZ1.Data());
6b983408 640
641} // end of void mergeOutput(TString type="", const Int_t nRuns=-1, Int_t mode=mLocal)
b78897bc 642
6a6afe42 643void LoadSpreadLibrariesMO(const libModes mode) {
b78897bc 644
645 //--------------------------------------
646 // Load the needed libraries most of them already loaded by aliroot
647 //--------------------------------------
648 gSystem->Load("libTree.so");
649 gSystem->Load("libGeom.so");
650 gSystem->Load("libVMC.so");
651 gSystem->Load("libXMLIO.so");
652 gSystem->Load("libPhysics.so");
653
654 //----------------------------------------------------------
655 // >>>>>>>>>>> Local mode <<<<<<<<<<<<<<
656 //----------------------------------------------------------
657 if (mode==mLocal) {
658 //--------------------------------------------------------
659 // If you want to use already compiled libraries
660 // in the aliroot distribution
661 //--------------------------------------------------------
662
663 //==================================================================================
664 //load needed libraries:
665 gSystem->AddIncludePath("-I$ROOTSYS/include");
666 gSystem->Load("libTree.so");
667
668 // for AliRoot
669 gSystem->AddIncludePath("-I$ALICE_ROOT/include");
670 gSystem->Load("libANALYSIS.so");
671 gSystem->Load("libPWG2flowCommon.so");
c3a99c05 672 //cerr<<"libPWG2flowCommon.so loaded ..."<<endl;
b78897bc 673
674 }
675
676 else if (mode==mLocalSource) {
677
678 // In root inline compile
679
680 // Constants
681 gROOT->LoadMacro("AliFlowCommon/AliFlowCommonConstants.cxx+");
682 gROOT->LoadMacro("AliFlowCommon/AliFlowLYZConstants.cxx+");
683 gROOT->LoadMacro("AliFlowCommon/AliFlowCumuConstants.cxx+");
684
685 // Flow event
686 gROOT->LoadMacro("AliFlowCommon/AliFlowVector.cxx+");
687 gROOT->LoadMacro("AliFlowCommon/AliFlowTrackSimple.cxx+");
688 gROOT->LoadMacro("AliFlowCommon/AliFlowEventSimple.cxx+");
689
690 // Cuts
691 gROOT->LoadMacro("AliFlowCommon/AliFlowTrackSimpleCuts.cxx+");
692
693 // Output histosgrams
694 gROOT->LoadMacro("AliFlowCommon/AliFlowCommonHist.cxx+");
695 gROOT->LoadMacro("AliFlowCommon/AliFlowCommonHistResults.cxx+");
696 gROOT->LoadMacro("AliFlowCommon/AliFlowLYZHist1.cxx+");
697 gROOT->LoadMacro("AliFlowCommon/AliFlowLYZHist2.cxx+");
698
699 cout << "finished loading macros!" << endl;
700
6b983408 701 } // end of else if (mode==mLocalSource)
b78897bc 702
6a6afe42 703} // end of void LoadSpreadLibrariesMO(const libModes mode)
b78897bc 704
705