]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGGA/GammaConv/macros/AddTask_GammaConvEtaPiPlPiMiGamma_pPb.C
- changes by pedro in addtask for dalitz
[u/mrichter/AliRoot.git] / PWGGA / GammaConv / macros / AddTask_GammaConvEtaPiPlPiMiGamma_pPb.C
1 void AddTask_GammaConvEtaPiPlPiMiGamma_pPb(    
2                                                                                 Int_t trainConfig = 1,
3                                                                                 Bool_t isMC       = kFALSE, //run MC 
4                                                                                 Bool_t enableQAMesonTask = kTRUE, //enable QA in AliAnalysisTaskEtaToPiPlPiMiGamma
5                                                                                 TString fileNameInputForWeighting = "MCSpectraInput.root", // path to file for weigting input
6                                                                                 Bool_t doWeighting = kFALSE,  //enable Weighting
7                                                                                 TString generatorName = "HIJING",                               
8                                                                                 TString cutnumberAODBranch = "0000000060084001001500000"
9                                                                                 ) {
10
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         // ================== GetAnalysisManager ===============================
32         AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
33         if (!mgr) {
34                 Error(Form("AddTask_GammaConvEtaPiPlPiMiGamma_pPb_%i",trainConfig), "No analysis manager found.");
35                 return ;
36         }
37
38         // ================== GetInputEventHandler =============================
39         AliVEventHandler *inputHandler=mgr->GetInputEventHandler();
40         
41         //========= Add PID Reponse to ANALYSIS manager ====
42         if(!(AliPIDResponse*)mgr->GetTask("PIDResponseTask")){
43                 gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskPIDResponse.C");
44                 AddTaskPIDResponse(isMC);
45         }
46         
47         //=========  Set Cutnumber for V0Reader ================================
48         TString ConvCutnumber = "8000000060081001001500000000";   //Online  V0 finder
49         TString PionCuts      = "000000200";            //Electron Cuts
50                 
51         Bool_t doEtaShift = kFALSE;
52
53         AliAnalysisDataContainer *cinput = mgr->GetCommonInputContainer();
54         
55         //========= Add V0 Reader to  ANALYSIS manager if not yet existent =====
56         if( !(AliV0ReaderV1*)mgr->GetTask("V0ReaderV1") ){
57                 AliV0ReaderV1 *fV0ReaderV1 = new AliV0ReaderV1("V0ReaderV1");
58                 
59                 fV0ReaderV1->SetUseOwnXYZCalculation(kTRUE);
60                 fV0ReaderV1->SetCreateAODs(kFALSE);// AOD Output
61                 fV0ReaderV1->SetUseAODConversionPhoton(kTRUE);
62                 
63                 if (!mgr) {
64                         Error("AddTask_V0ReaderV1", "No analysis manager found.");
65                         return;
66                 }
67
68                 // Set AnalysisCut Number
69                 AliConversionCuts *fCuts=NULL;
70                 if( ConvCutnumber !=""){
71                         fCuts= new AliConversionCuts(ConvCutnumber.Data(),ConvCutnumber.Data());
72                         fCuts->SetPreSelectionCutFlag(kTRUE);
73                         if(fCuts->InitializeCutsFromCutString(ConvCutnumber.Data())){
74                                 fCuts->DoEtaShift(doEtaShift);
75                                 fV0ReaderV1->SetConversionCuts(fCuts);
76                                 fCuts->SetFillCutHistograms("",kTRUE);
77                         }
78                 }
79                 if(inputHandler->IsA()==AliAODInputHandler::Class()){
80                 // AOD mode
81                         fV0ReaderV1->SetDeltaAODBranchName(Form("GammaConv_%s_gamma",cutnumberAODBranch.Data()));
82                 }
83                 fV0ReaderV1->Init();
84
85                 AliLog::SetGlobalLogLevel(AliLog::kInfo);
86
87                 //connect input V0Reader
88                 mgr->AddTask(fV0ReaderV1);
89                 mgr->ConnectInput(fV0ReaderV1,0,cinput);
90         }
91
92         //================================================
93         //========= Add Electron Selector ================
94
95
96         if( !(AliPrimaryPionSelector*)mgr->GetTask("PionSelector") ){
97
98                 AliPrimaryPionSelector *fPionSelector = new AliPrimaryPionSelector("PionSelector");
99                 // Set AnalysisCut Number
100
101                 AliPrimaryPionCuts *fPionCuts=0;
102                 if( PionCuts!=""){
103                         fPionCuts= new AliPrimaryPionCuts(PionCuts.Data(),PionCuts.Data());
104                         if(fPionCuts->InitializeCutsFromCutString(PionCuts.Data())){
105                                 fPionSelector->SetPrimaryPionCuts(fPionCuts);
106                                 fPionCuts->SetFillCutHistograms("",kTRUE);
107
108                         }
109                 }
110
111                 fPionSelector->Init();
112                 mgr->AddTask(fPionSelector);
113                 
114                 AliAnalysisDataContainer *cinput1  = mgr->GetCommonInputContainer();
115
116                 //connect input V0Reader
117                 mgr->ConnectInput (fPionSelector,0,cinput1);
118
119         }
120
121         
122         
123         AliAnalysisTaskEtaToPiPlPiMiGamma *task=NULL;
124
125         task= new AliAnalysisTaskEtaToPiPlPiMiGamma(Form("GammaConvEtaPiPlPiMiGamma_%i",trainConfig));
126
127         task->SetIsHeavyIon(2);
128         task->SetIsMC(isMC);
129
130         // Cut Numbers to use in Analysis
131         Int_t numberOfCuts = 1;
132         TString *ConvCutarray    = new TString[numberOfCuts];
133         TString *PionCutarray    = new TString[numberOfCuts];
134
135         TString *MesonCutarray   = new TString[numberOfCuts];
136
137         Bool_t doEtaShiftIndCuts = kFALSE;
138         TString stringShift = "";
139
140         // Shifting in pPb direction
141
142         doEtaShiftIndCuts = kTRUE;
143         stringShift = "pPb";
144
145         if( trainConfig == 1 ) {
146                 ConvCutarray[0] = "8000011002091170008260400000"; PionCutarray[0] = "000000400"; MesonCutarray[0] = "01035035000000"; //standard cut Pi0 PbPb 00-100                    
147         } else if( trainConfig == 1 ) {
148                 ConvCutarray[0] = "8000011002091170008260400000"; PionCutarray[0] = "000000403"; MesonCutarray[0] = "01035035000000"; //standard cut Pi0 PbPb 00-100                    
149         } else if( trainConfig == 1 ) {
150                 ConvCutarray[0] = "8000011002091170008260400000"; PionCutarray[0] = "000000404"; MesonCutarray[0] = "01035035000000"; //standard cut Pi0 PbPb 00-100                    
151         } else if( trainConfig == 1 ) {
152                 ConvCutarray[0] = "8000011002091170008260400000"; PionCutarray[0] = "000000405"; MesonCutarray[0] = "01035035000000"; //standard cut Pi0 PbPb 00-100                    
153         }
154                 
155         TList *ConvCutList  = new TList();
156         TList *MesonCutList = new TList();
157         TList *PionCutList  = new TList();
158
159         TList *HeaderList = new TList();
160         TObjString *Header1 = new TObjString("pi0_1");
161         HeaderList->Add(Header1);
162         TObjString *Header3 = new TObjString("eta_2");
163         HeaderList->Add(Header3);
164         
165         ConvCutList->SetOwner(kTRUE);
166         AliConversionCuts **analysisCuts             = new AliConversionCuts*[numberOfCuts];
167         MesonCutList->SetOwner(kTRUE);
168         AliConversionMesonCuts **analysisMesonCuts   = new AliConversionMesonCuts*[numberOfCuts];
169         PionCutList->SetOwner(kTRUE);
170         AliPrimaryPionCuts **analysisPionCuts     = new AliPrimaryPionCuts*[numberOfCuts];
171
172         for(Int_t i = 0; i<numberOfCuts; i++){
173
174                 analysisCuts[i] = new AliConversionCuts();
175                 if( ! analysisCuts[i]->InitializeCutsFromCutString(ConvCutarray[i].Data()) ) {
176                                 cout<<"ERROR: analysisCuts [" <<i<<"]"<<endl;
177                                 return 0;
178                 } else {                                
179                         ConvCutList->Add(analysisCuts[i]);
180                         analysisCuts[i]->SetFillCutHistograms("",kFALSE);
181                         analysisCuts[i]->SetAcceptedHeader(HeaderList);
182                 }
183
184                 analysisMesonCuts[i] = new AliConversionMesonCuts();
185                 
186                 if( ! analysisMesonCuts[i]->InitializeCutsFromCutString(MesonCutarray[i].Data()) ) {
187                         cout<<"ERROR: analysisMesonCuts [ " <<i<<" ] "<<endl;
188                         return 0;
189                 } else {
190                         MesonCutList->Add(analysisMesonCuts[i]);
191                         analysisMesonCuts[i]->SetFillCutHistograms("");
192                 }
193
194
195                 TString cutName( Form("%s_%s_%s",ConvCutarray[i].Data(),PionCutarray[i].Data(),MesonCutarray[i].Data() ) );
196                 analysisPionCuts[i] = new AliPrimaryPionCuts();
197                 if( !analysisPionCuts[i]->InitializeCutsFromCutString(PionCutarray[i].Data())) {
198                         cout<< "ERROR:  analysisPionCuts [ " <<i<<" ] "<<endl;
199                         return 0;
200                 } else { 
201                         PionCutList->Add(analysisPionCuts[i]);
202                         analysisPionCuts[i]->SetFillCutHistograms("",kFALSE,cutName); 
203                 }
204                 
205
206         }
207
208
209         task->SetConversionCutList(numberOfCuts,ConvCutList);
210         task->SetMesonCutList(MesonCutList);
211         task->SetPionCutList(PionCutList);
212
213         task->SetMoveParticleAccordingToVertex(kTRUE);
214
215         if(enableQAMesonTask) task->SetDoMesonQA(kTRUE);
216
217         //connect containers
218         AliAnalysisDataContainer *coutput =
219         mgr->CreateContainer(Form("GammaConvEtaPiPlPiMiGamma_%i",trainConfig), TList::Class(),
220                                                         AliAnalysisManager::kOutputContainer,Form("GammaConvEtaPiPlPiMiGamma_%i.root",trainConfig));
221
222         mgr->AddTask(task);
223         mgr->ConnectInput(task,0,cinput);
224         mgr->ConnectOutput(task,1,coutput);
225
226         return;
227
228 }