]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGHF/correlationHF/AliDxHFEParticleSelectionEl.h
update of DxHFE analysis (Hege, Per-Ivar)
[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 // 2012-09-17: there has been a problem in the dictionary generation for par file
20 // compilation, so we have to include the header files indicated below
21 //  Generating dictionary ...
22 //  In file included from $ROOTSYS/include/TObject.h:230:0,
23 //                   from G__PWGHFcorrelationHF.h:32,
24 //                   from G__PWGHFcorrelationHF.cxx:17:
25 //  $ROOTSYS/include/TBuffer.h: In function ‘TBuffer& operator>>(TBuffer&, Tmpl*&) [with Tmpl = AliHFEcuts]’:
26 //  G__PWGHFcorrelationHF.cxx:1658:15:   instantiated from here
27 //  $ROOTSYS/include/TBuffer.h:373:47: error: invalid use of incomplete type ‘struct AliHFEcuts’
28 //  correlationHF/AliDxHFEParticleSelectionEl.h:25:7: error: forward declaration of ‘struct AliHFEcuts’
29
30 #include "AliHFEcuts.h" // need to directly include to avoid compilation error in the dictionary
31 #include "AliHFEpid.h"  // need to directly include to avoid compilation error in the dictionary
32
33 class AliPID;
34 class AliPIDResponse;
35 class AliHFEvarManager;
36 class AliHFEpidBase;
37 class AliHFEtools;
38 class AliVEvent;
39 class AliCFManager;
40 class TList;
41
42 /**
43  * @class AliDxHFEParticleSelectionEl
44  * Electron selection for D-HFE correlations, implements the specific
45  * selection criteria.
46  */
47 class AliDxHFEParticleSelectionEl : public AliDxHFEParticleSelection {
48   public:
49   /// constructor
50   AliDxHFEParticleSelectionEl(const char* opt="");
51   /// destructor
52   virtual ~AliDxHFEParticleSelectionEl();
53   
54   enum {
55     kCutHFE = 0,
56     kCutPIDTOFTPC = 1,
57     kCutPIDTOF = 2,
58     kCutList=3,
59     kNCuts
60   };
61
62   enum {
63     kNoCuts=-1,
64     kRecKineITSTPC=0,
65     kRecPrim,
66     kHFEcutsITS,
67     kHFEcutsTOF,
68     kHFEcutsTPC,
69     kPIDTOF,
70     kPIDTOFTPC,
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 TObjArray* Select(const AliVEvent* pEvent);
84   using AliDxHFEParticleSelection::Select;
85
86   virtual int IsSelected(AliVParticle* p, const AliVEvent* pEvent);
87
88   virtual int HistogramParticleProperties(AliVParticle* p, int selected);
89
90   virtual int FillParticleProperties(AliVParticle* p, Double_t* date, int dimension) const;
91
92   /// set cuts object: a type cast check is implemented in the method
93   virtual void SetCuts(TObject* /*cuts*/, int /*level*/=0);
94   virtual void SetFinalCutStep(int cutstep){fFinalCutStep=cutstep;}
95  
96   virtual void SetPIDResponse(const AliPIDResponse* const pidresp){fPIDResponse=(AliPIDResponse*)(pidresp);}
97
98  protected:
99
100  private:
101
102   /// copy contructor prohibited
103   AliDxHFEParticleSelectionEl(const AliDxHFEParticleSelectionEl&);
104   /// assignment operator prohibited
105   AliDxHFEParticleSelectionEl& operator=(const AliDxHFEParticleSelectionEl&);
106  
107   /// check cut of specified step, e.g.
108   bool ProcessCutStep(Int_t cutStep, AliVParticle *track);
109   int ParseArguments(const char* arguments);
110
111   virtual void InvMassFilter(TList* elList, Bool_t* selIndx);
112
113   AliHFEpid*    fPIDTOFTPC;          //! the PID object
114   AliHFEpid*    fPIDTOF;             //! the PID TOF object
115   THnSparse*    fElectronProperties; // the particle properties of selected particles
116   TList*        fHistoList;          // list of histograms
117   TList*        fCutPidList;         // list for pid and cut objects
118   AliPIDResponse* fPIDResponse;      // fPIDResponse
119   AliHFEcuts*   fCuts;               //! Cuts for HF electrons
120   AliCFManager* fCFM;                //! Correction Framework Manager
121   Int_t         fFinalCutStep;       // Holds the final cutstep
122   Double_t      fInvMassLow;         // lower inv-mass cut
123   Bool_t        fUseInvMassCut;      // whether to use inv mass cut
124
125   static const char* fgkCutBinNames[]; //! bin labels for cuts histogram
126
127   ClassDef(AliDxHFEParticleSelectionEl, 5); 
128 };
129
130 #endif