From 595cc7e2f24fd1d98b8bcf50153ae9c30648046d Mon Sep 17 00:00:00 2001 From: dainese Date: Mon, 20 Sep 2010 22:45:35 +0000 Subject: [PATCH] Update of D+ classes: added acceptance cut, added histograms (Francesco) --- PWG3/vertexingHF/AliAnalysisTaskSEDplus.cxx | 180 ++++++++++++------- PWG3/vertexingHF/AliAnalysisTaskSEDplus.h | 9 +- PWG3/vertexingHF/AliRDHFCutsDplustoKpipi.cxx | 14 +- 3 files changed, 126 insertions(+), 77 deletions(-) diff --git a/PWG3/vertexingHF/AliAnalysisTaskSEDplus.cxx b/PWG3/vertexingHF/AliAnalysisTaskSEDplus.cxx index 7a32f9d2c55..352ee09e4fb 100644 --- a/PWG3/vertexingHF/AliAnalysisTaskSEDplus.cxx +++ b/PWG3/vertexingHF/AliAnalysisTaskSEDplus.cxx @@ -50,19 +50,25 @@ ClassImp(AliAnalysisTaskSEDplus) //________________________________________________________________________ AliAnalysisTaskSEDplus::AliAnalysisTaskSEDplus(): AliAnalysisTaskSE(), -fOutput(0), -fHistNEvents(0), -fNtupleDplus(0), -fUpmasslimit(1.965), -fLowmasslimit(1.765), -fNPtBins(0), -fBinWidth(0.002), -fListCuts(0), -fRDCutsProduction(0), -fRDCutsAnalysis(0), -fFillNtuple(kFALSE), -fReadMC(kFALSE), -fDoLS(kFALSE) + fOutput(0), + fHistNEvents(0), + fPtVsMass(0), + fPtVsMassTC(0), + fYVsPt(0), + fYVsPtTC(0), + fYVsPtSig(0), + fYVsPtSigTC(0), + fNtupleDplus(0), + fUpmasslimit(1.965), + fLowmasslimit(1.765), + fNPtBins(0), + fBinWidth(0.002), + fListCuts(0), + fRDCutsProduction(0), + fRDCutsAnalysis(0), + fFillNtuple(kFALSE), + fReadMC(kFALSE), + fDoLS(kFALSE) { // Default constructor } @@ -72,6 +78,12 @@ AliAnalysisTaskSEDplus::AliAnalysisTaskSEDplus(const char *name,AliRDHFCutsDplus AliAnalysisTaskSE(name), fOutput(0), fHistNEvents(0), +fPtVsMass(0), +fPtVsMassTC(0), +fYVsPt(0), +fYVsPtTC(0), +fYVsPtSig(0), +fYVsPtSigTC(0), fNtupleDplus(0), fUpmasslimit(1.965), fLowmasslimit(1.765), @@ -318,7 +330,7 @@ void AliAnalysisTaskSEDplus::LSAnalysis(TClonesArray *arrayOppositeSign,TClonesA fPtMaxHistLS[indexcut]->Fill(ptmax); fDCAHistLS[indexcut]->Fill(dca); - if(passTightCuts==1){ + if(passTightCuts){ fMassHistLSTC[index]->Fill(invMass,wei); fMassHistLSTC[index+1]->Fill(invMass); fMassHistLSTC[index+2]->Fill(invMass,wei2); @@ -606,8 +618,20 @@ void AliAnalysisTaskSEDplus::UserCreateOutputObjects() fHistNEvents->Sumw2(); fHistNEvents->SetMinimum(0); fOutput->Add(fHistNEvents); - - + + fPtVsMass=new TH2F("hPtVsMass","PtVsMass (prod. cuts)",nbins,fLowmasslimit,fUpmasslimit,40,0.,20.); + fPtVsMassTC=new TH2F("hPtVsMassTC","PtVsMass (analysis cuts)",nbins,fLowmasslimit,fUpmasslimit,40,0.,20.); + fYVsPt=new TH2F("hYVsPt","YvsPt (prod. cuts)",40,0.,20.,80,-2.,2.); + fYVsPtTC=new TH2F("hYVsPtTC","YvsPt (analysis cuts)",40,0.,20.,80,-2.,2.); + fYVsPtSig=new TH2F("hYVsPtSig","YvsPt (MC, only sig., prod. cuts)",40,0.,20.,80,-2.,2.); + fYVsPtSigTC=new TH2F("hYVsPtSigTC","YvsPt (MC, only Sig, analysis cuts)",40,0.,20.,80,-2.,2.); + + fOutput->Add(fPtVsMass); + fOutput->Add(fPtVsMassTC); + fOutput->Add(fYVsPt); + fOutput->Add(fYVsPtTC); + fOutput->Add(fYVsPtSig); + fOutput->Add(fYVsPtSigTC); if(fFillNtuple){ OpenFile(2); // 2 is the slot number of the ntuple @@ -746,7 +770,14 @@ void AliAnalysisTaskSEDplus::UserExec(Option_t */*option*/) } } Double_t invMass=d->InvMassDplus(); - + Double_t rapid=d->YDplus(); + fYVsPt->Fill(ptCand,rapid); + if(passTightCuts) fYVsPtTC->Fill(ptCand,rapid); + Bool_t isFidAcc=fRDCutsAnalysis->IsInFiducialAcceptance(ptCand,rapid); + if(isFidAcc){ + fPtVsMass->Fill(invMass,ptCand); + if(passTightCuts) fPtVsMassTC->Fill(invMass,ptCand); + } Float_t tmp[24]; if(fFillNtuple){ tmp[0]=pdgCode; @@ -788,49 +819,54 @@ void AliAnalysisTaskSEDplus::UserExec(Option_t */*option*/) if(iPtBin>=0){ index=GetHistoIndex(iPtBin); - fMassHist[index]->Fill(invMass); - fCosPHist[index]->Fill(cosp); - fDLenHist[index]->Fill(dlen); - fSumd02Hist[index]->Fill(sumD02); - fSigVertHist[index]->Fill(sigvert); - fPtMaxHist[index]->Fill(ptmax); - fDCAHist[index]->Fill(dca); - - if(passTightCuts==1){ - fMassHistTC[index]->Fill(invMass); + if(isFidAcc){ + fMassHist[index]->Fill(invMass); + fCosPHist[index]->Fill(cosp); + fDLenHist[index]->Fill(dlen); + fSumd02Hist[index]->Fill(sumD02); + fSigVertHist[index]->Fill(sigvert); + fPtMaxHist[index]->Fill(ptmax); + fDCAHist[index]->Fill(dca); + + if(passTightCuts){ + fMassHistTC[index]->Fill(invMass); + } } if(fReadMC){ if(labDp>=0) { index=GetSignalHistoIndex(iPtBin); - fMassHist[index]->Fill(invMass); - fCosPHist[index]->Fill(cosp); - fDLenHist[index]->Fill(dlen); - fSumd02Hist[index]->Fill(sumD02); - fSigVertHist[index]->Fill(sigvert); - fPtMaxHist[index]->Fill(ptmax); - fDCAHist[index]->Fill(dca); - if(passTightCuts==1){ - fMassHistTC[index]->Fill(invMass); - - } - + if(isFidAcc){ + fMassHist[index]->Fill(invMass); + fCosPHist[index]->Fill(cosp); + fDLenHist[index]->Fill(dlen); + fSumd02Hist[index]->Fill(sumD02); + fSigVertHist[index]->Fill(sigvert); + fPtMaxHist[index]->Fill(ptmax); + fDCAHist[index]->Fill(dca); + if(passTightCuts){ + fMassHistTC[index]->Fill(invMass); + } + } + fYVsPtSig->Fill(ptCand,rapid); + if(passTightCuts) fYVsPtSigTC->Fill(ptCand,rapid); }else{ index=GetBackgroundHistoIndex(iPtBin); - fMassHist[index]->Fill(invMass); - fCosPHist[index]->Fill(cosp); - fDLenHist[index]->Fill(dlen); - fSumd02Hist[index]->Fill(sumD02); - fSigVertHist[index]->Fill(sigvert); - fPtMaxHist[index]->Fill(ptmax); - fDCAHist[index]->Fill(dca); - if(passTightCuts==1){ - fMassHistTC[index]->Fill(invMass); - + if(isFidAcc){ + fMassHist[index]->Fill(invMass); + fCosPHist[index]->Fill(cosp); + fDLenHist[index]->Fill(dlen); + fSumd02Hist[index]->Fill(sumD02); + fSigVertHist[index]->Fill(sigvert); + fPtMaxHist[index]->Fill(ptmax); + fDCAHist[index]->Fill(dca); + if(passTightCuts){ + fMassHistTC[index]->Fill(invMass); + } } } } - } + } } if(unsetvtx) d->UnsetOwnPrimaryVtx(); } @@ -856,31 +892,37 @@ void AliAnalysisTaskSEDplus::Terminate(Option_t */*option*/) printf("ERROR: fOutput not available\n"); return; } - fHistNEvents = dynamic_cast(fOutput->FindObject("fHistNEvents")); + fHistNEvents = dynamic_cast(fOutput->FindObject("fHistNEvents")); + fYVsPt = dynamic_cast(fOutput->FindObject("hYVsPt")); + fYVsPtTC = dynamic_cast(fOutput->FindObject("hYVsPtTC")); + fYVsPtSig = dynamic_cast(fOutput->FindObject("hYVsPtSig")); + fYVsPtSigTC = dynamic_cast(fOutput->FindObject("hYVsPtSigTC")); + fPtVsMass = dynamic_cast(fOutput->FindObject("hPtVsMass")); + fPtVsMassTC = dynamic_cast(fOutput->FindObject("hPtVsMassTC")); - TString hisname; - Int_t index=0; + TString hisname; + Int_t index=0; - Int_t indexLS=0; - for(Int_t i=0;i(fOutput->FindObject(hisname.Data())); - hisname.Form("hCosPAllPt%d",i); + hisname.Form("hCosPAllPt%d",i); fCosPHist[index]=dynamic_cast(fOutput->FindObject(hisname.Data())); - hisname.Form("hDLenAllPt%d",i); + hisname.Form("hDLenAllPt%d",i); fDLenHist[index]=dynamic_cast(fOutput->FindObject(hisname.Data())); - hisname.Form("hSumd02AllPt%d",i); - fSumd02Hist[index]=dynamic_cast(fOutput->FindObject(hisname.Data())); - hisname.Form("hSigVertAllPt%d",i); - fSigVertHist[index]=dynamic_cast(fOutput->FindObject(hisname.Data())); - hisname.Form("hPtMaxAllPt%d",i); - fPtMaxHist[index]=dynamic_cast(fOutput->FindObject(hisname.Data())); - hisname.Form("hDCAAllPt%d",i); - fDCAHist[index]=dynamic_cast(fOutput->FindObject(hisname.Data())); - hisname.Form("hMassPt%dTC",i); + hisname.Form("hSumd02AllPt%d",i); + fSumd02Hist[index]=dynamic_cast(fOutput->FindObject(hisname.Data())); + hisname.Form("hSigVertAllPt%d",i); + fSigVertHist[index]=dynamic_cast(fOutput->FindObject(hisname.Data())); + hisname.Form("hPtMaxAllPt%d",i); + fPtMaxHist[index]=dynamic_cast(fOutput->FindObject(hisname.Data())); + hisname.Form("hDCAAllPt%d",i); + fDCAHist[index]=dynamic_cast(fOutput->FindObject(hisname.Data())); + hisname.Form("hMassPt%dTC",i); fMassHistTC[index]=dynamic_cast(fOutput->FindObject(hisname.Data())); if(fDoLS){ hisname.Form("hLSPt%dLC",i); @@ -940,7 +982,7 @@ void AliAnalysisTaskSEDplus::Terminate(Option_t */*option*/) hisname.Form("hLSPt%dTCnw",i); fMassHistLSTC[indexLS]=dynamic_cast(fOutput->FindObject(hisname.Data())); - } + } index=GetBackgroundHistoIndex(i); if(fDoLS)indexLS++; @@ -998,7 +1040,7 @@ void AliAnalysisTaskSEDplus::Terminate(Option_t */*option*/) fMassHistLSTC[indexLS]=dynamic_cast(fOutput->FindObject(hisname.Data())); } - } + } if(fFillNtuple){ fNtupleDplus = dynamic_cast(GetOutputData(3)); @@ -1011,5 +1053,5 @@ void AliAnalysisTaskSEDplus::Terminate(Option_t */*option*/) hMassPt->SetXTitle("M[GeV/c^{2}]"); hMassPt->Draw(); - return; + return; } diff --git a/PWG3/vertexingHF/AliAnalysisTaskSEDplus.h b/PWG3/vertexingHF/AliAnalysisTaskSEDplus.h index 8ef7ef37cbe..4c0f3614fb4 100644 --- a/PWG3/vertexingHF/AliAnalysisTaskSEDplus.h +++ b/PWG3/vertexingHF/AliAnalysisTaskSEDplus.h @@ -18,6 +18,7 @@ #include #include #include +#include #include #include "AliRDHFCutsDplustoKpipi.h" @@ -84,6 +85,12 @@ class AliAnalysisTaskSEDplus : public AliAnalysisTaskSE TH1F *fPtMaxHistLS[3*kMaxPtBins];//!hist. for LS cuts variable 5 (LC) TH1F *fDCAHistLS[3*kMaxPtBins];//!hist. for LS cuts variable 6 (LC) TH1F *fMassHistLSTC[5*kMaxPtBins];//!hist. for LS inv mass (TC) + TH2F *fPtVsMass; //! hist. of pt vs. mass (prod. cuts) + TH2F *fPtVsMassTC; //! hist. of pt vs. mass (analysis cuts) + TH2F *fYVsPt; //! hist. of Y vs. Pt (prod. cuts) + TH2F *fYVsPtTC; //! hist. of Y vs. Pt (analysis cuts) + TH2F *fYVsPtSig; //! hist. of Y vs. Pt (MC, only sig, prod. cuts) + TH2F *fYVsPtSigTC; //! hist. of Y vs. Pt (MC, only sig, analysis cuts) TNtuple *fNtupleDplus; //! output ntuple Float_t fUpmasslimit; //upper inv mass limit for histos Float_t fLowmasslimit; //lower inv mass limit for histos @@ -97,7 +104,7 @@ class AliAnalysisTaskSEDplus : public AliAnalysisTaskSE Bool_t fReadMC; //flag for access to MC Bool_t fDoLS; //flag to do LS analysis - ClassDef(AliAnalysisTaskSEDplus,6); // AliAnalysisTaskSE for the MC association of heavy-flavour decay candidates + ClassDef(AliAnalysisTaskSEDplus,7); // AliAnalysisTaskSE for the MC association of heavy-flavour decay candidates }; #endif diff --git a/PWG3/vertexingHF/AliRDHFCutsDplustoKpipi.cxx b/PWG3/vertexingHF/AliRDHFCutsDplustoKpipi.cxx index 80406e97df2..cb7b882a464 100644 --- a/PWG3/vertexingHF/AliRDHFCutsDplustoKpipi.cxx +++ b/PWG3/vertexingHF/AliRDHFCutsDplustoKpipi.cxx @@ -251,9 +251,9 @@ Bool_t AliRDHFCutsDplustoKpipi::IsInFiducialAcceptance(Double_t pt, Double_t y) Int_t AliRDHFCutsDplustoKpipi::IsSelectedPID(AliAODRecoDecayHF *rd) { // - // PID selection + // PID selection, returns 3 if accepted, 0 if not accepted // - if(!fUsePID || !rd) return 1; + if(!fUsePID || !rd) return 3; //if(fUsePID)printf("i am inside the pid \n"); Int_t nkaons=0; Int_t nNotKaons=0; @@ -280,7 +280,7 @@ Int_t AliRDHFCutsDplustoKpipi::IsSelectedPID(AliAODRecoDecayHF *rd) if(nkaons>1)return 0; if(nNotKaons==3)return 0; - return 1; + return 3; } @@ -288,7 +288,7 @@ Int_t AliRDHFCutsDplustoKpipi::IsSelectedPID(AliAODRecoDecayHF *rd) //--------------------------------------------------------------------------- Int_t AliRDHFCutsDplustoKpipi::IsSelected(TObject* obj,Int_t selectionLevel, AliAODEvent* aod) { // - // Apply selection + // Apply selection, returns 3 if accepted, 0 if not accepted // if(!fCutsRD){ @@ -313,8 +313,8 @@ Int_t AliRDHFCutsDplustoKpipi::IsSelected(TObject* obj,Int_t selectionLevel, Ali } // PID selection - Int_t returnvaluePID=1; - Int_t returnvalueCuts=1; + Int_t returnvaluePID=3; + Int_t returnvalueCuts=3; //if(selectionLevel==AliRDHFCuts::kAll || @@ -405,6 +405,6 @@ Int_t AliRDHFCutsDplustoKpipi::IsSelected(TObject* obj,Int_t selectionLevel, Ali return returnvalueCuts; } - return 1; + return 3; } //--------------------------------------------------------------------------- -- 2.39.3