add V0 task as cuasi-independent performance task
authorabercuci <abercuci@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 14 Jul 2010 10:02:42 +0000 (10:02 +0000)
committerabercuci <abercuci@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 14 Jul 2010 10:02:42 +0000 (10:02 +0000)
PWG1/TRD/AliTRDrecoTask.cxx
PWG1/TRD/AliTRDrecoTask.h
PWG1/TRD/macros/AddTRDcheckPID.C
PWG1/TRD/macros/AddTRDv0Monitor.C [new file with mode: 0644]
PWG1/TRD/macros/AliTRDperformanceTrain.h
PWG1/TRD/macros/helper.C
PWG1/TRD/run.C
PWG1/macros/AddTrainPerformanceTRD.C

index 2b3ab70..1c39006 100644 (file)
@@ -102,6 +102,13 @@ AliTRDrecoTask::~AliTRDrecoTask()
 }
 
 //_______________________________________________________
+Int_t AliTRDrecoTask::GetNRefFigures() const  
+{ 
+  if(!fNRefFigures) AliWarning("No reference plots available.");
+  return fNRefFigures; 
+} 
+
+//_______________________________________________________
 void AliTRDrecoTask::UserExec(Option_t *)
 {
 // Loop over Plot functors published by particular tasks
@@ -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;
 }
 
 //_______________________________________________________
index 8d377bd..b3aa7a8 100644 (file)
@@ -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);
index 6b6f6b6..f741f59 100644 (file)
@@ -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 (file)
index 0000000..6bd7239
--- /dev/null
@@ -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())));
+}
+
index 11b6103..095746d 100644 (file)
@@ -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"
index b64224c..f284519 100644 (file)
@@ -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;
 }
index c9d87c9..270c840 100644 (file)
@@ -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 
index 2873a0c..784b45d 100644 (file)
@@ -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)); 
     }