//__________________________________________________// AliESDtrackCuts *GetTrackCutsObject() { //Function to setup the AliESDtrackCuts object and return it AliESDtrackCuts *cuts = new AliESDtrackCuts("ebyeTrackCuts","ebyeTrackCuts"); cuts->SetMinNClustersTPC(80); //cuts->SetMinNClustersITS(2); cuts->SetMaxChi2PerClusterTPC(4.0); cuts->SetRequireTPCRefit(); //cuts->SetRequireITSRefit(); cuts->SetAcceptKinkDaughters(kFALSE); cuts->SetMaxDCAToVertexXY(3.0); cuts->SetMaxDCAToVertexZ(3.0); cuts->SetPtRange(0.3,1.5); cuts->SetEtaRange(-0.8,0.8); cuts->SaveHistograms("trackCuts"); return cuts; }
AliAnalysisVertexingHF* ConfigVertexingHF() { printf("Call to AliAnalysisVertexingHF parameters setting :\n"); vHF = new AliAnalysisVertexingHF(); //--- switch-off candidates finding (default: all on) //vHF->SetD0toKpiOff(); vHF->SetJPSItoEleOff(); //vHF->Set3ProngOff(); vHF->SetLikeSignOn(); // like-sign pairs and triplets // vHF->SetLikeSign3prongOff(); vHF->Set4ProngOff(); //vHF->SetDstarOff(); vHF->SetFindVertexForDstar(kFALSE); //--- secondary vertex with KF? //vHF->SetSecVtxWithKF(); vHF->SetCascadesOff(); vHF->SetFindVertexForCascades(kFALSE); vHF->SetMassCutBeforeVertexing(kTRUE); // PbPb vHF->SetV0TypeForCascadeVertex(AliRDHFCuts::kAllV0s); //--- set cuts for single-track selection // displaced tracks AliESDtrackCuts *esdTrackCuts = new AliESDtrackCuts("AliESDtrackCuts","default"); esdTrackCuts->SetRequireTPCRefit(kTRUE); esdTrackCuts->SetMinNClustersTPC(70); esdTrackCuts->SetRequireITSRefit(kTRUE); //esdTrackCuts->SetMinNClustersITS(4); esdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD, AliESDtrackCuts::kAny); // |d0|>75 micron for pt<2GeV, no cut above 2 esdTrackCuts->SetMinDCAToVertexXYPtDep("0.0075*TMath::Max(0.,(1-TMath::Floor(TMath::Abs(pt)/2.)))"); esdTrackCuts->SetMaxDCAToVertexXY(1.); esdTrackCuts->SetMaxDCAToVertexZ(1.); esdTrackCuts->SetPtRange(0.6,1.e10); esdTrackCuts->SetEtaRange(-0.8,+0.8); AliAnalysisFilter *trkFilter = new AliAnalysisFilter("trackFilter"); trkFilter->AddCuts(esdTrackCuts); vHF->SetTrackFilter(trkFilter); // D* soft pion tracks AliESDtrackCuts *esdTrackCutsSoftPi = new AliESDtrackCuts("AliESDtrackCuts","default"); esdTrackCutsSoftPi->SetMinNClustersITS(4); esdTrackCutsSoftPi->SetMaxDCAToVertexXY(1.); esdTrackCutsSoftPi->SetMaxDCAToVertexZ(1.); esdTrackCutsSoftPi->SetPtRange(0.2,1.e10); esdTrackCutsSoftPi->SetEtaRange(-0.8,+0.8); AliAnalysisFilter *trkFilterSoftPi = new AliAnalysisFilter("trackFilterSoftPi"); trkFilterSoftPi->AddCuts(esdTrackCutsSoftPi); vHF->SetTrackFilterSoftPi(trkFilterSoftPi); //--- set cuts for candidates selection Int_t nptbins=2; Float_t ptlimits[2]={0.,1000000.}; AliRDHFCutsD0toKpi *cutsD0toKpi = new AliRDHFCutsD0toKpi("CutsD0toKpi"); cutsD0toKpi->SetStandardCutsPbPb2010(); cutsD0toKpi->SetMinCentrality(-10); cutsD0toKpi->SetMaxCentrality(110); cutsD0toKpi->SetUseSpecialCuts(kFALSE); cutsD0toKpi->SetMinPtCandidate(0.); cutsD0toKpi->SetUsePID(kFALSE); cutsD0toKpi->SetUsePhysicsSelection(kFALSE); cutsD0toKpi->SetMaxVtxZ(1.e6); cutsD0toKpi->SetTriggerClass(""); Float_t cutsArrayD0toKpi[11]={0.4,999999.,1.1,0.,0.,999999.,999999.,0.,0.5,-1,0.}; cutsD0toKpi->SetPtBins(nptbins,ptlimits); cutsD0toKpi->SetCuts(11,cutsArrayD0toKpi); cutsD0toKpi->AddTrackCuts(esdTrackCuts); vHF->SetCutsD0toKpi(cutsD0toKpi); AliRDHFCutsJpsitoee *cutsJpsitoee = new AliRDHFCutsJpsitoee("CutsJpsitoee"); Float_t cutsArrayJpsitoee[9]={0.350,100000.,1.1,0.,0.,100000.,100000.,100000000.,-1.1}; cutsJpsitoee->SetCuts(9,cutsArrayJpsitoee); cutsJpsitoee->AddTrackCuts(esdTrackCuts); vHF->SetCutsJpsitoee(cutsJpsitoee); AliRDHFCutsDplustoKpipi *cutsDplustoKpipi = new AliRDHFCutsDplustoKpipi("CutsDplustoKpipi"); cutsDplustoKpipi->SetStandardCutsPbPb2010(); cutsDplustoKpipi->SetUsePID(kFALSE); Float_t cutsArrayDplustoKpipi[14]={0.25,0.3,0.3,0.,0.,0.01,0.05,0.05,0.,0.88,0.,10000000000.,0.,-1.}; cutsDplustoKpipi->SetPtBins(nptbins,ptlimits); cutsDplustoKpipi->SetCuts(14,cutsArrayDplustoKpipi); cutsDplustoKpipi->AddTrackCuts(esdTrackCuts); cutsDplustoKpipi->SetMinPtCandidate(2.); vHF->SetCutsDplustoKpipi(cutsDplustoKpipi); AliRDHFCutsDstoKKpi *cutsDstoKKpi = new AliRDHFCutsDstoKKpi("CutsDstoKKpi"); cutsDstoKKpi->SetStandardCutsPbPb2010(); cutsDstoKKpi->SetUsePID(kFALSE); Float_t cutsArrayDstoKKpi[20]={0.35,0.3,0.3,0.,0.,0.005,0.06,0.,0.,0.9,0.,100000.,0.035,0.0001,-1.,1.,0.,0.,0.,-1.}; cutsDstoKKpi->SetPtBins(nptbins,ptlimits); cutsDstoKKpi->SetCuts(20,cutsArrayDstoKKpi); cutsDstoKKpi->AddTrackCuts(esdTrackCuts); cutsDstoKKpi->SetMinPtCandidate(2.); vHF->SetCutsDstoKKpi(cutsDstoKKpi); AliRDHFCutsLctopKpi *cutsLctopKpi = new AliRDHFCutsLctopKpi("CutsLctopKpi"); cutsLctopKpi->SetStandardCutsPbPb2010(); cutsLctopKpi->SetUsePID(kFALSE); Float_t cutsArrayLctopKpi[13]={0.13,0.9,1.,0.,0.,0.01,0.04,0.006,1.,0.5,0.,0.05,0.4}; cutsLctopKpi->SetPtBins(nptbins,ptlimits); cutsLctopKpi->SetCuts(13,cutsArrayLctopKpi); cutsLctopKpi->AddTrackCuts(esdTrackCuts); cutsLctopKpi->SetMinPtCandidate(2.); vHF->SetCutsLctopKpi(cutsLctopKpi); AliRDHFCutsD0toKpipipi *cutsD0toKpipipi = new AliRDHFCutsD0toKpipipi("CutsD0toKpipipi"); Float_t cutsArrayD0toKpipipi[9]={0.2,0.04,0.00,0.01,0.02,0.8,0.,0.1,0.}; cutsD0toKpipipi->SetCuts(9,cutsArrayD0toKpipipi); cutsD0toKpipipi->AddTrackCuts(esdTrackCuts); vHF->SetCutsD0toKpipipi(cutsD0toKpipipi); // D* pt dependent cuts ------------------------------------------ AliRDHFCutsDStartoKpipi *cutsDStartoKpipi = new AliRDHFCutsDStartoKpipi("CutsDStartoKpipi"); cutsDStartoKpipi->SetUsePID(kFALSE); const Int_t nvars=16; const Int_t nptbins=2; Float_t* ptbins; ptbins=new Float_t[nptbins+1]; ptbins[0]=0.; ptbins[1]=5.; ptbins[2]=999.; cutsDStartoKpipi->SetPtBins(nptbins+1,ptbins); Float_t** rdcutsvalmine; rdcutsvalmine=new Float_t*[nvars]; for(Int_t iv=0;iv<nvars;iv++){ rdcutsvalmine[iv]=new Float_t[nptbins]; } //0-5 rdcutsvalmine[0][0]=0.10; //D0 inv mass window rdcutsvalmine[1][0]=0.06; // dca rdcutsvalmine[2][0]=0.9; // thetastar rdcutsvalmine[3][0]=0.5; // pt Pion rdcutsvalmine[4][0]=0.5; // Pt Kaon rdcutsvalmine[5][0]=0.1; // d0K rdcutsvalmine[6][0]=0.1; // d0Pi rdcutsvalmine[7][0]=0.0001; // d0xd0 rdcutsvalmine[8][0]=0.8; // costhetapoint rdcutsvalmine[9][0]=0.15; // Dstar inv mass window rdcutsvalmine[10][0]=0.03; // half width of (M_Kpipi-M_D0) rdcutsvalmine[11][0]=0.1; // Pt min of Pi soft rdcutsvalmine[12][0]=100.; // Pt max of pi soft rdcutsvalmine[13][0]=9999.; // theta rdcutsvalmine[14][0]=0.9; // |cosThetaPointXY| rdcutsvalmine[15][0]=1.; // NormDecayLenghtXY //5-999 rdcutsvalmine[0][1]=0.10; //D0 inv mass window rdcutsvalmine[1][1]=0.06; // dca rdcutsvalmine[2][1]=0.9; // thetastar rdcutsvalmine[3][1]=0.5; // pt Pion rdcutsvalmine[4][1]=0.5; // Pt Kaon rdcutsvalmine[5][1]=0.1; // d0K rdcutsvalmine[6][1]=0.1; // d0Pi rdcutsvalmine[7][1]=0.0001; // d0xd0 rdcutsvalmine[8][1]=0.7; // costhetapoint rdcutsvalmine[9][1]=0.15; // Dstar inv mass window rdcutsvalmine[10][1]=0.03; // half width of (M_Kpipi-M_D0) rdcutsvalmine[11][1]=0.1; // Pt min of Pi soft rdcutsvalmine[12][1]=100.; // Pt max of pi soft rdcutsvalmine[13][1]=9999.; // theta rdcutsvalmine[14][1]=0.8; // |cosThetaPointXY| rdcutsvalmine[15][1]=0.; // NormDecayLenghtXY cutsDStartoKpipi->SetCuts(nvars,nptbins,rdcutsvalmine); cutsDStartoKpipi->AddTrackCuts(esdTrackCuts); cutsDStartoKpipi->AddTrackCutsSoftPi(esdTrackCutsSoftPi); cutsDStartoKpipi->SetMinPtCandidate(2.); vHF->SetCutsDStartoKpipi(cutsDStartoKpipi); //-------------------------------------------------------- AliRDHFCutsLctoV0 *cutsLctoV0 = new AliRDHFCutsLctoV0("CutsLctoV0"); Float_t cutsArrayLctoV0[17]={1.0,1.0,0.05,0.05,0.0,0.0,0.0,1000.,1000.,0.99,3.,1000.,0.,0.,0.,0.,0.0}; cutsLctoV0->SetCuts(17,cutsArrayLctoV0); cutsLctoV0->AddTrackCuts(esdTrackCuts); vHF->SetCutsLctoV0(cutsLctoV0); // //--- set this if you want to reconstruct primary vertex candidate by // candidate using other tracks in the event (for pp, broad // interaction region) //vHF->SetRecoPrimVtxSkippingTrks(); //--- OR set this if you want to remove the candidate daughters from // the primary vertex, without recostructing it from scratch //vHF->SetRmTrksFromPrimVtx(); //--- check the settings vHF->PrintStatus(); //--- verbose // AliLog::SetClassDebugLevel("AliAnalysisVertexingHF",2); return vHF; }
AliEPSelectionTask *AddTaskEventplane(Bool_t useEtaGap=kTRUE,Float_t etaGap=0.4,Bool_t posTPCAOD=kFALSE,TString containername = "EPStat") { // Macro to connect an event plane selection task to an existing analysis manager. if(useEtaGap && posTPCAOD){ ::Error("AddTaskEventplane", "eta-splitting of events and one side of TPC not possible at same time!"); return NULL; } AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager(); if (!mgr) { ::Error("AddTaskEventplane", "No analysis manager to connect to."); return NULL; } // Check the analysis type using the event handlers connected to the analysis manager. //============================================================================== if (!mgr->GetInputEventHandler()) { ::Error("AddTaskEventplane", "This task requires an input event handler"); return NULL; } TString inputDataType = mgr->GetInputEventHandler()->GetDataType(); // can be "ESD" or "AOD" AliEPSelectionTask *eventplaneTask = new AliEPSelectionTask("EventplaneSelection"); eventplaneTask->SelectCollisionCandidates(AliVEvent::kMB | AliVEvent::kSemiCentral | AliVEvent::kCentral); if (inputDataType == "AOD"){ eventplaneTask->SetInput("AOD"); } eventplaneTask->SetTrackType("TPC"); eventplaneTask->SetUsePtWeight(); eventplaneTask->SetUsePhiWeight(); eventplaneTask->SetSaveTrackContribution(); if(useEtaGap){ eventplaneTask->SetSubeventsSplitMethod(AliEPSelectionTask::kEta); eventplaneTask->SetEtaGap(etaGap); } if(posTPCAOD){ eventplaneTask->SetPersonalAODtrackCuts(128,0.,0.8,0.15,20.); eventplaneTask->SetSubeventsSplitMethod(AliEPSelectionTask::kRandom); } // Cuts on primary tracks AliESDtrackCuts* esdTrackCutsL = new AliESDtrackCuts("AliESDtrackCuts", "Standard"); esdTrackCutsL->SetMinNClustersTPC(50); esdTrackCutsL->SetMaxChi2PerClusterTPC(3.5); // esdTrackCutsL->SetMaxCovDiagonalElements(2, 2, 0.5, 0.5, 2); // esdTrackCutsL->SetRequireTPCRefit(kTRUE); esdTrackCutsL->SetMaxDCAToVertexXY(3.0); esdTrackCutsL->SetMaxDCAToVertexZ(3.0); esdTrackCutsL->SetDCAToVertex2D(kTRUE); // esdTrackCutsL->SetRequireSigmaToVertex(kFALSE); // esdTrackCutsL->SetAcceptKinkDaughters(kFALSE); eventplaneTask->SetPersonalESDtrackCuts(esdTrackCutsL); mgr->AddTask(eventplaneTask); AliAnalysisDataContainer *cinput0 = mgr->GetCommonInputContainer(); AliAnalysisDataContainer *coutput1 = mgr->CreateContainer(containername, TList::Class(), AliAnalysisManager::kOutputContainer, "EventStat_temp.root"); mgr->ConnectInput(eventplaneTask, 0, mgr->GetCommonInputContainer()); mgr->ConnectOutput(eventplaneTask,1,coutput1); return eventplaneTask; }
AliESDtrackCuts *CreateTrackCutsPWGJE(Int_t cutMode) { // // Macro to create track cuts for PWG Jet analysis // User can select a specific set by indicating cutMode // cutMode has 8 digits: first 4 digits additional cuts, last 4 digits standard cuts // additional cuts are variations of standard cuts (used for hybrid track selection and QA) // Numbering starts from 1000 For standard and additional cut numbers AliESDtrackCuts *trackCuts = new AliESDtrackCuts("AliESDtrackCuts"); TString tag; Int_t mod = 10000; Bool_t bStdCutsDefined = kFALSE; //_____________________________________________________________________ // STANDARD CUTS //Get standard cuts: last 4 digits of cutMode Int_t stdCutMode = cutMode%mod; if(stdCutMode == 1000) { bStdCutsDefined = kTRUE; trackCuts = AliESDtrackCuts::GetStandardITSTPCTrackCuts2010(kTRUE,1); trackCuts->SetMinNCrossedRowsTPC(120); trackCuts->SetMinRatioCrossedRowsOverFindableClustersTPC(0.8); trackCuts->SetMaxChi2PerClusterITS(36); trackCuts->SetMaxFractionSharedTPCClusters(0.4); trackCuts->SetMaxChi2TPCConstrainedGlobal(36); trackCuts->SetEtaRange(-0.9,0.9); trackCuts->SetPtRange(0.15, 1e10); tag = "Global track RAA analysis QM2011 + Chi2ITS<36"; } if(stdCutMode == 1001) { bStdCutsDefined = kTRUE; // TPC trackCuts->SetMinNClustersTPC(90); trackCuts->SetMaxChi2PerClusterTPC(4); trackCuts->SetRequireTPCStandAlone(kTRUE); //cut on NClustersTPC and chi2TPC Iter1 trackCuts->SetAcceptKinkDaughters(kFALSE); trackCuts->SetRequireTPCRefit(kTRUE); trackCuts->SetMaxFractionSharedTPCClusters(0.4); // ITS trackCuts->SetRequireITSRefit(kTRUE); //accept secondaries trackCuts->SetMaxDCAToVertexXY(2.4); trackCuts->SetMaxDCAToVertexZ(3.2); trackCuts->SetDCAToVertex2D(kTRUE); //reject fakes trackCuts->SetMaxChi2PerClusterITS(36); trackCuts->SetRequireSigmaToVertex(kFALSE); trackCuts->SetEtaRange(-0.9,0.9); trackCuts->SetPtRange(0.15, 100.); tag = "Global tracks jet analysis with ITSrefit and NclsIter1=90, noSPD requirement"; } if(stdCutMode == 1002) { bStdCutsDefined = kTRUE; // TPC trackCuts->SetMinNClustersTPC(80); trackCuts->SetMaxChi2PerClusterTPC(4); trackCuts->SetAcceptKinkDaughters(kFALSE); trackCuts->SetRequireTPCRefit(kTRUE); trackCuts->SetMaxFractionSharedTPCClusters(0.4); // ITS trackCuts->SetRequireITSRefit(kTRUE); //accept secondaries trackCuts->SetMaxDCAToVertexXY(2.4); trackCuts->SetMaxDCAToVertexZ(3.2); trackCuts->SetDCAToVertex2D(kTRUE); //reject fakes trackCuts->SetMaxChi2PerClusterITS(36); trackCuts->SetRequireSigmaToVertex(kFALSE); trackCuts->SetEtaRange(-0.9,0.9); trackCuts->SetPtRange(0.15, 100.); tag = "Global tracks jet analysis with ITSrefit and Ncls=80, noSPD requirement"; } if(stdCutMode == 1003) { bStdCutsDefined = kTRUE; // tight global tracks trackCuts = AliESDtrackCuts::GetStandardITSTPCTrackCuts2010(kFALSE,1); trackCuts->SetMinNClustersTPC(0); trackCuts->SetMinNCrossedRowsTPC(120); trackCuts->SetMinRatioCrossedRowsOverFindableClustersTPC(0.1);// essentially switches it off trackCuts->SetMaxDCAToVertexXY(2.4); trackCuts->SetMaxDCAToVertexZ(3.2); trackCuts->SetDCAToVertex2D(kTRUE); trackCuts->SetMaxChi2PerClusterITS(36); trackCuts->SetMaxFractionSharedTPCClusters(0.4); tag = "Global tracks ITSTPC2010 + NCrossedRows + loose ITS"; } if(stdCutMode == 1004) { bStdCutsDefined = kTRUE; // TPC trackCuts->SetMinNClustersTPC(70); trackCuts->SetMaxChi2PerClusterTPC(4); trackCuts->SetRequireTPCStandAlone(kTRUE); //cut on NClustersTPC and chi2TPC Iter1 trackCuts->SetAcceptKinkDaughters(kFALSE); trackCuts->SetRequireTPCRefit(kTRUE); trackCuts->SetMaxFractionSharedTPCClusters(0.4); // ITS trackCuts->SetRequireITSRefit(kTRUE); //accept secondaries trackCuts->SetMaxDCAToVertexXY(2.4); trackCuts->SetMaxDCAToVertexZ(3.2); trackCuts->SetDCAToVertex2D(kTRUE); //reject fakes trackCuts->SetMaxChi2PerClusterITS(36); trackCuts->SetRequireSigmaToVertex(kFALSE); trackCuts->SetEtaRange(-0.9,0.9); trackCuts->SetPtRange(0.15, 100.); tag = "Global tracks jet analysis with ITSrefit and NclsIter1=70, noSPD requirement"; } if(stdCutMode == 1005) { bStdCutsDefined = kTRUE; // TPC trackCuts->SetMinNClustersTPC(70); trackCuts->SetMaxChi2PerClusterTPC(4); trackCuts->SetRequireTPCStandAlone(kTRUE); //cut on NClustersTPC and chi2TPC Iter1 trackCuts->SetAcceptKinkDaughters(kFALSE); trackCuts->SetRequireTPCRefit(kTRUE); trackCuts->SetMaxFractionSharedTPCClusters(0.4); // ITS trackCuts->SetRequireITSRefit(kTRUE); //accept secondaries trackCuts->SetMaxDCAToVertexXY(2.4); trackCuts->SetMaxDCAToVertexZ(3.2); trackCuts->SetDCAToVertex2D(kTRUE); //reject fakes trackCuts->SetMaxChi2PerClusterITS(36); trackCuts->SetRequireSigmaToVertex(kFALSE); trackCuts->SetEtaRange(-0.9,0.9); trackCuts->SetPtRange(0.15, 1E+15); tag = "Global tracks jet analysis with ITSrefit and NclsIter1=70, noSPD requirement, no upper pt cut"; } if(stdCutMode == 1006) { bStdCutsDefined = kTRUE; // TPC TFormula *f1NClustersTPCLinearPtDep = new TFormula("f1NClustersTPCLinearPtDep","70.+30./20.*x"); trackCuts->SetMinNClustersTPCPtDep(f1NClustersTPCLinearPtDep,20.); trackCuts->SetMinNClustersTPC(70); trackCuts->SetMaxChi2PerClusterTPC(4); trackCuts->SetRequireTPCStandAlone(kTRUE); //cut on NClustersTPC and chi2TPC Iter1 trackCuts->SetAcceptKinkDaughters(kFALSE); trackCuts->SetRequireTPCRefit(kTRUE); trackCuts->SetMaxFractionSharedTPCClusters(0.4); // ITS trackCuts->SetRequireITSRefit(kTRUE); //accept secondaries trackCuts->SetMaxDCAToVertexXY(2.4); trackCuts->SetMaxDCAToVertexZ(3.2); trackCuts->SetDCAToVertex2D(kTRUE); //reject fakes trackCuts->SetMaxChi2PerClusterITS(36); trackCuts->SetMaxChi2TPCConstrainedGlobal(36); trackCuts->SetRequireSigmaToVertex(kFALSE); trackCuts->SetEtaRange(-0.9,0.9); trackCuts->SetPtRange(0.15, 1E+15); tag = "Global tracks jet analysis with ITSrefit and NclsIter1=PtDep, noSPD requirement, no upper pt cut, golden chi2"; } if(stdCutMode == 1007) { bStdCutsDefined = kTRUE; trackCuts = AliESDtrackCuts::GetStandardITSTPCTrackCuts2011(kFALSE,1); //accept secondaries trackCuts->SetMaxDCAToVertexXY(2.4); trackCuts->SetMaxDCAToVertexZ(3.2); trackCuts->SetDCAToVertex2D(kTRUE); // trackCuts->SetMaxChi2TPCConstrainedGlobal(36); trackCuts->SetEtaRange(-0.9,0.9); trackCuts->SetPtRange(0.15, 1E+15); tag = "Global tracks with AliESDtrackCuts::GetStandardITSTPCTrackCuts2011(kFALSE)"; } if(stdCutMode == 1008) { bStdCutsDefined = kTRUE; trackCuts = AliESDtrackCuts::GetStandardITSTPCTrackCuts2011(kFALSE,1); //accept secondaries trackCuts->SetMaxDCAToVertexXY(2.4); trackCuts->SetMaxDCAToVertexZ(3.2); trackCuts->SetDCAToVertex2D(kTRUE); // trackCuts->SetMaxChi2TPCConstrainedGlobal(36); trackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD, AliESDtrackCuts::kNone); trackCuts->SetMaxFractionSharedTPCClusters(0.4); tag = "Global tracks 2011 with NCrossedRows cut"; } if(stdCutMode == 2000) { bStdCutsDefined = kTRUE; // TPC trackCuts->SetMinNClustersTPC(90); trackCuts->SetMaxChi2PerClusterTPC(4); trackCuts->SetRequireTPCStandAlone(kTRUE); //cut on NClustersTPC and chi2TPC Iter1 trackCuts->SetAcceptKinkDaughters(kFALSE); trackCuts->SetRequireTPCRefit(kTRUE); trackCuts->SetMaxFractionSharedTPCClusters(0.4); //accept secondaries trackCuts->SetMaxDCAToVertexXY(2.4); trackCuts->SetMaxDCAToVertexZ(3.2); trackCuts->SetDCAToVertex2D(kTRUE); trackCuts->SetRequireSigmaToVertex(kFALSE); trackCuts->SetEtaRange(-0.9,0.9); trackCuts->SetPtRange(0.15, 100.); tag = "Global tracks jet analysis, loose cuts, NClsIter1=90, no ITS requirements"; } if(stdCutMode == 2001) { bStdCutsDefined = kTRUE; trackCuts = AliESDtrackCuts::GetStandardTPCOnlyTrackCuts(); // trackCuts->SetRequireTPCRefit(kTRUE); trackCuts->SetMinNClustersTPC(70); trackCuts->SetEtaRange(-0.9,0.9); trackCuts->SetPtRange(0.15, 100.); tag = "TPConly track cuts, loose cuts, NCls=70, no ITS requirements"; } if(stdCutMode == 2002) { bStdCutsDefined = kTRUE; trackCuts = AliESDtrackCuts::GetStandardTPCOnlyTrackCuts(); // trackCuts->SetRequireTPCRefit(kTRUE); trackCuts->SetMinNClustersTPC(0); trackCuts->SetMinNCrossedRowsTPC(120); trackCuts->SetMinRatioCrossedRowsOverFindableClustersTPC(0.1);// essentially switches it off trackCuts->SetEtaRange(-0.9,0.9); trackCuts->SetPtRange(0.15, 100.); tag = "TPConly track cuts, loose cuts, NCls=70, no ITS requirements"; } if(!bStdCutsDefined) { printf("last 4 digits do not represent a predefined set of standard cuts. Returning 0\n"); return 0; } //_____________________________________________________________________ // ADDITIONAL CUTS //Get additional cut mode: first 4 digits of cutMode Int_t addCutMode = (int)((float)cutMode/(float)mod); if(addCutMode == 1000) { trackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD, AliESDtrackCuts::kAny); tag += " + additonal: SPD any requirement"; } if(addCutMode == 1001) { trackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD, AliESDtrackCuts::kNone); tag += " + additional: w/o hits in SPD"; } if(addCutMode == 1002) { trackCuts->SetMaxChi2PerClusterITS(1E10); tag += " + additional: maxITSChi2=1e10"; } if(addCutMode == 1003) { trackCuts->SetMinNClustersTPC(0); trackCuts->SetMinNCrossedRowsTPC(0); trackCuts->SetMinRatioCrossedRowsOverFindableClustersTPC(0.); tag += " + additional: minClusters=0 minCrossedRows=0 minCrossedRowsOverFindable=0"; } if(addCutMode == 1004) { trackCuts->SetRequireITSRefit(kFALSE); tag += " + additional: ITSrefit=kFALSE"; } if(addCutMode == 1005) { trackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD, AliESDtrackCuts::kOff); tag += " + additional: no SPD requirement (kOff)"; } Printf("Created track cuts for: %s", tag.Data()); return trackCuts; }
//________________________________________________________________ AliAnalysisCuts* SetupTrackCuts(Int_t cutInstance) { std::cout << "SetupTrackCuts()" <<std::endl; //AliAnalysisCuts* trackCuts=0x0; AliESDtrackCuts *fesdTrackCuts = new AliESDtrackCuts(); //global fesdTrackCuts->SetPtRange( 0.2 , 100. ); fesdTrackCuts->SetEtaRange( -0.8 , 0.8 ); fesdTrackCuts->SetAcceptKinkDaughters(kFALSE); fesdTrackCuts->SetRequireSigmaToVertex(kFALSE); fesdTrackCuts->SetDCAToVertex2D(kFALSE); fesdTrackCuts->SetMaxDCAToVertexZ(3.); fesdTrackCuts->SetMaxDCAToVertexXY(1.); fesdTrackCuts->SetRequireTPCRefit(kTRUE); fesdTrackCuts->SetRequireITSRefit(kTRUE); if(cutInstance == 0){ fesdTrackCuts->SetMinNClustersITS(4); fesdTrackCuts->SetMaxChi2PerClusterITS(4.5); fesdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kFirst); fesdTrackCuts->SetMinNClustersTPC(80); fesdTrackCuts->SetMinNCrossedRowsTPC(100); fesdTrackCuts->SetMinRatioCrossedRowsOverFindableClustersTPC(0.5); fesdTrackCuts->SetMaxChi2PerClusterTPC(4); } if(cutInstance == 1){ fesdTrackCuts->SetMinNClustersITS(5); fesdTrackCuts->SetMaxChi2PerClusterITS(3.5); fesdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kFirst); fesdTrackCuts->SetMinNClustersTPC(100); fesdTrackCuts->SetMinNCrossedRowsTPC(130); fesdTrackCuts->SetMinRatioCrossedRowsOverFindableClustersTPC(0.9); fesdTrackCuts->SetMaxChi2PerClusterTPC(3); } if(cutInstance == 2){ fesdTrackCuts->SetMinNClustersITS(4); fesdTrackCuts->SetMaxChi2PerClusterITS(3.5); fesdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kBoth); fesdTrackCuts->SetMinNClustersTPC(100); fesdTrackCuts->SetMinNCrossedRowsTPC(80); fesdTrackCuts->SetMinRatioCrossedRowsOverFindableClustersTPC(0.5); fesdTrackCuts->SetMaxChi2PerClusterTPC(3); } if(cutInstance == 3){ fesdTrackCuts->SetMinNClustersITS(4); fesdTrackCuts->SetMaxChi2PerClusterITS(4.5); fesdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kFirst); fesdTrackCuts->SetMinNClustersTPC(120); fesdTrackCuts->SetMinNCrossedRowsTPC(130); fesdTrackCuts->SetMinRatioCrossedRowsOverFindableClustersTPC(0.7); fesdTrackCuts->SetMaxChi2PerClusterTPC(4); } if(cutInstance == 4){ fesdTrackCuts->SetMinNClustersITS(6); fesdTrackCuts->SetMaxChi2PerClusterITS(2.5); fesdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kFirst); fesdTrackCuts->SetMinNClustersTPC(80); fesdTrackCuts->SetMinNCrossedRowsTPC(80); fesdTrackCuts->SetMinRatioCrossedRowsOverFindableClustersTPC(0.9); fesdTrackCuts->SetMaxChi2PerClusterTPC(3); } if(cutInstance == 5){ fesdTrackCuts->SetMinNClustersITS(5); fesdTrackCuts->SetMaxChi2PerClusterITS(4.5); fesdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kFirst); fesdTrackCuts->SetMinNClustersTPC(100); fesdTrackCuts->SetMinNCrossedRowsTPC(100); fesdTrackCuts->SetMinRatioCrossedRowsOverFindableClustersTPC(0.5); fesdTrackCuts->SetMaxChi2PerClusterTPC(4); } if(cutInstance == 6){ fesdTrackCuts->SetMinNClustersITS(5); fesdTrackCuts->SetMaxChi2PerClusterITS(4.5); fesdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kFirst); fesdTrackCuts->SetMinNClustersTPC(100); fesdTrackCuts->SetMinNCrossedRowsTPC(80); fesdTrackCuts->SetMinRatioCrossedRowsOverFindableClustersTPC(0.5); fesdTrackCuts->SetMaxChi2PerClusterTPC(3); } if(cutInstance == 7){ fesdTrackCuts->SetMinNClustersITS(5); fesdTrackCuts->SetMaxChi2PerClusterITS(3.5); fesdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kBoth); fesdTrackCuts->SetMinNClustersTPC(120); fesdTrackCuts->SetMinNCrossedRowsTPC(100); fesdTrackCuts->SetMinRatioCrossedRowsOverFindableClustersTPC(0.9); fesdTrackCuts->SetMaxChi2PerClusterTPC(3); } if(cutInstance == 8){ fesdTrackCuts->SetMinNClustersITS(4); fesdTrackCuts->SetMaxChi2PerClusterITS(4.5); fesdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kFirst); fesdTrackCuts->SetMinNClustersTPC(120); fesdTrackCuts->SetMinNCrossedRowsTPC(80); fesdTrackCuts->SetMinRatioCrossedRowsOverFindableClustersTPC(0.9); fesdTrackCuts->SetMaxChi2PerClusterTPC(3); } if(cutInstance == 9){ fesdTrackCuts->SetMinNClustersITS(4); fesdTrackCuts->SetMaxChi2PerClusterITS(4.5); fesdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kFirst); fesdTrackCuts->SetMinNClustersTPC(80); fesdTrackCuts->SetMinNCrossedRowsTPC(100); fesdTrackCuts->SetMinRatioCrossedRowsOverFindableClustersTPC(0.5); fesdTrackCuts->SetMaxChi2PerClusterTPC(4); } if(cutInstance == 10){ fesdTrackCuts->SetMinNClustersITS(5); // fesdTrackCuts->SetMaxChi2PerClusterITS(6); fesdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kFirst); fesdTrackCuts->SetMinNClustersTPC(100); fesdTrackCuts->SetMinNCrossedRowsTPC(120); fesdTrackCuts->SetMinRatioCrossedRowsOverFindableClustersTPC(0.7); fesdTrackCuts->SetMaxChi2PerClusterTPC(3); } if(cutInstance == 11){ fesdTrackCuts->SetMinNClustersITS(5); // fesdTrackCuts->SetMaxChi2PerClusterITS(100); fesdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kFirst); fesdTrackCuts->SetMinNClustersTPC(100); fesdTrackCuts->SetMinNCrossedRowsTPC(120); fesdTrackCuts->SetMinRatioCrossedRowsOverFindableClustersTPC(0.7); fesdTrackCuts->SetMaxChi2PerClusterTPC(3); } if(cutInstance == 12){ fesdTrackCuts->SetMinNClustersITS(6); // fesdTrackCuts->SetMaxChi2PerClusterITS(100); fesdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kFirst); fesdTrackCuts->SetMinNClustersTPC(80); fesdTrackCuts->SetMinNCrossedRowsTPC(100); fesdTrackCuts->SetMinRatioCrossedRowsOverFindableClustersTPC(0.5); fesdTrackCuts->SetMaxChi2PerClusterTPC(4); } if(cutInstance == 13){ fesdTrackCuts->SetMinNClustersITS(5); fesdTrackCuts->SetMaxChi2PerClusterITS(3.5); fesdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kBoth); fesdTrackCuts->SetMinNClustersTPC(80); fesdTrackCuts->SetMinNCrossedRowsTPC(100); fesdTrackCuts->SetMinRatioCrossedRowsOverFindableClustersTPC(0.5); fesdTrackCuts->SetMaxChi2PerClusterTPC(3); } if(cutInstance == 14){ fesdTrackCuts->SetMinNClustersITS(6); fesdTrackCuts->SetMaxChi2PerClusterITS(2.5); fesdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kBoth); fesdTrackCuts->SetMinNClustersTPC(80); fesdTrackCuts->SetMinNCrossedRowsTPC(100); fesdTrackCuts->SetMinRatioCrossedRowsOverFindableClustersTPC(0.7); fesdTrackCuts->SetMaxChi2PerClusterTPC(3); } if(cutInstance == 15){ fesdTrackCuts->SetMinNClustersITS(5); fesdTrackCuts->SetMaxChi2PerClusterITS(4.5); fesdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kFirst); fesdTrackCuts->SetMinNClustersTPC(80); fesdTrackCuts->SetMinNCrossedRowsTPC(100); fesdTrackCuts->SetMinRatioCrossedRowsOverFindableClustersTPC(0.5); fesdTrackCuts->SetMaxChi2PerClusterTPC(3); } if(cutInstance == 16){ fesdTrackCuts->SetMinNClustersITS(4); fesdTrackCuts->SetMaxChi2PerClusterITS(3.5); // fesdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kBoth); fesdTrackCuts->SetMinNClustersTPC(80); fesdTrackCuts->SetMinNCrossedRowsTPC(100); fesdTrackCuts->SetMinRatioCrossedRowsOverFindableClustersTPC(0.5); fesdTrackCuts->SetMaxChi2PerClusterTPC(4); } if(cutInstance == 17){ fesdTrackCuts->SetMinNClustersITS(3); // fesdTrackCuts->SetMaxChi2PerClusterITS(4); // fesdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kBoth); fesdTrackCuts->SetMinNClustersTPC(100); fesdTrackCuts->SetMinNCrossedRowsTPC(100); fesdTrackCuts->SetMinRatioCrossedRowsOverFindableClustersTPC(0.5); fesdTrackCuts->SetMaxChi2PerClusterTPC(4); } if(cutInstance == 18){ fesdTrackCuts->SetMinNClustersITS(4); // fesdTrackCuts->SetMaxChi2PerClusterITS(6); // fesdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kFirst); fesdTrackCuts->SetMinNClustersTPC(80); fesdTrackCuts->SetMinNCrossedRowsTPC(100); fesdTrackCuts->SetMinRatioCrossedRowsOverFindableClustersTPC(0.5); fesdTrackCuts->SetMaxChi2PerClusterTPC(3); } if(cutInstance == 19){ fesdTrackCuts->SetMinNClustersITS(5); fesdTrackCuts->SetMaxChi2PerClusterITS(3.5); fesdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kFirst); fesdTrackCuts->SetMinNClustersTPC(120); fesdTrackCuts->SetMinNCrossedRowsTPC(100); fesdTrackCuts->SetMinRatioCrossedRowsOverFindableClustersTPC(0.9); fesdTrackCuts->SetMaxChi2PerClusterTPC(3); } return fesdTrackCuts; }