00001 #ifndef TRACKTOOLS_TRACKSELECTOR_H
00002 #define TRACKTOOLS_TRACKSELECTOR_H 1
00003
00004
00005 #include "GaudiAlg/GaudiTool.h"
00006
00007
00008 #include "Event/MCParticle.h"
00009 #include "Event/Track.h"
00010
00011
00012 #include "TrackTools/ITrackSelector.h"
00013
00014
00015 class ITrackReconstructible;
00016
00044 class TrackSelector : public GaudiTool, virtual public ITrackSelector
00045 {
00046 public:
00047
00049 enum ETrackType { unknown=0, velo=1, seed=2, longtrack=3,
00050 upstream=4, downstream=5, veloBack=6 };
00051
00053 TrackSelector( const std::string& type,
00054 const std::string& name,
00055 const IInterface* parent );
00056
00058 virtual ~TrackSelector( );
00059
00061 virtual StatusCode initialize();
00062
00064 virtual StatusCode finalize();
00065
00070 virtual bool select( Track* track ) const;
00071
00076 virtual bool select( MCParticle* mcParticle );
00077
00082 virtual bool selectTrackType( Track* track ) const;
00083
00088 virtual bool selectTrackType( MCParticle* mcParticle );
00089
00094 virtual int getTrackType( Track* track ) const;
00095
00100 virtual int getTrackType( MCParticle* mcPart );
00101
00107 virtual StatusCode setTrackType( const int tracktype,
00108 Track*& track ) const;
00109
00115 virtual StatusCode setTrackType( MCParticle* mcPart,
00116 Track*& track );
00117
00118 protected:
00119
00120 private:
00121
00122
00123 ITrackReconstructible* m_mcParticleJudge;
00124
00125
00126 ETrackType m_previousTrackType;
00127 MCParticle* m_previousMCParticle;
00128
00129
00130 bool m_uniqueFlag;
00131 bool m_errorFlag;
00132 double m_minP;
00133 double m_maxP;
00134 std::vector<int> m_tracktypes;
00135
00136 std::string m_mcParticleJudgeName;
00137
00138 };
00139 #endif // TRACKTOOLS_TRACKSELECTOR_H