21#define TarTypeFlag_NormalFile '0'
22#define TarTypeFlag_HardLink '1'
23#define TarTypeFlag_SymbolicLink '2'
24#define TarTypeFlag_CharacterSpecial '3'
25#define TarTypeFlag_BlockSpecial '4'
26#define TarTypeFlag_Directory '5'
27#define TarTypeFlag_FIFO '6'
28#define TarTypeFlag_ContiguousFile '7'
31namespace DataHandling {
35std::vector<std::string>
filterDatasets(
const Nexus::NXEntry &entry,
const std::string &groupAddress,
36 const std::string ®exFilter);
83 virtual void addEventImpl(
size_t id, int64_t pulse,
double tof) = 0;
87 EventProcessor(
const std::vector<bool> &roi,
size_t stride,
const double period,
const double phase,
88 const int64_t startTime,
const double tofMinBoundary,
const double tofMaxBoundary,
89 const double timeMinBoundary,
const double timeMaxBoundary);
105 void addEventImpl(
size_t id, int64_t pulse,
double tof)
override;
109 EventCounter(
const std::vector<bool> &roi,
const size_t stride,
const double period,
const double phase,
110 const int64_t startTime,
const double tofMinBoundary,
const double tofMaxBoundary,
111 const double timeMinBoundary,
const double timeMaxBoundary, std::vector<size_t> &eventCounts);
125 void addEventImpl(
size_t id, int64_t pulse,
double tof)
override;
129 EventAssigner(
const std::vector<bool> &roi,
const size_t stride,
const double period,
const double phase,
130 int64_t startTime,
const double tofMinBoundary,
const double tofMaxBoundary,
131 const double timeMinBoundary,
const double timeMaxBoundary, std::vector<EventVector_pt> &eventVectors);
140 void addEventImpl(
size_t id, int64_t pulse,
double tof)
override;
145 const double period,
const double phase,
const int64_t startTime,
146 const double tofMinBoundary,
const double tofMaxBoundary,
const double timeMinBoundary,
147 const double timeMaxBoundary, std::vector<EventVector_pt> &eventVectors);
171 bool read(
void *buffer, uint32_t size);
172 bool seek(int64_t offset,
int whence, int64_t *newPosition =
nullptr);
230 explicit File(
const std::string &path);
235 const std::vector<std::string> &
files()
const;
242 bool select(
const char *file);
243 bool skip(uint64_t offset);
244 size_t read(
void *dst,
size_t size);
248 static bool append(
const std::string &path,
const std::string &
name,
const void *buffer,
size_t size);
270 std::vector<uint64_t> ×, std::vector<T> &events, std::string &units);
273 ScanLog valueOption, uint64_t &eventTime, T &eventValue, std::string &units);
276 uint64_t end_nsec,
const std::string &neutron_path,
int tube_resolution = 1024);
double value
The value of the point.
std::map< DeltaEMode::Type, std::string > index
Helper class for reporting progress from algorithms.
void addEventImpl(size_t id, int64_t pulse, double tof) override
void addEventImpl(size_t id, int64_t pulse, double tof) override
std::vector< EventVector_pt > & m_eventVectors
void addEventImpl(size_t id, int64_t pulse, double tof) override
std::vector< size_t > & m_eventCounts
const double m_timeMinBoundary
const double m_timeMaxBoundary
virtual void addEventImpl(size_t id, int64_t pulse, double tof)=0
void addEvent(size_t x, size_t y, double tof)
const double m_tofMinBoundary
const double m_tofMaxBoundary
const std::vector< bool > & m_roi
bool seek(int64_t offset, int whence, int64_t *newPosition=nullptr)
FastReadOnlyFile & operator=(FastReadOnlyFile)=delete
FastReadOnlyFile(const FastReadOnlyFile &)=delete
bool read(void *buffer, uint32_t size)
helper class to keep track of progress
void setTarget(int64_t target)
void update(int64_t position)
API::Progress & m_progBar
std::vector< FileInfo > m_fileInfos
uint8_t m_buffer[BUFFER_SIZE]
std::vector< std::string > m_fileNames
File(const File &)=delete
const std::string & selected_name() const
int64_t selected_position() const
size_t read(void *dst, size_t size)
bool select(const char *file)
const std::vector< std::string > & files() const
static bool append(const std::string &path, const std::string &name, const void *buffer, size_t size)
bool skip(uint64_t offset)
static const auto BUFFER_SIZE
int64_t selected_size() const
File & operator=(const File &)=delete
Implements NXentry Nexus class.
bool isTimedDataSet(const Nexus::NXEntry &entry, const std::string &path)
std::string extractWorkspaceTitle(const std::string &nxsFile)
void ReadEventData(ProgressTracker &prog, const Nexus::NXEntry &entry, EventProcessor *handler, uint64_t start_nsec, uint64_t end_nsec, const std::string &neutron_path, int tube_resolution=1024)
bool loadNXString(const Nexus::NXEntry &entry, const std::string &path, std::string &value)
int64_t epochRelDateTimeBase(int64_t epochInNanoSeconds)
bool loadNXDataSet(const Nexus::NXEntry &entry, const std::string &path, T &value, int index)
std::pair< uint64_t, uint64_t > getHMScanLimits(const Nexus::NXEntry &entry, int datasetIx)
uint64_t extractTimedDataSet(const Nexus::NXEntry &entry, const std::string &path, uint64_t startTime, uint64_t endTime, std::vector< uint64_t > ×, std::vector< T > &events, std::string &units)
std::pair< uint64_t, uint64_t > getTimeScanLimits(const Nexus::NXEntry &entry, int datasetIx)
std::vector< Types::Event::TofEvent > * EventVector_pt
pointer to the vector of events
std::vector< std::string > filterDatasets(const Nexus::NXEntry &entry, const std::string &groupAddress, const std::string ®exFilter)
extract datasets from a group that match a regex filter
Helper class which provides the Collimation Length for SANS instruments.
char LastModification[12]
char DeviceMajorNumber[8]
char DeviceMinorNumber[8]
void writeFileSize(int64_t value)