-#include <Riostream.h>\r
-#include <TFile.h>\r
-//#include <AliRDHFCutsDstoKKpi.h>\r
-#include <TClonesArray.h>\r
-#include <TParameter.h>\r
-\r
-//macro to make a .root file which contains an AliRDHFCutsDstoKKpi with loose set of cuts (for significance maximization) and TParameter with the tighest value of these cuts\r
-//Needed for AliAnalysisTaskSEDs, AliCFTaskVertexingHF3Prong, AliAnalysisTaskSESignificance\r
-\r
-//Use:\r
-//Set hard coded commented with //set this!!\r
-\r
-//.L makeTFile4CutsDstoKKpi.C\r
-// makeInputAliAnalysisTaskSEDs()\r
-// makeInputAliAnalysisTaskSESignificanceMaximization()\r
-\r
-//similar macros for the other D mesons\r
-\r
-//Author: Chiara Bianchin, cbianchi@pd.infn.it\r
-// Giacomo Ortona, ortona@to.infn.it\r
-// Renu Bala [Dplus Analysis and CF]\r
-\r
-//Modified for Ds meson: G.M. Innocenti, innocent@to.infn.it\r
-\r
-void makeInputAliAnalysisTaskSEDsPP(){\r
-\r
- // gSystem->SetIncludePath("-I. -I$ROOTSYS/include -I$ALICE_ROOT -I$ALICE_ROOT/include -I$ALICE_ROOT/ITS -I$ALICE_ROOT/TPC -I$ALICE_ROOT/CONTAINERS -I$ALICE_ROOT/STEER -I$ALICE_ROOT/TRD -I$ALICE_ROOT/macros -I$ALICE_ROOT/ANALYSIS -I$ALICE_ROOT/PWG3 -I$ALICE_ROOT/PWG3/vertexingHF -I$ALICE_ROOT/PWG3/vertexingH/macros -g"); \r
-\r
- \r
- AliESDtrackCuts* esdTrackCuts=new AliESDtrackCuts();\r
- esdTrackCuts->SetRequireSigmaToVertex(kFALSE);\r
- //default\r
- esdTrackCuts->SetRequireTPCRefit(kTRUE);\r
- esdTrackCuts->SetRequireITSRefit(kTRUE);\r
- //esdTrackCuts->SetMinNClustersITS(4); // default is 5\r
- esdTrackCuts->SetMinNClustersTPC(70);\r
- esdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,\r
- AliESDtrackCuts::kAny); \r
- // default is kBoth, otherwise kAny\r
- esdTrackCuts->SetMinDCAToVertexXY(0.);\r
- esdTrackCuts->SetPtRange(0.3,1.e10);\r
- \r
- \r
- const Int_t nptbins=4;\r
- Float_t* ptbins;\r
- ptbins=new Float_t[nptbins+1];\r
- ptbins[0]=2.;\r
- ptbins[1]=4.;\r
- ptbins[2]=6.;\r
- ptbins[3]=8.;\r
- ptbins[4]=12.;\r
- \r
- \r
- const Int_t nvars=16;\r
- \r
- Float_t** prodcutsval;\r
- prodcutsval=new Float_t*[nvars];\r
- for(Int_t ic=0;ic<nvars;ic++){prodcutsval[ic]=new Float_t[nptbins];} \r
- for(Int_t ipt=0;ipt<nptbins;ipt++){\r
- prodcutsval[0][ipt]=0.35;\r
- prodcutsval[1][ipt]=0.3;\r
- prodcutsval[2][ipt]=0.3;\r
- prodcutsval[3][ipt]=0.;\r
- prodcutsval[4][ipt]=0.;\r
- prodcutsval[5][ipt]=0.005;\r
- prodcutsval[6][ipt]=0.06;\r
- prodcutsval[7][ipt]=0.0;\r
- prodcutsval[8][ipt]=0.;\r
- prodcutsval[9][ipt]=0.7;\r
- prodcutsval[10][ipt]=0.;\r
- prodcutsval[11][ipt]=1000.0;\r
- prodcutsval[12][ipt]=0.1;\r
- prodcutsval[13][ipt]=0.1;\r
- prodcutsval[14][ipt]=0.;\r
- prodcutsval[15][ipt]=1.;\r
- \r
- }\r
- \r
- \r
- Float_t** anacutsval;\r
- anacutsval=new Float_t*[nvars];\r
- \r
- for(Int_t ic=0;ic<nvars;ic++){anacutsval[ic]=new Float_t[nptbins];} \r
- for(Int_t ipt=0;ipt<nptbins;ipt++){\r
- \r
- anacutsval[0][ipt]=0.35;\r
- anacutsval[1][ipt]=0.3;\r
- anacutsval[2][ipt]=0.3;\r
- anacutsval[3][ipt]=0.;\r
- anacutsval[4][ipt]=0.;\r
- anacutsval[5][ipt]=0.005;\r
- anacutsval[6][ipt]=0.06;\r
- anacutsval[7][ipt]=0.0;\r
- anacutsval[8][ipt]=0.;\r
- anacutsval[9][ipt]=0.9;\r
- anacutsval[10][ipt]=0.;\r
- anacutsval[11][ipt]=1000.0;\r
- anacutsval[12][ipt]=0.015;\r
- anacutsval[13][ipt]=0.1;\r
- anacutsval[14][ipt]=0.;\r
- anacutsval[15][ipt]=1.;\r
- \r
- \r
- }\r
- \r
- \r
- \r
- /* \r
- \r
- Cut list rejection condition\r
- 0 "inv. mass [GeV]", invmassDS-massDspdg>fCutsRD\r
- 1 "pTK [GeV/c]", pTK<fCutsRd\r
- 2 "pTPi [GeV/c]", pTPi<fCutsRd\r
- 3 "d0K [cm]", d0K<fCutsRd\r
- 4 "d0Pi [cm]", d0Pi<fCutsRd\r
- 5 "dist12 [cm]", dist12<fCutsRd\r
- 6 "sigmavert [cm]", sigmavert>fCutsRd\r
- 7 "decLen [cm]", decLen<fCutsRD\r
- 8 "ptMax [GeV/c]", ptMax<fCutsRD\r
- 9 "cosThetaPoint", CosThetaPoint<fCutsRD\r
- 10 "Sum d0^2 (cm^2)", sumd0<fCutsRD\r
- 11 "dca [cm]", dca(i)>fCutsRD\r
- 12 "inv. mass (Mphi-MKK) [GeV]", invmass-pdg>fCutsRD\r
- 13 "inv. mass (MKo*-MKpi) [GeV]"}; invmass-pdg>fCutsRD\r
- 14 "Abs(CosineKpiPhiRFrame)^3",\r
- 15 "CosPiDsLabFrame"};\r
- */\r
- \r
- AliRDHFCutsDstoKKpi *prodcuts = new AliRDHFCutsDstoKKpi();\r
- prodcuts->SetName("ProdCuts");\r
- prodcuts->SetPtBins(nptbins+1,ptbins);\r
- prodcuts->SetCuts(nvars,nptbins,prodcutsval);\r
- \r
- \r
- AliRDHFCutsDstoKKpi* analysiscuts=new AliRDHFCutsDstoKKpi();\r
- analysiscuts->SetName("AnalysisCuts");\r
- analysiscuts->SetTitle("Cuts for Ds Analysis and CF");\r
- analysiscuts->SetPtBins(nptbins+1,ptbins);\r
- analysiscuts->SetCuts(nvars,nptbins,anacutsval);\r
- analysiscuts->AddTrackCuts(esdTrackCuts);\r
- analysiscuts->SetUsePID(kTRUE);\r
- analysiscuts->SetPidOption(1);\r
- analysiscuts->SetOptPileup(kTRUE);\r
- analysiscuts->SetRemoveDaughtersFromPrim(kTRUE);\r
- cout<<"This is the odject I'm going to save:"<<nptbins<<endl;\r
- \r
- analysiscuts->PrintAll();\r
- TFile* fout=new TFile("DstoKKpiCuts.root","recreate"); \r
- fout->cd();\r
- prodcuts->Write();\r
- analysiscuts->Write();\r
- fout->Close();\r
- \r
- \r
-}\r
-\r
-\r
-void makeInputAliAnalysisTaskSEDsPbPb(){\r
-\r
- // gSystem->SetIncludePath("-I. -I$ROOTSYS/include -I$ALICE_ROOT -I$ALICE_ROOT/include -I$ALICE_ROOT/ITS -I$ALICE_ROOT/TPC -I$ALICE_ROOT/CONTAINERS -I$ALICE_ROOT/STEER -I$ALICE_ROOT/TRD -I$ALICE_ROOT/macros -I$ALICE_ROOT/ANALYSIS -I$ALICE_ROOT/PWG3 -I$ALICE_ROOT/PWG3/vertexingHF -I$ALICE_ROOT/PWG3/vertexingH/macros -g"); \r
-\r
- \r
- AliESDtrackCuts* esdTrackCuts=new AliESDtrackCuts();\r
- esdTrackCuts->SetRequireSigmaToVertex(kFALSE);\r
- //default\r
- esdTrackCuts->SetRequireTPCRefit(kTRUE);\r
- esdTrackCuts->SetRequireITSRefit(kTRUE);\r
- //esdTrackCuts->SetMinNClustersITS(4); // default is 5\r
- esdTrackCuts->SetMinNClustersTPC(70);\r
- esdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,\r
- AliESDtrackCuts::kAny); \r
- // default is kBoth, otherwise kAny\r
- esdTrackCuts->SetMinDCAToVertexXY(0.);\r
- esdTrackCuts->SetPtRange(0.7,1.e10);\r
- \r
- \r
- const Int_t nptbins=4;\r
- Float_t* ptbins;\r
- ptbins=new Float_t[nptbins+1];\r
- ptbins[0]=2.;\r
- ptbins[1]=4.;\r
- ptbins[2]=6.;\r
- ptbins[3]=8.;\r
- ptbins[4]=12.;\r
- \r
- \r
- const Int_t nvars=16;\r
- \r
- Float_t** prodcutsval;\r
- prodcutsval=new Float_t*[nvars];\r
- for(Int_t ic=0;ic<nvars;ic++){prodcutsval[ic]=new Float_t[nptbins];} \r
- for(Int_t ipt=0;ipt<nptbins;ipt++){\r
- prodcutsval[0][ipt]=0.35;\r
- prodcutsval[1][ipt]=0.3;\r
- prodcutsval[2][ipt]=0.3;\r
- prodcutsval[3][ipt]=0.;\r
- prodcutsval[4][ipt]=0.;\r
- prodcutsval[5][ipt]=0.005;\r
- prodcutsval[6][ipt]=0.06;\r
- prodcutsval[7][ipt]=0.0;\r
- prodcutsval[8][ipt]=0.;\r
- prodcutsval[9][ipt]=0.90;\r
- prodcutsval[10][ipt]=0.;\r
- prodcutsval[11][ipt]=1000.0;\r
- prodcutsval[12][ipt]=0.1;\r
- prodcutsval[13][ipt]=0.1;\r
- prodcutsval[14][ipt]=0.;\r
- prodcutsval[15][ipt]=1.;\r
- \r
- }\r
- \r
- \r
- Float_t** anacutsval;\r
- anacutsval=new Float_t*[nvars];\r
- \r
- for(Int_t ic=0;ic<nvars;ic++){anacutsval[ic]=new Float_t[nptbins];} \r
- for(Int_t ipt=0;ipt<nptbins;ipt++){\r
- \r
- anacutsval[0][ipt]=0.35;\r
- anacutsval[1][ipt]=0.3;\r
- anacutsval[2][ipt]=0.3;\r
- anacutsval[3][ipt]=0.;\r
- anacutsval[4][ipt]=0.;\r
- anacutsval[5][ipt]=0.005;\r
- anacutsval[6][ipt]=0.06;\r
- anacutsval[7][ipt]=0.0;\r
- anacutsval[8][ipt]=0.;\r
- anacutsval[9][ipt]=0.90;\r
- anacutsval[10][ipt]=0.;\r
- anacutsval[11][ipt]=1000.0;\r
- anacutsval[12][ipt]=0.015;\r
- anacutsval[13][ipt]=0.1;\r
- anacutsval[14][ipt]=0.;\r
- anacutsval[15][ipt]=1.;\r
- \r
- \r
- }\r
- \r
- \r
- \r
- /* \r
- \r
- Cut list rejection condition\r
- 0 "inv. mass [GeV]", invmassDS-massDspdg>fCutsRD\r
- 1 "pTK [GeV/c]", pTK<fCutsRd\r
- 2 "pTPi [GeV/c]", pTPi<fCutsRd\r
- 3 "d0K [cm]", d0K<fCutsRd\r
- 4 "d0Pi [cm]", d0Pi<fCutsRd\r
- 5 "dist12 [cm]", dist12<fCutsRd\r
- 6 "sigmavert [cm]", sigmavert>fCutsRd\r
- 7 "decLen [cm]", decLen<fCutsRD\r
- 8 "ptMax [GeV/c]", ptMax<fCutsRD\r
- 9 "cosThetaPoint", CosThetaPoint<fCutsRD\r
- 10 "Sum d0^2 (cm^2)", sumd0<fCutsRD\r
- 11 "dca [cm]", dca(i)>fCutsRD\r
- 12 "inv. mass (Mphi-MKK) [GeV]", invmass-pdg>fCutsRD\r
- 13 "inv. mass (MKo*-MKpi) [GeV]"}; invmass-pdg>fCutsRD\r
- 14 "Abs(CosineKpiPhiRFrame)^3",\r
- 15 "CosPiDsLabFrame"};\r
- */\r
- \r
- AliRDHFCutsDstoKKpi *prodcuts = new AliRDHFCutsDstoKKpi();\r
- prodcuts->SetName("ProdCuts");\r
- prodcuts->SetPtBins(nptbins+1,ptbins);\r
- prodcuts->SetCuts(nvars,nptbins,prodcutsval);\r
- \r
- AliRDHFCutsDstoKKpi* analysiscuts=new AliRDHFCutsDstoKKpi();\r
- analysiscuts->SetName("AnalysisCuts");\r
- analysiscuts->SetTitle("Cuts for Ds Analysis and CF");\r
- analysiscuts->SetPtBins(nptbins+1,ptbins);\r
- analysiscuts->SetCuts(nvars,nptbins,anacutsval);\r
- analysiscuts->AddTrackCuts(esdTrackCuts);\r
- \r
- TString cent="";\r
- Float_t mincen=20.;\r
- Float_t maxcen=40.;\r
- \r
- analysiscuts->SetUsePID(kTRUE);\r
- analysiscuts->SetPidOption(1);\r
- //analysiscuts->SetUseImpParProdCorrCut(kFALSE);\r
- analysiscuts->SetOptPileup(kFALSE);\r
- //analysiscuts->SetUseAOD049(kTRUE);\r
- analysiscuts->SetMinCentrality(mincen);\r
- analysiscuts->SetMaxCentrality(maxcen);\r
- cent=Form("%.0f%.0f",mincen,maxcen);\r
- analysiscuts->SetUseCentrality(AliRDHFCuts::kCentV0M); //kCentOff,kCentV0M,kCentTRK,kCentTKL,kCentCL1,kCentInvalid \r
- analysiscuts->SetMinPtCandidate(3.);\r
- analysiscuts->SetMaxPtCandidate(1000.);\r
- analysiscuts->SetRemoveDaughtersFromPrim(kFALSE);\r
- \r
- cout<<"This is the odject I'm going to save:"<<nptbins<<endl;\r
- \r
- analysiscuts->PrintAll();\r
- TFile* fout=new TFile("DstoKKpiCuts.root","recreate"); \r
- fout->cd();\r
- prodcuts->Write();\r
- analysiscuts->Write();\r
- fout->Close();\r
- \r
- \r
-}\r
-\r
-\r
-void makeInputAliAnalysisTaskSESignificanceMaximization(){\r
- \r
- AliESDtrackCuts* esdTrackCuts=new AliESDtrackCuts();\r
- esdTrackCuts->SetRequireSigmaToVertex(kFALSE);\r
- //default\r
- esdTrackCuts->SetRequireTPCRefit(kTRUE);\r
- esdTrackCuts->SetRequireITSRefit(kTRUE);\r
- //esdTrackCuts->SetMinNClustersITS(4); // default is 5\r
- esdTrackCuts->SetMinNClustersTPC(70);\r
- esdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,\r
- AliESDtrackCuts::kAny); \r
- // default is kBoth, otherwise kAny\r
- esdTrackCuts->SetMinDCAToVertexXY(0.);\r
- esdTrackCuts->SetPtRange(0.3,1.e10);\r
- \r
- \r
- \r
- AliRDHFCutsDstoKKpi* RDHFDstoKKpi=new AliRDHFCutsDstoKKpi();\r
- RDHFDstoKKpi->SetName("loosercuts");\r
- RDHFDstoKKpi->SetTitle("Cuts for significance maximization");\r
- RDHFDstoKKpi->AddTrackCuts(esdTrackCuts);\r
- RDHFDstoKKpi->SetUsePID(kTRUE);\r
- RDHFDstoKKpi->SetPidOption(1);\r
- RDHFDstoKKpi->SetOptPileup(kTRUE);\r
- RDHFDstoKKpi->SetRemoveDaughtersFromPrim(kTRUE);\r
-\r
- const Int_t nvars=16;\r
-\r
- const Int_t nptbins=4;\r
- Float_t* ptbins;\r
- ptbins=new Float_t[nptbins+1];\r
- ptbins[0]=2.;\r
- ptbins[1]=4.;\r
- ptbins[2]=6.;\r
- ptbins[3]=8.;\r
- ptbins[4]=12.;\r
- \r
- RDHFDstoKKpi->SetPtBins(nptbins+1,ptbins);\r
- \r
- //setting my cut values\r
- \r
- Float_t** prodcutsval;\r
- prodcutsval=new Float_t*[nvars];\r
- for(Int_t ic=0;ic<nvars;ic++){prodcutsval[ic]=new Float_t[nptbins];} \r
- for(Int_t ipt=0;ipt<nptbins;ipt++){\r
- \r
- prodcutsval[0][ipt]=0.35;\r
- prodcutsval[1][ipt]=0.3;\r
- prodcutsval[2][ipt]=0.3;\r
- prodcutsval[3][ipt]=0.;\r
- prodcutsval[4][ipt]=0.;\r
- prodcutsval[5][ipt]=0.005;\r
- prodcutsval[6][ipt]=0.06;\r
- prodcutsval[7][ipt]=0.0;\r
- prodcutsval[8][ipt]=0.;\r
- prodcutsval[9][ipt]=0.9;\r
- prodcutsval[10][ipt]=0.;\r
- prodcutsval[11][ipt]=1000.0;\r
- prodcutsval[12][ipt]=0.015;\r
- prodcutsval[13][ipt]=0.1;\r
- prodcutsval[14][ipt]=0.;\r
- prodcutsval[15][ipt]=1.;\r
- \r
- }\r
-\r
- RDHFDstoKKpi->SetCuts(nvars,nptbins,prodcutsval);\r
-\r
- Int_t nvarsforopt=RDHFDstoKKpi->GetNVarsForOpt();\r
- //Int_t nvarsforopt=2;\r
- const Int_t dim=4; //set this!!\r
- Bool_t *boolforopt;\r
- boolforopt=new Bool_t[nvars];\r
- if(dim>nvarsforopt){\r
- cout<<"Number of variables for optimization has probably changed, check and edit accordingly"<<endl;\r
- return;\r
- } else {\r
- if(dim==nvarsforopt){\r
- boolforopt=RDHFDstoKKpi->GetVarsForOpt();\r
- }else{\r
- TString *names;\r
- names=new TString[nvars];\r
- TString answer="";\r
- Int_t checktrue=0;\r
- names=RDHFDstoKKpi->GetVarNames();\r
- for(Int_t i=0;i<nvars;i++){\r
- cout<<names[i]<<" for opt? (y/n)"<<endl;\r
- cin>>answer;\r
- if(answer=="y") {\r
- boolforopt[i]=kTRUE;\r
- checktrue++;\r
- }\r
- else boolforopt[i]=kFALSE;\r
- }\r
- if (checktrue!=dim) {\r
- cout<<"Error! You set "<<checktrue<<" kTRUE instead of "<<dim<<endl;\r
- return;\r
- }\r
- RDHFDstoKKpi->SetVarsForOpt(dim,boolforopt);\r
- }\r
- }\r
-\r
-\r
- Float_t tighterval[dim][nptbins];\r
- \r
- //number of steps for each variable is 4 now\r
- //set this!!\r
- \r
- /* \r
- Cut list rejection condition\r
-\r
- 0 "inv. mass [GeV]", invmassDS-massDspdg>fCutsRD\r
- 1 "pTK [GeV/c]", pTK<fCutsRd\r
- 2 "pTPi [GeV/c]", pTPi<fCutsRd\r
- 3 "d0K [cm]", d0K<fCutsRd\r
- 4 "d0Pi [cm]", d0Pi<fCutsRd\r
- 5 "dist12 [cm]", dist12<fCutsRd\r
- 6 "sigmavert [cm]", sigmavert>fCutsRd\r
- 7 "decLen [cm]", decLen<fCutsRD\r
- 8 "ptMax [GeV/c]", ptMax<fCutsRD\r
- 9 "cosThetaPoint", CosThetaPoint<fCutsRD\r
- 10 "Sum d0^2 (cm^2)", sumd0<fCutsRD\r
- 11 "dca [cm]", dca(i)>fCutsRD\r
- 12 "inv. mass (Mphi-MKK) [GeV]", invmass-pdg>fCutsRD\r
- 13 "inv. mass (MKo*-MKpi) [GeV]"}; invmass-pdg>fCutsRD\r
- 14 "Abs(CosineKpiPhiRFrame)^3",\r
- 15 "CosPiDsLabFrame"}\r
- */ \r
- \r
- //sigmavert [cm]\r
- \r
- \r
- tighterval[0][0]=0.0;\r
- tighterval[0][1]=0.0;\r
- tighterval[0][2]=0.0;\r
- tighterval[0][3]=0.0;\r
- \r
- //decay length\r
- \r
- tighterval[1][0]=0.05;\r
- tighterval[1][1]=0.05;\r
- tighterval[1][2]=0.05;\r
- tighterval[1][3]=0.05;\r
- \r
- //costhetapoint\r
- \r
- tighterval[2][0]=1.;\r
- tighterval[2][1]=1.;\r
- tighterval[2][2]=1.;\r
- tighterval[2][3]=1.;\r
- \r
- \r
- //inv mass phi meson\r
- \r
- tighterval[3][0]=0.;\r
- tighterval[3][1]=0.;\r
- tighterval[3][2]=0.;\r
- tighterval[3][3]=0.;\r
-\r
- TString name=""; \r
- Int_t arrdim=dim*nptbins;\r
- TClonesArray max("TParameter<float>",arrdim);\r
- for (Int_t ipt=0;ipt<nptbins;ipt++){\r
- for(Int_t ival=0;ival<dim;ival++){\r
- name=Form("par%dptbin%d",ival,ipt);\r
- new(max[ipt*dim+ival])TParameter<float>(name.Data(),tighterval[ival][ipt]);\r
- }\r
- }\r
-\r
- TFile* fout=new TFile("cuts4SignifMaximDs.root","recreate"); //set this!! \r
- fout->cd();\r
- RDHFDstoKKpi->Write();\r
- max.Write();\r
- fout->Close();\r
-\r
-}\r
+#include <Riostream.h>
+#include <TFile.h>
+//#include <AliRDHFCutsDstoKKpi.h>
+#include <TClonesArray.h>
+#include <TParameter.h>
+
+//macro to make a .root file which contains an AliRDHFCutsDstoKKpi with loose set of cuts (for significance maximization) and TParameter with the tighest value of these cuts
+//Needed for AliAnalysisTaskSEDs, AliCFTaskVertexingHF3Prong, AliAnalysisTaskSESignificance
+
+//Use:
+//Set hard coded commented with //set this!!
+
+//.L makeTFile4CutsDstoKKpi.C
+// makeInputAliAnalysisTaskSEDs()
+// makeInputAliAnalysisTaskSESignificanceMaximization()
+
+//similar macros for the other D mesons
+
+//Author: Chiara Bianchin, cbianchi@pd.infn.it
+// Giacomo Ortona, ortona@to.infn.it
+// Renu Bala [Dplus Analysis and CF]
+
+//Modified for Ds meson: G.M. Innocenti, innocent@to.infn.it
+
+void makeInputAliAnalysisTaskSEDsPP(){
+
+ // gSystem->SetIncludePath("-I. -I$ROOTSYS/include -I$ALICE_ROOT -I$ALICE_ROOT/include -I$ALICE_ROOT/ITS -I$ALICE_ROOT/TPC -I$ALICE_ROOT/CONTAINERS -I$ALICE_ROOT/STEER -I$ALICE_ROOT/TRD -I$ALICE_ROOT/macros -I$ALICE_ROOT/ANALYSIS -I$ALICE_ROOT/PWG3 -I$ALICE_ROOT/PWG3/vertexingHF -I$ALICE_ROOT/PWG3/vertexingH/macros -g");
+
+
+ AliESDtrackCuts* esdTrackCuts=new AliESDtrackCuts();
+ esdTrackCuts->SetRequireSigmaToVertex(kFALSE);
+ //default
+ esdTrackCuts->SetRequireTPCRefit(kTRUE);
+ esdTrackCuts->SetRequireITSRefit(kTRUE);
+ //esdTrackCuts->SetMinNClustersITS(4); // default is 5
+ esdTrackCuts->SetMinNClustersTPC(70);
+ esdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,
+ AliESDtrackCuts::kAny);
+ // default is kBoth, otherwise kAny
+ esdTrackCuts->SetMinDCAToVertexXY(0.);
+ esdTrackCuts->SetPtRange(0.3,1.e10);
+
+
+ const Int_t nptbins=4;
+ Float_t* ptbins;
+ ptbins=new Float_t[nptbins+1];
+ ptbins[0]=2.;
+ ptbins[1]=4.;
+ ptbins[2]=6.;
+ ptbins[3]=8.;
+ ptbins[4]=12.;
+
+
+ const Int_t nvars=16;
+
+ Float_t** anacutsval;
+ anacutsval=new Float_t*[nvars];
+
+ for(Int_t ic=0;ic<nvars;ic++){anacutsval[ic]=new Float_t[nptbins];}
+ for(Int_t ipt=0;ipt<nptbins;ipt++){
+
+ anacutsval[0][ipt]=0.35;
+ anacutsval[1][ipt]=0.3;
+ anacutsval[2][ipt]=0.3;
+ anacutsval[3][ipt]=0.;
+ anacutsval[4][ipt]=0.;
+ anacutsval[5][ipt]=0.005;
+ anacutsval[6][ipt]=0.06;
+ anacutsval[7][ipt]=0.0;
+ anacutsval[8][ipt]=0.;
+ anacutsval[9][ipt]=0.9;
+ anacutsval[10][ipt]=0.;
+ anacutsval[11][ipt]=1000.0;
+ anacutsval[12][ipt]=0.015;
+ anacutsval[13][ipt]=0.1;
+ anacutsval[14][ipt]=0.;
+ anacutsval[15][ipt]=1.;
+
+
+ }
+
+
+
+ /*
+
+ Cut list rejection condition
+ 0 "inv. mass [GeV]", invmassDS-massDspdg>fCutsRD
+ 1 "pTK [GeV/c]", pTK<fCutsRd
+ 2 "pTPi [GeV/c]", pTPi<fCutsRd
+ 3 "d0K [cm]", d0K<fCutsRd
+ 4 "d0Pi [cm]", d0Pi<fCutsRd
+ 5 "dist12 [cm]", dist12<fCutsRd
+ 6 "sigmavert [cm]", sigmavert>fCutsRd
+ 7 "decLen [cm]", decLen<fCutsRD
+ 8 "ptMax [GeV/c]", ptMax<fCutsRD
+ 9 "cosThetaPoint", CosThetaPoint<fCutsRD
+ 10 "Sum d0^2 (cm^2)", sumd0<fCutsRD
+ 11 "dca [cm]", dca(i)>fCutsRD
+ 12 "inv. mass (Mphi-MKK) [GeV]", invmass-pdg>fCutsRD
+ 13 "inv. mass (MKo*-MKpi) [GeV]"}; invmass-pdg>fCutsRD
+ 14 "Abs(CosineKpiPhiRFrame)^3",
+ 15 "CosPiDsLabFrame"};
+ */
+
+
+ AliRDHFCutsDstoKKpi* analysiscuts=new AliRDHFCutsDstoKKpi();
+ analysiscuts->SetName("AnalysisCuts");
+ analysiscuts->SetTitle("Cuts for Ds Analysis and CF");
+ analysiscuts->SetPtBins(nptbins+1,ptbins);
+ analysiscuts->SetCuts(nvars,nptbins,anacutsval);
+ analysiscuts->AddTrackCuts(esdTrackCuts);
+ analysiscuts->SetUsePID(kTRUE);
+ analysiscuts->SetPidOption(1);
+ analysiscuts->SetOptPileup(kTRUE);
+ analysiscuts->SetRemoveDaughtersFromPrim(kTRUE);
+ cout<<"This is the odject I'm going to save:"<<nptbins<<endl;
+
+ analysiscuts->PrintAll();
+ TFile* fout=new TFile("DstoKKpiCuts.root","recreate");
+ fout->cd();
+ analysiscuts->Write();
+ fout->Close();
+
+
+}
+
+
+void makeInputAliAnalysisTaskSEDsPbPb(){
+
+ // gSystem->SetIncludePath("-I. -I$ROOTSYS/include -I$ALICE_ROOT -I$ALICE_ROOT/include -I$ALICE_ROOT/ITS -I$ALICE_ROOT/TPC -I$ALICE_ROOT/CONTAINERS -I$ALICE_ROOT/STEER -I$ALICE_ROOT/TRD -I$ALICE_ROOT/macros -I$ALICE_ROOT/ANALYSIS -I$ALICE_ROOT/PWG3 -I$ALICE_ROOT/PWG3/vertexingHF -I$ALICE_ROOT/PWG3/vertexingH/macros -g");
+
+
+ AliESDtrackCuts* esdTrackCuts=new AliESDtrackCuts();
+ esdTrackCuts->SetRequireSigmaToVertex(kFALSE);
+ //default
+ esdTrackCuts->SetRequireTPCRefit(kTRUE);
+ esdTrackCuts->SetRequireITSRefit(kTRUE);
+ //esdTrackCuts->SetMinNClustersITS(4); // default is 5
+ esdTrackCuts->SetMinNClustersTPC(70);
+ esdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,
+ AliESDtrackCuts::kAny);
+ // default is kBoth, otherwise kAny
+ esdTrackCuts->SetMinDCAToVertexXY(0.);
+ esdTrackCuts->SetPtRange(0.7,1.e10);
+
+
+ const Int_t nptbins=4;
+ Float_t* ptbins;
+ ptbins=new Float_t[nptbins+1];
+ ptbins[0]=2.;
+ ptbins[1]=4.;
+ ptbins[2]=6.;
+ ptbins[3]=8.;
+ ptbins[4]=12.;
+
+
+ const Int_t nvars=16;
+
+ Float_t** anacutsval;
+ anacutsval=new Float_t*[nvars];
+
+ for(Int_t ic=0;ic<nvars;ic++){anacutsval[ic]=new Float_t[nptbins];}
+ for(Int_t ipt=0;ipt<nptbins;ipt++){
+
+ anacutsval[0][ipt]=0.35;
+ anacutsval[1][ipt]=0.3;
+ anacutsval[2][ipt]=0.3;
+ anacutsval[3][ipt]=0.;
+ anacutsval[4][ipt]=0.;
+ anacutsval[5][ipt]=0.005;
+ anacutsval[6][ipt]=0.06;
+ anacutsval[7][ipt]=0.0;
+ anacutsval[8][ipt]=0.;
+ anacutsval[9][ipt]=0.7;
+ anacutsval[10][ipt]=0.;
+ anacutsval[11][ipt]=1000.0;
+ anacutsval[12][ipt]=0.1;
+ anacutsval[13][ipt]=0.1;
+ anacutsval[14][ipt]=0.;
+ anacutsval[15][ipt]=1.;
+
+
+ }
+
+
+
+ /*
+
+ Cut list rejection condition
+ 0 "inv. mass [GeV]", invmassDS-massDspdg>fCutsRD
+ 1 "pTK [GeV/c]", pTK<fCutsRd
+ 2 "pTPi [GeV/c]", pTPi<fCutsRd
+ 3 "d0K [cm]", d0K<fCutsRd
+ 4 "d0Pi [cm]", d0Pi<fCutsRd
+ 5 "dist12 [cm]", dist12<fCutsRd
+ 6 "sigmavert [cm]", sigmavert>fCutsRd
+ 7 "decLen [cm]", decLen<fCutsRD
+ 8 "ptMax [GeV/c]", ptMax<fCutsRD
+ 9 "cosThetaPoint", CosThetaPoint<fCutsRD
+ 10 "Sum d0^2 (cm^2)", sumd0<fCutsRD
+ 11 "dca [cm]", dca(i)>fCutsRD
+ 12 "inv. mass (Mphi-MKK) [GeV]", invmass-pdg>fCutsRD
+ 13 "inv. mass (MKo*-MKpi) [GeV]"}; invmass-pdg>fCutsRD
+ 14 "Abs(CosineKpiPhiRFrame)^3",
+ 15 "CosPiDsLabFrame"};
+ */
+
+ AliRDHFCutsDstoKKpi* analysiscuts=new AliRDHFCutsDstoKKpi();
+ analysiscuts->SetName("AnalysisCuts");
+ analysiscuts->SetTitle("Cuts for Ds Analysis and CF");
+ analysiscuts->SetPtBins(nptbins+1,ptbins);
+ analysiscuts->SetCuts(nvars,nptbins,anacutsval);
+ analysiscuts->AddTrackCuts(esdTrackCuts);
+
+ TString cent="";
+ Float_t mincen=20.;
+ Float_t maxcen=40.;
+
+ analysiscuts->SetUsePID(kTRUE);
+ analysiscuts->SetPidOption(0);
+ //analysiscuts->SetUseImpParProdCorrCut(kFALSE);
+ analysiscuts->SetOptPileup(kFALSE);
+ //analysiscuts->SetUseAOD049(kTRUE);
+ analysiscuts->SetMinCentrality(mincen);
+ analysiscuts->SetMaxCentrality(maxcen);
+ cent=Form("%.0f%.0f",mincen,maxcen);
+ analysiscuts->SetUseCentrality(AliRDHFCuts::kCentV0M); //kCentOff,kCentV0M,kCentTRK,kCentTKL,kCentCL1,kCentInvalid
+ analysiscuts->SetMinPtCandidate(3.);
+ analysiscuts->SetMaxPtCandidate(1000.);
+ analysiscuts->SetRemoveDaughtersFromPrim(kFALSE);
+
+ cout<<"This is the odject I'm going to save:"<<nptbins<<endl;
+
+ analysiscuts->PrintAll();
+ TFile* fout=new TFile("DstoKKpiCuts.root","recreate");
+ fout->cd();
+ analysiscuts->Write();
+ fout->Close();
+
+
+}
+
+
+void makeInputAliAnalysisTaskSESignificanceMaximization(){
+
+ AliESDtrackCuts* esdTrackCuts=new AliESDtrackCuts();
+ esdTrackCuts->SetRequireSigmaToVertex(kFALSE);
+ //default
+ esdTrackCuts->SetRequireTPCRefit(kTRUE);
+ esdTrackCuts->SetRequireITSRefit(kTRUE);
+ //esdTrackCuts->SetMinNClustersITS(4); // default is 5
+ esdTrackCuts->SetMinNClustersTPC(70);
+ esdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,
+ AliESDtrackCuts::kAny);
+ // default is kBoth, otherwise kAny
+ esdTrackCuts->SetMinDCAToVertexXY(0.);
+ esdTrackCuts->SetPtRange(0.3,1.e10);
+
+
+
+ AliRDHFCutsDstoKKpi* RDHFDstoKKpi=new AliRDHFCutsDstoKKpi();
+ RDHFDstoKKpi->SetName("loosercuts");
+ RDHFDstoKKpi->SetTitle("Cuts for significance maximization");
+ RDHFDstoKKpi->AddTrackCuts(esdTrackCuts);
+ RDHFDstoKKpi->SetUsePID(kTRUE);
+ RDHFDstoKKpi->SetPidOption(1);
+ RDHFDstoKKpi->SetOptPileup(kTRUE);
+ RDHFDstoKKpi->SetRemoveDaughtersFromPrim(kTRUE);
+
+ const Int_t nvars=16;
+
+ const Int_t nptbins=4;
+ Float_t* ptbins;
+ ptbins=new Float_t[nptbins+1];
+ ptbins[0]=2.;
+ ptbins[1]=4.;
+ ptbins[2]=6.;
+ ptbins[3]=8.;
+ ptbins[4]=12.;
+
+ RDHFDstoKKpi->SetPtBins(nptbins+1,ptbins);
+
+ //setting my cut values
+
+ Float_t** prodcutsval;
+ prodcutsval=new Float_t*[nvars];
+ for(Int_t ic=0;ic<nvars;ic++){prodcutsval[ic]=new Float_t[nptbins];}
+ for(Int_t ipt=0;ipt<nptbins;ipt++){
+
+ prodcutsval[0][ipt]=0.35;
+ prodcutsval[1][ipt]=0.3;
+ prodcutsval[2][ipt]=0.3;
+ prodcutsval[3][ipt]=0.;
+ prodcutsval[4][ipt]=0.;
+ prodcutsval[5][ipt]=0.005;
+ prodcutsval[6][ipt]=0.06;
+ prodcutsval[7][ipt]=0.0;
+ prodcutsval[8][ipt]=0.;
+ prodcutsval[9][ipt]=0.9;
+ prodcutsval[10][ipt]=0.;
+ prodcutsval[11][ipt]=1000.0;
+ prodcutsval[12][ipt]=0.015;
+ prodcutsval[13][ipt]=0.1;
+ prodcutsval[14][ipt]=0.;
+ prodcutsval[15][ipt]=1.;
+
+ }
+
+ RDHFDstoKKpi->SetCuts(nvars,nptbins,prodcutsval);
+
+ Int_t nvarsforopt=RDHFDstoKKpi->GetNVarsForOpt();
+ //Int_t nvarsforopt=2;
+ const Int_t dim=4; //set this!!
+ Bool_t *boolforopt;
+ boolforopt=new Bool_t[nvars];
+ if(dim>nvarsforopt){
+ cout<<"Number of variables for optimization has probably changed, check and edit accordingly"<<endl;
+ return;
+ } else {
+ if(dim==nvarsforopt){
+ boolforopt=RDHFDstoKKpi->GetVarsForOpt();
+ }else{
+ TString *names;
+ names=new TString[nvars];
+ TString answer="";
+ Int_t checktrue=0;
+ names=RDHFDstoKKpi->GetVarNames();
+ for(Int_t i=0;i<nvars;i++){
+ cout<<names[i]<<" for opt? (y/n)"<<endl;
+ cin>>answer;
+ if(answer=="y") {
+ boolforopt[i]=kTRUE;
+ checktrue++;
+ }
+ else boolforopt[i]=kFALSE;
+ }
+ if (checktrue!=dim) {
+ cout<<"Error! You set "<<checktrue<<" kTRUE instead of "<<dim<<endl;
+ return;
+ }
+ RDHFDstoKKpi->SetVarsForOpt(dim,boolforopt);
+ }
+ }
+
+
+ Float_t tighterval[dim][nptbins];
+
+ //number of steps for each variable is 4 now
+ //set this!!
+
+ /*
+ Cut list rejection condition
+
+ 0 "inv. mass [GeV]", invmassDS-massDspdg>fCutsRD
+ 1 "pTK [GeV/c]", pTK<fCutsRd
+ 2 "pTPi [GeV/c]", pTPi<fCutsRd
+ 3 "d0K [cm]", d0K<fCutsRd
+ 4 "d0Pi [cm]", d0Pi<fCutsRd
+ 5 "dist12 [cm]", dist12<fCutsRd
+ 6 "sigmavert [cm]", sigmavert>fCutsRd
+ 7 "decLen [cm]", decLen<fCutsRD
+ 8 "ptMax [GeV/c]", ptMax<fCutsRD
+ 9 "cosThetaPoint", CosThetaPoint<fCutsRD
+ 10 "Sum d0^2 (cm^2)", sumd0<fCutsRD
+ 11 "dca [cm]", dca(i)>fCutsRD
+ 12 "inv. mass (Mphi-MKK) [GeV]", invmass-pdg>fCutsRD
+ 13 "inv. mass (MKo*-MKpi) [GeV]"}; invmass-pdg>fCutsRD
+ 14 "Abs(CosineKpiPhiRFrame)^3",
+ 15 "CosPiDsLabFrame"}
+ */
+
+ //sigmavert [cm]
+
+
+ tighterval[0][0]=0.0;
+ tighterval[0][1]=0.0;
+ tighterval[0][2]=0.0;
+ tighterval[0][3]=0.0;
+
+ //decay length
+
+ tighterval[1][0]=0.05;
+ tighterval[1][1]=0.05;
+ tighterval[1][2]=0.05;
+ tighterval[1][3]=0.05;
+
+ //costhetapoint
+
+ tighterval[2][0]=1.;
+ tighterval[2][1]=1.;
+ tighterval[2][2]=1.;
+ tighterval[2][3]=1.;
+
+
+ //inv mass phi meson
+
+ tighterval[3][0]=0.;
+ tighterval[3][1]=0.;
+ tighterval[3][2]=0.;
+ tighterval[3][3]=0.;
+
+ TString name="";
+ Int_t arrdim=dim*nptbins;
+ TClonesArray max("TParameter<float>",arrdim);
+ for (Int_t ipt=0;ipt<nptbins;ipt++){
+ for(Int_t ival=0;ival<dim;ival++){
+ name=Form("par%dptbin%d",ival,ipt);
+ new(max[ipt*dim+ival])TParameter<float>(name.Data(),tighterval[ival][ipt]);
+ }
+ }
+
+ TFile* fout=new TFile("cuts4SignifMaximDs.root","recreate"); //set this!!
+ fout->cd();
+ RDHFDstoKKpi->Write();
+ max.Write();
+ fout->Close();
+
+}