00001 #ifndef PSANA_OPAL1K_DDL_H
00002 #define PSANA_OPAL1K_DDL_H 1
00003
00004
00005
00006 #include <vector>
00007 #include <iosfwd>
00008 #include <cstring>
00009 #include "ndarray/ndarray.h"
00010 #include "pdsdata/xtc/TypeId.hh"
00011 #include "psddl_psana/camera.ddl.h"
00012 namespace Psana {
00013 namespace Opal1k {
00014
00015
00016
00017
00018
00019
00020
00021 class ConfigV1 {
00022 public:
00023 enum { TypeId = Pds::TypeId::Id_Opal1kConfig };
00024 enum { Version = 1 };
00025 enum { LUT_Size = 4096 };
00026 enum { Row_Pixels = 1024 };
00027 enum { Column_Pixels = 1024 };
00028 enum { Output_LUT_Size = 4096 };
00029
00030
00031 enum Depth {
00032 Eight_bit,
00033 Ten_bit,
00034 Twelve_bit,
00035 };
00036 enum Binning {
00037 x1,
00038 x2,
00039 x4,
00040 x8,
00041 };
00042 enum Mirroring {
00043 None,
00044 HFlip,
00045 VFlip,
00046 HVFlip,
00047 };
00048 virtual ~ConfigV1();
00049
00050 virtual uint16_t black_level() const = 0;
00051
00052 virtual uint16_t gain_percent() const = 0;
00053
00054 virtual Opal1k::ConfigV1::Depth output_resolution() const = 0;
00055
00056 virtual Opal1k::ConfigV1::Binning vertical_binning() const = 0;
00057
00058 virtual Opal1k::ConfigV1::Mirroring output_mirroring() const = 0;
00059
00060
00061
00062
00063
00064 virtual uint8_t vertical_remapping() const = 0;
00065
00066 virtual uint8_t output_lookup_table_enabled() const = 0;
00067
00068 virtual uint8_t defect_pixel_correction_enabled() const = 0;
00069 virtual uint32_t number_of_defect_pixels() const = 0;
00070 virtual ndarray<const uint16_t, 1> output_lookup_table() const = 0;
00071 virtual ndarray<const Camera::FrameCoord, 1> defect_pixel_coordinates() const = 0;
00072
00073 virtual uint16_t output_offset() const = 0;
00074
00075 virtual uint32_t output_resolution_bits() const = 0;
00076 };
00077 std::ostream& operator<<(std::ostream& str, Opal1k::ConfigV1::Depth enval);
00078 std::ostream& operator<<(std::ostream& str, Opal1k::ConfigV1::Binning enval);
00079 std::ostream& operator<<(std::ostream& str, Opal1k::ConfigV1::Mirroring enval);
00080 }
00081 }
00082 #endif // PSANA_OPAL1K_DDL_H