]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGGA/GammaConv/macros/AddTask_GammaConvDalitzV1_PbPb.C
modified AddTask Dalitz
[u/mrichter/AliRoot.git] / PWGGA / GammaConv / macros / AddTask_GammaConvDalitzV1_PbPb.C
1 void AddTask_GammaConvDalitzV1_PbPb(   Int_t trainConfig = 1,
2                                       Bool_t isMC   = kFALSE, //run MC 
3                                       Bool_t enableQAMesonTask = kFALSE, //enable QA in AliAnalysisTaskGammaConvDalitzV1
4                                       Bool_t enableDoMesonChic = kFALSE, // enable additional Chic analysis
5                                       TString fileNameInputForWeighting = "MCSpectraInput.root", // path to file for weigting input
6                                       Bool_t doWeighting = kFALSE,  //enable Weighting
7                                       TString cutnumberAODBranch = "0000000060084001001500000"
8                                  ) {
9
10
11
12   cout<<"Entro -1"<<endl;
13
14  // ================= Load Librariers =================================
15   gSystem->Load("libCore.so");  
16   gSystem->Load("libTree.so");
17   gSystem->Load("libGeom.so");
18   gSystem->Load("libVMC.so");
19   gSystem->Load("libPhysics.so");
20   gSystem->Load("libMinuit");
21   gSystem->Load("libSTEERBase");
22   gSystem->Load("libESD");
23   gSystem->Load("libAOD");
24   gSystem->Load("libANALYSIS");
25   gSystem->Load("libANALYSISalice");  
26   gSystem->Load("libPWGGAGammaConv.so");
27   gSystem->Load("libCDB.so");
28   gSystem->Load("libSTEER.so");
29   gSystem->Load("libSTEERBase.so");
30   gSystem->Load("libTENDER.so");
31   gSystem->Load("libTENDERSupplies.so");
32
33
34   cout<<"Entro 0"<<endl;
35
36   // ================== GetAnalysisManager ===============================
37   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
38   if (!mgr) {
39      Error(Form("AddTask_GammaConvDalitzV1_PbPb_%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                            
54   TString ConvCutnumber = "108000000008400100150000000";   //Online  V0 finder
55   TString ElecCuts      = "9000620000000200000";            //Electron Cuts
56                            //903162000550020210
57                            //900054000000020000
58
59
60   AliAnalysisDataContainer *cinput = mgr->GetCommonInputContainer();
61
62   //========= Add V0 Reader to  ANALYSIS manager if not yet existent =====
63   if( !(AliV0ReaderV1*)mgr->GetTask("V0ReaderV1") ){
64      AliV0ReaderV1 *fV0ReaderV1 = new AliV0ReaderV1("V0ReaderV1");
65
66      fV0ReaderV1->SetUseOwnXYZCalculation(kTRUE);
67      fV0ReaderV1->SetCreateAODs(kFALSE);// AOD Output
68      fV0ReaderV1->SetUseAODConversionPhoton(kTRUE);
69
70      if (!mgr) {
71         Error("AddTask_V0ReaderV1", "No analysis manager found.");
72         return;
73      }
74
75      // Set AnalysisCut Number
76      AliConversionCuts *fCuts=NULL;
77      if( ConvCutnumber !=""){
78         fCuts= new AliConversionCuts(ConvCutnumber.Data(),ConvCutnumber.Data());
79         fCuts->SetPreSelectionCutFlag(kTRUE);
80         if(fCuts->InitializeCutsFromCutString(ConvCutnumber.Data())){
81            fV0ReaderV1->SetConversionCuts(fCuts);
82            fCuts->SetFillCutHistograms("",kTRUE);
83         }
84      }
85      if(inputHandler->IsA()==AliAODInputHandler::Class()){
86      // AOD mode
87         fV0ReaderV1->SetDeltaAODBranchName(Form("GammaConv_%s_gamma",cutnumberAODBranch.Data()));
88      }
89      fV0ReaderV1->Init();
90
91      AliLog::SetGlobalLogLevel(AliLog::kInfo);
92
93      //connect input V0Reader
94      mgr->AddTask(fV0ReaderV1);
95      mgr->ConnectInput(fV0ReaderV1,0,cinput);
96
97   }
98
99   //================================================
100   //========= Add Electron Selector ================
101
102
103   if( !(AliDalitzElectronSelector*)mgr->GetTask("ElectronSelector") ){
104
105      AliDalitzElectronSelector *fElectronSelector = new AliDalitzElectronSelector("ElectronSelector");
106
107      // Set AnalysisCut Number
108      AliDalitzElectronCuts *fElecCuts=0;
109
110      if( ElecCuts!=""){
111         fElecCuts= new AliDalitzElectronCuts(ElecCuts.Data(),ElecCuts.Data());
112         if(fElecCuts->InitializeCutsFromCutString(ElecCuts.Data())){
113            fElectronSelector->SetDalitzElectronCuts(fElecCuts);
114            fElecCuts->SetFillCutHistograms("",kTRUE);
115         }
116      }
117
118      fElectronSelector->Init();
119      mgr->AddTask(fElectronSelector);
120
121      AliAnalysisDataContainer *cinput1  = mgr->GetCommonInputContainer();
122      //connect input V0Reader
123      mgr->ConnectInput (fElectronSelector,0,cinput1);
124   }
125
126
127
128    cout<<"Entro"<<endl;
129   //================================================
130   //========= Add task to the ANALYSIS manager =====
131   //================================================
132   //            find input container
133
134
135
136   AliAnalysisTaskGammaConvDalitzV1 *task=NULL;
137   task= new AliAnalysisTaskGammaConvDalitzV1(Form("GammaConvDalitzV1_%i",trainConfig));
138   task->SetIsHeavyIon(1);
139   task->SetIsMC(isMC);
140
141
142
143   // Cut Numbers to use in Analysis
144   Int_t numberOfCuts = 3;
145
146   TString *ConvCutarray    = new TString[numberOfCuts];
147   TString *ElecCutarray    = new TString[numberOfCuts];
148   TString *MesonCutarray   = new TString[numberOfCuts];
149
150   if ( trainConfig == 1 ) {
151
152        ConvCutarray[0]  = "124000104209297100720000000"; MesonCutarray[0] = "01522045009000"; ElecCutarray[0]  = "9051620025510252170"; //PbPb 20-40% kAny
153        ConvCutarray[1]  = "146000104209297100720000000"; MesonCutarray[1] = "01522045009000"; ElecCutarray[1]  = "9051620025510252170"; //PbPb 40-60% kAny
154        ConvCutarray[2]  = "168000104209297100720000000"; MesonCutarray[2] = "01522045009000"; ElecCutarray[2]  = "9051620025510252170"; //PbPb 60-80% kAny
155
156   } else if ( trainConfig == 2 ) {
157
158        ConvCutarray[0]  = "524000104209297100322000000"; MesonCutarray[0] = "01522085009000"; ElecCutarray[0]  = "9051620025510252170"; //PbPb 20-40% kAny Alpha cut 0.6
159        ConvCutarray[1]  = "546000104209297100120000000"; MesonCutarray[1] = "01522065009000"; ElecCutarray[1]  = "9051620025510252170"; //PbPb 40-60% kAny Alpha cut 0.8      
160        ConvCutarray[2]  = "568000104209297100120000000"; MesonCutarray[2] = "01522075009000"; ElecCutarray[2]  = "9051620025510252170"; //PbPb 60-80% kAny Alpha cut 0.85
161       
162     } else if ( trainConfig == 3 ) {
163
164        ConvCutarray[0]  = "524000104209297100322000000"; MesonCutarray[0] = "01522085009000"; ElecCutarray[0]  = "9051620025510252171"; //PbPb 20-40% kAny Alpha cut 0.6
165        ConvCutarray[1]  = "546000104209297100120000000"; MesonCutarray[1] = "01522065009000"; ElecCutarray[1]  = "9051620025510252171"; //PbPb 40-60% kAny Alpha cut 0.8      
166        ConvCutarray[2]  = "568000104209297100120000000"; MesonCutarray[2] = "01522075009000"; ElecCutarray[2]  = "9051620025510252171"; //PbPb 60-80% kAny Alpha cut 0.85
167
168     } else if ( trainConfig == 4 ) {
169
170        ConvCutarray[0]  = "524000203209297100322000000"; MesonCutarray[0] = "01523015009000"; ElecCutarray[0]  = "9051620025510252171"; //PbPb 20-40% kAny Gamma |Eta| < 0.65  only added signals
171        ConvCutarray[1]  = "546000203209297100120000000"; MesonCutarray[1] = "01523015009000"; ElecCutarray[1]  = "9051620025510252171"; //PbPb 40-60% kAny Gamma |Eta| < 0.65  only added signals
172        ConvCutarray[2]  = "568000203209297100120000000"; MesonCutarray[2] = "01523025009000"; ElecCutarray[2]  = "9051620025510252171"; //PbPb 60-80% kAny Gamma |Eta| < 0.80  only added signals
173
174     } else if ( trainConfig == 5 ) {
175
176        ConvCutarray[0]  = "524000103209297100322000000"; MesonCutarray[0] = "01523015009000"; ElecCutarray[0]  = "9051620025510252171"; //PbPb 20-40% kAny Gamma |Eta| < 0.65
177        ConvCutarray[1]  = "546000103209297100120000000"; MesonCutarray[1] = "01523015009000"; ElecCutarray[1]  = "9051620025510252171"; //PbPb 40-60% kAny Gamma |Eta| < 0.65   
178        ConvCutarray[2]  = "568000103209297100120000000"; MesonCutarray[2] = "01523025009000"; ElecCutarray[2]  = "9051620025510252171"; //PbPb 60-80% kAny Gamma |Eta| < 0.65
179     }
180
181
182
183   TList *ConvCutList  = new TList();
184   TList *MesonCutList = new TList();
185   TList *ElecCutList  = new TList();
186
187   TList *HeaderList = new TList();
188   TObjString *Header1 = new TObjString("pi0_1");
189   HeaderList->Add(Header1);
190
191  //TObjString *Header3 = new TObjString("eta_2");
192  //HeaderList->Add(Header3);
193
194   ConvCutList->SetOwner(kTRUE);
195   AliConversionCuts **analysisCuts             = new AliConversionCuts*[numberOfCuts];
196
197   MesonCutList->SetOwner(kTRUE);
198   AliConversionMesonCuts **analysisMesonCuts   = new AliConversionMesonCuts*[numberOfCuts];
199
200   ElecCutList->SetOwner(kTRUE);
201   AliDalitzElectronCuts **analysisElecCuts     = new AliDalitzElectronCuts*[numberOfCuts];
202
203
204
205   for(Int_t i = 0; i<numberOfCuts; i++){
206      analysisCuts[i] = new AliConversionCuts();
207      if( ! analysisCuts[i]->InitializeCutsFromCutString(ConvCutarray[i].Data()) ) {
208            cout<<"ERROR: analysisCuts [" <<i<<"]"<<endl;
209            return 0;
210      } else {
211         ConvCutList->Add(analysisCuts[i]);
212         analysisCuts[i]->SetFillCutHistograms("",kFALSE);
213         if( trainConfig == 1){
214            if (i == 0 && doWeighting) analysisCuts[i]->SetUseReweightingWithHistogramFromFile(kTRUE, kFALSE, kFALSE, fileNameInputForWeighting, "Pi0_Hijing_LHC13d2_PbPb_2760GeV_2040V0M", "", "","Pi0_Fit_Data_PbPb_2760GeV_2040V0M");
215            if (i == 1 && doWeighting) analysisCuts[i]->SetUseReweightingWithHistogramFromFile(kTRUE, kFALSE, kFALSE, fileNameInputForWeighting, "Pi0_Hijing_LHC13d2_PbPb_2760GeV_4060V0M", "", "","Pi0_Fit_Data_PbPb_2760GeV_4060V0M");
216            if (i == 2 && doWeighting) analysisCuts[i]->SetUseReweightingWithHistogramFromFile(kTRUE, kFALSE, kFALSE, fileNameInputForWeighting, "Pi0_Hijing_LHC13d2_PbPb_2760GeV_6080V0M", "", "","Pi0_Fit_Data_PbPb_2760GeV_6080V0M");
217         } else if ( trainConfig == 2 || trainConfig == 3 || trainConfig == 5 ) {
218            if (i == 0 && doWeighting) analysisCuts[i]->SetUseReweightingWithHistogramFromFile(kTRUE, kFALSE, kFALSE, fileNameInputForWeighting, "Pi0_Hijing_LHC13d2_PbPb_2760GeV_2040TPC", "", "","Pi0_Fit_Data_PbPb_2760GeV_2040V0M");
219            if (i == 1 && doWeighting) analysisCuts[i]->SetUseReweightingWithHistogramFromFile(kTRUE, kFALSE, kFALSE, fileNameInputForWeighting, "Pi0_Hijing_LHC13d2_PbPb_2760GeV_4060TPC", "", "","Pi0_Fit_Data_PbPb_2760GeV_4060V0M");
220            if (i == 2 && doWeighting) analysisCuts[i]->SetUseReweightingWithHistogramFromFile(kTRUE, kFALSE, kFALSE, fileNameInputForWeighting, "Pi0_Hijing_LHC13d2_PbPb_2760GeV_6080TPC", "", "","Pi0_Fit_Data_PbPb_2760GeV_6080V0M");
221         }  else if ( trainConfig == 4 ) {
222             if (i == 0 && doWeighting) analysisCuts[i]->SetUseReweightingWithHistogramFromFile(kTRUE, kFALSE, kFALSE, fileNameInputForWeighting, "Pi0_Hijing_LHC13d2_addSig_PbPb_2760GeV_2040TPC", "", "","Pi0_Fit_Data_PbPb_2760GeV_2040V0M");
223             if (i == 1 && doWeighting) analysisCuts[i]->SetUseReweightingWithHistogramFromFile(kTRUE, kFALSE, kFALSE, fileNameInputForWeighting, "Pi0_Hijing_LHC13d2_addSig_PbPb_2760GeV_4060TPC", "", "","Pi0_Fit_Data_PbPb_2760GeV_4060V0M");
224             if (i == 2 && doWeighting) analysisCuts[i]->SetUseReweightingWithHistogramFromFile(kTRUE, kFALSE, kFALSE, fileNameInputForWeighting, "Pi0_Hijing_LHC13d2_addSig_PbPb_2760GeV_6080TPC", "", "","Pi0_Fit_Data_PbPb_2760GeV_6080V0M");
225         }
226      }
227
228      analysisMesonCuts[i] = new AliConversionMesonCuts();
229      if( ! analysisMesonCuts[i]->InitializeCutsFromCutString(MesonCutarray[i].Data()) ) {
230            cout<<"ERROR: analysisMesonCuts [ " <<i<<" ] "<<endl;
231            return 0;
232      } else {
233        MesonCutList->Add(analysisMesonCuts[i]);
234        analysisMesonCuts[i]->SetFillCutHistograms("");
235      }
236
237      TString cutName( Form("%s_%s_%s",ConvCutarray[i].Data(),ElecCutarray[i].Data(),MesonCutarray[i].Data() ) );
238      analysisElecCuts[i] = new AliDalitzElectronCuts();
239      if( !analysisElecCuts[i]->InitializeCutsFromCutString(ElecCutarray[i].Data())) {
240            cout<< "ERROR:  analysisElecCuts [ " <<i<<" ] "<<endl;
241            return 0;
242      }  else { 
243         ElecCutList->Add(analysisElecCuts[i]);
244         analysisElecCuts[i]->SetFillCutHistograms("",kFALSE,cutName); 
245      }
246      analysisCuts[i]->SetAcceptedHeader(HeaderList);
247
248   }
249
250
251   task->SetConversionCutList(numberOfCuts,ConvCutList);
252   task->SetMesonCutList(MesonCutList);
253   task->SetElectronCutList(ElecCutList);
254
255   task->SetMoveParticleAccordingToVertex(kTRUE);
256
257
258   if(enableQAMesonTask) task->SetDoMesonQA(kTRUE);
259   if(enableDoMesonChic) task->SetDoChicAnalysis(kTRUE);
260
261   //connect containers
262   AliAnalysisDataContainer *coutput =
263   mgr->CreateContainer(Form("GammaConvDalitzV1_%i",trainConfig), TList::Class(),
264                           AliAnalysisManager::kOutputContainer,Form("GammaConvV1Dalitz_%i.root",trainConfig));
265
266   mgr->AddTask(task);
267   mgr->ConnectInput(task,0,cinput);
268   mgr->ConnectOutput(task,1,coutput);
269
270   return;
271 }