00001 #ifndef QUICK_ANA__ISOLATIONTOOLS_H_ 00002 #define QUICK_ANA__ISOLATIONTOOLS_H_ 00003 00004 #include <QuickAna/Global.h> 00005 00006 #include <IsolationSelection/IsolationSelectionTool.h> 00007 00008 // Note: just a copy of the class in TopObjectSelectionTools, with minimal edits 00009 // -- Used for now to conveniently replicate the top group selections 00010 // -- We can of course design something better later 00011 // Note: copied from TopObjectSelection-00-00- and then updated independently 00012 // -- Will probably get rid of this pretty soon 00013 00014 namespace ana { 00015 00020 class IsolationBase { 00021 public: 00023 IsolationBase(); 00024 00026 virtual ~IsolationBase(); 00027 00036 virtual bool passSelection(const xAOD::IParticle& p) const = 0; 00037 00046 virtual bool passSelectionLoose(const xAOD::IParticle& p) const = 0; 00047 00053 virtual void print(std::ostream& os) const = 0; 00054 }; 00055 00067 class AbsoluteIsolationDC14 : public IsolationBase { 00068 public: 00085 AbsoluteIsolationDC14(const xAOD::Iso::IsolationType type, double value); 00086 bool passSelection(const xAOD::IParticle& p) const override final; 00087 bool passSelectionLoose(const xAOD::IParticle& p) const override final; 00088 void print(std::ostream& os) const override final; 00089 00090 private: 00092 xAOD::Iso::IsolationType m_type; 00093 00095 double m_cutvalue; 00096 }; 00097 00102 class RelativePTVarCone : public IsolationBase { 00103 public: 00113 RelativePTVarCone(unsigned int size, double fraction, unsigned int sizeLoose, double fractionLoose); 00114 00122 bool passSelection(const xAOD::IParticle& p) const override final; 00123 00131 bool passSelectionLoose(const xAOD::IParticle& p) const override final; 00132 00134 void print(std::ostream& os) const override final; 00135 00136 private: 00138 std::string m_size; 00139 00141 double m_fraction; 00142 00144 std::string m_sizeLoose; 00145 00147 double m_fractionLoose; 00148 }; 00149 00159 class ApproxPTVarCone : public IsolationBase { 00160 public: 00170 ApproxPTVarCone(double fraction, double fractionLoose); 00171 00179 bool passSelection(const xAOD::IParticle& p) const override final; 00180 00188 bool passSelectionLoose(const xAOD::IParticle& p) const override final; 00189 00191 void print(std::ostream& os) const override final; 00192 00193 private: 00195 double m_fraction; 00196 00198 double m_fractionLoose; 00199 }; 00200 00204 class StandardIsolation : public IsolationBase { 00205 public: 00211 StandardIsolation(const std::string& obj_type_str); 00212 00220 bool passSelection(const xAOD::IParticle& p) const override final; 00221 00229 bool passSelectionLoose(const xAOD::IParticle& p) const override final; 00230 00232 virtual void print(std::ostream& os) const override final; 00233 00234 private: 00236 CP::IsolationSelectionTool m_isolationTool; 00237 CP::IsolationSelectionTool m_isolationToolLoose; 00238 }; 00239 00240 } 00241 00242 #endif