File indexing completed on 2025-12-16 09:20:04
0001 #ifndef JETBASE_JetContainerv1__h
0002 #define JETBASE_JetContainerv1__h
0003 #include "JetContainer.h"
0004
0005 #include "Jet.h"
0006
0007 #include <TClonesArray.h>
0008
0009 #include <limits>
0010
0011 class JetContainerv1 : public JetContainer
0012 {
0013 public:
0014
0015 JetContainerv1();
0016 ~JetContainerv1() override;
0017 void identify(std::ostream& os = std::cout) const override;
0018 explicit JetContainerv1(const JetContainer& rhs);
0019 JetContainerv1& operator=(const JetContainer& jets);
0020 void Reset() override;
0021 TClonesArray* clone_data() const override
0022 {
0023 return (TClonesArray*) m_clones->Clone();
0024 };
0025
0026
0027 bool empty() const override { return m_njets == 0; };
0028 size_t size() const override { return m_njets; };
0029
0030
0031 Jet* add_jet() override;
0032 Jet* get_jet(unsigned int ijet) override;
0033 Jet* get_UncheckedAt(unsigned int index) override;
0034
0035
0036 inline Jet* operator()(int index) override { return get_jet(index); };
0037 inline Jet* operator[](int index) override { return get_UncheckedAt(index); };
0038
0039
0040
0041
0042
0043
0044
0045
0046
0047 std::map<Jet::PROPERTY, Jet::PROPERTY> property_indices() const override { return m_pindex; };
0048 bool has_property(Jet::PROPERTY prop) const override { return m_pindex.find(prop) != m_pindex.end(); };
0049 size_t size_properties() const override { return m_pindex.size(); };
0050 size_t add_property(Jet::PROPERTY) override;
0051 size_t add_property(std::set<Jet::PROPERTY>) override;
0052 virtual Jet::PROPERTY property_index(Jet::PROPERTY) override;
0053 void print_property_types(std::ostream& os = std::cout) const override;
0054
0055
0056
0057
0058
0059
0060
0061
0062
0063
0064 Jet::IterJetTCA begin() override;
0065 Jet::IterJetTCA end() override;
0066
0067
0068
0069 void set_algo(Jet::ALGO algo) override { m_algo = algo; };
0070 Jet::ALGO get_algo() const override { return m_algo; };
0071
0072 void set_par(float par) override { set_jetpar_R(par); }
0073 float get_par() const override { return get_jetpar_R(); }
0074
0075 void set_jetpar_R(float par) override { m_jetpar_R = par; }
0076 float get_jetpar_R() const override { return m_jetpar_R; }
0077
0078
0079
0080 bool empty_src() const override { return m_src.empty(); }
0081 void insert_src(Jet::SRC src) override { m_src.insert(src); }
0082
0083 ConstSrcIter begin_src() const override { return m_src.begin(); }
0084 ConstSrcIter find_src(Jet::SRC src) const override { return m_src.find(src); }
0085 ConstSrcIter end_src() const override { return m_src.end(); }
0086
0087 SrcIter begin_src() override { return m_src.begin(); }
0088 SrcIter find_src(Jet::SRC src) override { return m_src.find(src); }
0089 SrcIter end_src() override { return m_src.end(); }
0090
0091 void print_jets(std::ostream&) override;
0092
0093 void set_rho_median(float _) override { m_RhoMedian = _; };
0094 float get_rho_median() const override { return m_RhoMedian; };
0095
0096 private:
0097 static std::string str_Jet_PROPERTY(Jet::PROPERTY) ;
0098
0099 TClonesArray* m_clones{nullptr};
0100 size_t m_njets{0};
0101
0102
0103 std::map<Jet::PROPERTY, Jet::PROPERTY > m_pindex{};
0104 size_t m_psize{0};
0105
0106 void resize_jet_pvecs();
0107
0108
0109 Jet::ALGO m_algo{Jet::NONE};
0110 float m_jetpar_R{0.4};
0111
0112 std::set<Jet::SRC> m_src;
0113
0114 float m_RhoMedian{std::numeric_limits<float>::signaling_NaN()};
0115
0116 ClassDefOverride(JetContainerv1, 1);
0117 };
0118
0119 #endif