]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGHF/correlationHF/AliDxHFEParticleSelectionEl.h
DxHFE update (Hege)
[u/mrichter/AliRoot.git] / PWGHF / correlationHF / AliDxHFEParticleSelectionEl.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   AliDxHFEParticleSelectionEl.h
9 /// @author Sedat Altinpinar, Hege Erdal, Matthias Richter
10 /// @date   2012-03-19
11 /// @brief  Electron selection for D-HFE correlations
12 ///
13
14 #ifndef ALIDXHFEPARTICLESELECTIONEL_H
15 #define ALIDXHFEPARTICLESELECTIONEL_H
16
17 #include "AliDxHFEParticleSelection.h"
18
19
20 // 2012-09-17: there has been a problem in the dictionary generation for par file
21 // compilation, so we have to include the header files indicated below
22 //  Generating dictionary ...
23 //  In file included from $ROOTSYS/include/TObject.h:230:0,
24 //                   from G__PWGHFcorrelationHF.h:32,
25 //                   from G__PWGHFcorrelationHF.cxx:17:
26 //  $ROOTSYS/include/TBuffer.h: In function ‘TBuffer& operator>>(TBuffer&, Tmpl*&) [with Tmpl = AliHFEcuts]’:
27 //  G__PWGHFcorrelationHF.cxx:1658:15:   instantiated from here
28 //  $ROOTSYS/include/TBuffer.h:373:47: error: invalid use of incomplete type ‘struct AliHFEcuts’
29 //  correlationHF/AliDxHFEParticleSelectionEl.h:25:7: error: forward declaration of ‘struct AliHFEcuts’
30
31 #include "AliHFEcuts.h" // need to directly include to avoid compilation error in the dictionary
32 #include "AliHFEpid.h"  // need to directly include to avoid compilation error in the dictionary
33
34 class AliPID;
35 class AliPIDResponse;
36 class AliHFEvarManager;
37 class AliHFEpidBase;
38 class AliHFEtools;
39 class AliVEvent;
40 class AliCFManager;
41 class TList;
42
43 /**
44  * @class AliDxHFEParticleSelectionEl
45  * Electron selection for D-HFE correlations, implements the specific
46  * selection criteria.
47  */
48 class AliDxHFEParticleSelectionEl : public AliDxHFEParticleSelection {
49   public:
50   /// constructor
51   AliDxHFEParticleSelectionEl(const char* opt="");
52   /// destructor
53   virtual ~AliDxHFEParticleSelectionEl();
54   
55   enum {
56     kCutHFE = 0,
57     kCutPID = 1,
58     kCutPIDTOF = 2,
59     kCutList=3,
60     kNCuts
61   };
62
63   enum {
64     kRecKineITSTPC=0,
65     kRecPrim,
66     kHFEcutsITS,
67     kHFEcutsTOF,
68     kHFEcutsTPC,
69     kPIDTOF,
70     kPID,
71     kSelected,
72     kNCutLabels
73   };
74
75   ///overloaded from AliDxHFEParticleSelection: Init
76   virtual int Init();
77
78   /// overloaded from AliDxHFEParticleSelection: init the control objects
79   virtual int InitControlObjects();
80   virtual THnSparse* DefineTHnSparse();
81
82   /// overloaded from AliDxHFEParticleSelection: check particle
83   virtual int IsSelected(AliVParticle* p, const AliVEvent* pEvent);
84
85   virtual int HistogramParticleProperties(AliVParticle* p, int selected);
86
87   virtual int FillParticleProperties(AliVParticle* p, Double_t* date, int dimension) const;
88
89   /// set cuts object: a type cast check is implemented in the method
90   virtual void SetCuts(TObject* /*cuts*/, int /*level*/=0);
91  
92   virtual void SetPIDResponse(const AliPIDResponse* const pidresp){fPIDResponse=(AliPIDResponse*)(pidresp);}
93
94  protected:
95
96  private:
97
98   /// copy contructor prohibited
99   AliDxHFEParticleSelectionEl(const AliDxHFEParticleSelectionEl&);
100   /// assignment operator prohibited
101   AliDxHFEParticleSelectionEl& operator=(const AliDxHFEParticleSelectionEl&);
102  
103   /// check cut of specified step, e.g.
104   bool ProcessCutStep(Int_t cutStep, AliVParticle *track);
105
106   AliHFEpid*    fPID;                //! the PID object
107   AliHFEpid*    fPIDTOF;             //! the PID TOF object
108   THnSparse*    fElectronProperties; // the particle properties of selected particles
109   TList*        fHistoList;          // list of histograms
110   TList*        fCutPidList;         // list for pid and cut objects
111   AliPIDResponse* fPIDResponse;      // fPIDResponse
112   AliHFEcuts*   fCuts;               //! Cuts for HF electrons
113   AliCFManager* fCFM;                //! Correction Framework Manager
114
115   static const char* fgkCutBinNames[]; //! bin labels for cuts histogram
116
117   ClassDef(AliDxHFEParticleSelectionEl, 4); 
118 };
119
120 #endif