//-*- Mode: C++ -*-
-// $Id$
+// // $Id$
//* This file is property of and copyright by the ALICE Project *
//* ALICE Experiment at CERN, All rights reserved. *
#define ALIDXHFEPARTICLESELECTIONEL_H
#include "AliDxHFEParticleSelection.h"
+
+// 2012-09-17: there has been a problem in the dictionary generation for par file
+// compilation, so we have to include the header files indicated below
+// Generating dictionary ...
+// In file included from $ROOTSYS/include/TObject.h:230:0,
+// from G__PWGHFcorrelationHF.h:32,
+// from G__PWGHFcorrelationHF.cxx:17:
+// $ROOTSYS/include/TBuffer.h: In function ‘TBuffer& operator>>(TBuffer&, Tmpl*&) [with Tmpl = AliHFEcuts]’:
+// G__PWGHFcorrelationHF.cxx:1658:15: instantiated from here
+// $ROOTSYS/include/TBuffer.h:373:47: error: invalid use of incomplete type ‘struct AliHFEcuts’
+// correlationHF/AliDxHFEParticleSelectionEl.h:25:7: error: forward declaration of ‘struct AliHFEcuts’
+
+#include "AliHFEcuts.h" // need to directly include to avoid compilation error in the dictionary
+#include "AliHFEpid.h" // need to directly include to avoid compilation error in the dictionary
+
class AliPID;
class AliPIDResponse;
-class AliHFEcuts;
class AliHFEvarManager;
-class AliHFEpid;
class AliHFEpidBase;
class AliHFEtools;
class AliVEvent;
+class AliSelectNonHFE;
class AliCFManager;
-class TH1;
+class TList;
+class AliESDtrackCuts;
/**
* @class AliDxHFEParticleSelectionEl
AliDxHFEParticleSelectionEl(const char* opt="");
/// destructor
virtual ~AliDxHFEParticleSelectionEl();
-
+
enum {
kCutHFE = 0,
- kCutPID = 1,
+ kCutPIDTOFTPC = 1,
+ kCutPIDTOF = 2,
+ kCutPIDTPC = 3,
+ kCutList=3,
kNCuts
};
+ enum {
+ kNotSelected=-2,
+ kNoCuts=-1,
+ kRecKineITSTPC=0,
+ kRecPrim,
+ kHFEcutsITS,
+ kHFEcutsTOF,
+ kHFEcutsTPC,
+ kPIDTOF,
+ kPIDTPC,
+ kPIDTOFTPC,
+ kINVMASS,
+ kSelected,
+ kNCutLabels
+ };
+
+ enum {
+ kNoInvMass=0,
+ kInvMassSingleSelected, // based on AliSelectNonHFE, one partcle passing track cuts
+ // and 2nd particle passing weaker cut
+ kInvMassTwoSelected // pairs of particles both passing the track cuts
+ };
+
+
+ ///overloaded from AliDxHFEParticleSelection: Init
+ virtual int Init();
+
/// overloaded from AliDxHFEParticleSelection: init the control objects
virtual int InitControlObjects();
+ virtual THnSparse* DefineTHnSparse();
/// overloaded from AliDxHFEParticleSelection: check particle
- virtual int IsSelected(AliVParticle* p, const AliVEvent*);
+ virtual TObjArray* Select(const AliVEvent* pEvent);
+ using AliDxHFEParticleSelection::Select;
+
+ virtual int IsSelected(AliVParticle* p, const AliVEvent* pEvent);
virtual int HistogramParticleProperties(AliVParticle* p, int selected);
- // overloaded from AliDxHFEParticleSelection: specific for electrons
- //virtual TObjArray* Select(const AliVEvent *pEvent);
+ virtual int FillParticleProperties(AliVParticle* p, Double_t* date, int dimension) const;
/// set cuts object: a type cast check is implemented in the method
virtual void SetCuts(TObject* /*cuts*/, int /*level*/=0);
+ virtual void SetFinalCutStep(int cutstep){fFinalCutStep=cutstep;}
+ virtual void SetStoreLastCutStep(bool storecut){fStoreCutStepInfo=storecut;}
+
+ virtual void SetPIDResponse(const AliPIDResponse* const pidresp){fPIDResponse=(AliPIDResponse*)(pidresp);}
+
+ Int_t GetLastSurvivedCutsStep() const{return fSurvivedCutStep;}
protected:
private:
+
/// copy contructor prohibited
AliDxHFEParticleSelectionEl(const AliDxHFEParticleSelectionEl&);
/// assignment operator prohibited
AliDxHFEParticleSelectionEl& operator=(const AliDxHFEParticleSelectionEl&);
-
+
/// check cut of specified step, e.g.
bool ProcessCutStep(Int_t cutStep, AliVParticle *track);
+ int ParseArguments(const char* arguments);
+
+ virtual void InvMassFilter(TList* elList, Bool_t* selIndx);
- AliHFEpid* fPID; //! the PID object
+ AliHFEpid* fPIDTOFTPC; //! the PID object
+ AliHFEpid* fPIDTOF; //! the PID TOF object
+ AliHFEpid* fPIDTPC; //! the PID TOF object
THnSparse* fElectronProperties; // the particle properties of selected particles
- TH1* fWhichCut; // effective cut for a rejected particle
+ TList* fHistoList; // list of histograms
+ TList* fCutPidList; // list for pid and cut objects
+ AliPIDResponse* fPIDResponse; // fPIDResponse
AliHFEcuts* fCuts; //! Cuts for HF electrons
+ AliSelectNonHFE* fSelNHFE; // AliSelectNonHFE, inv-mass selection
+ AliESDtrackCuts* fTrackCuts; //! Track cuts for associated track for Inv Mass
AliCFManager* fCFM; //! Correction Framework Manager
-
-
- ClassDef(AliDxHFEParticleSelectionEl, 2);
+ Int_t fFinalCutStep; // Holds the final cutstep
+ Double_t fInvMassLow; // lower inv-mass cut
+ Int_t fUseInvMassCut; // whether to use inv mass cut
+ Int_t fSystem; // whether running on pp(0,default), PbPb(1) or pPb(2, not used yet)
+ Int_t fTrackNum; // Current track number
+ Double_t fImpactParamCutRadial; // cut on Impact parameter (when storing all tracks)
+ Double_t fEtaCut; // cut on eta (when storing all tracks)
+ Int_t fSurvivedCutStep; // Last cutstep it survived
+ Bool_t fStoreCutStepInfo; // Whether to store which cut step is the effective one
+
+ static const char* fgkCutBinNames[]; //! bin labels for cuts histogram
+
+ ClassDef(AliDxHFEParticleSelectionEl, 6);
};
#endif