|
Gaudi Framework, version v23r2 |
| Home | Generated: Thu Jun 28 2012 |
00001 #ifndef __PARTPROPSVC_H__ 00002 #define __PARTPROPSVC_H__ 00003 00004 #include "GaudiKernel/Service.h" 00005 #include "GaudiKernel/IPartPropSvc.h" 00006 #include "HepPDT/ParticleDataTable.hh" 00007 #include "HepPDT/TableBuilder.hh" 00008 00009 #include <vector> 00010 #include <string> 00011 #include <utility> 00012 #include <iostream> 00013 00014 // Forward declarations 00015 template <class TYPE> class SvcFactory; 00016 00017 //------------------------------------------------------------------ 00018 // 00019 // ClassName: PartPropSvc 00020 // 00021 // Description: This service provides access to particle properties. 00022 // Uses HepPDT as the underlying layer 00023 // 00024 // Author: Charles Leggett 00025 // 00026 // Date: 3-8-2001 00027 // 00028 //------------------------------------------------------------------ 00029 00030 class PartPropSvc: public extends1<Service, IPartPropSvc> { 00031 00032 public: 00033 00034 virtual StatusCode initialize(); 00035 virtual StatusCode reinitialize(); 00036 virtual StatusCode finalize(); 00037 00038 // The table 00039 HepPDT::ParticleDataTable *PDT(); 00040 00041 void setUnknownParticleHandler( HepPDT::ProcessUnknownID*, 00042 const std::string&); 00043 protected: 00044 00045 PartPropSvc( const std::string& name, ISvcLocator* svc ); 00046 00047 // Destructor. 00048 virtual ~PartPropSvc(); 00049 00050 private: 00051 00052 // Allow SvcFactory to instantiate the service. 00053 friend class SvcFactory<PartPropSvc>; 00054 00055 StatusCode createTable(); 00056 std::vector< std::pair<std::string, 00057 bool(*) (std::istream&,HepPDT::TableBuilder&)> > m_inputs; 00058 00059 StringProperty m_pdtFiles; 00060 HepPDT::ProcessUnknownID* m_upid; 00061 std::string m_upid_name; 00062 00063 HepPDT::ParticleDataTable *m_pdt; 00064 00065 bool (*parseTableType(std::string&))(std::istream&, HepPDT::TableBuilder&); 00066 00067 mutable MsgStream m_log; 00068 00069 bool m_upid_local; 00070 00071 00072 }; 00073 00074 #endif