Back to home page

sPhenix code displayed by LXR

 
 

    


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   // This is a generic copy of ALL properties an eic event header has
0016   // do not add explicit copies, they will be added to
0017   // the new eic event header with their default value increasing memory use
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 }