1 AliAnalysisTaskSED0Mass *AddTaskD0Mass(Int_t flag=0/*0 = D0,1 = LS*/,Bool_t readMC=kTRUE,Bool_t cutOnDistr=kFALSE)
4 // AddTask for the AliAnalysisTaskSE for D0 candidates
5 // invariant mass histogram and association with MC truth
6 // (using MC info in AOD) and cut variables distributions
7 // C.Bianchin chiara.bianchin@pd.infn.it
11 // Get the pointer to the existing analysis manager via the static access method.
12 //==============================================================================
13 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
15 ::Error("AddTaskD0Distr", "No analysis manager to connect to.");
19 TString filename="",out1name="",out2name="",out3name="",out4name="",out5name="",inname="";
20 filename = AliAnalysisManager::GetCommonFileName();
21 filename += ":PWG3_D2H_";
23 filename+="D0InvMass";
24 if(cutOnDistr) filename+="C";
26 out1name="coutputmassD0Mass";
27 if(cutOnDistr) out1name+="C";
29 out2name="coutputmassD0distr";
30 if(cutOnDistr) out2name+="C";
32 out3name="nEntriesD0";
33 if(cutOnDistr) out3name+="C";
36 if(cutOnDistr) out4name+="C";
39 if(cutOnDistr) out5name+="C";
41 inname="cinputmassD0_0";
42 if(cutOnDistr) inname+="C";
45 filename+="D0InvMassLikeSign";
46 if(cutOnDistr) filename+="C";
48 out1name="coutputmassLSMass";
49 if(cutOnDistr) out1name+="C";
51 out2name="coutputmassLSdistr";
52 if(cutOnDistr) out2name+="C";
54 out3name="nEntriesLS";
55 if(cutOnDistr) out3name+="C";
58 if(cutOnDistr) out4name+="C";
61 if(cutOnDistr) out5name+="C";
63 inname="cinputmassD0_1";
64 if(cutOnDistr) inname+="C";
66 TString cutobjname="mycuts";
69 AliESDtrackCuts* esdTrackCuts=new AliESDtrackCuts();
70 esdTrackCuts->SetRequireSigmaToVertex(kFALSE);
72 esdTrackCuts->SetRequireTPCRefit(kTRUE);
73 esdTrackCuts->SetRequireITSRefit(kTRUE);
74 esdTrackCuts->SetMinNClustersITS(5); // default is 5
75 esdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,
76 AliESDtrackCuts::kBoth); //test d0 asimmetry
77 // default is kBoth, otherwise kAny
78 esdTrackCuts->SetMinDCAToVertexXY(0.);
79 esdTrackCuts->SetPtRange(0.3,1.e10);
81 AliRDHFCutsD0toKpi* RDHFD0toKpi=new AliRDHFCutsD0toKpi();
82 RDHFD0toKpi->AddTrackCuts(esdTrackCuts);
84 //cout<<"nvars = "<<RDHFD0toKpi->GetNVars()<<endl;
86 //nvars=RDHFD0toKpi->GetNVars();
87 //cout<<"Nvars = "<<nvars<<"\t"<<RDHFD0toKpi->GetNVars()<<endl;
88 RDHFD0toKpi->SetName(cutobjname);
89 RDHFD0toKpi->SetTitle(cutobjname);
91 const Int_t nptbins=5;
93 ptbins=new Float_t[nptbins+1];
101 RDHFD0toKpi->SetPtBins(nptbins+1,ptbins);
104 Float_t** rdcutsvalmine;
105 rdcutsvalmine=new Float_t*[nvars];
106 for(Int_t iv=0;iv<nvars;iv++){
107 rdcutsvalmine[iv]=new Float_t[nptbins];
109 //cout<<"\tnptbins = "<<nptbins<<endl;
111 //setting PPR cut values
112 rdcutsvalPPR[0][0]=0.7;
113 rdcutsvalPPR[1][0]=0.04;
114 rdcutsvalPPR[2][0]=0.8;
115 rdcutsvalPPR[3][0]=0.5;
116 rdcutsvalPPR[4][0]=0.5;
117 rdcutsvalPPR[5][0]=0.05;
118 rdcutsvalPPR[6][0]=0.05;
119 rdcutsvalPPR[7][0]=-0.0002;
120 rdcutsvalPPR[8][0]=0.5;
122 rdcutsvalPPR[0][1]=rdcutsvalPPR[0][2]=0.7;
123 rdcutsvalPPR[1][1]=rdcutsvalPPR[1][2]=0.02;
124 rdcutsvalPPR[2][1]=rdcutsvalPPR[2][2]=0.8;
125 rdcutsvalPPR[3][1]=rdcutsvalPPR[3][2]=0.7;
126 rdcutsvalPPR[4][1]=rdcutsvalPPR[4][2]=0.7;
127 rdcutsvalPPR[5][1]=rdcutsvalPPR[5][2]=0.05;
128 rdcutsvalPPR[6][1]=rdcutsvalPPR[6][2]=0.05;
129 rdcutsvalPPR[7][1]=rdcutsvalPPR[7][2]=-0.0002;
130 rdcutsvalPPR[8][1]=rdcutsvalPPR[8][2]=0.6;
132 rdcutsvalPPR[0][3]=0.7;
133 rdcutsvalPPR[1][3]=0.02;
134 rdcutsvalPPR[2][3]=0.8;
135 rdcutsvalPPR[3][3]=0.7;
136 rdcutsvalPPR[4][3]=0.7;
137 rdcutsvalPPR[5][3]=0.05;
138 rdcutsvalPPR[6][3]=0.05;
139 rdcutsvalPPR[7][3]=-0.0001;
140 rdcutsvalPPR[8][3]=0.8;
142 rdcutsvalPPR[0][4]=0.7;
143 rdcutsvalPPR[1][4]=0.02;
144 rdcutsvalPPR[2][4]=0.8;
145 rdcutsvalPPR[3][4]=0.7;
146 rdcutsvalPPR[4][4]=0.7;
147 rdcutsvalPPR[5][4]=0.05;
148 rdcutsvalPPR[6][4]=0.05;
149 rdcutsvalPPR[7][4]=-0.00005;
150 rdcutsvalPPR[8][4]=0.8;
152 //setting my cut values
154 rdcutsvalmine[0][0]=0.7;
155 rdcutsvalmine[1][0]=0.04;
156 rdcutsvalmine[2][0]=0.8;
157 rdcutsvalmine[3][0]=0.5;
158 rdcutsvalmine[4][0]=0.5;
159 rdcutsvalmine[5][0]=0.05;
160 rdcutsvalmine[6][0]=0.05;
161 rdcutsvalmine[7][0]=-0.00025;
162 rdcutsvalmine[8][0]=0.7;
164 rdcutsvalmine[0][1]=rdcutsvalmine[0][2]=0.7;
165 rdcutsvalmine[1][1]=rdcutsvalmine[1][2]=0.02;
166 rdcutsvalmine[2][1]=rdcutsvalmine[2][2]=0.8;
167 rdcutsvalmine[3][1]=rdcutsvalmine[3][2]=0.7;
168 rdcutsvalmine[4][1]=rdcutsvalmine[4][2]=0.7;
169 rdcutsvalmine[5][1]=rdcutsvalmine[5][2]=1.;
170 rdcutsvalmine[6][1]=rdcutsvalmine[6][2]=1.;
171 rdcutsvalmine[7][1]=rdcutsvalmine[7][2]=-0.00025;
172 rdcutsvalmine[8][1]=rdcutsvalmine[8][2]=0.8;
174 rdcutsvalmine[0][3]=0.7;
175 rdcutsvalmine[1][3]=0.02;
176 rdcutsvalmine[2][3]=0.8;
177 rdcutsvalmine[3][3]=0.7;
178 rdcutsvalmine[4][3]=0.7;
179 rdcutsvalmine[5][3]=0.05;
180 rdcutsvalmine[6][3]=0.05;
181 rdcutsvalmine[7][3]=-0.00015;
182 rdcutsvalmine[8][3]=0.8;
184 rdcutsvalmine[0][4]=0.7;
185 rdcutsvalmine[1][4]=0.02;
186 rdcutsvalmine[2][4]=0.8;
187 rdcutsvalmine[3][4]=0.7;
188 rdcutsvalmine[4][4]=0.7;
189 rdcutsvalmine[5][4]=0.05;
190 rdcutsvalmine[6][4]=0.05;
191 rdcutsvalmine[7][4]=-0.00015;
192 rdcutsvalmine[8][4]=0.9;
194 cout<<"Filled array ("<<nvars<<","<<nptbins<<")"<<endl;
196 for(Int_t j=0;j<nvars;j++){
197 for(Int_t k=0;k<nptbins;k++){
198 cout<<rdcutsvalmine[j][k]<<"\t";
204 //cout<<"\tbefore SetCuts : npt = "<<RDHFD0toKpi->GetNPtBins()<<endl;
205 RDHFD0toKpi->SetCuts(nvars,nptbins,rdcutsvalmine);
206 RDHFD0toKpi->PrintAll();
209 TString taskname="MassAndDistrAnalysis";
210 if (flag==0)taskname.Prepend("D0");
211 else taskname.Prepend("LS");
212 AliAnalysisTaskSED0Mass *massD0Task = new AliAnalysisTaskSED0Mass(taskname.Data(),RDHFD0toKpi);
213 massD0Task->SetDebugLevel(0);
214 massD0Task->SetArray(flag);
215 massD0Task->SetReadMC(readMC);
216 massD0Task->SetCutOnDistr(cutOnDistr);
217 mgr->AddTask(massD0Task);
220 // Create containers for input/output
221 AliAnalysisDataContainer *cinputmassD0 = mgr->CreateContainer(inname,TChain::Class(),
222 AliAnalysisManager::kInputContainer);
224 AliAnalysisDataContainer *coutputmassD01 = mgr->CreateContainer(out1name,TList::Class(),AliAnalysisManager::kOutputContainer, filename.Data()); //mass
225 AliAnalysisDataContainer *coutputmassD02 = mgr->CreateContainer(out2name,TList::Class(),AliAnalysisManager::kOutputContainer, filename.Data()); //distr
226 AliAnalysisDataContainer *coutputmassD03 = mgr->CreateContainer(out3name,TH1F::Class(),AliAnalysisManager::kOutputContainer, filename.Data()); //nev
227 AliAnalysisDataContainer *coutputmassD04 = mgr->CreateContainer(out4name,TList::Class(),AliAnalysisManager::kOutputContainer, filename.Data()); //check
228 //AliAnalysisDataContainer *coutputmassD05 = mgr->CreateContainer(out5name,AliRDHFCutsD0toKpi::Class(),AliAnalysisManager::kParamContainer, filename.Data()); //cuts
229 AliAnalysisDataContainer *coutputmassD05 = mgr->CreateContainer(out5name,AliRDHFCutsD0toKpi::Class(),AliAnalysisManager::kOutputContainer, filename.Data()); //cuts
230 //AliAnalysisDataContainer *coutputmassD05 = mgr->CreateContainer(out5name,TList::Class(),AliAnalysisManager::kParamContainer, filename.Data()); //cuts
231 //AliAnalysisDataContainer *coutputmassD05 = mgr->CreateContainer(out5name,TList::Class(),AliAnalysisManager::kOutputContainer, filename.Data()); //cuts
234 mgr->ConnectInput(massD0Task,0,mgr->GetCommonInputContainer());
236 mgr->ConnectOutput(massD0Task,1,coutputmassD01);
237 mgr->ConnectOutput(massD0Task,2,coutputmassD02);
238 mgr->ConnectOutput(massD0Task,3,coutputmassD03);
239 mgr->ConnectOutput(massD0Task,4,coutputmassD04);
240 mgr->ConnectOutput(massD0Task,5,coutputmassD05);