#include #include #include #include #include //macro to make a .root file which contains an AliRDHFCutsDplustoKpipi with loose set of cuts (for significance maximization) and TParameter with the tighest value of these cuts //Needed for AliAnalysisTaskSEDplus, AliCFTaskVertexingHF3Prong, AliAnalysisTaskSESignificance //Use: //Set hard coded commented with //set this!! //.L makeTFile4CutsDplustoKpipi.C // makeInputAliAnalysisTaskSEDplus() // 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] void makeInputAliAnalysisTaskSEDplusPP(){ // 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=14; Float_t* ptbins; ptbins=new Float_t[nptbins+1]; ptbins[0]=0.; ptbins[1]=1.; ptbins[2]=2.; ptbins[3]=3.; ptbins[4]=4.; ptbins[5]=5.; ptbins[6]=6.; ptbins[7]=7.; ptbins[8]=8.; ptbins[9]=9.; ptbins[10]=10.; ptbins[11]=12.; ptbins[12]=14.; ptbins[13]=16.; ptbins[14]=24.; const Int_t nvars=14; Float_t** anacutsval; anacutsval=new Float_t*[nvars]; for(Int_t ic=0;icSetName("AnalysisCuts"); analysiscuts->SetTitle("Cuts for Dplus Analysis and CF"); analysiscuts->SetPtBins(nptbins+1,ptbins); analysiscuts->SetCuts(nvars,nptbins,anacutsval); analysiscuts->AddTrackCuts(esdTrackCuts); analysiscuts->SetUsePID(kTRUE); analysiscuts->SetUseImpParProdCorrCut(kFALSE); cout<<"This is the odject I'm going to save:"<PrintAll(); TFile* fout=new TFile("DplustoKpipiCuts.root","recreate"); fout->cd(); analysiscuts->Write(); fout->Close(); } void makeInputAliAnalysisTaskSEDplusPbPb(){ // 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.8,1.e10); TString cent=""; //centrality selection (Pb-Pb) Float_t minc=0.,maxc=20.; const Int_t nptbins=12; Float_t* ptbins; ptbins=new Float_t[nptbins+1]; ptbins[0]=0.; ptbins[1]=1.; ptbins[2]=2.; ptbins[3]=3.; ptbins[4]=4.; ptbins[5]=5.; ptbins[6]=6.; ptbins[7]=8.; ptbins[8]=9.; ptbins[9]=10.; ptbins[10]=12.; ptbins[11]=16.; ptbins[12]=24.; const Int_t nvars=14; Float_t** anacutsval; anacutsval=new Float_t*[nvars]; for(Int_t ic=0;icSetName("AnalysisCuts"); analysiscuts->SetTitle("Cuts for Dplus Analysis and CF"); analysiscuts->SetPtBins(nptbins+1,ptbins); analysiscuts->SetCuts(nvars,nptbins,anacutsval); analysiscuts->AddTrackCuts(esdTrackCuts); analysiscuts->SetUsePID(kTRUE); analysiscuts->SetUseImpParProdCorrCut(kFALSE); analysiscuts->SetOptPileup(kFALSE); analysiscuts->SetUseAOD049(kTRUE); analysiscuts->SetMinCentrality(minc); analysiscuts->SetMaxCentrality(maxc); cent=Form("%.0f%.0f",minc,maxc); analysiscuts->SetUseCentrality(AliRDHFCuts::kCentV0M); //kCentOff,kCentV0M,kCentTRK,kCentTKL,kCentCL1,kCentInvalid analysiscuts->SetMinPtCandidate(3.); analysiscuts->SetMaxPtCandidate(10000.); cout<<"This is the odject I'm going to save:"<PrintAll(); TFile* fout=new TFile("DplustoKpipiCuts.root","recreate"); fout->cd(); analysiscuts->Write(); fout->Close(); } void makeInputAliAnalysisTaskSESignificanceMaximization(){ AliRDHFCutsDplustoKpipi* RDHFDplustoKpipi=new AliRDHFCutsDplustoKpipi(); RDHFDplustoKpipi->SetName("loosercuts"); RDHFDplustoKpipi->SetTitle("Cuts for significance maximization"); 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); RDHFDplustoKpipi->AddTrackCuts(esdTrackCuts); const Int_t nvars=12; const Int_t nptbins=4; Float_t* ptbins; ptbins=new Float_t[nptbins+1]; ptbins[0]=0.; ptbins[1]=2.; ptbins[2]=3.; ptbins[3]=5.; ptbins[4]=99999.; RDHFDplustoKpipi->SetPtBins(nptbins+1,ptbins); //setting my cut values Float_t** prodcutsval; prodcutsval=new Float_t*[nvars]; for(Int_t ic=0;icSetCuts(nvars,nptbins,prodcutsval); Int_t nvarsforopt=RDHFDplustoKpipi->GetNVarsForOpt(); const Int_t dim=5; //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"<GetVarsForOpt(); }else{ TString *names; names=new TString[nvars]; TString answer=""; Int_t checktrue=0; names=RDHFDplustoKpipi->GetVarNames(); for(Int_t i=0;i>answer; if(answer=="y") { boolforopt[i]=kTRUE; checktrue++; } else boolforopt[i]=kFALSE; } if (checktrue!=dim) { cout<<"Error! You set "<SetVarsForOpt(dim,boolforopt); } } Float_t tighterval[dim][nptbins]; //sigmavert //declength //Pmax //costhetapoint //sumd02 //number of steps for each variable is 4 now //set this!! // tighterval[var][ptbin] tighterval[0][0]=0.022100; tighterval[0][1]=0.034; tighterval[0][2]=0.020667; tighterval[0][3]=0.023333; tighterval[1][0]=0.08; tighterval[1][1]=0.09; tighterval[1][2]=0.095; tighterval[1][3]=0.115; tighterval[2][0]=1.; tighterval[2][1]=1.; tighterval[2][2]=1.; tighterval[2][3]=1.; tighterval[3][0]=0.979; tighterval[3][1]=0.9975; tighterval[3][2]=0.995; tighterval[3][3]=0.9975; tighterval[4][0]=0.0055; tighterval[4][1]=0.0028; tighterval[4][2]=0.000883; tighterval[4][3]=0.000883; TString name=""; Int_t arrdim=dim*nptbins; TClonesArray max("TParameter",arrdim); for (Int_t ipt=0;ipt(name.Data(),tighterval[ival][ipt]); } } TFile* fout=new TFile("cuts4SignifMaximDplus.root","recreate"); //set this!! fout->cd(); RDHFDplustoKpipi->Write(); max.Write(); fout->Close(); }