]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGGA/GammaConv/macros/AddTask_GammaConvdPhi_PbPb.C
Make sure current dir is in load path, so that we do not pick up the wrong (previousl...
[u/mrichter/AliRoot.git] / PWGGA / GammaConv / macros / AddTask_GammaConvdPhi_PbPb.C
CommitLineData
439cf020 1AliAnalysisTask *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
9e6bd607 23 Double_t cptbins[13] = {0.5, 1.0, 1.5, 2.0, 2.5, 3.0, 4.0, 5.0, 8.0, 10.0, 25, 50, 100};
24 task->GetAxiscPt().Set(12, cptbins);
439cf020 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) {
9e6bd607 30 Double_t centBins[7] = {0, 5, 10, 30, 50, 60, 90};
31 task->GetAxisCent().Set(6, centBins);
439cf020 32 } else {
9e6bd607 33 Double_t centBins[2] = {-9999, 9999};
34 task->GetAxisCent().Set(1, centBins);
439cf020 35 }
36
37 Double_t zbins[6] = { -10, -5, -1.5, 1.5, 5, 10};
38 task->GetAxisZ().Set(5, zbins);
39
40 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};
41 task->GetAxisPiMass().Set(16, mbins);
42
9e6bd607 43
44 //AliConversionTrackCuts * cuts = new AliConversionTrackCuts();
45 AliESDtrackCuts * trackCuts = new AliESDtrackCuts();
46
47 TFormula *f1NClustersTPCLinearPtDep = new TFormula("f1NClustersTPCLinearPtDep","70.+30./20.*x");
48 trackCuts->SetMinNClustersTPCPtDep(f1NClustersTPCLinearPtDep, 100);
49 trackCuts->SetMaxChi2PerClusterTPC(4);
50 trackCuts->SetRequireTPCStandAlone(kTRUE);
51 trackCuts->SetAcceptKinkDaughters(kFALSE);
52 trackCuts->SetRequireTPCRefit(kTRUE);
53 trackCuts->SetMaxFractionSharedTPCClusters(0.4);
54
55 trackCuts->SetMaxDCAToVertexXY(2.4);
56 trackCuts->SetMaxDCAToVertexZ(3.2);
57 trackCuts->SetDCAToVertex2D(kTRUE);
58
59 trackCuts->SetMaxChi2PerClusterITS(36);
60 trackCuts->SetMaxChi2TPCConstrainedGlobal(36);
61
62 trackCuts->SetRequireSigmaToVertex(kFALSE);
63
64 trackCuts->SetEtaRange(-0.9, 0.9);
65 trackCuts->SetPtRange(cptbins[0], 1000000.0);
66
67 trackCuts->SetRequireITSRefit(kFALSE);
68
69 //cuts->SetESDCuts(esdTrackCuts);
70 task->SetTrackCuts(trackCuts);
71
439cf020 72
73 ///Pion cuts
9e6bd607 74 AliConversionMesonCuts * picuts = new AliConversionMesonCuts("dphi_pioncuts");
439cf020 75 picuts->InitializeCutsFromCutString(pionCut);
76 task->SetMesonFilter(picuts);
77
78 if(photoncut.Length() > 0) {
79 ///V0 analysis cuts (applied before pion analysis)
80 AliConversionCuts * gcuts = new AliConversionCuts();
81 gcuts->InitializeCutsFromCutString(photoncut);
9e6bd607 82 task->SetPhotonFilter(gcuts);
439cf020 83 }
84
85 //================================================
86 // data containers
87 //================================================
88 // find input container
89 //below the trunk version
90 AliAnalysisDataContainer *cinput = mgr->GetCommonInputContainer();
91 TString baseString("slindal_dPhi_");
9e6bd607 92 baseString += v0Cut + "_" + pionCut;
439cf020 93
94 //dumm output container
95 AliAnalysisDataContainer *coutput0 =
96 mgr->CreateContainer(baseString+"tree",
97 TTree::Class(),
98 AliAnalysisManager::kExchangeContainer,
99 "slindal_default");
100
101 //define output containers, please use 'username'_'somename'
102 AliAnalysisDataContainer *coutput1 =
103 mgr->CreateContainer(baseString+"me", TList::Class(),
9e6bd607 104 AliAnalysisManager::kOutputContainer,baseString+".root");
439cf020 105
106 //define output containers, please use 'username'_'somename'
439cf020 107
439cf020 108
109 //========= Add PID Reponse to ANALYSIS manager ====
110 Bool_t isMC = kFALSE;
111 if(!(AliPIDResponse*)mgr->GetTask("PIDResponseTask")){
112 gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskPIDResponse.C");
113 AddTaskPIDResponse(isMC);
114 }
115
116 //========= Set Cutnumber for V0Reader ================================
117 // TString cutnumber = "100000000008400100150000000";
118 //========= Add V0 Reader to ANALYSIS manager if not yet existent =====
9e6bd607 119 AliV0ReaderV1 * fV0ReaderV1 = (AliV0ReaderV1*)mgr->GetTask("V0ReaderV1");
120 if( !fV0reader ){
439cf020 121 AliV0ReaderV1 *fV0ReaderV1 = new AliV0ReaderV1("V0ReaderV1");
122
123 fV0ReaderV1->SetUseOwnXYZCalculation(kTRUE);
124 fV0ReaderV1->SetCreateAODs(kFALSE);// AOD Output
125 fV0ReaderV1->SetUseAODConversionPhoton(kTRUE);
126
127 if (!mgr) {
128 Error("AddTask_V0ReaderV1", "No analysis manager found.");
129 return;
130 }
131
132 // Set AnalysisCut Number
133 AliConversionCuts *fCuts=NULL;
134 if(v0Cut!=""){
135 fCuts= new AliConversionCuts(v0Cut.Data(),v0Cut.Data());
136 if(pbpb) {
137 fCuts->SetPreSelectionCutFlag(kFALSE);
138 } else {
139 fCuts->SetPreSelectionCutFlag(kTRUE);
140 }
141 if(fCuts->InitializeCutsFromCutString(v0Cut)){
142 fV0ReaderV1->SetConversionCuts(fCuts);
143 //fCuts->SetFillCutHistograms("",kTRUE);
144 }
145
146
147 }
148
149 fV0ReaderV1->Init();
439cf020 150 mgr->AddTask(fV0ReaderV1);
151 mgr->ConnectInput(fV0ReaderV1,0,cinput);
152 task->SetV0Reader(fV0ReaderV1);
153 task->SaveReaderHists();
154 } else {
155 ///V0 analysis cuts (applied before pion analysis)
156 AliConversionCuts * v0cuts = new AliConversionCuts();
157 v0cuts->InitializeCutsFromCutString(v0Cut);
9e6bd607 158 task->SetV0Reader(fV0ReaderV1);
439cf020 159 task->SetV0Filter(v0cuts);
160 }
161
162 mgr->AddTask(task);
163 mgr->ConnectInput (task, 0, cinput );
164 mgr->ConnectOutput (task, 0, coutput0);
165 mgr->ConnectOutput (task, 1, coutput1);
439cf020 166
167 return task;
168}
169
170