]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGCF/Correlations/DPhi/FourierDecomposition/AddTaskDhc.C
cleanup
[u/mrichter/AliRoot.git] / PWGCF / Correlations / DPhi / FourierDecomposition / AddTaskDhc.C
1 // alien:///alice/cern.ch/user/t/tschuste/correction_hybrid_nulled.root
2 AliDhcTask *AddTaskDhc(
3   Int_t iAna = 2, 
4   TString chUName = "", 
5   TString chHEffFile = "", 
6   TString chMuEffFile = "", 
7   TString chTaskFile = "", 
8   TString chTaskName = "", 
9   TString chNTracks = "PicoTracks")
10 {
11
12   Char_t chExtraName[256];
13   
14   // Get the analysis manager
15   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
16   if (!mgr) {
17     Error("AddTaskDhc", "No analysis manager found.");
18     return;
19   }
20
21   // ESD or AOD? write into the task name etc.
22   sprintf(chExtraName,"_%s",mgr->GetInputEventHandler()->GetDataType());
23
24   AliDhcTask *dhcTask = 0x0;
25
26   // If string chTaskFile is given, load a pre-configured task from file
27   if (!chTaskFile.EqualTo("")) {
28     iAna=999;
29     TFile *fiDhcTask = 0x0;
30     fiDhcTask = TFile::Open(chTaskFile,"OLD");
31     if (!fiDhcTask){
32       Error("AddTaskDhc",Form("Requested file: %s was not opened. ABORT.",chTaskFile));
33       return;
34     }
35     dhcTask = (AliDhcTask*) fiDhcTask->Get(chTaskName);
36   }
37   else { // create a new task
38     // Binning
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);
47     
48     // Efficiency correction files
49     TFile *fiHEff  = 0x0;
50     TFile *fiMuEff = 0x0;
51     THnF* hHEff    = 0x0;
52     THnF* hMuEff   = 0x0;
53     if (!chHEffFile.EqualTo("")) {
54       fiHEff = TFile::Open(chHEffFile,"OLD");
55       if (!fiHEff){
56         Error("AddTaskDhc",Form("Requested file: %s was not opened. ABORT.",chHEffFile));
57         return;
58       }
59       hHEff = (THnF*) fiHEff->Get("correction");
60     }
61     if (!chMuEffFile.EqualTo("")) {
62       fiMuEff = TFile::Open(chMuEffFile,"OLD");
63       if (!fiMuEff){
64         Error("AddTaskDhc",Form("Requested file: %s was not opened. ABORT.",chMuEffFile));
65         return;
66       }
67       hMuEff = (THnF*) fiMuEff->Get("correction");
68     }
69     
70     dhcTask = new AliDhcTask("Task_tschuste_Dhc_fornow");
71     if (iAna==1) { // h-h
72       Int_t nDetaBins = 40;
73       Int_t nDPhiBins = 72;
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);
80       if (hHEff) {
81         sprintf(chExtraName,"%s_corrH",chExtraName);
82       }
83     } else if (iAna==2) { // mu-h
84       Int_t nDetaBins = 100;
85       Int_t nDPhiBins = 36;
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);
92       if (hMuEff) {
93         sprintf(chExtraName,"%s_corrMu",chExtraName);
94       }
95       if (hHEff) {
96         sprintf(chExtraName,"%s_corrH",chExtraName);
97       }
98     }
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);
111   }
112   if (!dhcTask) {
113     Error("AddTaskDhc","no dhcTask");
114     return 0x0;
115   }
116
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());
121   } else {
122     sprintf(chNewTaskName,"%s",chTaskName);
123   }
124
125   AliDhcTask *mgrTask = mgr->GetTask(chNewTaskName);
126   if (mgrTask)
127     sprintf(chNewTaskName,"%s_bis%04.0f",chNewTaskName,10000*gRandom->Rndm());
128   
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),
133                                                           TList::Class(),
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);
138   
139   return dhcTask;
140 }