00001 #ifndef jetsubstructureutils_bosontag_header
00002 #define jetsubstructureutils_bosontag_header
00003
00004
00005
00006
00007
00008 #include <set>
00009 #include <string>
00010
00011
00012 #include <xAODJet/Jet.h>
00013
00014
00015 class TFile;
00016 class TH2;
00017
00018 namespace JetSubStructureUtils {
00019 class BosonTag {
00020 public:
00021
00022 struct CONFIG {
00023
00024 std::vector<float> m_mass_params;
00025
00026 float m_mass_window;
00027
00028 std::vector<float> m_d2_params;
00029
00030 std::string m_d2_cut_direction;
00031
00032 bool m_isConfig;
00033
00034
00035 CONFIG();
00036
00037 bool setConfigs(const std::vector<float> mass_params, float mass_window, const std::vector<float> d2_params, const std::string d2_cut_direction);
00038 };
00039
00040
00041 BosonTag( std::string working_point = "medium",
00042 std::string tagger_alg = "smooth",
00043 #ifdef ROOTCORE
00044 std::string recommendations_file = "$ROOTCOREBIN/data/JetSubStructureUtils/config_13TeV_Wtagging_MC15_Prerecommendations_20150809.dat",
00045 #else
00046 std::string recommendations_file = "JetSubStructureUtils/data/config_13TeV_Wtagging_MC15_Prerecommendations_20150809.dat",
00047 #endif
00048 bool debug = false,
00049 bool verbose = false);
00050
00051
00052 int result(const xAOD::Jet& jet) const;
00053
00054
00055 int result(const xAOD::Jet& jet, std::string algorithm_name) const;
00056
00057
00058 std::pair<bool, CONFIG> get_configuration(std::string algorithm_name) const;
00059
00060
00061
00062 std::pair<bool, std::string> get_algorithm_name(const xAOD::Jet& jet,
00063 const xAOD::JetAlgorithmType::ID jet_algorithm,
00064 const float size_parameter,
00065 const xAOD::JetInput::Type jet_input,
00066 const xAOD::JetTransform::Type jet_transform) const;
00067
00068 private:
00069 std::string m_working_point,
00070 m_tagger_alg,
00071 m_recommendations_file;
00072 bool m_debug,
00073 m_verbose;
00074
00075
00076 bool m_bad_configuration;
00077
00078
00079
00080
00081
00082
00083
00084
00085
00086 std::map<std::string, std::map<std::string, CONFIG>> m_configurations;
00087
00088
00089 static SG::AuxElement::ConstAccessor<int> AlgorithmType;
00090 static SG::AuxElement::ConstAccessor<float> SizeParameter;
00091 static SG::AuxElement::ConstAccessor<int> InputType;
00092 static SG::AuxElement::ConstAccessor<int> TransformType;
00093
00094
00095 static SG::AuxElement::ConstAccessor<float> RClus;
00096 static SG::AuxElement::ConstAccessor<float> PtFrac;
00097
00098
00099 static SG::AuxElement::ConstAccessor<float> RCut;
00100 static SG::AuxElement::ConstAccessor<float> ZCut;
00101
00102
00103
00104 static SG::AuxElement::ConstAccessor<char> BDRS;
00105
00106
00107 static SG::AuxElement::ConstAccessor<float> YMin;
00108 static SG::AuxElement::ConstAccessor<float> MuMax;
00109
00110 static SG::AuxElement::ConstAccessor<float> YFilt;
00111
00112
00113 static SG::AuxElement::ConstAccessor<float> D2;
00114 static SG::AuxElement::ConstAccessor<float> ECF1;
00115 static SG::AuxElement::ConstAccessor<float> ECF2;
00116 static SG::AuxElement::ConstAccessor<float> ECF3;
00117
00118 };
00119 }
00120
00121 #endif