]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGGA/GammaConv/macros/AddTask_GammaConvDalitzV1_pp.C
fixed bugs while streaming histos for weighting, added new trainconfig for pPb
[u/mrichter/AliRoot.git] / PWGGA / GammaConv / macros / AddTask_GammaConvDalitzV1_pp.C
CommitLineData
78f10f58 1void AddTask_GammaConvDalitzV1_pp( Int_t trainConfig = 1, //change different set of cuts
2 Bool_t isMC = kFALSE, //run MC
3 TString fileNameInputForWeighting = "MCSpectraInput.root" // path to file for weigting input
4 ) {
5
6 // ================= Load Librariers =================================
7 gSystem->Load("libCore.so");
8 gSystem->Load("libTree.so");
9 gSystem->Load("libGeom.so");
10 gSystem->Load("libVMC.so");
11 gSystem->Load("libPhysics.so");
12 gSystem->Load("libMinuit");
13 gSystem->Load("libSTEERBase");
14 gSystem->Load("libESD");
15 gSystem->Load("libAOD");
16 gSystem->Load("libANALYSIS");
17 gSystem->Load("libANALYSISalice");
18 gSystem->Load("libPWGGAGammaConv.so");
19 gSystem->Load("libCDB.so");
20 gSystem->Load("libSTEER.so");
21 gSystem->Load("libSTEERBase.so");
22 gSystem->Load("libTENDER.so");
23 gSystem->Load("libTENDERSupplies.so");
24
25 // ================== GetAnalysisManager ===============================
26 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
27 if (!mgr) {
28 Error(Form("AddTask_GammaConvDalitzV1_%i",trainConfig), "No analysis manager found.");
29 return ;
30 }
31
32 // ================== GetInputEventHandler =============================
33 AliVEventHandler *inputHandler=mgr->GetInputEventHandler();
34
35 //========= Add PID Reponse to ANALYSIS manager ====
36 if(!(AliPIDResponse*)mgr->GetTask("PIDResponseTask")){
37 gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskPIDResponse.C");
38 AddTaskPIDResponse(isMC);
39 }
40
41 //========= Set Cutnumber for V0Reader ================================
42
43
44 TString cutnumber = "0000000000084001001500000";
45 AliAnalysisDataContainer *cinput = mgr->GetCommonInputContainer();
46
47 //========= Add V0 Reader to ANALYSIS manager if not yet existent =====
48 if( !(AliV0ReaderV1*)mgr->GetTask("V0ReaderV1") ){
49 AliV0ReaderV1 *fV0ReaderV1 = new AliV0ReaderV1("V0ReaderV1");
50
51 fV0ReaderV1->SetUseOwnXYZCalculation(kTRUE);
52 fV0ReaderV1->SetCreateAODs(kFALSE);// AOD Output
53 fV0ReaderV1->SetUseAODConversionPhoton(kTRUE);
54
55 if (!mgr) {
56 Error("AddTask_V0ReaderV1", "No analysis manager found.");
57 return;
58 }
59
60 // Set AnalysisCut Number
61 AliConversionCuts *fCuts=NULL;
62 if(cutnumber!=""){
63 fCuts= new AliConversionCuts(cutnumber.Data(),cutnumber.Data());
64 fCuts->SetPreSelectionCutFlag(kTRUE);
65 if(fCuts->InitializeCutsFromCutString(cutnumber.Data())){
66 fV0ReaderV1->SetConversionCuts(fCuts);
67 fCuts->SetFillCutHistograms("",kTRUE);
68 }
69 }
70 fV0ReaderV1->Init();
71
72 AliLog::SetGlobalLogLevel(AliLog::kInfo);
73
74 //connect input V0Reader
75 mgr->AddTask(fV0ReaderV1);
76 mgr->ConnectInput(fV0ReaderV1,0,cinput);
77
78 }
79
80
81 if( !(AliDalitzElectronSelector*)mgr->GetTask("ElectronSelector") ){
82
83
84
85 AliDalitzElectronSelector *fElectronSelector = new AliDalitzElectronSelector("ElectronSelector");
86
87 //ConfigV0ReaderV1(fV0ReaderV1,ConvCutnumber,IsHeavyIon);
88
89
90
91 // Set AnalysisCut Number
92
93 AliDalitzElectronCuts *fElecCuts=0;
94
95 TString ElecCuts = "900054000000020000";
96
97
98
99 if( ElecCuts!=""){
100
101 fElecCuts= new AliDalitzElectronCuts(ElecCuts.Data(),ElecCuts.Data());
102
103 if(fElecCuts->InitializeCutsFromCutString(ElecCuts.Data())){
104
105 fElectronSelector->SetDalitzElectronCuts(fElecCuts);
106
107 fElecCuts->SetFillCutHistograms("",kTRUE);
108
109 }
110
111 }
112
113 fElectronSelector->Init();
114 }
115
116
117
118 mgr->AddTask(fElectronSelector);
119
120
121
122
123
124 //================================================
125 //========= Add task to the ANALYSIS manager =====
126 // find input container
127 AliAnalysisTaskGammaConvDalitzV1 *task=NULL;
128 task= new AliAnalysisTaskGammaConvDalitzV1(Form("GammaConvDalitzV1_%i",trainConfig));
129 task->SetIsHeavyIon(0);
130 task->SetIsMC(isMC);
131
132
133 // Cut Numbers to use in Analysis
134 Int_t numberOfCuts = 2;
135
136 TString *ConvCutarray = new TString[numberOfCuts];
137 TString *MesonCutarray = new TString[numberOfCuts];
138 TString *ElecCutarray = new TString[numberOfCuts];
139
140
141
142
143
144 if(trainConfig == 1){
145 //TOF PID
146 ConvCutarray[0] = "0000011002093663027800000"; MesonCutarray[0] = "01631031009";ElecCutarray[0] = "904784032531026210"; //TOF[-3,5] 0.0 sigmas at low Pt for pion rejection, Pt 0.125 cut, DCAxy Pt Dep, No Mass(e+,e-) FindCluster > 0.0
147 ConvCutarray[1] = "0000011002093663027800000"; MesonCutarray[1] = "01631031009";ElecCutarray[1] = "904784042531026210"; //TOF[-2,3] 0.0 sigmas at low Pt for pion rejection, Pt 0.125 cut, DCAxy Pt Dep, No Mass(e+,e-) FindCluster > 0.0
148 } else if (trainConfig == 2) {
149 //TOF PID
150 ConvCutarray[0] = "0000011002093663027800000"; MesonCutarray[0] = "01631031009";ElecCutarray[0] = "904784032531026210"; //TOF[-3,5] 0.0 sigmas at low Pt for pion rejection, Pt 0.125 cut, DCAxy Pt Dep, No Mass(e+,e-) FindCluster > 0.0
151 ConvCutarray[1] = "0000011002093663027800000"; MesonCutarray[1] = "01631031009";ElecCutarray[1] = "904784042531026210"; //TOF[-2,3] 0.0 sigmas at low Pt for pion rejection, Pt 0.125 cut, DCAxy Pt Dep, No Mass(e+,e-) FindCluster > 0.0
152 } else if (trainConfig == 3) {
153 //TOF PID
154 ConvCutarray[0] = "0000011002093663027800000"; MesonCutarray[0] = "01631031009";ElecCutarray[0] = "904784032531026210"; //TOF[-3,5] 0.0 sigmas at low Pt for pion rejection, Pt 0.125 cut, DCAxy Pt Dep, No Mass(e+,e-) FindCluster > 0.0
155 ConvCutarray[1] = "0000011002093663027800000"; MesonCutarray[1] = "01631031009";ElecCutarray[1] = "904784042531026210"; //TOF[-2,3] 0.0 sigmas at low Pt for pion rejection, Pt 0.125 cut, DCAxy Pt Dep, No Mass(e+,e-) FindCluster > 0.0
156 } else {
157 Error(Form("GammaConvDalitzV1_%i",trainConfig), "wrong trainConfig variable no cuts have been specified for the configuration");
158 return;
159 }
160
161 TList *ConvCutList = new TList();
162 TList *MesonCutList = new TList();
163 TList *ElecCutList = new TList();
164
165 TList *HeaderList = new TList();
166 TObjString *Header2 = new TObjString("BOX");
167 HeaderList->Add(Header2);
168
169 ConvCutList->SetOwner(kTRUE);
170 AliConversionCuts **analysisCuts = new AliConversionCuts*[numberOfCuts];
171 MesonCutList->SetOwner(kTRUE);
172 AliConversionMesonCuts **analysisMesonCuts = new AliConversionMesonCuts*[numberOfCuts];
173 ElecCutList->SetOwner(kTRUE);
174 AliDalitzElectronCuts **analysisElecCuts = new AliDalitzElectronCuts*[numberOfCuts];
175
176
177
178 for(Int_t i = 0; i<numberOfCuts; i++){
179
180
181 TString cutName( Form("%s_%s_%s",ConvCutarray[i].Data(),ElecCutarray[i].Data(),MesonCutarray[i].Data() ) );
182
183 analysisCuts[i] = new AliConversionCuts();
184 analysisCuts[i]->InitializeCutsFromCutString(ConvCutarray[i].Data());
185 ConvCutList->Add(analysisCuts[i]);
186 analysisCuts[i]->SetFillCutHistograms("",kFALSE);
187
188 analysisMesonCuts[i] = new AliConversionMesonCuts();
189 analysisMesonCuts[i]->InitializeCutsFromCutString(MesonCutarray[i].Data());
190 MesonCutList->Add(analysisMesonCuts[i]);
191 analysisMesonCuts[i]->SetFillCutHistograms("");
192
193
194 analysisElecCuts[i] = new AliDalitzElectronCuts();
195 analysisElecCuts[i]->InitializeCutsFromCutString(ElecCutarray[i].Data());
196 ElecCutList->Add(analysisElecCuts[i]);
197 analysisElecCuts[i]->SetFillCutHistograms("",kFALSE,cutName);
198 //analysisElecCuts[i]->PrintCuts();
199
200
201
202
203
204
205
206 analysisCuts[i]->SetAcceptedHeader(HeaderList);
207
208 }
209
210
211 task->SetConversionCutList(numberOfCuts,ConvCutList);
212 task->SetMesonCutList(MesonCutList);
213 task->SetElectronCutList(ElecCutList);
214 task->SetMoveParticleAccordingToVertex(kTRUE);
215 //task->SetDoMesonAnalysis(kTRUE);
216 //if (enableQAMesonTask) task->SetDoMesonQA(kTRUE); //Attention new switch for Pi0 QA
217 //if (enableQAMesonTask) task->SetDoPhotonQA(kTRUE); //Attention new switch small for Photon QA
218
219 //connect containers
220 AliAnalysisDataContainer *coutput =
221 mgr->CreateContainer(Form("GammaConvDalitzV1_%i",trainConfig), TList::Class(),
222 AliAnalysisManager::kOutputContainer,Form("GammaConvV1_%i.root",trainConfig));
223
224 mgr->AddTask(task);
225 mgr->ConnectInput(task,0,cinput);
226 mgr->ConnectOutput(task,1,coutput);
227
228 return;
229
230}