]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
Get the cuts from AliAnalysisVertexingHF object
authordainese <dainese@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 19 Jan 2009 11:09:15 +0000 (11:09 +0000)
committerdainese <dainese@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 19 Jan 2009 11:09:15 +0000 (11:09 +0000)
PWG3/vertexingHF/AliAnalysisTaskSECompareHF.cxx
PWG3/vertexingHF/AliAnalysisTaskSECompareHF.h
PWG3/vertexingHF/AliAnalysisTaskSECompareHFTest.C
PWG3/vertexingHF/AliAnalysisTaskSESelectHF.cxx
PWG3/vertexingHF/AliAnalysisTaskSESelectHF.h
PWG3/vertexingHF/AliAnalysisTaskSESelectHFTest.C

index 1b44549a6305df149f242376ecbd852c7f037967..2b021500cdde7dba0eee9d64221bb21c235d5734 100644 (file)
@@ -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;
-}
index bc9a48a157179c566c8c24b57b387e2b7690c22d..c99e66e9a705d65f31a898791c0db6642708efb7 100644 (file)
@@ -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 <TROOT.h>
+#include <TSystem.h>
 #include <TNtuple.h>
 #include <TH1F.h>
 
 #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
index 3f56103f44256385f3d3959b522c5faecc6387a9..6377d9c250729243e2361be6ec52fc688431c58e 100644 (file)
@@ -61,27 +61,6 @@ void AliAnalysisTaskSECompareHFTest()
   // Aanalysis task    \r
   AliAnalysisTaskSECompareHF *hfTask = new AliAnalysisTaskSECompareHF("CompareHFAnalysis");\r
   hfTask->SetDebugLevel(2);\r
-  Double_t cutsD0[9]=\r
-    // cutsD0[0] = inv. mass half width [GeV]\r
-    // cutsD0[1] = dca [cm]\r
-    // cutsD0[2] = cosThetaStar\r
-    // cutsD0[3] = pTK [GeV/c]\r
-    // cutsD0[4] = pTPi [GeV/c]\r
-    // cutsD0[5] = d0K [cm]   upper limit!\r
-    // cutsD0[6] = d0Pi [cm]  upper limit!\r
-    // cutsD0[7] = d0d0 [cm^2]\r
-    // cutsD0[8] = cosThetaPoint\r
-                     {1,\r
-                     100000.,\r
-                     1.1,\r
-                     0.,\r
-                     0.,\r
-                     100000.,\r
-                     100000.,\r
-                     100000000.,\r
-                     -0.9}; \r
-  hfTask->SetD0toKpiCuts(cutsD0);\r
-  \r
   mgr->AddTask(hfTask);\r
   \r
   //\r
index 37bddcf63d3a4ec7773dd2e1059099e81c8b1690..adbe1aa22e0fa9b2b35ef8c867eea48f68abd33b 100644 (file)
@@ -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;
-}
index a8ae5d4535a85a92692e60c82af1569c7994bbe1..e021ffef2db002e8536f30092d1742824a944853 100644 (file)
@@ -11,7 +11,8 @@
 // Author: A.Dainese, andrea.dainese@lnl.infn.it
 //*************************************************************************
 
-
+#include <TROOT.h>
+#include <TSystem.h>
 #include <TClonesArray.h>
 
 #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
index 1d125da3c8e9ebe1f80360d0e069093d9bbd6214..6988ee3525b72f76a201e7912702dbb2415f566f 100644 (file)
@@ -67,27 +67,6 @@ void AliAnalysisTaskSESelectHFTest()
   // Aanalysis task    \r
   AliAnalysisTaskSESelectHF *hfTask = new AliAnalysisTaskSESelectHF("SelectHFAnalysis");\r
   hfTask->SetDebugLevel(2);\r
-  Double_t cutsD0[9]=\r
-    // cutsD0[0] = inv. mass half width [GeV]\r
-    // cutsD0[1] = dca [cm]\r
-    // cutsD0[2] = cosThetaStar\r
-    // cutsD0[3] = pTK [GeV/c]\r
-    // cutsD0[4] = pTPi [GeV/c]\r
-    // cutsD0[5] = d0K [cm]   upper limit!\r
-    // cutsD0[6] = d0Pi [cm]  upper limit!\r
-    // cutsD0[7] = d0d0 [cm^2]\r
-    // cutsD0[8] = cosThetaPoint\r
-                     {1,\r
-                     100000.,\r
-                     1.1,\r
-                     0.,\r
-                     0.,\r
-                     100000.,\r
-                     100000.,\r
-                     100000000.,\r
-                     -0.9}; \r
-  hfTask->SetD0toKpiCuts(cutsD0);\r
-  \r
   mgr->AddTask(hfTask);\r
   \r
   //\r