]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG1/TRD/macros/AddTRDresolution.C
copy TRD performance train to PWG1
[u/mrichter/AliRoot.git] / PWG1 / TRD / macros / AddTRDresolution.C
1 #if ! defined (__CINT__) || defined (__MAKECINT__)
2 #include "TTree.h"
3 #include "AliAnalysisManager.h"
4 #include "AliAnalysisDataContainer.h"
5 #include "TRD/qaRec/macros/AliTRDperformanceTrain.h"
6 #include "TRD/qaRec/AliTRDresolution.h"
7 #include "TRD/qaRec/AliTRDclusterResolution.h"
8 #include "TRD/qaRec/AliTRDalignmentTask.h"
9 #endif
10
11 #include "TRD/qaRec/macros/helper.C"
12 void AddTRDresolution(AliAnalysisManager *mgr, Char_t *trd, AliAnalysisDataContainer **ci/*, AliAnalysisDataContainer **co*/)
13 {
14   Int_t map = ParseOptions(trd);
15   AliTRDresolution *task = 0x0;
16   if(!TSTBIT(map, kResolution)) return;
17   mgr->AddTask(task = new AliTRDresolution());
18   task->SetMCdata(mgr->GetMCtruthEventHandler());
19   task->SetPostProcess(kFALSE);
20   task->SetDebugLevel(1);
21   mgr->ConnectInput( task, 0, ci[0]);
22   mgr->ConnectOutput(task, 0, mgr->CreateContainer(task->GetName(), TObjArray::Class(), AliAnalysisManager::kOutputContainer, "TRD.Performance.root"));
23
24   // Create output containers for calibration tasks
25   const Int_t nc = 4;
26   const Char_t *cn[nc] = {"Cl", "Trklt", "MC_Cl", "MC_Trklt"}; 
27   AliAnalysisDataContainer *co[] = {0x0, 0x0, 0x0, 0x0};
28   for(Int_t ic = 0; ic<nc; ic++){
29     co[ic] = mgr->CreateContainer(Form("%s%s", task->GetName(), cn[ic]), TObjArray::Class(), AliAnalysisManager::kExchangeContainer);
30     mgr->ConnectOutput(task, 1+ic, co[ic]);
31   }
32
33   // Cluster Error Parameterization
34   if(TSTBIT(map, kClErrParam)){
35     AliTRDclusterResolution *taskCl = 0x0;
36     mgr->AddTask(taskCl = new AliTRDclusterResolution("ESD", "ESD Cluster error parameterization"));
37     taskCl->SetExB();
38     mgr->ConnectInput(taskCl, 0, co[0]);
39     mgr->ConnectOutput(taskCl, 0, mgr->CreateContainer(taskCl->GetName(), TObjArray::Class(), AliAnalysisManager::kOutputContainer, "TRD.CalibClErrParam.root"));
40
41     mgr->AddTask(taskCl = new AliTRDclusterResolution("MC", "MC Cluster error parameterization"));
42     taskCl->SetExB();
43     mgr->ConnectInput(taskCl, 0, co[2]);
44     mgr->ConnectOutput(taskCl, 0, mgr->CreateContainer(taskCl->GetName(), TObjArray::Class(), AliAnalysisManager::kOutputContainer, "TRD.CalibClErrParam.root"));
45   }
46
47   // TRD alignment
48   if(TSTBIT(map, kAlignment)){
49     AliTRDalignmentTask *taskAl = 0x0;
50     mgr->AddTask(taskAl = new AliTRDalignmentTask());
51     taskAl->SetDebugLevel(0);
52     mgr->ConnectInput(taskAl, 0, ci[0]);  
53     mgr->ConnectOutput(taskAl, 0, mgr->CreateContainer(Form("h%s", taskAl->GetName()), TObjArray::Class(), AliAnalysisManager::kExchangeContainer));
54     mgr->ConnectOutput(taskAl, 1, mgr->CreateContainer(task->GetName(), TTree::Class(), AliAnalysisManager::kOutputContainer, Form("TRD.Calib%s.root", task->GetName())));
55   }
56 }
57