libpniio
Public Member Functions | Private Member Functions | Private Attributes
pni::io::cbf_reader Class Reference

base clase for CBF readers More...

#include <cbf_reader.hpp>

Inheritance diagram for pni::io::cbf_reader:
Inheritance graph
[legend]
Collaboration diagram for pni::io::cbf_reader:
Collaboration graph
[legend]

Public Member Functions

 cbf_reader ()
 default constructor More...
 
 cbf_reader (const pni::core::string &fname)
 construct reader object More...
 
virtual ~cbf_reader ()
 destructor More...
 
 cbf_reader (const cbf_reader &r)=delete
 the copy constructor is deleted More...
 
cbf_readeroperator= (cbf_reader &&r)
 move assignment More...
 
cbf_readeroperator= (const cbf_reader &r)=delete
 the copy assignment operator is deleted More...
 
virtual void close ()
 close the file More...
 
virtual void open ()
 open file More...
 
virtual size_t nimages () const
 get number of images More...
 
virtual image_info info (size_t i) const
 get image info More...
 
template<typename CTYPE >
CTYPE image (size_t i, size_t c=0)
 read image More...
 
template<typename CTYPE >
void image (CTYPE &array, size_t i, size_t c=0)
 read data from detector file More...
 
- Public Member Functions inherited from pni::io::image_reader
virtual ~image_reader ()
 destructor More...
 
template<typename ATYPE >
ATYPE image (size_t, size_t)
 method to read a single channel More...
 
template<typename ATYPE >
void image (ATYPE &, size_t, size_t)
 method to read a single image channel More...
 
- Public Member Functions inherited from pni::io::data_reader
virtual ~data_reader ()
 destructor More...
 
pni::core::string filename () const
 get filename More...
 
void filename (const pni::core::string &fname)
 set filename More...
 

Private Member Functions

void _parse_file ()
 parse the file More...
 

Private Attributes

cbf::vendor_id _detector_vendor
 string holding the detector vendor ID More...
 
std::vector< image_info_image_info
 info structure for data More...
 
std::streampos _data_offset
 store data offset More...
 
cbf::compression_id _compression_type
 compression type More...
 

Additional Inherited Members

- Protected Member Functions inherited from pni::io::image_reader
 image_reader ()
 default constructor More...
 
 image_reader (const image_reader &)=delete
 copy constructor is deleted More...
 
 image_reader (image_reader &&r)
 move constructor More...
 
 image_reader (const pni::core::string &fname, bool binary=false)
 standard constructor taking the filename as string object More...
 
image_readeroperator= (const image_reader &r)=delete
 copy assignment is deleted More...
 
image_readeroperator= (image_reader &&r)
 move assignment operator More...
 
- Protected Member Functions inherited from pni::io::data_reader
std::ifstream & _get_stream () const
 get stream More...
 
void _set_binary ()
 set binary mode More...
 
 data_reader ()
 default constructor More...
 
 data_reader (const pni::core::string &fname, bool binary=false)
 standard constructor More...
 
 data_reader (data_reader &&r)
 move constructor More...
 
 data_reader (const data_reader &r)=delete
 copy constructor is deleted More...
 
data_readeroperator= (const data_reader &r)=delete
 copy assigment is deleted More...
 
data_readeroperator= (data_reader &&r)
 move assignment More...
 

Detailed Description

CBFReader is the base class for all readers of data stored in binary CIF format. Although CBF is standardized by the ICUR the guys from Dectris (the vendor of the Pilatus detector) use a kind of dialect which must be treated in a slightly different way. The field _header_convention in the class indicates whether or not the header is in standard CBF format or in the Dectris dialect.

Reading a CBF file is a two step process:

Constructor & Destructor Documentation

pni::io::cbf_reader::cbf_reader ( )
pni::io::cbf_reader::cbf_reader ( const pni::core::string &  fname)

The name of the CBFFile is passed as a String object. During instantiation of class the file is parsed. Throws an exception if the flavor of the CBF file cannot be deduced from the header.

Exceptions
file_errorif the CBF flavor cannot be deduced
Parameters
fnamename of the file
pni::io::cbf_reader::~cbf_reader ( )
virtual
pni::io::cbf_reader::cbf_reader ( const cbf_reader r)
delete

Member Function Documentation

void pni::io::cbf_reader::_parse_file ( )
private

Parse the file and setup member variables of the class.

virtual void pni::io::cbf_reader::close ( )
inlinevirtual

Reimplemented from pni::io::data_reader.

template<typename CTYPE >
CTYPE pni::io::cbf_reader::image ( size_t  i,
size_t  c = 0 
)
Template Parameters
CTYPEcontainer type for storing data
Exceptions
memory_allocation_errorif container allocation failes
file_errorin case of IO errors
Parameters
iimage number to read
cchannel to read (default = 0)
Returns
instance of CTYPE with image data
template<typename CTYPE >
void pni::io::cbf_reader::image ( CTYPE &  array,
size_t  i,
size_t  c = 0 
)

Reads a single image from a detector file and stores it in an container of type CTYPE. Ths me

Exceptions
file_errorif case of IO errors
Template Parameters
CTYPEcontainer type holding the image data
SizeMissmatchErrorif container and image size do not match
Parameters
arrayinstance of CTYPE where data will be stored
iimage number
cchannel number
virtual image_info pni::io::cbf_reader::info ( size_t  i) const
inlinevirtual

Return an instance of ImageInfo with the information of image i in the image stack. This is a virtual function which must be implemented by the concrete reader classes.

Parameters
iindex of the image
Returns
vector with ImageInfo objects

Implements pni::io::image_reader.

virtual size_t pni::io::cbf_reader::nimages ( ) const
inlinevirtual

Returns the number of images stored in the file. This methods reflects the fact that many image formats can hold more than one image in a single file (CBF, TIFF). Although this feature is hardly used for experiments it should be taken into account. This is a virtual function which must be implemented by the concrete reader classes.

Returns
number of images

Implements pni::io::image_reader.

virtual void pni::io::cbf_reader::open ( )
inlinevirtual

Opens the file given by filename.

Exceptions
FileErrorin case of errors

Reimplemented from pni::io::data_reader.

cbf_reader & pni::io::cbf_reader::operator= ( cbf_reader &&  r)
cbf_reader& pni::io::cbf_reader::operator= ( const cbf_reader r)
delete

Field Documentation

cbf::compression_id pni::io::cbf_reader::_compression_type
private
std::streampos pni::io::cbf_reader::_data_offset
private
cbf::vendor_id pni::io::cbf_reader::_detector_vendor
private
std::vector<image_info> pni::io::cbf_reader::_image_info
private

The documentation for this class was generated from the following files: