From 45d01ff84a48b374ef8318d9695db6deb5449701 Mon Sep 17 00:00:00 2001 From: abercuci Date: Wed, 14 Jul 2010 10:02:42 +0000 Subject: [PATCH] add V0 task as cuasi-independent performance task --- PWG1/TRD/AliTRDrecoTask.cxx | 9 ++- PWG1/TRD/AliTRDrecoTask.h | 2 +- PWG1/TRD/macros/AddTRDcheckPID.C | 85 ++++++++++-------------- PWG1/TRD/macros/AddTRDv0Monitor.C | 32 +++++++++ PWG1/TRD/macros/AliTRDperformanceTrain.h | 17 +++-- PWG1/TRD/macros/helper.C | 1 + PWG1/TRD/run.C | 1 + PWG1/macros/AddTrainPerformanceTRD.C | 10 ++- 8 files changed, 95 insertions(+), 62 deletions(-) create mode 100644 PWG1/TRD/macros/AddTRDv0Monitor.C diff --git a/PWG1/TRD/AliTRDrecoTask.cxx b/PWG1/TRD/AliTRDrecoTask.cxx index 2b3ab70fd83..1c390069a21 100644 --- a/PWG1/TRD/AliTRDrecoTask.cxx +++ b/PWG1/TRD/AliTRDrecoTask.cxx @@ -101,6 +101,13 @@ AliTRDrecoTask::~AliTRDrecoTask() } } +//_______________________________________________________ +Int_t AliTRDrecoTask::GetNRefFigures() const +{ + if(!fNRefFigures) AliWarning("No reference plots available."); + return fNRefFigures; +} + //_______________________________________________________ void AliTRDrecoTask::UserExec(Option_t *) { @@ -221,7 +228,7 @@ Bool_t AliTRDrecoTask::PostProcess() // To be implemented by particular tasks AliWarning("Post processing of reference histograms not implemented."); - return kFALSE; + return kTRUE; } //_______________________________________________________ diff --git a/PWG1/TRD/AliTRDrecoTask.h b/PWG1/TRD/AliTRDrecoTask.h index 8d377bd5264..b3aa7a8a050 100644 --- a/PWG1/TRD/AliTRDrecoTask.h +++ b/PWG1/TRD/AliTRDrecoTask.h @@ -43,7 +43,7 @@ public: virtual void SetDebugLevel(Int_t level); - Int_t GetNRefFigures() const { return fNRefFigures; } + Int_t GetNRefFigures() const; const Char_t* GetNameId() const { return fNameId;} TList* GetPlotFunctors() const { return fPlotFuncList;} virtual Bool_t GetRefFigure(Int_t ifig); diff --git a/PWG1/TRD/macros/AddTRDcheckPID.C b/PWG1/TRD/macros/AddTRDcheckPID.C index 6b6f6b6db79..f741f594e8e 100644 --- a/PWG1/TRD/macros/AddTRDcheckPID.C +++ b/PWG1/TRD/macros/AddTRDcheckPID.C @@ -6,13 +6,12 @@ #include "PWG1/TRD/macros/AliTRDperformanceTrain.h" #include "PWG1/TRD/AliTRDcheckPID.h" #include "PWG1/TRD/AliTRDpidRefMaker.h" -#include "PWG1/TRD/AliTRDv0Monitor.h" #include "PWG1/TRD/AliTRDpidRefMakerNN.h" #include "PWG1/TRD/AliTRDpidRefMakerLQ.h" #endif #include "PWG1/TRD/macros/helper.C" -void AddTRDcheckPID(AliAnalysisManager *mgr, Char_t *trd, AliAnalysisDataContainer **ci/*, AliAnalysisDataContainer **co*/) +void AddTRDcheckPID(AliAnalysisManager *mgr, Char_t *trd, AliAnalysisDataContainer **ci, AliAnalysisDataContainer **co) { Int_t map = ParseOptions(trd); if(!TSTBIT(map, kCheckPID)) return; @@ -25,60 +24,44 @@ void AddTRDcheckPID(AliAnalysisManager *mgr, Char_t *trd, AliAnalysisDataContain pid->SetMCdata(mgr->GetMCtruthEventHandler()); // define PID exchange container - AliAnalysisDataContainer *ce = mgr->CreateContainer("InfoPID", TObjArray::Class(), AliAnalysisManager::kExchangeContainer); + co[0] = mgr->CreateContainer("InfoPID", TObjArray::Class(), AliAnalysisManager::kExchangeContainer); mgr->ConnectInput (pid, 0, mgr->GetCommonInputContainer()); mgr->ConnectInput (pid, 1, ci[0]); mgr->ConnectInput (pid, 2, ci[1]); mgr->ConnectOutput(pid, 1, mgr->CreateContainer(pid->GetName(), TObjArray::Class(), AliAnalysisManager::kOutputContainer, Form("%s:TRD_Performance",mgr->GetCommonFileName()))); - mgr->ConnectOutput(pid, 2, ce); + mgr->ConnectOutput(pid, 2, co[0]); - if(!TSTBIT(map, kPIDRefMaker)) return; + if(TSTBIT(map, kPIDRefMaker)){ - //AliLog::SetClassDebugLevel("AliTRDpidRefMaker", 3); - //AliLog::SetClassDebugLevel("AliTRDpidRefMakerNN", 3); - //AliLog::SetClassDebugLevel("AliTRDpidRefMakerLQ", 3); - - // TRD pid reference maker NN - AliTRDpidRefMaker *ref(NULL); - mgr->AddTask(ref = new AliTRDpidRefMakerNN((char*)"refMakerNN")); - ref->SetDebugLevel(3); - ref->SetMCdata(mgr->GetMCtruthEventHandler()); - ref->SetFriends(kTRUE); - mgr->ConnectInput( ref, 0, mgr->GetCommonInputContainer()); - mgr->ConnectInput( ref, 1, ci[0]); - mgr->ConnectInput( ref, 2, ci[1]); - mgr->ConnectInput( ref, 3, ce); - mgr->ConnectOutput(ref, 1, mgr->CreateContainer("MonitorNN", TObjArray::Class(), AliAnalysisManager::kOutputContainer, Form("%s:TRD.CalibPIDrefMaker",mgr->GetCommonFileName()))); - mgr->ConnectOutput(ref, 2, mgr->CreateContainer(ref->GetName(), TTree::Class(), AliAnalysisManager::kOutputContainer, Form("%s:TRD.CalibPIDrefMaker", mgr->GetCommonFileName()))); - - // TRD pid reference maker LQ - mgr->AddTask(ref = new AliTRDpidRefMakerLQ((char*)"refMakerLQ")); - ref->SetDebugLevel(3); - ref->SetMCdata(mgr->GetMCtruthEventHandler()); - ref->SetFriends(kTRUE); - mgr->ConnectInput(ref, 0, mgr->GetCommonInputContainer()); - mgr->ConnectInput(ref, 1, ci[0]); - mgr->ConnectInput(ref, 2, ci[1]); - mgr->ConnectInput(ref, 3, ce); - mgr->ConnectOutput(ref, 1, mgr->CreateContainer("MonitorLQ", TObjArray::Class(), AliAnalysisManager::kOutputContainer, Form("%s:TRD.CalibPIDrefMaker", mgr->GetCommonFileName()))); - mgr->ConnectOutput(ref, 2, mgr->CreateContainer(ref->GetName(), TTree::Class(), AliAnalysisManager::kOutputContainer, Form("%s:TRD.CalibPIDrefMaker", mgr->GetCommonFileName()))); - mgr->ConnectOutput(ref, 3, mgr->CreateContainer("PDF", TObjArray::Class(), AliAnalysisManager::kOutputContainer, Form("%s:TRD.CalibPIDrefMakerLQ", mgr->GetCommonFileName()))); - - - //V0 Monitoring - AliTRDv0Monitor *v0Mon = new AliTRDv0Monitor("v0Monitor","v0Monitor"); - mgr->AddTask(v0Mon); - v0Mon->SetDebugLevel(0); - //AliLog::SetClassDebugLevel("AliTRDpidRefMaker", 3); - v0Mon->SetMCdata(mgr->GetMCtruthEventHandler()); - v0Mon->SetFriends(kTRUE); - //v0Mon->SetSource(AliTRDpidRefMaker::kV0,AliTRDpidRefMaker::kRec); - mgr->ConnectInput( v0Mon, 0, mgr->GetCommonInputContainer()); - mgr->ConnectInput( v0Mon, 1, ci[0]); - mgr->ConnectInput( v0Mon, 2, ci[1]); - mgr->ConnectInput( v0Mon, 3, ce); - - mgr->ConnectOutput(v0Mon, 1, mgr->CreateContainer("MonitorV0", TList::Class(), AliAnalysisManager::kOutputContainer, "V0Monitor.root")); - //mgr->ConnectOutput(v0Mon, 2, mgr->CreateContainer(v0Mon->GetName(), TTree::Class(), AliAnalysisManager::kOutputContainer, Form("%s:TRD.CalibPIDrefMaker", mgr->GetCommonFileName()))); + //AliLog::SetClassDebugLevel("AliTRDpidRefMaker", 3); + //AliLog::SetClassDebugLevel("AliTRDpidRefMakerNN", 3); + //AliLog::SetClassDebugLevel("AliTRDpidRefMakerLQ", 3); + + // TRD pid reference maker NN + AliTRDpidRefMaker *ref(NULL); + mgr->AddTask(ref = new AliTRDpidRefMakerNN((char*)"refMakerNN")); + ref->SetDebugLevel(3); + ref->SetMCdata(mgr->GetMCtruthEventHandler()); + ref->SetFriends(kTRUE); + mgr->ConnectInput( ref, 0, mgr->GetCommonInputContainer()); + mgr->ConnectInput( ref, 1, ci[0]); + mgr->ConnectInput( ref, 2, ci[1]); + mgr->ConnectInput( ref, 3, co[0]); + mgr->ConnectOutput(ref, 1, mgr->CreateContainer("MonitorNN", TObjArray::Class(), AliAnalysisManager::kOutputContainer, Form("%s:TRD.CalibPIDrefMaker",mgr->GetCommonFileName()))); + mgr->ConnectOutput(ref, 2, mgr->CreateContainer(ref->GetName(), TTree::Class(), AliAnalysisManager::kOutputContainer, Form("%s:TRD.CalibPIDrefMaker", mgr->GetCommonFileName()))); + + // TRD pid reference maker LQ + mgr->AddTask(ref = new AliTRDpidRefMakerLQ((char*)"refMakerLQ")); + ref->SetDebugLevel(3); + ref->SetMCdata(mgr->GetMCtruthEventHandler()); + ref->SetFriends(kTRUE); + mgr->ConnectInput(ref, 0, mgr->GetCommonInputContainer()); + mgr->ConnectInput(ref, 1, ci[0]); + mgr->ConnectInput(ref, 2, ci[1]); + mgr->ConnectInput(ref, 3, co[0]); + mgr->ConnectOutput(ref, 1, mgr->CreateContainer("MonitorLQ", TObjArray::Class(), AliAnalysisManager::kOutputContainer, Form("%s:TRD.CalibPIDrefMaker", mgr->GetCommonFileName()))); + mgr->ConnectOutput(ref, 2, mgr->CreateContainer(ref->GetName(), TTree::Class(), AliAnalysisManager::kOutputContainer, Form("%s:TRD.CalibPIDrefMaker", mgr->GetCommonFileName()))); + mgr->ConnectOutput(ref, 3, mgr->CreateContainer("PDF", TObjArray::Class(), AliAnalysisManager::kOutputContainer, Form("%s:TRD.CalibPIDrefMakerLQ", mgr->GetCommonFileName()))); + } } diff --git a/PWG1/TRD/macros/AddTRDv0Monitor.C b/PWG1/TRD/macros/AddTRDv0Monitor.C new file mode 100644 index 00000000000..6bd7239ef9e --- /dev/null +++ b/PWG1/TRD/macros/AddTRDv0Monitor.C @@ -0,0 +1,32 @@ +#if ! defined (__CINT__) || defined (__MAKECINT__) +#include "TTree.h" +#include "AliLog.h" +#include "AliAnalysisManager.h" +#include "AliAnalysisDataContainer.h" +#include "PWG1/TRD/macros/AliTRDperformanceTrain.h" +#include "PWG1/TRD/AliTRDv0Monitor.h" +#endif + +#include "PWG1/TRD/macros/helper.C" +void AddTRDv0Monitor(AliAnalysisManager *mgr, Char_t *trd, AliAnalysisDataContainer **ci/*, AliAnalysisDataContainer **co*/) +{ + Int_t map = ParseOptions(trd); + if(!TSTBIT(map, kV0Monitor)) return; + printf("AddTRDv0Monitor <- [0]=\"%s\" [1]=\"%s\" [2]=\"%s\"\n", ci[0]->GetName(), ci[1]->GetName(), ci[2]->GetName()); + + AliTRDv0Monitor *v0Mon = new AliTRDv0Monitor("v0Monitor", "v0Monitor"); + mgr->AddTask(v0Mon); + v0Mon->SetDebugLevel(0); + //AliLog::SetClassDebugLevel("AliTRDpidRefMaker", 3); + v0Mon->SetMCdata(mgr->GetMCtruthEventHandler()); + v0Mon->SetFriends(kTRUE); + //v0Mon->SetSource(AliTRDpidRefMaker::kV0,AliTRDpidRefMaker::kRec); + mgr->ConnectInput( v0Mon, 0, mgr->GetCommonInputContainer()); + mgr->ConnectInput( v0Mon, 1, ci[0]); + mgr->ConnectInput( v0Mon, 2, ci[1]); + mgr->ConnectInput( v0Mon, 3, ci[2]); + + mgr->ConnectOutput(v0Mon, 1, mgr->CreateContainer(v0Mon->GetName(), TList::Class(), AliAnalysisManager::kOutputContainer, Form("%s:TRD_Performance",mgr->GetCommonFileName()))); + //mgr->ConnectOutput(v0Mon, 2, mgr->CreateContainer(v0Mon->GetName(), TTree::Class(), AliAnalysisManager::kOutputContainer, Form("%s:TRD.CalibPIDrefMaker", mgr->GetCommonFileName()))); +} + diff --git a/PWG1/TRD/macros/AliTRDperformanceTrain.h b/PWG1/TRD/macros/AliTRDperformanceTrain.h index 11b6103ff83..095746d18bd 100644 --- a/PWG1/TRD/macros/AliTRDperformanceTrain.h +++ b/PWG1/TRD/macros/AliTRDperformanceTrain.h @@ -6,7 +6,7 @@ #define TSTBIT(n,i) ((Bool_t)(((n) & BITBIT(i)) != 0)) #define CLRBITT(n,i) ((n) &= ~BITBIT(i)) -#define NTRDQATASKS 6 +#define NTRDQATASKS 7 #define NTRDCALIBTASKS 6 const Int_t NTRDTASKS = NTRDQATASKS+NTRDCALIBTASKS; @@ -27,12 +27,13 @@ enum ETRDrecoTasks{ ,kEfficiency = 3 ,kResolution = 4 ,kCheckPID = 5 - ,kCalibration = 6 - ,kEfficiencyMC = 7 - ,kAlignment = 8 - ,kPIDRefMaker = 9 - ,kClErrParam =10 - ,kMultiplicity =11 + ,kV0Monitor = 6 + ,kCalibration = 7 + ,kEfficiencyMC = 8 + ,kAlignment = 9 + ,kPIDRefMaker =10 + ,kClErrParam =11 + ,kMultiplicity =12 }; Char_t const* fgkTRDtaskClassName[NTRDTASKS] = { @@ -42,6 +43,7 @@ Char_t const* fgkTRDtaskClassName[NTRDTASKS] = { ,"AliTRDefficiency" ,"AliTRDresolution" ,"AliTRDcheckPID" + ,"AliTRDv0Monitor" ,"AliTRDcalibration" ,"AliTRDefficiencyMC" ,"AliTRDalignmentTask" @@ -57,6 +59,7 @@ Char_t const* fgkTRDtaskOpt[NTRDTASKS+1] = { ,"EFF" ,"RES" ,"PID" + ,"V0" ,"CAL" ,"EFFC" ,"ALGN" diff --git a/PWG1/TRD/macros/helper.C b/PWG1/TRD/macros/helper.C index b64224c633b..f284519827d 100644 --- a/PWG1/TRD/macros/helper.C +++ b/PWG1/TRD/macros/helper.C @@ -41,6 +41,7 @@ Int_t ParseOptions(Char_t *trd) if(TSTBIT(fSteerTask, kClErrParam)) SETBITT(fSteerTask, kResolution); if(TSTBIT(fSteerTask, kAlignment)) SETBITT(fSteerTask, kResolution); if(TSTBIT(fSteerTask, kPIDRefMaker)) SETBITT(fSteerTask, kCheckPID); + if(TSTBIT(fSteerTask, kV0Monitor)) SETBITT(fSteerTask, kCheckPID); return fSteerTask; } diff --git a/PWG1/TRD/run.C b/PWG1/TRD/run.C index c9d87c9ff56..270c8400d42 100644 --- a/PWG1/TRD/run.C +++ b/PWG1/TRD/run.C @@ -13,6 +13,7 @@ // "ALGN" : TRD alignment // "PID" : TRD PID - pion efficiency // "PIDR" : TRD PID - reference data +// "V0" : monitor V0 performance for use in TRD PID calibration // "DET" : Basic TRD Detector checks // ****** SPECIAL OPTIONS ********** // "NOFR" : Data set does not have AliESDfriends.root diff --git a/PWG1/macros/AddTrainPerformanceTRD.C b/PWG1/macros/AddTrainPerformanceTRD.C index 2873a0ce378..784b45d4884 100644 --- a/PWG1/macros/AddTrainPerformanceTRD.C +++ b/PWG1/macros/AddTrainPerformanceTRD.C @@ -69,6 +69,7 @@ #include "PWG1/TRD/macros/AddTRDefficiency.C" #include "PWG1/TRD/macros/AddTRDresolution.C" #include "PWG1/TRD/macros/AddTRDcheckPID.C" +#include "PWG1/TRD/macros/AddTRDv0Monitor.C" #endif #include "../TRD/macros/AliTRDperformanceTrain.h" @@ -124,9 +125,14 @@ Bool_t AddTrainPerformanceTRD(Char_t *trd="ALL", const Char_t *addMacroPath = "$ break; case kCheckPID: // map slots - ce[1]=ci[kV0List]; ce[0]=ci[kTracksBarrel]; - AddTRDcheckPID(mgr, trd, ce); break; + ce[1]=ci[kV0List]; + AddTRDcheckPID(mgr, trd, ce, &ce[2]); + break; + case kV0Monitor: + // slots already mapped by checkPID + AddTRDv0Monitor(mgr, trd, ce); + break; default: Warning("AddTrainPerformanceTRD()", Form("No performance task registered at slot %d.", it)); } -- 2.39.3