File indexing completed on 2025-08-03 08:12:31
0001 #ifndef PIDCANDIDATE_H__
0002 #define PIDCANDIDATE_H__
0003
0004 #include <phool/PHObject.h>
0005 #include <cmath>
0006 #include <climits>
0007
0008 class PidCandidate: public PHObject
0009 {
0010 public:
0011 PidCandidate() {}
0012 virtual ~PidCandidate() {}
0013
0014 virtual void identify(std::ostream& os = std::cout) const;
0015
0016 virtual void Copy(PidCandidate const &tc);
0017
0018 friend std::ostream &operator<<(std::ostream & stream, const PidCandidate * tc);
0019
0020 virtual void Reset();
0021
0022 virtual void print() const {std::cout<<"PidCandidate base class - print() not implemented"<<std::endl;}
0023
0024
0025
0026
0027 enum PROPERTY
0028 {
0029
0030
0031 evtgen_pid = 1,
0032 evtgen_ptotal = 2,
0033 evtgen_etotal = 3,
0034 evtgen_theta = 4,
0035 evtgen_phi = 5,
0036 evtgen_eta = 6,
0037 evtgen_charge = 7,
0038 evtgen_decay_prong = 8,
0039 evtgen_decay_hcharged = 9,
0040 evtgen_decay_lcharged = 10,
0041
0042
0043 jet_id = 101,
0044 jet_eta = 102,
0045 jet_phi = 103,
0046 jet_etotal = 104,
0047 jet_etrans = 105,
0048 jet_ptotal = 106,
0049 jet_ptrans = 107,
0050 jet_minv = 108,
0051 jet_mtrans = 109,
0052 jet_ncomp = 110,
0053 jet_ncomp_above_0p1 = 111,
0054 jet_ncomp_above_1 = 112,
0055 jet_ncomp_above_10 = 113,
0056 jet_ncomp_emcal = 115,
0057
0058
0059 jetshape_radius = 121,
0060 jetshape_rms = 122,
0061 jetshape_r90 = 123,
0062
0063 jetshape_econe_r01 = 131,
0064 jetshape_econe_r02 = 132,
0065 jetshape_econe_r03 = 133,
0066 jetshape_econe_r04 = 134,
0067 jetshape_econe_r05 = 135,
0068
0069 jetshape_emcal_radius = 161,
0070 jetshape_emcal_rms = 162,
0071 jetshape_emcal_r90 = 163,
0072
0073 jetshape_emcal_econe_r01 = 171,
0074 jetshape_emcal_econe_r02 = 172,
0075 jetshape_emcal_econe_r03 = 173,
0076 jetshape_emcal_econe_r04 = 174,
0077 jetshape_emcal_econe_r05 = 175,
0078
0079
0080 tracks_count_r02 = 210,
0081 tracks_count_r04 = 211,
0082 tracks_count_R = 212,
0083
0084 tracks_rmax_r02 = 215,
0085 tracks_rmax_r04 = 216,
0086 tracks_rmax_R = 217,
0087
0088 tracks_chargesum_r02 = 220,
0089 tracks_chargesum_r04 = 221,
0090 tracks_chargesum_R = 222,
0091 tracks_vertex = 223,
0092
0093
0094 em_cluster_id = 301,
0095 em_cluster_prob = 302,
0096 em_cluster_posx = 303,
0097 em_cluster_posy = 304,
0098 em_cluster_posz = 305,
0099 em_cluster_e = 306,
0100 em_cluster_ecore = 307,
0101 em_cluster_et_iso = 308,
0102 em_cluster_theta = 309,
0103 em_cluster_phi = 310,
0104 em_cluster_eta = 311,
0105 em_cluster_pt = 312,
0106 em_cluster_ntower = 313,
0107 em_cluster_caloid = 314,
0108
0109
0110 em_track_id = 350,
0111 em_track_quality = 351,
0112 em_track_theta = 352,
0113 em_track_phi = 353,
0114 em_track_eta = 354,
0115 em_track_ptotal = 355,
0116 em_track_ptrans = 356,
0117 em_track_charge = 357,
0118 em_track_dca = 358,
0119 em_track_section = 359,
0120 em_track_e3x3_cemc = 360,
0121 em_track_e3x3_femc = 361,
0122 em_track_e3x3_eemc = 362,
0123 em_track_e3x3_ihcal = 363,
0124 em_track_e3x3_ohcal = 364,
0125 em_track_e3x3_fhcal = 365,
0126 em_track_e3x3_ehcal = 366,
0127 em_track_cluster_dr = 367,
0128 em_track_theta2cluster = 368,
0129 em_track_eta2cluster = 369,
0130 em_track_phi2cluster = 370,
0131 em_track_p2cluster = 371,
0132 em_track_x2cluster = 372,
0133 em_track_y2cluster = 373,
0134 em_track_z2cluster = 374,
0135
0136
0137 em_pid_prob_electron = 391,
0138 em_pid_prob_pion = 392,
0139 em_pid_prob_kaon = 393,
0140 em_pid_prob_proton = 394,
0141
0142
0143 em_evtgen_pid = 401,
0144 em_evtgen_ptotal = 402,
0145 em_evtgen_etotal = 403,
0146 em_evtgen_theta = 404,
0147 em_evtgen_phi = 405,
0148 em_evtgen_eta = 406,
0149 em_evtgen_charge = 407,
0150 em_evtgen_is_scattered_lepton = 408,
0151
0152
0153 em_reco_x_e = 410,
0154 em_reco_y_e = 411,
0155 em_reco_q2_e = 412,
0156 em_reco_w_e = 413,
0157
0158
0159 prop_MAX_NUMBER = UCHAR_MAX
0160 };
0161
0162 enum PROPERTY_TYPE
0163 {
0164 type_int = 1,
0165 type_uint = 2,
0166 type_float = 3,
0167 type_unknown = -1
0168 };
0169
0170 virtual bool has_property(const PROPERTY prop_id) const {return false;}
0171 virtual float get_property_float(const PROPERTY prop_id) const {return NAN;}
0172 virtual int get_property_int(const PROPERTY prop_id) const {return INT_MIN;}
0173 virtual unsigned int get_property_uint(const PROPERTY prop_id) const {return UINT_MAX;}
0174 virtual void set_property(const PROPERTY prop_id, const float value) {return;}
0175 virtual void set_property(const PROPERTY prop_id, const int value) {return;}
0176 virtual void set_property(const PROPERTY prop_id, const unsigned int value) {return;}
0177 static std::pair<const std::string,PROPERTY_TYPE> get_property_info(PROPERTY prop_id);
0178 static bool check_property(const PROPERTY prop_id, const PROPERTY_TYPE prop_type);
0179 static std::string get_property_type(const PROPERTY_TYPE prop_type);
0180
0181 protected:
0182 virtual unsigned int get_property_nocheck(const PROPERTY prop_id) const {return UINT_MAX;}
0183 virtual void set_property_nocheck(const PROPERTY prop_id,const unsigned int) {return;}
0184
0185 ClassDef(PidCandidate,1)
0186 };
0187
0188 #endif