There are several getters for fetching image data from the xtc file. Depending on which camera was in use, one of these should be appropriate: - Opal1000 camera:
getOpal1kValue (an alias for getFrameValue)
- Which camera?
getTm6740Value (an alias for getFrameValue)
- FrameDetector (general):
Code Block |
---|
int getFrameConfig (FrameDetector det);
int getFrameValue(FrameDetector det, int& frameWidth, int& frameHeight, unsigned short*& image );
| Gives you the width and height (in pixels) of the image, and a pointer to the start of the pixel array of a Pds::Camera::FrameV1 object. Specify the detector (using an appropriate enum). Code Block |
---|
Available frame detectors:
AMO:
AmoVmi
AmoBps1
AmoBps2
SXR:
SxrBeamlineOpal1
SxrBeamlineOpal2
SxrEndstationOpal1
SxrEndstationOpal2
SxrFccd
XPP:
XppSb1PimCvd
XppMonPimCvd
XppSb3PimCvd
XppSb4PimCvd
|
- XPP CsPad detector:
Code Block |
---|
namespace Pds { namespace CsPad { class ConfigV1; }}
int getCspadConfig (Pds::DetInfo::Detector det, unsigned& quadMask, unsigned& asicMask);
int getCspadConfig (Pds::DetInfo::Detector det, Pds::CsPad::ConfigV1& cfg);
namespace Pds { namespace CsPad { class ElementV1; }}
int getCspadQuad (Pds::DetInfo::Detector det, unsigned quad, const uint16_t*& pixels);
int getCspadQuad (Pds::DetInfo::Detector det, unsigned quad, const Pds::CsPad::ElementV1*& data);
| Gives you a pointer to the first position in the array of pixel data from the XPP CsPad detector (or alternatively you can get a pointer to the Pds::CsPad::ElementV1 object itself). For an example of how to draw an image as a 2D root histogram, see the myana_cspad.cc example.
- Fast CCD camera:
Code Block |
---|
int getFccdConfig(FrameDetector det, uint16_t& outputMode, bool& ccdEnable,
bool& focusMode, uint32_t& exposureTime,
float& dacVoltage1, float& dacVoltage2, float& dacVoltage3, float& dacVoltage4,
float& dacVoltage5, float& dacVoltage6, float& dacVoltage7, float& dacVoltage8,
float& dacVoltage9, float& dacVoltage10, float& dacVoltage11, float& dacVoltage12,
float& dacVoltage13, float& dacVoltage14, float& dacVoltage15, float& dacVoltage16,
float& dacVoltage17,
uint16_t& waveform0, uint16_t& waveform1, uint16_t& waveform2, uint16_t& waveform3,
uint16_t& waveform4, uint16_t& waveform5, uint16_t& waveform6, uint16_t& waveform7,
uint16_t& waveform8, uint16_t& waveform9, uint16_t& waveform10, uint16_t& waveform11,
uint16_t& waveform12, uint16_t& waveform13, uint16_t& waveform14);
| Configures the information from the Fast CCD. Fills arguments with values depending on how the image/waveform data were taken. There is no getFccdValue in main.hh, so I think you need to use getFrameValue for this .
- PnCCD camera (used by CAMP):
Code Block |
---|
int getPnCcdValue (int deviceId, unsigned char*& image, int& width, int& height );
| This camera has 4 links, each link provides a 512 x 512 x 16 bit image. This function combines the four images to a single 1024 x 1024 x 16 bit image. deviceId can be PnCcd0 or PnCcd1, width and height are the number of pixels in each direction.
- Princeton camera:
Code Block |
---|
int getPrincetonConfig(Pds::DetInfo::Detector det, int iDevId,
int& width, int& height, int& orgX, int& orgY, int& binX, int&binY);
int getPrincetonValue(Pds::DetInfo::Detector det, int iDevId, unsigned short *& image);
int getPrincetonTemperature(Pds::DetInfo::Detector det, int iDevId, float& temperature);
| fetches the configuration and data from the camera. getPrincetonTemperature is there to check the temperature of the camera at the time of data taking (not necessarily available for every shot).
|