00001
00002
00004
00005
00006
00007
00008
00009
00010
00012 #ifndef ZMASSCONSTRAINT_ICONSTRAINTFIT_H
00013 #define ZMASSCONSTRAINT_ICONSTRAINTFIT_H
00014
00015
00016 #include "AsgTools/IAsgTool.h"
00017
00018
00019 #include "xAODBase/IParticle.h"
00020 #include "xAODMuon/Muon.h"
00021 #include "xAODEgamma/Electron.h"
00022
00023
00024 #include "ZMassConstraint/ConstraintFitInput.h"
00025 #include "ZMassConstraint/ConstraintFitOutput.h"
00026
00027 namespace ZMassConstraint
00028 {
00029
00030 enum MassConstraintMuonType {
00031 isCombMCMT,
00032 isID_MCMT,
00033 isMS_MCMT
00034 };
00035
00036 class IConstraintFit : public virtual asg::IAsgTool
00037 {
00039 ASG_TOOL_INTERFACE( ZMassConstraint::IConstraintFit )
00040
00041 public:
00042
00044 virtual StatusCode doMassFit (const ConstraintFitInput& input,
00045 ConstraintFitOutput& output) = 0;
00046
00048 virtual double getMassError (const ConstraintFitInput& firstInput,
00049 const ConstraintFitInput& secondInput = ConstraintFitInput()) = 0;
00050
00053 virtual double getMassError (const ConstraintFitOutput& fitOutput,
00054 const ConstraintFitInput& extraInput = ConstraintFitInput()) = 0;
00055
00057 virtual double getMassError (const ConstraintFitOutput& fitOutput,
00058 const ConstraintFitOutput& secondFitOutput) = 0;
00059
00061 virtual void addParticle (const xAOD::Muon& mu,
00062 ConstraintFitInput& input,
00063 MassConstraintMuonType muonType = isCombMCMT) = 0;
00064
00066 virtual void addParticle (const xAOD::Electron& el,
00067 float elEnergyRes,
00068 ConstraintFitInput& input) = 0;
00069
00073
00074 virtual void addFSRParticle(const xAOD::IParticle & part,
00075 const TLorentzVector& fsr4Vec,
00076 ConstraintFitInput& input) = 0;
00077
00078 };
00079
00080 }
00081
00082 #endif // ZMASSCONSTRAINT_ICONSTRAINTFIT_H