]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGGA/GammaConv/macros/AddTask_GammaConvdPhi_PbPb.C
881839f2fdd0eaf5c05c30eda604198a85718d24
[u/mrichter/AliRoot.git] / PWGGA / GammaConv / macros / AddTask_GammaConvdPhi_PbPb.C
1 AliAnalysisTask *AddTask_GammaConvdPhi_PbPb(TString v0Cut = "109000200209297002322000000",
2                                          TString pionCut = "01522045009000",
3                                          TString photoncut = "",
4                                          Bool_t pbpb = kTRUE) {
5
6   // standard with task
7   printf("========================================================================================\n");
8   printf("dPhiAnalysis: Initialising AliAnalysisTaskdPhi\n");
9   printf("========================================================================================\n");
10   
11   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
12   if (!mgr) {
13     Error("AddTask_slindal_dPhi", "No analysis manager found.");
14     return 0;
15   }
16
17   AliAnalysisManager *man=AliAnalysisManager::GetAnalysisManager();
18   Bool_t isAOD=man->GetInputEventHandler()->IsA()==AliAODInputHandler::Class();
19   
20   AliAnalysisTaskdPhi *task = new AliAnalysisTaskdPhi((TString("slindalTask_dPhi")+"_" + v0Cut));
21
22   ///Axes for histrograms
23   Double_t cptbins[14] = {0.7, 1.0, 1.5, 2.0, 2.5, 3.0, 4.0, 5.0, 6.0, 8.0, 10.0, 15, 50, 100};
24   task->GetAxiscPt().Set(13, cptbins);
25
26   Double_t tptbins[10] = {2.0, 3.0, 4.0, 5.0, 6.0, 8.0, 10.0, 15, 50, 100};
27   task->GetAxistPt().Set(9, tptbins);
28
29   if(pbpb) {
30     Double_t centBins[6] = {0, 5, 10, 30, 60, 90};
31     task->GetAxisCent().Set(5, centBins);
32   } else {
33     task->GetAxisCent().Set(1, -9999, 9999);
34   }
35
36   Double_t zbins[6] = { -10, -5, -1.5, 1.5, 5, 10};
37   task->GetAxisZ().Set(5, zbins);
38
39   Double_t mbins[17] = {0.07, 0.09, 0.1, 0.11, 0.12, 0.125, 0.1275, 0.13, 0.14, 0.1425, 0.145, 0.15, 0.16, 0.18, 0.2, 0.24, 0.26};
40   task->GetAxisPiMass().Set(16, mbins);
41
42   //Track cuts for associated tracks
43   AliConversionTrackCuts * cuts = new AliConversionTrackCuts();
44   cuts->SetDCAZmax(2.5);
45   cuts->SetDCAXYmax(1.5);
46   cuts->SetTPCminNClusters(50);
47   cuts->SetTPCCFoundClusters(0.6);
48   cuts->SetTPCmaxChi2(10.0);
49   cuts->SetRejectKinkDaughters();
50   cuts->SetRequireTPCRefit(kFALSE);
51   cuts->Print();
52   task->SetTrackCuts(cuts);
53  
54   ///Pion cuts
55   AliConversionMesonCuts * picuts = new AliConversionMesonCuts();
56   picuts->InitializeCutsFromCutString(pionCut);
57   task->SetMesonFilter(picuts);
58
59   if(photoncut.Length() > 0) {
60     ///V0 analysis cuts (applied before pion analysis)
61     AliConversionCuts * gcuts = new AliConversionCuts();
62     gcuts->InitializeCutsFromCutString(photoncut);
63     task->SetV0Filter(gcuts);
64   }
65
66   //================================================
67   //              data containers
68   //================================================
69   //            find input container
70   //below the trunk version
71   AliAnalysisDataContainer *cinput  = mgr->GetCommonInputContainer();
72   TString baseString("slindal_dPhi_");
73   baseString += v0Cut + "_";
74
75   //dumm output container
76   AliAnalysisDataContainer *coutput0 =
77         mgr->CreateContainer(baseString+"tree",
78                                                  TTree::Class(),
79                                                  AliAnalysisManager::kExchangeContainer,
80                                                  "slindal_default");
81   
82   //define output containers, please use 'username'_'somename'
83   AliAnalysisDataContainer *coutput1 = 
84         mgr->CreateContainer(baseString+"me", TList::Class(),
85                                                  AliAnalysisManager::kOutputContainer,baseString+"me.root");
86
87   //define output containers, please use 'username'_'somename'
88   AliAnalysisDataContainer *coutput2 = 
89     mgr->CreateContainer(baseString+"photon", TList::Class(),
90                          AliAnalysisManager::kOutputContainer, baseString+"photon.root");
91   
92   //define output containers, please use 'username'_'somename'
93   AliAnalysisDataContainer *coutput3 = 
94     mgr->CreateContainer(baseString+"pion", TList::Class(),
95                          AliAnalysisManager::kOutputContainer,baseString+"pion.root");
96   
97   //========= Add PID Reponse to ANALYSIS manager ====
98   Bool_t isMC = kFALSE;
99   if(!(AliPIDResponse*)mgr->GetTask("PIDResponseTask")){
100     gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskPIDResponse.C");
101     AddTaskPIDResponse(isMC);
102   }
103    
104   //=========  Set Cutnumber for V0Reader ================================
105   //  TString cutnumber = "100000000008400100150000000"; 
106   //========= Add V0 Reader to  ANALYSIS manager if not yet existent =====
107   if( !(AliV0ReaderV1*)mgr->GetTask("V0ReaderV1") ){
108     AliV0ReaderV1 *fV0ReaderV1 = new AliV0ReaderV1("V0ReaderV1");
109       
110     fV0ReaderV1->SetUseOwnXYZCalculation(kTRUE);
111     fV0ReaderV1->SetCreateAODs(kFALSE);// AOD Output
112     fV0ReaderV1->SetUseAODConversionPhoton(kTRUE);
113
114     if (!mgr) {
115       Error("AddTask_V0ReaderV1", "No analysis manager found.");
116       return;
117     }
118
119     // Set AnalysisCut Number
120     AliConversionCuts *fCuts=NULL;
121     if(v0Cut!=""){
122       fCuts= new AliConversionCuts(v0Cut.Data(),v0Cut.Data());
123       if(pbpb) {
124         fCuts->SetPreSelectionCutFlag(kFALSE);
125       } else {
126         fCuts->SetPreSelectionCutFlag(kTRUE);
127       }
128       if(fCuts->InitializeCutsFromCutString(v0Cut)){
129         fV0ReaderV1->SetConversionCuts(fCuts);
130         //fCuts->SetFillCutHistograms("",kTRUE);
131       }
132
133
134     }
135       
136     fV0ReaderV1->Init();
137
138     mgr->AddTask(fV0ReaderV1);
139     mgr->ConnectInput(fV0ReaderV1,0,cinput);
140     task->SetV0Reader(fV0ReaderV1);
141     task->SaveReaderHists();
142   } else {
143     ///V0 analysis cuts (applied before pion analysis)
144     AliConversionCuts * v0cuts = new AliConversionCuts();
145     v0cuts->InitializeCutsFromCutString(v0Cut);
146     task->SetV0Filter(v0cuts);
147   }
148
149   mgr->AddTask(task);
150   mgr->ConnectInput  (task,  0, cinput );
151   mgr->ConnectOutput (task,  0, coutput0);
152   mgr->ConnectOutput (task,  1, coutput1);
153   mgr->ConnectOutput (task,  2, coutput2);
154   mgr->ConnectOutput (task,  3, coutput3);
155   
156   return task;
157 }
158
159