00001
00002
00003 #ifndef __IEGammaAmbiguityTool__
00004 #define __IEGammaAmbiguityTool__
00005
00014
00015 #include "AsgTools/IAsgTool.h"
00016
00017
00018
00019
00020
00021 #include "xAODCaloEvent/CaloClusterFwd.h"
00022 #include "xAODTracking/VertexFwd.h"
00023 #include "xAODTracking/TrackParticleFwd.h"
00024 #include "xAODEgamma/EgammaFwd.h"
00025 #include "xAODEgamma/EgammaContainerFwd.h"
00026
00027
00028
00029
00030
00031 namespace xAOD {
00032 namespace AmbiguityTool {
00034 enum AmbiguityType {
00035 electron = 0,
00036 ambiguousTrackEoverPBetterThanVertexEoverP=1,
00037 ambiguousTrackLowPt=2,
00038 ambiguousTrackLowEoverP=3,
00039 ambiguousTrackNoPixel =4,
00040 ambiguousVertexEoverPBetterThanTrackEoverP=5,
00041 photon=6,
00042 unknown=7
00043 };
00044 }
00045 }
00046
00047
00048
00049 class IEGammaAmbiguityTool : virtual public asg::IAsgTool
00050 {
00051 ASG_TOOL_INTERFACE(IEGammaAmbiguityTool)
00052
00053 public:
00054
00056 virtual ~IEGammaAmbiguityTool() {};
00057
00059 virtual unsigned int ambiguityResolve(const xAOD::CaloCluster* cluster,
00060 const xAOD::Vertex* vx,
00061 const xAOD::TrackParticle* tp, xAOD::AmbiguityTool::AmbiguityType& type) const = 0;
00062
00067 virtual unsigned int ambiguityResolve(const xAOD::CaloCluster* cluster,
00068 const xAOD::Vertex* vx,
00069 const xAOD::TrackParticle* tp) const = 0;
00070
00074 virtual unsigned int ambiguityResolve(const xAOD::Egamma& egamma) const = 0;
00075
00077 virtual bool accept( const xAOD::Egamma& egamma, bool acceptAmbiguous = true) const = 0;
00078
00080 virtual const xAOD::Egamma* getOverlappingObject( const xAOD::Egamma& egamma,const xAOD::EgammaContainer* egammaContainer ) const = 0;
00081
00082 };
00083
00084
00085 #endif
00086