void SetupTrackCutsDieleFilter(AliDielectron *diele, Bool_t isAOD); void SetupPairCutsDieleFilter(AliDielectron *diele, Bool_t isAOD); void SetupEventCutsDieleFilter(AliDielectron *diele, Int_t cutDefinition); void InitHistogramsDieleFilter(AliDielectron *diele); AliESDtrackCuts *SetupESDtrackCutsDieleFilter(); AliDielectron* ConfigJpsi2eeFilter(Bool_t isAOD=kFALSE) { // // Setup the instance of AliDielectron // // create the actual framework object TString name="trackQ+Pt>1.+652&&|Y|<0.9"; AliDielectron *diele = new AliDielectron(Form("%s",name.Data()), Form("Track cuts: %s",name.Data())); // cut setup SetupEventCutsDieleFilter(diele); SetupTrackCutsDieleFilter(diele, isAOD); SetupPairCutsDieleFilter(diele, isAOD); // // QA histogram setup // InitHistogramsDieleFilter(diele, isAOD); return diele; } //______________________________________________________________________________________ void SetupEventCutsDieleFilter(AliDielectron *diele) { // // Setup the event cuts // AliDielectronVarCuts *vtxZ = new AliDielectronVarCuts("vtxZ","Vertex z cut"); vtxZ->AddCut(AliDielectronVarManager::kZvPrim,-15.,15.); diele->GetEventFilter().AddCuts(vtxZ); } //______________________________________________________________________________________ void SetupTrackCutsDieleFilter(AliDielectron *diele, Bool_t isAOD) { // // Setup the track cuts // //ESD quality cuts DielectronTrackCuts if (!isAOD) { diele->GetTrackFilter().AddCuts(SetupESDtrackCutsDieleFilter()); } else { AliDielectronTrackCuts *trackCuts=new AliDielectronTrackCuts("trackCuts","trackCuts"); trackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kAny); trackCuts->SetRequireTPCRefit(kTRUE); trackCuts->SetRequireITSRefit(kTRUE); diele->GetTrackFilter().AddCuts(trackCuts); } //Pt cut AliDielectronVarCuts *pt = new AliDielectronVarCuts("Pt>.5+601. && 65AddCut(AliDielectronVarManager::kPt,1.,1e30); pt->AddCut(AliDielectronVarManager::kTPCsignal,65.,90.); if (isAOD){ // TPC #clusteres cut pt->AddCut(AliDielectronVarManager::kNclsTPC,90.,160.); // pt->AddCut(AliDielectronVarManager::kEta,-0.88,0.88); //TODO: DCA cuts to be investigated!!! // pt->AddCut(AliDielectronVarManager::kImpactParXY,-1.,1.); // pt->AddCut(AliDielectronVarManager::kImpactParZ,-3.,3.); } diele->GetTrackFilter().AddCuts(pt); } //______________________________________________________________________________________ void SetupPairCutsDieleFilter(AliDielectron *diele, Bool_t isAOD) { // // Setup the pair cuts // //Invarian mass selection AliDielectronVarCuts *invMassCut=new AliDielectronVarCuts("InvMassY","2AddCut(AliDielectronVarManager::kM,2.,1e30); invMassCut->AddCut(AliDielectronVarManager::kY,-0.9,0.9); // invMassCut->AddCut(AliDielectronVarManager::kPairType,1.); diele->GetPairFilter().AddCuts(invMassCut); } //______________________________________________________________________________________ AliESDtrackCuts *SetupESDtrackCutsDieleFilter() { // // Setup default AliESDtrackCuts // AliESDtrackCuts *esdTrackCuts = new AliESDtrackCuts; esdTrackCuts->SetEtaRange( -0.9 , 0.9 ); esdTrackCuts->SetMaxDCAToVertexZ(3.0); esdTrackCuts->SetMaxDCAToVertexXY(1.0); esdTrackCuts->SetRequireTPCRefit(kTRUE); esdTrackCuts->SetRequireITSRefit(kTRUE); esdTrackCuts->SetAcceptKinkDaughters(kFALSE); esdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kAny); esdTrackCuts->SetMinNClustersTPC(100); esdTrackCuts->SetMaxChi2PerClusterTPC(4); return esdTrackCuts; } //______________________________________________________________________________________ void InitHistogramsDieleFilter(AliDielectron *diele, Bool_t isAOD) { // // Initialise the histograms // //Setup histogram classes AliDielectronHistos *histos= new AliDielectronHistos(diele->GetName(), diele->GetTitle()); //Initialise histogram classes histos->SetReservedWords("Track;Pair"); histos->AddClass("Event"); //Track classes //to fill also track info from 2nd event loop until 2 for (Int_t i=0; i<2; ++i){ histos->AddClass(Form("Track_%s",AliDielectron::TrackClassName(i))); } //Pair classes // to fill also mixed event histograms loop until 10 for (Int_t i=0; i<3; ++i){ histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(i))); } //add histograms to event class histos->UserHistogram("Event","VtxZ","Vertex Z;Z[cm]",300,-15.,15.,AliDielectronVarManager::kZvPrim); //add histograms to Track classes histos->UserHistogram("Track","Pt","Pt;Pt [GeV];#tracks",400,0,20.,AliDielectronVarManager::kPt); histos->UserHistogram("Track","TPCnCls","Number of Clusters TPC;TPC number clusteres;#tracks",160,-0.5,159.5,AliDielectronVarManager::kNclsTPC); histos->UserHistogram("Track","dXY","dXY;dXY [cm];#tracks",500,-1.,1.,AliDielectronVarManager::kImpactParXY); histos->UserHistogram("Track","dZ","dZ;dZ [cm];#tracks",600,-3.,3.,AliDielectronVarManager::kImpactParZ); histos->UserHistogram("Track","Eta_Phi","Eta Phi Map; Eta; Phi;#tracks", 100,-1,1,144,0,6.285,AliDielectronVarManager::kEta,AliDielectronVarManager::kPhi); histos->UserHistogram("Track","dEdx_P","dEdx;P [GeV];TPC signal (arb units);#tracks", 200,0.2,20.,100,0.,200.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCsignal,kTRUE); histos->UserHistogram("Track","TPCnSigmaEle_P","TPC number of sigmas Electrons;P [GeV];TPC number of sigmas Electrons;#tracks", 200,0.2,20.,100,-10.,10.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaEle,kTRUE); //add histograms to Pair classes histos->UserHistogram("Pair","InvMass","Inv.Mass;Inv. Mass [GeV];#pairs", 201,-.01,4.01,AliDielectronVarManager::kM); histos->UserHistogram("Pair","Rapidity","Rapidity;Rapidity;#pairs", 100,-1.,1.,AliDielectronVarManager::kY); histos->UserHistogram("Pair","OpeningAngle","Opening angle;angle", 100,0.,3.15,AliDielectronVarManager::kOpeningAngle); diele->SetHistogramManager(histos); }