]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWG3/vertexingHF/AliCFVertexingHF2Prong.cxx
Correction Framework updated: 1) new variable definition and binning, 2) swicth betwe...
[u/mrichter/AliRoot.git] / PWG3 / vertexingHF / AliCFVertexingHF2Prong.cxx
index 7b40c32419de097056527cef3f74445be384d1cd..210e8b193d21241b0fa1bd2a1a31adbf2eafb860 100644 (file)
@@ -30,6 +30,7 @@
 
 #include "AliCFVertexingHF2Prong.h"
 #include "AliCFContainer.h"
+#include "AliCFTaskVertexingHF.h"
 
 ClassImp(AliCFVertexingHF2Prong)
 
@@ -43,6 +44,13 @@ ClassImp(AliCFVertexingHF2Prong)
        //
 
        SetNProngs(2);
+       fPtAccCut=new Float_t[fProngs];
+       fEtaAccCut=new Float_t[fProngs];
+       for(Int_t iP=0; iP<fProngs; iP++){
+               fPtAccCut[iP]=0.1;
+               fEtaAccCut[iP]=0.9;
+       }
+
 }
 
 
@@ -84,6 +92,16 @@ Bool_t AliCFVertexingHF2Prong::SetRecoCandidateParam(AliAODRecoDecayHF *recoCand
  
        Int_t mcLabel = fRecoCandidate->MatchToMC(pdgCand,fmcArray,2,pdgDgD0toKpi);
        if (mcLabel == -1) return bSignAssoc;
+
+       if (fRecoCandidate->NumberOfFakeDaughters()>0){
+               fFake = 0;    // fake candidate
+               if (fFakeSelection==1) return bSignAssoc;
+       }
+       if (fRecoCandidate->NumberOfFakeDaughters()==0){
+               fFake = 2;    // non-fake candidate
+               if (fFakeSelection==2) return bSignAssoc;
+       }
+
        SetMCLabel(mcLabel);
        fmcPartCandidate = dynamic_cast<AliAODMCParticle*>(fmcArray->At(fmcLabel));
        if (!fmcPartCandidate){
@@ -111,6 +129,7 @@ Bool_t AliCFVertexingHF2Prong::GetGeneratedValuesFromMCParticle(Double_t* vector
        Int_t daughter1 = fmcPartCandidate->GetDaughter(1);
        AliAODMCParticle* mcPartDaughter0 = dynamic_cast<AliAODMCParticle*>(fmcArray->At(daughter0));
        AliAODMCParticle* mcPartDaughter1 = dynamic_cast<AliAODMCParticle*>(fmcArray->At(daughter1));
+       if(!mcPartDaughter0 || !mcPartDaughter1) return bGenValues;
 
        // getting vertex from daughters
        mcPartDaughter0->XvYvZv(vtx2daughter0);  // cm
@@ -176,19 +195,36 @@ Bool_t AliCFVertexingHF2Prong::GetGeneratedValuesFromMCParticle(Double_t* vector
                pTK = mcPartDaughter0->Pt();
        }
        
-       vectorMC[0] = fmcPartCandidate->Pt();
-       vectorMC[1] = fmcPartCandidate->Y() ;
-       vectorMC[2] = cosThetaStar ;
-       vectorMC[3] = pTpi ;
-       vectorMC[4] = pTK ;
-       vectorMC[5] = cT*1.E4 ;  // in micron
-       vectorMC[6] = 0.;   // dummy value, meaningless in MC
-       vectorMC[7] = 0.;   // dummy value, meaningless in MC, in micron
-       vectorMC[8] = 0.;   // dummy value, meaningless in MC, in micron
-       vectorMC[9] = -100000.; // dummy value, meaningless in MC, in micron^2
-       vectorMC[10] = 1.01;    // dummy value, meaningless in MC
-       vectorMC[11] = fmcPartCandidate->Phi(); 
-       vectorMC[12] = fzMCVertex;    // z of reconstructed of primary vertex
+       switch (fConfiguration){
+       case AliCFTaskVertexingHF::kSnail:
+               vectorMC[0] = fmcPartCandidate->Pt();
+               vectorMC[1] = fmcPartCandidate->Y() ;
+               vectorMC[2] = cosThetaStar ;
+               vectorMC[3] = pTpi ;
+               vectorMC[4] = pTK ;
+               vectorMC[5] = cT*1.E4 ;  // in micron
+               vectorMC[6] = 0.;   // dummy value for dca, meaningless in MC
+               vectorMC[7] = -80000.; // dummy value for d0pixd0K, meaningless in MC, in micron^2
+               vectorMC[8] = 1.01;    // dummy value for cosPointing, meaningless in MC
+               vectorMC[9] = fmcPartCandidate->Phi(); 
+               vectorMC[10] = fzMCVertex;    // z of reconstructed of primary vertex
+               vectorMC[11] = fCentValue;   //reconstructed centrality 
+               vectorMC[12] = 1.;           // fake: always filling with 1 at MC level 
+               vectorMC[13] = 1.01; // dummy value for cosPointingXY  multiplicity
+               vectorMC[14] = 0.; // dummy value for NormalizedDecayLengthXY multiplicity
+               vectorMC[15] = fMultiplicity; // reconstructed multiplicity
+               break;
+       case AliCFTaskVertexingHF::kCheetah:
+               vectorMC[0] = fmcPartCandidate->Pt();
+               vectorMC[1] = fmcPartCandidate->Y() ;
+               vectorMC[2] = cT*1.E4; // in micron
+               vectorMC[3] = fmcPartCandidate->Phi();
+               vectorMC[4] = fzMCVertex;
+               vectorMC[5] = fCentValue;   // dummy value for dca, meaningless in MC
+               vectorMC[6] = 1. ;  // fake: always filling with 1 at MC level 
+               vectorMC[7] = fMultiplicity;   // dummy value for d0pi, meaningless in MC, in micron
+               break;
+       }
        delete decay;
        bGenValues = kTRUE;
        return bGenValues;
@@ -220,6 +256,8 @@ Bool_t AliCFVertexingHF2Prong::GetRecoValuesFromCandidate(Double_t *vectorReco)
        Double_t cosPointingAngle = d0toKpi->CosPointingAngle();
        Double_t phi = d0toKpi->Phi();
        Int_t pdgCode = fmcPartCandidate->GetPdgCode();
+       Double_t cosPointingAngleXY = d0toKpi->CosPointingAngleXY();
+       Double_t normDecayLengthXY = d0toKpi->NormalizedDecayLengthXY();
        
        if (pdgCode > 0){
                cosThetaStar = d0toKpi->CosThetaStarD0();
@@ -240,19 +278,37 @@ Bool_t AliCFVertexingHF2Prong::GetRecoValuesFromCandidate(Double_t *vectorReco)
        
        Double_t cT = d0toKpi->CtD0();  
        
-       vectorReco[0] = pt;
-       vectorReco[1] = rapidity;
-       vectorReco[2] = cosThetaStar;
-       vectorReco[3] = pTpi;
-       vectorReco[4] = pTK;
-       vectorReco[5] = cT*1.E4;  // in micron
-       vectorReco[6] = dca*1.E4;  // in micron
-       vectorReco[7] = d0pi*1.E4;  // in micron
-       vectorReco[8] = d0K*1.E4;  // in micron
-       vectorReco[9] = d0xd0*1.E8;  // in micron^2
-       vectorReco[10] = cosPointingAngle;  // in micron
-       vectorReco[11] = phi;  
-       vectorReco[12] = fzPrimVertex;    // z of reconstructed of primary vertex
+       switch (fConfiguration){
+       case AliCFTaskVertexingHF::kSnail:
+               vectorReco[0] = pt;
+               vectorReco[1] = rapidity;
+               vectorReco[2] = cosThetaStar;
+               vectorReco[3] = pTpi;
+               vectorReco[4] = pTK;
+               vectorReco[5] = cT*1.E4;  // in micron
+               vectorReco[6] = dca*1.E4;  // in micron
+               vectorReco[7] = d0xd0*1.E8;  // in micron^2
+               vectorReco[8] = cosPointingAngle; 
+               vectorReco[9] = phi;  
+               vectorReco[10] = fzPrimVertex;    // z of reconstructed of primary vertex
+               vectorReco[11] = fCentValue; //reconstructed centrality 
+               vectorReco[12] = fFake;      // whether the reconstructed candidate was a fake (fFake = 0) or not (fFake = 2) 
+               vectorReco[13] = cosPointingAngleXY; 
+               vectorReco[14] = normDecayLengthXY; // in cm
+               vectorReco[15] = fMultiplicity; // reconstructed multiplicity
+               break;
+       case AliCFTaskVertexingHF::kCheetah:
+               vectorReco[0] = pt;
+               vectorReco[1] = rapidity ;
+               vectorReco[2] = cT*1.E4; // in micron
+               vectorReco[3] = phi; 
+               vectorReco[4] = fzPrimVertex;
+               vectorReco[5] = fCentValue;   
+               vectorReco[6] = fFake ; 
+               vectorReco[7] = fMultiplicity;  
+               break;
+       }
+
        bFillRecoValues = kTRUE;
 
        return bFillRecoValues;