]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGGA/GammaConv/macros/AddTask_GammaConvEtaPiPlPiMiGamma_pPb.C
New function for TrueChic added and a cut with open photon R added
[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         // ================= Load Librariers =================================
12         gSystem->Load("libCore.so");  
13         gSystem->Load("libTree.so");
14         gSystem->Load("libGeom.so");
15         gSystem->Load("libVMC.so");
16         gSystem->Load("libPhysics.so");
17         gSystem->Load("libMinuit");
18         gSystem->Load("libSTEERBase");
19         gSystem->Load("libESD");
20         gSystem->Load("libAOD");
21         gSystem->Load("libANALYSIS");
22         gSystem->Load("libANALYSISalice");  
23         gSystem->Load("libPWGGAGammaConv.so");
24         gSystem->Load("libCDB.so");
25         gSystem->Load("libSTEER.so");
26         gSystem->Load("libSTEERBase.so");
27         gSystem->Load("libTENDER.so");
28         gSystem->Load("libTENDERSupplies.so");
29
30         Int_t isHeavyIon = 2;
31         
32         // ================== GetAnalysisManager ===============================
33         AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
34         if (!mgr) {
35                 Error(Form("AddTask_GammaConvEtaPiPlPiMiGamma_pPb_%i",trainConfig), "No analysis manager found.");
36                 return ;
37         }
38
39         // ================== GetInputEventHandler =============================
40         AliVEventHandler *inputHandler=mgr->GetInputEventHandler();
41         
42         //========= Add PID Reponse to ANALYSIS manager ====
43         if(!(AliPIDResponse*)mgr->GetTask("PIDResponseTask")){
44                 gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskPIDResponse.C");
45                 AddTaskPIDResponse(isMC);
46         }
47         
48         //=========  Set Cutnumber for V0Reader ================================
49         TString cutnumberPhoton = "060084001001500000000";
50         TString cutnumberEvent = "8000000";
51         TString PionCuts      = "000000200";            //Electron Cuts
52                 
53         Bool_t doEtaShift = kFALSE;
54
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                                 fEventCuts->DoEtaShift(doEtaShift);
76                                 fV0ReaderV1->SetEventCuts(fEventCuts);
77                                 fEventCuts->SetFillCutHistograms("",kTRUE);
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::kInfo);
100
101                 //connect input V0Reader
102                 mgr->AddTask(fV0ReaderV1);
103                 mgr->ConnectInput(fV0ReaderV1,0,cinput);
104         }
105
106         //================================================
107         //========= Add Electron Selector ================
108
109
110         if( !(AliPrimaryPionSelector*)mgr->GetTask("PionSelector") ){
111
112                 AliPrimaryPionSelector *fPionSelector = new AliPrimaryPionSelector("PionSelector");
113                 // Set AnalysisCut Number
114
115                 AliPrimaryPionCuts *fPionCuts=0;
116                 if( PionCuts!=""){
117                         fPionCuts= new AliPrimaryPionCuts(PionCuts.Data(),PionCuts.Data());
118                         if(fPionCuts->InitializeCutsFromCutString(PionCuts.Data())){
119                                 fPionSelector->SetPrimaryPionCuts(fPionCuts);
120                                 fPionCuts->SetFillCutHistograms("",kTRUE);
121
122                         }
123                 }
124
125                 fPionSelector->Init();
126                 mgr->AddTask(fPionSelector);
127                 
128                 AliAnalysisDataContainer *cinput1  = mgr->GetCommonInputContainer();
129
130                 //connect input V0Reader
131                 mgr->ConnectInput (fPionSelector,0,cinput1);
132
133         }
134
135         
136         
137         AliAnalysisTaskEtaToPiPlPiMiGamma *task=NULL;
138
139         task= new AliAnalysisTaskEtaToPiPlPiMiGamma(Form("GammaConvEtaPiPlPiMiGamma_%i",trainConfig));
140
141         task->SetIsHeavyIon(2);
142         task->SetIsMC(isMC);
143
144         // Cut Numbers to use in Analysis
145         Int_t numberOfCuts = 1;
146
147         TString *eventCutArray = new TString[numberOfCuts];
148         TString *ConvCutarray    = new TString[numberOfCuts];
149         TString *PionCutarray    = new TString[numberOfCuts];
150         TString *MesonCutarray   = new TString[numberOfCuts];
151
152         Bool_t doEtaShiftIndCuts = kFALSE;
153         TString stringShift = "";
154
155         // Shifting in pPb direction
156
157         doEtaShiftIndCuts = kTRUE;
158         stringShift = "pPb";
159
160         if( trainConfig == 1 ) {
161                 eventCutArray[ 0] = "8000011"; ConvCutarray[0] = "002091170008260400000"; PionCutarray[0] = "000000400"; MesonCutarray[0] = "01035035000000"; //standard cut Pi0 PbPb 00-100                    
162         } else if( trainConfig == 1 ) {
163                 eventCutArray[ 0] = "8000011"; ConvCutarray[0] = "002091170008260400000"; PionCutarray[0] = "000000403"; MesonCutarray[0] = "01035035000000"; //standard cut Pi0 PbPb 00-100                    
164         } else if( trainConfig == 1 ) {
165                 eventCutArray[ 0] = "8000011"; ConvCutarray[0] = "002091170008260400000"; PionCutarray[0] = "000000404"; MesonCutarray[0] = "01035035000000"; //standard cut Pi0 PbPb 00-100                    
166         } else if( trainConfig == 1 ) {
167                 eventCutArray[ 0] = "8000011"; ConvCutarray[0] = "002091170008260400000"; PionCutarray[0] = "000000405"; MesonCutarray[0] = "01035035000000"; //standard cut Pi0 PbPb 00-100                    
168         }
169         
170         TList *EventCutList = new TList();
171         TList *ConvCutList  = new TList();
172         TList *MesonCutList = new TList();
173         TList *PionCutList  = new TList();
174
175         TList *HeaderList = new TList();
176         TObjString *Header1 = new TObjString("pi0_1");
177         HeaderList->Add(Header1);
178         TObjString *Header3 = new TObjString("eta_2");
179         HeaderList->Add(Header3);
180         
181         EventCutList->SetOwner(kTRUE);
182         AliConvEventCuts **analysisEventCuts = new AliConvEventCuts*[numberOfCuts];
183         ConvCutList->SetOwner(kTRUE);
184         AliConversionPhotonCuts **analysisCuts = new AliConversionPhotonCuts*[numberOfCuts];
185         MesonCutList->SetOwner(kTRUE);
186         AliConversionMesonCuts **analysisMesonCuts   = new AliConversionMesonCuts*[numberOfCuts];
187         PionCutList->SetOwner(kTRUE);
188         AliPrimaryPionCuts **analysisPionCuts     = new AliPrimaryPionCuts*[numberOfCuts];
189
190         for(Int_t i = 0; i<numberOfCuts; i++){
191                 analysisEventCuts[i] = new AliConvEventCuts();   
192                 analysisEventCuts[i]->InitializeCutsFromCutString(eventCutArray[i].Data());
193                 EventCutList->Add(analysisEventCuts[i]);
194                 analysisEventCuts[i]->SetFillCutHistograms("",kFALSE);
195
196                 analysisCuts[i] = new AliConversionPhotonCuts();
197                 if( ! analysisCuts[i]->InitializeCutsFromCutString(ConvCutarray[i].Data()) ) {
198                                 cout<<"ERROR: analysisCuts [" <<i<<"]"<<endl;
199                                 return 0;
200                 } else {                                
201                         ConvCutList->Add(analysisCuts[i]);
202                         analysisCuts[i]->SetFillCutHistograms("",kFALSE);
203                         
204                 }
205
206                 analysisMesonCuts[i] = new AliConversionMesonCuts();
207                 
208                 if( ! analysisMesonCuts[i]->InitializeCutsFromCutString(MesonCutarray[i].Data()) ) {
209                         cout<<"ERROR: analysisMesonCuts [ " <<i<<" ] "<<endl;
210                         return 0;
211                 } else {
212                         MesonCutList->Add(analysisMesonCuts[i]);
213                         analysisMesonCuts[i]->SetFillCutHistograms("");
214                 }
215                 analysisEventCuts[i]->SetAcceptedHeader(HeaderList);
216                 
217                 TString cutName( Form("%s_%s_%s_%s",eventCutArray[i].Data(), ConvCutarray[i].Data(),PionCutarray[i].Data(),MesonCutarray[i].Data() ) );
218                 analysisPionCuts[i] = new AliPrimaryPionCuts();
219                 if( !analysisPionCuts[i]->InitializeCutsFromCutString(PionCutarray[i].Data())) {
220                         cout<< "ERROR:  analysisPionCuts [ " <<i<<" ] "<<endl;
221                         return 0;
222                 } else { 
223                         PionCutList->Add(analysisPionCuts[i]);
224                         analysisPionCuts[i]->SetFillCutHistograms("",kFALSE,cutName); 
225                 }
226                 
227
228         }
229
230         task->SetEventCutList(numberOfCuts,EventCutList);
231         task->SetConversionCutList(numberOfCuts,ConvCutList);
232         task->SetMesonCutList(MesonCutList);
233         task->SetPionCutList(PionCutList);
234
235         task->SetMoveParticleAccordingToVertex(kTRUE);
236
237         if(enableQAMesonTask) task->SetDoMesonQA(kTRUE);
238
239         //connect containers
240         AliAnalysisDataContainer *coutput =
241         mgr->CreateContainer(Form("GammaConvEtaPiPlPiMiGamma_%i",trainConfig), TList::Class(),
242                                                         AliAnalysisManager::kOutputContainer,Form("GammaConvEtaPiPlPiMiGamma_%i.root",trainConfig));
243
244         mgr->AddTask(task);
245         mgr->ConnectInput(task,0,cinput);
246         mgr->ConnectOutput(task,1,coutput);
247
248         return;
249
250 }