STIR
6.2.0
|
class that reads ROOT files, generated by GATE, as listmode data. More...
#include "stir/listmode/CListModeDataROOT.h"
Public Member Functions | |
CListModeDataROOT (const std::string &hroot_filename_prefix) | |
construct from the filename of the Interfile header | |
std::string | get_name () const override |
returns the header filename | |
void | set_defaults () |
Set private members default values;. | |
shared_ptr< CListRecord > | get_empty_record_sptr () const override |
Get a pointer to an empty record. More... | |
Succeeded | get_next_record (CListRecord &record) const override |
Gets the next record in the listmode sequence. | |
Succeeded | reset () override |
Call this function if you want to re-start reading at the beginning. | |
SavedPosition | save_get_position () override |
Save the current reading position. More... | |
Succeeded | set_get_position (const SavedPosition &) override |
Set the position for reading to a previously saved point. | |
bool | has_delayeds () const override |
Return if the file stores delayed events as well (as opposed to prompts) | |
unsigned long int | get_total_number_of_events () const override |
Returns the total number of events in the listmode file. More... | |
Public Member Functions inherited from stir::ListModeData | |
ListModeData () | |
Default constructor. | |
shared_ptr< ListRecord > | get_empty_record_sptr () const |
Get a pointer to an empty record. More... | |
virtual Succeeded | get_next_record (ListRecord &event) const |
Gets the next record in the listmode sequence. | |
const Scanner & | get_scanner () const |
Get reference to scanner. More... | |
virtual shared_ptr< const ProjDataInfo > | get_proj_data_info_sptr () const |
Public Member Functions inherited from stir::ExamData | |
ExamData () | |
ExamData. More... | |
ExamData (const shared_ptr< const ExamInfo > &_this_exam) | |
virtual const ExamInfo & | get_exam_info () const |
virtual shared_ptr< const ExamInfo > | get_exam_info_sptr () const |
Get shared pointer to exam info. | |
virtual void | set_exam_info (ExamInfo const &) |
change exam info More... | |
void | set_exam_info_sptr (shared_ptr< const ExamInfo > new_exam_info_sptr) |
Additional Inherited Members | |
Public Types inherited from stir::ListModeData | |
typedef ListModeData | hierarchy_base_type |
typedef used by read_from_file | |
typedef unsigned int | SavedPosition |
Use this typedef for save/set_get_position. | |
Protected Member Functions inherited from stir::CListModeData | |
shared_ptr< ListRecord > | get_empty_record_helper_sptr () const override |
Succeeded | get_next (ListRecord &event) const override |
Protected Member Functions inherited from stir::ListModeData | |
virtual void | set_proj_data_info_sptr (shared_ptr< const ProjDataInfo >) |
Protected Attributes inherited from stir::ListModeData | |
shared_ptr< const ProjDataInfo > | proj_data_info_sptr |
Has to be set by the derived class. More... | |
Protected Attributes inherited from stir::ExamData | |
shared_ptr< const ExamInfo > | exam_info_sptr |
class that reads ROOT files, generated by GATE, as listmode data.
This class does not directly read the ROOT file but instead needs an Interfile-type header to specify the scanner (as this information is not stored in the ROOT file). We tend to name this header something.hroot
but this is not mandatory.
We currently support only ROOT output using the 'Cylindrical PET' and 'ECAT' systems from GATE.
The Scanner geometry is set in multiple places. In hroot there is the option to use the Scanner name to pull a Scanner from the library. Another option is to use Scanner::User_defined_scanner and set the members: num_rings, num_detectors_per_ring, max_num_non_arccorrected_bins, inner_ring_diameter, average_depth_of_interaction, ring_spacing and bin_size, manually.
In any case this scanner must checkout the geometry created by the repeaters section (which will initialise the InputStreamFromROOTFile. And of course, match the Scanner used by other parts of STIR (e.g. ProjDataInfo e.t.c).
Finally, in the case that Scanner::Unknown_scanner the algorithm will try to create the scanner from the members. Subject to concistency checks, of course.
ROOT header := Originating system := Siemens mMR ; specify GATE output format (could be GATE_ECAT_PET as well) GATE scanner type := GATE_Cylindrical_PET GATE_Cylindrical_PET Parameters := ; name of the actual ROOT file name of data file := mysim.root ; See elsewhere for other parameters End GATE_Cylindrical_PET Parameters := end ROOT header :=Below is an example using a user-defined scanner.
ROOT header := Originating system := User_defined_scanner Number of rings := 4 Number of detectors per ring := 504 Inner ring diameter (cm) := 65.6 Average depth of interaction (cm) := 0.7 Distance between rings (cm) := 0.40625 Default bin size (cm) := 0.208626 Maximum number of non-arc-corrected bins := 344 ; optional keywords to create "virtual" crystals to accomodate for gaps between blocks ; if you do not specify these, the STIR defaults (determined by the "originating system") ; will be used (which are zero for a User_defined_scanner) Number of virtual axial crystals per block := 0 Number of virtual transaxial crystals per block:= 0 GATE scanner type := GATE_Cylindrical_PET GATE_Cylindrical_PET Parameters := ; name of the actual ROOT file name of data file := mysim.root ; See elsewhere for other parameters End GATE_Cylindrical_PET Parameters := end ROOT header :=
|
overridevirtual |
Get a pointer to an empty record.
This is mainly/only useful to get a record of the correct type, that can then be passed to get_next_record().
Implements stir::CListModeData.
References stir::info().
|
overridevirtual |
Save the current reading position.
Note that the return value is not related to the number of events already read. In particular, you cannot do any arithmetic on it to skip a few events. This is different from e.g. std::streampos.
Implements stir::ListModeData.
|
inlineoverridevirtual |
Returns the total number of events in the listmode file.
Reimplemented from stir::ListModeData.