00001
00002 #ifndef JETTILECORRECTION_IJETTILECORRECTIONTOOL_H
00003 #define JETTILECORRECTION_IJETTILECORRECTIONTOOL_H
00004
00005
00006 #include "PATInterfaces/ISystematicsTool.h"
00007
00008
00009 #include "xAODJet/Jet.h"
00010
00011
00012 #include "PATInterfaces/CorrectionCode.h"
00013
00014
00015
00016 typedef std::pair<int,int> IPair;
00017
00018 namespace JTC{
00019
00020 enum class PART : unsigned int {LB, EB};
00021
00022 enum class TS : unsigned int {GOOD,EDGE,CORE,UNKNOWN};
00023
00024 enum class TYPE : unsigned int {User, DB};
00025
00026 struct Hole{
00027 double eta1;
00028 double eta2;
00029 double phi1;
00030 double phi2;
00031 std::pair<int,int> iov;
00032 };
00033
00034 struct Region{
00035
00036 Hole hole;
00037 IPair ep;
00038 PART part;
00039 float cfactor;
00040 TS status;
00041 TYPE type;
00042
00043 Region(Hole h, IPair pair, PART p, float cf, TS st, TYPE t)
00044 : hole(h),
00045 ep(pair),
00046 part(p),
00047 cfactor(cf),
00048 status(st),
00049 type(t)
00050 {}
00051
00052 bool operator < (const Region& r) const {
00053 return (this->cfactor < r.cfactor);
00054 }
00055 bool operator > (const Region& r) const {
00056 return (this->cfactor > r.cfactor);
00057 }
00058 };
00059
00060 }
00061
00062 namespace CP {
00063
00073 class IJetTileCorrectionTool : public virtual ISystematicsTool {
00074
00076 ASG_TOOL_INTERFACE( CP::IJetTileCorrectionTool )
00077
00078 public:
00080 virtual CorrectionCode applyCorrection( xAOD::Jet& jet ) = 0;
00081
00083 virtual CorrectionCode correctedCopy( const xAOD::Jet& input,
00084 xAOD::Jet*& output ) = 0;
00085
00086
00087
00088 virtual JTC::TS getTileStatus(const xAOD::Jet& jet) = 0;
00089 virtual StatusCode addTileStatus(const xAOD::Jet& jet) = 0;
00090
00091
00092 virtual void setRJET(float r) = 0;
00093
00094
00095 };
00096
00097 }
00098
00099 #endif // JETTILECORRECTION_IJETTILECORRECTIONTOOL_H