00001 #include "Identifier/HltID.h"
00002 #include "HltEvent/HltInf.h"
00003 #include <iostream>
00004
00005 HltInf::HltInf(const unsigned int type, const unsigned int alg,
00006 const unsigned int cri, const unsigned int ver, const float etot):
00007 DstHltInf(type,alg,cri,ver,etot),
00008 m_mdcData(0),m_tofData(0),m_emcData(0),m_mucData(0),m_conData(0){
00009 }
00010
00011 HltInf::HltInf():
00012 DstHltInf(),
00013 m_mdcData(0),m_tofData(0),m_emcData(0),m_mucData(0),m_conData(0){
00014 }
00015
00016 HltInf::~HltInf(){
00017 }
00018
00019 HltInf::HltInf(const DstHltInf& aHlt):
00020 DstHltInf(aHlt),
00021 m_mdcData(0),m_tofData(0),m_emcData(0),m_mucData(0),m_conData(0){
00022 }
00023
00024 HltInf& HltInf::operator=(const DstHltInf& aHlt){
00025 DstHltInf::operator=(aHlt);
00026 return *this;
00027 }
00028
00029 bool HltInf::setData(const Identifier& id, uint32_t data){
00030
00031 vector<uint32_t>::iterator iter;
00032 uint32_t size=0;
00033
00034 if(HltID::is_mdc_inf(id)) {
00035 iter = m_mdcData.begin();
00036 size = m_mdcData.size();
00037 }
00038 else if(HltID::is_tof_inf(id)) {
00039 iter = m_tofData.begin();
00040 size = m_tofData.size();
00041 }
00042 else if(HltID::is_emc_inf(id)) {
00043 iter = m_emcData.begin();
00044 size = m_emcData.size();
00045 }
00046 else if(HltID::is_muc_inf(id)) {
00047 iter = m_mucData.begin();
00048 size = m_mucData.size();
00049 }
00050 else if(HltID::is_con_inf(id)) {
00051 iter = m_conData.begin();
00052 size = m_conData.size();
00053 }
00054 else return false;
00055
00056 uint32_t sub=HltID::id_sub(id);
00057
00058 if(sub<size) {
00059 (*(iter+sub))=data;
00060 return true;
00061 }
00062 else {
00063 return false;
00064 }
00065 }
00066
00067 vector<uint32_t>& HltInf::getDataVec(const Identifier& id) {
00068 if(HltID::is_mdc_inf(id)) return m_mdcData;
00069 else if(HltID::is_tof_inf(id)) return m_tofData;
00070 else if(HltID::is_emc_inf(id)) return m_emcData;
00071 else if(HltID::is_muc_inf(id)) return m_mucData;
00072 else if(HltID::is_con_inf(id)) return m_conData;
00073 else return m_conData;
00074 }
00075
00076 vector<uint32_t>& HltInf::getDataVec(const uint32_t part) {
00077 return getDataVec(HltID::data_type_id(part));
00078 }
00079
00080 bool HltInf::getData(const Identifier& id, uint32_t* address) {
00081
00082 vector<uint32_t>::iterator iter;
00083 uint32_t size=0;
00084
00085 if(HltID::is_mdc_inf(id)) {
00086 iter = m_mdcData.begin();
00087 size = m_mdcData.size();
00088 }
00089 else if(HltID::is_tof_inf(id)) {
00090 iter = m_tofData.begin();
00091 size = m_tofData.size();
00092 }
00093 else if(HltID::is_emc_inf(id)) {
00094 iter = m_emcData.begin();
00095 size = m_emcData.size();
00096 }
00097 else if(HltID::is_muc_inf(id)) {
00098 iter = m_mucData.begin();
00099 size = m_mucData.size();
00100 }
00101 else if(HltID::is_con_inf(id)) {
00102 iter = m_conData.begin();
00103 size = m_conData.size();
00104 }
00105 else return false;
00106
00107 uint32_t sub=HltID::id_sub(id);
00108
00109 if(sub<size) {
00110 *address = *(iter+sub);
00111 return true;
00112 }
00113 else {
00114 return false;
00115 }
00116 }
00117
00118 void HltInf::print() const{
00119 std::cout << *this;
00120 std::cout << "MDC data:" << dec << m_mdcData.size() << std::endl;
00121 for(uint32_t i=0;i<m_mdcData.size();i++){
00122 std::cout << " #"<<i<<"# ";
00123 std::cout << *((int*)&m_mdcData[i]) << "(" << *((float*)&m_mdcData[i]) << ")";
00124 if(i==m_mdcData.size()-1) std::cout << std::endl;
00125 }
00126 std::cout << "TOF data:" << m_tofData.size() << std::endl;
00127 for(uint32_t i=0;i<m_tofData.size();i++){
00128 std::cout << " #"<<i<<"# ";
00129 std::cout << *((int*)&m_tofData[i]) << "(" << *((float*)&m_tofData[i]) << ")";
00130 if(i==m_tofData.size()-1) std::cout << std::endl;
00131 }
00132 std::cout << "EMC data:" << m_emcData.size() << std::endl;
00133 for(uint32_t i=0;i<m_emcData.size();i++){
00134 std::cout << " #"<<i<<"# ";
00135 std::cout << *((int*)&m_emcData[i]) << "(" << *((float*)&m_emcData[i]) << ")";
00136 if(i==m_emcData.size()-1) std::cout << std::endl;
00137 }
00138 std::cout << "MUC data:" << m_mucData.size() << std::endl;
00139 for(uint32_t i=0;i<m_mucData.size();i++){
00140 std::cout << " #"<<i<<"# ";
00141 std::cout << *((int*)&m_mucData[i]) << "(" << *((float*)&m_mucData[i]) << ")";
00142 if(i==m_mucData.size()-1) std::cout << std::endl;
00143 }
00144 std::cout << "CON data:" << m_conData.size() << std::endl;
00145 for(uint32_t i=0;i<m_conData.size();i++){
00146 std::cout << " #"<<i<<"# ";
00147 std::cout << *((int*)&m_conData[i]);
00148 if(i==m_conData.size()-1) std::cout << std::endl;
00149 }
00150 return;
00151 }
00152
00153 ostream& operator<<(ostream & os, const HltInf& aHlt){
00154 os<<"-----HltInf-----:"<<endl;
00155 os<<"EventType: "<<hex<<aHlt.getEventType()<<endl
00156 <<"AlgProcess: "<<aHlt.getAlgProcess()<<endl
00157 <<"CriteriaTab:"<<aHlt.getCriteriaTable()<<endl
00158 <<"EFVersion: "<<aHlt.getVersion()<<endl
00159 <<"TotalEnergy:"<<aHlt.getTotalEnergy()<<endl;
00160 return os;
00161 }