1 #if ! defined (__CINT__) || defined (__MAKECINT__)
5 #include "AliAnalysisManager.h"
6 #include "AliAnalysisDataContainer.h"
7 #include "TRD/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"
14 void AddTRDresolution(AliAnalysisManager *mgr, Int_t map, AliAnalysisDataContainer **ci)
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];
19 //AliLog::SetClassDebugLevel("AliTRDrecoTask", 2);
20 //AliLog::SetClassDebugLevel("AliTRDresolution", 2);
21 AliTRDresolution *res(NULL);
22 const Char_t *suffix[]={"", "SA", "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(3);
28 res->SetPtThreshold(0.2);
29 res->SetNameId(suffix[itq]);
30 mgr->ConnectInput(res, 0, mgr->GetCommonInputContainer()); // connect main (ESD) container
31 mgr->ConnectInput(res, 1, ci[itq]); // conect track info container
32 mgr->ConnectInput(res, 2, evInfoContainer); // conect event info container
33 mgr->ConnectInput(res, 3, ci[4]); // conect clusters container
34 mgr->ConnectOutput(res,1, mgr->CreateContainer(res->GetName(), TObjArray::Class(), AliAnalysisManager::kOutputContainer, Form("%s:TRD_Performance", mgr->GetCommonFileName())));
36 // Create output containers for calibration tasks
37 AliAnalysisDataContainer *co(NULL);
38 co = mgr->CreateContainer(Form("%sCl2Trk%s", res->GetName(), suffix[itq]), TObjArray::Class(), AliAnalysisManager::kExchangeContainer);
39 mgr->ConnectOutput(res, AliTRDresolution::kClToTrk, co);
40 co = mgr->CreateContainer(Form("%sCl2MC%s", res->GetName(), suffix[itq]), TObjArray::Class(), AliAnalysisManager::kExchangeContainer);
41 mgr->ConnectOutput(res, AliTRDresolution::kClToMC, co);
43 TObjArray *coa = mgr->GetContainers();
44 // Cluster Error Parameterization
45 if(TESTBIT(map, AliTRDpwgppHelper::kClErrParam)){
46 AliTRDclusterResolution *taskCl(NULL);
47 AliLog::SetClassDebugLevel("AliTRDclusterResolution", 2);
48 for(Int_t idet(10); idet<11/*AliTRDgeometry::kNdet*/; idet++){
49 mgr->AddTask(taskCl = new AliTRDclusterResolution(Form("ClErrCalib%03d", idet)));
50 taskCl->SetCalibrationRegion(idet);
51 taskCl->SetDebugLevel(0);
52 mgr->ConnectInput(taskCl, 0, mgr->GetCommonInputContainer()); // connect main (ESD) container
53 mgr->ConnectInput(taskCl, 1, (AliAnalysisDataContainer*)coa->FindObject(Form("%sCl2Trk%s", res->GetName(), suffix[itq])));
54 mgr->ConnectInput(taskCl, 2, evInfoContainer);
55 mgr->ConnectOutput(taskCl, 1, mgr->CreateContainer(taskCl->GetName(), TObjArray::Class(), AliAnalysisManager::kOutputContainer, Form("%s:TRD_Calibration", mgr->GetCommonFileName())));
56 if(mgr->GetMCtruthEventHandler()){
57 mgr->AddTask(taskCl = new AliTRDclusterResolution(Form("ClErrCalibMC%03d", idet)));
58 taskCl->SetCalibrationRegion(idet);
59 taskCl->SetDebugLevel(0);
60 mgr->ConnectInput(taskCl, 0, mgr->GetCommonInputContainer());
61 mgr->ConnectInput(taskCl, 1, (AliAnalysisDataContainer*)coa->FindObject(Form("%sCl2MC%s", res->GetName(), suffix[itq])));
62 mgr->ConnectInput(taskCl, 2, evInfoContainer);
63 mgr->ConnectOutput(taskCl, 1, mgr->CreateContainer(taskCl->GetName(), TObjArray::Class(), AliAnalysisManager::kOutputContainer, Form("%s:TRD_Calibration", mgr->GetCommonFileName())));
70 if(TESTBIT(map, AliTRDpwgppHelper::kAlignment)){
71 AliTRDalignmentTask *taskAlign(NULL);
72 mgr->AddTask(taskAlign = new AliTRDalignmentTask((char*)"TRDalignment"));
73 taskAlign->SetDebugLevel(0);
74 //AliLog::SetClassDebugLevel("AliTRDalignmentTask", 5);
75 mgr->ConnectInput(taskAlign, 0, mgr->GetCommonInputContainer());
76 mgr->ConnectInput(taskAlign, 1, ci[0]);
77 mgr->ConnectInput(taskAlign, 2, evInfoContainer);
78 mgr->ConnectOutput(taskAlign, 1, mgr->CreateContainer(Form("h%s", taskAlign->GetName()), TObjArray::Class(), AliAnalysisManager::kExchangeContainer));
79 mgr->ConnectOutput(taskAlign, 2, mgr->CreateContainer(taskAlign->GetName(), TTree::Class(), AliAnalysisManager::kOutputContainer, Form("%s:TRD_Alignment",mgr->GetCommonFileName())));