STIR 6.4.0
PENNListmodeInputFileFormat.h
1/*
2 * Copyright (C) 2020-2022 University of Pennsylvania
3 This file is part of STIR.
4
5 SPDX-License-Identifier: Apache-2.0
6
7 See STIR/LICENSE.txt for details
8*/
9#ifndef __stir_IO_PENNListmodeInputFileFormat_h__
10#define __stir_IO_PENNListmodeInputFileFormat_h__
11
14#include "stir/error.h"
15#include "stir/utilities.h"
16#include <string>
17
18START_NAMESPACE_STIR
19
24class PENNListmodeInputFileFormat : public InputFileFormat<ListModeData>
25{
26public:
27 virtual const std::string get_name() const { return "PENN"; }
28
29protected:
30 virtual bool actual_can_read(const FileSignature& signature, std::istream& input) const
31 {
32 return this->is_penn_signature(signature.get_signature());
33 }
34
35 bool is_penn_signature(const char* const signature) const
36 {
37 // checking for txt file
38 const char* pos_of_colon = strchr(signature, ':');
39 if (pos_of_colon == NULL)
40 return false;
41 std::string keyword(signature, pos_of_colon - signature);
42 return (standardise_interfile_keyword(keyword) == standardise_interfile_keyword("PENN header"));
43 }
44
45public:
46 virtual unique_ptr<data_type> read_from_file(std::istream& input) const
47 {
48 error("read_from_file for PENN listmode data with istream not implemented %s:%s. Sorry", __FILE__, __LINE__);
49 return unique_ptr<data_type>();
50 }
51
52 virtual unique_ptr<data_type> read_from_file(const std::string& filename) const
53 {
54 return unique_ptr<data_type>(new CListModeDataPENN(filename));
55 }
56};
57
58END_NAMESPACE_STIR
59
60#endif
Declaration of class stir::CListModeDataPENN.
Declaration of class stir::InputFileFormat.
Base class for listmode data for PENNPET Explorer scanner.
Definition CListModeDataPENN.h:28
A class to read/store the file signature.
Definition FileSignature.h:35
const char * get_signature() const
get access to the signature
Definition FileSignature.h:52
Base-class for file-formats for reading.
Definition InputFileFormat.h:40
Base class for PENN listmode file format support.
Definition PENNListmodeInputFileFormat.h:25
virtual unique_ptr< data_type > read_from_file(std::istream &input) const
read data from a stream
Definition PENNListmodeInputFileFormat.h:46
virtual unique_ptr< data_type > read_from_file(const std::string &filename) const
read data from a filename
Definition PENNListmodeInputFileFormat.h:52
Declaration of stir::error()
void error(const char *const s,...)
Print error with format string a la printf and throw exception.
Definition error.cxx:42
string standardise_interfile_keyword(const string &keyword)
Put a (Interfile) keyword into a standard form.
Definition interfile_keyword_functions.cxx:28
This file declares various utility functions.