better ESD performance plot
[u/mrichter/AliRoot.git] / TRD / qaRec / macros / makeResults.C
index a75a336d677fc1f664433e556e80f2ffbd70eefd..3ed28f912c515fd4f263b628bdfaa04ff4cecbfd 100644 (file)
@@ -4,9 +4,7 @@
 //     "EFF"  : TRD Tracking Efficiency 
 //     "EFFC" : TRD Tracking Efficiency Combined (barrel + stand alone) - only in case of simulations
 //     "RES"  : TRD tracking Resolution
-//     "CAL"  : TRD calibration
 //     "PID"  : TRD PID - pion efficiency 
-//     "PIDR" : TRD PID - reference data
 //     "DET"  : Basic TRD Detector checks
 //     "NOFR" : Data set does not have AliESDfriends.root 
 //     "NOMC" : Data set does not have Monte Carlo Informations (real data), so all tasks which rely
@@ -24,7 +22,7 @@
 //   2. on Grid
 // char *BaseDir="/alice/cern.ch/user/m/mfasel/MinBiasProd/results/ppMinBias80000/";
 // TGrid::Connect("alien://");
-// TGridResult *res = gGrid->Query(BaseDir, "%/TRD.Task%.root");
+// TGridResult *res = gGrid->Query(BaseDir, "%/TRD.Performance.root");
 // TGridCollection *col = gGrid->OpenCollectionQuery(res);
 // col->Reset();
 // TMap *map = 0x0;
@@ -48,7 +46,6 @@
 #include <fstream>
 #include "TError.h"
 #include <TClass.h>
-#include <TFileMerger.h>
 #include <TCanvas.h>
 #include <TH1.h>
 #include <TGraph.h>
 #include <TObjString.h>
 #include <TString.h>
 #include <TROOT.h>
-#include <TSystem.h>
 #include <TStyle.h>
+#include <TGrid.h>
+#include <TGridResult.h>
+#include <TGridCollection.h>
 
 #include "qaRec/AliTRDrecoTask.h"
 
 #endif
 
 #include "AliTRDperformanceTrain.h"
+#include "helper.C"
 //#include "../../PWG1/macros/AddPerformanceTask.h"
 
 Char_t *libs[] = {"libProofPlayer.so", "libANALYSIS.so", "libTRDqaRec.so"};
 // define setup
-Bool_t mc      = kTRUE;
-Bool_t friends = kTRUE;
 TCanvas *c = 0x0;
-void mergeProd(const Char_t *mark="TRD.Performance.root", const Char_t *files=0);
+Bool_t mc(kFALSE), friends(kFALSE);
+
 void processTRD(TNamed* task);
-void processAliTask(TNamed* task);
+void processESD(TNamed* task);
 void makeResults(Char_t *opt = "ALL", const Char_t *files=0x0, Bool_t kGRID=kFALSE)
 {
   if(kGRID){
@@ -92,6 +91,9 @@ void makeResults(Char_t *opt = "ALL", const Char_t *files=0x0, Bool_t kGRID=kFAL
     return;
   }
 
+  mc = HasReadMCData(opt);
+  friends = HasReadFriendData(opt);
+
   gStyle->SetOptStat(0);
   gStyle->SetOptFit(0);
   if(files) mergeProd("TRD.Performance.root", files);
@@ -101,60 +103,18 @@ void makeResults(Char_t *opt = "ALL", const Char_t *files=0x0, Bool_t kGRID=kFAL
 
   TClass *ctask = new TClass;
   AliAnalysisTask *task = 0x0;
-  AliTRDrecoTask  *trd  = 0x0;
   for(Int_t itask = NTRDQATASKS; itask--;){
     if(!TSTBIT(fSteerTask, itask)) continue;
     new(ctask) TClass(fgkTRDtaskClassName[itask]);
     task = (AliAnalysisTask*)ctask->New();
 
     if(task->IsA()->InheritsFrom("AliTRDrecoTask")) processTRD(task);
-    else processAliTask(task);
+    else processESD(task);
   }
   delete ctask;
   delete c;
 }
 
-//______________________________________________________
-void mergeProd(const Char_t *mark, const Char_t *files)
-{
-  const Int_t kBatch = 20;
-
-  TFileMerger *fFM = new TFileMerger(1);
-  fFM->OutputFile(Form("%s/0_%s",  gSystem->ExpandPathName("$PWD"), mark));
-
-  Int_t jbatch = 0, nbatch = 0;
-  string filename;
-  ifstream file(files);
-  while(getline(file, filename)){
-    if(Int_t(filename.find(mark)) < 0) continue;
-    fFM->AddFile(filename.c_str()); nbatch++;
-    if(nbatch==kBatch){
-      //printf("MERGE BATCH %d [%d]\n", jbatch, nbatch);
-      fFM->Merge(); jbatch++;
-      new(fFM) TFileMerger(kTRUE);
-      fFM->OutputFile(Form("%s/%d_%s",  gSystem->ExpandPathName("$PWD"), jbatch, mark));
-      nbatch=0;
-    }
-  }
-  if(nbatch){
-    //printf("MERGE BATCH %d[%d]\n", jbatch, nbatch);
-    fFM->Merge();
-    jbatch++;
-  }
-  if(!jbatch){
-    delete fFM;
-    return;
-  }
-
-  new(fFM) TFileMerger(kTRUE);
-  fFM->OutputFile(Form("%s/%s",  gSystem->ExpandPathName("$PWD"), mark));
-  for(Int_t ib=jbatch; ib--;){
-    fFM->AddFile(Form("%s/%d_%s",  gSystem->ExpandPathName("$PWD"), ib, mark));
-    gSystem->Exec(Form("rm -f %s/%d_%s", gSystem->ExpandPathName("$PWD"), ib, mark));
-  }
-  fFM->Merge();
-  delete fFM;
-}
 
 //______________________________________________________
 void processTRD(TNamed *otask)
@@ -178,15 +138,35 @@ void processTRD(TNamed *otask)
   for(Int_t ipic=0; ipic<task->GetNRefFigures(); ipic++){
     c->Clear();
     if(!task->GetRefFigure(ipic)) continue;
-    c->SaveAs(Form("%s_Fig%02d.gif", task->GetName(), ipic));
+    c->SaveAs(Form("%s_Fig%02d.gif", task->GetName(), ipic), "gif");
   }
   delete task;
 }
 
 //______________________________________________________
-void processAliTask(TNamed *otask)
+void processESD(TNamed *otask)
 {
-  AliAnalysisTask *task = dynamic_cast<AliAnalysisTask*>(otask);
-  Info("makeResults.C", Form("Processing of task %s not implemented yet.", task->GetName()));
-  delete task;
-}
\ No newline at end of file
+  AliTRDcheckESD *esd = dynamic_cast<AliTRDcheckESD*>(otask);
+  if(!esd){
+    Info("makeResults.C", "Processing of task AliTRDcheckESD failed.");
+    delete otask;
+    return;
+  }
+
+  if(!esd->Load(Form("%s/TRD.Performance.root", gSystem->ExpandPathName("$PWD")))){
+    Error("makeResults.C", Form("Load data container for task %s failed.", esd->GetName()));
+    delete esd;
+    return;
+  }
+
+  esd->Terminate();
+
+  c->Clear();
+  Int_t ipic=0;
+  while((esd->GetRefFigure(ipic))){
+    c->SaveAs(Form("%s_Fig%02d.gif", esd->GetName(), ipic));
+    c->Clear();
+    ipic++;
+  }
+  delete esd;
+}