1 #ifndef ALICFVERTEXINGHF_H
2 #define ALICFVERTEXINGHF_H
4 /**************************************************************************
5 * Copyright(c) 1998-2009, ALICE Experiment at CERN, All rights reserved. *
7 * Author: The ALICE Off-line Project. *
8 * Contributors are mentioned in the code where appropriate. *
10 * Permission to use, copy, modify and distribute this software and its *
11 * documentation strictly for non-commercial purposes is hereby granted *
12 * without fee, provided that the above copyright notice appears in all *
13 * copies and that both the copyright notice and this permission notice *
14 * appear in the supporting documentation. The authors make no claims *
15 * about the suitability of this software for any purpose. It is *
16 * provided "as is" without express or implied warranty. *
17 **************************************************************************/
21 //-----------------------------------------------------------------------
22 // Class for HF corrections as a function of many variables and step
23 // Author : C. Zampolli, CERN
24 // D. Caffarri, Univ & INFN Padova caffarri@pd.infn.it
25 // Base class for HF Unfolding - agrelli@uu.nl
26 //-----------------------------------------------------------------------
28 #include "AliCFContainer.h"
29 #include "AliAODRecoDecayHF.h"
35 class AliAODMCParticle;
40 class AliESDtrackCuts;
44 class AliCFVertexingHF : public TObject {
47 enum DecayChannel{kD0toKpi = 2, kDStartoKpipi = 21, kDplustoKpipi = 31, kLctopKpi = 32, kDstoKKpi = 33, kD0toKpipipi = 4};
50 AliCFVertexingHF(TClonesArray *mcArray, UShort_t originDselection);
51 AliCFVertexingHF(const AliCFVertexingHF& c);
52 AliCFVertexingHF& operator= (const AliCFVertexingHF& c);
54 virtual ~AliCFVertexingHF();
56 virtual Bool_t GetGeneratedValuesFromMCParticle(Double_t* /*vectorMC*/) {return kFALSE;}
57 virtual Bool_t GetRecoValuesFromCandidate(Double_t* /*vectorReco*/) const {return kFALSE;}
58 virtual Bool_t CheckMCChannelDecay() const {return kFALSE;}
59 virtual Bool_t SetRecoCandidateParam(AliAODRecoDecayHF* /*recoCand*/) {return kFALSE;}
61 virtual void SetDecay3Prong(Int_t /*decay*/){};
63 void SetFillFromGenerated(Bool_t flag) {fFillFromGenerated = flag;}
64 Bool_t GetFillFromGenerated() const {return fFillFromGenerated;}
66 void SetNVar(Int_t nVar) {fNVar = nVar;}
68 void SetRecoPrimVertex (Double_t zPrimVertex) {fzPrimVertex = zPrimVertex;}
69 void SetMCPrimaryVertex (Double_t zMCVertex){fzMCVertex = zMCVertex;}
70 void SetMCLabel (Int_t mcLabel) {fmcLabel = mcLabel;}
71 Int_t GetMCLabel () const {return fmcLabel;}
73 void SetMCCandidateParam(Int_t label);
75 Int_t MCcquarkCounting(AliAODMCParticle* mcPart) const;
76 Bool_t CheckMCPartFamily(AliAODMCParticle */*mcPart*/, TClonesArray */*mcArray*/) const;
77 // Int_t CheckOrigin(AliAODMCParticle* mcPart) const;
78 Int_t CheckOrigin() const;
79 Bool_t CheckMCDaughters() const;
80 Bool_t FillMCContainer(Double_t *containerInputMC);
81 Bool_t FillRecoContainer(Double_t *containerInput);
82 Bool_t MCAcceptanceStep() const;
83 Bool_t MCRefitStep(AliAODEvent *aodEvent, AliESDtrackCuts *trackCuts) const;
86 Double_t GetEtaProng(Int_t iProng) const;
87 Double_t GetPtProng(Int_t iProng) const;
89 Double_t GetPtCand() const {return fRecoCandidate->Pt();}
90 Double_t GetYCand() const {return fRecoCandidate->Y();}
92 Bool_t RecoAcceptStep(AliESDtrackCuts *trackCuts) const;
94 Bool_t FillUnfoldingMatrix(Double_t fill[4]) const;
96 void SetNProngs(Int_t nProngs){fProngs = nProngs;}
97 void SetDselection(UShort_t originDselection);
98 UShort_t GetDselection() {return fOriginDselection;};
99 Int_t CheckReflexion(Char_t isSign);
100 Bool_t SetLabelArray();
102 void SetCentralityValue(Float_t centValue) {fCentValue = centValue;}
106 TClonesArray *fmcArray; //mcArray candidate
107 AliAODRecoDecayHF *fRecoCandidate; // Reconstructed HF candidate
108 AliAODMCParticle *fmcPartCandidate;
110 Int_t fNVar; // get Number of variables for the container from the channel decay
111 Double_t fzPrimVertex; //Reco z primary vertex
112 Double_t fzMCVertex; //MC z primary vertex
114 Bool_t fFillFromGenerated; // flag to indicate whether data container should be filled
115 UShort_t fOriginDselection; // flag to select D0 origins. 0 Only from charm 1 only from beauty 2 both from charm and beauty
117 Bool_t fKeepDfromB; //flag for the feed down from b quark decay.
118 Bool_t fKeepDfromBOnly; // flag to keep only the charm particles that comes from beauty decays
119 Int_t fmcLabel; // results of the MatchToMC()
120 Int_t fProngs; // n. of prongs
121 Int_t* fLabelArray; //[fProngs] array of labels
123 Float_t fCentValue; // centrality value
125 ClassDef(AliCFVertexingHF, 3);