]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGGA/GammaConv/macros/AddTask_GammaConvCalo_pp.C
- changes to new Conv Calo Task for efficient running on the grid
[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] = "20000030022000000"; mesonCutArray[0] = "01525065000000"; //standard cut LHC11h pp 2.76TeV, kMB   // PHOS clusters
108                 cutarray[ 1] = "0006101002092970028250400000"; clustercutarray[1] = "20000030022000000"; mesonCutArray[1] = "01525065000000"; //standard cut LHC11h pp 2.76TeV, kPHI1 // PHOS clusters
109                 cutarray[ 2] = "0002001002092970028250400000"; clustercutarray[2] = "20000030022000000"; 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 *ClusterCutList = new TList();
119         TList *MesonCutList = new TList();
120
121         TList *HeaderList = new TList();
122         TObjString *Header1 = new TObjString("BOX");
123         HeaderList->Add(Header1);
124
125         ConvCutList->SetOwner(kTRUE);
126         AliConversionCuts **analysisCuts = new AliConversionCuts*[numberOfCuts];
127         ClusterCutList->SetOwner(kTRUE);
128         AliCaloPhotonCuts **analysisClusterCuts = new AliCaloPhotonCuts*[numberOfCuts];
129         MesonCutList->SetOwner(kTRUE);
130         AliConversionMesonCuts **analysisMesonCuts = new AliConversionMesonCuts*[numberOfCuts];
131
132         for(Int_t i = 0; i<numberOfCuts; i++){
133                 analysisCuts[i] = new AliConversionCuts();
134                 analysisCuts[i]->InitializeCutsFromCutString(cutarray[i].Data());
135                 ConvCutList->Add(analysisCuts[i]);
136                 analysisCuts[i]->SetFillCutHistograms("",kFALSE);
137                 
138                 analysisClusterCuts[i] = new AliCaloPhotonCuts();
139                 analysisClusterCuts[i]->InitializeCutsFromCutString(clustercutarray[i].Data());
140                 ClusterCutList->Add(analysisClusterCuts[i]);
141                 analysisClusterCuts[i]->SetFillCutHistograms("");
142
143                 analysisMesonCuts[i] = new AliConversionMesonCuts();
144                 analysisMesonCuts[i]->InitializeCutsFromCutString(mesonCutArray[i].Data());
145                 MesonCutList->Add(analysisMesonCuts[i]);
146                 analysisMesonCuts[i]->SetFillCutHistograms("");
147                 analysisCuts[i]->SetAcceptedHeader(HeaderList);
148         }
149
150         task->SetConversionCutList(numberOfCuts,ConvCutList);
151         task->SetCaloCutList(numberOfCuts,ClusterCutList);
152         task->SetMesonCutList(numberOfCuts,MesonCutList);
153         task->SetMoveParticleAccordingToVertex(kTRUE);
154         task->SetDoMesonAnalysis(kTRUE);
155         task->SetDoMesonQA(enableQAMesonTask); //Attention new switch for Pi0 QA
156         task->SetDoPhotonQA(enableQAPhotonTask);  //Attention new switch small for Photon QA
157
158         //connect containers
159         AliAnalysisDataContainer *coutput =
160                 mgr->CreateContainer(Form("GammaConvCalo_%i",trainConfig), TList::Class(),
161                                                         AliAnalysisManager::kOutputContainer,Form("GammaConvCalo_%i.root",trainConfig));
162
163         mgr->AddTask(task);
164         mgr->ConnectInput(task,0,cinput);
165         mgr->ConnectOutput(task,1,coutput);
166
167         return;
168
169 }