ICP  1
DetectorFile.h
Go to the documentation of this file.
1 #include "isiscrpt.h"
2 
3 //DETECTOR.DAT generated by CREATE_DETECTOR_FILE ndet nuse (phi is first nuse)
4 // 165891 14
5 // det no. offset l2 code theta phi w_x w_y w_z f_x f_y f_z a_x a_y a_z det_1 det_2 det_3 det4
6 // 1000001 0.000 -3.04500 1 180.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.
7 // 1000002 0.000 -1.69500 1 180.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.
8 // 1000003 0.000 8.35000 1 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.
9 // 1000004 0.000 6.00000 1 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.
10 
11 struct DETECTOR
12 {
13  float offset;
14  float l2;
15  int code;
16  float theta;
18  DETECTOR() : offset(0.0), l2(0.0), code(0), theta(0.0) { memset(ut, 0, ISISCRPT_MAX_USER*sizeof(float)); }
19 };
20 
22 {
23  virtual bool good() const = 0;
24  virtual int numLines() const = 0;
25  virtual int numUserTables() const = 0;
26  virtual void readLine(int& det_no, DETECTOR& det) = 0;
27  virtual ~IDetectorFile() { }
28 };
29 
31 {
32 private:
33  int m_nlines;
34  int m_nuse;
35  std::ifstream m_file;
36 
37 public:
38  DetectorFileASCII(const char* filename);
39  void readLine(int& det_no, DETECTOR& det);
40  bool good() const { return m_file.good(); }
41 
42  int numLines() const { return m_nlines; }
43  int numUserTables() const { return m_nuse; }
45  {
46  m_file.close();
47  }
48 };
49 
50 namespace NeXus
51 {
52  class File;
53 };
54 
56 {
57 private:
58  int m_nlines;
60  int m_nuse;
61  bool m_good;
62  NeXus::File* m_file;
63  std::vector<double> m_azimuthal_angle;
64  std::vector<double> m_polar_angle;
65  std::vector<double> m_distance;
66  std::vector<int32_t> m_detector_number;
67  std::string m_instrument_name;
68  std::string m_instrument_xml;
72 
73  template<typename T>
74  void getItem(const std::string& name, std::vector<T>& value);
75  template <typename T>
76  void getItem(const std::string& name, T& value);
77  template <>
78  void DetectorFileMantid::getItem(const std::string& name, std::string& value);
79 
80 
81 public:
82  DetectorFileMantid(const char* filename);
83  void readLine(int& det_no, DETECTOR& det);
84  bool good() const { return m_good; }
85  int numLines() const { return m_nlines; }
86  int numUserTables() const { return m_nuse; }
87  const std::string& instName() const { return m_instrument_name; }
88  const std::string& instXMLFileName() const { return m_instrument_xml_file_name; }
89  const std::string& instXML() const { return m_instrument_xml; }
90  const std::string& instParameterMapFileName() const { return m_instrument_parameter_map_file_name; }
91  const std::string& instParameterMap() const { return m_instrument_parameter_map; }
93 };
94 
float l2
Definition: DetectorFile.h:14
std::string m_instrument_parameter_map_file_name
Definition: DetectorFile.h:71
int numUserTables() const
Definition: DetectorFile.h:43
float offset
Definition: DetectorFile.h:13
std::string m_instrument_xml_file_name
Definition: DetectorFile.h:69
std::vector< double > m_distance
Definition: DetectorFile.h:65
int numLines() const
Definition: DetectorFile.h:85
virtual int numLines() const =0
const std::string & instXMLFileName() const
Definition: DetectorFile.h:88
const std::string & instName() const
Definition: DetectorFile.h:87
void getItem(const std::string &name, std::vector< T > &value)
int numUserTables() const
Definition: DetectorFile.h:86
const std::string & instParameterMapFileName() const
Definition: DetectorFile.h:90
const std::string & instXML() const
Definition: DetectorFile.h:89
bool good() const
Definition: DetectorFile.h:40
std::ifstream m_file
Definition: DetectorFile.h:35
DetectorFileASCII(const char *filename)
void readLine(int &det_no, DETECTOR &det)
float ut[ISISCRPT_MAX_USER]
Definition: DetectorFile.h:17
const std::string & instParameterMap() const
Definition: DetectorFile.h:91
NeXus::File * m_file
Definition: DetectorFile.h:62
std::string m_instrument_name
Definition: DetectorFile.h:67
virtual ~IDetectorFile()
Definition: DetectorFile.h:27
std::string m_instrument_xml
Definition: DetectorFile.h:68
int numLines() const
Definition: DetectorFile.h:42
virtual void readLine(int &det_no, DETECTOR &det)=0
virtual int numUserTables() const =0
float theta
Definition: DetectorFile.h:16
bool good() const
Definition: DetectorFile.h:84
void readLine(int &det_no, DETECTOR &det)
std::vector< double > m_azimuthal_angle
Definition: DetectorFile.h:63
std::vector< double > m_polar_angle
Definition: DetectorFile.h:64
#define ISISCRPT_MAX_USER
Definition: isiscrpt.h:18
std::vector< int32_t > m_detector_number
Definition: DetectorFile.h:66
virtual bool good() const =0
DetectorFileMantid(const char *filename)
std::string m_instrument_parameter_map
Definition: DetectorFile.h:70