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
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 }