// "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
// 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;
#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){
return;
}
+ mc = HasReadMCData(opt);
+ friends = HasReadFriendData(opt);
+
gStyle->SetOptStat(0);
gStyle->SetOptFit(0);
if(files) mergeProd("TRD.Performance.root", files);
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)
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;
+}