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;
39 class AliSelectNonHFE;
42 class AliESDtrackCuts;
45 * @class AliDxHFEParticleSelectionEl
46 * Electron selection for D-HFE correlations, implements the specific
49 class AliDxHFEParticleSelectionEl : public AliDxHFEParticleSelection {
52 AliDxHFEParticleSelectionEl(const char* opt="");
54 virtual ~AliDxHFEParticleSelectionEl();
83 kInvMassSingleSelected, // based on AliSelectNonHFE, one partcle passing track cuts
84 // and 2nd particle passing weaker cut
85 kInvMassTwoSelected // pairs of particles both passing the track cuts
89 ///overloaded from AliDxHFEParticleSelection: Init
92 /// overloaded from AliDxHFEParticleSelection: init the control objects
93 virtual int InitControlObjects();
94 virtual THnSparse* DefineTHnSparse();
96 /// overloaded from AliDxHFEParticleSelection: check particle
97 virtual TObjArray* Select(const AliVEvent* pEvent);
98 using AliDxHFEParticleSelection::Select;
100 virtual int IsSelected(AliVParticle* p, const AliVEvent* pEvent);
102 virtual int HistogramParticleProperties(AliVParticle* p, int selected);
104 virtual int FillParticleProperties(AliVParticle* p, Double_t* date, int dimension) const;
106 /// set cuts object: a type cast check is implemented in the method
107 virtual void SetCuts(TObject* /*cuts*/, int /*level*/=0);
108 virtual void SetFinalCutStep(int cutstep){fFinalCutStep=cutstep;}
109 virtual void SetStoreLastCutStep(bool storecut){fStoreCutStepInfo=storecut;}
111 virtual void SetPIDResponse(const AliPIDResponse* const pidresp){fPIDResponse=(AliPIDResponse*)(pidresp);}
113 Int_t GetLastSurvivedCutsStep() const{return fSurvivedCutStep;}
119 /// copy contructor prohibited
120 AliDxHFEParticleSelectionEl(const AliDxHFEParticleSelectionEl&);
121 /// assignment operator prohibited
122 AliDxHFEParticleSelectionEl& operator=(const AliDxHFEParticleSelectionEl&);
124 /// check cut of specified step, e.g.
125 bool ProcessCutStep(Int_t cutStep, AliVParticle *track);
126 int ParseArguments(const char* arguments);
128 virtual void InvMassFilter(TList* elList, Bool_t* selIndx);
130 AliHFEpid* fPIDTOFTPC; //! the PID object
131 AliHFEpid* fPIDTOF; //! the PID TOF object
132 AliHFEpid* fPIDTPC; //! the PID TOF object
133 THnSparse* fElectronProperties; // the particle properties of selected particles
134 TList* fHistoList; // list of histograms
135 TList* fCutPidList; // list for pid and cut objects
136 AliPIDResponse* fPIDResponse; // fPIDResponse
137 AliHFEcuts* fCuts; //! Cuts for HF electrons
138 AliSelectNonHFE* fSelNHFE; // AliSelectNonHFE, inv-mass selection
139 AliESDtrackCuts* fTrackCuts; //! Track cuts for associated track for Inv Mass
140 AliCFManager* fCFM; //! Correction Framework Manager
141 Int_t fFinalCutStep; // Holds the final cutstep
142 Double_t fInvMassLow; // lower inv-mass cut
143 Int_t fUseInvMassCut; // whether to use inv mass cut
144 Int_t fSystem; // whether running on pp(0,default), PbPb(1) or pPb(2, not used yet)
145 Int_t fTrackNum; // Current track number
146 Double_t fImpactParamCutRadial; // cut on Impact parameter (when storing all tracks)
147 Double_t fEtaCut; // cut on eta (when storing all tracks)
148 Int_t fSurvivedCutStep; // Last cutstep it survived
149 Bool_t fStoreCutStepInfo; // Whether to store which cut step is the effective one
151 static const char* fgkCutBinNames[]; //! bin labels for cuts histogram
153 ClassDef(AliDxHFEParticleSelectionEl, 6);