File indexing completed on 2025-12-16 09:20:04
0001 #ifndef JETBASE_JET_H
0002 #define JETBASE_JET_H
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031
0032
0033
0034
0035
0036
0037
0038
0039
0040
0041
0042
0043
0044
0045
0046
0047
0048
0049
0050
0051
0052 #include <phool/PHObject.h>
0053
0054 #include <cstddef> // for size_t
0055 #include <iostream>
0056 #include <limits>
0057 #include <map>
0058
0059 class TClonesArray;
0060
0061 class Jet : public PHObject
0062 {
0063 public:
0064
0065
0066 enum ALGO
0067 {
0068 NONE = 0,
0069 ANTIKT = 1,
0070 KT = 2,
0071 CAMBRIDGE = 3
0072 };
0073
0074 enum SRC
0075 {
0076 VOID = 0,
0077 PARTICLE = 1,
0078 TRACK = 2,
0079 CEMC_TOWER = 3,
0080 CEMC_CLUSTER = 4,
0081 HCALIN_TOWER = 5,
0082 HCALIN_CLUSTER = 6,
0083 HCALOUT_TOWER = 7,
0084 HCALOUT_CLUSTER = 8,
0085 FEMC_TOWER = 9,
0086 FEMC_CLUSTER = 10,
0087 FHCAL_TOWER = 11,
0088 FHCAL_CLUSTER = 12,
0089 CEMC_TOWER_RETOWER = 13,
0090 CEMC_TOWER_SUB1 = 14,
0091 HCALIN_TOWER_SUB1 = 15,
0092 HCALOUT_TOWER_SUB1 = 16,
0093 CEMC_TOWER_SUB1CS = 17,
0094 HCALIN_TOWER_SUB1CS = 18,
0095 HCALOUT_TOWER_SUB1CS = 19,
0096 HEPMC_IMPORT = 20,
0097 HCAL_TOPO_CLUSTER = 21,
0098 ECAL_TOPO_CLUSTER = 22,
0099 EEMC_TOWER = 23,
0100 EEMC_CLUSTER = 24,
0101 CEMC_TOWERINFO = 25,
0102 HCALIN_TOWERINFO = 26,
0103 HCALOUT_TOWERINFO = 27,
0104 CEMC_TOWERINFO_RETOWER = 28,
0105 CEMC_TOWERINFO_SUB1 = 29,
0106 HCALIN_TOWERINFO_SUB1 = 30,
0107 HCALOUT_TOWERINFO_SUB1 = 31,
0108 CEMC_TOWERINFO_EMBED = 32,
0109 CEMC_TOWERINFO_SIM = 33,
0110 HCALIN_TOWERINFO_EMBED = 34,
0111 HCALIN_TOWERINFO_SIM = 35,
0112 HCALOUT_TOWERINFO_EMBED = 36,
0113 HCALOUT_TOWERINFO_SIM = 37,
0114 JET_PROBE = 38,
0115 ECAL_HCAL_TOPO_CLUSTER = 39,
0116 CHARGED_PARTICLE = 40
0117 };
0118
0119 enum PROPERTY
0120 {
0121
0122
0123 prop_JetCharge = 1,
0124
0125
0126 prop_BFrac = 2,
0127
0128
0129
0130 prop_SeedD = 3,
0131
0132
0133
0134 prop_SeedItr = 4,
0135
0136
0137 prop_zg = 5,
0138 prop_Rg = 6,
0139 prop_mu = 7,
0140
0141 prop_gamma = 8,
0142 prop_JetHadronFlavor = 9,
0143 prop_JetHadronZT = 10,
0144
0145
0146 prop_area = 11,
0147 no_property = 12,
0148
0149
0150 prop_t = 13,
0151 };
0152
0153 Jet() {}
0154 ~Jet() override {}
0155
0156 void identify(std::ostream& os = std::cout) const override;
0157 int isValid() const override { return 0; }
0158 PHObject* CloneMe() const override { return nullptr; }
0159
0160
0161
0162 virtual unsigned int get_id() const { return 0xFFFFFFFF; }
0163 virtual void set_id(unsigned int) { return; }
0164
0165 virtual float get_px() const { return std::numeric_limits<float>::quiet_NaN(); }
0166 virtual void set_px(float) { return; }
0167
0168 virtual float get_py() const { return std::numeric_limits<float>::quiet_NaN(); }
0169 virtual void set_py(float) { return; }
0170
0171 virtual float get_pz() const { return std::numeric_limits<float>::quiet_NaN(); }
0172 virtual void set_pz(float) { return; }
0173
0174 virtual float get_e() const { return std::numeric_limits<float>::quiet_NaN(); }
0175 virtual void set_e(float) { return; }
0176
0177 virtual float get_p() const { return std::numeric_limits<float>::quiet_NaN(); }
0178 virtual float get_pt() const { return std::numeric_limits<float>::quiet_NaN(); }
0179 virtual float get_et() const { return std::numeric_limits<float>::quiet_NaN(); }
0180 virtual float get_eta() const { return std::numeric_limits<float>::quiet_NaN(); }
0181 virtual float get_phi() const { return std::numeric_limits<float>::quiet_NaN(); }
0182 virtual float get_mass() const { return std::numeric_limits<float>::quiet_NaN(); }
0183 virtual float get_mass2() const { return std::numeric_limits<float>::quiet_NaN(); }
0184
0185
0186
0187
0188
0189 virtual float get_property(Jet::PROPERTY ) const { return std::numeric_limits<float>::quiet_NaN(); };
0190 virtual void set_property(Jet::PROPERTY , float ){};
0191 virtual size_t size_properties() const { return 0; };
0192
0193
0194 virtual void resize_properties(size_t ){};
0195 virtual std::vector<float>& get_property_vec();
0196
0197
0198
0199
0200 virtual bool has_property(Jet::PROPERTY ) const { return false; };
0201 virtual void print_property(std::ostream& ) const {};
0202 virtual int get_isCalib() {return 0;};
0203 virtual void set_isCalib(int) {};
0204
0205
0206
0207 typedef std::pair<Jet::SRC, unsigned int> TYPE_comp;
0208 typedef std::vector<TYPE_comp> TYPE_comp_vec;
0209 typedef TYPE_comp_vec::iterator ITER_comp_vec;
0210
0211
0212
0213
0214 virtual void clear_comp() {}
0215 virtual void insert_comp(Jet::SRC, unsigned int) {}
0216 virtual void insert_comp(Jet::SRC, unsigned int, bool) {}
0217 virtual void insert_comp(TYPE_comp_vec& ) {}
0218 virtual void insert_comp(TYPE_comp_vec& , bool ) {}
0219
0220 virtual size_t size_comp() const { return 0; };
0221
0222 virtual size_t num_comp(SRC = Jet::SRC::VOID ) { return 0; };
0223 virtual void print_comp(std::ostream& , bool ){};
0224 virtual std::vector<Jet::SRC> comp_src_vec() { return {}; };
0225 virtual std::map<Jet::SRC, size_t> comp_src_sizemap() { return {}; };
0226 virtual void set_comp_sort_flag(bool = false){};
0227
0228
0229 virtual ITER_comp_vec comp_begin();
0230 virtual ITER_comp_vec comp_begin(Jet::SRC);
0231 virtual ITER_comp_vec comp_end();
0232 virtual ITER_comp_vec comp_end(Jet::SRC);
0233
0234 virtual TYPE_comp_vec& get_comp_vec();
0235
0236 virtual bool empty_comp() const { return true; }
0237 virtual size_t count_comp(Jet::SRC ) const { return 0; };
0238
0239 typedef std::multimap<Jet::SRC, unsigned int> typ_comp_ids;
0240 typedef typ_comp_ids::const_iterator ConstIter;
0241 typedef typ_comp_ids::iterator Iter;
0242
0243 virtual ConstIter begin_comp() const;
0244 virtual ConstIter lower_bound_comp(Jet::SRC source) const;
0245 virtual ConstIter upper_bound_comp(Jet::SRC source) const;
0246 virtual ConstIter find(Jet::SRC source) const;
0247 virtual ConstIter end_comp() const;
0248
0249 virtual Iter begin_comp();
0250 virtual Iter lower_bound_comp(Jet::SRC source);
0251 virtual Iter upper_bound_comp(Jet::SRC source);
0252 virtual Iter find(Jet::SRC source);
0253 virtual Iter end_comp();
0254
0255 virtual size_t erase_comp(Jet::SRC) { return 0; }
0256 virtual void erase_comp(Iter ) { return; }
0257 virtual void erase_comp(Iter , Iter ) { return; }
0258
0259
0260 struct IterJetTCA
0261 {
0262 TClonesArray* tca{nullptr};
0263 int index{0};
0264 int size;
0265
0266 IterJetTCA(TClonesArray* _tca);
0267 void operator++() { ++index; };
0268 Jet* operator*() const;
0269 bool operator!=(const IterJetTCA& ) { return index != size; };
0270 };
0271
0272 ClassDefOverride(Jet, 1);
0273 };
0274
0275 #endif