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 *
8 /// @file AliDxHFEParticleSelectionEl.h
9 /// @author Sedat Altinpinar, Hege Erdal, Matthias Richter
11 /// @brief Electron selection for D-HFE correlations
14 #ifndef ALIDXHFEPARTICLESELECTIONEL_H
15 #define ALIDXHFEPARTICLESELECTIONEL_H
17 #include "AliDxHFEParticleSelection.h"
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’
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
35 class AliHFEvarManager;
43 * @class AliDxHFEParticleSelectionEl
44 * Electron selection for D-HFE correlations, implements the specific
47 class AliDxHFEParticleSelectionEl : public AliDxHFEParticleSelection {
50 AliDxHFEParticleSelectionEl(const char* opt="");
52 virtual ~AliDxHFEParticleSelectionEl();
75 ///overloaded from AliDxHFEParticleSelection: Init
78 /// overloaded from AliDxHFEParticleSelection: init the control objects
79 virtual int InitControlObjects();
80 virtual THnSparse* DefineTHnSparse();
82 /// overloaded from AliDxHFEParticleSelection: check particle
83 virtual TObjArray* Select(const AliVEvent* pEvent);
84 using AliDxHFEParticleSelection::Select;
86 virtual int IsSelected(AliVParticle* p, const AliVEvent* pEvent);
88 virtual int HistogramParticleProperties(AliVParticle* p, int selected);
90 virtual int FillParticleProperties(AliVParticle* p, Double_t* date, int dimension) const;
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;}
96 virtual void SetPIDResponse(const AliPIDResponse* const pidresp){fPIDResponse=(AliPIDResponse*)(pidresp);}
102 /// copy contructor prohibited
103 AliDxHFEParticleSelectionEl(const AliDxHFEParticleSelectionEl&);
104 /// assignment operator prohibited
105 AliDxHFEParticleSelectionEl& operator=(const AliDxHFEParticleSelectionEl&);
107 /// check cut of specified step, e.g.
108 bool ProcessCutStep(Int_t cutStep, AliVParticle *track);
109 int ParseArguments(const char* arguments);
111 virtual void InvMassFilter(TList* elList, Bool_t* selIndx);
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
125 static const char* fgkCutBinNames[]; //! bin labels for cuts histogram
127 ClassDef(AliDxHFEParticleSelectionEl, 5);