00001 #ifndef _MdstTables_h_ 00002 #define _MdstTables_h_ 00003 00004 #include <string> 00005 #include <iostream> 00006 #include <vector> 00007 00008 #include "MdcTables/HepevtTables.h" 00009 00010 using namespace std; 00011 00012 // 00013 //*** MDST v.2.30. Run header 00014 // 00015 class Mdst_run_head { 00016 public: 00017 Mdst_run_head() {}; 00018 public: 00019 int id; 00020 int version; 00021 int data_type; 00022 int exp_no; 00023 int run_no; 00024 }; 00025 00026 class MdstRunHeadCol { 00027 public: 00028 static vector<Mdst_run_head>* getMdstRunHeadCol(void); 00029 private: 00030 static vector<Mdst_run_head>* s_col; 00031 }; 00032 00033 00034 // 00035 //*** Run trailer 00036 // 00037 class Mdst_run_end { 00038 public: 00039 Mdst_run_end() {}; 00040 public: 00041 int id; 00042 int exp_no; 00043 int run_no; 00044 }; 00045 00046 class MdstRunEndCol { 00047 public: 00048 static vector<Mdst_run_end>* getMdstRunEndCol(void); 00049 private: 00050 static vector<Mdst_run_end>* s_col; 00051 }; 00052 00053 00054 // 00055 //*** Event header 00056 // 00057 class Mdst_event { 00058 public: 00059 Mdst_event() {}; 00060 public: 00061 int id; 00062 int exp_no; 00063 int run_no; 00064 int event_no; 00065 int trigger; 00066 int date; 00067 int time; 00068 }; 00069 00070 class MdstEventCol { 00071 public: 00072 static vector<Mdst_event>* getMdstEventCol(void); 00073 private: 00074 static vector<Mdst_event>* s_col; 00075 }; 00076 00077 00078 // 00079 //***Additional event header 00080 // 00081 class Mdst_event_add { 00082 public: 00083 Mdst_event_add() {}; 00084 public: 00085 int id; 00086 float scale; 00087 int flag[5]; 00088 }; 00089 00090 class MdstEventAddCol { 00091 public: 00092 static vector<Mdst_event_add>* getMdstEventAddCol(void); 00093 private: 00094 static vector<Mdst_event_add>* s_col; 00095 }; 00096 00097 00098 // 00099 //*** Data quality in the current event 00100 // 00101 class Mdst_quality { 00102 public: 00103 Mdst_quality() {}; 00104 public: 00105 int id; 00106 char name[4]; 00107 int quality; 00108 }; 00109 00110 class MdstQualityCol { 00111 public: 00112 static vector<Mdst_quality>* getMdstQualityCol(void); 00113 private: 00114 static vector<Mdst_quality>* s_col; 00115 }; 00116 00117 00118 // 00119 //*** Reconstructed charged tracks. 00120 // 00121 class Mdst_trk; 00122 class Mdst_acc; 00123 class Mdst_tof; 00124 class Mdst_muid; 00125 class Mdst_charged { 00126 public: 00127 Mdst_charged() {}; 00128 public: 00129 int id; 00130 float charge; 00131 float px; 00132 float py; 00133 float pz; 00134 float mass; 00135 int used_pid; 00136 float pid_e; 00137 float pid_mu; 00138 float pid_pi; 00139 float pid_K; 00140 float pid_p; 00141 // int elid; 00142 Mdst_trk * trk; 00143 Mdst_acc * acc; 00144 Mdst_tof * tof; 00145 // Mdst_klm * klm; 00146 Mdst_muid * muid; 00147 }; 00148 00149 class MdstChargedCol { 00150 public: 00151 static vector<Mdst_charged>* getMdstChargedCol(void); 00152 private: 00153 static vector<Mdst_charged>* s_col; 00154 }; 00155 00156 00157 // 00158 //*** Reconstructed V0-particles, i.e. Ks, Lambda, 00159 //*** Lambda-bar, converted-gamma. 00160 // 00161 class Mdst_vee_daughters; 00162 class Mdst_vee2 { 00163 public: 00164 Mdst_vee2() {}; 00165 public: 00166 int id; 00167 int kind; 00168 Mdst_charged * chgd[2]; 00169 float p[4]; 00170 float v[3]; 00171 float z_dist; 00172 float chisq; 00173 int type; 00174 Mdst_vee_daughters * daut; 00175 }; 00176 00177 class MdstVee2Col { 00178 public: 00179 static vector<Mdst_vee2>* getMdstVee2Col(void); 00180 private: 00181 static vector<Mdst_vee2>* s_col; 00182 }; 00183 00184 00185 // 00186 //*** Track params. and error matrix of V0 daughters 00187 //*** before the vtx-constraint fit. 00188 // 00189 class Mdst_vee_daughters { 00190 public: 00191 Mdst_vee_daughters() {}; 00192 public: 00193 int id; 00194 float helix_p[5]; 00195 float helix_m[5]; 00196 float error_p[15]; 00197 float error_m[15]; 00198 }; 00199 00200 class MdstVeeDaughtersCol { 00201 public: 00202 static vector<Mdst_vee_daughters>* getMdstVeeDaughtersCol(void); 00203 private: 00204 static vector<Mdst_vee_daughters>* s_col; 00205 }; 00206 00207 00208 // 00209 //*** Reconstructed gamma's. 00210 // 00211 class Mdst_ecl; 00212 class Mdst_efc; 00213 class Mdst_gamma { 00214 public: 00215 Mdst_gamma() {}; 00216 public: 00217 int id; 00218 float px; 00219 float py; 00220 float pz; 00221 Mdst_ecl * ecl; 00222 Mdst_efc * efc; 00223 }; 00224 00225 class MdstGammaCol { 00226 public: 00227 static vector<Mdst_gamma>* getMdstGammaCol(void); 00228 private: 00229 static vector<Mdst_gamma>* s_col; 00230 }; 00231 00232 00233 // 00234 //*** Reconstructed pi0's. 00235 // 00236 class Mdst_pi0 { 00237 public: 00238 Mdst_pi0() {}; 00239 public: 00240 int id; 00241 Mdst_gamma * gamma[2]; 00242 float px; 00243 float py; 00244 float pz; 00245 float energy; 00246 float mass; 00247 float chisq; 00248 }; 00249 00250 class MdstPi0Col { 00251 public: 00252 static vector<Mdst_pi0>* getMdstPi0Col(void); 00253 private: 00254 static vector<Mdst_pi0>* s_col; 00255 }; 00256 00257 00258 // 00259 //*** Reconstructed K-long's. 00260 // 00261 class Mdst_ecl; 00262 class Mdst_klm_cluster; 00263 class Mdst_klong { 00264 public: 00265 Mdst_klong() {}; 00266 public: 00267 int id; 00268 float cos_x; 00269 float cos_y; 00270 float cos_z; 00271 Mdst_ecl * ecl; 00272 // Mdst_klm * klm; 00273 Mdst_klm_cluster * klmc; 00274 }; 00275 00276 class MdstKlongCol { 00277 public: 00278 static vector<Mdst_klong>* getMdstKlongCol(void); 00279 private: 00280 static vector<Mdst_klong>* s_col; 00281 }; 00282 00283 00284 // 00285 //*** Muon ID information. 00286 // 00287 class Mdst_klm_mu; 00288 class Mdst_muid { 00289 public: 00290 Mdst_muid() {}; 00291 public: 00292 int id; 00293 int quality; 00294 int muon; 00295 Mdst_klm_mu * klm; 00296 }; 00297 00298 class MdstMuidCol { 00299 public: 00300 static vector<Mdst_muid>* getMdstMuidCol(void); 00301 private: 00302 static vector<Mdst_muid>* s_col; 00303 }; 00304 00305 00306 // 00307 //*** TRK(=CDC plus SVD) information. 00308 // 00309 class Mdst_trk_fit; 00310 class Mdst_trk { 00311 public: 00312 Mdst_trk() {}; 00313 public: 00314 int id; 00315 Mdst_trk_fit * mhyp[5]; 00316 int quality; 00317 int quality_dedx; 00318 float dEdx; 00319 float dEdx_exp[5]; 00320 float sigma_dEdx[5]; 00321 float pid_e; 00322 float pid_mu; 00323 float pid_pi; 00324 float pid_K; 00325 float pid_p; 00326 }; 00327 00328 class MdstTrkCol { 00329 public: 00330 static vector<Mdst_trk>* getMdstTrkCol(void); 00331 private: 00332 static vector<Mdst_trk>* s_col; 00333 }; 00334 00335 00336 // 00337 //*** 00338 // 00339 class Mdst_trk_add { 00340 public: 00341 Mdst_trk_add() {}; 00342 public: 00343 int id; 00344 int stat[10]; 00345 float buff[10]; 00346 }; 00347 00348 class MdstTrkAddCol { 00349 public: 00350 static vector<Mdst_trk_add>* getMdstTrkAddCol(void); 00351 private: 00352 static vector<Mdst_trk_add>* s_col; 00353 }; 00354 00355 00356 // 00357 //*** Track fit results with multiple mass hypotheses. 00358 // 00359 class Mdst_trk_fit { 00360 public: 00361 Mdst_trk_fit() {}; 00362 public: 00363 int id; 00364 int quality; 00365 int hit_cdc[2]; 00366 int hit_svd; 00367 int nhits[5]; 00368 float mass; 00369 float pivot_x; 00370 float pivot_y; 00371 float pivot_z; 00372 float helix[5]; 00373 float error[15]; 00374 float chisq; 00375 int ndf; 00376 float first_x; 00377 float first_y; 00378 float first_z; 00379 float last_x; 00380 float last_y; 00381 float last_z; 00382 }; 00383 00384 class MdstTrkFitCol { 00385 public: 00386 static vector<Mdst_trk_fit>* getMdstTrkFitCol(void); 00387 private: 00388 static vector<Mdst_trk_fit>* s_col; 00389 }; 00390 00391 00392 // 00393 //*** ACC (Aerogel Cherenkov Counter) information. 00394 // 00395 class Mdst_acc { 00396 public: 00397 Mdst_acc() {}; 00398 public: 00399 int id; 00400 int quality; 00401 int fire; 00402 float photo_electron; 00403 float pid_e; 00404 float pid_mu; 00405 float pid_pi; 00406 float pid_K; 00407 float pid_p; 00408 }; 00409 00410 class MdstAccCol { 00411 public: 00412 static vector<Mdst_acc>* getMdstAccCol(void); 00413 private: 00414 static vector<Mdst_acc>* s_col; 00415 }; 00416 00417 00418 // 00419 //*** TOF (Time Of Flight counter) information. 00420 // 00421 class Mdst_tof { 00422 public: 00423 Mdst_tof() {}; 00424 public: 00425 int id; 00426 int quality; 00427 float path_length; 00428 float tof; 00429 float tof_exp[5]; 00430 float sigma_tof; 00431 float ndf[5]; 00432 float pid_e; 00433 float pid_mu; 00434 float pid_pi; 00435 float pid_K; 00436 float pid_p; 00437 float cl_e; 00438 float cl_mu; 00439 float cl_pi; 00440 float cl_K; 00441 float cl_p; 00442 }; 00443 00444 class MdstTofCol { 00445 public: 00446 static vector<Mdst_tof>* getMdstTofCol(void); 00447 private: 00448 static vector<Mdst_tof>* s_col; 00449 }; 00450 00451 00452 // 00453 //*** ECL (Electromagnetic CaLorimeter) information. 00454 // 00455 class Mdst_ecl { 00456 public: 00457 Mdst_ecl() {}; 00458 public: 00459 int id; 00460 int match; 00461 int quality; 00462 float energy; 00463 float phi; 00464 float theta; 00465 float r; 00466 float error[6]; 00467 int electron; 00468 }; 00469 00470 class MdstEclCol { 00471 public: 00472 static vector<Mdst_ecl>* getMdstEclCol(void); 00473 private: 00474 static vector<Mdst_ecl>* s_col; 00475 }; 00476 00477 00478 // 00479 //*** ECL (Electromagnetic Calorimeter) information add on. 00480 // 00481 class Mdst_ecl_cr; 00482 class Mdst_ecl_aux { 00483 public: 00484 Mdst_ecl_aux() {}; 00485 public: 00486 int id; 00487 float mass; 00488 float width; 00489 float e9oe25; 00490 float e9oe25unf; 00491 float seed; 00492 int cId; 00493 float property[10]; 00494 int nhits; 00495 Mdst_ecl_cr * cr; 00496 Mdst_trk * trk; 00497 }; 00498 00499 class MdstEclAuxCol { 00500 public: 00501 static vector<Mdst_ecl_aux>* getMdstEclAuxCol(void); 00502 private: 00503 static vector<Mdst_ecl_aux>* s_col; 00504 }; 00505 00506 00507 // 00508 //*** ECL (Electromagnetic Calorimeter) information- Connected 00509 //*** Region(super-cluster): not calibrated yet. 00510 // 00511 class Mdst_ecl_cr { 00512 public: 00513 Mdst_ecl_cr() {}; 00514 public: 00515 int id; 00516 int match; 00517 int quality; 00518 float energy; 00519 float phi; 00520 float theta; 00521 float r; 00522 float mass; 00523 float width; 00524 float property[10]; 00525 int nhits; 00526 int nshowers; 00527 }; 00528 00529 class MdstEclCrCol { 00530 public: 00531 static vector<Mdst_ecl_cr>* getMdstEclCrCol(void); 00532 private: 00533 static vector<Mdst_ecl_cr>* s_col; 00534 }; 00535 00536 00537 // 00538 //*** TRK to ECL match information. 00539 // 00540 class Mdst_ecl_trk { 00541 public: 00542 Mdst_ecl_trk() {}; 00543 public: 00544 int id; 00545 Mdst_ecl * ecl; 00546 Mdst_trk * trk; 00547 int type; 00548 int cId; 00549 float x[3]; 00550 float p[3]; 00551 float error[21]; 00552 }; 00553 00554 class MdstEclTrkCol { 00555 public: 00556 static vector<Mdst_ecl_trk>* getMdstEclTrkCol(void); 00557 private: 00558 static vector<Mdst_ecl_trk>* s_col; 00559 }; 00560 00561 00562 // 00563 //*** Cluster information of KLM. 00564 // 00565 class Mdst_klm_cluster { 00566 public: 00567 Mdst_klm_cluster() {}; 00568 public: 00569 int id; 00570 Mdst_trk * trk; 00571 Mdst_ecl * ecl; 00572 int quality; 00573 int layers; 00574 int first_layer; 00575 float phi; 00576 float theta; 00577 float error[3]; 00578 }; 00579 00580 class MdstKlmClusterCol { 00581 public: 00582 static vector<Mdst_klm_cluster>* getMdstKlmClusterCol(void); 00583 private: 00584 static vector<Mdst_klm_cluster>* s_col; 00585 }; 00586 00587 00588 // 00589 //*** Extended muon ID information related to KLM. 00590 // 00591 class Mdst_klm_mu { 00592 public: 00593 Mdst_klm_mu() {}; 00594 public: 00595 int id; 00596 float absp_len_pas; 00597 float absp_len_hit; 00598 int layer_pas; 00599 int layer_hit; 00600 }; 00601 00602 class MdstKlmMuCol { 00603 public: 00604 static vector<Mdst_klm_mu>* getMdstKlmMuCol(void); 00605 private: 00606 static vector<Mdst_klm_mu>* s_col; 00607 }; 00608 00609 00610 // 00611 //*** Muon ID Extended Information. 00612 // 00613 class Mdst_klm_mu_ex { 00614 public: 00615 Mdst_klm_mu_ex() {}; 00616 public: 00617 int id; 00618 Mdst_charged * pMDST_Charged; 00619 float Muon_likelihood; 00620 float Pion_likelihood; 00621 float Kaon_likelihood; 00622 float Miss_likelihood; 00623 float Junk_likelihood; 00624 int Outcome; 00625 float Chi_2; 00626 int N_hits; 00627 int N_strips; 00628 int Layer_trk_brl; 00629 int Layer_trk_end; 00630 int Layer_hit_brl; 00631 int Layer_hit_end; 00632 int N_layer_trk_brl; 00633 int N_layer_trk_end; 00634 int N_layer_hit_brl; 00635 int N_layer_hit_end; 00636 int Trk_pattern; 00637 int Hit_pattern; 00638 }; 00639 00640 class MdstKlmMuExCol { 00641 public: 00642 static vector<Mdst_klm_mu_ex>* getMdstKlmMuExCol(void); 00643 private: 00644 static vector<Mdst_klm_mu_ex>* s_col; 00645 }; 00646 00647 00648 // 00649 //*** EFC (Extreme Forward Calorimeter) information. 00650 // 00651 class Mdst_efc { 00652 public: 00653 Mdst_efc() {}; 00654 public: 00655 int id; 00656 int quality[2]; 00657 float energy; 00658 float phi; 00659 float theta; 00660 float error[6]; 00661 }; 00662 00663 class MdstEfcCol { 00664 public: 00665 static vector<Mdst_efc>* getMdstEfcCol(void); 00666 private: 00667 static vector<Mdst_efc>* s_col; 00668 }; 00669 00670 00671 // 00672 //*** Cross reference between track and hepevt 00673 // 00674 class Mdst_sim_trk { 00675 public: 00676 Mdst_sim_trk() {}; 00677 public: 00678 int id; 00679 Mdst_trk * trk; 00680 Gen_hepevt * hepevt; 00681 float relation[3]; 00682 }; 00683 00684 class MdstSimTrkCol { 00685 public: 00686 static vector<Mdst_sim_trk>* getMdstSimTrkCol(void); 00687 private: 00688 static vector<Mdst_sim_trk>* s_col; 00689 }; 00690 00691 00692 // 00693 //*** Cross reference between shower and hepevt 00694 // 00695 class Mdst_sim_ecl { 00696 public: 00697 Mdst_sim_ecl() {}; 00698 public: 00699 int id; 00700 Mdst_ecl * ecl; 00701 Gen_hepevt * hepevt; 00702 float relation[3]; 00703 }; 00704 00705 class MdstSimEclCol { 00706 public: 00707 static vector<Mdst_sim_ecl>* getMdstSimEclCol(void); 00708 private: 00709 static vector<Mdst_sim_ecl>* s_col; 00710 }; 00711 00712 00713 // 00714 //*** Random seeds 00715 // 00716 class Mdst_sim_rand { 00717 public: 00718 Mdst_sim_rand() {}; 00719 public: 00720 int id; 00721 int seed1; 00722 int seed2; 00723 int iseq; 00724 }; 00725 00726 class MdstSimRandCol { 00727 public: 00728 static vector<Mdst_sim_rand>* getMdstSimRandCol(void); 00729 private: 00730 static vector<Mdst_sim_rand>* s_col; 00731 }; 00732 00733 00734 #endif // _MdstTables_h_ 00735