]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGGA/GammaConv/macros/AddTask_GammaConvDalitzV1_PbPb.C
Merge branch 'master' of https://git.cern.ch/reps/AliRoot
[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 = "1080000000084001001500000000";   //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]  = "1240001042092971007200000000"; MesonCutarray[0] = "01522045009000"; ElecCutarray[0]  = "9051620025510252170"; //PbPb 20-40% kAny
153        ConvCutarray[1]  = "1460001042092971007200000000"; MesonCutarray[1] = "01522045009000"; ElecCutarray[1]  = "9051620025510252170"; //PbPb 40-60% kAny
154        ConvCutarray[2]  = "1680001042092971007200000000"; MesonCutarray[2] = "01522045009000"; ElecCutarray[2]  = "9051620025510252170"; //PbPb 60-80% kAny
155
156     } else if ( trainConfig == 2 ) {
157
158        ConvCutarray[0]  = "5240001042092971003220000000"; MesonCutarray[0] = "01522085009000"; ElecCutarray[0]  = "9051620025510252170"; //PbPb 20-40% kAny Alpha cut 0.6
159        ConvCutarray[1]  = "5460001042092971001200000000"; MesonCutarray[1] = "01522065009000"; ElecCutarray[1]  = "9051620025510252170"; //PbPb 40-60% kAny Alpha cut 0.8      
160        ConvCutarray[2]  = "5680001042092971001200000000"; MesonCutarray[2] = "01522075009000"; ElecCutarray[2]  = "9051620025510252170"; //PbPb 60-80% kAny Alpha cut 0.85
161       
162     } else if ( trainConfig == 3 ) {
163
164        ConvCutarray[0]  = "5240001042092971003220000000"; MesonCutarray[0] = "01522085009000"; ElecCutarray[0]  = "9051620025510252171"; //PbPb 20-40% kAny Alpha cut 0.6
165        ConvCutarray[1]  = "5460001042092971001200000000"; MesonCutarray[1] = "01522065009000"; ElecCutarray[1]  = "9051620025510252171"; //PbPb 40-60% kAny Alpha cut 0.8      
166        ConvCutarray[2]  = "5680001042092971001200000000"; MesonCutarray[2] = "01522075009000"; ElecCutarray[2]  = "9051620025510252171"; //PbPb 60-80% kAny Alpha cut 0.85
167
168     } else if ( trainConfig == 4 ) {
169
170        ConvCutarray[0]  = "5240002032092971003220000000"; MesonCutarray[0] = "01523015009000"; ElecCutarray[0]  = "9051620025510252171"; //PbPb 20-40% kAny Gamma |Eta| < 0.65  only added signals alpha cut Pt dependent ( 0.7, 1.2)
171        ConvCutarray[1]  = "5460002032092971001200000000"; MesonCutarray[1] = "01523015009000"; ElecCutarray[1]  = "9051620025510252171"; //PbPb 40-60% kAny Gamma |Eta| < 0.65  only added signals alpha cut Pt dependent ( 0.7, 1.2)
172        ConvCutarray[2]  = "5680002032092971001200000000"; MesonCutarray[2] = "01523025009000"; ElecCutarray[2]  = "9051620025510252171"; //PbPb 60-80% kAny Gamma |Eta| < 0.80  only added signals alpha cut Pt dependent ( 0.80, 1.2)
173
174     } else if ( trainConfig == 5 ) {
175
176        ConvCutarray[0]  = "5240001032092971003220000000"; MesonCutarray[0] = "01523015009000"; ElecCutarray[0]  = "9051620025510252171"; //PbPb 20-40% kAny Gamma |Eta| < 0.65 alpha cut Pt dependent ( 0.7, 1.2)
177        ConvCutarray[1]  = "5460001032092971001200000000"; MesonCutarray[1] = "01523015009000"; ElecCutarray[1]  = "9051620025510252171"; //PbPb 40-60% kAny Gamma |Eta| < 0.65 alpha cut Pt dependent ( 0.7, 1.2)  
178        ConvCutarray[2]  = "5680001032092971001200000000"; MesonCutarray[2] = "01523025009000"; ElecCutarray[2]  = "9051620025510252171"; //PbPb 60-80% kAny Gamma |Eta| < 0.65 alpha cut Pt dependent ( 0.8, 1.2)
179     } else if ( trainConfig == 6 ) {
180
181        ConvCutarray[0]  = "5240002032092971003220000000"; MesonCutarray[0] = "01523095009000"; ElecCutarray[0]  = "9051620025510252171"; //PbPb 20-40% kAny Gamma |Eta| < 0.65  only added signals alpha cut Pt dependent( 0.65, 1.2)
182        ConvCutarray[1]  = "5460002032092971001200000000"; MesonCutarray[1] = "01523095009000"; ElecCutarray[1]  = "9051620025510252171"; //PbPb 40-60% kAny Gamma |Eta| < 0.65  only added signals alpha cut Pt dependent( 0.65, 1.2)
183        ConvCutarray[2]  = "5680002032092971001200000000"; MesonCutarray[2] = "01523025009000"; ElecCutarray[2]  = "9051620025510252171"; //PbPb 60-80% kAny Gamma |Eta| < 0.80  only added signals alpha cut Pt dependent( 0.80, 1.2)
184
185     } else if ( trainConfig == 7 ) {
186
187        ConvCutarray[0]  = "5240001032092971003220000000"; MesonCutarray[0] = "01523095009000"; ElecCutarray[0]  = "9051620025510252171"; //PbPb 20-40% kAny Gamma |Eta| < 0.65 alpha cut Pt dependent ( 0.65, 1.2)
188        ConvCutarray[1]  = "5460001032092971001200000000"; MesonCutarray[1] = "01523095009000"; ElecCutarray[1]  = "9051620025510252171"; //PbPb 40-60% kAny Gamma |Eta| < 0.65 alpha cut Pt dependent ( 0.65, 1.2)
189        ConvCutarray[2]  = "5680001032092971001200000000"; MesonCutarray[2] = "01523025009000"; ElecCutarray[2]  = "9051620025510252171"; //PbPb 60-80% kAny Gamma |Eta| < 0.65 alpha cut Pt dependent ( 0.80, 1.2)
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
202  //TObjString *Header3 = new TObjString("eta_2");
203  //HeaderList->Add(Header3);
204
205   ConvCutList->SetOwner(kTRUE);
206   AliConversionCuts **analysisCuts             = new AliConversionCuts*[numberOfCuts];
207
208   MesonCutList->SetOwner(kTRUE);
209   AliConversionMesonCuts **analysisMesonCuts   = new AliConversionMesonCuts*[numberOfCuts];
210
211   ElecCutList->SetOwner(kTRUE);
212   AliDalitzElectronCuts **analysisElecCuts     = new AliDalitzElectronCuts*[numberOfCuts];
213
214
215
216   for(Int_t i = 0; i<numberOfCuts; i++){
217      analysisCuts[i] = new AliConversionCuts();
218      if( ! analysisCuts[i]->InitializeCutsFromCutString(ConvCutarray[i].Data()) ) {
219            cout<<"ERROR: analysisCuts [" <<i<<"]"<<endl;
220            return 0;
221      } else {
222         ConvCutList->Add(analysisCuts[i]);
223         analysisCuts[i]->SetFillCutHistograms("",kFALSE);
224         if( trainConfig == 1){
225             if (i == 0 && doWeighting) analysisCuts[i]->SetUseReweightingWithHistogramFromFile(kTRUE, kFALSE, kFALSE, fileNameInputForWeighting, "Pi0_Hijing_LHC13d2_PbPb_2760GeV_2040V0M", "", "","Pi0_Fit_Data_PbPb_2760GeV_2040V0M");
226             if (i == 1 && doWeighting) analysisCuts[i]->SetUseReweightingWithHistogramFromFile(kTRUE, kFALSE, kFALSE, fileNameInputForWeighting, "Pi0_Hijing_LHC13d2_PbPb_2760GeV_4060V0M", "", "","Pi0_Fit_Data_PbPb_2760GeV_4060V0M");
227             if (i == 2 && doWeighting) analysisCuts[i]->SetUseReweightingWithHistogramFromFile(kTRUE, kFALSE, kFALSE, fileNameInputForWeighting, "Pi0_Hijing_LHC13d2_PbPb_2760GeV_6080V0M", "", "","Pi0_Fit_Data_PbPb_2760GeV_6080V0M");
228         } else if ( trainConfig == 2 || trainConfig == 3 || trainConfig == 5 || trainConfig == 7 ) {
229             if (i == 0 && doWeighting) analysisCuts[i]->SetUseReweightingWithHistogramFromFile(kTRUE, kFALSE, kFALSE, fileNameInputForWeighting, "Pi0_Hijing_LHC13d2_PbPb_2760GeV_2040TPC", "", "","Pi0_Fit_Data_PbPb_2760GeV_2040V0M");
230             if (i == 1 && doWeighting) analysisCuts[i]->SetUseReweightingWithHistogramFromFile(kTRUE, kFALSE, kFALSE, fileNameInputForWeighting, "Pi0_Hijing_LHC13d2_PbPb_2760GeV_4060TPC", "", "","Pi0_Fit_Data_PbPb_2760GeV_4060V0M");
231             if (i == 2 && doWeighting) analysisCuts[i]->SetUseReweightingWithHistogramFromFile(kTRUE, kFALSE, kFALSE, fileNameInputForWeighting, "Pi0_Hijing_LHC13d2_PbPb_2760GeV_6080TPC", "", "","Pi0_Fit_Data_PbPb_2760GeV_6080V0M");
232         } else if ( trainConfig == 4 || trainConfig == 6 ) {
233             if (i == 0 && doWeighting) analysisCuts[i]->SetUseReweightingWithHistogramFromFile(kTRUE, kFALSE, kFALSE, fileNameInputForWeighting, "Pi0_Hijing_LHC13d2_addSig_PbPb_2760GeV_2040TPC", "", "","Pi0_Fit_Data_PbPb_2760GeV_2040V0M");
234             if (i == 1 && doWeighting) analysisCuts[i]->SetUseReweightingWithHistogramFromFile(kTRUE, kFALSE, kFALSE, fileNameInputForWeighting, "Pi0_Hijing_LHC13d2_addSig_PbPb_2760GeV_4060TPC", "", "","Pi0_Fit_Data_PbPb_2760GeV_4060V0M");
235             if (i == 2 && doWeighting) analysisCuts[i]->SetUseReweightingWithHistogramFromFile(kTRUE, kFALSE, kFALSE, fileNameInputForWeighting, "Pi0_Hijing_LHC13d2_addSig_PbPb_2760GeV_6080TPC", "", "","Pi0_Fit_Data_PbPb_2760GeV_6080V0M");
236         }
237      }
238
239      analysisMesonCuts[i] = new AliConversionMesonCuts();
240      if( ! analysisMesonCuts[i]->InitializeCutsFromCutString(MesonCutarray[i].Data()) ) {
241            cout<<"ERROR: analysisMesonCuts [ " <<i<<" ] "<<endl;
242            return 0;
243      } else {
244        MesonCutList->Add(analysisMesonCuts[i]);
245        analysisMesonCuts[i]->SetFillCutHistograms("");
246      }
247
248      TString cutName( Form("%s_%s_%s",ConvCutarray[i].Data(),ElecCutarray[i].Data(),MesonCutarray[i].Data() ) );
249      analysisElecCuts[i] = new AliDalitzElectronCuts();
250      if( !analysisElecCuts[i]->InitializeCutsFromCutString(ElecCutarray[i].Data())) {
251            cout<< "ERROR:  analysisElecCuts [ " <<i<<" ] "<<endl;
252            return 0;
253      }  else { 
254         ElecCutList->Add(analysisElecCuts[i]);
255         analysisElecCuts[i]->SetFillCutHistograms("",kFALSE,cutName); 
256      }
257      analysisCuts[i]->SetAcceptedHeader(HeaderList);
258
259   }
260
261
262   task->SetConversionCutList(numberOfCuts,ConvCutList);
263   task->SetMesonCutList(MesonCutList);
264   task->SetElectronCutList(ElecCutList);
265
266   task->SetMoveParticleAccordingToVertex(kTRUE);
267
268
269   if(enableQAMesonTask) task->SetDoMesonQA(kTRUE);
270   if(enableDoMesonChic) task->SetDoChicAnalysis(kTRUE);
271
272   //connect containers
273   AliAnalysisDataContainer *coutput =
274   mgr->CreateContainer(Form("GammaConvDalitzV1_%i",trainConfig), TList::Class(),
275                           AliAnalysisManager::kOutputContainer,Form("GammaConvV1Dalitz_%i.root",trainConfig));
276
277   mgr->AddTask(task);
278   mgr->ConnectInput(task,0,cinput);
279   mgr->ConnectOutput(task,1,coutput);
280
281   return;
282 }