BmnRoot
Loading...
Searching...
No Matches
StorableMicroslice.h
Go to the documentation of this file.
1// Copyright 2015 Jan de Cuveland <cmail@cuveland.de>
4#pragma once
5
6#include "ArchiveDescriptor.h"
7#include "Microslice.h"
9
10#include <boost/serialization/access.hpp>
11#include <boost/serialization/vector.hpp>
12#include <fstream>
13#include <vector>
14// Note: <fstream> has to precede boost/serialization includes for non-obvious
15// reasons to avoid segfault similar to
16// http://lists.debian.org/debian-hppa/2009/11/msg00069.html
17
18namespace fles
19{
20
21template<class Base, class Derived, ArchiveType archive_type>
22class InputArchive;
23template<class Base, class Derived, ArchiveType archive_type>
24class InputArchiveLoop;
25
31class StorableMicroslice : public Microslice
32{
33 public:
37 void operator=(const StorableMicroslice&) = delete;
40
43
51 StorableMicroslice(MicrosliceDescriptor d, const uint8_t* content_p);
52
67 StorableMicroslice(MicrosliceDescriptor d, std::vector<uint8_t> content_v);
68
71
73 uint8_t* content() { return content_ptr_; }
74
76
77 private:
80 friend class InputArchiveLoop<Microslice, StorableMicroslice, ArchiveType::MicrosliceArchive>;
81
83
84 template<class Archive>
85 void serialize(Archive& ar, const unsigned int /* version */)
86 {
87 ar & desc_;
88 ar & content_;
89
90 init_pointers();
91 }
92
93 void init_pointers()
94 {
95 desc_ptr_ = &desc_;
96 content_ptr_ = content_.data();
97 }
98
99 MicrosliceDescriptor desc_;
100 std::vector<uint8_t> content_;
101};
102
103} // namespace fles
const Float_t d
Z-ccordinate of the first GEM-station.
Definition BmnMwpcHit.cxx:7
The Microslice class provides read access to the data of a microslice.
Definition Microslice.h:24
uint8_t * content_ptr_
Pointer to the microslice data content.
Definition Microslice.h:54
MicrosliceDescriptor * desc_ptr_
Pointer to the microslice descriptor.
Definition Microslice.h:51
The StorableMicroslice class contains the data of a single microslice.
StorableMicroslice(const StorableMicroslice &ms)
Copy constructor.
MicrosliceDescriptor & desc()
Retrieve non-const microslice descriptor reference.
friend class boost::serialization::access
void operator=(const StorableMicroslice &)=delete
Delete assignment operator (not implemented).
StorableMicroslice(StorableMicroslice &&ms) noexcept
Move constructor.
uint8_t * content()
Retrieve a non-const pointer to the microslice data.
StorableMicroslice(MicrosliceDescriptor d, std::vector< uint8_t > content_v)
Construct by copying from given data vector.
StorableMicroslice(MicrosliceDescriptor d, const uint8_t *content_p)
Construct by copying from given data array.
StorableMicroslice(const Microslice &ms)
Construct by copying from given Microslice object.
Defines the fles::ArchiveDescriptor class.
Defines the fles::MicrosliceDescriptor struct and corresponding enums.
Defines the fles::Microslice abstract base class.
Main FLES namespace.
ArchiveType
The archive type enum (e.g., timeslice, microslice)
Microslice descriptor struct.