Corrected pixel index misunderstanding.

areaDetector uses 0-based indexes, whereas the Andor API uses 1-based indexes.
This commit is contained in:
Heesterman, Peter J
2021-08-25 14:55:24 +01:00
parent 546f31c29f
commit 7dce622ee3

View File

@@ -901,17 +901,25 @@ void AndorCCD::setupTrackDefn(int minX, int sizeX, int binX)
setIntegerParam(NDArraySizeY, mMultiTrack.DataHeight());
for (size_t TrackNo = 0; TrackNo < mMultiTrack.size(); TrackNo++)
{
/*
Each track must be defined by a group of six integers.
- The top and bottom positions of the tracks.
- The left and right positions for the area of interest within each track
- The horizontal and vertical binning for each track. */
TrackDefn[TrackNo * 6 + 0] = mMultiTrack.TrackStart(TrackNo);
TrackDefn[TrackNo * 6 + 1] = mMultiTrack.TrackEnd(TrackNo);
TrackDefn[TrackNo * 6 + 2] = minX + 1;
TrackDefn[TrackNo * 6 + 3] = minX + sizeX;
TrackDefn[TrackNo * 6 + 4] = binX;
TrackDefn[TrackNo * 6 + 5] = mMultiTrack.TrackBin(TrackNo);
/*
Each track must be defined by a group of six integers.
- The top and bottom positions of the tracks.
- The left and right positions for the area of interest within each track
- The horizontal and vertical binning for each track. */
/*
Andor use 1-based exclusive co-ordinates.
e.g. from SDK manual:
1 2 1 1024 1 1
3 4 1 1024 1 1
5 6 1 1024 1 1
7 8 1 1024 1 1
9 10 1 1024 1 1 */
TrackDefn[TrackNo * 6 + 0] = mMultiTrack.TrackStart(TrackNo) + 1;
TrackDefn[TrackNo * 6 + 1] = mMultiTrack.TrackEnd(TrackNo) + 2; // CCDMultiTrack uses 0-based inlcusive co-ordinates.
TrackDefn[TrackNo * 6 + 2] = minX + 1;
TrackDefn[TrackNo * 6 + 3] = minX + sizeX;
TrackDefn[TrackNo * 6 + 4] = binX;
TrackDefn[TrackNo * 6 + 5] = mMultiTrack.TrackBin(TrackNo);
}
checkStatus(SetCustomTrackHBin(binX));
checkStatus(SetComplexImage(int(TrackDefn.size() / ValuesPerTrack), &TrackDefn[0]));