]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG3/vertexingHF/AliCFVertexingHF.h
Adding Id to PWG3 classes for better tracking of the coverity defect fixes (Ivana)
[u/mrichter/AliRoot.git] / PWG3 / vertexingHF / AliCFVertexingHF.h
1 #ifndef ALICFVERTEXINGHF_H
2 #define ALICFVERTEXINGHF_H
3
4 /**************************************************************************
5  * Copyright(c) 1998-2009, ALICE Experiment at CERN, All rights reserved. *
6  *                                                                        *
7  * Author: The ALICE Off-line Project.                                    *
8  * Contributors are mentioned in the code where appropriate.              *
9  *                                                                        *
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  **************************************************************************/
18
19 /* $Id$ */ 
20
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 //-----------------------------------------------------------------------
27
28 #include "AliCFContainer.h"
29 #include "AliAODRecoDecayHF.h"
30
31 class TH1I;
32 class TParticle ;
33 class TFile ;
34 class TClonesArray ;
35 class AliAODMCParticle;
36 class AliAODMCHeader;
37 class AliAODEvent;
38 class THnSparse;
39 class TClonesArray;
40 class AliESDtrackCuts;
41
42
43
44 class AliCFVertexingHF : public TObject {
45         public:
46
47         enum DecayChannel{kD0toKpi = 2, kDStartoKpipi = 21, kDplustoKpipi = 31, kLctopKpi = 32, kDstoKKpi = 33, kD0toKpipipi = 4};
48
49         AliCFVertexingHF() ;
50         AliCFVertexingHF(TClonesArray *mcArray, UShort_t originDselection);
51         AliCFVertexingHF(const AliCFVertexingHF& c);
52         AliCFVertexingHF& operator= (const AliCFVertexingHF& c);
53
54         virtual ~AliCFVertexingHF();
55                 
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;}
60
61         virtual void SetDecay3Prong(Int_t /*decay*/){};
62         
63         void   SetFillFromGenerated(Bool_t flag) {fFillFromGenerated = flag;}
64         Bool_t GetFillFromGenerated() const {return fFillFromGenerated;}
65                 
66         void  SetNVar(Int_t nVar) {fNVar = nVar;}  
67
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;}
72                 
73         void   SetMCCandidateParam(Int_t label);
74
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;
84         Bool_t RecoStep();
85
86         Double_t GetEtaProng(Int_t iProng) const;
87         Double_t GetPtProng(Int_t iProng) const;
88
89         Double_t GetPtCand() const {return fRecoCandidate->Pt();}
90         Double_t GetYCand() const {return fRecoCandidate->Y();}
91
92         Bool_t RecoAcceptStep(AliESDtrackCuts *trackCuts) const;
93         
94         Bool_t FillUnfoldingMatrix(Double_t fill[4]) const;
95         
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();
101
102         void SetCentralityValue(Float_t centValue) {fCentValue = centValue;}
103
104         protected:
105         
106         TClonesArray      *fmcArray;               //mcArray candidate
107         AliAODRecoDecayHF *fRecoCandidate;         // Reconstructed HF candidate 
108         AliAODMCParticle  *fmcPartCandidate;
109         Int_t fNDaughters;
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
113         
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
116         
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
122
123         Float_t fCentValue;         // centrality value
124
125         ClassDef(AliCFVertexingHF, 3);
126         
127 };
128
129 #endif