Back to home page

sPhenix code displayed by LXR

 
 

    


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   //! Procedure to add a new PROPERTY tag:
0025   //! 1.add new tag below with unique value,
0026   //! 2.add a short name to PidCandidate::get_property_info
0027   enum PROPERTY
0028     {//
0029 
0030       //-- Truth properties: 1 - 100  --
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       //-- Jet properties: 101 - ?  --
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       //-- Jet shape in calorimeter: 120 - 200  --
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       //-- Track information: 201 - 250  --
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       //-- EM Candidates Cluster
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       //-- EM Candidates Tracks
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       //-- EM PID probabilities
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       //-- EM Candidates Truth
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       //-- Event kinematics reconstructed from candidate
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       //! max limit in order to fit into 8 bit unsigned number
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