Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2025-08-03 08:12:31

0001 #include "PidCandidate.h"
0002 
0003 #include <cstdlib>
0004 
0005 using namespace std;
0006 
0007 ClassImp(PidCandidate)
0008 
0009 void
0010 PidCandidate::Copy(PidCandidate const &tc)
0011 {
0012   for (unsigned char ic = 0; ic < UCHAR_MAX; ic++)
0013     {
0014       PROPERTY prop_id = static_cast<PidCandidate::PROPERTY> (ic);
0015       if (tc.has_property(prop_id))
0016         {
0017           set_property_nocheck(prop_id,tc.get_property_nocheck(prop_id));
0018         }
0019     }
0020 }
0021 
0022 
0023 void
0024 PidCandidate::identify(ostream& os) const
0025 {
0026   cout << "Class " << this->ClassName() << endl;
0027   return;
0028 }
0029 
0030 ostream& operator<<(ostream& stream, const PidCandidate * hit){
0031   stream <<endl<< "streaming information" <<endl;
0032   return stream;
0033 }
0034 
0035 void
0036 PidCandidate::Reset()
0037 {
0038   cout << "Reset not implemented by daughter class" << endl;
0039   return;
0040 }
0041 
0042 
0043 std::pair<const std::string,PidCandidate::PROPERTY_TYPE>
0044 PidCandidate::get_property_info(const PROPERTY prop_id)
0045 {
0046   switch (prop_id)
0047     {
0048     case  evtgen_pid:
0049       return make_pair("evtgen_pid",PidCandidate::type_int);
0050 
0051     case  evtgen_ptotal:
0052       return make_pair("evtgen_ptotal",PidCandidate::type_float);
0053 
0054     case  evtgen_etotal:
0055       return make_pair("evtgen_etotal",PidCandidate::type_float);
0056 
0057     case  evtgen_theta:
0058       return make_pair("evtgen_theta",PidCandidate::type_float);
0059 
0060     case  evtgen_phi:
0061       return make_pair("evtgen_phi",PidCandidate::type_float);
0062 
0063     case  evtgen_eta:
0064       return make_pair("evtgen_eta",PidCandidate::type_float);
0065 
0066     case  evtgen_charge:
0067       return make_pair("evtgen_charge",PidCandidate::type_int);
0068 
0069     case  evtgen_decay_prong:
0070       return make_pair("evtgen_decay_prong",PidCandidate::type_uint);
0071 
0072     case  evtgen_decay_hcharged:
0073       return make_pair("evtgen_decay_hcharged",PidCandidate::type_uint);
0074 
0075     case  evtgen_decay_lcharged:
0076       return make_pair("evtgen_decay_lcharged",PidCandidate::type_uint);
0077 
0078       // ------
0079 
0080     case  jet_id:
0081       return make_pair("jet_id",PidCandidate::type_uint);
0082 
0083     case  jet_eta:
0084       return make_pair("jet_eta",PidCandidate::type_float);
0085 
0086     case  jet_phi:
0087       return make_pair("jet_phi",PidCandidate::type_float);
0088 
0089     case  jet_etotal:
0090       return make_pair("jet_etotal",PidCandidate::type_float);
0091 
0092     case  jet_etrans:
0093       return make_pair("jet_etrans",PidCandidate::type_float);
0094 
0095     case  jet_ptotal:
0096       return make_pair("jet_ptotal",PidCandidate::type_float);
0097 
0098     case  jet_ptrans:
0099       return make_pair("jet_ptrans",PidCandidate::type_float);
0100 
0101     case  jet_minv:
0102       return make_pair("jet_minv",PidCandidate::type_float);
0103 
0104     case  jet_mtrans:
0105       return make_pair("jet_mtrans",PidCandidate::type_float);
0106 
0107     case  jet_ncomp:
0108       return make_pair("jet_ncomp",PidCandidate::type_uint);
0109 
0110     case  jet_ncomp_above_0p1:
0111       return make_pair("jet_ncomp_above_0p1",PidCandidate::type_uint);
0112 
0113     case  jet_ncomp_above_1:
0114       return make_pair("jet_ncomp_above_1",PidCandidate::type_uint);
0115 
0116     case  jet_ncomp_above_10:
0117       return make_pair("jet_ncomp_above_10",PidCandidate::type_uint);
0118 
0119     case  jet_ncomp_emcal:
0120       return make_pair("jet_ncomp_emcal",PidCandidate::type_uint);
0121 
0122       // ------
0123 
0124     case  jetshape_radius:
0125       return make_pair("jetshape_radius",PidCandidate::type_float);
0126 
0127     case  jetshape_rms:
0128       return make_pair("jetshape_rms",PidCandidate::type_float);
0129 
0130     case  jetshape_r90:
0131       return make_pair("jetshape_r90",PidCandidate::type_float);
0132 
0133     case  jetshape_econe_r01:
0134       return make_pair("jetshape_econe_r01",PidCandidate::type_float);
0135 
0136     case  jetshape_econe_r02:
0137       return make_pair("jetshape_econe_r02",PidCandidate::type_float);
0138 
0139     case  jetshape_econe_r03:
0140       return make_pair("jetshape_econe_r03",PidCandidate::type_float);
0141 
0142     case  jetshape_econe_r04:
0143       return make_pair("jetshape_econe_r04",PidCandidate::type_float);
0144 
0145     case  jetshape_econe_r05:
0146       return make_pair("jetshape_econe_r05",PidCandidate::type_float);
0147 
0148       // ------
0149 
0150     case  jetshape_emcal_radius:
0151       return make_pair("jetshape_emcal_radius",PidCandidate::type_float);
0152 
0153     case  jetshape_emcal_rms:
0154       return make_pair("jetshape_emcal_rms",PidCandidate::type_float);
0155 
0156     case  jetshape_emcal_r90:
0157       return make_pair("jetshape_emcal_r90",PidCandidate::type_float);
0158 
0159     case  jetshape_emcal_econe_r01:
0160       return make_pair("jetshape_emcal_econe_r01",PidCandidate::type_float);
0161 
0162     case  jetshape_emcal_econe_r02:
0163       return make_pair("jetshape_emcal_econe_r02",PidCandidate::type_float);
0164 
0165     case  jetshape_emcal_econe_r03:
0166       return make_pair("jetshape_emcal_econe_r03",PidCandidate::type_float);
0167 
0168     case  jetshape_emcal_econe_r04:
0169       return make_pair("jetshape_emcal_econe_r04",PidCandidate::type_float);
0170 
0171     case  jetshape_emcal_econe_r05:
0172       return make_pair("jetshape_emcal_econe_r05",PidCandidate::type_float);
0173 
0174       // ------
0175 
0176     case  tracks_count_r02:
0177       return make_pair("tracks_count_r02",PidCandidate::type_uint);
0178 
0179     case  tracks_count_r04:
0180       return make_pair("tracks_count_r04",PidCandidate::type_uint);
0181 
0182     case  tracks_count_R:
0183       return make_pair("tracks_count_R",PidCandidate::type_uint);
0184 
0185     case  tracks_rmax_r02:
0186       return make_pair("tracks_rmax_r02",PidCandidate::type_float);
0187 
0188     case  tracks_rmax_r04:
0189       return make_pair("tracks_rmax_r04",PidCandidate::type_float);
0190 
0191     case  tracks_rmax_R:
0192       return make_pair("tracks_rmax_R",PidCandidate::type_float);
0193 
0194     case  tracks_chargesum_r02:
0195       return make_pair("tracks_chargesum_r02",PidCandidate::type_int);
0196 
0197     case  tracks_chargesum_r04:
0198       return make_pair("tracks_chargesum_r04",PidCandidate::type_int);
0199 
0200     case  tracks_chargesum_R:
0201       return make_pair("tracks_chargesum_R",PidCandidate::type_int);
0202 
0203       // ------
0204 
0205       // EM Candidates:
0206 
0207     case  em_cluster_id:
0208       return make_pair("em_cluster_id",PidCandidate::type_uint);
0209 
0210     case  em_cluster_prob:
0211       return make_pair("em_cluster_prob",PidCandidate::type_float);
0212 
0213     case  em_cluster_posx:
0214       return make_pair("em_cluster_posx",PidCandidate::type_float);
0215 
0216     case  em_cluster_posy:
0217       return make_pair("em_cluster_posy",PidCandidate::type_float);
0218 
0219     case  em_cluster_posz:
0220       return make_pair("em_cluster_posz",PidCandidate::type_float);
0221 
0222     case  em_cluster_e:
0223       return make_pair("em_cluster_e",PidCandidate::type_float);
0224 
0225     case  em_cluster_ecore:
0226       return make_pair("em_cluster_ecore",PidCandidate::type_float);
0227 
0228     case  em_cluster_et_iso:
0229       return make_pair("em_cluster_et_iso",PidCandidate::type_float);
0230 
0231     case  em_cluster_theta:
0232       return make_pair("em_cluster_theta",PidCandidate::type_float);
0233 
0234     case  em_cluster_phi:
0235       return make_pair("em_cluster_phi",PidCandidate::type_float);
0236 
0237     case  em_cluster_eta:
0238       return make_pair("em_cluster_eta",PidCandidate::type_float);
0239 
0240     case  em_cluster_pt:
0241       return make_pair("em_cluster_pt",PidCandidate::type_float);
0242 
0243     case  em_cluster_ntower:
0244       return make_pair("em_cluster_ntower",PidCandidate::type_uint);
0245 
0246     case  em_cluster_caloid:
0247       return make_pair("em_cluster_caloid",PidCandidate::type_uint);
0248 
0249       // ------
0250 
0251     case  em_track_id:
0252       return make_pair("em_track_id",PidCandidate::type_uint);
0253 
0254     case  em_track_quality:
0255       return make_pair("em_track_quality",PidCandidate::type_float);
0256 
0257     case  em_track_theta:
0258       return make_pair("em_track_theta",PidCandidate::type_float);
0259 
0260     case  em_track_phi:
0261       return make_pair("em_track_phi",PidCandidate::type_float);
0262 
0263     case  em_track_eta:
0264       return make_pair("em_track_eta",PidCandidate::type_float);
0265 
0266     case  em_track_ptotal:
0267       return make_pair("em_track_ptotal",PidCandidate::type_float);
0268 
0269     case  em_track_ptrans:
0270       return make_pair("em_track_ptrans",PidCandidate::type_float);
0271 
0272     case  em_track_charge:
0273       return make_pair("em_track_charge",PidCandidate::type_int);
0274 
0275     case  em_track_dca:
0276       return make_pair("em_track_dca",PidCandidate::type_float);
0277 
0278     case  em_track_section:
0279       return make_pair("em_track_section",PidCandidate::type_uint);
0280 
0281     case  em_track_e3x3_cemc:
0282       return make_pair("em_track_e3x3_cemc",PidCandidate::type_float);
0283 
0284     case  em_track_e3x3_femc:
0285       return make_pair("em_track_e3x3_femc",PidCandidate::type_float);
0286 
0287     case  em_track_e3x3_eemc:
0288       return make_pair("em_track_e3x3_eemc",PidCandidate::type_float);
0289 
0290     case  em_track_e3x3_ihcal:
0291       return make_pair("em_track_e3x3_ihcal",PidCandidate::type_float);
0292 
0293     case  em_track_e3x3_ohcal:
0294       return make_pair("em_track_e3x3_ohcal",PidCandidate::type_float);
0295 
0296     case  em_track_e3x3_fhcal:
0297       return make_pair("em_track_e3x3_fhcal",PidCandidate::type_float);
0298 
0299     case  em_track_e3x3_ehcal:
0300       return make_pair("em_track_e3x3_ehcal",PidCandidate::type_float);
0301 
0302     case  em_track_cluster_dr:
0303       return make_pair("em_track_cluster_dr",PidCandidate::type_float);
0304 
0305     case  em_track_theta2cluster:
0306       return make_pair("em_track_theta2cluster",PidCandidate::type_float);
0307     
0308     case  em_track_eta2cluster:
0309       return make_pair("em_track_eta2cluster",PidCandidate::type_float);
0310       
0311     case  em_track_phi2cluster:
0312       return make_pair("em_track_phi2cluster",PidCandidate::type_float);
0313 
0314     case  em_track_p2cluster:
0315       return make_pair("em_track_p2cluster",PidCandidate::type_float);
0316       
0317     case  em_track_x2cluster:
0318       return make_pair("em_track_x2cluster",PidCandidate::type_float);
0319 
0320     case  em_track_y2cluster:
0321       return make_pair("em_track_y2cluster",PidCandidate::type_float);
0322 
0323     case  em_track_z2cluster:
0324       return make_pair("em_track_z2cluster",PidCandidate::type_float);
0325 
0326       // ------
0327 
0328     case  em_pid_prob_electron:
0329       return make_pair("em_pid_prob_electron",PidCandidate::type_float);
0330 
0331     case  em_pid_prob_pion:
0332       return make_pair("em_pid_prob_pion",PidCandidate::type_float);
0333 
0334     case  em_pid_prob_kaon:
0335       return make_pair("em_pid_prob_kaon",PidCandidate::type_float);
0336 
0337     case  em_pid_prob_proton:
0338       return make_pair("em_pid_prob_proton",PidCandidate::type_float);
0339 
0340       // ------
0341 
0342     case  em_evtgen_pid:
0343       return make_pair("em_evtgen_pid",PidCandidate::type_int);
0344 
0345     case  em_evtgen_ptotal:
0346       return make_pair("em_evtgen_ptotal",PidCandidate::type_float);
0347 
0348     case  em_evtgen_etotal:
0349       return make_pair("em_evtgen_etotal",PidCandidate::type_float);
0350 
0351     case  em_evtgen_theta:
0352       return make_pair("em_evtgen_theta",PidCandidate::type_float);
0353 
0354     case  em_evtgen_phi:
0355       return make_pair("em_evtgen_phi",PidCandidate::type_float);
0356 
0357     case  em_evtgen_eta:
0358       return make_pair("em_evtgen_eta",PidCandidate::type_float);
0359 
0360     case  em_evtgen_charge:
0361       return make_pair("em_evtgen_charge",PidCandidate::type_int);
0362 
0363     case  em_evtgen_is_scattered_lepton:
0364       return make_pair("em_evtgen_is_scattered_lepton",PidCandidate::type_uint);
0365 
0366       // ------
0367 
0368     case  em_reco_x_e:
0369       return make_pair("em_reco_x_e",PidCandidate::type_float);
0370 
0371     case  em_reco_y_e:
0372       return make_pair("em_reco_y_e",PidCandidate::type_float);
0373 
0374     case  em_reco_q2_e:
0375       return make_pair("em_reco_q2_e",PidCandidate::type_float);
0376 
0377     case  em_reco_w_e:
0378       return make_pair("em_reco_w_e",PidCandidate::type_float);
0379 
0380       // ------
0381 
0382     default:
0383       cout << "PidCandidate::get_property_info - Fatal Error - unknown index " << prop_id << endl;
0384       exit(1);
0385     }
0386 }
0387 
0388 
0389 bool
0390 PidCandidate::check_property(const PROPERTY prop_id, const PROPERTY_TYPE prop_type)
0391 {
0392   pair<const string,PROPERTY_TYPE> property_info = get_property_info(prop_id);
0393   if (property_info.second != prop_type)
0394     {
0395       return false;
0396     }
0397   return true;
0398 }
0399 
0400 
0401 string
0402 PidCandidate::get_property_type(const PROPERTY_TYPE prop_type)
0403 {
0404   switch(prop_type)
0405     {
0406     case type_int:
0407       return "int";
0408     case type_uint:
0409       return "unsigned int";
0410     case type_float:
0411       return "float";
0412     default:
0413       return "unkown";
0414     }
0415 }