/home/bes3soft/bes3soft/Boss/7.0.2/dist/7.0.2/Event/eformat/eformat-00-00-04/eformat/write/FullEventFragment.h

Go to the documentation of this file.
00001 //Dear emacs, this is -*- c++ -*-
00002 
00013 #ifndef EFORMAT_WRITE_FULLEVENTFRAGMENT_H
00014 #define EFORMAT_WRITE_FULLEVENTFRAGMENT_H
00015 
00016 #include "eformat/write/SubDetectorFragment.h"
00017 #include <cstring>
00018 
00019 namespace eformat {
00020 
00021   namespace write {
00022 
00026     class FullEventFragment {
00027 
00028     public:
00029 
00044       FullEventFragment (uint32_t source_id,
00045                          uint32_t global_id, uint32_t run_no,
00046                          uint32_t lvl1_id, uint32_t lvl1_type,
00047                          uint32_t lvl2_info, const uint32_t* ef_info);
00048 
00064       FullEventFragment (uint32_t source_id, uint32_t use_time,
00065                          uint32_t global_id, uint32_t run_no,
00066                          uint32_t lvl1_id, uint32_t lvl1_type,
00067                          uint32_t lvl2_info, const uint32_t* ef_info);
00068 
00075       FullEventFragment (uint32_t* fe);
00076 
00087       FullEventFragment (eformat::write::node_t* fe);
00088 
00093       FullEventFragment ();
00094 
00106       FullEventFragment (const FullEventFragment& other);
00107 
00111       virtual ~FullEventFragment () {}
00112 
00124       FullEventFragment& operator= (const FullEventFragment& other);
00125 
00134       void status (uint32_t n, const uint32_t* status);
00135 
00139       inline uint32_t nstatus (void) const { return m_node[0].base[5]; }
00140 
00144       inline const uint32_t* status (void) const { return m_node[1].base; }
00145 
00151       inline void minor_version (uint16_t v) 
00152       { m_node[0].base[3] = eformat::DEFAULT_VERSION | v; }
00153 
00157       inline uint16_t minor_version (void) const 
00158       { return 0xffff & m_node[0].base[3]; }
00159 
00165       inline void source_id (uint32_t s) 
00166       { m_node[0].base[4] = s; }
00167 
00171       inline uint32_t source_id (void) const 
00172       { return m_node[0].base[4]; }
00173 
00179       inline void time (uint32_t s) 
00180       { m_node[2].base[1] = s; }
00181 
00185       inline uint32_t time (void) const 
00186       { return m_node[2].base[1]; }
00187 
00193       inline void global_id (uint32_t s) 
00194       { m_node[2].base[2] = s; }
00195 
00199       inline uint32_t global_id (void) const
00200       { return m_node[2].base[2]; }
00201 
00207       inline void run_no (uint32_t s) 
00208       { m_node[2].base[3] = s; }
00209 
00213       inline uint32_t run_no (void) const 
00214       { return m_node[2].base[3]; }
00215 
00221       inline void lvl1_id (uint32_t s) 
00222       { m_node[2].base[4] = s; }
00223 
00227       inline uint32_t lvl1_id (void) const 
00228       { return m_node[2].base[4]; }
00229 
00235       inline void lvl1_trigger_type (uint32_t s) 
00236       { m_node[2].base[5] = s; }
00237 
00241       inline uint32_t lvl1_trigger_type (void) const 
00242       { return m_node[2].base[5]; }
00243 
00249       inline void lvl2_trigger_info (uint32_t s) 
00250       { m_node[2].base[6] = s; }
00251 
00255       inline uint32_t lvl2_trigger_info (void) const
00256       { return m_node[2].base[6]; }
00257 
00263       inline void event_filter_info (const uint32_t* s)
00264       { memcpy(&m_node[2].base[7], s, 4*sizeof(uint32_t)); }
00265 
00269       inline const uint32_t* event_filter_info (void) const
00270       { return &m_node[2].base[7]; }
00271 
00277       inline uint32_t meta_size_word (void) const
00278       { return m_node[0].base[2]; }
00279 
00283       inline uint32_t size_word (void) const
00284       { return m_node[0].base[1]; }
00285       
00299       void append (eformat::write::SubDetectorFragment* sd);
00300 
00306       inline const SubDetectorFragment* first_child (void) const 
00307       { return m_child; }
00308 
00316       inline void size_change (uint32_t o, uint32_t n)
00317       { m_node[0].base[1] -= o; m_node[0].base[1] += n; }
00318 
00328       uint32_t page_count (void) const;
00329 
00335       const eformat::write::node_t* bind (void);
00336 
00337       const eformat::write::node_t* rebind (void){return m_node;};
00338     private: //representation
00339 
00340       uint32_t m_header[17]; 
00341       eformat::write::node_t m_node[3]; 
00342       eformat::write::SubDetectorFragment* m_child; 
00343       eformat::write::SubDetectorFragment* m_last; 
00344       eformat::write::node_t m_extra; 
00345       uint32_t m_extra_count; 
00346 
00347     };
00348 
00349   }
00350   
00351 }
00352 
00353 #endif /* EFORMAT_WRITE_FULLEVENTFRAGMENT_H */

Generated on Tue Nov 29 22:58:24 2016 for BOSS_7.0.2 by  doxygen 1.4.7