ROOT logo
//*-- Author : Jochen Markert 18.07.2007

#ifndef  __HPARTICLETRACKCLEANER_H__
#define  __HPARTICLETRACKCLEANER_H__

#include "hreconstructor.h"
#include "hcategory.h"
#include "hparticletracksorter.h"
#include "hmagnetpar.h"
#include "hparticledef.h"

#include "TString.h"

class HParticleTrackCleaner : public HReconstructor {

protected:


    HParticleTrackSorter sorter;                   //! for doing the final task of flagging
    HCategory* pParticleCandCat;                   //! HParticleCand category
    Bool_t (*pUserSelectLeptons)(HParticleCand* ); //! user provided function pointer to lepton selection
    Bool_t (*pUserSelectHadrons)(HParticleCand* ); //! user provided function pointer to hadron selection
    Bool_t (*pUserSort)(candidateSort*, candidateSort*); //! user provided function pointer to sort algo
    Particle::ESwitch sortType;                    //! sort type : default kIsBestRKRKMETA
    Bool_t      fIsFieldOn;                              //! B-Field on ?
    HMagnetPar* fMagnetPar;                              //! pointer to magnet par container
    void   clear(void);
public:
    HParticleTrackCleaner(void);
    HParticleTrackCleaner(const Text_t *name,const Text_t *title);
    ~HParticleTrackCleaner(void);
    Bool_t init      (void);
    Bool_t reinit    (void);
    Int_t  execute   (void);
    Bool_t finalize  (void);
    static void           setDebug       (void)        { HParticleTrackSorter::setDebug();}
    static void           setPrintLevel  (Int_t level) { HParticleTrackSorter::setPrintLevel(level);}
    void                  setUserSelectionLeptons(Bool_t (*function)(HParticleCand* ))      { pUserSelectLeptons = function;}
    void                  setUserSelectionHadrons(Bool_t (*function)(HParticleCand* ))      { pUserSelectHadrons = function;}
    void                  setUserSort(Bool_t    (*function)(candidateSort*, candidateSort*)){ pUserSort = function; sorter.setUserSort(function);}
    void                  setSortType(Particle::ESwitch type)                   { sortType = type;}
    HParticleTrackSorter& getSorter() {return sorter;}
    ClassDef(HParticleTrackCleaner,0);
};
#endif /* !__HPARTICLETRACKCLEANER_H__ */







 hparticletrackcleaner.h:1
 hparticletrackcleaner.h:2
 hparticletrackcleaner.h:3
 hparticletrackcleaner.h:4
 hparticletrackcleaner.h:5
 hparticletrackcleaner.h:6
 hparticletrackcleaner.h:7
 hparticletrackcleaner.h:8
 hparticletrackcleaner.h:9
 hparticletrackcleaner.h:10
 hparticletrackcleaner.h:11
 hparticletrackcleaner.h:12
 hparticletrackcleaner.h:13
 hparticletrackcleaner.h:14
 hparticletrackcleaner.h:15
 hparticletrackcleaner.h:16
 hparticletrackcleaner.h:17
 hparticletrackcleaner.h:18
 hparticletrackcleaner.h:19
 hparticletrackcleaner.h:20
 hparticletrackcleaner.h:21
 hparticletrackcleaner.h:22
 hparticletrackcleaner.h:23
 hparticletrackcleaner.h:24
 hparticletrackcleaner.h:25
 hparticletrackcleaner.h:26
 hparticletrackcleaner.h:27
 hparticletrackcleaner.h:28
 hparticletrackcleaner.h:29
 hparticletrackcleaner.h:30
 hparticletrackcleaner.h:31
 hparticletrackcleaner.h:32
 hparticletrackcleaner.h:33
 hparticletrackcleaner.h:34
 hparticletrackcleaner.h:35
 hparticletrackcleaner.h:36
 hparticletrackcleaner.h:37
 hparticletrackcleaner.h:38
 hparticletrackcleaner.h:39
 hparticletrackcleaner.h:40
 hparticletrackcleaner.h:41
 hparticletrackcleaner.h:42
 hparticletrackcleaner.h:43
 hparticletrackcleaner.h:44
 hparticletrackcleaner.h:45
 hparticletrackcleaner.h:46
 hparticletrackcleaner.h:47
 hparticletrackcleaner.h:48
 hparticletrackcleaner.h:49
 hparticletrackcleaner.h:50
 hparticletrackcleaner.h:51
 hparticletrackcleaner.h:52