Fix in the include
[u/mrichter/AliRoot.git] / PWGPP / TRD / macros / AddTRDresolution.C
1 #if ! defined (__CINT__) || defined (__MAKECINT__)
2 #include "TTree.h"
3 #include "TError.h"
4 #include "AliLog.h"
5 #include "AliAnalysisManager.h"
6 #include "AliAnalysisDataContainer.h"
7 #include "AliTRDgeometry.h"
8 #include "PWGPP/TRD/AliTRDpwgppHelper.h"
9 #include "PWGPP/TRD/AliTRDresolution.h"
10 #include "PWGPP/TRD/AliTRDclusterResolution.h"
11 #include "PWGPP/TRD/AliTRDalignmentTask.h"
12 #endif
13
14 void AddTRDresolution(AliAnalysisManager *mgr, Int_t map, AliAnalysisDataContainer **ci)
15 {
16   Info("AddTRDresolution", Form("[0]=\"%s\" [1]=\"%s\" [2]=\"%s\" [3]=\"%s\" [4]=\"%s\"", ci[0]->GetName(), ci[1]->GetName(), ci[2]->GetName(), ci[3]->GetName(), ci[4]->GetName()));
17   AliAnalysisDataContainer *evInfoContainer = ci[3];
18
19   //AliLog::SetClassDebugLevel("AliTRDrecoTask", 2);
20   //AliLog::SetClassDebugLevel("AliTRDresolution", 2);
21   AliTRDresolution *res(NULL);
22   const Char_t *suffix[]={"", "ITS", "K"};
23   for(Int_t itq=0; itq<1/*3*/; itq++){
24     mgr->AddTask(res = new AliTRDresolution(Form("TRDresolution%s", suffix[itq])));
25     res->SetMCdata(mgr->GetMCtruthEventHandler());
26     res->SetPostProcess(kFALSE);
27     res->SetDebugLevel(0);
28     res->SetPtThreshold(0.2);
29     //res->SetTriggerList("CINT7WUHJT-S-NOPF-CENT CINT7WUHSE-S-NOPF-CENT CINT7WUHQU-S-NOPF-CENT CEMC7WU-S-NOPF-ALL");
30     res->SetNameId(suffix[itq]);
31     mgr->ConnectInput(res, 0, mgr->GetCommonInputContainer()); // connect main (ESD) container 
32     mgr->ConnectInput(res, 1, ci[itq]);                        // conect track info container
33     mgr->ConnectInput(res, 2, evInfoContainer);                // conect event info container
34     mgr->ConnectInput(res, 3, ci[4]);                          // conect clusters container
35     mgr->ConnectOutput(res,1, mgr->CreateContainer(res->GetName(), TObjArray::Class(), AliAnalysisManager::kOutputContainer, Form("%s:TRD_Performance", mgr->GetCommonFileName())));
36   
37     // Create output containers for calibration tasks
38     AliAnalysisDataContainer *co(NULL);
39     co = mgr->CreateContainer(Form("%sCl2Trk%s", res->GetName(), suffix[itq]), TObjArray::Class(), AliAnalysisManager::kExchangeContainer);
40     mgr->ConnectOutput(res, AliTRDresolution::kClToTrk, co);
41     co = mgr->CreateContainer(Form("%sCl2MC%s", res->GetName(), suffix[itq]), TObjArray::Class(), AliAnalysisManager::kExchangeContainer);
42     mgr->ConnectOutput(res, AliTRDresolution::kClToMC, co);
43     
44     TObjArray *coa = mgr->GetContainers();
45     // Cluster Error Parameterization
46     if(TESTBIT(map, AliTRDpwgppHelper::kClErrParam)){
47       AliTRDclusterResolution *taskCl(NULL);
48       AliLog::SetClassDebugLevel("AliTRDclusterResolution", 2);
49       for(Int_t idet(10); idet<11/*AliTRDgeometry::kNdet*/; idet++){
50         mgr->AddTask(taskCl = new AliTRDclusterResolution(Form("ClErrCalib%03d", idet)));
51         taskCl->SetCalibrationRegion(idet);
52         taskCl->SetDebugLevel(0);
53         mgr->ConnectInput(taskCl,  0, mgr->GetCommonInputContainer());  // connect main (ESD) container
54         mgr->ConnectInput(taskCl,  1, (AliAnalysisDataContainer*)coa->FindObject(Form("%sCl2Trk%s", res->GetName(), suffix[itq])));
55         mgr->ConnectInput(taskCl,  2, evInfoContainer);
56         mgr->ConnectOutput(taskCl, 1, mgr->CreateContainer(taskCl->GetName(), TObjArray::Class(), AliAnalysisManager::kOutputContainer, Form("%s:TRD_Calibration", mgr->GetCommonFileName())));
57         if(mgr->GetMCtruthEventHandler()){
58           mgr->AddTask(taskCl = new AliTRDclusterResolution(Form("ClErrCalibMC%03d", idet)));
59           taskCl->SetCalibrationRegion(idet);
60           taskCl->SetDebugLevel(0);
61           mgr->ConnectInput(taskCl,  0, mgr->GetCommonInputContainer());  
62           mgr->ConnectInput(taskCl,  1, (AliAnalysisDataContainer*)coa->FindObject(Form("%sCl2MC%s", res->GetName(), suffix[itq])));
63           mgr->ConnectInput(taskCl,  2, evInfoContainer);
64           mgr->ConnectOutput(taskCl, 1, mgr->CreateContainer(taskCl->GetName(), TObjArray::Class(), AliAnalysisManager::kOutputContainer, Form("%s:TRD_Calibration", mgr->GetCommonFileName())));
65         }
66       }
67     }
68   }
69
70   // TRD alignment
71   if(TESTBIT(map, AliTRDpwgppHelper::kAlignment)){
72     AliTRDalignmentTask *taskAlign(NULL);
73     mgr->AddTask(taskAlign = new AliTRDalignmentTask((char*)"TRDalignment"));
74     taskAlign->SetDebugLevel(0);
75     //AliLog::SetClassDebugLevel("AliTRDalignmentTask", 5);  
76     mgr->ConnectInput(taskAlign,  0, mgr->GetCommonInputContainer());  
77     mgr->ConnectInput(taskAlign,  1, ci[0]);
78     mgr->ConnectInput(taskAlign,  2, evInfoContainer);
79     mgr->ConnectInput(taskAlign,  3, ci[4]);                          // conect clusters container
80     mgr->ConnectOutput(taskAlign, 1, mgr->CreateContainer(Form("h%s", taskAlign->GetName()), TObjArray::Class(), AliAnalysisManager::kExchangeContainer));
81     mgr->ConnectOutput(taskAlign, 2, mgr->CreateContainer(taskAlign->GetName(), TTree::Class(), AliAnalysisManager::kOutputContainer, Form("%s:TRD_Alignment",mgr->GetCommonFileName())));
82   }
83 }
84