Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2025-08-06 08:17:46

0001 /*!
0002  * \file Jetv1.h
0003  * \brief Versionize the Jet object that make by Mike McCumber
0004  * \author Jin Huang <jhuang@bnl.gov>
0005  * \version $Revision:   $
0006  * \date $Date: $
0007  */
0008 
0009 #ifndef G4JET_JETV1_H
0010 #define G4JET_JETV1_H
0011 
0012 #include "Jet.h"
0013 
0014 #include <cstddef>  // for size_t
0015 #include <iostream>
0016 #include <limits>
0017 #include <map>
0018 #include <utility>  // for pair, make_pair
0019 
0020 class PHObject;
0021 
0022 /*!
0023  * \brief Jetv1
0024  */
0025 class Jetv1 : public Jet
0026 {
0027  public:
0028   Jetv1();
0029   ~Jetv1() override {}
0030 
0031   // PHObject virtual overloads
0032 
0033   void identify(std::ostream& os = std::cout) const override;
0034   void Reset() override;
0035   int isValid() const override;
0036   PHObject* CloneMe() const override;
0037 
0038   // jet info
0039 
0040   unsigned int get_id() const override { return _id; }
0041   void set_id(unsigned int id) override { _id = id; }
0042 
0043   float get_px() const override { return _mom[0]; }
0044   void set_px(float px) override { _mom[0] = px; }
0045 
0046   float get_py() const override { return _mom[1]; }
0047   void set_py(float py) override { _mom[1] = py; }
0048 
0049   float get_pz() const override { return _mom[2]; }
0050   void set_pz(float pz) override { _mom[2] = pz; }
0051 
0052   float get_e() const override { return _e; }
0053   void set_e(float e) override { _e = e; }
0054 
0055   float get_p() const override;
0056   float get_pt() const override;
0057   float get_et() const override;
0058   float get_eta() const override;
0059   float get_phi() const override;
0060   float get_mass() const override;
0061   float get_mass2() const override;
0062 
0063   // extended jet info
0064 
0065   bool has_property(Jet::PROPERTY prop_id) const override;
0066   float get_property(Jet::PROPERTY prop_id) const override;
0067   void set_property(Jet::PROPERTY prop_id, float value) override;
0068   void print_property(std::ostream& os) const override;
0069 
0070   //
0071   // clustered component methods (multimap interface based)
0072   // source type id --> unique id within that storage
0073   //
0074   bool empty_comp() const override { return _comp_ids.empty(); }
0075   size_t size_comp() const override { return _comp_ids.size(); }
0076 
0077   void clear_comp() override { _comp_ids.clear(); }
0078   size_t erase_comp(SRC source) override { return _comp_ids.erase(source); }
0079   void erase_comp(Iter iter) override
0080   {
0081     _comp_ids.erase(iter);
0082     return;
0083   }
0084   void erase_comp(Iter first, Iter last) override
0085   {
0086     _comp_ids.erase(first, last);
0087     return;
0088   }
0089 
0090   ConstIter begin_comp() const override { return _comp_ids.begin(); }
0091   ConstIter lower_bound_comp(SRC source) const override { return _comp_ids.lower_bound(source); }
0092   ConstIter upper_bound_comp(SRC source) const override { return _comp_ids.upper_bound(source); }
0093   ConstIter find(SRC source) const override { return _comp_ids.find(source); }
0094   ConstIter end_comp() const override { return _comp_ids.end(); }
0095 
0096   Iter begin_comp() override { return _comp_ids.begin(); }
0097   Iter lower_bound_comp(SRC source) override { return _comp_ids.lower_bound(source); }
0098   Iter upper_bound_comp(SRC source) override { return _comp_ids.upper_bound(source); }
0099   Iter find(SRC source) override { return _comp_ids.find(source); }
0100   Iter end_comp() override { return _comp_ids.end(); }
0101 
0102  private:
0103   /// unique identifier within container
0104   unsigned int _id = ~0x0;
0105 
0106   /// jet momentum vector (px,py,pz)
0107   float _mom[3]{};
0108 
0109   /// jet energy
0110   float _e {std::numeric_limits<float>::quiet_NaN()};
0111 
0112   /// source id -> component id
0113   typ_comp_ids _comp_ids;
0114 
0115   typedef std::map<Jet::PROPERTY, float> typ_property_map;
0116   /// map that contains extra properties
0117   typ_property_map _property_map;
0118 
0119   // Function in Jet.h header which are not implemented in Jet.h
0120   // messages for function calls from Jet.h which are not implemented in Jetv1.h
0121   static void not_in_v1_msg(const std::string& method_name, std::ostream& os = std::cout) ;
0122   size_t size_properties() const override { return _property_map.size(); };
0123   virtual std::vector<float>& get_property_vec() override;
0124 
0125   void insert_comp(SRC source, unsigned int compid) override
0126   {
0127     _comp_ids.insert(std::make_pair(source, compid));
0128   }
0129   void insert_comp(SRC source, unsigned int compid, bool) override;  // v2 only
0130   void insert_comp(TYPE_comp_vec&) override;                         // v2 only
0131   void insert_comp(TYPE_comp_vec&, bool) override;                   // v2 only
0132   void set_comp_sort_flag(bool) override;                            // let comp_vec know it isn't sorted
0133                                                                      //
0134   size_t num_comp(Jet::SRC /**/) override;
0135   void print_comp(std::ostream& /**/, bool /**/) override;
0136   std::vector<Jet::SRC> comp_src_vec() override;
0137   std::map<Jet::SRC, size_t> comp_src_sizemap() override;
0138   size_t count_comp(SRC source) const override { return _comp_ids.count(source); }
0139 
0140   ITER_comp_vec comp_begin(Jet::SRC /**/) override;
0141   ITER_comp_vec comp_end(Jet::SRC /**/) override;
0142   ITER_comp_vec comp_begin() override;
0143   ITER_comp_vec comp_end() override;
0144   TYPE_comp_vec& get_comp_vec() override;
0145 
0146   void resize_properties(size_t /**/) override;
0147 
0148   ClassDefOverride(Jetv1, 1);
0149 };
0150 
0151 #endif  // G4JET_JETV1_H