]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGHF/correlationHF/AliDxHFEParticleSelectionD0.h
Implementation of event mixing (Hege)
[u/mrichter/AliRoot.git] / PWGHF / correlationHF / AliDxHFEParticleSelectionD0.h
1 //-*- Mode: C++ -*-
2 // $Id$
3
4 //* This file is property of and copyright by the ALICE Project        * 
5 //* ALICE Experiment at CERN, All rights reserved.                     *
6 //* See cxx source for full Copyright notice                           *
7
8 /// @file   AliDxHFEParticleSelectionD0.h
9 /// @author Sedat Altinpinar, Hege Erdal, Matthias Richter
10 /// @date   2012-03-19
11 /// @brief  D0 selection for D-HFE correlations
12 ///
13
14 #ifndef ALIDXHFEPARTICLESELECTIOND0_H
15 #define ALIDXHFEPARTICLESELECTIOND0_H
16
17 #include "AliDxHFEParticleSelection.h"
18
19 class AliVEvent;
20 class AliRDHFCuts;
21
22 /**
23  * @class AliDxHFEParticleSelectionD0
24  * D0 selection for D-HFE correlations, implements the specific
25  * selection criteria.
26  */
27 class AliDxHFEParticleSelectionD0 : public AliDxHFEParticleSelection {
28   public:
29   /// constructor
30   AliDxHFEParticleSelectionD0(const char* opt="");
31   /// destructor
32   virtual ~AliDxHFEParticleSelectionD0();
33
34   /// overloaded from AliDxHFEParticleSelection: init the control objects
35   virtual int InitControlObjects();
36   virtual THnSparse* DefineTHnSparse();
37   virtual int FillParticleProperties(AliVParticle* p, Double_t* date, int dimension) const;
38   virtual AliVParticle* CreateParticle(AliVParticle* track);
39
40   //Function for daughter control objects
41   //TODO: move to AliDxHFEParticleSelection to be used for several particles?
42   virtual int InitControlObjectsDaughters(TString name, int daughter);
43
44   //Overloaded from AliDxHFEParticleSelection
45   virtual TObjArray* Select(TObjArray* particles, const AliVEvent* pEvent);
46   using AliDxHFEParticleSelection::Select;
47
48   /// overloaded from AliDxHFEParticleSelection: check particle
49   virtual int IsSelected(AliVParticle* p, const AliVEvent *pEvent=NULL);
50   /// overloaded from AliDxHFEParticleSelection: set cuts
51   virtual void SetCuts(TObject* /*cuts*/, int level=0);
52
53   //AliRDHFCutsD0toKpi GetCuts()const {return fCuts;}
54   Int_t  GetFillOnlyD0D0bar() const {return fFillOnlyD0D0bar;}
55   Int_t GetPtBin() const {return fPtBin;}
56   Double_t GetInvMass() const {return fD0InvMass;}
57
58  protected:
59   /// overloaded from AliDxHFEParticleSelection: histogram particle properties
60   virtual int HistogramParticleProperties(AliVParticle* p, int selected=1);
61
62  private:
63   /// copy contructor prohibited
64   AliDxHFEParticleSelectionD0(const AliDxHFEParticleSelectionD0&);
65   /// assignment operator prohibited
66   AliDxHFEParticleSelectionD0& operator=(const AliDxHFEParticleSelectionD0&);
67
68   THnSparse* fD0Properties;     //  the particle properties of selected particles
69   THnSparse* fD0Daughter0;      //  the particle properties of selected particles
70   THnSparse* fD0Daughter1;      //  the particle properties of selected particles
71   AliRDHFCuts* fCuts;           //! pointer to external cuts object 
72   Int_t     fFillOnlyD0D0bar;   //  flag to set what to fill (0 = both, 1 = D0 only, 2 = D0bar only)
73   Double_t fD0InvMass;          // D0InvMass
74   Int_t fPtBin;                 // Pt Bin
75
76   static const char* fgkDgTrackControlBinNames[]; //! bin labels for track control histogram
77
78   // TODO: at the moment the dimensions of the different THnSparse objects are different
79   // needs to be consolidated
80   // TODO: one might need particle properties of all and/or at different cut stages
81
82   ClassDef(AliDxHFEParticleSelectionD0, 2);
83 };
84
85 #endif