]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG1/TRD/macros/helper.C
another codechecker warning fixed
[u/mrichter/AliRoot.git] / PWG1 / TRD / macros / helper.C
CommitLineData
1ee39b3a 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"
82b74bd6 8#include "TRandom.h"
1ee39b3a 9#include <fstream>
10#endif
11
12#ifndef HELPER_C
13#define HELPER_C
14
15//____________________________________________
16Int_t ParseOptions(Char_t *trd)
17{
8ee59659 18 Int_t fSteerTask = 0;
1ee39b3a 19 TObjArray *tasksArray = TString(trd).Tokenize(" ");
20 for(Int_t isel = 0; isel < tasksArray->GetEntriesFast(); isel++){
21 TString s = (dynamic_cast<TObjString *>(tasksArray->UncheckedAt(isel)))->String();
22 if(s.CompareTo("ALL") == 0){
23 for(Int_t itask = 0; itask < NTRDQATASKS; itask++) SETBITT(fSteerTask, itask);
24 continue;
e9d62bd2 25 } else if(s.CompareTo("NOMC") == 0 || s.CompareTo("NOFR") == 0){
26 continue; // taken care by special functions
1ee39b3a 27 } else {
28 Bool_t foundOpt = kFALSE;
a7fa310f 29 for(Int_t itask = 0; itask < NTRDTASKS; itask++){
1ee39b3a 30 if(s.CompareTo(fgkTRDtaskOpt[itask]) != 0) continue;
a7fa310f 31 SETBITT(fSteerTask, itask);
32 if(itask>1) SETBITT(fSteerTask, kInfoGen);
1ee39b3a 33 foundOpt = kTRUE;
34 break;
35 }
36 if(!foundOpt) Info("ParseOptions()", Form("TRD task %s not implemented (yet).", s.Data()));
37 }
38 }
39 // extra rules for calibration tasks
40 if(TSTBIT(fSteerTask, kCalibration)) SETBITT(fSteerTask, kCheckDET);
41 if(TSTBIT(fSteerTask, kMultiplicity)) SETBITT(fSteerTask, kEfficiency);
42 if(TSTBIT(fSteerTask, kEfficiencyMC)) SETBITT(fSteerTask, kEfficiency);
43 if(TSTBIT(fSteerTask, kClErrParam)) SETBITT(fSteerTask, kResolution);
44 if(TSTBIT(fSteerTask, kAlignment)) SETBITT(fSteerTask, kResolution);
45 if(TSTBIT(fSteerTask, kPIDRefMaker)) SETBITT(fSteerTask, kCheckPID);
45d01ff8 46 if(TSTBIT(fSteerTask, kV0Monitor)) SETBITT(fSteerTask, kCheckPID);
1ee39b3a 47
48 return fSteerTask;
49}
50
51//______________________________________________________
bd5a6c1b 52void mergeProd(const Char_t *mark, const Char_t *files, const Int_t nBatch = 20)
1ee39b3a 53{
1ee39b3a 54
bd5a6c1b 55
56 // Clear first predefines
82b74bd6 57 Char_t MERGE[8]; sprintf(MERGE, "%d.lst", (Int_t)gRandom->Uniform(9999.));
58 Char_t PURGE[8]; sprintf(PURGE, "%d.lst", (Int_t)gRandom->Uniform(9999.));
bd5a6c1b 59 gSystem->Exec("mkdir -p merge; rm -rf merge/*");
60
61 // purge file list
f0cc7f57 62 std::string filename;
63 std::ifstream file(files);
bd5a6c1b 64 Int_t iline(0);
1ee39b3a 65 while(getline(file, filename)){
66 if(Int_t(filename.find(mark)) < 0) continue;
bd5a6c1b 67 gSystem->Exec(Form("echo %s >> %s", filename.c_str(), PURGE));
68 iline++;
1ee39b3a 69 }
bd5a6c1b 70 Int_t nBatches(iline/nBatch);
1ee39b3a 71
bd5a6c1b 72 for(Int_t ibatch(0); ibatch<nBatches; ibatch++){
73 Int_t first(ibatch*nBatch);
74 if(!gSystem->Exec(Form("root.exe -b -q \'$ALICE_ROOT/PWG1/TRD/macros/mergeBatch.C(\"%s\", \"%s\", %d, %d)\'", mark, PURGE, nBatch, first))) continue;
75 gSystem->Exec(Form("mv %d_%s merge/", first, mark));
76 gSystem->Exec(Form("echo %s/merge/%d_%s >> %s", gSystem->ExpandPathName("$PWD"), first, mark, MERGE));
1ee39b3a 77 }
bd5a6c1b 78 gSystem->Exec(Form("root.exe -b -q \'$ALICE_ROOT/PWG1/TRD/macros/mergeBatch.C(\"%s\", \"%s\", %d, 0, kFALSE, kTRUE)\'", mark, MERGE, nBatches));
79 gSystem->Exec(Form("mv 0_%s %s", mark, mark));
80
81 gSystem->Exec(Form("rm -rfv %s %s merge", MERGE, PURGE));
1ee39b3a 82}
83
84#endif