]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGGA/GammaConv/macros/AddTask_GammaConvDalitzV1_pPb.C
ConversionCuts extended for Eventplane angle cut, thus all addTasks modified to have...
[u/mrichter/AliRoot.git] / PWGGA / GammaConv / macros / AddTask_GammaConvDalitzV1_pPb.C
1 void AddTask_GammaConvDalitzV1_pPb(    Int_t trainConfig = 1,
2                                        Bool_t isMC       = kFALSE, //run MC 
3                                        Bool_t enableQAMesonTask = kTRUE, //enable QA in AliAnalysisTaskGammaConvDalitzV1
4                                        Bool_t enableDoMesonChic = kFALSE, // enable additional Chic analysis
5                                        TString cutnumberAODBranch = "0000000060084001001500000"
6                                   ) {
7
8
9    
10    cout<<"Entro -1"<<endl;
11
12   // ================= Load Librariers =================================
13    gSystem->Load("libCore.so");  
14    gSystem->Load("libTree.so");
15    gSystem->Load("libGeom.so");
16    gSystem->Load("libVMC.so");
17    gSystem->Load("libPhysics.so");
18    gSystem->Load("libMinuit");
19    gSystem->Load("libSTEERBase");
20    gSystem->Load("libESD");
21    gSystem->Load("libAOD");
22    gSystem->Load("libANALYSIS");
23    gSystem->Load("libANALYSISalice");  
24    gSystem->Load("libPWGGAGammaConv.so");
25    gSystem->Load("libCDB.so");
26    gSystem->Load("libSTEER.so");
27    gSystem->Load("libSTEERBase.so");
28    gSystem->Load("libTENDER.so");
29    gSystem->Load("libTENDERSupplies.so");
30
31
32    cout<<"Entro 0"<<endl;
33
34    // ================== GetAnalysisManager ===============================
35    AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
36    if (!mgr) {
37       Error(Form("AddTask_GammaConvDalitzV1_pPb_%i",trainConfig), "No analysis manager found.");
38       return ;
39    }
40
41    // ================== GetInputEventHandler =============================
42    AliVEventHandler *inputHandler=mgr->GetInputEventHandler();
43    
44    //========= Add PID Reponse to ANALYSIS manager ====
45    if(!(AliPIDResponse*)mgr->GetTask("PIDResponseTask")){
46       gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskPIDResponse.C");
47       AddTaskPIDResponse(isMC);
48    }
49    
50    //=========  Set Cutnumber for V0Reader ================================
51    TString ConvCutnumber = "8000000060084001001500000000";   //Online  V0 finder
52    TString ElecCuts      = "9000540000000200000";            //Electron Cuts
53    Bool_t doEtaShift = kFALSE;
54
55
56
57    AliAnalysisDataContainer *cinput = mgr->GetCommonInputContainer();
58    
59    //========= Add V0 Reader to  ANALYSIS manager if not yet existent =====
60    if( !(AliV0ReaderV1*)mgr->GetTask("V0ReaderV1") ){
61       AliV0ReaderV1 *fV0ReaderV1 = new AliV0ReaderV1("V0ReaderV1");
62       
63       fV0ReaderV1->SetUseOwnXYZCalculation(kTRUE);
64       fV0ReaderV1->SetCreateAODs(kFALSE);// AOD Output
65       fV0ReaderV1->SetUseAODConversionPhoton(kTRUE);
66       
67       if (!mgr) {
68          Error("AddTask_V0ReaderV1", "No analysis manager found.");
69          return;
70       }
71
72       // Set AnalysisCut Number
73       AliConversionCuts *fCuts=NULL;
74       if( ConvCutnumber !=""){
75          fCuts= new AliConversionCuts(ConvCutnumber.Data(),ConvCutnumber.Data());
76          fCuts->SetPreSelectionCutFlag(kTRUE);
77          if(fCuts->InitializeCutsFromCutString(ConvCutnumber.Data())){
78             fCuts->DoEtaShift(doEtaShift);
79             fV0ReaderV1->SetConversionCuts(fCuts);
80             fCuts->SetFillCutHistograms("",kTRUE);
81          }
82       }
83       if(inputHandler->IsA()==AliAODInputHandler::Class()){
84       // AOD mode
85          fV0ReaderV1->SetDeltaAODBranchName(Form("GammaConv_%s_gamma",cutnumberAODBranch.Data()));
86       }
87       fV0ReaderV1->Init();
88
89       AliLog::SetGlobalLogLevel(AliLog::kInfo);
90
91       //connect input V0Reader
92       mgr->AddTask(fV0ReaderV1);
93       mgr->ConnectInput(fV0ReaderV1,0,cinput);
94
95    }
96
97    //================================================
98    //========= Add Electron Selector ================
99
100
101    if( !(AliDalitzElectronSelector*)mgr->GetTask("ElectronSelector") ){
102
103    AliDalitzElectronSelector *fElectronSelector = new AliDalitzElectronSelector("ElectronSelector");
104
105    // Set AnalysisCut Number
106
107    AliDalitzElectronCuts *fElecCuts=0;
108
109    //ElecCuts = "900054000000020000";
110
111     if( ElecCuts!=""){
112
113        fElecCuts= new AliDalitzElectronCuts(ElecCuts.Data(),ElecCuts.Data());
114
115             if(fElecCuts->InitializeCutsFromCutString(ElecCuts.Data())){
116
117                 fElectronSelector->SetDalitzElectronCuts(fElecCuts);
118
119                 fElecCuts->SetFillCutHistograms("",kTRUE);
120
121             }
122
123     }
124
125     fElectronSelector->Init();
126     mgr->AddTask(fElectronSelector);
127     
128     AliAnalysisDataContainer *cinput1  = mgr->GetCommonInputContainer();
129
130     //connect input V0Reader
131
132     mgr->ConnectInput (fElectronSelector,0,cinput1);
133
134     }
135
136
137
138     cout<<"Entro"<<endl;
139    //================================================
140    //========= Add task to the ANALYSIS manager =====
141    //================================================
142    //            find input container
143    
144   
145  
146    AliAnalysisTaskGammaConvDalitzV1 *task=NULL;
147
148    task= new AliAnalysisTaskGammaConvDalitzV1(Form("GammaConvDalitzV1_%i",trainConfig));
149
150    task->SetIsHeavyIon(2);
151    task->SetIsMC(isMC);
152
153
154
155    // Cut Numbers to use in Analysis
156    Int_t numberOfCuts = 6;
157
158    TString *ConvCutarray    = new TString[numberOfCuts];
159
160    TString *ElecCutarray    = new TString[numberOfCuts];
161
162    TString *MesonCutarray   = new TString[numberOfCuts];
163
164    Bool_t doEtaShiftIndCuts = kFALSE;
165    TString stringShift = "";
166
167    // Shifting in pPb direction
168
169    doEtaShiftIndCuts = kTRUE;
170    stringShift = "pPb";
171
172
173    if( trainConfig == 1 ) {
174
175         ConvCutarray[0] = "8000000082093603007200000000"; ElecCutarray[0] = "9047540025810262170"; MesonCutarray[0] = "01039035009000"; //standard cut Pi0 PbPb 00-100
176         ConvCutarray[1] = "8000000082093603007200000000"; ElecCutarray[1] = "9047540025810261170"; MesonCutarray[1] = "01039035009000"; //standard cut Pi0 PbPb 00-100 + Single Pt primary > 0.100 GeV
177         ConvCutarray[2] = "8000000082094603007200000000"; ElecCutarray[2] = "9047540025810262170"; MesonCutarray[2] = "01039035009000"; //standard cut Pi0 PbPb 00-100 + dEdx electron gamma   -6 ,7 sigmas
178         ConvCutarray[3] = "8000000082093603007203000000"; ElecCutarray[3] = "9047540025810262170"; MesonCutarray[3] = "01039035009000"; //standard cut Pi0 PbPb 00-100  do Aysemtri cut
179         ConvCutarray[4] = "8000000082093603007200000000"; ElecCutarray[4] = "9051540025810262170"; MesonCutarray[4] = "01039035009000"; //standard cut Pi0 PbPb 00-100
180         ConvCutarray[5] = "8000000082093603007200000000"; ElecCutarray[5] = "9051540025810262170"; MesonCutarray[5] = "01039035009000"; //standard cut Pi0 PbPb 00-100 Standard cut + dEdx primary -3, 5 and  3.0  , -10 pion rejection
181
182    } else if( trainConfig == 2 ) {
183
184         ConvCutarray[0] = "8000000082093603007200000000"; ElecCutarray[0] = "9047540025810262170"; MesonCutarray[0] = "01039035009000"; //standard cut Pi0 PbPb 00-100
185         ConvCutarray[1] = "8020000082093603007200000000"; ElecCutarray[1] = "9047540025810262170"; MesonCutarray[1] = "01039035009000"; //standard cut Pi0 PbPb 00-20
186         ConvCutarray[2] = "8240000082093603007200000000"; ElecCutarray[2] = "9047540025810262170"; MesonCutarray[2] = "01039035009000"; //standard cut Pi0 PbPb 20-40
187         ConvCutarray[3] = "8460000082093603007200000000"; ElecCutarray[3] = "9047540025810262170"; MesonCutarray[3] = "01039035009000"; //standard cut Pi0 PbPb 40-60
188         ConvCutarray[4] = "8680000082093603007200000000"; ElecCutarray[4] = "9047540025810262170"; MesonCutarray[4] = "01039035009000"; //standard cut Pi0 PbPb 60-80        
189         ConvCutarray[5] = "8600000082093603007200000000"; ElecCutarray[5] = "9047540025810262170"; MesonCutarray[5] = "01039035009000"; //standard cut Pi0 PbPb 60-100
190    }
191
192
193
194    TList *ConvCutList  = new TList();
195    TList *MesonCutList = new TList();
196    TList *ElecCutList  = new TList();
197
198    TList *HeaderList = new TList();
199    TObjString *Header1 = new TObjString("pi0_1");
200    HeaderList->Add(Header1);
201    TObjString *Header3 = new TObjString("eta_2");
202    HeaderList->Add(Header3);
203    
204    ConvCutList->SetOwner(kTRUE);
205    AliConversionCuts **analysisCuts             = new AliConversionCuts*[numberOfCuts];
206    MesonCutList->SetOwner(kTRUE);
207    AliConversionMesonCuts **analysisMesonCuts   = new AliConversionMesonCuts*[numberOfCuts];
208    ElecCutList->SetOwner(kTRUE);
209    AliDalitzElectronCuts **analysisElecCuts     = new AliDalitzElectronCuts*[numberOfCuts];
210
211
212
213    for(Int_t i = 0; i<numberOfCuts; i++){
214
215
216       analysisCuts[i] = new AliConversionCuts();
217       if( ! analysisCuts[i]->InitializeCutsFromCutString(ConvCutarray[i].Data()) ) {
218             cout<<"ERROR: analysisCuts [" <<i<<"]"<<endl;
219             return 0;
220       }
221       else {
222       
223         if (doEtaShiftIndCuts) {
224          analysisCuts[i]->DoEtaShift(doEtaShiftIndCuts);
225          analysisCuts[i]->SetEtaShift(stringShift);
226         }
227         ConvCutList->Add(analysisCuts[i]);
228         analysisCuts[i]->SetFillCutHistograms("",kFALSE);
229         analysisCuts[i]->SetAcceptedHeader(HeaderList);
230       }
231
232
233
234       analysisMesonCuts[i] = new AliConversionMesonCuts();
235     
236       if( ! analysisMesonCuts[i]->InitializeCutsFromCutString(MesonCutarray[i].Data()) ) {
237             cout<<"ERROR: analysisMesonCuts [ " <<i<<" ] "<<endl;
238             return 0;
239       }
240       else {
241             MesonCutList->Add(analysisMesonCuts[i]);
242             analysisMesonCuts[i]->SetFillCutHistograms("");
243       }
244
245
246        TString cutName( Form("%s_%s_%s",ConvCutarray[i].Data(),ElecCutarray[i].Data(),MesonCutarray[i].Data() ) );
247
248
249        analysisElecCuts[i] = new AliDalitzElectronCuts();
250        if( !analysisElecCuts[i]->InitializeCutsFromCutString(ElecCutarray[i].Data())) {
251
252             cout<< "ERROR:  analysisElecCuts [ " <<i<<" ] "<<endl;
253             return 0;
254        }
255        else { 
256         ElecCutList->Add(analysisElecCuts[i]);
257         analysisElecCuts[i]->SetFillCutHistograms("",kFALSE,cutName); 
258        }
259
260
261         
262
263    }
264
265
266    task->SetConversionCutList(numberOfCuts,ConvCutList);
267    task->SetMesonCutList(MesonCutList);
268    task->SetElectronCutList(ElecCutList);
269
270    task->SetMoveParticleAccordingToVertex(kTRUE);
271
272
273    if(enableQAMesonTask) task->SetDoMesonQA(kTRUE);
274    if(enableDoMesonChic) task->SetDoChicAnalysis(kTRUE);
275
276    //connect containers
277    AliAnalysisDataContainer *coutput =
278    mgr->CreateContainer(Form("GammaConvDalitzV1_%i",trainConfig), TList::Class(),
279                            AliAnalysisManager::kOutputContainer,Form("GammaConvV1Dalitz_%i.root",trainConfig));
280
281    mgr->AddTask(task);
282    mgr->ConnectInput(task,0,cinput);
283    mgr->ConnectOutput(task,1,coutput);
284
285    return;
286
287 }