Char_t *libs[] = {"libProofPlayer.so", "libANALYSIS.so", "libTRDqaRec.so", "libPyROOT"};
-void makeResults(Char_t* dir=0x0, Char_t *tasks = "ALL")
+void makeResults(Char_t *args = "ALL")
{
// Load Libraries in interactive mode
Int_t nlibs = static_cast<Int_t>(sizeof(libs)/sizeof(Char_t *));
for(Int_t ilib=0; ilib<nlibs; ilib++){
- if(!gSystem->Load(libs[ilib])) continue;
+ if(gSystem->Load(libs[ilib]) >= 0) continue;
printf("Failed to load %s.\n", libs[ilib]);
return;
}
Bool_t mc = kTRUE;
Bool_t friends = kTRUE;
+ Char_t *dir = 0x0;
+ TString tasks;
+ TObjArray *argsArray = TString(args).Tokenize("?");
+ switch(argsArray->GetEntriesFast()){
+ case 1:
+ tasks = ((TObjString*)(*argsArray)[0])->String();
+ dir=0x0;
+ break;
+ case 2:
+ tasks = ((TObjString*)(*argsArray)[0])->String();
+ dir = ((TObjString*)(*argsArray)[1])->GetName();
+ break;
+ default:
+ printf("Macro accepts 2 arguments separated by a '?'.\n");
+ printf("arg #1 : list of tasks/options\n");
+ printf("arg #2 : base directory to be processed\n");
+ return;
+ }
+
// select tasks to process; we should move it to an
// individual function and move the task identifiers
// outside the const space
- TObjArray *tasksArray = TString(tasks).Tokenize(" ");
+ TObjArray *tasksArray = tasks.Tokenize(" ");
Int_t fSteerTask = 0;
for(Int_t isel = 0; isel < tasksArray->GetEntriesFast(); isel++){
TString s = (dynamic_cast<TObjString *>(tasksArray->UncheckedAt(isel)))->String();
TObjArray *fContainer = 0x0;
AliTRDrecoTask *task = 0x0;
- printf("\n\tPROCESSING DATA FOR TASKS [%d]:\n", fSteerTask);
+ if(gSystem->AccessPathName(Form("%s/merge", gSystem->ExpandPathName("$PWD")))) gSystem->Exec(Form("mkdir -v %s/merge", gSystem->ExpandPathName("$PWD")));
+
+ printf("\n\tPROCESSING DATA FOR TASKS [%b]:\n", fSteerTask);
for(Int_t itask = 1; itask <fknTasks; itask++){
if(!TESTBIT(fSteerTask, itask)) continue;
printf("\t%s [%s]\n", task->GetTitle(), task->GetName());
// setup filelist
- TString pathname(dir ? "." : gSystem->ExpandPathName("$PWD"));
+ TString pathname = gSystem->ExpandPathName( dir ? dir : "$PWD");
TString filestring((const Char_t*) pyshell->Eval(Form("commands.getstatusoutput(\"find %s | grep TRD.Task%s.root\")[1]", pathname.Data(), task->GetName())));
TObjArray *filenames = filestring.Tokenize("\n");
Int_t nFiles = filenames->GetEntriesFast();
if(nFiles>1){
fFM = new(fFM) TFileMerger(kTRUE);
- fFM->OutputFile(Form("merge/TRD.Task%s.root", task->GetName()));
+ fFM->OutputFile(Form("%s/merge/TRD.Task%s.root", gSystem->ExpandPathName("$PWD"), task->GetName()));
for(Int_t ifile = 0; ifile < nFiles; ifile++){
TString filename = (dynamic_cast<TObjString *>(filenames->UncheckedAt(ifile)))->String();
if(filename.Contains("merge")) continue;
- printf("\tProcessing %s ...\n", filename.Data());
+ //printf("\tProcessing %s ...\n", filename.Data());
fFM->AddFile(filename.Data());
}
fFM->Merge();
fFM->~TFileMerger();
- task->Load(Form("%s/merge/TRD.Task%s.root",gSystem->ExpandPathName("$PWD"), task->GetName()));
+ task->Load(Form("%s/merge/TRD.Task%s.root", gSystem->ExpandPathName("$PWD"), task->GetName()));
} else task->Load((dynamic_cast<TObjString *>(filenames->UncheckedAt(0)))->String().Data());
-
if(!(fContainer = task->Container())) {
delete task;
delete ctask;
if(o->InheritsFrom("TH1")){
h = dynamic_cast<TH1*>(o);
- h->Draw("pl");
+ h->Draw(opt);
} else if(o->InheritsFrom("TGraph")){
g = dynamic_cast<TGraph*>(o);
- g->Draw("apl");
+ g->Draw(Form("a%s", opt));
} else{
printf("No idea how to plot object of type %s.\n", o->IsA()->GetName());
printf("Please teach me.\n");
if(!(o = fContainer->At(ig))) continue;
if(o->InheritsFrom("TH1")){
h = dynamic_cast<TH1*>(o);
- h->Draw("plsame");
+ h->Draw(Form("%ssame", opt));
} else if(o->InheritsFrom("TGraph")){
g = dynamic_cast<TGraph*>(o);
- g->Draw("pl");
+ g->Draw(opt);
}
}
c->SaveAs(Form("%s_fig%d.gif", task->GetName(), ipic));