- Added support for EMBL PSD detectors for TRIS and AMOR.

This commit is contained in:
cvs
2001-01-24 11:03:14 +00:00
parent e64773949d
commit 96e2fc44c0
11 changed files with 1077 additions and 28 deletions

View File

@@ -222,6 +222,12 @@
int Delay_time_to_start; /* The DTS for the MDI in TOF mode */
int Nbuff; /* The # buffers in TRANS mode */
int Buff_size; /* The buffer size in TRANS mode */
int xOff; /* X Offset in PSD mode */
int yOff; /* Y Offset in PSD mode */
int xFac; /* X factor in PSD mode */
int yFac; /* Y factor in PSD mode */
int xSize; /* xSize in PSD mode */
int ySize; /* ySize in PSD mode */
struct dsc__descriptor_s Name_desc;
@@ -260,6 +266,12 @@
{"-nbuff", ".sqhmNbuff", XrmoptionSepArg, (XPointer) NULL},
{"-buff_size",".sqhmBuffSize", XrmoptionSepArg, (XPointer) NULL},
{"-harsh", ".sqhmHarsh", XrmoptionNoArg, (XPointer) "1"},
{"-xoff", ".sqhmxoff", XrmoptionNoArg, (XPointer) "1"},
{"-yoff", ".sqhmyoff", XrmoptionNoArg, (XPointer) "1"},
{"-xfac", ".sqhmxfac", XrmoptionNoArg, (XPointer) "1"},
{"-yfac", ".sqhmyfac", XrmoptionNoArg, (XPointer) "1"},
{"-xsize", ".sqhmxsize", XrmoptionNoArg, (XPointer) "1"},
{"-ysize", ".sqhmyszie", XrmoptionNoArg, (XPointer) "1"},
};
extern int C_gbl_status; /* Return status from C_... routines */
@@ -659,7 +671,97 @@
printf (" \"-buff_size %s\" is invalid!\n", value.addr);
exit (EXIT_FAILURE);
}
/*----------------------------------------------------------*/
/*---------------------------------------------------------- -xoff */
status = XrmGetResource (*db,
StrJoin (buff, sizeof (buff),
appName, ".sqhmxoff"),
"ProgramName.Values",
&type, &value);
if (!status) {
xOff = 100;
}else if (sscanf (value.addr, "%d", &xOff) != 1) {
printf (" \"-xoff %s\" is invalid!\n", value.addr);
exit (EXIT_FAILURE);
}else if (xOff <= 0) {
printf (" \"-xoff %s\" is invalid!\n", value.addr);
exit (EXIT_FAILURE);
}
/*---------------------------------------------------------- -yoff */
status = XrmGetResource (*db,
StrJoin (buff, sizeof (buff),
appName, ".sqhmyoff"),
"ProgramName.Values",
&type, &value);
if (!status) {
yOff = 100;
}else if (sscanf (value.addr, "%d", &yOff) != 1) {
printf (" \"-yoff %s\" is invalid!\n", value.addr);
exit (EXIT_FAILURE);
}else if (yOff <= 0) {
printf (" \"-yoff %s\" is invalid!\n", value.addr);
exit (EXIT_FAILURE);
}
/*---------------------------------------------------------- -yfac */
status = XrmGetResource (*db,
StrJoin (buff, sizeof (buff),
appName, ".sqhmyfac"),
"ProgramName.Values",
&type, &value);
if (!status) {
yFac = 10;
}else if (sscanf (value.addr, "%d", &yFac) != 1) {
printf (" \"-yfac %s\" is invalid!\n", value.addr);
exit (EXIT_FAILURE);
}else if (yFac <= 0) {
printf (" \"-yfac %s\" is invalid!\n", value.addr);
exit (EXIT_FAILURE);
}
/*---------------------------------------------------------- -xfac */
status = XrmGetResource (*db,
StrJoin (buff, sizeof (buff),
appName, ".sqhmxfac"),
"ProgramName.Values",
&type, &value);
if (!status) {
xFac = 10;
}else if (sscanf (value.addr, "%d", &xFac) != 1) {
printf (" \"-xfac %s\" is invalid!\n", value.addr);
exit (EXIT_FAILURE);
}else if (xFac <= 0) {
printf (" \"-xfac %s\" is invalid!\n", value.addr);
exit (EXIT_FAILURE);
}
/*---------------------------------------------------------- -xsize */
status = XrmGetResource (*db,
StrJoin (buff, sizeof (buff),
appName, ".sqhmxsize"),
"ProgramName.Values",
&type, &value);
if (!status) {
xSize = 256;
}else if (sscanf (value.addr, "%d", &xSize) != 1) {
printf (" \"-xsize %s\" is invalid!\n", value.addr);
exit (EXIT_FAILURE);
}else if (xSize <= 0) {
printf (" \"-xsize %s\" is invalid!\n", value.addr);
exit (EXIT_FAILURE);
}
/*---------------------------------------------------------- -ysize */
status = XrmGetResource (*db,
StrJoin (buff, sizeof (buff),
appName, ".sqhmxsize"),
"ProgramName.Values",
&type, &value);
if (!status) {
ySize = 256;
}else if (sscanf (value.addr, "%d", &ySize) != 1) {
printf (" \"-ysize %s\" is invalid!\n", value.addr);
exit (EXIT_FAILURE);
}else if (ySize <= 0) {
printf (" \"-ysize %s\" is invalid!\n", value.addr);
exit (EXIT_FAILURE);
}
/*----------------------------------------------------------------------*/
return True;
}
/*
@@ -1440,6 +1542,14 @@ sh_basic:
is1 = !EXIT_SUCCESS;
opt = "-span";
}
}else if((Hm_mode & ~SQHM__SUB_MODE_MSK) == SQHM__HM_PSD){
if(xSize <= 0) {
is1 = !EXIT_SUCCESS;
opt = "-xsize";
}else if(ySize <= 0) {
is1 = !EXIT_SUCCESS;
opt = "-ysize";
}
}else if ((Hm_mode & ~SQHM__SUB_MODE_MSK) == SQHM__TRANS) {
}else {
is1 = !EXIT_SUCCESS;
@@ -1486,6 +1596,29 @@ sh_basic:
Req_buff.u.cnfg.u.tof.bank_0.n_cntrs = htons (Ncntrs);
Req_buff.u.cnfg.u.tof.bank_0.edge_indx = htons (0);
Req_buff.u.cnfg.u.tof.bank_0.bytes_per_bin = htons (Bytes_per_bin);
}else if ((Hm_mode & ~SQHM__SUB_MODE_MSK) == SQHM__HM_PSD) {
Req_buff.u.cnfg.u.psd.n_extra_bytes = htonl (0);
Req_buff.u.cnfg.u.psd.n_edges = htons (1);
Req_buff.u.cnfg.u.psd.n_banks = htons (1);
Req_buff.u.cnfg.u.psd.xOffset = htons (xOff);
Req_buff.u.cnfg.u.psd.yOffset = htons (yOff);
Req_buff.u.cnfg.u.psd.xFactor = htons (xFac);
Req_buff.u.cnfg.u.psd.yFactor = htons (yFac);
Req_buff.u.cnfg.u.psd.xSize = htons (xSize);
Req_buff.u.cnfg.u.psd.ySize = htons (ySize);
Req_buff.u.cnfg.u.psd.edge_0.n_bins = htonl (Nbins);
Req_buff.u.cnfg.u.psd.edge_0.flag = htonl (0); /* Fixed bin span */
Req_buff.u.cnfg.u.psd.edge_0.edges[0] = htonl (0);
Req_buff.u.cnfg.u.psd.edge_0.edges[1] = htonl (Span);
Req_buff.u.cnfg.u.psd.preset_delay = htonl (Delay_time_to_start);
Req_buff.u.cnfg.u.psd.bank_0.first = htons (Lo_cntr);
Req_buff.u.cnfg.u.psd.bank_0.n_cntrs = htons (xSize*ySize);
Req_buff.u.cnfg.u.psd.bank_0.edge_indx = htons (0);
Req_buff.u.cnfg.u.psd.bank_0.bytes_per_bin = htons (Bytes_per_bin);
}else if ((Hm_mode & ~SQHM__SUB_MODE_MSK) == SQHM__TRANS) {
Req_buff.u.cnfg.u.trans.n_buffs = htonl (Nbuff);
Req_buff.u.cnfg.u.trans.n_bytes = htons (Buff_size);