Update (Andrea)
[u/mrichter/AliRoot.git] / PWG3 / vertexingHF / AliCFVertexingHF.h
CommitLineData
379592af 1#ifndef ALICFVERTEXINGHF_H
2#define ALICFVERTEXINGHF_H
3
2bf2e62b 4
379592af 5/**************************************************************************
6 * Copyright(c) 1998-2009, ALICE Experiment at CERN, All rights reserved. *
7 * *
8 * Author: The ALICE Off-line Project. *
9 * Contributors are mentioned in the code where appropriate. *
10 * *
11 * Permission to use, copy, modify and distribute this software and its *
12 * documentation strictly for non-commercial purposes is hereby granted *
13 * without fee, provided that the above copyright notice appears in all *
14 * copies and that both the copyright notice and this permission notice *
15 * appear in the supporting documentation. The authors make no claims *
16 * about the suitability of this software for any purpose. It is *
17 * provided "as is" without express or implied warranty. *
18 **************************************************************************/
19
20//-----------------------------------------------------------------------
21// Class for HF corrections as a function of many variables and step
22// Author : C. Zampolli, CERN
23// D. Caffarri, Univ & INFN Padova caffarri@pd.infn.it
24// Base class for HF Unfolding - agrelli@uu.nl
25//-----------------------------------------------------------------------
26
27#include "AliCFContainer.h"
28#include "AliAODRecoDecayHF.h"
29
30class TH1I;
31class TParticle ;
32class TFile ;
33class TClonesArray ;
34class AliAODMCParticle;
35class AliAODMCHeader;
36class AliAODEvent;
37class THnSparse;
38class TClonesArray;
39class AliESDtrackCuts;
40
41
42
43class AliCFVertexingHF : public TObject {
44 public:
f2703bd2 45
46 enum DecayChannel{kD0toKpi = 2, kDStartoKpipi = 21, kDplustoKpipi = 31, kLctopKpi = 32, kDstoKKpi = 33, kD0toKpipipi = 4};
47
379592af 48 AliCFVertexingHF() ;
49 AliCFVertexingHF(TClonesArray *mcArray, UShort_t originDselection);
50 AliCFVertexingHF(const AliCFVertexingHF& c);
51 AliCFVertexingHF& operator= (const AliCFVertexingHF& c);
52
53 virtual ~AliCFVertexingHF();
54
55 virtual Bool_t GetGeneratedValuesFromMCParticle(Double_t* /*vectorMC*/) {return kFALSE;}
56 virtual Bool_t GetRecoValuesFromCandidate(Double_t* /*vectorReco*/) const {return kFALSE;}
57 virtual Bool_t CheckMCChannelDecay() const {return kFALSE;}
f2703bd2 58 virtual Bool_t SetRecoCandidateParam(AliAODRecoDecayHF* /*recoCand*/) {return kFALSE;}
59
60 virtual void SetDecay3Prong(Int_t /*decay*/){};
379592af 61
62 void SetFillFromGenerated(Bool_t flag) {fFillFromGenerated = flag;}
63 Bool_t GetFillFromGenerated() const {return fFillFromGenerated;}
64
65 void SetNVar(Int_t nVar) {fNVar = nVar;}
66
67 void SetRecoPrimVertex (Double_t zPrimVertex) {fzPrimVertex = zPrimVertex;}
68 void SetMCPrimaryVertex (Double_t zMCVertex){fzMCVertex = zMCVertex;}
69 void SetMCLabel (Int_t mcLabel) {fmcLabel = mcLabel;}
70 Int_t GetMCLabel () const {return fmcLabel;}
71
72 void SetMCCandidateParam(Int_t label);
73
379592af 74 Int_t MCcquarkCounting(AliAODMCParticle* mcPart) const;
75 Bool_t CheckMCPartFamily(AliAODMCParticle */*mcPart*/, TClonesArray */*mcArray*/) const;
76 // Int_t CheckOrigin(AliAODMCParticle* mcPart) const;
77 Int_t CheckOrigin() const;
78 Bool_t CheckMCDaughters() const;
79 Bool_t FillMCContainer(Double_t *containerInputMC);
80 Bool_t FillRecoContainer(Double_t *containerInput);
81 Bool_t MCAcceptanceStep() const;
2bf2e62b 82 Bool_t MCRefitStep(AliAODEvent *aodEvent, AliESDtrackCuts **trackCuts) const;
379592af 83 Bool_t RecoStep();
84
367e9aa3 85 virtual Double_t GetEtaProng(Int_t iProng) const;
86 virtual Double_t GetPtProng(Int_t iProng) const;
379592af 87
88 Double_t GetPtCand() const {return fRecoCandidate->Pt();}
89 Double_t GetYCand() const {return fRecoCandidate->Y();}
90
2bf2e62b 91 Bool_t RecoAcceptStep(AliESDtrackCuts **trackCuts) const;
379592af 92
e11ae259 93 Bool_t FillUnfoldingMatrix(Double_t fill[4]) const;
379592af 94
95 void SetNProngs(Int_t nProngs){fProngs = nProngs;}
661d6c29 96 Int_t GetNProngs() const {return fProngs;}
379592af 97 void SetDselection(UShort_t originDselection);
6e2e4f50 98 UShort_t GetDselection() {return fOriginDselection;};
3ee5eb83 99 Int_t CheckReflexion(Char_t isSign);
6e2e4f50 100 Bool_t SetLabelArray();
379592af 101
b7af2639 102 void SetCentralityValue(Float_t centValue) {fCentValue = centValue;}
103
2bf2e62b 104 virtual void SetPtAccCut(Float_t* ptAccCut);
105 virtual void SetEtaAccCut(Float_t* etaAccCut);
106 virtual void SetAccCut(Float_t* ptAccCut, Float_t* etaAccCut);
107 virtual void SetAccCut();
108
fbec9fa9 109 void SetFakeSelection(Int_t fakeSel){fFakeSelection = fakeSel;}
1f780958 110 Int_t GetFakeSelection(){return fFakeSelection;}
fbec9fa9 111
0ada222f 112 void SetRejectCandidateIfNotFromQuark(Bool_t opt){fRejectIfNoQuark=opt;}
113
379592af 114 protected:
115
116 TClonesArray *fmcArray; //mcArray candidate
117 AliAODRecoDecayHF *fRecoCandidate; // Reconstructed HF candidate
118 AliAODMCParticle *fmcPartCandidate;
119 Int_t fNDaughters;
120 Int_t fNVar; // get Number of variables for the container from the channel decay
121 Double_t fzPrimVertex; //Reco z primary vertex
122 Double_t fzMCVertex; //MC z primary vertex
123
124 Bool_t fFillFromGenerated; // flag to indicate whether data container should be filled
125 UShort_t fOriginDselection; // flag to select D0 origins. 0 Only from charm 1 only from beauty 2 both from charm and beauty
126
127 Bool_t fKeepDfromB; //flag for the feed down from b quark decay.
128 Bool_t fKeepDfromBOnly; // flag to keep only the charm particles that comes from beauty decays
129 Int_t fmcLabel; // results of the MatchToMC()
130 Int_t fProngs; // n. of prongs
6e2e4f50 131 Int_t* fLabelArray; //[fProngs] array of labels
132
b7af2639 133 Float_t fCentValue; // centrality value
2bf2e62b 134 Float_t* fPtAccCut; //[fProngs] array of pt cut values for the Acceptance (MC+Rec) steps
135 Float_t* fEtaAccCut; //[fProngs] array of eta (absolute value) cut values for the Acceptance (MC+Rec) steps
1f780958 136 Int_t fFakeSelection; // fakes selection: 0 --> all, 1 --> non-fake, 2 --> fake
137 Float_t fFake; // variable to indicate whether the D0 was a fake or not: 0 --> fake, 1 --> MC, 2 --> non-fake
0ada222f 138 Bool_t fRejectIfNoQuark; // flag to remove events not geenrated with PYTHIA
b7af2639 139
0ada222f 140 ClassDef(AliCFVertexingHF, 6);
379592af 141
142};
143
144#endif