]>
Commit | Line | Data |
---|---|---|
199fb43b | 1 | #if ! defined (__CINT__) || defined (__MAKECINT__) |
2 | #include "TFileMerger.h" | |
3 | #include "TSystem.h" | |
4 | #include "TString.h" | |
5 | #include "TObjString.h" | |
6 | #include "TObjArray.h" | |
7 | #include "TError.h" | |
8 | #endif | |
9 | ||
10 | //____________________________________________ | |
11 | Int_t ParseOptions(Char_t *trd) | |
12 | { | |
13 | Int_t fSteerTask = 1; | |
14 | TObjArray *tasksArray = TString(trd).Tokenize(" "); | |
15 | for(Int_t isel = 0; isel < tasksArray->GetEntriesFast(); isel++){ | |
16 | TString s = (dynamic_cast<TObjString *>(tasksArray->UncheckedAt(isel)))->String(); | |
17 | if(s.CompareTo("ALL") == 0){ | |
18 | for(Int_t itask = 0; itask < NTRDQATASKS; itask++) SETBIT(fSteerTask, itask); | |
19 | continue; | |
20 | } else { | |
21 | Bool_t foundOpt = kFALSE; | |
22 | for(Int_t itask = 2; itask < NTRDTASKS; itask++){ | |
23 | if(s.CompareTo(fgkTRDtaskOpt[itask]) != 0) continue; | |
24 | SETBIT(fSteerTask, itask); SETBIT(fSteerTask, kInfoGen); | |
25 | foundOpt = kTRUE; | |
26 | break; | |
27 | } | |
28 | if(!foundOpt) Info("ParseOptions()", Form("TRD task %s not implemented (yet).", s.Data())); | |
29 | } | |
30 | } | |
31 | // extra rules for calibration tasks | |
32 | // if(TSTBIT(fSteerTask, kCalibration)) SETBIT(fSteerTask, kCheckDET); | |
33 | // if(TSTBIT(fSteerTask, kMultiplicity)) SETBIT(fSteerTask, kEfficiency); | |
34 | // if(TSTBIT(fSteerTask, kEfficiencyMC)) SETBIT(fSteerTask, kEfficiency); | |
35 | // if(TSTBIT(fSteerTask, kClErrParam)) SETBIT(fSteerTask, kResolution); | |
36 | // if(TSTBIT(fSteerTask, kAlignment)) SETBIT(fSteerTask, kResolution); | |
37 | // if(TSTBIT(fSteerTask, kPIDRefMaker)) SETBIT(fSteerTask, kCheckPID); | |
38 | ||
39 | return fSteerTask; | |
40 | } | |
41 | ||
42 | // //______________________________________________________ | |
43 | void mergeProd(const Char_t *mark, const Char_t *files, const Int_t kBatch = 20) | |
44 | { | |
45 | TFileMerger *fFM = 0x0; | |
46 | ||
47 | Int_t jbatch = 0, nbatch = 0; | |
48 | string filename; | |
49 | ifstream file(files); | |
50 | while(getline(file, filename)){ | |
51 | if(Int_t(filename.find(mark)) < 0) continue; | |
52 | if(!nbatch){ | |
53 | if(fFM) fFM = new(fFM) TFileMerger(kTRUE); | |
54 | else fFM = new TFileMerger(kTRUE); | |
55 | fFM->OutputFile(Form("%s/%d_%s", gSystem->ExpandPathName("$PWD"), jbatch, mark)); | |
56 | } | |
57 | fFM->AddFile(filename.c_str()); nbatch++; | |
58 | if(nbatch==kBatch){ | |
59 | printf("MERGING BATCH %d [%d] ... \n", jbatch, nbatch); | |
60 | fFM->Merge(); jbatch++; | |
61 | nbatch=0; | |
62 | } | |
63 | } | |
64 | if(nbatch){ | |
65 | printf("MERGING INCOMPLETE BATCH %d [%d] ... \n", jbatch, nbatch); | |
66 | fFM->Merge(); jbatch++; | |
67 | } | |
68 | if(!jbatch){ | |
69 | delete fFM; | |
70 | return; | |
71 | } | |
72 | ||
73 | new(fFM) TFileMerger(kTRUE); | |
74 | fFM->OutputFile(Form("%s/%s", gSystem->ExpandPathName("$PWD"), mark)); | |
75 | for(Int_t ib=jbatch; ib--;){ | |
76 | fFM->AddFile(Form("%s/%d_%s", gSystem->ExpandPathName("$PWD"), ib, mark)); | |
77 | gSystem->Exec(Form("rm -f %s/%d_%s", gSystem->ExpandPathName("$PWD"), ib, mark)); | |
78 | } | |
79 | fFM->Merge(); | |
80 | delete fFM; | |
81 | } |