1 // alien:///alice/cern.ch/user/t/tschuste/correction_hybrid_nulled.root
2 AliDhcTask *AddTaskDhc(
5 TString chHEffFile = "",
6 TString chMuEffFile = "",
7 TString chTaskFile = "",
8 TString chTaskName = "",
9 TString chNTracks = "PicoTracks")
12 Char_t chExtraName[256];
14 // Get the analysis manager
15 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
17 Error("AddTaskDhc", "No analysis manager found.");
21 // ESD or AOD? write into the task name etc.
22 sprintf(chExtraName,"_%s",mgr->GetInputEventHandler()->GetDataType());
24 AliDhcTask *dhcTask = 0x0;
26 // If string chTaskFile is given, load a pre-configured task from file
27 if (!chTaskFile.EqualTo("")) {
29 TFile *fiDhcTask = 0x0;
30 fiDhcTask = TFile::Open(chTaskFile,"OLD");
32 Error("AddTaskDhc",Form("Requested file: %s was not opened. ABORT.",chTaskFile));
35 dhcTask = (AliDhcTask*) fiDhcTask->Get(chTaskName);
37 else { // create a new task
39 Double_t arPt[5] = {0.5, 1.0, 2.0, 4.0};
40 TAxis *axPt = new TAxis(3,arPt);
41 Double_t arCent[5] = {0.0, 20.0, 40.0, 60.0, 100.0};
42 TAxis *axCent = new TAxis(4,arCent);
43 TAxis *axZvtx = new TAxis(1,-10.0,10.0);
44 Double_t arCentMix[9] = {0.0, 10.0, 20.0, 30.0, 40.0, 50.0, 60.0, 80.0, 100.0};
45 TAxis *axCentMix = new TAxis(8,arCentMix);
46 TAxis *axZvtxMix = new TAxis(8,-10.0,10.0);
48 // Efficiency correction files
53 if (!chHEffFile.EqualTo("")) {
54 fiHEff = TFile::Open(chHEffFile,"OLD");
56 Error("AddTaskDhc",Form("Requested file: %s was not opened. ABORT.",chHEffFile));
59 hHEff = (THnF*) fiHEff->Get("correction");
61 if (!chMuEffFile.EqualTo("")) {
62 fiMuEff = TFile::Open(chMuEffFile,"OLD");
64 Error("AddTaskDhc",Form("Requested file: %s was not opened. ABORT.",chMuEffFile));
67 hMuEff = (THnF*) fiMuEff->Get("correction");
70 dhcTask = new AliDhcTask("Task_tschuste_Dhc_fornow");
74 dhcTask->SetAnaMode(AliDhcTask::kHH);
75 dhcTask->SetHEffT(hHEff);
76 dhcTask->SetHEffA(hHEff);
77 dhcTask->SetEtaMax(1.2);
78 dhcTask->SetPtTACrit(kTRUE);
79 sprintf(chExtraName,"%s_HH",chExtraName);
81 sprintf(chExtraName,"%s_corrH",chExtraName);
83 } else if (iAna==2) { // mu-h
84 Int_t nDetaBins = 100;
86 dhcTask->SetAnaMode(AliDhcTask::kMuH);
87 dhcTask->SetHEffT(hMuEff);
88 dhcTask->SetHEffA(hHEff);
89 dhcTask->SetEtaMax(5.0);
90 dhcTask->SetPtTACrit(kFALSE);
91 sprintf(chExtraName,"%s_MuH",chExtraName);
93 sprintf(chExtraName,"%s_corrMu",chExtraName);
96 sprintf(chExtraName,"%s_corrH",chExtraName);
99 dhcTask->SetTracksName(chNTracks);
100 dhcTask->SetDoWeights(kFALSE);
101 dhcTask->SetCentMethod("V0M");
102 dhcTask->SetDEtaDPhiBins(nDetaBins,nDPhiBins);
103 dhcTask->SetPtTBins(axPt);
104 dhcTask->SetPtABins(axPt);
105 dhcTask->SetCentBins(axCent);
106 dhcTask->SetZVtxBins(axZvtx);
107 dhcTask->SetCentMixBins(axCentMix);
108 dhcTask->SetZVtxMixBins(axZvtxMix);
109 dhcTask->SelectCollisionCandidates(AliVEvent::kINT7);
110 dhcTask->SetVerbosity(0);
113 Error("AddTaskDhc","no dhcTask");
117 // make a unique task name
118 Char_t chNewTaskName[256];
119 if (chTaskName.EqualTo("")) {
120 sprintf(chNewTaskName,"Task_Dhc%s%s",chExtraName,chUName.Data());
122 sprintf(chNewTaskName,"%s",chTaskName);
125 AliDhcTask *mgrTask = mgr->GetTask(chNewTaskName);
127 sprintf(chNewTaskName,"%s_bis%04.0f",chNewTaskName,10000*gRandom->Rndm());
129 dhcTask->SetName(chNewTaskName);
130 Info("AddTaskDhc",Form("DHC Analysis, adding task %s",dhcTask->GetName()));
131 mgr->AddTask(dhcTask);
132 AliAnalysisDataContainer *co_Dhc = mgr->CreateContainer(Form("Cont_%s",chNewTaskName),
134 AliAnalysisManager::kOutputContainer,
135 Form("%s:PWGCF_out_%s", AliAnalysisManager::GetCommonFileName(), chNewTaskName));
136 mgr->ConnectInput(dhcTask,0,mgr->GetCommonInputContainer());
137 mgr->ConnectOutput(dhcTask,1,co_Dhc);