1 enum libModes {mLocal,mLocalSource};
3 void mergeOutput(TString type="", Int_t nRuns=-1, Int_t mode=mLocal)
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
12 Int_t cycle = 50; // if you cannot have >= 50 open files in memory, simply decrease this number
14 // load needed libraries:
15 LoadSpreadLibrariesMO(mode);
17 // access the path of current directory:
18 TString pwd(gSystem->pwd());
21 // file mergers for the output file of each method separately:
23 TFileMerger *mcepFileMerger = new TFileMerger();
24 TString mergedFileNameMCEP("mergedMCEPanalysis");
25 (mergedFileNameMCEP+=(type.Data()))+=(".root");
26 TString pwdMCEP=pwd.Data();
27 if(!(gSystem->AccessPathName((pwdMCEP+=mergedFileNameMCEP).Data(),kFileExists)))
29 cout<<"WARNING: You already have a merged output for MCEP !!!!"<<endl;
32 //mcepFileMerger->OutputFile(mergedFileNameMCEP);
35 TFileMerger *spFileMerger = new TFileMerger();
36 TString mergedFileNameSP("mergedSPanalysis");
37 (mergedFileNameSP+=(type.Data()))+=(".root");
38 TString pwdSP=pwd.Data();
39 if(!(gSystem->AccessPathName((pwdSP+=mergedFileNameSP).Data(),kFileExists)))
41 cout<<"WARNING: You already have a merged output for SP !!!!"<<endl;
44 spFileMerger->OutputFile(mergedFileNameSP);
47 TFileMerger *gfcFileMerger = new TFileMerger();
48 TString mergedFileNameGFC("mergedGFCanalysis");
49 (mergedFileNameGFC+=(type.Data()))+=(".root");
50 TString pwdGFC=pwd.Data();
51 if(!(gSystem->AccessPathName((pwdGFC+=mergedFileNameGFC).Data(),kFileExists)))
53 cout<<"WARNING: You already have a merged output for GFC !!!!"<<endl;
56 gfcFileMerger->OutputFile(mergedFileNameGFC);
59 TFileMerger *qcFileMerger = new TFileMerger();
60 TString mergedFileNameQC("mergedQCanalysis");
61 (mergedFileNameQC+=(type.Data()))+=(".root");
62 TString pwdQC=pwd.Data();
63 if(!(gSystem->AccessPathName((pwdQC+=mergedFileNameQC).Data(),kFileExists)))
65 cout<<"WARNING: You already have a merged output for QC !!!!"<<endl;
68 qcFileMerger->OutputFile(mergedFileNameQC);
71 TFileMerger *fqdFileMerger = new TFileMerger();
72 TString mergedFileNameFQD("mergedFQDanalysis");
73 (mergedFileNameFQD+=(type.Data()))+=(".root");
74 TString pwdFQD=pwd.Data();
75 if(!(gSystem->AccessPathName((pwdFQD+=mergedFileNameFQD).Data(),kFileExists)))
77 cout<<"WARNING: You already have a merged output for FQD !!!!"<<endl;
80 fqdFileMerger->OutputFile(mergedFileNameFQD);
83 TFileMerger *lyz1FileMerger = new TFileMerger();
84 TString mergedFileNameLYZ1("mergedLYZ1analysis");
85 (mergedFileNameLYZ1+=(type.Data()))+=(".root");
86 TString pwdLYZ1=pwd.Data();
87 if(!(gSystem->AccessPathName((pwdLYZ1+=mergedFileNameLYZ1).Data(),kFileExists)))
89 cout<<"WARNING: You already have a merged output for LYZ1 !!!!"<<endl;
92 lyz1FileMerger->OutputFile(mergedFileNameLYZ1);
95 TFileMerger *lyz2FileMerger = new TFileMerger();
96 TString mergedFileNameLYZ2("mergedLYZ2analysis");
97 (mergedFileNameLYZ2+=(type.Data()))+=(".root");
98 TString pwdLYZ2=pwd.Data();
99 if(!(gSystem->AccessPathName((pwdLYZ2+=mergedFileNameLYZ2).Data(),kFileExists)))
101 cout<<"WARNING: You already have a merged output for LYZ2 !!!!"<<endl;
104 lyz2FileMerger->OutputFile(mergedFileNameLYZ2);
107 TFileMerger *lyzepFileMerger = new TFileMerger();
108 TString mergedFileNameLYZEP("mergedLYZEPanalysis");
109 (mergedFileNameLYZEP+=(type.Data()))+=(".root");
110 TString pwdLYZEP=pwd.Data();
111 if(!(gSystem->AccessPathName((pwdLYZEP+=mergedFileNameLYZEP).Data(),kFileExists)))
113 cout<<"WARNING: You already have a merged output for LYZEP !!!!"<<endl;
116 lyzepFileMerger->OutputFile(mergedFileNameLYZEP);
119 TString execDir(gSystem->pwd());
120 TSystemDirectory* baseDir = new TSystemDirectory(".",execDir.Data());
121 TList* dirList = baseDir->GetListOfFiles();
122 Int_t nDirs = dirList->GetEntries();
123 gSystem->cd(execDir);
127 Int_t counterMCEP = 0;
128 Int_t maxCycleMCEP = 0;
130 Int_t maxCycleSP = 0;
131 Int_t counterGFC = 0;
132 Int_t maxCycleGFC = 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;
140 if(cycle>nDirs) // to be improved (temporary workaroud)
142 cout<<"WARNING: Cycle "<<cycle<<" is too big. Decrease it's value in the declaration Int_t cycle in the macro !!!!"<<endl;
146 for(Int_t iDir=0;iDir<nDirs;++iDir)
148 TSystemFile* presentDir = (TSystemFile*)dirList->At(iDir);
149 if(!presentDir || !presentDir->IsDirectory() || strcmp(presentDir->GetName(), ".") == 0 ||
150 strcmp(presentDir->GetName(), "..") == 0) continue;
154 if (counter >= nRuns) break;
157 TString presentDirName(gSystem->pwd());
158 presentDirName += "/";
159 presentDirName += presentDir->GetName();
160 presentDirName += "/";
162 // accessing the output .root files from independent analysis for each method:
164 TString fileNameMCEP = presentDirName;
165 ((fileNameMCEP+="outputMCEPanalysis")+=type.Data())+=".root";
166 if(!(gSystem->AccessPathName(fileNameMCEP.Data(),kFileExists)))
168 mcepFileMerger->AddFile(fileNameMCEP.Data());
172 cout<<"WARNING: Couldn't find a file "<<fileNameMCEP.Data()<<". Merging will continue without this file."<<endl;
175 if(counterMCEP % cycle == 0)
177 maxCycleMCEP = counterMCEP/cycle;
178 TString mergedFileNameCurrentCycleMCEP("mergedMCEPanalysis");
179 ((mergedFileNameCurrentCycleMCEP+=(type.Data()))+=counterMCEP/cycle)+=(".root");
180 mcepFileMerger->OutputFile(mergedFileNameCurrentCycleMCEP);
182 TString mergedFileNamePreviousCycleMCEP("mergedMCEPanalysis");
183 ((mergedFileNamePreviousCycleMCEP+=(type.Data()))+=(counterMCEP/cycle-1))+=(".root");
184 if(!(gSystem->AccessPathName(mergedFileNamePreviousCycleMCEP.Data(),kFileExists)))
186 mcepFileMerger->AddFile(mergedFileNamePreviousCycleMCEP.Data());
189 Bool_t mcepMerged = kFALSE;
192 mcepMerged = mcepFileMerger->Merge();
193 mcepFileMerger->Reset();
198 TSystemFile *previousCycle = new TSystemFile(mergedFileNamePreviousCycleMCEP.Data(),gSystem->pwd());
199 if(previousCycle) previousCycle->Delete();
200 delete previousCycle;
202 } // end of if(counterMCEP % cycle == 0)
205 TString fileNameSP = presentDirName;
206 ((fileNameSP+="outputSPanalysis")+=type.Data())+=".root";
207 if(!(gSystem->AccessPathName(fileNameSP.Data(),kFileExists)))
209 spFileMerger->AddFile(fileNameSP.Data());
213 cout<<"WARNING: Couldn't find a file "<<fileNameSP.Data()<<". Merging will continue without this file."<<endl;
216 if(counterSP % cycle == 0)
218 maxCycleSP = counterSP/cycle;
219 TString mergedFileNameCurrentCycleSP("mergedSPanalysis");
220 ((mergedFileNameCurrentCycleSP+=(type.Data()))+=counterSP/cycle)+=(".root");
221 spFileMerger->OutputFile(mergedFileNameCurrentCycleSP);
223 TString mergedFileNamePreviousCycleSP("mergedSPanalysis");
224 ((mergedFileNamePreviousCycleSP+=(type.Data()))+=(counterSP/cycle-1))+=(".root");
225 if(!(gSystem->AccessPathName(mergedFileNamePreviousCycleSP.Data(),kFileExists)))
227 spFileMerger->AddFile(mergedFileNamePreviousCycleSP.Data());
230 Bool_t spMerged = kFALSE;
233 spMerged = spFileMerger->Merge();
234 spFileMerger->Reset();
239 TSystemFile *previousCycle = new TSystemFile(mergedFileNamePreviousCycleSP.Data(),gSystem->pwd());
240 if(previousCycle) previousCycle->Delete();
241 delete previousCycle;
243 } // end of if(counterSP % cycle == 0)
246 TString fileNameGFC = presentDirName;
247 ((fileNameGFC+="outputGFCanalysis")+=type.Data())+=".root";
248 if(!(gSystem->AccessPathName(fileNameGFC.Data(),kFileExists)))
250 gfcFileMerger->AddFile(fileNameGFC.Data());
254 cout<<"WARNING: Couldn't find a file "<<fileNameGFC.Data()<<". Merging will continue without this file."<<endl;
257 if(counterGFC % cycle == 0)
259 maxCycleGFC = counterGFC/cycle;
260 TString mergedFileNameCurrentCycleGFC("mergedGFCanalysis");
261 ((mergedFileNameCurrentCycleGFC+=(type.Data()))+=counterGFC/cycle)+=(".root");
262 gfcFileMerger->OutputFile(mergedFileNameCurrentCycleGFC);
264 TString mergedFileNamePreviousCycleGFC("mergedGFCanalysis");
265 ((mergedFileNamePreviousCycleGFC+=(type.Data()))+=(counterGFC/cycle-1))+=(".root");
266 if(!(gSystem->AccessPathName(mergedFileNamePreviousCycleGFC.Data(),kFileExists)))
268 gfcFileMerger->AddFile(mergedFileNamePreviousCycleGFC.Data());
271 Bool_t gfcMerged = kFALSE;
274 gfcMerged = gfcFileMerger->Merge();
275 gfcFileMerger->Reset();
280 TSystemFile *previousCycle = new TSystemFile(mergedFileNamePreviousCycleGFC.Data(),gSystem->pwd());
281 if(previousCycle) previousCycle->Delete();
282 delete previousCycle;
284 } // end of if(counterGFC % cycle == 0)
287 TString fileNameQC = presentDirName;
288 ((fileNameQC+="outputQCanalysis")+=type.Data())+=".root";
289 if(!(gSystem->AccessPathName(fileNameQC.Data(),kFileExists)))
291 qcFileMerger->AddFile(fileNameQC.Data());
295 cout<<"WARNING: Couldn't find a file "<<fileNameQC.Data()<<". Merging will continue without this file."<<endl;
298 if(counterQC % cycle == 0)
300 maxCycleQC = counterQC/cycle;
301 TString mergedFileNameCurrentCycleQC("mergedQCanalysis");
302 ((mergedFileNameCurrentCycleQC+=(type.Data()))+=counterQC/cycle)+=(".root");
303 qcFileMerger->OutputFile(mergedFileNameCurrentCycleQC);
305 TString mergedFileNamePreviousCycleQC("mergedQCanalysis");
306 ((mergedFileNamePreviousCycleQC+=(type.Data()))+=(counterQC/cycle-1))+=(".root");
307 if(!(gSystem->AccessPathName(mergedFileNamePreviousCycleQC.Data(),kFileExists)))
309 qcFileMerger->AddFile(mergedFileNamePreviousCycleQC.Data());
312 Bool_t qcMerged = kFALSE;
315 qcMerged = qcFileMerger->Merge();
316 qcFileMerger->Reset();
321 TSystemFile *previousCycle = new TSystemFile(mergedFileNamePreviousCycleQC.Data(),gSystem->pwd());
322 if(previousCycle) previousCycle->Delete();
323 delete previousCycle;
325 } // end of if(counterQC % cycle == 0)
328 TString fileNameFQD = presentDirName;
329 ((fileNameFQD+="outputFQDanalysis")+=type.Data())+=".root";
330 if(!(gSystem->AccessPathName(fileNameFQD.Data(),kFileExists)))
332 fqdFileMerger->AddFile(fileNameFQD.Data());
336 cout<<"WARNING: Couldn't find a file "<<fileNameFQD.Data()<<". Merging will continue without this file."<<endl;
339 if(counterFQD % cycle == 0)
341 maxCycleFQD = counterFQD/cycle;
342 TString mergedFileNameCurrentCycleFQD("mergedFQDanalysis");
343 ((mergedFileNameCurrentCycleFQD+=(type.Data()))+=counterFQD/cycle)+=(".root");
344 fqdFileMerger->OutputFile(mergedFileNameCurrentCycleFQD);
346 TString mergedFileNamePreviousCycleFQD("mergedFQDanalysis");
347 ((mergedFileNamePreviousCycleFQD+=(type.Data()))+=(counterFQD/cycle-1))+=(".root");
348 if(!(gSystem->AccessPathName(mergedFileNamePreviousCycleFQD.Data(),kFileExists)))
350 fqdFileMerger->AddFile(mergedFileNamePreviousCycleFQD.Data());
353 Bool_t fqdMerged = kFALSE;
356 fqdMerged = fqdFileMerger->Merge();
357 fqdFileMerger->Reset();
362 TSystemFile *previousCycle = new TSystemFile(mergedFileNamePreviousCycleFQD.Data(),gSystem->pwd());
363 if(previousCycle) previousCycle->Delete();
364 delete previousCycle;
366 } // end of if(counterFQD % cycle == 0)
369 TString fileNameLYZ1 = presentDirName;
370 ((fileNameLYZ1+="outputLYZ1analysis")+=type.Data())+=".root";
371 if(!(gSystem->AccessPathName(fileNameLYZ1.Data(),kFileExists)))
373 lyz1FileMerger->AddFile(fileNameLYZ1.Data());
377 cout<<"WARNING: Couldn't find a file "<<fileNameLYZ1.Data()<<". Merging will continue without this file."<<endl;
380 if(counterLYZ1 % cycle == 0)
382 maxCycleLYZ1 = counterLYZ1/cycle;
383 TString mergedFileNameCurrentCycleLYZ1("mergedLYZ1analysis");
384 ((mergedFileNameCurrentCycleLYZ1+=(type.Data()))+=counterLYZ1/cycle)+=(".root");
385 lyz1FileMerger->OutputFile(mergedFileNameCurrentCycleLYZ1);
387 TString mergedFileNamePreviousCycleLYZ1("mergedLYZ1analysis");
388 ((mergedFileNamePreviousCycleLYZ1+=(type.Data()))+=(counterLYZ1/cycle-1))+=(".root");
389 if(!(gSystem->AccessPathName(mergedFileNamePreviousCycleLYZ1.Data(),kFileExists)))
391 lyz1FileMerger->AddFile(mergedFileNamePreviousCycleLYZ1.Data());
394 Bool_t lyz1Merged = kFALSE;
397 lyz1Merged = lyz1FileMerger->Merge();
398 lyz1FileMerger->Reset();
403 TSystemFile *previousCycle = new TSystemFile(mergedFileNamePreviousCycleLYZ1.Data(),gSystem->pwd());
404 if(previousCycle) previousCycle->Delete();
405 delete previousCycle;
407 } // end of if(counterLYZ1 % cycle == 0)
411 } // end of for(Int_t iDir=0;iDir<nDirs;++iDir)
414 if(counterMCEP % cycle != 0)
416 TString mergedFileNameCurrentCycleMCEP("mergedMCEPanalysis");
417 ((mergedFileNameCurrentCycleMCEP+=(type.Data()))+=(maxCycleMCEP+1))+=(".root");
418 mcepFileMerger->OutputFile(mergedFileNameCurrentCycleMCEP);
420 TString mergedFileNamePreviousCycleMCEP("mergedMCEPanalysis");
421 ((mergedFileNamePreviousCycleMCEP+=(type.Data()))+=(maxCycleMCEP))+=(".root");
422 if(!(gSystem->AccessPathName(mergedFileNamePreviousCycleMCEP.Data(),kFileExists)))
424 mcepFileMerger->AddFile(mergedFileNamePreviousCycleMCEP.Data());
427 Bool_t mcepMerged = kFALSE;
430 mcepMerged = mcepFileMerger->Merge();
431 mcepFileMerger->Reset();
436 TSystemFile *previousCycle = new TSystemFile(mergedFileNamePreviousCycleMCEP.Data(),gSystem->pwd());
437 if(previousCycle) previousCycle->Delete();
438 delete previousCycle;
441 } // end of if(counterMCEP % cycle != 0)
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());
452 if(counterSP % cycle != 0)
454 TString mergedFileNameCurrentCycleSP("mergedSPanalysis");
455 ((mergedFileNameCurrentCycleSP+=(type.Data()))+=(maxCycleSP+1))+=(".root");
456 spFileMerger->OutputFile(mergedFileNameCurrentCycleSP);
458 TString mergedFileNamePreviousCycleSP("mergedSPanalysis");
459 ((mergedFileNamePreviousCycleSP+=(type.Data()))+=(maxCycleSP))+=(".root");
460 if(!(gSystem->AccessPathName(mergedFileNamePreviousCycleSP.Data(),kFileExists)))
462 spFileMerger->AddFile(mergedFileNamePreviousCycleSP.Data());
465 Bool_t spMerged = kFALSE;
468 spMerged = spFileMerger->Merge();
469 spFileMerger->Reset();
474 TSystemFile *previousCycle = new TSystemFile(mergedFileNamePreviousCycleSP.Data(),gSystem->pwd());
475 if(previousCycle) previousCycle->Delete();
476 delete previousCycle;
479 } // end of if(counterSP % cycle != 0)
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());
490 if(counterGFC % cycle != 0)
492 TString mergedFileNameCurrentCycleGFC("mergedGFCanalysis");
493 ((mergedFileNameCurrentCycleGFC+=(type.Data()))+=(maxCycleGFC+1))+=(".root");
494 gfcFileMerger->OutputFile(mergedFileNameCurrentCycleGFC);
496 TString mergedFileNamePreviousCycleGFC("mergedGFCanalysis");
497 ((mergedFileNamePreviousCycleGFC+=(type.Data()))+=(maxCycleGFC))+=(".root");
498 if(!(gSystem->AccessPathName(mergedFileNamePreviousCycleGFC.Data(),kFileExists)))
500 gfcFileMerger->AddFile(mergedFileNamePreviousCycleGFC.Data());
503 Bool_t gfcMerged = kFALSE;
506 gfcMerged = gfcFileMerger->Merge();
507 gfcFileMerger->Reset();
512 TSystemFile *previousCycle = new TSystemFile(mergedFileNamePreviousCycleGFC.Data(),gSystem->pwd());
513 if(previousCycle) previousCycle->Delete();
514 delete previousCycle;
517 } // end of if(counterGFC % cycle != 0)
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());
528 if(counterQC % cycle != 0)
530 TString mergedFileNameCurrentCycleQC("mergedQCanalysis");
531 ((mergedFileNameCurrentCycleQC+=(type.Data()))+=(maxCycleQC+1))+=(".root");
532 qcFileMerger->OutputFile(mergedFileNameCurrentCycleQC);
534 TString mergedFileNamePreviousCycleQC("mergedQCanalysis");
535 ((mergedFileNamePreviousCycleQC+=(type.Data()))+=(maxCycleQC))+=(".root");
536 if(!(gSystem->AccessPathName(mergedFileNamePreviousCycleQC.Data(),kFileExists)))
538 qcFileMerger->AddFile(mergedFileNamePreviousCycleQC.Data());
541 Bool_t qcMerged = kFALSE;
544 qcMerged = qcFileMerger->Merge();
545 qcFileMerger->Reset();
550 TSystemFile *previousCycle = new TSystemFile(mergedFileNamePreviousCycleQC.Data(),gSystem->pwd());
551 if(previousCycle) previousCycle->Delete();
552 delete previousCycle;
555 } // end of if(counterQC % cycle != 0)
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());
566 if(counterFQD % cycle != 0)
568 TString mergedFileNameCurrentCycleFQD("mergedFQDanalysis");
569 ((mergedFileNameCurrentCycleFQD+=(type.Data()))+=(maxCycleFQD+1))+=(".root");
570 fqdFileMerger->OutputFile(mergedFileNameCurrentCycleFQD);
572 TString mergedFileNamePreviousCycleFQD("mergedFQDanalysis");
573 ((mergedFileNamePreviousCycleFQD+=(type.Data()))+=(maxCycleFQD))+=(".root");
574 if(!(gSystem->AccessPathName(mergedFileNamePreviousCycleFQD.Data(),kFileExists)))
576 fqdFileMerger->AddFile(mergedFileNamePreviousCycleFQD.Data());
579 Bool_t fqdMerged = kFALSE;
582 fqdMerged = fqdFileMerger->Merge();
583 fqdFileMerger->Reset();
588 TSystemFile *previousCycle = new TSystemFile(mergedFileNamePreviousCycleFQD.Data(),gSystem->pwd());
589 if(previousCycle) previousCycle->Delete();
590 delete previousCycle;
593 } // end of if(counterFQD % cycle != 0)
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());
604 if(counterLYZ1 % cycle != 0)
606 TString mergedFileNameCurrentCycleLYZ1("mergedLYZ1analysis");
607 ((mergedFileNameCurrentCycleLYZ1+=(type.Data()))+=(maxCycleLYZ1+1))+=(".root");
608 lyz1FileMerger->OutputFile(mergedFileNameCurrentCycleLYZ1);
610 TString mergedFileNamePreviousCycleLYZ1("mergedLYZ1analysis");
611 ((mergedFileNamePreviousCycleLYZ1+=(type.Data()))+=(maxCycleLYZ1))+=(".root");
612 if(!(gSystem->AccessPathName(mergedFileNamePreviousCycleLYZ1.Data(),kFileExists)))
614 lyz1FileMerger->AddFile(mergedFileNamePreviousCycleLYZ1.Data());
617 Bool_t lyz1Merged = kFALSE;
620 lyz1Merged = lyz1FileMerger->Merge();
621 lyz1FileMerger->Reset();
626 TSystemFile *previousCycle = new TSystemFile(mergedFileNamePreviousCycleLYZ1.Data(),gSystem->pwd());
627 if(previousCycle) previousCycle->Delete();
628 delete previousCycle;
631 } // end of if(counterLYZ1 % cycle != 0)
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());
641 } // end of void mergeOutput(TString type="", const Int_t nRuns=-1, Int_t mode=mLocal)
643 void LoadSpreadLibrariesMO(const libModes mode) {
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");
654 //----------------------------------------------------------
655 // >>>>>>>>>>> Local mode <<<<<<<<<<<<<<
656 //----------------------------------------------------------
658 //--------------------------------------------------------
659 // If you want to use already compiled libraries
660 // in the aliroot distribution
661 //--------------------------------------------------------
663 //==================================================================================
664 //load needed libraries:
665 gSystem->AddIncludePath("-I$ROOTSYS/include");
666 gSystem->Load("libTree.so");
669 gSystem->AddIncludePath("-I$ALICE_ROOT/include");
670 gSystem->Load("libANALYSIS.so");
671 gSystem->Load("libPWG2flowCommon.so");
672 //cerr<<"libPWG2flowCommon.so loaded ..."<<endl;
676 else if (mode==mLocalSource) {
678 // In root inline compile
681 gROOT->LoadMacro("AliFlowCommon/AliFlowCommonConstants.cxx+");
682 gROOT->LoadMacro("AliFlowCommon/AliFlowLYZConstants.cxx+");
683 gROOT->LoadMacro("AliFlowCommon/AliFlowCumuConstants.cxx+");
686 gROOT->LoadMacro("AliFlowCommon/AliFlowVector.cxx+");
687 gROOT->LoadMacro("AliFlowCommon/AliFlowTrackSimple.cxx+");
688 gROOT->LoadMacro("AliFlowCommon/AliFlowEventSimple.cxx+");
691 gROOT->LoadMacro("AliFlowCommon/AliFlowTrackSimpleCuts.cxx+");
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+");
699 cout << "finished loading macros!" << endl;
701 } // end of else if (mode==mLocalSource)
703 } // end of void LoadSpreadLibrariesMO(const libModes mode)