File indexing completed on 2025-08-06 08:19:19
0001 #include "EicEventHeader.h"
0002
0003 #include <phool/PHObject.h>
0004
0005 #include <TSystem.h>
0006
0007 #include <cassert>
0008 #include <cstdlib>
0009 #include <limits>
0010
0011 void EicEventHeader::CopyFrom(const PHObject *phobj)
0012 {
0013 const EicEventHeader *evthead = dynamic_cast<const EicEventHeader *>(phobj);
0014 assert(evthead);
0015
0016
0017
0018 for (unsigned char ic = 0; ic < std::numeric_limits<unsigned char>::max(); ic++)
0019 {
0020 PROPERTY prop_id = static_cast<EicEventHeader::PROPERTY>(ic);
0021 if (evthead->has_property(prop_id))
0022 {
0023 set_property_nocheck(prop_id, evthead->get_property_nocheck(prop_id));
0024 }
0025 }
0026 }
0027
0028 void EicEventHeader::Reset()
0029 {
0030 std::cout << "Reset not implemented by daughter class" << std::endl;
0031 return;
0032 }
0033
0034 std::pair<const std::string, EicEventHeader::PROPERTY_TYPE>
0035 EicEventHeader::get_property_info(const PROPERTY prop_id)
0036 {
0037 switch (prop_id)
0038 {
0039 case prop_eventgen:
0040 return std::make_pair("Event Generator", EicEventHeader::type_int);
0041 case prop_milou_weight:
0042 return std::make_pair("Milou weight", EicEventHeader::type_float);
0043 case prop_milou_truex:
0044 return std::make_pair("Milou True X", EicEventHeader::type_float);
0045 case prop_milou_trueq2:
0046 return std::make_pair("Milou True Q2", EicEventHeader::type_float);
0047 case prop_demp_weight:
0048 return std::make_pair("DEMP weight", EicEventHeader::type_float);
0049
0050 default:
0051 std::cout << "EicEventHeader::get_property_info - Fatal Error - unknown index " << prop_id << std::endl;
0052 gSystem->Exit(1);
0053 exit(1);
0054 }
0055 }
0056
0057 bool EicEventHeader::check_property(const PROPERTY prop_id, const PROPERTY_TYPE prop_type)
0058 {
0059 std::pair<const std::string, PROPERTY_TYPE> property_info = get_property_info(prop_id);
0060 if (property_info.second != prop_type)
0061 {
0062 return false;
0063 }
0064 return true;
0065 }
0066
0067 std::string
0068 EicEventHeader::get_property_type(const PROPERTY_TYPE prop_type)
0069 {
0070 switch (prop_type)
0071 {
0072 case type_int:
0073 return "int";
0074 case type_uint:
0075 return "unsigned int";
0076 case type_float:
0077 return "float";
0078 default:
0079 return "unkown";
0080 }
0081 }
0082
0083 void EicEventHeader::identify(std::ostream &os) const
0084 {
0085 os << "Class " << this->ClassName() << std::endl;
0086 os << "Event Generator: ";
0087 switch (get_eventgenerator_type())
0088 {
0089 case EvtGen::Milou:
0090 os << "Milou";
0091 break;
0092 case EvtGen::DEMP:
0093 os << "DEMP";
0094 break;
0095 default:
0096 os << "Unknown";
0097 break;
0098 }
0099 os << std::endl;
0100 }