#include #include #include #include #include #include "AliHFAssociatedTrackCuts.h" //Use: //Set hard coded commentet with //set this!! // root[] .L makeInputD0tasks.C++ // root[] makeInputAliAnalysisTaskSED0Correlations() //similar macros for the other D mesons //Author: Fabio Colamaria, fabio.colamaria@ba.infn.it //macro to make a .root file which contains an AliRDHFCutsD0toKpi for AliAnalysisTaskSED0Mass task void makeInputAliAnalysisTaskSED0Correlations(){ //____________________________________________________ // Cuts for D0 cuts AliRDHFCutsD0toKpi* RDHFD0Corr=new AliRDHFCutsD0toKpi(); RDHFD0Corr->SetName("D0toKpiCuts"); RDHFD0Corr->SetTitle("Cuts for D0 analysis"); RDHFD0Corr->SetMinVtxContr(1); //Quality tracks for daughters AliESDtrackCuts* esdTrackCuts=new AliESDtrackCuts(); esdTrackCuts->SetRequireSigmaToVertex(kFALSE); esdTrackCuts->SetRequireTPCRefit(kTRUE); esdTrackCuts->SetRequireITSRefit(kTRUE); //esdTrackCuts->SetMinNClustersITS(4); // default is 5 //esdTrackCuts->SetMinNClustersTPC(120); esdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD, AliESDtrackCuts::kAny); // default is kBoth, otherwise kAny esdTrackCuts->SetMinDCAToVertexXY(0.); esdTrackCuts->SetEtaRange(-0.8,0.8); esdTrackCuts->SetPtRange(0.3,1.e10); RDHFD0Corr->AddTrackCuts(esdTrackCuts); //D0 selection topological cuts const Int_t nptbins =14; const Double_t ptmax = 9999.; const Int_t nvars=11; Float_t ptbins[nptbins+1]; ptbins[0]=0.; ptbins[1]=0.5; ptbins[2]=1.; ptbins[3]=2.; ptbins[4]=3.; ptbins[5]=4.; ptbins[6]=5.; ptbins[7]=6.; ptbins[8]=7.; ptbins[9]=8.; ptbins[10]=12.; ptbins[11]=16.; ptbins[12]=20.; ptbins[13]=24.; ptbins[14]=ptmax; RDHFD0Corr->SetGlobalIndex(nvars,nptbins); RDHFD0Corr->SetPtBins(nptbins+1,ptbins); Float_t cutsMatrixD0toKpiStand[nptbins][nvars]={{0.400,350.*1E-4,0.8,0.5,0.5,1000.*1E-4,1000.*1E-4,-5000.*1E-8,0.80,0.,0.},/* pt<0.5*/ {0.400,350.*1E-4,0.8,0.5,0.5,1000.*1E-4,1000.*1E-4,-5000.*1E-8,0.80,0.,0.},/* 0.524 */ //CREATE TRANSPOSE MATRIX...REVERSE INDICES as required by AliRDHFCuts Float_t **cutsMatrixTransposeStand=new Float_t*[nvars]; for(Int_t iv=0;ivSetCuts(nvars,nptbins,cutsMatrixTransposeStand); RDHFD0Corr->SetUseSpecialCuts(kTRUE); RDHFD0Corr->SetRemoveDaughtersFromPrim(kTRUE); for(Int_t iv=0;ivSetUsePID(pidflag); if(pidflag) cout<<"PID is used"<SetAsym(asym);// if you want to use the asymmetric bands in TPC pidObj->SetMatch(mode); pidObj->SetPLimit(plims,nlims); pidObj->SetSigma(sigmas); pidObj->SetCompat(compat); pidObj->SetPCompatTOF(1.5); pidObj->SetSigmaForTPCCompat(3.); pidObj->SetSigmaForTOFCompat(3.); pidObj->SetTPC(kTRUE); pidObj->SetTOF(kTRUE); RDHFD0Corr->SetPidHF(pidObj); RDHFD0Corr->SetUsePID(kTRUE); RDHFD0Corr->SetUseDefaultPID(kFALSE); //to use the AliAODPidHF RDHFD0Corr->SetLowPt(kFALSE); //activate pileup rejection (for pp) RDHFD0Corr->SetOptPileup(AliRDHFCuts::kRejectPileupEvent); TString cent=""; //centrality selection (Pb-Pb) Float_t minc=0,maxc=100; RDHFD0Corr->SetMinCentrality(minc); RDHFD0Corr->SetMaxCentrality(maxc); cent=Form("%.0f%.0f",minc,maxc); RDHFD0Corr->SetUseCentrality(AliRDHFCuts::kCentOff); //kCentOff,kCentV0M,kCentTRK,kCentTKL,kCentCL1,kCentInvalid //temporary //RDHFD0Corr->SetFixRefs(); cout<<"This is the object I'm going to save:"<PrintAll(); TFile* fout=new TFile("D0toKpiCuts.root","recreate"); //set this!! fout->cd(); RDHFD0Corr->Write(); fout->Close(); //____________________________________________________ // Cuts for correlated tracks AliHFAssociatedTrackCuts* HFCorrelationCuts=new AliHFAssociatedTrackCuts(); HFCorrelationCuts->SetName("AssociatedTrkCuts"); HFCorrelationCuts->SetTitle("Cuts for associated track"); Float_t eta = 0.9; // Set quality cuts on tracks AliESDtrackCuts *esdHadrCuts = new AliESDtrackCuts("AliESDHadrCuts","default"); esdHadrCuts->SetRequireSigmaToVertex(kFALSE); esdHadrCuts->SetRequireTPCRefit(kTRUE); esdHadrCuts->SetRequireITSRefit(kTRUE); esdHadrCuts->SetMinNClustersITS(2); //as for D* esdHadrCuts->SetMinNClustersTPC(80); //as for D* //esdHadrCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kAny); esdHadrCuts->SetMinDCAToVertexXY(0.); esdHadrCuts->SetEtaRange(-eta,eta); esdHadrCuts->SetPtRange(0.,1.e10); HFCorrelationCuts->AddTrackCuts(esdHadrCuts); // Set kinematics cuts for AOD track const int nofcuts = 4; Float_t* trackcutsarray; trackcutsarray=new Float_t[nofcuts]; trackcutsarray[0] = 0.3;//track min pt trackcutsarray[1] = 10000.;//track max pt trackcutsarray[2] = -99999999.;//track min impact parameter. DON'T put 0 since default value is -999999. and it would skip all tracks if d0 is not calculated! trackcutsarray[3] = 10000.;//track max impact parameter HFCorrelationCuts->SetNVarsTrack(nofcuts); HFCorrelationCuts->SetAODTrackCuts(trackcutsarray); HFCorrelationCuts->SetCharge(0); // -1/+1 to look for opposite/same charge, 0 no charge selection HFCorrelationCuts->SetFilterBit(0); // set 0 for analysis with AOD from 2010 // Set kinematics cuts for AOD v0 const int nofcuts2 = 7; Float_t* vzerocutsarray; vzerocutsarray=new Float_t[nofcuts2]; vzerocutsarray[0] = 0.2; // max dca between two daugters (cm) vzerocutsarray[1] = 2; // max chi square vzerocutsarray[2] = 2.; // min decay length (cm) vzerocutsarray[3] = 15; // max decay length (cm) vzerocutsarray[4] = 100.; // max opening angle between two daugters vzerocutsarray[5] = 0; // min pt of k0 (GeV/c) vzerocutsarray[6] = 0.9; // set eta acceptance HFCorrelationCuts->SetNVarsVzero(nofcuts2); HFCorrelationCuts->SetAODvZeroCuts(vzerocutsarray); // Set PID Int_t mode =1; Double_t ptlimit[2] = {0.6,0.8}; AliAODPidHF* pidObj=new AliAODPidHF(); pidObj->SetMatch(1); //A.Rossi mode pidObj->SetAsym(kTRUE); pidObj->SetPLimit(ptlimit); pidObj->SetSigma(0,2.); //TPC sigma, in three pT ranges pidObj->SetSigma(1,1.); pidObj->SetSigma(2,0.); pidObj->SetSigma(3,3.); //TOF sigma, whole pT range pidObj->SetPCompatTOF(1.5); pidObj->SetSigmaForTPCCompat(3.); pidObj->SetSigmaForTOFCompat(3.); pidObj->SetTPC(kTRUE); pidObj->SetTOF(kTRUE); pidObj->SetCompat(kTRUE); HFCorrelationCuts->SetPidHF(pidObj); //Event Mixing settings HFCorrelationCuts->SetMaxNEventsInPool(200); HFCorrelationCuts->SetMinNTracksInPool(1000); HFCorrelationCuts->SetMinEventsToMix(8); HFCorrelationCuts->SetNofPoolBins(5,5); Double_t MBins[]={0,20,40,60,80,500}; Double_t * MultiplicityBins = MBins; Double_t ZBins[]={-10,-5,-2.5,2.5,5,10}; Double_t *ZVrtxBins = ZBins; HFCorrelationCuts->SetPoolBins(ZVrtxBins,MultiplicityBins); // Save to *.root file HFCorrelationCuts->PrintAll(); TFile* fout=new TFile("AssocPartCuts.root","recreate"); //set this!! fout->cd(); HFCorrelationCuts->Write(); fout->Close(); }