1 void AddTask_GammaConvCalo_PbPb( Int_t trainConfig = 1, //change different set of cuts
2 Bool_t isMC = kFALSE, //run MC
3 Int_t enableQAMesonTask = 0, //enable QA in AliAnalysisTaskGammaConvV1
4 Int_t enableQAPhotonTask = 0, // enable additional QA task
5 TString fileNameInputForWeighting = "MCSpectraInput.root", // path to file for weigting input
6 Int_t headerSelectionInt = 0, // 1 pi0 header, 2 eta header, 3 both (only for "named" boxes)
7 TString cutnumberAODBranch = "1000000060084000001500000",
8 TString periodName = "LHC13d2", //name of the period for added signals and weighting
9 Bool_t doWeighting = kFALSE, //enable Weighting
10 Bool_t enableExtendedMatching = kFALSE //enable or disable extended matching histograms for conversion electrons <-> cluster
13 // ================= Load Librariers =================================
14 gSystem->Load("libCore.so");
15 gSystem->Load("libTree.so");
16 gSystem->Load("libGeom.so");
17 gSystem->Load("libVMC.so");
18 gSystem->Load("libPhysics.so");
19 gSystem->Load("libMinuit");
20 gSystem->Load("libSTEERBase");
21 gSystem->Load("libESD");
22 gSystem->Load("libAOD");
23 gSystem->Load("libANALYSIS");
24 gSystem->Load("libANALYSISalice");
25 gSystem->Load("libPWGGAGammaConv.so");
26 gSystem->Load("libCDB.so");
27 gSystem->Load("libSTEER.so");
28 gSystem->Load("libSTEERBase.so");
29 gSystem->Load("libTENDER.so");
30 gSystem->Load("libTENDERSupplies.so");
34 // ================== GetAnalysisManager ===============================
35 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
37 Error(Form("AddTask_GammaConvV1_%i",trainConfig), "No analysis manager found.");
41 // ================== GetInputEventHandler =============================
42 AliVEventHandler *inputHandler=mgr->GetInputEventHandler();
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);
50 //========= Set Cutnumber for V0Reader ================================
51 TString cutnumberPhoton = "000084001001500000000";
52 TString cutnumberEvent = "1000000";
53 AliAnalysisDataContainer *cinput = mgr->GetCommonInputContainer();
55 //========= Add V0 Reader to ANALYSIS manager if not yet existent =====
56 if( !(AliV0ReaderV1*)mgr->GetTask("V0ReaderV1") ){
57 AliV0ReaderV1 *fV0ReaderV1 = new AliV0ReaderV1("V0ReaderV1");
59 fV0ReaderV1->SetUseOwnXYZCalculation(kTRUE);
60 fV0ReaderV1->SetCreateAODs(kFALSE);// AOD Output
61 fV0ReaderV1->SetUseAODConversionPhoton(kTRUE);
64 Error("AddTask_V0ReaderV1", "No analysis manager found.");
68 AliConvEventCuts *fEventCuts=NULL;
69 if(cutnumberEvent!=""){
70 fEventCuts= new AliConvEventCuts(cutnumberEvent.Data(),cutnumberEvent.Data());
71 fEventCuts->SetPreSelectionCutFlag(kTRUE);
72 if(fEventCuts->InitializeCutsFromCutString(cutnumberEvent.Data())){
73 fV0ReaderV1->SetEventCuts(fEventCuts);
74 fEventCuts->SetFillCutHistograms("",kTRUE);
79 // Set AnalysisCut Number
80 AliConversionPhotonCuts *fCuts=NULL;
81 if(cutnumberPhoton!=""){
82 fCuts= new AliConversionPhotonCuts(cutnumberPhoton.Data(),cutnumberPhoton.Data());
83 fCuts->SetPreSelectionCutFlag(kTRUE);
84 fCuts->SetIsHeavyIon(isHeavyIon);
85 if(fCuts->InitializeCutsFromCutString(cutnumberPhoton.Data())){
86 fV0ReaderV1->SetConversionCuts(fCuts);
87 fCuts->SetFillCutHistograms("",kTRUE);
91 if(inputHandler->IsA()==AliAODInputHandler::Class()){
93 fV0ReaderV1->SetDeltaAODBranchName(Form("GammaConv_%s_gamma",cutnumberAODBranch.Data()));
97 AliLog::SetGlobalLogLevel(AliLog::kFatal);
99 //connect input V0Reader
100 mgr->AddTask(fV0ReaderV1);
101 mgr->ConnectInput(fV0ReaderV1,0,cinput);
105 //================================================
106 //========= Add task to the ANALYSIS manager =====
107 //================================================
108 AliAnalysisTaskGammaConvCalo *task=NULL;
109 task= new AliAnalysisTaskGammaConvCalo(Form("GammaConvCalo_%i",trainConfig));
110 task->SetIsHeavyIon(isHeavyIon);
112 // Cut Numbers to use in Analysis
113 Int_t numberOfCuts = 5;
115 TString *eventCutArray = new TString[numberOfCuts];
116 TString *photonCutArray = new TString[numberOfCuts];
117 TString *clusterCutArray = new TString[numberOfCuts];
118 TString *mesonCutArray = new TString[numberOfCuts];
121 // meson type (Dalitz or not), BG scheme, pool depth, rotation degrees, rapidity cut, radius cut, alpha, chi2, shared electrons, reject to close v0, MC smearing, dca, dca, dca
123 if (trainConfig == 1){ // EMCAL clusters
124 eventCutArray[ 0] = "6010001"; photonCutArray[ 0] = "002092970028250400000"; clusterCutArray[0] = "10000040022030000"; mesonCutArray[ 0] = "01525065000000"; // 0-5%
125 eventCutArray[ 1] = "6120001"; photonCutArray[ 1] = "002092970028250400000"; clusterCutArray[1] = "10000040022030000"; mesonCutArray[ 1] = "01525065000000"; // 5-10%
126 eventCutArray[ 2] = "5010001"; photonCutArray[ 2] = "002092970028250400000"; clusterCutArray[2] = "10000040022030000"; mesonCutArray[ 2] = "01525065000000"; // 0-10%
127 eventCutArray[ 3] = "5240001"; photonCutArray[ 3] = "002092970028250400000"; clusterCutArray[3] = "10000040022030000"; mesonCutArray[ 3] = "01525065000000"; // 20-40%
128 eventCutArray[ 4] = "5250001"; photonCutArray[ 4] = "002092970028250400000"; clusterCutArray[4] = "10000040022030000"; mesonCutArray[ 4] = "01525065000000"; // 20-50%
129 } else if (trainConfig == 2){ // PHOS clusters
130 eventCutArray[ 0] = "6010001"; photonCutArray[ 0] = "002092970028250400000"; clusterCutArray[0] = "20000030022000000"; mesonCutArray[ 0] = "01525065000000"; // 0-5%
131 eventCutArray[ 1] = "6120001"; photonCutArray[ 1] = "002092970028250400000"; clusterCutArray[1] = "20000030022000000"; mesonCutArray[ 1] = "01525065000000"; // 5-10%
132 eventCutArray[ 2] = "5010001"; photonCutArray[ 2] = "002092970028250400000"; clusterCutArray[2] = "20000030022000000"; mesonCutArray[ 2] = "01525065000000"; // 0-10%
133 eventCutArray[ 3] = "5240001"; photonCutArray[ 3] = "002092970028250400000"; clusterCutArray[3] = "20000030022000000"; mesonCutArray[ 3] = "01525065000000"; // 20-40%
134 eventCutArray[ 4] = "5250001"; photonCutArray[ 4] = "002092970028250400000"; clusterCutArray[4] = "20000030022000000"; mesonCutArray[ 4] = "01525065000000"; // 20-50%
138 Error(Form("GammaConvCalo_%i",trainConfig), "wrong trainConfig variable no cuts have been specified for the configuration");
142 TList *EventCutList = new TList();
143 TList *ConvCutList = new TList();
144 TList *ClusterCutList = new TList();
145 TList *MesonCutList = new TList();
147 TList *HeaderList = new TList();
148 if (periodName.CompareTo("LHC13d2")==0){
149 TObjString *Header1 = new TObjString("pi0_1");
150 HeaderList->Add(Header1);
151 // TObjString *Header3 = new TObjString("eta_2");
152 // HeaderList->Add(Header3);
154 } else if (periodName.CompareTo("LHC12a17x_fix")==0){
155 TObjString *Header1 = new TObjString("PARAM");
156 HeaderList->Add(Header1);
157 } else if (periodName.CompareTo("LHC14a1a")==0){
158 if (headerSelectionInt == 1){
159 TObjString *Header1 = new TObjString("pi0_1");
160 HeaderList->Add(Header1);
161 } else if (headerSelectionInt == 2){
162 TObjString *Header1 = new TObjString("eta_2");
163 HeaderList->Add(Header1);
165 TObjString *Header1 = new TObjString("pi0_1");
166 HeaderList->Add(Header1);
167 TObjString *Header2 = new TObjString("eta_2");
168 HeaderList->Add(Header2);
170 } else if (periodName.CompareTo("LHC14a1b")==0 || periodName.CompareTo("LHC14a1c")==0){
171 TObjString *Header1 = new TObjString("BOX");
172 HeaderList->Add(Header1);
175 EventCutList->SetOwner(kTRUE);
176 AliConvEventCuts **analysisEventCuts = new AliConvEventCuts*[numberOfCuts];
177 ConvCutList->SetOwner(kTRUE);
178 AliConversionPhotonCuts **analysisCuts = new AliConversionPhotonCuts*[numberOfCuts];
179 ClusterCutList->SetOwner(kTRUE);
180 AliCaloPhotonCuts **analysisClusterCuts = new AliCaloPhotonCuts*[numberOfCuts];
181 MesonCutList->SetOwner(kTRUE);
182 AliConversionMesonCuts **analysisMesonCuts = new AliConversionMesonCuts*[numberOfCuts];
184 for(Int_t i = 0; i<numberOfCuts; i++){
186 analysisEventCuts[i] = new AliConvEventCuts();
187 if ( trainConfig == 1){
188 if (periodName.CompareTo("LHC14a1a") ==0 || periodName.CompareTo("LHC14a1b") ==0 || periodName.CompareTo("LHC14a1c") ==0 ){
189 if ( i == 0 && doWeighting) analysisEventCuts[i]->SetUseReweightingWithHistogramFromFile(kTRUE, kTRUE, kFALSE,fileNameInputForWeighting, Form("Pi0_Hijing_%s_PbPb_2760GeV_0005TPC",periodName.Data()), Form("Eta_Hijing_%s_PbPb_2760GeV_0005TPC",periodName.Data()), "","Pi0_Fit_Data_PbPb_2760GeV_0005V0M","Eta_Fit_Data_PbPb_2760GeV_0005V0M");
190 if ( i == 1 && doWeighting) analysisEventCuts[i]->SetUseReweightingWithHistogramFromFile(kTRUE, kTRUE, kFALSE,fileNameInputForWeighting, Form("Pi0_Hijing_%s_PbPb_2760GeV_0510TPC",periodName.Data()), Form("Eta_Hijing_%s_PbPb_2760GeV_0510TPC",periodName.Data()), "","Pi0_Fit_Data_PbPb_2760GeV_0510V0M","Eta_Fit_Data_PbPb_2760GeV_0510V0M");
191 if ( i == 2 && doWeighting) analysisEventCuts[i]->SetUseReweightingWithHistogramFromFile(kTRUE, kTRUE, kFALSE,fileNameInputForWeighting, Form("Pi0_Hijing_%s_PbPb_2760GeV_0010TPC",periodName.Data()), Form("Eta_Hijing_%s_PbPb_2760GeV_0010TPC",periodName.Data()), "","Pi0_Fit_Data_PbPb_2760GeV_0010V0M","Eta_Fit_Data_PbPb_2760GeV_0010V0M");
192 if ( i == 3 && doWeighting) analysisEventCuts[i]->SetUseReweightingWithHistogramFromFile(kTRUE, kTRUE, kFALSE,fileNameInputForWeighting, Form("Pi0_Hijing_%s_PbPb_2760GeV_2040TPC",periodName.Data()), Form("Eta_Hijing_%s_PbPb_2760GeV_2040TPC",periodName.Data()), "","Pi0_Fit_Data_PbPb_2760GeV_2040V0M","Eta_Fit_Data_PbPb_2760GeV_2040V0M");
193 if ( i == 4 && doWeighting) analysisEventCuts[i]->SetUseReweightingWithHistogramFromFile(kTRUE, kTRUE, kFALSE,fileNameInputForWeighting, Form("Pi0_Hijing_%s_PbPb_2760GeV_2050TPC",periodName.Data()), Form("Eta_Hijing_%s_PbPb_2760GeV_2050TPC",periodName.Data()), "","Pi0_Fit_Data_PbPb_2760GeV_2050V0M","Eta_Fit_Data_PbPb_2760GeV_2050V0M");
196 analysisEventCuts[i]->InitializeCutsFromCutString(eventCutArray[i].Data());
197 if (periodName.CompareTo("LHC14a1b") ==0 || periodName.CompareTo("LHC14a1c") ==0 ){
198 if (headerSelectionInt == 1) analysisEventCuts[i]->SetAddedSignalPDGCode(111);
199 if (headerSelectionInt == 2) analysisEventCuts[i]->SetAddedSignalPDGCode(221);
201 EventCutList->Add(analysisEventCuts[i]);
202 analysisEventCuts[i]->SetFillCutHistograms("",kFALSE);
204 analysisCuts[i] = new AliConversionPhotonCuts();
205 analysisCuts[i]->InitializeCutsFromCutString(photonCutArray[i].Data());
206 ConvCutList->Add(analysisCuts[i]);
207 analysisCuts[i]->SetFillCutHistograms("",kFALSE);
209 analysisClusterCuts[i] = new AliCaloPhotonCuts();
210 analysisClusterCuts[i]->InitializeCutsFromCutString(clusterCutArray[i].Data());
211 ClusterCutList->Add(analysisClusterCuts[i]);
212 analysisClusterCuts[i]->SetExtendedMatching(enableExtendedMatching);
213 analysisClusterCuts[i]->SetFillCutHistograms("");
215 analysisMesonCuts[i] = new AliConversionMesonCuts();
216 analysisMesonCuts[i]->InitializeCutsFromCutString(mesonCutArray[i].Data());
217 MesonCutList->Add(analysisMesonCuts[i]);
218 analysisMesonCuts[i]->SetFillCutHistograms("");
219 analysisEventCuts[i]->SetAcceptedHeader(HeaderList);
223 task->SetEventCutList(numberOfCuts,EventCutList);
224 task->SetConversionCutList(numberOfCuts,ConvCutList);
225 task->SetCaloCutList(numberOfCuts,ClusterCutList);
226 task->SetMesonCutList(numberOfCuts,MesonCutList);
227 task->SetMoveParticleAccordingToVertex(kTRUE);
228 task->SetDoMesonAnalysis(kTRUE);
229 task->SetDoMesonQA(enableQAMesonTask); //Attention new switch for Pi0 QA
230 task->SetDoPhotonQA(enableQAPhotonTask); //Attention new switch small for Photon QA
231 task->SetDoClusterQA(1); //Attention new switch small for Cluster QA
234 AliAnalysisDataContainer *coutput =
235 mgr->CreateContainer(Form("GammaConvCalo_%i",trainConfig), TList::Class(),
236 AliAnalysisManager::kOutputContainer,Form("GammaConvCalo_%i.root",trainConfig));
239 mgr->ConnectInput(task,0,cinput);
240 mgr->ConnectOutput(task,1,coutput);