From 12bfc0694c1a7fc22874fc81218e046862fa08c5 Mon Sep 17 00:00:00 2001 From: dainese Date: Mon, 19 Jan 2009 11:09:15 +0000 Subject: [PATCH] Get the cuts from AliAnalysisVertexingHF object --- .../AliAnalysisTaskSECompareHF.cxx | 84 ++++++------------- PWG3/vertexingHF/AliAnalysisTaskSECompareHF.h | 23 ++--- .../AliAnalysisTaskSECompareHFTest.C | 21 ----- .../vertexingHF/AliAnalysisTaskSESelectHF.cxx | 70 ++++------------ PWG3/vertexingHF/AliAnalysisTaskSESelectHF.h | 22 +---- .../AliAnalysisTaskSESelectHFTest.C | 21 ----- 6 files changed, 52 insertions(+), 189 deletions(-) diff --git a/PWG3/vertexingHF/AliAnalysisTaskSECompareHF.cxx b/PWG3/vertexingHF/AliAnalysisTaskSECompareHF.cxx index 1b44549a630..2b021500cdd 100644 --- a/PWG3/vertexingHF/AliAnalysisTaskSECompareHF.cxx +++ b/PWG3/vertexingHF/AliAnalysisTaskSECompareHF.cxx @@ -32,6 +32,7 @@ #include "AliAODMCHeader.h" #include "AliAODMCParticle.h" #include "AliAODRecoDecayHF2Prong.h" +#include "AliAnalysisvertexingHF.h" #include "AliAnalysisTaskSE.h" #include "AliAnalysisTaskSECompareHF.h" @@ -43,10 +44,10 @@ AliAnalysisTaskSECompareHF::AliAnalysisTaskSECompareHF(): AliAnalysisTaskSE(), fOutput(0), fNtupleD0Cmp(0), -fHistMass(0) +fHistMass(0), +fVHF(0) { // Default constructor - SetD0toKpiCuts(); // Output slot #1 writes into a TList container DefineOutput(1,TList::Class()); //My private output @@ -57,10 +58,10 @@ AliAnalysisTaskSECompareHF::AliAnalysisTaskSECompareHF(const char *name): AliAnalysisTaskSE(name), fOutput(0), fNtupleD0Cmp(0), -fHistMass(0) +fHistMass(0), +fVHF(0) { // Default constructor - SetD0toKpiCuts(); // Output slot #1 writes into a TList container DefineOutput(1,TList::Class()); //My private output @@ -74,6 +75,10 @@ AliAnalysisTaskSECompareHF::~AliAnalysisTaskSECompareHF() delete fOutput; fOutput = 0; } + if (fVHF) { + delete fVHF; + fVHF = 0; + } } //________________________________________________________________________ @@ -83,6 +88,11 @@ void AliAnalysisTaskSECompareHF::Init() if(fDebug > 1) printf("AnalysisTaskSECompareHF::Init() \n"); + gROOT->LoadMacro("ConfigVertexingHF.C"); + + fVHF = (AliAnalysisVertexingHF*)gROOT->ProcessLine("ConfigVertexingHF()"); + fVHF->PrintStatus(); + return; } @@ -162,7 +172,7 @@ void AliAnalysisTaskSECompareHF::UserExec(Option_t */*option*/) unsetvtx=kTRUE; } Int_t okD0=0,okD0bar=0; - if(d->SelectD0(fD0toKpiCuts,okD0,okD0bar)) { + if(d->SelectD0(fVHF->GetD0toKpiCuts(),okD0,okD0bar)) { // get daughter AOD tracks AliAODTrack *trk0 = (AliAODTrack*)d->GetDaughter(0); AliAODTrack *trk1 = (AliAODTrack*)d->GetDaughter(1); @@ -213,14 +223,18 @@ void AliAnalysisTaskSECompareHF::UserExec(Option_t */*option*/) if(labD0daugh0>=0 && labD0daugh1>=0 && labD0daugh0==labD0daugh1) { AliAODMCParticle *partD0 = (AliAODMCParticle*)mcArray->At(labD0daugh0); - pdgD0 = partD0->GetPdgCode(); - Double_t invmass = (pdgD0==421 ? d->InvMassD0() : d->InvMassD0bar()); - fHistMass->Fill(invmass); + // check that the D0 decays in 2 prongs + if (TMath::Abs(partD0->GetDaughter(1)-partD0->GetDaughter(0))==1) { + + pdgD0 = partD0->GetPdgCode(); + Double_t invmass = (pdgD0==421 ? d->InvMassD0() : d->InvMassD0bar()); + fHistMass->Fill(invmass); - // Post the data already here - PostData(1,fOutput); + // Post the data already here + PostData(1,fOutput); - fNtupleD0Cmp->Fill(pdgD0,d->Xv(),partD0->Xv(),d->Pt(),partD0->Pt()); + fNtupleD0Cmp->Fill(pdgD0,d->Xv(),partD0->Xv(),d->Pt(),partD0->Pt()); + } } @@ -251,51 +265,3 @@ void AliAnalysisTaskSECompareHF::Terminate(Option_t */*option*/) return; } -//________________________________________________________________________ -void AliAnalysisTaskSECompareHF::SetD0toKpiCuts(Double_t cut0,Double_t cut1, - Double_t cut2,Double_t cut3,Double_t cut4, - Double_t cut5,Double_t cut6, - Double_t cut7,Double_t cut8) -{ - // Set the cuts for D0 selection - // cuts[0] = inv. mass half width [GeV] - // cuts[1] = dca [cm] - // cuts[2] = cosThetaStar - // cuts[3] = pTK [GeV/c] - // cuts[4] = pTPi [GeV/c] - // cuts[5] = d0K [cm] upper limit! - // cuts[6] = d0Pi [cm] upper limit! - // cuts[7] = d0d0 [cm^2] - // cuts[8] = cosThetaPoint - - fD0toKpiCuts[0] = cut0; - fD0toKpiCuts[1] = cut1; - fD0toKpiCuts[2] = cut2; - fD0toKpiCuts[3] = cut3; - fD0toKpiCuts[4] = cut4; - fD0toKpiCuts[5] = cut5; - fD0toKpiCuts[6] = cut6; - fD0toKpiCuts[7] = cut7; - fD0toKpiCuts[8] = cut8; - - return; -} - -//________________________________________________________________________ -void AliAnalysisTaskSECompareHF::SetD0toKpiCuts(const Double_t cuts[9]) -{ - // Set the cuts for D0 selection - // cuts[0] = inv. mass half width [GeV] - // cuts[1] = dca [cm] - // cuts[2] = cosThetaStar - // cuts[3] = pTK [GeV/c] - // cuts[4] = pTPi [GeV/c] - // cuts[5] = d0K [cm] upper limit! - // cuts[6] = d0Pi [cm] upper limit! - // cuts[7] = d0d0 [cm^2] - // cuts[8] = cosThetaPoint - - for(Int_t i=0; i<9; i++) fD0toKpiCuts[i] = cuts[i]; - - return; -} diff --git a/PWG3/vertexingHF/AliAnalysisTaskSECompareHF.h b/PWG3/vertexingHF/AliAnalysisTaskSECompareHF.h index bc9a48a1571..c99e66e9a70 100644 --- a/PWG3/vertexingHF/AliAnalysisTaskSECompareHF.h +++ b/PWG3/vertexingHF/AliAnalysisTaskSECompareHF.h @@ -8,13 +8,16 @@ // Class AliAnalysisTaskSECompareHF // AliAnalysisTaskSE for the comparison of heavy-flavour decay candidates // to MC truth (kinematics stored in the AOD) -// Author: A.Dainese, andrea.dainese@lnl.infn.it +// Author: A.Dainese, andrea.dainese@ln.infn.it //************************************************************************* +#include +#include #include #include #include "AliAnalysisTaskSE.h" +#include "AliAnalysisVertexingHF.h" class AliAnalysisTaskSECompareHF : public AliAnalysisTaskSE { @@ -32,20 +35,6 @@ class AliAnalysisTaskSECompareHF : public AliAnalysisTaskSE virtual void UserExec(Option_t *option); virtual void Terminate(Option_t *option); - void SetD0toKpiCuts(Double_t cut0=1000.,Double_t cut1=100000., - Double_t cut2=1.1,Double_t cut3=0.,Double_t cut4=0., - Double_t cut5=100000.,Double_t cut6=100000., - Double_t cut7=100000000.,Double_t cut8=-1.1); - // cuts[0] = inv. mass half width [GeV] - // cuts[1] = dca [cm] - // cuts[2] = cosThetaStar - // cuts[3] = pTK [GeV/c] - // cuts[4] = pTPi [GeV/c] - // cuts[5] = d0K [cm] upper limit! - // cuts[6] = d0Pi [cm] upper limit! - // cuts[7] = d0d0 [cm^2] - // cuts[8] = cosThetaPoint - void SetD0toKpiCuts(const Double_t cuts[9]); private: @@ -54,9 +43,9 @@ class AliAnalysisTaskSECompareHF : public AliAnalysisTaskSE TList *fOutput; //! list send on output slot 0 TNtuple *fNtupleD0Cmp; // output ntuple TH1F *fHistMass; // output histogram - Double_t fD0toKpiCuts[9]; // cuts for D0->Kpi selection + AliAnalysisVertexingHF *fVHF; // Vertexer heavy flavour (used to pass the cuts) - ClassDef(AliAnalysisTaskSECompareHF,1); // AliAnalysisTaskSE for the MC association of heavy-flavour decay candidates + ClassDef(AliAnalysisTaskSECompareHF,2); // AliAnalysisTaskSE for the MC association of heavy-flavour decay candidates }; #endif diff --git a/PWG3/vertexingHF/AliAnalysisTaskSECompareHFTest.C b/PWG3/vertexingHF/AliAnalysisTaskSECompareHFTest.C index 3f56103f442..6377d9c2507 100644 --- a/PWG3/vertexingHF/AliAnalysisTaskSECompareHFTest.C +++ b/PWG3/vertexingHF/AliAnalysisTaskSECompareHFTest.C @@ -61,27 +61,6 @@ void AliAnalysisTaskSECompareHFTest() // Aanalysis task AliAnalysisTaskSECompareHF *hfTask = new AliAnalysisTaskSECompareHF("CompareHFAnalysis"); hfTask->SetDebugLevel(2); - Double_t cutsD0[9]= - // cutsD0[0] = inv. mass half width [GeV] - // cutsD0[1] = dca [cm] - // cutsD0[2] = cosThetaStar - // cutsD0[3] = pTK [GeV/c] - // cutsD0[4] = pTPi [GeV/c] - // cutsD0[5] = d0K [cm] upper limit! - // cutsD0[6] = d0Pi [cm] upper limit! - // cutsD0[7] = d0d0 [cm^2] - // cutsD0[8] = cosThetaPoint - {1, - 100000., - 1.1, - 0., - 0., - 100000., - 100000., - 100000000., - -0.9}; - hfTask->SetD0toKpiCuts(cutsD0); - mgr->AddTask(hfTask); // diff --git a/PWG3/vertexingHF/AliAnalysisTaskSESelectHF.cxx b/PWG3/vertexingHF/AliAnalysisTaskSESelectHF.cxx index 37bddcf63d3..adbe1aa22e0 100644 --- a/PWG3/vertexingHF/AliAnalysisTaskSESelectHF.cxx +++ b/PWG3/vertexingHF/AliAnalysisTaskSESelectHF.cxx @@ -27,6 +27,7 @@ #include "AliAODVertex.h" #include "AliAODTrack.h" #include "AliAODRecoDecayHF2Prong.h" +#include "AliAnalysisVertexingHF.h" #include "AliAnalysisTaskSE.h" #include "AliAnalysisTaskSESelectHF.h" @@ -37,26 +38,32 @@ ClassImp(AliAnalysisTaskSESelectHF) AliAnalysisTaskSESelectHF::AliAnalysisTaskSESelectHF(): AliAnalysisTaskSE(), fVerticesHFTClArr(0), -fD0toKpiTClArr(0) +fD0toKpiTClArr(0), +fVHF(0) { // Default constructor - SetD0toKpiCuts(); } //________________________________________________________________________ AliAnalysisTaskSESelectHF::AliAnalysisTaskSESelectHF(const char *name): AliAnalysisTaskSE(name), fVerticesHFTClArr(0), -fD0toKpiTClArr(0) +fD0toKpiTClArr(0), +fVHF(0) { // Default constructor - SetD0toKpiCuts(); } //________________________________________________________________________ AliAnalysisTaskSESelectHF::~AliAnalysisTaskSESelectHF() { // Destructor + + if (fVHF) { + delete fVHF; + fVHF = 0; + } + } //________________________________________________________________________ @@ -66,6 +73,11 @@ void AliAnalysisTaskSESelectHF::Init() if(fDebug > 1) printf("AnalysisTaskSESelectHF::Init() \n"); + gROOT->LoadMacro("ConfigVertexingHF.C"); + + fVHF = (AliAnalysisVertexingHF*)gROOT->ProcessLine("ConfigVertexingHF()"); + fVHF->PrintStatus(); + return; } @@ -138,7 +150,7 @@ void AliAnalysisTaskSESelectHF::UserExec(Option_t */*option*/) unsetvtx=kTRUE; } Int_t okD0=0,okD0bar=0; - if(dIn->SelectD0(fD0toKpiCuts,okD0,okD0bar)) { + if(dIn->SelectD0(fVHF->GetD0toKpiCuts(),okD0,okD0bar)) { // get daughter AOD tracks AliAODTrack *trk0 = (AliAODTrack*)dIn->GetDaughter(0); AliAODTrack *trk1 = (AliAODTrack*)dIn->GetDaughter(1); @@ -176,51 +188,3 @@ void AliAnalysisTaskSESelectHF::Terminate(Option_t */*option*/) if(fDebug > 1) printf("AnalysisTaskSESelectHF: Terminate() \n"); } -//________________________________________________________________________ -void AliAnalysisTaskSESelectHF::SetD0toKpiCuts(Double_t cut0,Double_t cut1, - Double_t cut2,Double_t cut3,Double_t cut4, - Double_t cut5,Double_t cut6, - Double_t cut7,Double_t cut8) -{ - // Set the cuts for D0 selection - // cuts[0] = inv. mass half width [GeV] - // cuts[1] = dca [cm] - // cuts[2] = cosThetaStar - // cuts[3] = pTK [GeV/c] - // cuts[4] = pTPi [GeV/c] - // cuts[5] = d0K [cm] upper limit! - // cuts[6] = d0Pi [cm] upper limit! - // cuts[7] = d0d0 [cm^2] - // cuts[8] = cosThetaPoint - - fD0toKpiCuts[0] = cut0; - fD0toKpiCuts[1] = cut1; - fD0toKpiCuts[2] = cut2; - fD0toKpiCuts[3] = cut3; - fD0toKpiCuts[4] = cut4; - fD0toKpiCuts[5] = cut5; - fD0toKpiCuts[6] = cut6; - fD0toKpiCuts[7] = cut7; - fD0toKpiCuts[8] = cut8; - - return; -} - -//________________________________________________________________________ -void AliAnalysisTaskSESelectHF::SetD0toKpiCuts(const Double_t cuts[9]) -{ - // Set the cuts for D0 selection - // cuts[0] = inv. mass half width [GeV] - // cuts[1] = dca [cm] - // cuts[2] = cosThetaStar - // cuts[3] = pTK [GeV/c] - // cuts[4] = pTPi [GeV/c] - // cuts[5] = d0K [cm] upper limit! - // cuts[6] = d0Pi [cm] upper limit! - // cuts[7] = d0d0 [cm^2] - // cuts[8] = cosThetaPoint - - for(Int_t i=0; i<9; i++) fD0toKpiCuts[i] = cuts[i]; - - return; -} diff --git a/PWG3/vertexingHF/AliAnalysisTaskSESelectHF.h b/PWG3/vertexingHF/AliAnalysisTaskSESelectHF.h index a8ae5d4535a..e021ffef2db 100644 --- a/PWG3/vertexingHF/AliAnalysisTaskSESelectHF.h +++ b/PWG3/vertexingHF/AliAnalysisTaskSESelectHF.h @@ -11,7 +11,8 @@ // Author: A.Dainese, andrea.dainese@lnl.infn.it //************************************************************************* - +#include +#include #include #include "AliAnalysisTaskSE.h" @@ -33,21 +34,6 @@ class AliAnalysisTaskSESelectHF : public AliAnalysisTaskSE virtual void LocalInit() {Init();} virtual void UserExec(Option_t *option); virtual void Terminate(Option_t *option); - - void SetD0toKpiCuts(Double_t cut0=1000.,Double_t cut1=100000., - Double_t cut2=1.1,Double_t cut3=0.,Double_t cut4=0., - Double_t cut5=100000.,Double_t cut6=100000., - Double_t cut7=100000000.,Double_t cut8=-1.1); - // cuts[0] = inv. mass half width [GeV] - // cuts[1] = dca [cm] - // cuts[2] = cosThetaStar - // cuts[3] = pTK [GeV/c] - // cuts[4] = pTPi [GeV/c] - // cuts[5] = d0K [cm] upper limit! - // cuts[6] = d0Pi [cm] upper limit! - // cuts[7] = d0d0 [cm^2] - // cuts[8] = cosThetaPoint - void SetD0toKpiCuts(const Double_t cuts[9]); private: @@ -55,9 +41,9 @@ class AliAnalysisTaskSESelectHF : public AliAnalysisTaskSE AliAnalysisTaskSESelectHF& operator=(const AliAnalysisTaskSESelectHF& source); TClonesArray *fVerticesHFTClArr; // Array of heavy-flavour vertices TClonesArray *fD0toKpiTClArr; // Array of D0->Kpi - Double_t fD0toKpiCuts[9]; // cuts for D0->Kpi selection + AliAnalysisVertexingHF *fVHF; // analysis (used to pass the cuts) - ClassDef(AliAnalysisTaskSESelectHF,1); // AliAnalysisTaskSE for the reconstruction of heavy-flavour decay candidates + ClassDef(AliAnalysisTaskSESelectHF,2); // AliAnalysisTaskSE for the reconstruction of heavy-flavour decay candidates }; #endif diff --git a/PWG3/vertexingHF/AliAnalysisTaskSESelectHFTest.C b/PWG3/vertexingHF/AliAnalysisTaskSESelectHFTest.C index 1d125da3c8e..6988ee3525b 100644 --- a/PWG3/vertexingHF/AliAnalysisTaskSESelectHFTest.C +++ b/PWG3/vertexingHF/AliAnalysisTaskSESelectHFTest.C @@ -67,27 +67,6 @@ void AliAnalysisTaskSESelectHFTest() // Aanalysis task AliAnalysisTaskSESelectHF *hfTask = new AliAnalysisTaskSESelectHF("SelectHFAnalysis"); hfTask->SetDebugLevel(2); - Double_t cutsD0[9]= - // cutsD0[0] = inv. mass half width [GeV] - // cutsD0[1] = dca [cm] - // cutsD0[2] = cosThetaStar - // cutsD0[3] = pTK [GeV/c] - // cutsD0[4] = pTPi [GeV/c] - // cutsD0[5] = d0K [cm] upper limit! - // cutsD0[6] = d0Pi [cm] upper limit! - // cutsD0[7] = d0d0 [cm^2] - // cutsD0[8] = cosThetaPoint - {1, - 100000., - 1.1, - 0., - 0., - 100000., - 100000., - 100000000., - -0.9}; - hfTask->SetD0toKpiCuts(cutsD0); - mgr->AddTask(hfTask); // -- 2.43.0