- void InitHistograms(AliDielectron *die, Int_t cutDefinition);\r
- void InitCF(AliDielectron* die, Int_t cutDefinition);\r
-\r
- void SetupTrackCuts(AliDielectron *die, Int_t cutDefinition);\r
- void SetupPairCuts(AliDielectron *die, Int_t cutDefinition);\r
-\r
- void EnableMC();\r
- AliESDtrackCuts *SetupESDtrackCuts(Int_t cutDefinition);\r
-\r
- TString names=("MixEvt");\r
- TObjArray *arrNames=names.Tokenize(";");\r
- const Int_t nDie=arrNames->GetEntries();\r
- Bool_t MCenabled=kFALSE;\r
-\r
- Bool_t kMix = 1; \r
-\r
- AliDielectron* Configpp2012Oezdemir(Int_t cutDefinition,Bool_t hasMC=kFALSE)\r
- {\r
- //\r
- // Setup the instance of AliDielectron\r
- //\r
- \r
- MCenabled=hasMC;\r
- \r
- // create the actual framework object\r
- \r
- TString name=Form("%02d",cutDefinition);\r
- if ((cutDefinition)<arrNames->GetEntriesFast()){\r
- name=arrNames->At((cutDefinition))->GetName();\r
- }\r
-\r
- //thisCut only relevant for MC:\r
- AliDielectron *die =\r
- new AliDielectron(Form\r
- ("%s",name.Data()),\r
- Form("Track cuts: %s",name.Data()));\r
- \r
- if(kMix){\r
- AliDielectronMixingHandler *mix = new AliDielectronMixingHandler;\r
- mix->SetMixType(AliDielectronMixingHandler::kAll);\r
- mix->AddVariable(AliDielectronVarManager::kZvPrim,"-10., -7.5, -5., -2.5 , 0., 2.5, 5., 7.5 , 10.");\r
- mix->AddVariable(AliDielectronVarManager::kNacc,"0,10000");\r
- mix->SetDepth(10);\r
- die->SetMixingHandler(mix);\r
- }\r
- \r
- // cut setup\r
- SetupTrackCuts(die,cutDefinition);\r
- SetupPairCuts(die,cutDefinition);\r
- \r
- // histogram setup\r
- // only if an AliDielectronHistos object is attached to the\r
- // dielectron framework histograms will be filled\r
- //\r
- InitHistograms(die,cutDefinition);\r
-\r
- // the last definition uses no cuts and only the QA histograms should be filled!\r
- //InitCF(die,cutDefinition);\r
-\r
- return die;\r
- }\r
-\r
- //______________________________________________________________________________________\r
- void SetupTrackCuts(AliDielectron *die, Int_t cutDefinition)\r
- {\r
- //\r
- // Setup the track cuts\r
- //\r
- //\r
- //___________________________________________\r
- AliDielectronPID *pidTT = new AliDielectronPID("TPC-TOF","TPC-TOF");\r
- pidTT->AddCut(AliDielectronPID::kTPC,AliPID::kElectron,-1.5,3.,0.2,100.,kFALSE);\r
- pidTT->AddCut( AliDielectronPID::kTOF ,AliPID::kElectron , -3. , 3. , 0.4 , 5., kFALSE );\r
- pidTT->AddCut(AliDielectronPID::kTPC,AliPID::kPion,-100.,4.,0.2,100.,kTRUE);\r
-\r
- //___________________________________________\r
- AliDielectronPID *pidTOF = new AliDielectronPID("TOF","TOF");\r
- pidTOF->AddCut( AliDielectronPID::kTOF ,AliPID::kElectron , -3. , 3. , 0.4 , 5., kFALSE );\r
- // \r
- // =============CREATE GROUPS FOR ==============\r
- //\r
-\r
- //Config 0: TPC-TOF \r
- AliDielectronCutGroup* cgTrackFilterPIDTPC = new AliDielectronCutGroup("cgPIDTPC","cgPIDTPC",AliDielectronCutGroup::kCompAND);\r
- cgTrackFilterPIDTPC->AddCut(SetupESDtrackCuts(cutDefinition));\r
- cgTrackFilterPIDTPC->AddCut(pidTT);\r
-\r
- //Config 1: TOF\r
- AliDielectronCutGroup* cgTrackFilterPIDTOF = new AliDielectronCutGroup("cgPIDTOF","cgPIDTOF",AliDielectronCutGroup::kCompAND);\r
- cgTrackFilterPIDTOF->AddCut(SetupESDtrackCuts(cutDefinition));\r
- cgTrackFilterPIDTOF->AddCut(pidTOF);\r
-\r
- //Config 2: no PID\r
- AliDielectronCutGroup* cgTrackFilternoPID = new AliDielectronCutGroup("cgnoPID","cgnoPID",AliDielectronCutGroup::kCompAND);\r
- cgTrackFilternoPID->AddCut(SetupESDtrackCuts(cutDefinition));\r
-\r
- //Correct BG scheme for Combinatorial BG \r
- //die->SetPreFilterUnlikeOnly();\r
- die->SetPreFilterAllSigns();\r
- die->SetUseKF(kFALSE);\r
-\r
- if ( cutDefinition ==0 ) {\r
- die->GetTrackFilter().AddCuts(cgTrackFilterPIDTPC); \r
- }\r
-\r
- }\r
- //______________________________________________________________________________________\r
-\r
- void SetupPairCuts(AliDielectron *die, Int_t cutDefinition)\r
- {\r
- //\r
- // Setup the pair cuts\r
- //\r
- \r
- \r
- if(cutDefinition == 0){\r
-\r
- AliDielectronTrackCuts *noconv=new AliDielectronTrackCuts("noConv","conversion tagging");\r
- noconv->SetV0DaughterCut(AliPID::kElectron,kTRUE);\r
- die->GetTrackFilter().AddCuts(noconv);\r
- \r
- //pair rapidity\r
-// AliDielectronVarCuts *RapidityCut=new AliDielectronVarCuts("RapidityCut","RapidityCut");\r
-// RapidityCut->AddCut(AliDielectronVarManager::kY, -0.8 , 0.8);\r
-// die->GetPairFilter().AddCuts(RapidityCut); \r
-\r
- AliDielectronVarCuts *PhiV = new AliDielectronVarCuts("PhiV","PhiV");//mass and Phiv together\r
- PhiV->AddCut(AliDielectronVarManager::kM, 0.0 , 0.05);\r
- PhiV->AddCut(AliDielectronVarManager::kPhivPair, 2.5 , 3.2 );\r
- die->GetPairPreFilter().AddCuts(PhiV);\r
- /*\r
- AliDielectronVarCuts *PhiV2 = new AliDielectronVarCuts("PhiV2","PhiV2");//mass and Phiv together\r
- PhiV2->AddCut(AliDielectronVarManager::kM, 0.05 , 1000.);\r
-\r
- AliDielectronCutGroup* pairCutsCG2 =new AliDielectronCutGroup("pairCutsCG2","pairCutsCG2",AliDielectronCutGroup::kCompOR);\r
- pairCutsCG2->AddCut(PhiV);\r
- pairCutsCG2->AddCut(PhiV2);\r
- die->GetPairFilter().AddCuts(pairCutsCG2);\r
- */\r
- /*\r
- if (MCenabled) {\r
- AliDielectronVarCuts *mcpid =new AliDielectronVarCuts("mcpid","mcpid");\r
- mcpid->SetCutType(AliDielectronVarCuts::kAny);\r
- mcpid->AddCut(AliDielectronVarManager::kPdgCode, 11);\r
- mcpid->AddCut(AliDielectronVarManager::kPdgCode, -11);\r
- die->GetTrackFilter().AddCuts(mcpid);\r
-\r
- AliDielectronVarCuts *MCnoConv =new AliDielectronVarCuts("MCnoConv","MCnoConv");\r
- MCnoConv->AddCut(AliDielectronVarManager::kPdgCodeMother, 22,kTRUE);\r
- die->GetTrackFilter().AddCuts(MCnoConv);\r
- }\r
- */ \r
- }\r
-\r
- }\r
-\r
- //______________________________________________________________________________________\r
- AliESDtrackCuts *SetupESDtrackCuts(Int_t cutDefinition)\r
- {\r
- //\r
- // Setup default AliESDtrackCuts\r
- //\r
- AliESDtrackCuts *esdTrackCuts = new AliESDtrackCuts;\r
- \r
- esdTrackCuts->SetMaxDCAToVertexZ(3.0);\r
- esdTrackCuts->SetMaxDCAToVertexXY(1.0); \r
-\r
- esdTrackCuts->SetPtRange( 0.2 , 100.0);\r
- esdTrackCuts->SetEtaRange( -0.8 , 0.8 );\r
- esdTrackCuts->SetRequireSigmaToVertex(kFALSE);\r
- esdTrackCuts->SetAcceptKinkDaughters(kFALSE);\r
- esdTrackCuts->SetDCAToVertex2D(kFALSE);\r
-\r
- esdTrackCuts->SetRequireITSRefit(kTRUE);\r
- esdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kFirst); //Base\r
- esdTrackCuts->SetMinNClustersITS(3); //Base\r
-\r
- esdTrackCuts->SetRequireTPCRefit(kTRUE);\r
- esdTrackCuts->SetMinNClustersTPC(80); //Base\r
-\r
- esdTrackCuts->SetMinNCrossedRowsTPC(100); //Base\r
-\r
- esdTrackCuts->SetMinRatioCrossedRowsOverFindableClustersTPC(0.5);\r
- esdTrackCuts->SetMaxChi2PerClusterTPC(4);\r
-\r
- return esdTrackCuts;\r
- }\r
-\r
- //______________________________________________________________________________________\r
-\r
-void InitHistograms(AliDielectron *die, Int_t cutDefinition)\r
- {\r
- //\r
- // Initialise the histograms\r
- //\r
- \r
- //Setup histogram classes\r
- AliDielectronHistos *histos=\r
- new AliDielectronHistos(die->GetName(),\r
- die->GetTitle());\r
- \r
-\r
-\r
- //Initialise histogram classes\r
- histos->SetReservedWords("Track;Pair");\r
- //histos->SetReservedWords("Track"); \r
-\r
- //Event class\r
- histos->AddClass("Event");\r
- \r
-\r
- //Track classes\r
- //to fill also track info from 2nd event loop until 2\r
- for (Int_t i=0; i<2; ++i){\r
- histos->AddClass(Form("Track_%s",AliDielectron::TrackClassName(i)));\r
- }\r
- \r
- //Pair classes\r
- // to fill also mixed event histograms loop until 10\r
-\r
- for (Int_t i=0; i<3; ++i){\r
- histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(i)));\r
-\r
- }\r
-\r
- if(kMix){\r
- histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(3))); //ME ++\r
- histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(4)));//ME -+\r
- histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(6)));//ME +-\r
- histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(7))); // ME --\r
- }\r
-\r
-\r
- //add histograms to event class\r
- histos->UserHistogram("Event","nEvents","Number of processed events after cuts;Number events",1,0,1,AliDielectronVarManager::kNevents);\r
- histos->UserHistogram("Event","ZVertex","ZVertex;ZVertex/cm",480,-12.,12.,AliDielectronVarManager::kZvPrim);\r
- histos->UserHistogram("Event","nESDTracks","ESD tracks;ESD tracks;Number events",100,0,200,AliDielectronVarManager::kTracks);\r
- histos->UserHistogram("Event","Nacc","Number of accepted tracks;Number events",100,0,200,AliDielectronVarManager::kNacc);\r
- histos->UserHistogram("Event","NVtxContrib","Number of Vertex Contributor;NVtx;Number events",100,0,100,AliDielectronVarManager::kNVtxContrib);\r
-\r
-\r
- //add histograms to Track classes\r
- histos->UserHistogram("Track","P","P;P [GeV];#tracks",500,0.,10.,AliDielectronVarManager::kPIn);\r
- histos->UserHistogram("Track","Pt","Pt;Pt [GeV];#tracks",500,0.,10.,AliDielectronVarManager::kPt);\r
- histos->UserHistogram("Track","Eta","Eta; Eta ;#tracks",100,-1.,1.,AliDielectronVarManager::kEta);\r
- histos->UserHistogram("Track","Phi","Phi; Phi ;#tracks",640,0.,6.4,AliDielectronVarManager::kPhi);\r
-\r
-\r
- histos->UserHistogram("Track","Eta_phi","Eta vs Phi;Eta;Phi",100,-1.,1.,320,0.,6.4,AliDielectronVarManager::kEta,AliDielectronVarManager::kPhi);\r
- histos->UserHistogram("Track","Eta_pt","Eta vs Pt;Eta;Pt",100,-1.,1.,500,0.,10.,AliDielectronVarManager::kEta,AliDielectronVarManager::kPt);\r
- histos->UserHistogram("Track","ImpParXY_Pt","ImpParXY_Pt; Pt; ÍmpParXY",500,0.,10.,500,-5.,5.,AliDielectronVarManager::kPt,AliDielectronVarManager::kImpactParXY);\r
- histos->UserHistogram("Track","ImpParZ_Pt","ImpParZ_Pt; Pt; ÍmpParZ",500,0.,10.,500,-5.,5.,AliDielectronVarManager::kPt,AliDielectronVarManager::kImpactParZ);\r
- \r
-\r
- //track checks (ITS)\r
- histos->UserHistogram("Track","ITSchi2Cl_Mom","ITS Chi2 vs Momentum;Mom;ITS chi2",500,0.,5.,50,0.,5.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kITSchi2Cl);\r
- histos->UserHistogram("Track","NclsITS_Mom",";Mom;kNclsITS",500,0.,5.,7,0,7,AliDielectronVarManager::kPIn,AliDielectronVarManager::kNclsITS);\r
-\r
- //track checks (TPC)\r
- histos->UserHistogram("Track","TPCsignalNfrac_Mom",";fraction TPCSignalN/TPCncls vs Momentum;Mom;TPCSignalN/TPCncls",500,0.,5.,60,0.,1.2,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCsignalNfrac);\r
- histos->UserHistogram("Track","TPCchi2Cl_Mom","TPC Chi2 vs Momentum;Mom;TPC Chi2",500,0.,10.,100,0,5,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCchi2Cl);\r
- histos->UserHistogram("Track","TPCclsDiff_Mom","kTPCclsDiff vs Momentum;Mom;kTPCclsDiff",500,0.,10.,100,-10,10,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCclsDiff);\r
- histos->UserHistogram("Track","FindableTPCcls_Mom","kNFclsTPC vs Momentum;Mom;kNFclsTPC",500,0.,10.,200,0.,200.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kNFclsTPC);\r
- histos->UserHistogram("Track","TPCcls_Mom","kNclsTPC vs Momentum;Mom;kNclsTPC",500,0.,10.,200,0.,200.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kNclsTPC);\r
- histos->UserHistogram("Track","kNclsSFracTPC_Mom","kNclsSFracTPC vs Momentum;Mom;kTPCclsSFrac",500,0.,10.,1000,0.,1.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kNclsSFracTPC);\r
- histos->UserHistogram("Track","kNFclsTPCrFrac_Mom","kNFclsTPCrFrac vs Momentum;Mom;kNFclsTPCrFrac",500,0.,10.,60,0.,1.2.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kNFclsTPCrFrac);\r
-\r
- //track checks (TOF)\r
- histos->UserHistogram("Track","TOFbeta_Mom","kTOFbeta vs Momentum;Mom;TOFbeta",500,0.,5.,120,0.,1.2,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTOFbeta);\r
- histos->UserHistogram("Track","TOFPIDBit_Mom","kTOFPIDBit vs Momentum;Mom;TOFPIDbit",500,0.,5.,2,0.,1.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTOFPIDBit);\r
-\r
- //track checks (PID)\r
- histos->UserHistogram("Track","ITSnSigma_MomPio","ITS number of sigmas Pion vs Momentum;Mom;ITSsigmaPion",500,0.,5.,1000,-20,20,AliDielectronVarManager::kPIn,AliDielectronVarManager::kITSnSigmaPio);\r
- histos->UserHistogram("Track","TPCnSigma_MomPio","TPC number of sigmas Pions vs Momentum;Mom;TPCsigmaPion",500,0.,5.,1000,-20,20,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaPio);\r
-\r
- histos->UserHistogram("Track","ITSnSigma_MomEle","ITS number of sigmas Electrons vs Momentum;Mom;ITSsigmaEle",500,0.,5.,800,-40,40,AliDielectronVarManager::kPIn,AliDielectronVarManager::kITSnSigmaEle);\r
- histos->UserHistogram("Track","TPCnSigma_MomEle","TPC number of sigmas Electrons vs Momentum;Mom;TPCsigmaEle",1000,0.,10.,800,-40,40,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaEle);\r
- histos->UserHistogram("Track","TOFnSigma_MomEle","TOF number of sigmas Electrons vs Momentum;Mom;TOFsigmaEle",500,0.,5.,800,-40,40,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTOFnSigmaEle);\r
-\r
- histos->UserHistogram("Track","ITSdEdx_P","dEdx;P [GeV];ITS signal (arb units) vs Momentum;Mom;ITSsignal", 500,0,5,800,0,200,AliDielectronVarManager::kPIn,AliDielectronVarManager::kITSsignal);\r
- histos->UserHistogram("Track","TPCdEdx_P","dEdx;P [GeV];TPC signal (arb units) vs Momentum;Mom;TPCsignal", 500,0,10.,800,0,200,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCsignal);\r
-\r
- //\r
- //add histograms to Pair classes\r
- //\r
-\r
- histos->UserHistogram("Pair","InvMass","Inv.Mass;Inv. Mass [GeV];#pairs",\r
- 500,0,4,AliDielectronVarManager::kM);\r
-\r
- histos->UserHistogram("Pair","InvMass_low","Inv.Mass;Inv. Mass [GeV];#pairs",\r
- 500,0,0.5,AliDielectronVarManager::kM);\r
-\r
- histos->UserHistogram("Pair","InvMass10","Inv.Mass;Inv. Mass [GeV];#pairs",\r
- 500,0.,5.,AliDielectronVarManager::kM);\r
-\r
- histos->UserHistogram("Pair","kDeltaEta","kDeltaEta;kDeltaEta;#pairs",\r
- 160,0.,1.6,AliDielectronVarManager::kDeltaEta);\r
-\r
- histos->UserHistogram("Pair","kDeltaEta_low","kDeltaEta;kDeltaEta;#pairs",\r
- 500,0.,0.5,AliDielectronVarManager::kDeltaEta);\r
-\r
- histos->UserHistogram("Pair","kDeltaPhi","kDeltaPhi;kDeltaPhi;#pairs",\r
- 320,0.,6.4,AliDielectronVarManager::kDeltaPhi);\r
-\r
- histos->UserHistogram("Pair",\r
- "kDeltaEta_kDeltaPhi","kDeltaEta_kDeltaPhi;kDeltaEta;kDeltaPhi",\r
- 160, 0. , 1.6, 320 , 0., 6.4 ,\r
- AliDielectronVarManager::kDeltaEta , AliDielectronVarManager::kDeltaPhi );\r
-\r
- histos->UserHistogram("Pair","PhiV",";PhiV;#pairs",\r
- 320,0.,6.4,AliDielectronVarManager::kPhivPair);\r
-\r
-\r
- histos->UserHistogram("Pair","PhiV_Pt",";Pt;PhiV",\r
- 100,0.,10.,320,0.,6.4,AliDielectronVarManager::kPt,AliDielectronVarManager::kPhivPair);\r
-\r
- histos->UserHistogram("Pair","InvMass_bin2","Inv.Mass;Inv. Mass [GeV];#pairs",\r
- "0. , 0.025, 0.05 , 0.075 ,0.1 ,0.15 , 0.2 , 0.25 , 0.3 , \r
- 0.4 , 0.5 , 0.6, 0.65 , 0.688 , 0.725, 0.75, 0.775, 0.8 , 0.85 ,\r
- 0.95, 0.975 , 1.0 , 1.025 , 1.05, 1.125 , 1.25 , 1.5 , 1.75 , 2.0 , \r
- 2.25, 2.5 , 2.75 , 2.85, 2.95,3.05, 3.1 , 3.15 , \r
- 3.3 , 3.5, 3.75 , 4.0",AliDielectronVarManager::kM);\r
-\r
-\r
- histos->UserHistogram("Pair",\r
- "InvMass_Pt","InvMass_Pt;InvMass;Pt",\r
- 500, 0. , 4., 100 , 0., 5. ,\r
- AliDielectronVarManager::kM , AliDielectronVarManager::kPt );\r
-\r
- histos->UserHistogram("Pair",\r
- "InvMass_PhivPair","InvMass_PhivPair;InvMass;PhivPair",\r
- 500, 0. , 4., 320 , 0., 3.2 ,\r
- AliDielectronVarManager::kM , AliDielectronVarManager::kPhivPair );\r
-\r
- histos->UserHistogram("Pair",\r
- "OpAngle","Opening angle;Opening angle;#pairs",\r
- 320, 0. , 3.2, \r
- AliDielectronVarManager::kOpeningAngle);\r
-\r
- histos->UserHistogram("Pair",\r
- "OpAngle_InvMass","OpAngle_InvMass;Opening angle;Invariant Mass",\r
- 320, 0. , 3.2, 500 , 0. , 4. ,\r
- AliDielectronVarManager::kOpeningAngle,AliDielectronVarManager::kM);\r
-\r
-\r
- histos->UserHistogram("Pair",\r
- "Phi","Phi;counts;Phi",\r
- 320, 0. , 6.4, AliDielectronVarManager::kPhi);\r
-\r
- histos->UserHistogram("Pair",\r
- "Y","Y;counts;Y",\r
- 120, -1.2 , 1.2, AliDielectronVarManager::kY);\r
-\r
- die->SetHistogramManager(histos);\r
-\r
-}\r
-\r
-\r
-void InitCF(AliDielectron* die, Int_t cutDefinition)\r
-{\r
- //\r
- // Setupd the CF Manager if needed\r
- //\r
- AliDielectronCF *cf=new AliDielectronCF(die->GetName(),die->GetTitle());\r
- \r
- //pair variables\r
- cf->AddVariable(AliDielectronVarManager::kPt,100,0.,10.);\r
- //cf->AddVariable(AliDielectronVarManager::kP,200,0,20);\r
- //cf->AddVariable(AliDielectronVarManager::kPhi,64, -3.2, 3.2);\r
- cf->AddVariable(AliDielectronVarManager::kY,40,-2.,2.);\r
- cf->AddVariable(AliDielectronVarManager::kM,500,0.,4.); \r
- //cf->AddVariable(AliDielectronVarManager::kPairType,10,0,10);\r
- //cf->AddVariable(AliDielectronVarManager::kOpeningAngle,315,0,3.15);\r
- //cf->AddVariable(AliDielectronVarManager::kDeltaEta,200,-2,2);\r
- //cf->AddVariable(AliDielectronVarManager::kDeltaPhi,100,0,3.15);\r
- //cf->AddVariable(AliDielectronVarManager::kHaveSameMother,21,-10,10);\r
- cf->AddVariable(AliDielectronVarManager::kNumberOfDaughters,5,0,5);\r
- //leg variables\r
- cf->AddVariable(AliDielectronVarManager::kPt,100,0.,10.,kTRUE);\r
- //cf->AddVariable(AliDielectronVarManager::kP,200,0.,20.,kTRUE);\r
- //cf->AddVariable(AliDielectronVarManager::kY,40,-2.,2.,kTRUE);\r
- cf->AddVariable(AliDielectronVarManager::kEta,20,-1.,1.,kTRUE);\r
- cf->AddVariable(AliDielectronVarManager::kPhi,100,0.,3.15,kTRUE);\r
-// cf->AddVariable(AliDielectronVarManager::kITSsignal,1000,0.0.,1000.,kTRUE);\r
-// cf->AddVariable(AliDielectronVarManager::kHaveSameMother,21,-10,10,kTRUE);\r
-// cf->AddVariable(AliDielectronVarManager::kNumberOfDaughters,11,0,10,kTRUE);\r
- \r
- //only in this case write MC truth info\r
- \r
- if (MCenabled) {\r
- cf->SetStepForMCtruth();\r
- //cf->SetStepsForMCtruthOnly();\r
- //cf->SetStepForNoCutsMCmotherPid();\r
- cout << "MC ENABLED ------------------------------------------------------" << endl;\r
- //cf->AddVariable(AliDielectronVarManager::kPdgCode,10000,-5000.5,4999.5,kTRUE);\r
- //cf->AddVariable(AliDielectronVarManager::kPdgCodeMother,10000,-5000.5,4999.5,kTRUE);\r
- }\r
-\r
- //cf->SetStepsForEachCut();\r
- //cf->SetStepForPreFilter();\r
- cf->SetStepForAfterAllCuts();\r
- //cf->SetStepsForBackground();\r
- cf->SetStepsForSignal();\r
- \r
- die->SetCFManagerPair(cf);\r
-\r
-/*\r
-\r
- AliDielectronSignalMC* lowMassDiele=new\r
- AliDielectronSignalMC("lowMassDiele","low mass dielectron pairs");\r
- lowMassDiele->SetLegPDGs(11,-11);\r
- lowMassDiele->SetCheckBothChargesLegs(kTRUE,kTRUE);\r
- lowMassDiele->SetLegSources(AliDielectronSignalMC::kPrimary,\r
- AliDielectronSignalMC::kPrimary);\r
- lowMassDiele->SetFillPureMCStep(kTRUE);\r
- die->AddSignalMC(lowMassDiele);\r
-\r
- AliDielectronSignalMC* secondary=new\r
- AliDielectronSignalMC("secondary","secondary electrons pairs");\r
- secondary->SetLegPDGs(11,-11);\r
- secondary->SetCheckBothChargesLegs(kTRUE,kTRUE);\r
- secondary->SetLegSources(AliDielectronSignalMC::kSecondary,\r
- AliDielectronSignalMC::kSecondary);\r
- die->AddSignalMC(secondary);\r
-\r
- AliDielectronSignalMC* eleFromConversions=new\r
- AliDielectronSignalMC("eleFromConversions","conversion electrons");\r
- eleFromConversions->SetLegPDGs(11,-11);\r
- eleFromConversions->SetCheckBothChargesLegs(kTRUE,kTRUE);\r
- eleFromConversions->SetLegSources(AliDielectronSignalMC::kSecondary,\r
- AliDielectronSignalMC::kSecondary);\r
- eleFromConversions->SetMotherPDGs(22,22); // 22- photon\r
- die->AddSignalMC(eleFromConversions);\r
-\r
- AliDielectronSignalMC* misIdPions=new\r
- AliDielectronSignalMC("misIdPions","mis id. pion pairs");\r
- misIdPions->SetLegPDGs(211,-211);\r
- misIdPions->SetCheckBothChargesLegs(kTRUE,kTRUE);\r
- die->AddSignalMC(misIdPions);\r
-\r
- AliDielectronSignalMC* dalitzDecays=new\r
- AliDielectronSignalMC("dalitzDecays","dalitz Pairs");\r
- dalitzDecays->SetLegPDGs(11,-11);\r
- dalitzDecays->SetCheckBothChargesLegs(kTRUE,kTRUE);\r
- dalitzDecays->SetLegSources(AliDielectronSignalMC::kSecondary,\r
- AliDielectronSignalMC::kSecondary);\r
- dalitzDecays->SetMotherPDGs(111,111);\r
- dalitzDecays->SetFillPureMCStep(kTRUE);\r
- die->AddSignalMC(dalitzDecays);\r
-*/\r
-\r
-AliDielectronSignalMC* PhiDecays= new AliDielectronSignalMC("PhiDecays","Phi Pairs");\r
-PhiDecays->SetLegPDGs(11,-11);\r
-PhiDecays->SetCheckBothChargesLegs(kTRUE,kTRUE);\r
-PhiDecays->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState);\r
-PhiDecays->SetMotherPDGs(333,333);\r
-PhiDecays->SetMothersRelation(AliDielectronSignalMC::kSame); \r
-PhiDecays->SetFillPureMCStep(kTRUE);\r
-die->AddSignalMC(PhiDecays);\r
-\r
-AliDielectronSignalMC* OmegaDecays= new AliDielectronSignalMC("OmegaDecays","Omega Pairs");\r
-OmegaDecays->SetLegPDGs(11,-11);\r
-OmegaDecays->SetCheckBothChargesLegs(kTRUE,kTRUE);\r
-OmegaDecays->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState);\r
-OmegaDecays->SetMotherPDGs(223,223);\r
-OmegaDecays->SetMothersRelation(AliDielectronSignalMC::kSame);\r
-OmegaDecays->SetDalitz(AliDielectronSignalMC::kIsNotDalitz); \r
-OmegaDecays->SetFillPureMCStep(kTRUE);\r
-die->AddSignalMC(OmegaDecays);\r
-\r
-/*\r
-AliDielectronSignalMC* RhoDecays= new AliDielectronSignalMC("RhoDecays","Rho Pairs");\r
-RhoDecays->SetLegPDGs(11,-11);\r
-RhoDecays->SetCheckBothChargesLegs(kTRUE,kTRUE);\r
-RhoDecays->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState);\r
-RhoDecays->SetMotherPDGs(113,113);\r
-RhoDecays->SetMothersRelation(AliDielectronSignalMC::kSame); \r
-RhoDecays->SetFillPureMCStep(kTRUE);\r
-die->AddSignalMC(RhoDecays);\r
-\r
-AliDielectronSignalMC* DieleConti= new AliDielectronSignalMC("DieleConti","low mass ee pairs");\r
-DieleConti->SetLegPDGs(11,-11);\r
-DieleConti->SetMotherPDGs(0,0,22,22);\r
-DieleConti->SetCheckBothChargesLegs(kTRUE,kTRUE);\r
-DieleConti->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState);\r
-DieleConti->SetMothersRelation(AliDielectronSignalMC::kSame);\r
-DieleConti->SetFillPureMCStep(kTRUE);\r
-die->AddSignalMC(DieleConti);*/\r
-\r
-\r
-}\r
-\r
-//--------------------------------------\r
- void EnableMC() {\r
- MCenabled=kTRUE;\r
- }\r
+ void InitHistograms(AliDielectron *die, Int_t cutDefinition);
+ void InitCF(AliDielectron* die, Int_t cutDefinition);
+
+ void SetupTrackCuts(AliDielectron *die, Int_t cutDefinition);
+ void SetupPairCuts(AliDielectron *die, Int_t cutDefinition);
+
+ void EnableMC();
+ AliESDtrackCuts *SetupESDtrackCuts(Int_t cutDefinition);
+
+ TString names=("MixEvt");
+ TObjArray *arrNames=names.Tokenize(";");
+ const Int_t nDie=arrNames->GetEntries();
+ Bool_t MCenabled=kFALSE;
+
+ Bool_t kMix = 1;
+
+ AliDielectron* Configpp2012Oezdemir(Int_t cutDefinition,Bool_t hasMC=kFALSE)
+ {
+ //
+ // Setup the instance of AliDielectron
+ //
+
+ MCenabled=hasMC;
+
+ // create the actual framework object
+
+ TString name=Form("%02d",cutDefinition);
+ if ((cutDefinition)<arrNames->GetEntriesFast()){
+ name=arrNames->At((cutDefinition))->GetName();
+ }
+
+ //thisCut only relevant for MC:
+ AliDielectron *die =
+ new AliDielectron(Form
+ ("%s",name.Data()),
+ Form("Track cuts: %s",name.Data()));
+
+ if(kMix){
+ AliDielectronMixingHandler *mix = new AliDielectronMixingHandler;
+ mix->SetMixType(AliDielectronMixingHandler::kAll);
+ mix->AddVariable(AliDielectronVarManager::kZvPrim,"-10., -7.5, -5., -2.5 , 0., 2.5, 5., 7.5 , 10.");
+ mix->AddVariable(AliDielectronVarManager::kNacc,"0,10000");
+ mix->SetDepth(10);
+ die->SetMixingHandler(mix);
+ }
+
+ // cut setup
+ SetupTrackCuts(die,cutDefinition);
+ SetupPairCuts(die,cutDefinition);
+
+ // histogram setup
+ // only if an AliDielectronHistos object is attached to the
+ // dielectron framework histograms will be filled
+ //
+ InitHistograms(die,cutDefinition);
+
+ // the last definition uses no cuts and only the QA histograms should be filled!
+ //InitCF(die,cutDefinition);
+
+ return die;
+ }
+
+ //______________________________________________________________________________________
+ void SetupTrackCuts(AliDielectron *die, Int_t cutDefinition)
+ {
+ //
+ // Setup the track cuts
+ //
+ //
+ //___________________________________________
+ AliDielectronPID *pidTT = new AliDielectronPID("TPC-TOF","TPC-TOF");
+ pidTT->AddCut(AliDielectronPID::kTPC,AliPID::kElectron,-1.5,3.,0.2,100.,kFALSE);
+ pidTT->AddCut( AliDielectronPID::kTOF ,AliPID::kElectron , -3. , 3. , 0.4 , 5., kFALSE );
+ pidTT->AddCut(AliDielectronPID::kTPC,AliPID::kPion,-100.,4.,0.2,100.,kTRUE);
+
+ //___________________________________________
+ AliDielectronPID *pidTOF = new AliDielectronPID("TOF","TOF");
+ pidTOF->AddCut( AliDielectronPID::kTOF ,AliPID::kElectron , -3. , 3. , 0.4 , 5., kFALSE );
+ //
+ // =============CREATE GROUPS FOR ==============
+ //
+
+ //Config 0: TPC-TOF
+ AliDielectronCutGroup* cgTrackFilterPIDTPC = new AliDielectronCutGroup("cgPIDTPC","cgPIDTPC",AliDielectronCutGroup::kCompAND);
+ cgTrackFilterPIDTPC->AddCut(SetupESDtrackCuts(cutDefinition));
+ cgTrackFilterPIDTPC->AddCut(pidTT);
+
+ //Config 1: TOF
+ AliDielectronCutGroup* cgTrackFilterPIDTOF = new AliDielectronCutGroup("cgPIDTOF","cgPIDTOF",AliDielectronCutGroup::kCompAND);
+ cgTrackFilterPIDTOF->AddCut(SetupESDtrackCuts(cutDefinition));
+ cgTrackFilterPIDTOF->AddCut(pidTOF);
+
+ //Config 2: no PID
+ AliDielectronCutGroup* cgTrackFilternoPID = new AliDielectronCutGroup("cgnoPID","cgnoPID",AliDielectronCutGroup::kCompAND);
+ cgTrackFilternoPID->AddCut(SetupESDtrackCuts(cutDefinition));
+
+ //Correct BG scheme for Combinatorial BG
+ //die->SetPreFilterUnlikeOnly();
+ die->SetPreFilterAllSigns();
+ die->SetUseKF(kFALSE);
+
+ if ( cutDefinition ==0 ) {
+ die->GetTrackFilter().AddCuts(cgTrackFilterPIDTPC);
+ }
+
+ }
+ //______________________________________________________________________________________
+
+ void SetupPairCuts(AliDielectron *die, Int_t cutDefinition)
+ {
+ //
+ // Setup the pair cuts
+ //
+
+
+ if(cutDefinition == 0){
+
+ AliDielectronTrackCuts *noconv=new AliDielectronTrackCuts("noConv","conversion tagging");
+ noconv->SetV0DaughterCut(AliPID::kElectron,kTRUE);
+ die->GetTrackFilter().AddCuts(noconv);
+
+ //pair rapidity
+// AliDielectronVarCuts *RapidityCut=new AliDielectronVarCuts("RapidityCut","RapidityCut");
+// RapidityCut->AddCut(AliDielectronVarManager::kY, -0.8 , 0.8);
+// die->GetPairFilter().AddCuts(RapidityCut);
+
+ AliDielectronVarCuts *PhiV = new AliDielectronVarCuts("PhiV","PhiV");//mass and Phiv together
+ PhiV->AddCut(AliDielectronVarManager::kM, 0.0 , 0.05);
+ PhiV->AddCut(AliDielectronVarManager::kPhivPair, 2.5 , 3.2 );
+ die->GetPairPreFilter().AddCuts(PhiV);
+ /*
+ AliDielectronVarCuts *PhiV2 = new AliDielectronVarCuts("PhiV2","PhiV2");//mass and Phiv together
+ PhiV2->AddCut(AliDielectronVarManager::kM, 0.05 , 1000.);
+
+ AliDielectronCutGroup* pairCutsCG2 =new AliDielectronCutGroup("pairCutsCG2","pairCutsCG2",AliDielectronCutGroup::kCompOR);
+ pairCutsCG2->AddCut(PhiV);
+ pairCutsCG2->AddCut(PhiV2);
+ die->GetPairFilter().AddCuts(pairCutsCG2);
+ */
+ /*
+ if (MCenabled) {
+ AliDielectronVarCuts *mcpid =new AliDielectronVarCuts("mcpid","mcpid");
+ mcpid->SetCutType(AliDielectronVarCuts::kAny);
+ mcpid->AddCut(AliDielectronVarManager::kPdgCode, 11);
+ mcpid->AddCut(AliDielectronVarManager::kPdgCode, -11);
+ die->GetTrackFilter().AddCuts(mcpid);
+
+ AliDielectronVarCuts *MCnoConv =new AliDielectronVarCuts("MCnoConv","MCnoConv");
+ MCnoConv->AddCut(AliDielectronVarManager::kPdgCodeMother, 22,kTRUE);
+ die->GetTrackFilter().AddCuts(MCnoConv);
+ }
+ */
+ }
+
+ }
+
+ //______________________________________________________________________________________
+ AliESDtrackCuts *SetupESDtrackCuts(Int_t cutDefinition)
+ {
+ //
+ // Setup default AliESDtrackCuts
+ //
+ AliESDtrackCuts *esdTrackCuts = new AliESDtrackCuts;
+
+ esdTrackCuts->SetMaxDCAToVertexZ(3.0);
+ esdTrackCuts->SetMaxDCAToVertexXY(1.0);
+
+ esdTrackCuts->SetPtRange( 0.2 , 100.0);
+ esdTrackCuts->SetEtaRange( -0.8 , 0.8 );
+ esdTrackCuts->SetRequireSigmaToVertex(kFALSE);
+ esdTrackCuts->SetAcceptKinkDaughters(kFALSE);
+ esdTrackCuts->SetDCAToVertex2D(kFALSE);
+
+ esdTrackCuts->SetRequireITSRefit(kTRUE);
+ esdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kFirst); //Base
+ esdTrackCuts->SetMinNClustersITS(3); //Base
+
+ esdTrackCuts->SetRequireTPCRefit(kTRUE);
+ esdTrackCuts->SetMinNClustersTPC(80); //Base
+
+ esdTrackCuts->SetMinNCrossedRowsTPC(100); //Base
+
+ esdTrackCuts->SetMinRatioCrossedRowsOverFindableClustersTPC(0.5);
+ esdTrackCuts->SetMaxChi2PerClusterTPC(4);
+
+ return esdTrackCuts;
+ }
+
+ //______________________________________________________________________________________
+
+void InitHistograms(AliDielectron *die, Int_t cutDefinition)
+ {
+ //
+ // Initialise the histograms
+ //
+
+ //Setup histogram classes
+ AliDielectronHistos *histos=
+ new AliDielectronHistos(die->GetName(),
+ die->GetTitle());
+
+
+
+ //Initialise histogram classes
+ histos->SetReservedWords("Track;Pair");
+ //histos->SetReservedWords("Track");
+
+ //Event class
+ 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)));
+
+ }
+
+ if(kMix){
+ histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(3))); //ME ++
+ histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(4)));//ME -+
+ histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(6)));//ME +-
+ histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(7))); // ME --
+ }
+
+
+ //add histograms to event class
+ histos->UserHistogram("Event","nEvents","Number of processed events after cuts;Number events",1,0,1,AliDielectronVarManager::kNevents);
+ histos->UserHistogram("Event","ZVertex","ZVertex;ZVertex/cm",480,-12.,12.,AliDielectronVarManager::kZvPrim);
+ histos->UserHistogram("Event","nESDTracks","ESD tracks;ESD tracks;Number events",100,0,200,AliDielectronVarManager::kTracks);
+ histos->UserHistogram("Event","Nacc","Number of accepted tracks;Number events",100,0,200,AliDielectronVarManager::kNacc);
+ histos->UserHistogram("Event","NVtxContrib","Number of Vertex Contributor;NVtx;Number events",100,0,100,AliDielectronVarManager::kNVtxContrib);
+
+
+ //add histograms to Track classes
+ histos->UserHistogram("Track","P","P;P [GeV];#tracks",500,0.,10.,AliDielectronVarManager::kPIn);
+ histos->UserHistogram("Track","Pt","Pt;Pt [GeV];#tracks",500,0.,10.,AliDielectronVarManager::kPt);
+ histos->UserHistogram("Track","Eta","Eta; Eta ;#tracks",100,-1.,1.,AliDielectronVarManager::kEta);
+ histos->UserHistogram("Track","Phi","Phi; Phi ;#tracks",640,0.,6.4,AliDielectronVarManager::kPhi);
+
+
+ histos->UserHistogram("Track","Eta_phi","Eta vs Phi;Eta;Phi",100,-1.,1.,320,0.,6.4,AliDielectronVarManager::kEta,AliDielectronVarManager::kPhi);
+ histos->UserHistogram("Track","Eta_pt","Eta vs Pt;Eta;Pt",100,-1.,1.,500,0.,10.,AliDielectronVarManager::kEta,AliDielectronVarManager::kPt);
+ histos->UserHistogram("Track","ImpParXY_Pt","ImpParXY_Pt; Pt; ÍmpParXY",500,0.,10.,500,-5.,5.,AliDielectronVarManager::kPt,AliDielectronVarManager::kImpactParXY);
+ histos->UserHistogram("Track","ImpParZ_Pt","ImpParZ_Pt; Pt; ÍmpParZ",500,0.,10.,500,-5.,5.,AliDielectronVarManager::kPt,AliDielectronVarManager::kImpactParZ);
+
+
+ //track checks (ITS)
+ histos->UserHistogram("Track","ITSchi2Cl_Mom","ITS Chi2 vs Momentum;Mom;ITS chi2",500,0.,5.,50,0.,5.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kITSchi2Cl);
+ histos->UserHistogram("Track","NclsITS_Mom",";Mom;kNclsITS",500,0.,5.,7,0,7,AliDielectronVarManager::kPIn,AliDielectronVarManager::kNclsITS);
+
+ //track checks (TPC)
+ histos->UserHistogram("Track","TPCsignalNfrac_Mom",";fraction TPCSignalN/TPCncls vs Momentum;Mom;TPCSignalN/TPCncls",500,0.,5.,60,0.,1.2,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCsignalNfrac);
+ histos->UserHistogram("Track","TPCchi2Cl_Mom","TPC Chi2 vs Momentum;Mom;TPC Chi2",500,0.,10.,100,0,5,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCchi2Cl);
+ histos->UserHistogram("Track","TPCclsDiff_Mom","kTPCclsDiff vs Momentum;Mom;kTPCclsDiff",500,0.,10.,100,-10,10,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCclsDiff);
+ histos->UserHistogram("Track","FindableTPCcls_Mom","kNFclsTPC vs Momentum;Mom;kNFclsTPC",500,0.,10.,200,0.,200.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kNFclsTPC);
+ histos->UserHistogram("Track","TPCcls_Mom","kNclsTPC vs Momentum;Mom;kNclsTPC",500,0.,10.,200,0.,200.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kNclsTPC);
+ histos->UserHistogram("Track","kNclsSFracTPC_Mom","kNclsSFracTPC vs Momentum;Mom;kTPCclsSFrac",500,0.,10.,1000,0.,1.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kNclsSFracTPC);
+ histos->UserHistogram("Track","kNFclsTPCrFrac_Mom","kNFclsTPCrFrac vs Momentum;Mom;kNFclsTPCrFrac",500,0.,10.,60,0.,1.2.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kNFclsTPCrFrac);
+
+ //track checks (TOF)
+ histos->UserHistogram("Track","TOFbeta_Mom","kTOFbeta vs Momentum;Mom;TOFbeta",500,0.,5.,120,0.,1.2,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTOFbeta);
+ histos->UserHistogram("Track","TOFPIDBit_Mom","kTOFPIDBit vs Momentum;Mom;TOFPIDbit",500,0.,5.,2,0.,1.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTOFPIDBit);
+
+ //track checks (PID)
+ histos->UserHistogram("Track","ITSnSigma_MomPio","ITS number of sigmas Pion vs Momentum;Mom;ITSsigmaPion",500,0.,5.,1000,-20,20,AliDielectronVarManager::kPIn,AliDielectronVarManager::kITSnSigmaPio);
+ histos->UserHistogram("Track","TPCnSigma_MomPio","TPC number of sigmas Pions vs Momentum;Mom;TPCsigmaPion",500,0.,5.,1000,-20,20,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaPio);
+
+ histos->UserHistogram("Track","ITSnSigma_MomEle","ITS number of sigmas Electrons vs Momentum;Mom;ITSsigmaEle",500,0.,5.,800,-40,40,AliDielectronVarManager::kPIn,AliDielectronVarManager::kITSnSigmaEle);
+ histos->UserHistogram("Track","TPCnSigma_MomEle","TPC number of sigmas Electrons vs Momentum;Mom;TPCsigmaEle",1000,0.,10.,800,-40,40,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaEle);
+ histos->UserHistogram("Track","TOFnSigma_MomEle","TOF number of sigmas Electrons vs Momentum;Mom;TOFsigmaEle",500,0.,5.,800,-40,40,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTOFnSigmaEle);
+
+ histos->UserHistogram("Track","ITSdEdx_P","dEdx;P [GeV];ITS signal (arb units) vs Momentum;Mom;ITSsignal", 500,0,5,800,0,200,AliDielectronVarManager::kPIn,AliDielectronVarManager::kITSsignal);
+ histos->UserHistogram("Track","TPCdEdx_P","dEdx;P [GeV];TPC signal (arb units) vs Momentum;Mom;TPCsignal", 500,0,10.,800,0,200,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCsignal);
+
+ //
+ //add histograms to Pair classes
+ //
+
+ histos->UserHistogram("Pair","InvMass","Inv.Mass;Inv. Mass [GeV];#pairs",
+ 500,0,4,AliDielectronVarManager::kM);
+
+ histos->UserHistogram("Pair","InvMass_low","Inv.Mass;Inv. Mass [GeV];#pairs",
+ 500,0,0.5,AliDielectronVarManager::kM);
+
+ histos->UserHistogram("Pair","InvMass10","Inv.Mass;Inv. Mass [GeV];#pairs",
+ 500,0.,5.,AliDielectronVarManager::kM);
+
+ histos->UserHistogram("Pair","kDeltaEta","kDeltaEta;kDeltaEta;#pairs",
+ 160,0.,1.6,AliDielectronVarManager::kDeltaEta);
+
+ histos->UserHistogram("Pair","kDeltaEta_low","kDeltaEta;kDeltaEta;#pairs",
+ 500,0.,0.5,AliDielectronVarManager::kDeltaEta);
+
+ histos->UserHistogram("Pair","kDeltaPhi","kDeltaPhi;kDeltaPhi;#pairs",
+ 320,0.,6.4,AliDielectronVarManager::kDeltaPhi);
+
+ histos->UserHistogram("Pair",
+ "kDeltaEta_kDeltaPhi","kDeltaEta_kDeltaPhi;kDeltaEta;kDeltaPhi",
+ 160, 0. , 1.6, 320 , 0., 6.4 ,
+ AliDielectronVarManager::kDeltaEta , AliDielectronVarManager::kDeltaPhi );
+
+ histos->UserHistogram("Pair","PhiV",";PhiV;#pairs",
+ 320,0.,6.4,AliDielectronVarManager::kPhivPair);
+
+
+ histos->UserHistogram("Pair","PhiV_Pt",";Pt;PhiV",
+ 100,0.,10.,320,0.,6.4,AliDielectronVarManager::kPt,AliDielectronVarManager::kPhivPair);
+
+ histos->UserHistogram("Pair","InvMass_bin2","Inv.Mass;Inv. Mass [GeV];#pairs",
+ "0. , 0.025, 0.05 , 0.075 ,0.1 ,0.15 , 0.2 , 0.25 , 0.3 ,
+ 0.4 , 0.5 , 0.6, 0.65 , 0.688 , 0.725, 0.75, 0.775, 0.8 , 0.85 ,
+ 0.95, 0.975 , 1.0 , 1.025 , 1.05, 1.125 , 1.25 , 1.5 , 1.75 , 2.0 ,
+ 2.25, 2.5 , 2.75 , 2.85, 2.95,3.05, 3.1 , 3.15 ,
+ 3.3 , 3.5, 3.75 , 4.0",AliDielectronVarManager::kM);
+
+
+ histos->UserHistogram("Pair",
+ "InvMass_Pt","InvMass_Pt;InvMass;Pt",
+ 500, 0. , 4., 100 , 0., 5. ,
+ AliDielectronVarManager::kM , AliDielectronVarManager::kPt );
+
+ histos->UserHistogram("Pair",
+ "InvMass_PhivPair","InvMass_PhivPair;InvMass;PhivPair",
+ 500, 0. , 4., 320 , 0., 3.2 ,
+ AliDielectronVarManager::kM , AliDielectronVarManager::kPhivPair );
+
+ histos->UserHistogram("Pair",
+ "OpAngle","Opening angle;Opening angle;#pairs",
+ 320, 0. , 3.2,
+ AliDielectronVarManager::kOpeningAngle);
+
+ histos->UserHistogram("Pair",
+ "OpAngle_InvMass","OpAngle_InvMass;Opening angle;Invariant Mass",
+ 320, 0. , 3.2, 500 , 0. , 4. ,
+ AliDielectronVarManager::kOpeningAngle,AliDielectronVarManager::kM);
+
+
+ histos->UserHistogram("Pair",
+ "Phi","Phi;counts;Phi",
+ 320, 0. , 6.4, AliDielectronVarManager::kPhi);
+
+ histos->UserHistogram("Pair",
+ "Y","Y;counts;Y",
+ 120, -1.2 , 1.2, AliDielectronVarManager::kY);
+
+ die->SetHistogramManager(histos);
+
+}
+
+
+void InitCF(AliDielectron* die, Int_t cutDefinition)
+{
+ //
+ // Setupd the CF Manager if needed
+ //
+ AliDielectronCF *cf=new AliDielectronCF(die->GetName(),die->GetTitle());
+
+ //pair variables
+ cf->AddVariable(AliDielectronVarManager::kPt,100,0.,10.);
+ //cf->AddVariable(AliDielectronVarManager::kP,200,0,20);
+ //cf->AddVariable(AliDielectronVarManager::kPhi,64, -3.2, 3.2);
+ cf->AddVariable(AliDielectronVarManager::kY,40,-2.,2.);
+ cf->AddVariable(AliDielectronVarManager::kM,500,0.,4.);
+ //cf->AddVariable(AliDielectronVarManager::kPairType,10,0,10);
+ //cf->AddVariable(AliDielectronVarManager::kOpeningAngle,315,0,3.15);
+ //cf->AddVariable(AliDielectronVarManager::kDeltaEta,200,-2,2);
+ //cf->AddVariable(AliDielectronVarManager::kDeltaPhi,100,0,3.15);
+ //cf->AddVariable(AliDielectronVarManager::kHaveSameMother,21,-10,10);
+ cf->AddVariable(AliDielectronVarManager::kNumberOfDaughters,5,0,5);
+ //leg variables
+ cf->AddVariable(AliDielectronVarManager::kPt,100,0.,10.,kTRUE);
+ //cf->AddVariable(AliDielectronVarManager::kP,200,0.,20.,kTRUE);
+ //cf->AddVariable(AliDielectronVarManager::kY,40,-2.,2.,kTRUE);
+ cf->AddVariable(AliDielectronVarManager::kEta,20,-1.,1.,kTRUE);
+ cf->AddVariable(AliDielectronVarManager::kPhi,100,0.,3.15,kTRUE);
+// cf->AddVariable(AliDielectronVarManager::kITSsignal,1000,0.0.,1000.,kTRUE);
+// cf->AddVariable(AliDielectronVarManager::kHaveSameMother,21,-10,10,kTRUE);
+// cf->AddVariable(AliDielectronVarManager::kNumberOfDaughters,11,0,10,kTRUE);
+
+ //only in this case write MC truth info
+
+ if (MCenabled) {
+ cf->SetStepForMCtruth();
+ //cf->SetStepsForMCtruthOnly();
+ //cf->SetStepForNoCutsMCmotherPid();
+ cout << "MC ENABLED ------------------------------------------------------" << endl;
+ //cf->AddVariable(AliDielectronVarManager::kPdgCode,10000,-5000.5,4999.5,kTRUE);
+ //cf->AddVariable(AliDielectronVarManager::kPdgCodeMother,10000,-5000.5,4999.5,kTRUE);
+ }
+
+ //cf->SetStepsForEachCut();
+ //cf->SetStepForPreFilter();
+ cf->SetStepForAfterAllCuts();
+ //cf->SetStepsForBackground();
+ cf->SetStepsForSignal();
+
+ die->SetCFManagerPair(cf);
+
+/*
+
+ AliDielectronSignalMC* lowMassDiele=new
+ AliDielectronSignalMC("lowMassDiele","low mass dielectron pairs");
+ lowMassDiele->SetLegPDGs(11,-11);
+ lowMassDiele->SetCheckBothChargesLegs(kTRUE,kTRUE);
+ lowMassDiele->SetLegSources(AliDielectronSignalMC::kPrimary,
+ AliDielectronSignalMC::kPrimary);
+ lowMassDiele->SetFillPureMCStep(kTRUE);
+ die->AddSignalMC(lowMassDiele);
+
+ AliDielectronSignalMC* secondary=new
+ AliDielectronSignalMC("secondary","secondary electrons pairs");
+ secondary->SetLegPDGs(11,-11);
+ secondary->SetCheckBothChargesLegs(kTRUE,kTRUE);
+ secondary->SetLegSources(AliDielectronSignalMC::kSecondary,
+ AliDielectronSignalMC::kSecondary);
+ die->AddSignalMC(secondary);
+
+ AliDielectronSignalMC* eleFromConversions=new
+ AliDielectronSignalMC("eleFromConversions","conversion electrons");
+ eleFromConversions->SetLegPDGs(11,-11);
+ eleFromConversions->SetCheckBothChargesLegs(kTRUE,kTRUE);
+ eleFromConversions->SetLegSources(AliDielectronSignalMC::kSecondary,
+ AliDielectronSignalMC::kSecondary);
+ eleFromConversions->SetMotherPDGs(22,22); // 22- photon
+ die->AddSignalMC(eleFromConversions);
+
+ AliDielectronSignalMC* misIdPions=new
+ AliDielectronSignalMC("misIdPions","mis id. pion pairs");
+ misIdPions->SetLegPDGs(211,-211);
+ misIdPions->SetCheckBothChargesLegs(kTRUE,kTRUE);
+ die->AddSignalMC(misIdPions);
+
+ AliDielectronSignalMC* dalitzDecays=new
+ AliDielectronSignalMC("dalitzDecays","dalitz Pairs");
+ dalitzDecays->SetLegPDGs(11,-11);
+ dalitzDecays->SetCheckBothChargesLegs(kTRUE,kTRUE);
+ dalitzDecays->SetLegSources(AliDielectronSignalMC::kSecondary,
+ AliDielectronSignalMC::kSecondary);
+ dalitzDecays->SetMotherPDGs(111,111);
+ dalitzDecays->SetFillPureMCStep(kTRUE);
+ die->AddSignalMC(dalitzDecays);
+*/
+
+AliDielectronSignalMC* PhiDecays= new AliDielectronSignalMC("PhiDecays","Phi Pairs");
+PhiDecays->SetLegPDGs(11,-11);
+PhiDecays->SetCheckBothChargesLegs(kTRUE,kTRUE);
+PhiDecays->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState);
+PhiDecays->SetMotherPDGs(333,333);
+PhiDecays->SetMothersRelation(AliDielectronSignalMC::kSame);
+PhiDecays->SetFillPureMCStep(kTRUE);
+die->AddSignalMC(PhiDecays);
+
+AliDielectronSignalMC* OmegaDecays= new AliDielectronSignalMC("OmegaDecays","Omega Pairs");
+OmegaDecays->SetLegPDGs(11,-11);
+OmegaDecays->SetCheckBothChargesLegs(kTRUE,kTRUE);
+OmegaDecays->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState);
+OmegaDecays->SetMotherPDGs(223,223);
+OmegaDecays->SetMothersRelation(AliDielectronSignalMC::kSame);
+OmegaDecays->SetDalitz(AliDielectronSignalMC::kIsNotDalitz);
+OmegaDecays->SetFillPureMCStep(kTRUE);
+die->AddSignalMC(OmegaDecays);
+
+/*
+AliDielectronSignalMC* RhoDecays= new AliDielectronSignalMC("RhoDecays","Rho Pairs");
+RhoDecays->SetLegPDGs(11,-11);
+RhoDecays->SetCheckBothChargesLegs(kTRUE,kTRUE);
+RhoDecays->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState);
+RhoDecays->SetMotherPDGs(113,113);
+RhoDecays->SetMothersRelation(AliDielectronSignalMC::kSame);
+RhoDecays->SetFillPureMCStep(kTRUE);
+die->AddSignalMC(RhoDecays);
+
+AliDielectronSignalMC* DieleConti= new AliDielectronSignalMC("DieleConti","low mass ee pairs");
+DieleConti->SetLegPDGs(11,-11);
+DieleConti->SetMotherPDGs(0,0,22,22);
+DieleConti->SetCheckBothChargesLegs(kTRUE,kTRUE);
+DieleConti->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState);
+DieleConti->SetMothersRelation(AliDielectronSignalMC::kSame);
+DieleConti->SetFillPureMCStep(kTRUE);
+die->AddSignalMC(DieleConti);*/
+
+
+}
+
+//--------------------------------------
+ void EnableMC() {
+ MCenabled=kTRUE;
+ }