AliPhysics  41af4b0 (41af4b0)
makeTFile4CutsLctopKpi.C
Go to the documentation of this file.
1 #include <Riostream.h>
2 #include <TFile.h>
3 #include <AliRDHFCutsLctopKpi.h>
4 #include <AliAODPidHF.h>
5 #include <TClonesArray.h>
6 #include <TParameter.h>
7 #include <TF1.h>
8 #include <TCanvas.h>
9 
10 
11 //Use:
12 //Set hard coded commentet with //set this!!
13 // root[] .L makeInput...C++
14 // root[] makeInputAliAnalysisTaskSE...()
15 //similar macros for the other D mesons
16 
17 //Author: Rosa Romita, r.romita@gsi.de
18 
19 
20 //macro to make a .root file which contains an AliRDHFCutsLctopKpi for AliAnalysisTaskSELambdac task
21 
22 void SetupCombinedPID(AliRDHFCutsLctopKpi *cutsObj,Double_t threshold,TString priorFileName="noferini-priors.root") {
23 
24  cutsObj->GetPidHF()->SetUseCombined(kTRUE);
25  cutsObj->GetPidHF()->SetPriorsHistos(priorFileName);
27  for (Int_t ispecies=0;ispecies<AliPID::kSPECIES;++ispecies)
28  cutsObj->SetPIDThreshold(static_cast<AliPID::EParticleType>(ispecies),threshold);
29 }
30 
31 
32 
34 
35  AliRDHFCutsLctopKpi* RDHFLctopKpiProd=new AliRDHFCutsLctopKpi();
36  RDHFLctopKpiProd->SetName("LctopKpiProdCuts");
37  RDHFLctopKpiProd->SetTitle("Production cuts for Lc analysis");
38 
39  AliRDHFCutsLctopKpi* RDHFLctopKpiAn=new AliRDHFCutsLctopKpi();
40  RDHFLctopKpiAn->SetName("LctopKpiAnalysisCuts");
41  RDHFLctopKpiAn->SetTitle("Analysis cuts for Lc analysis");
42 
43  AliESDtrackCuts* esdTrackCuts=new AliESDtrackCuts();
44  esdTrackCuts->SetRequireSigmaToVertex(kFALSE);
45  //default
46  esdTrackCuts->SetRequireTPCRefit(kTRUE);
47  esdTrackCuts->SetRequireITSRefit(kTRUE);
48  esdTrackCuts->SetMinNClustersITS(4); // default is 5
49  esdTrackCuts->SetMinNClustersTPC(70);
50  esdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,
51  AliESDtrackCuts::kAny);
52  // default is kBoth, otherwise kAny
53  esdTrackCuts->SetMinDCAToVertexXY(0.);
54  esdTrackCuts->SetPtRange(0.3,1.e10);
55 
56 
57  RDHFLctopKpiProd->AddTrackCuts(esdTrackCuts);
58  RDHFLctopKpiAn->AddTrackCuts(esdTrackCuts);
59 
60  const Int_t nvars=13;
61 
62  const Int_t nptbins=4;
63  Float_t* ptbins;
64  ptbins=new Float_t[nptbins+1];
65  ptbins[0]=0.;
66  ptbins[1]=2.;
67  ptbins[2]=3.;
68  ptbins[3]=4.;
69  ptbins[4]=12.;
70 
71 
72  Float_t** prodcutsval;
73  prodcutsval=new Float_t*[nvars];
74  for(Int_t iv=0;iv<nvars;iv++){
75  prodcutsval[iv]=new Float_t[nptbins];
76  }
77 
78  // inv. mass [GeV]
79  // pTK [GeV/c]
80  // pTPi [GeV/c]
81  // d0K [cm] lower limit!
82  // d0Pi [cm] lower limit!
83  // dist12 (cm)
84  // sigmavert (cm)
85  // dist prim-sec (cm)
86  // pM=Max{pT1,pT2,pT3} (GeV/c)
87  // cosThetaPoint
88  // Sum d0^2 (cm^2)
89  // dca cut (cm)
90  for(Int_t ipt=0;ipt<nptbins;ipt++){
91  prodcutsval[0][ipt]=0.18;
92  prodcutsval[1][ipt]=0.4;
93  prodcutsval[2][ipt]=0.5;
94  prodcutsval[3][ipt]=0.;
95  prodcutsval[4][ipt]=0.;
96  prodcutsval[5][ipt]=0.01;
97  prodcutsval[6][ipt]=0.06;
98  prodcutsval[7][ipt]=0.005;
99  prodcutsval[8][ipt]=0.7;
100  prodcutsval[9][ipt]=0.;
101  prodcutsval[10][ipt]=0.;
102  prodcutsval[11][ipt]=0.05;
103  prodcutsval[12][ipt]=0.4;
104  }
105 
106  RDHFLctopKpiProd->SetPtBins(nptbins+1,ptbins);
107  RDHFLctopKpiProd->SetCuts(nvars,nptbins,prodcutsval);
108 
109  Float_t** anacutsval;
110  anacutsval=new Float_t*[nvars];
111  for(Int_t ic=0;ic<nvars;ic++){anacutsval[ic]=new Float_t[nptbins];}
112  for(Int_t ipt2=0;ipt2<nptbins;ipt2++){
113  anacutsval[0][ipt2]=0.18;
114  anacutsval[1][ipt2]=0.4;
115  anacutsval[2][ipt2]=0.5;
116  anacutsval[3][ipt2]=0.;
117  anacutsval[4][ipt2]=0.;
118  anacutsval[5][ipt2]=0.01;
119  anacutsval[6][ipt2]=0.06;
120  anacutsval[7][ipt2]=0.005;
121  anacutsval[8][ipt2]=0.7;
122  anacutsval[9][ipt2]=0.;
123  anacutsval[10][ipt2]=0.;
124  anacutsval[11][ipt2]=0.05;
125  anacutsval[12][ipt2]=0.4;
126  }
127 
128  // pt kaon
129  anacutsval[1][0]=0.5;
130  anacutsval[1][1]=0.85;
131  anacutsval[1][2]=0.9;
132  anacutsval[1][3]=0.4;
133  //pt proton
134  anacutsval[2][0]=0.5;
135  anacutsval[2][1]=0.6;
136  anacutsval[2][2]=0.9;
137  anacutsval[2][3]=0.9;
138 
139  //pt pion
140  anacutsval[12][0]=0.475;
141  anacutsval[12][1]=0.75;
142  anacutsval[12][2]=0.75;
143  anacutsval[12][3]=0.7;
144 
145  anacutsval[5][0]=0.02;
146  anacutsval[5][1]=0.025;
147  anacutsval[5][2]=0.02;
148  anacutsval[5][3]=0.01;
149 
150  anacutsval[7][0]=0.00625;
151  anacutsval[7][1]=0.0125;
152  anacutsval[7][2]=0.005;
153  anacutsval[7][3]=0.007;
154 
155  anacutsval[9][0]=0.5;
156  anacutsval[9][1]=0.2;
157  anacutsval[9][2]=0.6;
158  anacutsval[9][3]=0.;
159 
160  anacutsval[10][0]=0.00125;
161 
162  RDHFLctopKpiAn->SetPtBins(nptbins+1,ptbins);
163  RDHFLctopKpiAn->SetCuts(nvars,nptbins,anacutsval);
164 
165  // RDHFLc->SetRecoKF(); //set this if you want to recompute the secondary vertex with the KF package
166  //pid settings
167  //1. kaon: default one
168  AliAODPidHF* pidObjK=new AliAODPidHF();
169  Double_t sigmasK[5]={3.,1.,1.,3.,2.};
170  pidObjK->SetSigma(sigmasK);
171  pidObjK->SetAsym(kTRUE);
172  pidObjK->SetMatch(1);
173  pidObjK->SetTPC(kTRUE);
174  pidObjK->SetTOF(kTRUE);
175  Double_t plimK[2]={0.5,0.8};
176  pidObjK->SetPLimit(plimK,2);
177  pidObjK->SetTOFdecide(kTRUE);
178 
179  RDHFLctopKpiProd->SetPidHF(pidObjK);
180  RDHFLctopKpiAn->SetPidHF(pidObjK);
181 
182  //2. pion
183  AliAODPidHF* pidObjpi=new AliAODPidHF();
184  pidObjpi->SetTPC(kTRUE);
185  Double_t sigmaspi[5]={3.,0.,0.,0.,0.};
186  pidObjpi->SetSigma(sigmaspi);
187 // pidObjpi->SetTOFdecide(kTRUE);
188 
189  RDHFLctopKpiProd->SetPidpion(pidObjpi);
190  RDHFLctopKpiAn->SetPidpion(pidObjpi);
191 
192  // 3. proton
193  AliAODPidHF* pidObjp=new AliAODPidHF();
194  Double_t sigmasp[5]={3.,1.,1.,3.,2.};
195  pidObjp->SetSigma(sigmasp);
196  pidObjp->SetAsym(kTRUE);
197  pidObjp->SetMatch(1);
198  pidObjp->SetTPC(kTRUE);
199  pidObjp->SetTOF(kTRUE);
200  Double_t plimp[2]={1.,2.};
201  pidObjp->SetPLimit(plimp,2);
202  pidObjp->SetTOFdecide(kTRUE);
203 
204  RDHFLctopKpiProd->SetPidprot(pidObjp);
205  RDHFLctopKpiAn->SetPidprot(pidObjp);
206 
207  // uncomment these lines for Baysian PID:
208  Double_t threshold=0.3;
209  SetupCombinedPID(RDHFLctopKpiAn ,threshold);
210  SetupCombinedPID(RDHFLctopKpiProd,threshold);
213 
214 
215  AliPIDCombined *pid=RDHFLctopKpiAn->GetPidHF()->GetPidCombined();
216  TH1* hplot=pid->GetPriorDistribution(static_cast<AliPID::EParticleType>(3));
217  TCanvas *c1=new TCanvas();
218  hplot->Draw();
219  //
220 
221 
222  //uncomment these lines to apply cuts with the KF package
223  //RDHFLctopKpiAn ->SetCutsStrategy(AliRDHFCutsLctopKpi::kKF);
224  //RDHFLctopKpiProd->SetCutsStrategy(AliRDHFCutsLctopKpi::kKF);
225  //for(Int_t ipt2=0;ipt2<nptbins;ipt2++){
226  // anacutsval[0][ipt2]=1.; //if <0., no topological constraint
227  // anacutsval[1][ipt2]=2.; //cut on the Chi2/Ndf
228  // prodcutsval[0][ipt2]=1.; //if <0., no topological constraint
229  // prodcutsval[1][ipt2]=2.; //cut on the Chi2/Ndf
230  // }
231 
232  Bool_t pidflag=kTRUE;
233  RDHFLctopKpiAn->SetUsePID(pidflag);
234  RDHFLctopKpiProd->SetUsePID(pidflag);
235  if(pidflag) cout<<"PID is used"<<endl;
236  else cout<<"PID is not used"<<endl;
237 
238  cout<<"This is the object I'm going to save:"<<endl;
239  RDHFLctopKpiProd->PrintAll();
240  RDHFLctopKpiAn->PrintAll();
241  TFile* fout=new TFile("prova.root","RECREATE");
242  fout->cd();
243  RDHFLctopKpiProd->Write();
244  RDHFLctopKpiAn->Write();
245  fout->Close();
246  delete fout;
247  delete pidObjp;
248  delete pidObjpi;
249  delete pidObjK;
250  delete RDHFLctopKpiProd;
251  delete RDHFLctopKpiAn;
252 
253 }
254 
255 
256 //macro to make a .root file (for significance maximization) which contains an AliRDHFCutsLctopKpi with loose set of cuts and TParameter with the tighest value of these cuts
257 
259 
260  AliRDHFCutsLctopKpi* RDHFLctopKpi=new AliRDHFCutsLctopKpi();
261  RDHFLctopKpi->SetName("loosercuts");
262  RDHFLctopKpi->SetTitle("Cuts for significance maximization");
263 
264  AliESDtrackCuts* esdTrackCuts=new AliESDtrackCuts();
265  esdTrackCuts->SetRequireSigmaToVertex(kFALSE);
266  //default
267  esdTrackCuts->SetRequireTPCRefit(kTRUE);
268  esdTrackCuts->SetMinNClustersTPC(70);
269  esdTrackCuts->SetRequireITSRefit(kTRUE);
270  esdTrackCuts->SetMinNClustersITS(4);
271 
272  esdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kAny);
273  esdTrackCuts->SetMinDCAToVertexXY(0.);
274  esdTrackCuts->SetEtaRange(-0.8,0.8);
275  esdTrackCuts->SetPtRange(0.3,1.e10);
276 
277  RDHFLctopKpi->AddTrackCuts(esdTrackCuts);
278 
279  const Int_t nvars=13;
280 
281  const Int_t nptbins=4; //change this when adding pt bins!
282  Float_t ptbins[nptbins+1];
283  ptbins[0]=0.;
284  ptbins[1]=2.;
285  ptbins[2]=3.;
286  ptbins[3]=4.;
287  ptbins[4]=12.;
288 
289  RDHFLctopKpi->SetPtBins(nptbins+1,ptbins);
290 
291  Float_t** rdcutsvalmine;
292  rdcutsvalmine=new Float_t*[nvars];
293  for(Int_t iv=0;iv<nvars;iv++){
294  rdcutsvalmine[iv]=new Float_t[nptbins];
295  }
296 
297  //setting my cut values
298  // inv. mass [GeV]
299  // pTK [GeV/c]
300  // pTP [GeV/c]
301  // d0K [cm] lower limit!
302  // d0Pi [cm] lower limit!
303  // dist12 (cm)
304  // sigmavert (cm)
305  // dist prim-sec (cm)
306  // pM=Max{pT1,pT2,pT3} (GeV/c)
307  // cosThetaPoint
308  // Sum d0^2 (cm^2)
309  // dca cut (cm)
310  // pt pion
311  Float_t cutsMatrixLctopKpiStand[nptbins][nvars]=
312  {{0.18,0.4,0.5,0.,0.,0.01,0.06,0.005,0.7,0.,0.,0.05,0.4},
313  {0.18,0.4,0.5,0.,0.,0.01,0.06,0.005,0.7,0.,0.,0.05,0.4},
314  {0.18,0.4,0.5,0.,0.,0.01,0.06,0.005,0.7,0.,0.,0.05,0.4},
315  {0.18,0.4,0.5,0.,0.,0.01,0.06,0.005,0.7,0.,0.,0.05,0.4}};
316 
317  //CREATE TRANSPOSE MATRIX...REVERSE INDICES as required by AliRDHFCuts
318  Float_t **cutsMatrixTransposeStand=new Float_t*[nvars];
319  for(Int_t iv=0;iv<nvars;iv++)cutsMatrixTransposeStand[iv]=new Float_t[nptbins];
320  for (Int_t ibin=0;ibin<nptbins;ibin++){
321  for (Int_t ivar = 0; ivar<nvars; ivar++){
322  cutsMatrixTransposeStand[ivar][ibin]=cutsMatrixLctopKpiStand[ibin][ivar];
323  }
324  }
325  RDHFLctopKpi->SetCuts(nvars,nptbins,cutsMatrixTransposeStand);
326 
327 
328  Int_t nvarsforopt=RDHFLctopKpi->GetNVarsForOpt();
329  Int_t dim=4; //set this!!
330  Bool_t *boolforopt;
331  boolforopt=new Bool_t[nvars];
332  if(dim>nvarsforopt){
333  cout<<"Number of variables for optimization has probably changed, check and edit accordingly"<<endl;
334  return;
335  } else {
336  if(dim==nvarsforopt){
337  boolforopt=RDHFLctopKpi->GetVarsForOpt();
338  }else{
339  TString *names;
340  names=new TString[nvars];
341  TString answer="";
342  Int_t checktrue=0;
343  names=RDHFLctopKpi->GetVarNames();
344  for(Int_t i=0;i<nvars;i++){
345  cout<<names[i]<<" for opt? (y/n)"<<endl;
346  cin>>answer;
347  if(answer=="y") {
348  boolforopt[i]=kTRUE;
349  checktrue++;
350  }
351  else boolforopt[i]=kFALSE;
352  }
353  if (checktrue!=dim) {
354  cout<<"Error! You set "<<checktrue<<" kTRUE instead of "<<dim<<endl;
355  return;
356  }
357  RDHFLctopKpi->SetVarsForOpt(dim,boolforopt);
358  }
359  }
360 
361 
362  Float_t tighterval[dim][nptbins];
363  // 5 dist12 (cm) <---
364  // 7 dist prim-sec (cm) <---
365  // 9 cosThetaPoint <---
366  // 10 Sum d0^2 (cm^2) <---
367  // 11 dca cut (cm)
368  // {0.18,0.4,0.5,0.,0.,0.01 <--- ,0.06,0.005 <--- ,0.7,0. <--- ,0. <--- ,0.05 }
369 
370  //number of steps for each variable is set in the AddTask arguments (default=8)
371  //set this!!
372  for(Int_t ipt=0;ipt<nptbins;ipt++){
373  tighterval[0][ipt]=0.03;
374  tighterval[1][ipt]=0.02;
375  tighterval[2][ipt]=1.;
376  tighterval[3][ipt]=0.01;
377  }
378 
379 
380 
381  TString name="";
382  Int_t arrdim=dim*nptbins;
383  cout<<"Will save "<<arrdim<<" TParameter<float>"<<endl;
384  TClonesArray max("TParameter<float>",arrdim);
385  for(Int_t ival=0;ival<dim;ival++){
386  for(Int_t jpt=0;jpt<nptbins;jpt++){
387  name=Form("par%dptbin%d",ival,jpt);
388  cout<<"Setting "<<name.Data()<<" to "<<tighterval[ival][jpt]<<endl;
389  new(max[jpt*dim+ival])TParameter<float>(name.Data(),tighterval[ival][jpt]);
390  }
391  }
392 
393  Bool_t flagPID=kFALSE;
394  RDHFLctopKpi->SetUsePID(flagPID);
395 
396  RDHFLctopKpi->PrintAll();
397  printf("Use PID? %s\n",flagPID ? "yes" : "no");
398 
399  //pid settings
400  //1. kaon: default one
401  AliAODPidHF* pidObjK=new AliAODPidHF();
402  Double_t sigmasK[5]={3.,1.,1.,3.,2.};
403  pidObjK->SetSigma(sigmasK);
404  pidObjK->SetAsym(kTRUE);
405  pidObjK->SetMatch(1);
406  pidObjK->SetTPC(kTRUE);
407  pidObjK->SetTOF(kTRUE);
408  pidObjK->SetITS(kTRUE);
409  Double_t plimK[2]={0.5,0.8};
410  pidObjK->SetPLimit(plimK,2);
411  pidObjK->SetTOFdecide(kTRUE);
412 
413  RDHFLctopKpi->SetPidHF(pidObjK);
414 
415  //2. pion
416  AliAODPidHF* pidObjpi=new AliAODPidHF();
417  pidObjpi->SetTPC(kTRUE);
418  Double_t sigmaspi[5]={3.,0.,0.,0.,0.};
419  pidObjpi->SetSigma(sigmaspi);
420  pidObjpi->SetTOFdecide(kTRUE);
421 
422  RDHFLctopKpi->SetPidpion(pidObjpi);
423 
424  // 3. proton
425  AliAODPidHF* pidObjp=new AliAODPidHF();
426  Double_t sigmasp[5]={3.,1.,1.,3.,2.};
427  pidObjp->SetSigma(sigmasp);
428  pidObjp->SetAsym(kTRUE);
429  pidObjp->SetMatch(1);
430  pidObjp->SetTPC(kTRUE);
431  pidObjp->SetTOF(kTRUE);
432  pidObjp->SetITS(kTRUE);
433  Double_t plimp[2]={1.,2.};
434  pidObjp->SetPLimit(plimp,2);
435  pidObjp->SetTOFdecide(kTRUE);
436 
437  RDHFLctopKpi->SetPidprot(pidObjp);
438 
439  //activate pileup rejection (for pp)
440  //RDHFLctopKpi->SetOptPileup(AliRDHFCuts::kRejectPileupEvent);
441 
442  //Do not recalculate the vertex
443  RDHFLctopKpi->SetRemoveDaughtersFromPrim(kFALSE); //activate for pp
444 
445  TString cent="";
446  //centrality selection (Pb-Pb)
447  Float_t minc=20,maxc=80;
448  RDHFLctopKpi->SetMinCentrality(minc);
449  RDHFLctopKpi->SetMaxCentrality(maxc);
450  cent=Form("%.0f%.0f",minc,maxc);
451  // RDHFLctopKpi->SetUseCentrality(AliRDHFCuts::kCentV0M); //kCentOff,kCentV0M,kCentTRK,kCentTKL,kCentCL1,kCentInvalid
452  RDHFLctopKpi->SetUseCentrality(AliRDHFCuts::kCentOff); //kCentOff,kCentV0M,kCentTRK,kCentTKL,kCentCL1,kCentInvalid
453 
454  //temporary
455  // RDHFLctopKpi->SetFixRefs();
456 
457  TFile* fout=new TFile(Form("cuts4SignifMaxim%s%s%sRecVtx%sPileupRej.root", RDHFLctopKpi->GetUseCentrality()==0 ? "pp" : "PbPb",cent.Data(),RDHFLctopKpi->GetIsPrimaryWithoutDaughters() ? "" : "No",RDHFLctopKpi->GetOptPileUp() ? "" : "No"),"recreate"); //set this!!
458 
459  fout->cd();
460  RDHFLctopKpi->Write();
461  max.Write();
462  fout->Close();
463 
464 }
465 
void SetPriorsHistos(TString priorFileName)
void SetAsym(Bool_t asym)
Definition: AliAODPidHF.h:88
double Double_t
Definition: External.C:58
Bool_t GetOptPileUp() const
Definition: AliRDHFCuts.h:279
void SetUseCentrality(Int_t flag=1)
void SetPidpion(AliAODPidHF *pidPion)
TString * GetVarNames() const
Definition: AliRDHFCuts.h:251
void SetPidHF(AliAODPidHF *pidObj)
see enum below
Definition: AliRDHFCuts.h:215
AliAODPidHF * GetPidHF() const
Definition: AliRDHFCuts.h:247
void SetTOF(Bool_t tof)
Definition: AliAODPidHF.h:95
void SetUseCombined(Bool_t useCombined=kTRUE)
Definition: AliAODPidHF.h:200
void makeInputAliAnalysisTaskSESignificanceMaximization()
void SetCombDetectors(ECombDetectors pidComb)
Definition: AliAODPidHF.h:112
void SetPidprot(AliAODPidHF *pidProt)
int Int_t
Definition: External.C:63
void SetCuts(Int_t nVars, Int_t nPtBins, Float_t **cutsRD)
void SetMinCentrality(Float_t minCentrality=0.)
Definition: AliRDHFCuts.h:51
AliPIDCombined * GetPidCombined() const
Definition: AliAODPidHF.h:161
float Float_t
Definition: External.C:68
void SetupCombinedPID(AliRDHFCutsLctopKpi *cutsObj, Double_t threshold, TString priorFileName="noferini-priors.root")
Bool_t * GetVarsForOpt() const
Definition: AliRDHFCuts.h:252
Int_t GetNVarsForOpt() const
Definition: AliRDHFCuts.h:253
void SetSigma(Double_t *sigma)
Definition: AliAODPidHF.h:39
void SetMaxCentrality(Float_t maxCentrality=100.)
Definition: AliRDHFCuts.h:52
void SetVarsForOpt(Int_t nVars, Bool_t *forOpt)
Bool_t GetIsPrimaryWithoutDaughters() const
Definition: AliRDHFCuts.h:278
void SetUsePID(Bool_t flag=kTRUE)
Definition: AliRDHFCuts.h:209
virtual void PrintAll() const
void SetRemoveDaughtersFromPrim(Bool_t removeDaughtersPrim)
Definition: AliRDHFCuts.h:219
void SetPtBins(Int_t nPtBinLimits, Float_t *ptBinLimits)
void SetITS(Bool_t its)
Definition: AliAODPidHF.h:96
void SetPIDStrategy(EPIDStrategy pidStrategy)
void SetTOFdecide(Bool_t tOFdecide)
Definition: AliAODPidHF.h:107
void SetMatch(Int_t match)
Definition: AliAODPidHF.h:98
void AddTrackCuts(const AliESDtrackCuts *cuts)
Definition: AliRDHFCuts.h:207
void SetPLimit(Double_t *plim, Int_t npLim)
void SetTPC(Bool_t tpc)
Definition: AliAODPidHF.h:94
bool Bool_t
Definition: External.C:53
TFile * fout
input train file
void SetPIDThreshold(AliPID::EParticleType species, Double_t threshold)
Int_t GetUseCentrality() const
Definition: AliRDHFCuts.h:280
Int_t nptbins
Definition: External.C:196
void makeInputAliAnalysisTaskSELctopKpi()