/search.css" rel="stylesheet" type="text/css"/> /search.js">
| Classes | Job Modules | Data Objects | Services | Algorithms | Tools | Packages | Directories | Tracs |

In This Package:

CommonIO.h
Go to the documentation of this file.
00001 #ifndef HEPMC_COMMON_IO_H
00002 #define HEPMC_COMMON_IO_H
00003 // ----------------------------------------------------------------------
00004 //
00005 // CommonIO.h
00006 // Author:  Lynn Garren
00007 //
00008 //  Allowed keys used at the beginning and end of HepMC data dumps
00009 //
00010 // ----------------------------------------------------------------------
00011 
00012 #include <fstream>
00013 #include <string>
00014 
00015 #include "HepMC/GenEvent.h"
00016 #include "HepMC/TempParticleMap.h"
00017 #include "HepMC/ParticleDataTable.h"
00018 
00019 namespace HepMC {
00020 
00022 enum known_io { gen=1, ascii, extascii, ascii_pdt, extascii_pdt };
00023 
00024 class CommonIO {
00025 
00026 public:
00027 
00028   CommonIO();
00029   ~CommonIO() {;}
00030 
00031   // input keys - IO_GenEvent is strongly recommended
00032   std::string IO_GenEvent_Key()          const { return m_io_genevent_start; }
00033   std::string IO_GenEvent_End()          const { return m_io_genevent_end; }
00034   // IO_Ascii is deprecated, but we want to be able to read these files
00035   std::string IO_Ascii_Key()             const { return m_io_ascii_start; }
00036   std::string IO_Ascii_End()             const { return m_io_ascii_end; }
00037   // IO_ExtendedAscii is deprecated, but we want to be able to read these files
00038   std::string IO_ExtendedAscii_Key()     const { return m_io_extendedascii_start; }
00039   std::string IO_ExtendedAscii_End()     const { return m_io_extendedascii_end; }
00041   int io_type() const { return m_io_type; }
00042 
00043   // write keys
00044   void write_IO_GenEvent_Key( std::ostream& );
00045   void write_IO_GenEvent_End( std::ostream& );
00046   // write keys for deprecated IO methods
00047   void write_IO_Ascii_Key( std::ostream& );
00048   void write_IO_Ascii_End( std::ostream& );
00049   void write_IO_ExtendedAscii_Key( std::ostream& );
00050   void write_IO_ExtendedAscii_End( std::ostream& );
00051   // write keys for deprecated particle data IO methods
00052   void write_IO_Ascii_PDT_Key( std::ostream& );
00053   void write_IO_Ascii_PDT_End( std::ostream& );
00054   void write_IO_ExtendedAscii_PDT_Key( std::ostream& );
00055   void write_IO_ExtendedAscii_PDT_End( std::ostream& );
00056 
00057   // methods to read input
00058 
00060   int find_file_type( std::istream& );
00061 
00063   int find_end_key( std::istream& );
00064 
00065   bool read_io_ascii( std::istream* is, GenEvent* evt );
00066 
00067   bool read_io_extendedascii( std::istream* is, GenEvent* evt );
00068 
00069   bool read_io_genevent( std::istream* is, GenEvent* evt );
00070 
00073   bool read_io_particle_data_table( std::istream*, ParticleDataTable* );
00074  
00075 protected:
00076   // methods used by the read_io* methods
00077   HeavyIon*    read_heavy_ion( std::istream* );
00078   PdfInfo*     read_pdf_info( std::istream* );
00079   GenParticle* read_particle( std::istream*, TempParticleMap&  );
00080   GenVertex*   read_vertex( std::istream*, TempParticleMap&  );
00083   ParticleData* read_particle_data( std::istream*, ParticleDataTable* );
00084 
00085 private:
00086   std::string m_io_genevent_start;
00087   std::string m_io_ascii_start;
00088   std::string m_io_extendedascii_start;
00089   std::string m_io_genevent_end;
00090   std::string m_io_ascii_end;
00091   std::string m_io_extendedascii_end;
00092   // particle data method keys
00093   std::string m_io_ascii_pdt_start;
00094   std::string m_io_extendedascii_pdt_start;
00095   std::string m_io_ascii_pdt_end;
00096   std::string m_io_extendedascii_pdt_end;
00097   int         m_io_type;
00098   
00099 
00100 };
00101 
00102 // inline methods
00103 
00104 inline CommonIO::CommonIO()
00105 : m_io_genevent_start("HepMC::IO_GenEvent-START_EVENT_LISTING"),
00106   m_io_ascii_start("HepMC::IO_Ascii-START_EVENT_LISTING"),
00107   m_io_extendedascii_start("HepMC::IO_ExtendedAscii-START_EVENT_LISTING"),
00108   m_io_genevent_end("HepMC::IO_GenEvent-END_EVENT_LISTING"),
00109   m_io_ascii_end("HepMC::IO_Ascii-END_EVENT_LISTING"),
00110   m_io_extendedascii_end("HepMC::IO_ExtendedAscii-END_EVENT_LISTING"),
00111   m_io_ascii_pdt_start("HepMC::IO_Ascii-START_PARTICLE_DATA"),
00112   m_io_extendedascii_pdt_start("HepMC::IO_ExtendedAscii-START_PARTICLE_DATA"),
00113   m_io_ascii_pdt_end("HepMC::IO_Ascii-END_PARTICLE_DATA"),
00114   m_io_extendedascii_pdt_end("HepMC::IO_ExtendedAscii-END_PARTICLE_DATA"),
00115   m_io_type(0)
00116 {}
00117 
00118 inline void CommonIO::write_IO_GenEvent_Key( std::ostream& os )
00119 { os << m_io_genevent_start << "\n"; }
00120 
00121 inline void CommonIO::write_IO_GenEvent_End( std::ostream& os )
00122 { os << m_io_genevent_end << "\n"; }
00123 
00124 inline void CommonIO::write_IO_Ascii_Key( std::ostream& os )
00125 { os << m_io_ascii_start << "\n"; }
00126 
00127 inline void CommonIO::write_IO_Ascii_End( std::ostream& os )
00128 { os << m_io_ascii_end << "\n"; }
00129 
00130 inline void CommonIO::write_IO_ExtendedAscii_Key( std::ostream& os )
00131 { os << m_io_extendedascii_start << "\n"; }
00132 
00133 inline void CommonIO::write_IO_ExtendedAscii_End( std::ostream& os )
00134 { os << m_io_extendedascii_end << "\n"; }
00135 
00136 inline void CommonIO::write_IO_Ascii_PDT_Key( std::ostream& os )
00137 { os << m_io_ascii_pdt_start << "\n"; }
00138 
00139 inline void CommonIO::write_IO_Ascii_PDT_End( std::ostream& os )
00140 { os << m_io_ascii_pdt_end << "\n"; }
00141 
00142 inline void CommonIO::write_IO_ExtendedAscii_PDT_Key( std::ostream& os )
00143 { os << m_io_extendedascii_pdt_start << "\n"; }
00144 
00145 inline void CommonIO::write_IO_ExtendedAscii_PDT_End( std::ostream& os )
00146 { os << m_io_extendedascii_pdt_end << "\n"; }
00147 
00148 
00149 }
00150 
00151 #endif // HEPMC_COMMON_IO_H
| Classes | Job Modules | Data Objects | Services | Algorithms | Tools | Packages | Directories | Tracs |

Generated on Fri May 16 2014 09:49:36 for HepMC by doxygen 1.7.4