]> git.uio.no Git - u/mrichter/AliRoot.git/blame_incremental - PWGGA/GammaConv/macros/AddTask_GammaCalo_PbPb.C
Merge branch 'feature-movesplit'
[u/mrichter/AliRoot.git] / PWGGA / GammaConv / macros / AddTask_GammaCalo_PbPb.C
... / ...
CommitLineData
1void AddTask_GammaCalo_PbPb( Int_t trainConfig = 1, //change different set of cuts
2 Bool_t isMC = kFALSE, //run MC
3 Int_t enableQAMesonTask = 0, //enable QA in AliAnalysisTaskGammaConvV1
4 Int_t enableQAClusterTask = 0, // enable additional QA task
5 TString fileNameInputForWeighting = "MCSpectraInput.root", // path to file for weigting input
6 Int_t headerSelectionInt = 0, // 1 pi0 header, 2 eta header, 3 both (only for "named" boxes)
7 TString cutnumberAODBranch = "1000000060084000001500000",
8 TString periodName = "LHC13d2", //name of the period for added signals and weighting
9 Bool_t doWeighting = kFALSE, //enable Weighting
10 Bool_t isUsingTHnSparse = kTRUE //enable or disable usage of THnSparses for background estimation
11 ) {
12
13 // ================= Load Librariers =================================
14 gSystem->Load("libCore");
15 gSystem->Load("libTree");
16 gSystem->Load("libGeom");
17 gSystem->Load("libVMC");
18 gSystem->Load("libPhysics");
19 gSystem->Load("libMinuit");
20 gSystem->Load("libSTEERBase");
21 gSystem->Load("libESD");
22 gSystem->Load("libAOD");
23 gSystem->Load("libANALYSIS");
24 gSystem->Load("libANALYSISalice");
25 gSystem->Load("libCDB");
26 gSystem->Load("libSTEER");
27 gSystem->Load("libSTEERBase");
28 gSystem->Load("libTender");
29 gSystem->Load("libTenderSupplies");
30 gSystem->Load("libPWGflowBase");
31 gSystem->Load("libPWGflowTasks");
32 gSystem->Load("libPWGGAGammaConv");
33
34 Int_t isHeavyIon = 1;
35
36 // ================== GetAnalysisManager ===============================
37 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
38 if (!mgr) {
39 Error(Form("AddTask_GammaConvV1_%i",trainConfig), "No analysis manager found.");
40 return ;
41 }
42
43 // ================== GetInputEventHandler =============================
44 AliVEventHandler *inputHandler=mgr->GetInputEventHandler();
45
46 //========= Add PID Reponse to ANALYSIS manager ====
47 if(!(AliPIDResponse*)mgr->GetTask("PIDResponseTask")){
48 gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskPIDResponse.C");
49 AddTaskPIDResponse(isMC);
50 }
51
52 //========= Set Cutnumber for V0Reader ================================
53 TString cutnumberPhoton = "000000084001001500000000";
54 TString cutnumberEvent = "1000000";
55 AliAnalysisDataContainer *cinput = mgr->GetCommonInputContainer();
56
57 //========= Add V0 Reader to ANALYSIS manager if not yet existent =====
58 if( !(AliV0ReaderV1*)mgr->GetTask("V0ReaderV1") ){
59 AliV0ReaderV1 *fV0ReaderV1 = new AliV0ReaderV1("V0ReaderV1");
60
61 fV0ReaderV1->SetUseOwnXYZCalculation(kTRUE);
62 fV0ReaderV1->SetCreateAODs(kFALSE);// AOD Output
63 fV0ReaderV1->SetUseAODConversionPhoton(kTRUE);
64
65 if (!mgr) {
66 Error("AddTask_V0ReaderV1", "No analysis manager found.");
67 return;
68 }
69
70 AliConvEventCuts *fEventCuts=NULL;
71 if(cutnumberEvent!=""){
72 fEventCuts= new AliConvEventCuts(cutnumberEvent.Data(),cutnumberEvent.Data());
73 fEventCuts->SetPreSelectionCutFlag(kTRUE);
74 if(fEventCuts->InitializeCutsFromCutString(cutnumberEvent.Data())){
75 fV0ReaderV1->SetEventCuts(fEventCuts);
76 fEventCuts->SetFillCutHistograms("",kTRUE);
77 }
78 }
79
80
81 // Set AnalysisCut Number
82 AliConversionPhotonCuts *fCuts=NULL;
83 if(cutnumberPhoton!=""){
84 fCuts= new AliConversionPhotonCuts(cutnumberPhoton.Data(),cutnumberPhoton.Data());
85 fCuts->SetPreSelectionCutFlag(kTRUE);
86 fCuts->SetIsHeavyIon(isHeavyIon);
87 if(fCuts->InitializeCutsFromCutString(cutnumberPhoton.Data())){
88 fV0ReaderV1->SetConversionCuts(fCuts);
89 fCuts->SetFillCutHistograms("",kTRUE);
90 }
91 }
92
93 if(inputHandler->IsA()==AliAODInputHandler::Class()){
94 // AOD mode
95 fV0ReaderV1->SetDeltaAODBranchName(Form("GammaConv_%s_gamma",cutnumberAODBranch.Data()));
96 }
97 fV0ReaderV1->Init();
98
99 AliLog::SetGlobalLogLevel(AliLog::kFatal);
100
101 //connect input V0Reader
102 mgr->AddTask(fV0ReaderV1);
103 mgr->ConnectInput(fV0ReaderV1,0,cinput);
104
105 }
106
107 //================================================
108 //========= Add task to the ANALYSIS manager =====
109 //================================================
110 AliAnalysisTaskGammaCalo *task=NULL;
111 task= new AliAnalysisTaskGammaCalo(Form("GammaCalo_%i",trainConfig));
112 task->SetIsHeavyIon(isHeavyIon);
113 task->SetIsMC(isMC);
114 // Cut Numbers to use in Analysis
115 Int_t numberOfCuts = 5;
116
117 TString *eventCutArray = new TString[numberOfCuts];
118 TString *clusterCutArray = new TString[numberOfCuts];
119 TString *mesonCutArray = new TString[numberOfCuts];
120
121 // meson cuts
122 // meson type (Dalitz or not), BG scheme, pool depth, rotation degrees, rapidity cut, radius cut, alpha, chi2, shared electrons, reject to close v0, MC smearing, dca, dca, dca
123
124 if (trainConfig == 1){ // EMCAL clusters
125 eventCutArray[ 0] = "6010001"; clusterCutArray[0] = "10000040032030000"; mesonCutArray[ 0] = "01631031000000"; // 0-5%
126 eventCutArray[ 1] = "6120001"; clusterCutArray[1] = "10000040032030000"; mesonCutArray[ 1] = "01631031000000"; // 5-10%
127 eventCutArray[ 2] = "5010001"; clusterCutArray[2] = "10000040032030000"; mesonCutArray[ 2] = "01631031000000"; // 0-10%
128 eventCutArray[ 3] = "5240001"; clusterCutArray[3] = "10000040032030000"; mesonCutArray[ 3] = "01631031000000"; // 20-40%
129 eventCutArray[ 4] = "5250001"; clusterCutArray[4] = "10000040032030000"; mesonCutArray[ 4] = "01631031000000"; // 20-50%
130 } else if (trainConfig == 2){ // EMCAL clusters
131 eventCutArray[ 0] = "6010001"; clusterCutArray[0] = "10000040032030000"; mesonCutArray[ 0] = "01631031000000"; // 0-5%
132 eventCutArray[ 1] = "6120001"; clusterCutArray[1] = "10000040032030000"; mesonCutArray[ 1] = "01631031000000"; // 5-10%
133 eventCutArray[ 2] = "5010001"; clusterCutArray[2] = "10000040032030000"; mesonCutArray[ 2] = "01631031000000"; // 0-10%
134 eventCutArray[ 3] = "5120001"; clusterCutArray[3] = "10000040032030000"; mesonCutArray[ 3] = "01631031000000"; // 10-20%
135 eventCutArray[ 4] = "5240001"; clusterCutArray[4] = "10000040032030000"; mesonCutArray[ 4] = "01631031000000"; // 20-40%
136 } else if (trainConfig == 3){ // EMCAL clusters
137 eventCutArray[ 0] = "5460001"; clusterCutArray[0] = "10000040032030000"; mesonCutArray[ 0] = "01631031000000"; // 40-60%
138 eventCutArray[ 1] = "5680001"; clusterCutArray[1] = "10000040032030000"; mesonCutArray[ 1] = "01631031000000"; // 60-80%
139 eventCutArray[ 2] = "5260001"; clusterCutArray[2] = "10000040032030000"; mesonCutArray[ 2] = "01631031000000"; // 20-60%
140 eventCutArray[ 3] = "5480001"; clusterCutArray[3] = "10000040032030000"; mesonCutArray[ 3] = "01631031000000"; // 40-80%
141 eventCutArray[ 4] = "5250001"; clusterCutArray[4] = "10000040032030000"; mesonCutArray[ 4] = "01631031000000"; // 20-50%
142 } else if (trainConfig == 31){ // PHOS clusters
143 eventCutArray[ 0] = "6010001"; clusterCutArray[0] = "20000040033200000"; mesonCutArray[ 0] = "01631031000000"; // 0-5%
144 eventCutArray[ 1] = "6120001"; clusterCutArray[1] = "20000040033200000"; mesonCutArray[ 1] = "01631031000000"; // 5-10%
145 eventCutArray[ 2] = "5010001"; clusterCutArray[2] = "20000040033200000"; mesonCutArray[ 2] = "01631031000000"; // 0-10%
146 eventCutArray[ 3] = "5240001"; clusterCutArray[3] = "20000040033200000"; mesonCutArray[ 3] = "01631031000000"; // 20-40%
147 eventCutArray[ 4] = "5250001"; clusterCutArray[4] = "20000040033200000"; mesonCutArray[ 4] = "01631031000000"; // 20-50%
148 } else if (trainConfig == 32){ // PHOS clusters
149 eventCutArray[ 0] = "6010001"; clusterCutArray[0] = "20000040033200000"; mesonCutArray[ 0] = "01631031000000"; // 0-5%
150 eventCutArray[ 1] = "6120001"; clusterCutArray[1] = "20000040033200000"; mesonCutArray[ 1] = "01631031000000"; // 5-10%
151 eventCutArray[ 2] = "5010001"; clusterCutArray[2] = "20000040033200000"; mesonCutArray[ 2] = "01631031000000"; // 0-10%
152 eventCutArray[ 3] = "5120001"; clusterCutArray[3] = "20000040033200000"; mesonCutArray[ 3] = "01631031000000"; // 10-20%
153 eventCutArray[ 4] = "5240001"; clusterCutArray[4] = "20000040033200000"; mesonCutArray[ 4] = "01631031000000"; // 20-40%
154 } else if (trainConfig == 33){ // PHOS clusters
155 eventCutArray[ 0] = "5460001"; clusterCutArray[0] = "20000040033200000"; mesonCutArray[ 0] = "01631031000000"; // 40-60%
156 eventCutArray[ 1] = "5680001"; clusterCutArray[1] = "20000040033200000"; mesonCutArray[ 1] = "01631031000000"; // 60-80%
157 eventCutArray[ 2] = "5260001"; clusterCutArray[2] = "20000040033200000"; mesonCutArray[ 2] = "01631031000000"; // 20-60%
158 eventCutArray[ 3] = "5480001"; clusterCutArray[3] = "20000040033200000"; mesonCutArray[ 3] = "01631031000000"; // 40-80%
159 eventCutArray[ 4] = "5250001"; clusterCutArray[4] = "20000040033200000"; mesonCutArray[ 4] = "01631031000000"; // 20-50%
160 } else {
161 Error(Form("GammaConvCalo_%i",trainConfig), "wrong trainConfig variable no cuts have been specified for the configuration");
162 return;
163 }
164
165 TList *EventCutList = new TList();
166 TList *ConvCutList = new TList();
167 TList *ClusterCutList = new TList();
168 TList *MesonCutList = new TList();
169
170 TList *HeaderList = new TList();
171 if (periodName.CompareTo("LHC13d2")==0){
172 TObjString *Header1 = new TObjString("pi0_1");
173 HeaderList->Add(Header1);
174 // TObjString *Header3 = new TObjString("eta_2");
175 // HeaderList->Add(Header3);
176
177 } else if (periodName.CompareTo("LHC12a17x_fix")==0){
178 TObjString *Header1 = new TObjString("PARAM");
179 HeaderList->Add(Header1);
180 } else if (periodName.CompareTo("LHC14a1a")==0){
181 if (headerSelectionInt == 1){
182 TObjString *Header1 = new TObjString("pi0_1");
183 HeaderList->Add(Header1);
184 } else if (headerSelectionInt == 2){
185 TObjString *Header1 = new TObjString("eta_2");
186 HeaderList->Add(Header1);
187 } else {
188 TObjString *Header1 = new TObjString("pi0_1");
189 HeaderList->Add(Header1);
190 TObjString *Header2 = new TObjString("eta_2");
191 HeaderList->Add(Header2);
192 }
193 } else if (periodName.CompareTo("LHC14a1b")==0 || periodName.CompareTo("LHC14a1c")==0){
194 TObjString *Header1 = new TObjString("BOX");
195 HeaderList->Add(Header1);
196 }
197
198 TList *EventCutList = new TList();
199 TList *ClusterCutList = new TList();
200 TList *MesonCutList = new TList();
201
202
203 EventCutList->SetOwner(kTRUE);
204 AliConvEventCuts **analysisEventCuts = new AliConvEventCuts*[numberOfCuts];
205 ClusterCutList->SetOwner(kTRUE);
206 AliCaloPhotonCuts **analysisClusterCuts = new AliCaloPhotonCuts*[numberOfCuts];
207 MesonCutList->SetOwner(kTRUE);
208 AliConversionMesonCuts **analysisMesonCuts = new AliConversionMesonCuts*[numberOfCuts];
209
210 for(Int_t i = 0; i<numberOfCuts; i++){
211 analysisEventCuts[i] = new AliConvEventCuts();
212 analysisEventCuts[i]->InitializeCutsFromCutString(eventCutArray[i].Data());
213 EventCutList->Add(analysisEventCuts[i]);
214 analysisEventCuts[i]->SetFillCutHistograms("",kFALSE);
215
216 analysisClusterCuts[i] = new AliCaloPhotonCuts();
217 analysisClusterCuts[i]->InitializeCutsFromCutString(clusterCutArray[i].Data());
218 ClusterCutList->Add(analysisClusterCuts[i]);
219 analysisClusterCuts[i]->SetFillCutHistograms("");
220
221 analysisMesonCuts[i] = new AliConversionMesonCuts();
222 analysisMesonCuts[i]->InitializeCutsFromCutString(mesonCutArray[i].Data());
223 MesonCutList->Add(analysisMesonCuts[i]);
224 analysisMesonCuts[i]->SetFillCutHistograms("");
225 analysisEventCuts[i]->SetAcceptedHeader(HeaderList);
226 }
227 task->SetEventCutList(numberOfCuts,EventCutList);
228 task->SetCaloCutList(numberOfCuts,ClusterCutList);
229 task->SetMesonCutList(numberOfCuts,MesonCutList);
230 task->SetDoMesonAnalysis(kTRUE);
231 task->SetDoMesonQA(enableQAMesonTask); //Attention new switch for Pi0 QA
232 task->SetDoClusterQA(enableQAClusterTask); //Attention new switch small for Cluster QA
233 task->SetUseTHnSparse(isUsingTHnSparse);
234
235 //connect containers
236 AliAnalysisDataContainer *coutput =
237 mgr->CreateContainer(Form("GammaCalo_%i",trainConfig), TList::Class(),
238 AliAnalysisManager::kOutputContainer,Form("GammaCalo_%i.root",trainConfig));
239
240 mgr->AddTask(task);
241 mgr->ConnectInput(task,0,cinput);
242 mgr->ConnectOutput(task,1,coutput);
243
244 return;
245
246}