From: abercuci Date: Wed, 17 Dec 2008 19:39:43 +0000 (+0000) Subject: update train X-Git-Url: http://git.uio.no/git/?a=commitdiff_plain;h=e15179be234d7994b2a35df047d54673aa206dcf;p=u%2Fmrichter%2FAliRoot.git update train - extend functionality for using XML collections from AliEn; - separate QA from calibration tasks. Only QA tasks are run by default; - modify interface for the fuction GetRefFigure (returns Bool_t); - simplify interface for makeResults.C macro (identical to run.C). Also enable running multiple tasks in the same call. --- diff --git a/TRD/qaRec/AliTRDalignmentTask.cxx b/TRD/qaRec/AliTRDalignmentTask.cxx index 9a1557bcbb4..f169b61c1af 100644 --- a/TRD/qaRec/AliTRDalignmentTask.cxx +++ b/TRD/qaRec/AliTRDalignmentTask.cxx @@ -111,14 +111,6 @@ TH1* AliTRDalignmentTask::PlotTrackPoints(const AliTRDtrackV1 *track) } - -//________________________________________________________ -void AliTRDalignmentTask::GetRefFigure(Int_t ifig) -{ - AliInfo(Form("Reference plot [%d] missing result", ifig)); -} - - //________________________________________________________ void AliTRDalignmentTask::Terminate(Option_t *) { diff --git a/TRD/qaRec/AliTRDalignmentTask.h b/TRD/qaRec/AliTRDalignmentTask.h index 4f14a720174..35fd0868707 100644 --- a/TRD/qaRec/AliTRDalignmentTask.h +++ b/TRD/qaRec/AliTRDalignmentTask.h @@ -28,7 +28,6 @@ public: void CreateOutputObjects(); void Exec(Option_t *opt); - void GetRefFigure(Int_t ifig); TObjArray* Histos(); TH1* PlotTrackPoints(const AliTRDtrackV1 *track=0x0); Bool_t PostProcess(){return kTRUE;} diff --git a/TRD/qaRec/AliTRDcheckDetector.cxx b/TRD/qaRec/AliTRDcheckDetector.cxx index 667c7645eed..41b6dc82aca 100644 --- a/TRD/qaRec/AliTRDcheckDetector.cxx +++ b/TRD/qaRec/AliTRDcheckDetector.cxx @@ -206,7 +206,7 @@ Bool_t AliTRDcheckDetector::PostProcess(){ } //_______________________________________________________ -void AliTRDcheckDetector::GetRefFigure(Int_t ifig){ +Bool_t AliTRDcheckDetector::GetRefFigure(Int_t ifig){ // // Setting Reference Figures // @@ -299,6 +299,7 @@ void AliTRDcheckDetector::GetRefFigure(Int_t ifig){ ((TH1F*)fContainer->At(kNTracksEventHist))->Draw("pl"); break; } + return kTRUE; } //_______________________________________________________ diff --git a/TRD/qaRec/AliTRDcheckDetector.h b/TRD/qaRec/AliTRDcheckDetector.h index fa1d2db1856..d3772fb9f00 100644 --- a/TRD/qaRec/AliTRDcheckDetector.h +++ b/TRD/qaRec/AliTRDcheckDetector.h @@ -60,7 +60,7 @@ public: TH1 *PlotChargeDeposit(const AliTRDtrackV1 *t = 0x0); virtual Bool_t PostProcess(); - virtual void GetRefFigure(Int_t ifig); + virtual Bool_t GetRefFigure(Int_t ifig); void SetRecoParam(AliTRDrecoParam *r); diff --git a/TRD/qaRec/AliTRDclusterResolution.cxx b/TRD/qaRec/AliTRDclusterResolution.cxx index 5d93b51dc71..043dfadba57 100644 --- a/TRD/qaRec/AliTRDclusterResolution.cxx +++ b/TRD/qaRec/AliTRDclusterResolution.cxx @@ -53,9 +53,9 @@ void AliTRDclusterResolution::CreateOutputObjects() } //_______________________________________________________ -void AliTRDclusterResolution::GetRefFigure(Int_t ifig) +Bool_t AliTRDclusterResolution::GetRefFigure(Int_t ifig) { - if(!fResults) return /*kFALSE*/; + if(!fResults) return kFALSE; TObjArray *arr = 0x0; TH2 *h2 = 0x0; @@ -68,7 +68,7 @@ void AliTRDclusterResolution::GetRefFigure(Int_t ifig) gs->Draw("apl"); gs->GetHistogram()->SetXTitle("Log(Q) [a.u.]"); gs->GetHistogram()->SetYTitle("#sigma_{y}^{2} [mm^{2}] [a.u.]"); - return /*kTRUE*/; + return kTRUE; case kYRes: if(!(arr = (TObjArray*)fResults->At(kYRes))) break; if(!(gm = (TGraphErrors*)arr->At(0))) break; @@ -76,20 +76,20 @@ void AliTRDclusterResolution::GetRefFigure(Int_t ifig) gs->Draw("apl"); gs->GetHistogram()->SetXTitle("y [w]"); gs->GetHistogram()->SetYTitle("#sigma_{y}^{2} [mm^{2}] [a.u.]"); - return /*kTRUE*/; + return kTRUE; case kSXRes: if(!(h2 = (TH2F*)fResults->At(kSXRes))) break; h2->Draw("lego2"); - return /*kTRUE*/; + return kTRUE; case kSYRes: if(!(h2 = (TH2F*)fResults->At(kSYRes))) break; h2->Draw("lego2"); - return /*kTRUE*/; + return kTRUE; default: break; } - return /*kFALSE*/; + return kFALSE; } //_______________________________________________________ @@ -284,10 +284,10 @@ Bool_t AliTRDclusterResolution::PostProcess() if((arr = (TObjArray*)fContainer->At(kSXRes))) { for(Int_t id=1; id<=fAd->GetNbins(); id++){ d = fAd->GetBinCenter(id); //[mm] - printf("Doing d=%f[mm]\n", d); + printf(" Doing d = %f[mm]\n", d); for(Int_t it=1; it<=fAt->GetNbins(); it++){ x = fAt->GetBinCenter(it); //[mm] - printf("Doing x=%f[mm]\n", x); + printf(" Doing xd = %f[mm]\n", x); Int_t idx = (id-1)*kNTB+it-1; if(!(h2 = (TH2I*)arr->At(idx))) { AliWarning(Form("Missing histo at index idx[%3d] [id[%2d] it[%2d]] xd[%f] d[%f]\n", idx, id, it, x, d)); @@ -311,6 +311,7 @@ Bool_t AliTRDclusterResolution::PostProcess() gs->SetPointError(ip, 0., 2.e2*f.GetParameter(2)*f.GetParError(2)); ip++; } + if(ip<4) continue; for(;ipGetN(); ip++){ gm->RemovePoint(ip);gs->RemovePoint(ip); } diff --git a/TRD/qaRec/AliTRDclusterResolution.h b/TRD/qaRec/AliTRDclusterResolution.h index 751efc45898..b81ae34a9c3 100644 --- a/TRD/qaRec/AliTRDclusterResolution.h +++ b/TRD/qaRec/AliTRDclusterResolution.h @@ -29,7 +29,7 @@ public: void CreateOutputObjects(); void Exec(Option_t *); Float_t GetExB() const { return fExB;} - void GetRefFigure(Int_t ifig); + Bool_t GetRefFigure(Int_t ifig); TObjArray* Histos(); diff --git a/TRD/qaRec/AliTRDpidChecker.cxx b/TRD/qaRec/AliTRDpidChecker.cxx index 2ce86017ca9..8b6ce96d57d 100644 --- a/TRD/qaRec/AliTRDpidChecker.cxx +++ b/TRD/qaRec/AliTRDpidChecker.cxx @@ -892,7 +892,7 @@ TH1 *AliTRDpidChecker::PlotMomBin(const AliTRDtrackV1 *track) //________________________________________________________ -void AliTRDpidChecker::GetRefFigure(Int_t ifig) +Bool_t AliTRDpidChecker::GetRefFigure(Int_t ifig) { Bool_t FIRST = kTRUE; TLegend *leg = new TLegend(.7, .7, .98, .98); @@ -926,7 +926,7 @@ void AliTRDpidChecker::GetRefFigure(Int_t ifig) gPad->SetLogx(); gPad->SetGridy(); gPad->SetGridx(); - return; + return kTRUE; case kdEdx: // save 2.0 GeV projection as reference FIRST = kTRUE; @@ -948,7 +948,7 @@ void AliTRDpidChecker::GetRefFigure(Int_t ifig) gPad->SetLogx(0); gPad->SetGridy(); gPad->SetGridx(); - return; + return kTRUE; case kdEdxSlice: break; case kPH: @@ -977,7 +977,7 @@ void AliTRDpidChecker::GetRefFigure(Int_t ifig) gPad->SetLogx(0); gPad->SetGridy(); gPad->SetGridx(); - return; + return kTRUE; case kNClus: // save 2.0 GeV projection as reference FIRST = kTRUE; @@ -1001,7 +1001,7 @@ void AliTRDpidChecker::GetRefFigure(Int_t ifig) gPad->SetLogx(0); gPad->SetGridy(); gPad->SetGridx(); - return; + return kTRUE; case kMomentum: case kMomentumBin: break; @@ -1028,9 +1028,10 @@ void AliTRDpidChecker::GetRefFigure(Int_t ifig) gPad->SetLogx(); gPad->SetGridy(); gPad->SetGridx(); - return; + return kTRUE; } AliInfo(Form("Reference plot [%d] missing result", ifig)); + return kFALSE; } //________________________________________________________________________ diff --git a/TRD/qaRec/AliTRDpidChecker.h b/TRD/qaRec/AliTRDpidChecker.h index 9ed0881becf..57f3e3758d9 100644 --- a/TRD/qaRec/AliTRDpidChecker.h +++ b/TRD/qaRec/AliTRDpidChecker.h @@ -39,7 +39,7 @@ public: virtual ~AliTRDpidChecker(); virtual void CreateOutputObjects(); - virtual void GetRefFigure(Int_t ifig); + virtual Bool_t GetRefFigure(Int_t ifig); virtual Bool_t PostProcess(); virtual void Terminate(Option_t *); diff --git a/TRD/qaRec/AliTRDpidRefMaker.cxx b/TRD/qaRec/AliTRDpidRefMaker.cxx index 0699ef94fca..de9322af0da 100644 --- a/TRD/qaRec/AliTRDpidRefMaker.cxx +++ b/TRD/qaRec/AliTRDpidRefMaker.cxx @@ -240,13 +240,6 @@ void AliTRDpidRefMaker::Exec(Option_t *) } -//________________________________________________________ -void AliTRDpidRefMaker::GetRefFigure(Int_t /*ifig*/) -{ - -} - - //________________________________________________________________________ Bool_t AliTRDpidRefMaker::PostProcess() { diff --git a/TRD/qaRec/AliTRDpidRefMaker.h b/TRD/qaRec/AliTRDpidRefMaker.h index 4262fe56f0a..c3b10c48615 100644 --- a/TRD/qaRec/AliTRDpidRefMaker.h +++ b/TRD/qaRec/AliTRDpidRefMaker.h @@ -68,7 +68,6 @@ public: void CreateOutputObjects(); void Exec(Option_t *option); - void GetRefFigure(Int_t ifig); Int_t GetEpochs() {return fEpochs;}; Int_t GetMinTrain() {return fMinTrain;}; Int_t GetTrainMomBin() {return fTrainMomBin;}; diff --git a/TRD/qaRec/AliTRDrecoTask.cxx b/TRD/qaRec/AliTRDrecoTask.cxx index 314c8e87558..c49ba4eb048 100644 --- a/TRD/qaRec/AliTRDrecoTask.cxx +++ b/TRD/qaRec/AliTRDrecoTask.cxx @@ -93,9 +93,10 @@ void AliTRDrecoTask::Exec(Option_t *) } //_______________________________________________________ -void AliTRDrecoTask::GetRefFigure(Int_t /*ifig*/) +Bool_t AliTRDrecoTask::GetRefFigure(Int_t /*ifig*/) { AliWarning("Retrieving reference figures not implemented."); + return kFALSE; } //_______________________________________________________ diff --git a/TRD/qaRec/AliTRDrecoTask.h b/TRD/qaRec/AliTRDrecoTask.h index 68a56427a07..b6f28a3408a 100644 --- a/TRD/qaRec/AliTRDrecoTask.h +++ b/TRD/qaRec/AliTRDrecoTask.h @@ -38,7 +38,7 @@ public: Int_t GetDebugLevel() const { return fDebugLevel;} Int_t GetNRefFigures() const { return fNRefFigures; } TList* GetPlotFunctors() const { return fPlotFuncList;} - virtual void GetRefFigure(Int_t ifig); + virtual Bool_t GetRefFigure(Int_t ifig); Bool_t HasFriends() const {return TestBit(kFriends);}; Bool_t HasMCdata() const {return TestBit(kMCdata);}; diff --git a/TRD/qaRec/AliTRDtrackingEfficiency.cxx b/TRD/qaRec/AliTRDtrackingEfficiency.cxx index e580d0d6102..7f13c83dcf1 100644 --- a/TRD/qaRec/AliTRDtrackingEfficiency.cxx +++ b/TRD/qaRec/AliTRDtrackingEfficiency.cxx @@ -276,7 +276,7 @@ void AliTRDtrackingEfficiency::Terminate(Option_t *) //____________________________________________________________________ -void AliTRDtrackingEfficiency::GetRefFigure(Int_t ifig) +Bool_t AliTRDtrackingEfficiency::GetRefFigure(Int_t ifig) { Bool_t FIRST = kTRUE; TProfile *h = 0x0; @@ -303,6 +303,7 @@ void AliTRDtrackingEfficiency::GetRefFigure(Int_t ifig) } break; } + return kTRUE; } diff --git a/TRD/qaRec/AliTRDtrackingEfficiency.h b/TRD/qaRec/AliTRDtrackingEfficiency.h index 6fce4ba6e35..3ba0a32c24b 100644 --- a/TRD/qaRec/AliTRDtrackingEfficiency.h +++ b/TRD/qaRec/AliTRDtrackingEfficiency.h @@ -26,7 +26,7 @@ public: virtual ~AliTRDtrackingEfficiency(); void CreateOutputObjects(); void Exec(Option_t *); - void GetRefFigure(Int_t ifig); + Bool_t GetRefFigure(Int_t ifig); Bool_t PostProcess(); void Terminate(Option_t *); diff --git a/TRD/qaRec/AliTRDtrackingEfficiencyCombined.cxx b/TRD/qaRec/AliTRDtrackingEfficiencyCombined.cxx index e1d28de6597..fa4e22b7c44 100644 --- a/TRD/qaRec/AliTRDtrackingEfficiencyCombined.cxx +++ b/TRD/qaRec/AliTRDtrackingEfficiencyCombined.cxx @@ -228,33 +228,34 @@ Bool_t AliTRDtrackingEfficiencyCombined::PostProcess() } //_____________________________________________________________________________ -void AliTRDtrackingEfficiencyCombined::GetRefFigure(Int_t ifig){ +Bool_t AliTRDtrackingEfficiencyCombined::GetRefFigure(Int_t ifig){ // // Plot the histograms // - if(ifig >= fNRefFigures) return; + if(ifig >= fNRefFigures) return kFALSE; if(ifig < 2){ (dynamic_cast(fContainer->At(ifig)))->Draw("e1"); - return; + return kTRUE; } switch(ifig){ - case 2: - (dynamic_cast(fContainer->At(kEfficiencySpeciesHistogram)))->Draw("e1"); - for(Int_t ispec = 1; ispec < AliPID::kSPECIES; ispec++) - (dynamic_cast(fContainer->At(kEfficiencySpeciesHistogram + ispec)))->Draw("e1same"); - break; - case 3: - (dynamic_cast(fContainer->At(kContaminationSpeciesHistogram)))->Draw("e1"); - for(Int_t ispec = 1; ispec < AliPID::kSPECIES; ispec++) - (dynamic_cast(fContainer->At(kContaminationSpeciesHistogram + ispec)))->Draw("e1same"); - break; - case 4: - (dynamic_cast(fContainer->At(kEfficiencyNoPID)))->Draw("e1"); - break; - case 5: - (dynamic_cast(fContainer->At(kContaminationNoPID)))->Draw("e1"); - break; + case 2: + (dynamic_cast(fContainer->At(kEfficiencySpeciesHistogram)))->Draw("e1"); + for(Int_t ispec = 1; ispec < AliPID::kSPECIES; ispec++) + (dynamic_cast(fContainer->At(kEfficiencySpeciesHistogram + ispec)))->Draw("e1same"); + break; + case 3: + (dynamic_cast(fContainer->At(kContaminationSpeciesHistogram)))->Draw("e1"); + for(Int_t ispec = 1; ispec < AliPID::kSPECIES; ispec++) + (dynamic_cast(fContainer->At(kContaminationSpeciesHistogram + ispec)))->Draw("e1same"); + break; + case 4: + (dynamic_cast(fContainer->At(kEfficiencyNoPID)))->Draw("e1"); + break; + case 5: + (dynamic_cast(fContainer->At(kContaminationNoPID)))->Draw("e1"); + break; } + return kTRUE; } //_____________________________________________________________________________ diff --git a/TRD/qaRec/AliTRDtrackingEfficiencyCombined.h b/TRD/qaRec/AliTRDtrackingEfficiencyCombined.h index 09a9c293a00..12b2808eb16 100644 --- a/TRD/qaRec/AliTRDtrackingEfficiencyCombined.h +++ b/TRD/qaRec/AliTRDtrackingEfficiencyCombined.h @@ -20,13 +20,13 @@ public: AliTRDtrackingEfficiencyCombined(); virtual ~AliTRDtrackingEfficiencyCombined(){;} - virtual void CreateOutputObjects(); - virtual void Exec(Option_t *); - virtual void Terminate(Option_t *); + void CreateOutputObjects(); + void Exec(Option_t *); + void Terminate(Option_t *); - virtual Bool_t PostProcess(); - virtual TObjArray *Histos(); - void GetRefFigure(Int_t ifig); + Bool_t PostProcess(); + TObjArray* Histos(); + Bool_t GetRefFigure(Int_t ifig); private: enum{ diff --git a/TRD/qaRec/AliTRDtrackingResolution.cxx b/TRD/qaRec/AliTRDtrackingResolution.cxx index fd1ab90d9a1..6c6b24a70b4 100644 --- a/TRD/qaRec/AliTRDtrackingResolution.cxx +++ b/TRD/qaRec/AliTRDtrackingResolution.cxx @@ -514,7 +514,7 @@ TH1* AliTRDtrackingResolution::PlotResolution(const AliTRDtrackV1 *track) //________________________________________________________ -void AliTRDtrackingResolution::GetRefFigure(Int_t ifig) +Bool_t AliTRDtrackingResolution::GetRefFigure(Int_t ifig) { TBox *b = 0x0; TAxis *ax = 0x0; @@ -533,7 +533,7 @@ void AliTRDtrackingResolution::GetRefFigure(Int_t ifig) b = new TBox(-.15, -.5, .15, 1.); b->SetFillStyle(3002);b->SetFillColor(kGreen); b->SetLineColor(0); b->Draw(); - return; + return kTRUE; case kTrackletYResidual: if(!(g = (TGraphErrors*)fGraphS->At(ifig))) break; g->Draw("apl"); @@ -547,7 +547,7 @@ void AliTRDtrackingResolution::GetRefFigure(Int_t ifig) b = new TBox(-.15, -.5, .15, 1.); b->SetFillStyle(3002);b->SetFillColor(kGreen); b->SetLineColor(0); b->Draw(); - return; + return kTRUE; case kTrackletPhiResidual: if(!(g = (TGraphErrors*)fGraphS->At(ifig))) break; g->Draw("apl"); @@ -561,7 +561,7 @@ void AliTRDtrackingResolution::GetRefFigure(Int_t ifig) b = new TBox(-.15, -.5, .15, 1.); b->SetFillStyle(3002);b->SetFillColor(kGreen); b->SetLineColor(0); b->Draw(); - return; + return kTRUE; case kClusterResolution: if(!(g = (TGraphErrors*)fGraphS->At(ifig))) break; ax = g->GetHistogram()->GetYaxis(); @@ -575,7 +575,7 @@ void AliTRDtrackingResolution::GetRefFigure(Int_t ifig) b = new TBox(-.15, -.5, .15, 1.); b->SetFillStyle(3002);b->SetFillColor(kGreen); b->SetLineColor(0); b->Draw(); - return; + return kTRUE; case kTrackletYResolution: if(!(g = (TGraphErrors*)fGraphS->At(ifig))) break; ax = g->GetHistogram()->GetYaxis(); @@ -586,7 +586,7 @@ void AliTRDtrackingResolution::GetRefFigure(Int_t ifig) g->Draw("apl"); if(!(g = (TGraphErrors*)fGraphM->At(ifig))) break; g->Draw("pl"); - return; + return kTRUE; case kTrackletZResolution: if(!(g = (TGraphErrors*)fGraphS->At(ifig))) break; ax = g->GetHistogram()->GetYaxis(); @@ -597,7 +597,7 @@ void AliTRDtrackingResolution::GetRefFigure(Int_t ifig) g->Draw("apl"); if(!(g = (TGraphErrors*)fGraphM->At(ifig))) break; g->Draw("pl"); - return; + return kTRUE; case kTrackletAngleResolution: if(!(g = (TGraphErrors*)fGraphS->At(ifig))) break; ax = g->GetHistogram()->GetYaxis(); @@ -608,12 +608,13 @@ void AliTRDtrackingResolution::GetRefFigure(Int_t ifig) g->Draw("apl"); if(!(g = (TGraphErrors*)fGraphM->At(ifig))) break; g->Draw("pl"); - return; + return kTRUE; default: AliInfo(Form("Reference plot [%d] not implemented yet", ifig)); - return; + return kFALSE; } AliInfo(Form("Reference plot [%d] missing result", ifig)); + return kFALSE; } diff --git a/TRD/qaRec/AliTRDtrackingResolution.h b/TRD/qaRec/AliTRDtrackingResolution.h index a4c5deebe1d..6c748fdf965 100644 --- a/TRD/qaRec/AliTRDtrackingResolution.h +++ b/TRD/qaRec/AliTRDtrackingResolution.h @@ -52,7 +52,7 @@ public: virtual ~AliTRDtrackingResolution(); void CreateOutputObjects(); - void GetRefFigure(Int_t ifig); + Bool_t GetRefFigure(Int_t ifig); TObjArray* Histos(); void Exec(Option_t *); Bool_t IsVerbose() const {return TESTBIT(fStatus, kVerbose);} diff --git a/TRD/qaRec/makeResults.C b/TRD/qaRec/makeResults.C index 0b6d8894bfb..56dfcbb478c 100644 --- a/TRD/qaRec/makeResults.C +++ b/TRD/qaRec/makeResults.C @@ -39,7 +39,6 @@ #include #include #include -#include #include #include #include @@ -51,9 +50,9 @@ #include "run.h" -Char_t *libs[] = {"libProofPlayer.so", "libANALYSIS.so", "libTRDqaRec.so", "libPyROOT"}; +Char_t *libs[] = {"libProofPlayer.so", "libANALYSIS.so", "libTRDqaRec.so"}; -void makeResults(Char_t *args = "ALL") +void makeResults(Char_t *opt = "ALL", const Char_t *files=0x0) { // Load Libraries in interactive mode Int_t nlibs = static_cast(sizeof(libs)/sizeof(Char_t *)); @@ -68,34 +67,16 @@ void makeResults(Char_t *args = "ALL") Bool_t mc = kTRUE; Bool_t friends = kTRUE; - const 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 : list of files 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 + TString tasks(opt); TObjArray *tasksArray = tasks.Tokenize(" "); Int_t fSteerTask = 0; for(Int_t isel = 0; isel < tasksArray->GetEntriesFast(); isel++){ TString s = (dynamic_cast(tasksArray->UncheckedAt(isel)))->String(); if(s.CompareTo("ALL") == 0){ - for(Int_t itask = 1; itask < NTRDTASKS; itask++) SETBIT(fSteerTask, itask - 1); + for(Int_t itask = 1; itask < NQATASKS; itask++) SETBIT(fSteerTask, itask); continue; } else if(s.CompareTo("NOFR") == 0){ friends = kFALSE; @@ -105,24 +86,27 @@ void makeResults(Char_t *args = "ALL") Bool_t foundOpt = kFALSE; for(Int_t itask = 1; itask < NTRDTASKS; itask++){ if(s.CompareTo(fgkTRDtaskOpt[itask]) != 0) continue; - SETBIT(fSteerTask, itask - 1); + SETBIT(fSteerTask, itask); foundOpt = kTRUE; break; } if(!foundOpt) Info("makeResults.C", Form("Task %s not implemented (yet).", s.Data())); } } + // extra rules for calibration tasks + if(TSTBIT(fSteerTask, kClErrParam)) SETBIT(fSteerTask, kResolution); + if(TSTBIT(fSteerTask, kPIDRefMaker)) SETBIT(fSteerTask, kPIDChecker); + if(TSTBIT(fSteerTask, kAlignment)) SETBIT(fSteerTask, kResolution); // file merger object - TFileMerger *fFM = new TFileMerger(); + TFileMerger *fFM = 0x0; TClass *ctask = 0x0; AliTRDrecoTask *task = 0x0; Int_t nFiles; 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 = 0; itask SetFriends(friends); // setup filelist - string filename; nFiles = 0; - ifstream filestream(dir); - while(getline(filestream, filename)){ - if(Int_t(filename.find(task->GetName())) < 0) continue; - if(Int_t(filename.find("merge")) >= 0) continue; - nFiles++; + string filename; + if(files){ + ifstream filestream(files); + while(getline(filestream, filename)){ + if(Int_t(filename.find(task->GetName())) < 0) continue; + if(Int_t(filename.find("merge")) >= 0) continue; + nFiles++; + } + } else { + nFiles = !gSystem->AccessPathName(Form("TRD.Task%s.root", task->GetName())); } + if(!nFiles){ - printf("No Files found for Task %s\n", task->GetName()); + Info("makeResults.C", Form("No Files found for Task %s", task->GetName())); delete task; delete ctask; continue; } - printf("Processing %d files for task %s ...\n", nFiles, task->GetName()); + Info("makeResults.C", Form(" Processing %d files for task %s ...", nFiles, task->GetName())); - ifstream file(dir); - if(nFiles>1){ - fFM = new(fFM) TFileMerger(kTRUE); + if(files){ + fFM = new TFileMerger(kTRUE); fFM->OutputFile(Form("%s/merge/TRD.Task%s.root", gSystem->ExpandPathName("$PWD"), task->GetName())); + ifstream file(files); while(getline(file, filename)){ if(Int_t(filename.find(task->GetName())) < 0) continue; if(Int_t(filename.find("merge")) >= 0) continue; fFM->AddFile(filename.c_str()); } fFM->Merge(); - fFM->~TFileMerger(); + delete fFM; task->Load(Form("%s/merge/TRD.Task%s.root", gSystem->ExpandPathName("$PWD"), task->GetName())); } else{ - getline(file, filename); - task->Load(filename.c_str()); + task->Load(Form("%s/TRD.Task%s.root", gSystem->ExpandPathName("$PWD"), task->GetName())); } task->PostProcess(); TCanvas *c=new TCanvas(); for(Int_t ipic=0; ipicGetNRefFigures(); ipic++){ - task->GetRefFigure(ipic); + if(!task->GetRefFigure(ipic)) return; c->SaveAs(Form("%s_fig%d.gif", task->GetName(), ipic)); c->Clear(); } diff --git a/TRD/qaRec/run.C b/TRD/qaRec/run.C index 832430cfbd3..59a485de82d 100644 --- a/TRD/qaRec/run.C +++ b/TRD/qaRec/run.C @@ -1,7 +1,7 @@ // Steer TRD QA train for Reconstruction (Clusterizer, Tracking and PID). // // Usage: -// run.C(tasks, files, entries) +// run.C(tasks, files) // tasks : "ALL" or one/more of the following: // "EFF" : TRD Tracking Efficiency // "EFFC" : TRD Tracking Efficiency Combined (barrel + stand alone) - only in case of simulations @@ -22,6 +22,8 @@ // gSystem->Load("libMemStatGui.so") // gSystem->Load("libANALYSIS.so") // gSystem->Load("libTRDqaRec.so") +// gSystem->Load("libNetx.so") ; +// gSystem->Load("libRAliEn.so"); // // Authors: // Alex Bercuci (A.Bercuci@gsi.de) @@ -38,11 +40,16 @@ #include "TSystem.h" #include "TError.h" #include "TChain.h" +#include "TGrid.h" +#include "TAlienCollection.h" +#include "TGridCollection.h" +#include "TGridResult.h" #include "AliMagFMaps.h" #include "AliTracker.h" #include "AliLog.h" #include "AliCDBManager.h" +#include "AliGeomManager.h" #include "AliAnalysisManager.h" #include "AliAnalysisDataContainer.h" #include "AliMCEventHandler.h" @@ -56,6 +63,7 @@ #include "TRD/qaRec/AliTRDtrackingEfficiencyCombined.h" #include "TRD/qaRec/AliTRDtrackingResolution.h" #include "TRD/qaRec/AliTRDcalibration.h" +#include "TRD/qaRec/AliTRDalignmentTask.h" #include "TRD/qaRec/AliTRDpidChecker.h" #include "TRD/qaRec/AliTRDpidRefMaker.h" #include "TRD/qaRec/AliTRDcheckDetector.h" @@ -66,8 +74,9 @@ Bool_t MEM = kFALSE; -TChain* CreateESDChain(const char* filename = 0x0, Int_t nfiles=-1 ); -void run(Char_t *tasks="ALL", const Char_t *files=0x0, Int_t nmax=-1) +TChain* MakeChainLST(const char* filename = 0x0); +TChain* MakeChainXML(const char* filename = 0x0); +void run(Char_t *tasks="ALL", const Char_t *files=0x0) { TMemStat *mem = 0x0; if(MEM){ @@ -91,7 +100,7 @@ void run(Char_t *tasks="ALL", const Char_t *files=0x0, Int_t nmax=-1) for(Int_t isel = 0; isel < tasksArray->GetEntriesFast(); isel++){ TString s = (dynamic_cast(tasksArray->UncheckedAt(isel)))->String(); if(s.CompareTo("ALL") == 0){ - for(Int_t itask = 1; itask <= NTRDTASKS; itask++) SETBIT(fSteerTask, itask); + for(Int_t itask = 1; itask < NQATASKS; itask++) SETBIT(fSteerTask, itask); continue; } else if(s.CompareTo("NOFR") == 0){ fHasFriends = kFALSE; @@ -99,7 +108,7 @@ void run(Char_t *tasks="ALL", const Char_t *files=0x0, Int_t nmax=-1) fHasMCdata = kFALSE; } else { Bool_t foundOpt = kFALSE; - for(Int_t itask = 1; itask <= NTRDTASKS; itask++){ + for(Int_t itask = 1; itask < NTRDTASKS; itask++){ if(s.CompareTo(fgkTRDtaskOpt[itask]) != 0) continue; SETBIT(fSteerTask, itask); foundOpt = kTRUE; @@ -109,15 +118,25 @@ void run(Char_t *tasks="ALL", const Char_t *files=0x0, Int_t nmax=-1) } } // extra rules for calibration tasks - if(TSTBIT(fSteerTask, kClusterErrorParam)) SETBIT(fSteerTask, kTrackingResolution); + if(TSTBIT(fSteerTask, kClErrParam)) SETBIT(fSteerTask, kResolution); + if(TSTBIT(fSteerTask, kPIDRefMaker)) SETBIT(fSteerTask, kPIDChecker); + if(TSTBIT(fSteerTask, kAlignment)) SETBIT(fSteerTask, kResolution); // define task list pointers; - AliTRDrecoTask *taskPtr[2*NTRDTASKS], *task = 0x0; - memset(taskPtr, 0, 2*NTRDTASKS*sizeof(AliAnalysisTask*)); + AliTRDrecoTask *taskPtr[NTRDTASKS], *task = 0x0; + memset(taskPtr, 0, NTRDTASKS*sizeof(AliAnalysisTask*)); //____________________________________________// - //gROOT->LoadMacro(Form("%s/TRD/qaRec/CreateESDChain.C", gSystem->ExpandPathName("$ALICE_ROOT"))); - TChain *chain = CreateESDChain(files, nmax); + // DEFINE DATA CHAIN + TChain *chain = 0x0; + if(!files) chain = MakeChainLST(); + else{ + TString fn(files); + if(fn.EndsWith("xml")) chain = MakeChainXML(files); + else chain = MakeChainLST(files); + } + if(!chain) return; + //chain->SetBranchStatus("*", 0); chain->SetBranchStatus("*FMD*",0); chain->SetBranchStatus("*Calo*",0); @@ -168,9 +187,9 @@ void run(Char_t *tasks="ALL", const Char_t *files=0x0, Int_t nmax=-1) //____________________________________________ // TRD barrel tracking efficiency - if(fHasMCdata && TSTBIT(fSteerTask, kTrackingEfficiency)){ + if(fHasMCdata && TSTBIT(fSteerTask, kTrackingEff)){ mgr->AddTask(task = new AliTRDtrackingEfficiency()); - taskPtr[(Int_t)kTrackingEfficiency] = task; + taskPtr[(Int_t)kTrackingEff] = task; task->SetDebugLevel(0); //Create containers for input/output @@ -180,9 +199,9 @@ void run(Char_t *tasks="ALL", const Char_t *files=0x0, Int_t nmax=-1) //____________________________________________ // TRD combined tracking efficiency - if(fHasMCdata && TSTBIT(fSteerTask, kTrackingCombinedEfficiency)){ + if(fHasMCdata && TSTBIT(fSteerTask, kTrackingEffMC)){ mgr->AddTask(task = new AliTRDtrackingEfficiencyCombined()); - taskPtr[(Int_t)kTrackingCombinedEfficiency] = task; + taskPtr[(Int_t)kTrackingEffMC] = task; task->SetDebugLevel(0); // Create containers for input/output @@ -192,9 +211,9 @@ void run(Char_t *tasks="ALL", const Char_t *files=0x0, Int_t nmax=-1) //____________________________________________ // TRD tracking resolution - if(TSTBIT(fSteerTask, kTrackingResolution)){ + if(TSTBIT(fSteerTask, kResolution)){ mgr->AddTask(task = new AliTRDtrackingResolution()); - taskPtr[(Int_t)kTrackingResolution] = task; + taskPtr[(Int_t)kResolution] = task; task->SetMCdata(fHasMCdata); task->SetPostProcess(kFALSE); task->SetDebugLevel(1); @@ -205,7 +224,7 @@ void run(Char_t *tasks="ALL", const Char_t *files=0x0, Int_t nmax=-1) // Create output containers for calibration tasks const Int_t nc = 5; - const Char_t *cn[nc] = {"ClRez", "TrkltRez", "TrkltPhiRez", "ClRes", "TrkltRes"}; + const Char_t *cn[nc] = {"Cl", "TrkltY", "TrkltPhi", "ClMC", "TrkltYMC"}; AliAnalysisDataContainer *co[nc]; for(Int_t ic = 0; icCreateContainer(Form("%s%s", task->GetName(), cn[ic]), TObjArray::Class(), AliAnalysisManager::kExchangeContainer); @@ -213,15 +232,15 @@ void run(Char_t *tasks="ALL", const Char_t *files=0x0, Int_t nmax=-1) } // test reconstruction calibration plugin - if(TSTBIT(fSteerTask, kClusterErrorParam)){ + if(TSTBIT(fSteerTask, kClErrParam)){ mgr->AddTask(task = new AliTRDclusterResolution()); - taskPtr[(Int_t)kClusterErrorParam] = task; + taskPtr[(Int_t)kClErrParam] = task; mgr->ConnectInput(task, 0, co[0]); mgr->ConnectOutput(task, 0, mgr->CreateContainer(task->GetName(), TObjArray::Class(), AliAnalysisManager::kOutputContainer, Form("TRD.Task%s.root", task->GetName()))); mgr->AddTask(task = new AliTRDclusterResolution()); - taskPtr[(Int_t)kClusterErrorParam+1] = task; - mgr->ConnectInput(task, 0, co[1]); + taskPtr[(Int_t)kClErrParam+1] = task; + mgr->ConnectInput(task, 0, co[3]); mgr->ConnectOutput(task, 0, mgr->CreateContainer(Form("%sMC", task->GetName()), TObjArray::Class(), AliAnalysisManager::kOutputContainer, Form("TRD.Task%sMC.root", task->GetName()))); } } @@ -256,7 +275,7 @@ void run(Char_t *tasks="ALL", const Char_t *files=0x0, Int_t nmax=-1) } //____________________________________________ - // TRD pid checker + // TRD PID if(TSTBIT(fSteerTask, kPIDChecker)){ mgr->AddTask(task = new AliTRDpidChecker()); taskPtr[(Int_t)kPIDChecker] = task; @@ -266,29 +285,28 @@ void run(Char_t *tasks="ALL", const Char_t *files=0x0, Int_t nmax=-1) // Create containers for input/output mgr->ConnectInput( task, 0, coutput1); mgr->ConnectOutput(task, 0, mgr->CreateContainer(task->GetName(), TObjArray::Class(), AliAnalysisManager::kOutputContainer, Form("TRD.Task%s.root", task->GetName()))); - } - - //____________________________________________ - // TRD pid reference - if(TSTBIT(fSteerTask, kPIDRefMaker)){ - mgr->AddTask(task = new AliTRDpidRefMaker()); - taskPtr[(Int_t)kPIDRefMaker] = task; - task->SetDebugLevel(0); - task->SetMCdata(fHasMCdata); - - // Create containers for input/output - mgr->ConnectInput( task, 0, coutput1); - mgr->ConnectOutput(task, 0, mgr->CreateContainer(task->GetName(), TObjArray::Class(), AliAnalysisManager::kOutputContainer, Form("TRD.Task%s.root", task->GetName()))); - mgr->ConnectOutput(task, 1, mgr->CreateContainer(Form("%sNN", task->GetName()), TTree::Class(), AliAnalysisManager::kOutputContainer, Form("TRD.Task%sNN.root", task->GetName()))); - mgr->ConnectOutput(task, 2, mgr->CreateContainer(Form("%sLQ", task->GetName()), TTree::Class(), AliAnalysisManager::kOutputContainer, Form("TRD.Task%sLQ.root", task->GetName()))); + //____________________________________________ + // TRD pid reference + if(TSTBIT(fSteerTask, kPIDRefMaker)){ + mgr->AddTask(task = new AliTRDpidRefMaker()); + taskPtr[(Int_t)kPIDRefMaker] = task; + task->SetDebugLevel(0); + task->SetMCdata(fHasMCdata); + + // Create containers for input/output + mgr->ConnectInput( task, 0, coutput1); + mgr->ConnectOutput(task, 0, mgr->CreateContainer(task->GetName(), TObjArray::Class(), AliAnalysisManager::kOutputContainer, Form("TRD.Task%s.root", task->GetName()))); + mgr->ConnectOutput(task, 1, mgr->CreateContainer(Form("%sNN", task->GetName()), TTree::Class(), AliAnalysisManager::kOutputContainer, Form("TRD.Task%sNN.root", task->GetName()))); + mgr->ConnectOutput(task, 2, mgr->CreateContainer(Form("%sLQ", task->GetName()), TTree::Class(), AliAnalysisManager::kOutputContainer, Form("TRD.Task%sLQ.root", task->GetName()))); + } } if (!mgr->InitAnalysis()) return; printf("\n\tRUNNING TRAIN FOR TASKS:\n"); - for(Int_t itask = 1; itask <= NTRDTASKS; itask++){ - if(TSTBIT(fSteerTask, itask)) printf("\t %s [%s]\n", taskPtr[itask]->GetTitle(), taskPtr[itask]->GetName()); + for(Int_t itask = 1; itask < NTRDTASKS; itask++){ + if(TSTBIT(fSteerTask, itask)) printf("\t %s [%s]\n", taskPtr[itask]->GetName(), taskPtr[itask]->GetTitle()); } printf("\n\n"); //mgr->PrintStatus(); @@ -296,7 +314,6 @@ void run(Char_t *tasks="ALL", const Char_t *files=0x0, Int_t nmax=-1) AliCDBManager *cdbManager = AliCDBManager::Instance(); cdbManager->SetDefaultStorage("local://$ALICE_ROOT"); - //cdbManager->SetSpecificStorage("TRD/Calib/FEE","local:///u/bailhach/aliroot/database30head/database"); cdbManager->SetRun(0); cdbManager->SetCacheFlag(kFALSE); @@ -316,8 +333,11 @@ void run(Char_t *tasks="ALL", const Char_t *files=0x0, Int_t nmax=-1) cal->Terminate(); delete field; delete cdbManager; - for(Int_t it=2*NTRDTASKS; it--; ){ - if(taskPtr[it]) delete taskPtr[it]; + for(Int_t it=NTRDTASKS; it--; ){ + if(taskPtr[it]){ + printf("Cleaning %s [%s] ...\n", fgkTRDtaskClassName[it], taskPtr[it]->GetTitle()); + delete taskPtr[it]; + } } if(mcH) delete mcH; delete esdH; @@ -327,8 +347,8 @@ void run(Char_t *tasks="ALL", const Char_t *files=0x0, Int_t nmax=-1) if(MEM) TMemStatViewerGUI::ShowGUI(); } - -TChain* CreateESDChain(const char* filename, Int_t nfiles) +//____________________________________________ +TChain* MakeChainLST(const char* filename) { // Create the chain TChain* chain = new TChain("esdTree"); @@ -343,7 +363,7 @@ TChain* CreateESDChain(const char* filename, Int_t nfiles) ifstream in; in.open(filename); TString esdfile; - while(in.good() && (nfiles--) ) { + while(in.good()) { in >> esdfile; if (!esdfile.Contains("root")) continue; // protection chain->Add(esdfile.Data()); @@ -353,3 +373,35 @@ TChain* CreateESDChain(const char* filename, Int_t nfiles) return chain; } + +//____________________________________________ +TChain* MakeChainXML(const char* xmlfile) +{ + if (!TFile::Open(xmlfile)) { + Error("MakeChainXML", Form("No file %s was found", xmlfile)); + return 0x0; + } + + if(gSystem->Load("libNetx.so")<0) return 0x0; + if(gSystem->Load("libRAliEn.so")<0) return 0x0; + TGrid::Connect("alien://") ; + + TGridCollection *collection = (TGridCollection*) TAlienCollection::Open(xmlfile); + if (!collection) { + Error("MakeChainXML", Form("No collection found in %s", xmlfile)) ; + return 0x0; + } + //collection->CheckIfOnline(); + + TGridResult* result = collection->GetGridResult("",0 ,0); + if(!result->GetEntries()){ + Error("MakeChainXML", Form("No entries found in %s", xmlfile)) ; + return 0x0; + } + // Makes the ESD chain + TChain* chain = new TChain("esdTree"); + for (Int_t idx = 0; idx < result->GetEntries(); idx++) { + chain->Add(result->GetKey(idx, "turl")); + } + return chain; +} diff --git a/TRD/qaRec/run.h b/TRD/qaRec/run.h index 1d6d2e645c2..542a2faf4b3 100644 --- a/TRD/qaRec/run.h +++ b/TRD/qaRec/run.h @@ -6,42 +6,45 @@ #define TSTBIT(n,i) ((Bool_t)(((n) & BIT(i)) != 0)) #define CLRBIT(n,i) ((n) &= ~BIT(i)) -#define NTRDTASKS 9 +#define NQATASKS 6 +#define NCALIBTASKS 4 +const Int_t NTRDTASKS = NQATASKS+NCALIBTASKS; enum AliTRDrecoTasks{ kInfoGen = 0 ,kCheckDetector = 1 - ,kTrackingEfficiency = 2 - ,kTrackingCombinedEfficiency = 3 - ,kTrackingResolution = 4 - ,kCalibration = 5 - ,kAlignment = 6 - ,kPIDChecker = 7 + ,kTrackingEff = 2 + ,kTrackingEffMC = 3 + ,kResolution = 4 + ,kPIDChecker = 5 + ,kCalibration = 6 + ,kAlignment = 7 ,kPIDRefMaker = 8 - ,kClusterErrorParam = 9 + ,kClErrParam = 9 }; -const Char_t* fgkTRDtaskClassName[NTRDTASKS] = { - "AliTRDcheckDetector" +const Char_t* fgkTRDtaskClassName[NQATASKS+NCALIBTASKS] = { + "AliTRDtrackInfoGen" + ,"AliTRDcheckDetector" ,"AliTRDtrackingEfficiency" ,"AliTRDtrackingEfficiencyCombined" ,"AliTRDtrackingResolution" + ,"AliTRDpidChecker" ,"AliTRDcalibration" ,"AliTRDalignmentTask" - ,"AliTRDpidChecker" ,"AliTRDpidRefMaker" ,"AliTRDclusterResolution" }; -const Char_t *fgkTRDtaskOpt[NTRDTASKS+3] = { +const Char_t *fgkTRDtaskOpt[NQATASKS+NCALIBTASKS+2] = { "ALL" ,"DET" ,"EFF" ,"EFFC" ,"RES" + ,"PID" ,"CAL" ,"ALGN" - ,"PID" ,"PIDR" ,"CLRES" ,"NOFR"