From adf098d95ae41543966ab79da7ebbf64c3307bfd Mon Sep 17 00:00:00 2001 From: fprino Date: Mon, 11 Aug 2014 13:43:26 +0200 Subject: [PATCH] Possibility to set the pt bin width from the AddTaskMacro (Francesco, Christian) --- PWGHF/vertexingHF/AliAnalysisTaskCombinHF.cxx | 31 +++++++------- PWGHF/vertexingHF/AliAnalysisTaskCombinHF.h | 4 +- PWGHF/vertexingHF/macros/AddTaskCombinHF.C | 40 ++++++++++--------- 3 files changed, 41 insertions(+), 34 deletions(-) diff --git a/PWGHF/vertexingHF/AliAnalysisTaskCombinHF.cxx b/PWGHF/vertexingHF/AliAnalysisTaskCombinHF.cxx index c1ba000745c..866116da9bc 100644 --- a/PWGHF/vertexingHF/AliAnalysisTaskCombinHF.cxx +++ b/PWGHF/vertexingHF/AliAnalysisTaskCombinHF.cxx @@ -78,6 +78,7 @@ AliAnalysisTaskCombinHF::AliAnalysisTaskCombinHF(): fMinMass(1.720), fMaxMass(2.150), fMaxPt(10.), + fPtBinWidth(0.5), fEtaAccCut(0.9), fPtAccCut(0.1), fNRotations(9), @@ -137,6 +138,7 @@ AliAnalysisTaskCombinHF::AliAnalysisTaskCombinHF(Int_t meson, AliRDHFCuts* analy fMinMass(1.720), fMaxMass(2.150), fMaxPt(10.), + fPtBinWidth(0.5), fEtaAccCut(0.9), fPtAccCut(0.1), fNRotations(9), @@ -240,8 +242,9 @@ void AliAnalysisTaskCombinHF::UserCreateOutputObjects() fHistTrackStatus->SetMinimum(0); fOutput->Add(fHistTrackStatus); - Int_t nPtBins = fMaxPt*10; - + Int_t nPtBins = (Int_t)(fMaxPt/fPtBinWidth+0.001); + Double_t maxPt=fPtBinWidth*nPtBins; + if(fReadMC){ fHistCheckOrigin=new TH1F("hCheckOrigin","",7,-1.5,5.5); @@ -264,27 +267,27 @@ void AliAnalysisTaskCombinHF::UserCreateOutputObjects() fHistCheckDecChanAcc->SetMinimum(0); fOutput->Add(fHistCheckDecChanAcc); - fPtVsYGen= new TH2F("hPtVsYGen","",nPtBins,0.,fMaxPt,20,-1.,1.); + fPtVsYGen= new TH2F("hPtVsYGen","",nPtBins,0.,maxPt,20,-1.,1.); fPtVsYGen->Sumw2(); fPtVsYGen->SetMinimum(0); fOutput->Add(fPtVsYGen); - fPtVsYGenLargeAcc= new TH2F("hPtVsYGenLargeAcc","",nPtBins,0.,fMaxPt,20,-1.,1.); + fPtVsYGenLargeAcc= new TH2F("hPtVsYGenLargeAcc","",nPtBins,0.,maxPt,20,-1.,1.); fPtVsYGenLargeAcc->Sumw2(); fPtVsYGenLargeAcc->SetMinimum(0); fOutput->Add(fPtVsYGenLargeAcc); - fPtVsYGenLimAcc= new TH2F("hPtVsYGenLimAcc","",nPtBins,0.,fMaxPt,20,-1.,1.); + fPtVsYGenLimAcc= new TH2F("hPtVsYGenLimAcc","",nPtBins,0.,maxPt,20,-1.,1.); fPtVsYGenLimAcc->Sumw2(); fPtVsYGenLimAcc->SetMinimum(0); fOutput->Add(fPtVsYGenLimAcc); - fPtVsYGenAcc= new TH2F("hPtVsYGenAcc","",nPtBins,0.,fMaxPt,20,-1.,1.); + fPtVsYGenAcc= new TH2F("hPtVsYGenAcc","",nPtBins,0.,maxPt,20,-1.,1.); fPtVsYGenAcc->Sumw2(); fPtVsYGenAcc->SetMinimum(0); fOutput->Add(fPtVsYGenAcc); - fPtVsYReco= new TH2F("hPtVsYReco","",nPtBins,0.,fMaxPt,20,-1.,1.); + fPtVsYReco= new TH2F("hPtVsYReco","",nPtBins,0.,maxPt,20,-1.,1.); fPtVsYReco->Sumw2(); fPtVsYReco->SetMinimum(0); fOutput->Add(fPtVsYReco); @@ -293,38 +296,38 @@ void AliAnalysisTaskCombinHF::UserCreateOutputObjects() Int_t nMassBins=fMaxMass*1000.-fMinMass*1000.; Double_t maxm=fMinMass+nMassBins*0.001; - fMassVsPtVsY=new TH3F("hMassVsPtVsY","",nMassBins,fMinMass,maxm,nPtBins,0.,fMaxPt,20,-1.,1.); + fMassVsPtVsY=new TH3F("hMassVsPtVsY","",nMassBins,fMinMass,maxm,nPtBins,0.,maxPt,20,-1.,1.); fMassVsPtVsY->Sumw2(); fMassVsPtVsY->SetMinimum(0); fOutput->Add(fMassVsPtVsY); - fMassVsPtVsYRot=new TH3F("hMassVsPtVsYRot","",nMassBins,fMinMass,maxm,nPtBins,0.,fMaxPt,20,-1.,1.); + fMassVsPtVsYRot=new TH3F("hMassVsPtVsYRot","",nMassBins,fMinMass,maxm,nPtBins,0.,maxPt,20,-1.,1.); fMassVsPtVsYRot->Sumw2(); fMassVsPtVsYRot->SetMinimum(0); fOutput->Add(fMassVsPtVsYRot); if(fMeson==kDzero){ - fMassVsPtVsYLSpp=new TH3F("hMassVsPtVsYLSpp","",nMassBins,fMinMass,maxm,nPtBins,0.,fMaxPt,20,-1.,1.); + fMassVsPtVsYLSpp=new TH3F("hMassVsPtVsYLSpp","",nMassBins,fMinMass,maxm,nPtBins,0.,maxPt,20,-1.,1.); fMassVsPtVsYLSpp->Sumw2(); fMassVsPtVsYLSpp->SetMinimum(0); fOutput->Add(fMassVsPtVsYLSpp); - fMassVsPtVsYLSmm=new TH3F("hMassVsPtVsYLSmm","",nMassBins,fMinMass,maxm,nPtBins,0.,fMaxPt,20,-1.,1.); + fMassVsPtVsYLSmm=new TH3F("hMassVsPtVsYLSmm","",nMassBins,fMinMass,maxm,nPtBins,0.,maxPt,20,-1.,1.); fMassVsPtVsYLSmm->Sumw2(); fMassVsPtVsYLSmm->SetMinimum(0); fOutput->Add(fMassVsPtVsYLSmm); } - fMassVsPtVsYSig=new TH3F("hMassVsPtVsYSig","",nMassBins,fMinMass,maxm,nPtBins,0.,fMaxPt,20,-1.,1.); + fMassVsPtVsYSig=new TH3F("hMassVsPtVsYSig","",nMassBins,fMinMass,maxm,nPtBins,0.,maxPt,20,-1.,1.); fMassVsPtVsYSig->Sumw2(); fMassVsPtVsYSig->SetMinimum(0); fOutput->Add(fMassVsPtVsYSig); - fMassVsPtVsYRefl=new TH3F("hMassVsPtVsYRefl","",nMassBins,fMinMass,maxm,nPtBins,0.,fMaxPt,20,-1.,1.); + fMassVsPtVsYRefl=new TH3F("hMassVsPtVsYRefl","",nMassBins,fMinMass,maxm,nPtBins,0.,maxPt,20,-1.,1.); fMassVsPtVsYRefl->Sumw2(); fMassVsPtVsYRefl->SetMinimum(0); fOutput->Add(fMassVsPtVsYRefl); - fMassVsPtVsYBkg=new TH3F("hMassVsPtVsYBkg","",nMassBins,fMinMass,maxm,nPtBins,0.,fMaxPt,20,-1.,1.); + fMassVsPtVsYBkg=new TH3F("hMassVsPtVsYBkg","",nMassBins,fMinMass,maxm,nPtBins,0.,maxPt,20,-1.,1.); fMassVsPtVsYBkg->Sumw2(); fMassVsPtVsYBkg->SetMinimum(0); fOutput->Add(fMassVsPtVsYBkg); diff --git a/PWGHF/vertexingHF/AliAnalysisTaskCombinHF.h b/PWGHF/vertexingHF/AliAnalysisTaskCombinHF.h index e9b0d0682c9..192af438b63 100644 --- a/PWGHF/vertexingHF/AliAnalysisTaskCombinHF.h +++ b/PWGHF/vertexingHF/AliAnalysisTaskCombinHF.h @@ -69,6 +69,7 @@ public: } void SetMassWindow(Double_t minMass, Double_t maxMass){fMinMass=minMass; fMaxMass=maxMass;} void SetMaxPt(Double_t maxPt){fMaxPt=maxPt;} + void SetPtBinWidth(Double_t binw){fPtBinWidth=binw;} void SetEtaAccCut(Double_t etacut){fEtaAccCut=etacut;} void SetPtAccCut(Double_t ptcut){fPtAccCut=ptcut;} @@ -134,6 +135,7 @@ private: Double_t fMinMass; // minimum value of invariant mass Double_t fMaxMass; // maximum value of invariant mass Double_t fMaxPt; // maximum pT value for inv. mass histograms + Double_t fPtBinWidth; // width of pt bin (GeV/c) Double_t fEtaAccCut; // eta limits for acceptance step Double_t fPtAccCut; // pt limits for acceptance step @@ -159,7 +161,7 @@ private: Double_t fBayesThresKaon; // threshold for kaon identification via Bayesian PID Double_t fBayesThresPion; // threshold for pion identification via Bayesian PID - ClassDef(AliAnalysisTaskCombinHF,4); // D0D+ task from AOD tracks + ClassDef(AliAnalysisTaskCombinHF,5); // D0D+ task from AOD tracks }; #endif diff --git a/PWGHF/vertexingHF/macros/AddTaskCombinHF.C b/PWGHF/vertexingHF/macros/AddTaskCombinHF.C index 9cec59e23ac..36346570180 100644 --- a/PWGHF/vertexingHF/macros/AddTaskCombinHF.C +++ b/PWGHF/vertexingHF/macros/AddTaskCombinHF.C @@ -12,17 +12,18 @@ AliAnalysisTaskCombinHF *AddTaskCombinHF(Int_t meson = 0, Double_t bayesThresPion = 0.4, Double_t minMass = 1.6, Double_t maxMass = 2.15, - Double_t maxPt = 20.) + Double_t maxPt = 20., + Double_t ptBinWidth = 0.5) { - + AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager(); if (!mgr) { ::Error("AddTaskCombinHF", "No analysis manager to connect to."); } - + //Analysis Task - - + + AliRDHFCuts* analysiscuts=0x0; AliAODPidHF* pid=0x0; if(!cutObjFile.IsNull()){ @@ -45,13 +46,13 @@ AliAnalysisTaskCombinHF *AddTaskCombinHF(Int_t meson = 0, pid->SetTOFnSigmaRangeForPions(-3.,3.); pid->SetTOFnSigmaRangeForKaons(-2.,2.); pid->SetTOFnSigmaRangeForProtons(-3.,3.); - + } if(!analysiscuts){ Printf("Wrong file or cut object name set"); return 0x0; } - + AliAnalysisTaskCombinHF *dTask = new AliAnalysisTaskCombinHF(meson,analysiscuts); if(!cutObjFile.IsNull()){ dTask->SetKaonTrackCuts(esdc); @@ -68,43 +69,44 @@ AliAnalysisTaskCombinHF *AddTaskCombinHF(Int_t meson = 0, // mass and pt range for histograms dTask->SetMassWindow(minMass, maxMass); dTask->SetMaxPt(maxPt); + dTask->SetPtBinWidth(ptBinWidth); // PID settings dTask->SetPIDHF(pid); dTask->SetPIDstrategy(pidStrategy); dTask->SetPIDselCaseZero(casePID); dTask->SetBayesThres(bayesThresKaon, bayesThresPion); - - + + mgr->AddTask(dTask); - - // Create containers for input/output - + + // Create containers for input/output + TString mesname="Dzero"; if(meson==1) mesname="Dplus"; TString inname = Form("cinput%s%s",mesname.Data(),containerStr.Data()); TString outname = Form("coutput%s%s",mesname.Data(),containerStr.Data()); TString normname = Form("coutput%sNorm%s",mesname.Data(),containerStr.Data()); - + AliAnalysisDataContainer *cinput = mgr->CreateContainer(inname,TChain::Class(), - AliAnalysisManager::kInputContainer); + AliAnalysisManager::kInputContainer); TString outputfile = AliAnalysisManager::GetCommonFileName(); outputfile += Form(":PWG3_D2H_InvMass%sLowPt%s",mesname.Data(),containerStr.Data()); AliAnalysisDataContainer *coutput = mgr->CreateContainer(outname,TList::Class(), - AliAnalysisManager::kOutputContainer, - outputfile.Data()); + AliAnalysisManager::kOutputContainer, + outputfile.Data()); AliAnalysisDataContainer *coutputNorm = mgr->CreateContainer(normname,AliNormalizationCounter::Class(), - AliAnalysisManager::kOutputContainer, - outputfile.Data()); + AliAnalysisManager::kOutputContainer, + outputfile.Data()); mgr->ConnectInput(dTask,0,mgr->GetCommonInputContainer()); mgr->ConnectOutput(dTask,1,coutput); mgr->ConnectOutput(dTask,2,coutputNorm); - + return dTask; } -- 2.39.3