]>
Commit | Line | Data |
---|---|---|
b78897bc | 1 | enum libModes {mLocal,mLocalSource}; |
b78897bc | 2 | |
6a6afe42 | 3 | void 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 | 643 | void 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 |