]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGGA/GammaConv/macros/AddTask_GammaConvCalo_pp.C
- changes to Calo selection classes & addtasks in Conversion-PWGGA branch
[u/mrichter/AliRoot.git] / PWGGA / GammaConv / macros / AddTask_GammaConvCalo_pp.C
1 void AddTask_GammaConvCalo_pp(  Int_t trainConfig = 1,  //change different set of cuts
2                                                                 Bool_t isMC = kFALSE, //run MC
3                                                                 Int_t enableQAMesonTask = 1, //enable QA in AliAnalysisTaskGammaConvV1
4                                                                 Int_t enableQAPhotonTask = 1, // enable additional QA task
5                                                                 TString fileNameInputForWeighting = "MCSpectraInput.root", // path to file for weigting input
6                                                                 TString cutnumberAODBranch = "0000000060084001001500000" 
7                                                         ) {
8
9         // ================= Load Librariers =================================
10         gSystem->Load("libCore.so");  
11         gSystem->Load("libTree.so");
12         gSystem->Load("libGeom.so");
13         gSystem->Load("libVMC.so");
14         gSystem->Load("libPhysics.so");
15         gSystem->Load("libMinuit");
16         gSystem->Load("libSTEERBase");
17         gSystem->Load("libESD");
18         gSystem->Load("libAOD");
19         gSystem->Load("libANALYSIS");
20         gSystem->Load("libANALYSISalice");  
21         gSystem->Load("libPWGGAGammaConv.so");
22         gSystem->Load("libCDB.so");
23         gSystem->Load("libSTEER.so");
24         gSystem->Load("libSTEERBase.so");
25         gSystem->Load("libTENDER.so");
26         gSystem->Load("libTENDERSupplies.so");
27                 
28         // ================== GetAnalysisManager ===============================
29         AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
30         if (!mgr) {
31                 Error(Form("AddTask_GammaConvV1_%i",trainConfig), "No analysis manager found.");
32                 return ;
33         }
34
35         // ================== GetInputEventHandler =============================
36         AliVEventHandler *inputHandler=mgr->GetInputEventHandler();
37         
38         //========= Add PID Reponse to ANALYSIS manager ====
39         if(!(AliPIDResponse*)mgr->GetTask("PIDResponseTask")){
40                 gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskPIDResponse.C");
41                 AddTaskPIDResponse(isMC,1,0,4,0,"",1,1,4);
42         }
43         
44         //=========  Set Cutnumber for V0Reader ================================
45         TString cutnumber = "0000000002084000002200000000"; 
46         AliAnalysisDataContainer *cinput = mgr->GetCommonInputContainer();
47
48         //========= Add V0 Reader to  ANALYSIS manager if not yet existent =====
49         if( !(AliV0ReaderV1*)mgr->GetTask("V0ReaderV1") ){
50                 AliV0ReaderV1 *fV0ReaderV1 = new AliV0ReaderV1("V0ReaderV1");
51                 
52                 fV0ReaderV1->SetUseOwnXYZCalculation(kTRUE);
53                 fV0ReaderV1->SetCreateAODs(kFALSE);// AOD Output
54                 fV0ReaderV1->SetUseAODConversionPhoton(kTRUE);
55
56                 if (!mgr) {
57                         Error("AddTask_V0ReaderV1", "No analysis manager found.");
58                         return;
59                 }
60
61                 // Set AnalysisCut Number
62                 AliConversionCuts *fCuts=NULL;
63                 if(cutnumber!=""){
64                         fCuts= new AliConversionCuts(cutnumber.Data(),cutnumber.Data());
65                         fCuts->SetPreSelectionCutFlag(kTRUE);
66                         if(fCuts->InitializeCutsFromCutString(cutnumber.Data())){
67                                 fV0ReaderV1->SetConversionCuts(fCuts);
68                                 fCuts->SetFillCutHistograms("",kTRUE);
69                         }
70                 }
71                 if(inputHandler->IsA()==AliAODInputHandler::Class()){
72                 // AOD mode
73                         fV0ReaderV1->SetDeltaAODBranchName(Form("GammaConv_%s_gamma",cutnumberAODBranch.Data()));
74                 }
75                 fV0ReaderV1->Init();
76
77                 AliLog::SetGlobalLogLevel(AliLog::kFatal);
78
79                 //connect input V0Reader
80                 mgr->AddTask(fV0ReaderV1);
81                 mgr->ConnectInput(fV0ReaderV1,0,cinput);
82
83         }
84
85         //================================================
86         //========= Add task to the ANALYSIS manager =====
87         //================================================
88         AliAnalysisTaskGammaConvCalo *task=NULL;
89         task= new AliAnalysisTaskGammaConvCalo(Form("GammaConvCalo_%i",trainConfig));
90         task->SetIsHeavyIon(0);
91         task->SetIsMC(isMC);
92         // Cut Numbers to use in Analysis
93         Int_t numberOfCuts = 3;
94
95         TString *cutarray = new TString[numberOfCuts];
96         TString *clustercutarray = new TString[numberOfCuts];
97         TString *mesonCutArray = new TString[numberOfCuts];
98
99         // meson cuts
100         // 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
101         
102         if (trainConfig == 1){ 
103                 cutarray[ 0] = "0000001002092970028250400000"; clustercutarray[0] = "10000040022030000"; mesonCutArray[0] = "01525065000000"; //standard cut LHC11h pp 2.76TeV, kMB // EMCAL clusters
104                 cutarray[ 1] = "0005101002092970028250400000"; clustercutarray[1] = "10000040022030000"; mesonCutArray[1] = "01525065000000"; //standard cut LHC11h pp 2.76TeV, kEMC1 // EMCAL clusters
105                 cutarray[ 2] = "0002001002092970028250400000"; clustercutarray[2] = "10000040022030000"; mesonCutArray[2] = "01525065000000"; //standard cut LHC11h pp 2.76TeV, SDD V0OR // EMCAL clusters
106         } else if (trainConfig == 2){ 
107                 cutarray[ 0] = "0000001002092970028250400000"; clustercutarray[0] = "20000040022030000"; mesonCutArray[0] = "01525065000000"; //standard cut LHC11h pp 2.76TeV, kMB   // PHOS clusters
108                 cutarray[ 1] = "0006101002092970028250400000"; clustercutarray[1] = "20000040022030000"; mesonCutArray[1] = "01525065000000"; //standard cut LHC11h pp 2.76TeV, kPHI1 // PHOS clusters
109                 cutarray[ 2] = "0002001002092970028250400000"; clustercutarray[2] = "20000040022030000"; mesonCutArray[2] = "01525065000000"; //standard cut LHC11h pp 2.76TeV, SDD V0OR //PHOS clusters
110
111                 
112         } else {
113                 Error(Form("GammaConvCalo_%i",trainConfig), "wrong trainConfig variable no cuts have been specified for the configuration");
114                 return;
115         }
116
117         TList *ConvCutList = new TList();
118         TList *MesonCutList = new TList();
119
120         TList *HeaderList = new TList();
121         TObjString *Header1 = new TObjString("BOX");
122         HeaderList->Add(Header1);
123
124         ConvCutList->SetOwner(kTRUE);
125         AliConversionCuts **analysisCuts = new AliConversionCuts*[numberOfCuts];
126         ClusterCutList->SetOwner(kTRUE);
127         AliCaloPhotonCuts **analysisClusterCuts = new AliCaloPhotonCuts*[numberOfCuts];
128         MesonCutList->SetOwner(kTRUE);
129         AliConversionMesonCuts **analysisMesonCuts = new AliConversionMesonCuts*[numberOfCuts];
130
131         for(Int_t i = 0; i<numberOfCuts; i++){
132                 analysisCuts[i] = new AliConversionCuts();
133                 analysisCuts[i]->InitializeCutsFromCutString(cutarray[i].Data());
134                 ConvCutList->Add(analysisCuts[i]);
135                 analysisCuts[i]->SetFillCutHistograms("",kFALSE);
136                 
137                 analysisClusterCuts[i] = new AliCaloPhotonCuts();
138                 analysisClusterCuts[i]->InitializeCutsFromCutString(clustercutarray[i].Data());
139                 ClusterCutList->Add(analysisClusterCuts[i]);
140                 analysisClusterCuts[i]->SetFillCutHistograms("");
141
142                 analysisMesonCuts[i] = new AliConversionMesonCuts();
143                 analysisMesonCuts[i]->InitializeCutsFromCutString(mesonCutArray[i].Data());
144                 MesonCutList->Add(analysisMesonCuts[i]);
145                 analysisMesonCuts[i]->SetFillCutHistograms("");
146                 analysisCuts[i]->SetAcceptedHeader(HeaderList);
147         }
148
149         task->SetConversionCutList(numberOfCuts,ConvCutList);
150         task->SetCaloCutList(numberOfCuts,ClusterCutList);
151         task->SetMesonCutList(numberOfCuts,MesonCutList);
152         task->SetMoveParticleAccordingToVertex(kTRUE);
153         task->SetDoMesonAnalysis(kTRUE);
154         task->SetDoMesonQA(enableQAMesonTask); //Attention new switch for Pi0 QA
155         task->SetDoPhotonQA(enableQAPhotonTask);  //Attention new switch small for Photon QA
156
157         //connect containers
158         AliAnalysisDataContainer *coutput =
159                 mgr->CreateContainer(Form("GammaConvCalo_%i",trainConfig), TList::Class(),
160                                                         AliAnalysisManager::kOutputContainer,Form("GammaConvCalo_%i.root",trainConfig));
161
162         mgr->AddTask(task);
163         mgr->ConnectInput(task,0,cinput);
164         mgr->ConnectOutput(task,1,coutput);
165
166         return;
167
168 }