- Added reflection generation for symmetriqally missing reflections
to fourmess - Fixed hdbtable, reflist and tasub up to work with GTSE - Made TRICS do fast scans again - Added support for SANS beam center calculations - Fixed a bug where SICS apparently did double counting but in fact just omitted an error message and did not - Added the harray command
This commit is contained in:
42
fourmess.c
42
fourmess.c
@ -640,7 +640,12 @@ static int FourMessWeak(pSICSOBJ self, SConnection * pCon,
|
||||
return 1;
|
||||
}
|
||||
|
||||
/*----------------------------------------------------------------------------*/
|
||||
/*----------------------------------------------------------------------------
|
||||
* Usage of the suppress flag:
|
||||
* 0 do notthing
|
||||
* 1 suppress symmetriqually equivalent reflections
|
||||
* 2 opposite: add only reflections NOT allowed by the spacegroup
|
||||
* ---------------------------------------------------------------------------*/
|
||||
static int GenIndex(pSICSOBJ self, SConnection * pCon, pHdb commandNode,
|
||||
pHdb par[], int nPar)
|
||||
{
|
||||
@ -689,12 +694,20 @@ static int GenIndex(pSICSOBJ self, SConnection * pCon, pHdb commandNode,
|
||||
for (l = hkllim.v.intArray[2]; l <= hkllim.v.intArray[5]; l++) {
|
||||
/* SCPrintf(pCon,eLog, "Testing %d, %d, %d", h,k,l); */
|
||||
/* first test: extinct */
|
||||
if (IsSysAbsent_hkl(sginfo, h, k, l, NULL) != 0) {
|
||||
/* SCPrintf(pCon,eLog, "%d, %d, %d rejected for sys absent", h, k, l); */
|
||||
continue;
|
||||
}
|
||||
|
||||
if(suppress != 2){
|
||||
if (IsSysAbsent_hkl(sginfo, h, k, l, NULL) != 0) {
|
||||
/* SCPrintf(pCon,eLog, "%d, %d, %d rejected for sys absent", h, k, l); */
|
||||
continue;
|
||||
}
|
||||
} else {
|
||||
if (!IsSysAbsent_hkl(sginfo, h, k, l, NULL) != 0) {
|
||||
/* SCPrintf(pCon,eLog, "%d, %d, %d rejected for not sys absent", h, k, l); */
|
||||
continue;
|
||||
}
|
||||
}
|
||||
/* second test: a symmetrically equivalent already seen */
|
||||
if ((suppress != 0) && IsSuppressed_hkl(sginfo, minh, mink, minl,
|
||||
if ((suppress > 0) && IsSuppressed_hkl(sginfo, minh, mink, minl,
|
||||
hkllim.v.intArray[1],
|
||||
hkllim.v.intArray[2], h, k,
|
||||
l) != 0) {
|
||||
@ -745,15 +758,20 @@ static int GenInconsumerate(pSICSOBJ self, SConnection * pCon,
|
||||
qvec[2] = par[2]->value.v.doubleValue;
|
||||
|
||||
for (i = 0; i < priv->masterCount; i++) {
|
||||
GetRefIndex(priv->messList, i, hkl);
|
||||
GetRefIndex(priv->messList, i, hkl);
|
||||
for (j = 0; j < 3; j++) {
|
||||
hkl[j] += qvec[j];
|
||||
}
|
||||
AddRefIdx(priv->messList, hkl);
|
||||
GetRefIndex(priv->messList, i, hkl);
|
||||
for (j = 0; j < 3; j++) {
|
||||
hkl[j] -= qvec[j];
|
||||
}
|
||||
AddRefIdx(priv->messList, hkl);
|
||||
}
|
||||
SCPrintf(pCon, eValue,
|
||||
"%d additional inconsumerate reflections generated",
|
||||
priv->masterCount);
|
||||
priv->masterCount*2);
|
||||
return 1;
|
||||
}
|
||||
|
||||
@ -865,6 +883,8 @@ void InstallFourMess(SConnection * pCon, SicsInterp * pSics)
|
||||
pNew->KillPrivate = KillFourMess;
|
||||
|
||||
priv->stepTable = MakeFourCircleTable();
|
||||
AddCommand(pSics, "fmesstable", InterInvokeSICSOBJ, NULL, priv->stepTable);
|
||||
|
||||
priv->messList = CreateReflectionList(pCon, pSics, "messref");
|
||||
if (priv->stepTable < 0 || priv->messList == NULL) {
|
||||
SCWrite(pCon, "ERROR: out of memory creating fourmess", eError);
|
||||
@ -875,6 +895,10 @@ void InstallFourMess(SConnection * pCon, SicsInterp * pSics)
|
||||
cmd = AddSICSHdbPar(pNew->objectNode, "weakthreshold", usUser,
|
||||
MakeHdbInt(20));
|
||||
SetHdbProperty(cmd, "__save", "true");
|
||||
|
||||
cmd = AddSICSHdbPar(pNew->objectNode, "fast", usUser, MakeHdbInt(0));
|
||||
SetHdbProperty(cmd, "__save", "true");
|
||||
|
||||
cmd =
|
||||
AddSICSHdbPar(pNew->objectNode, "mode", usUser,
|
||||
MakeHdbText("Monitor"));
|
||||
@ -962,7 +986,7 @@ void InstallFourMess(SConnection * pCon, SicsInterp * pSics)
|
||||
MakeHipadabaCallback(SetScannerCB, priv, NULL));
|
||||
|
||||
priv->pScanner = FindCommandData(pSics, "xxxscan", "ScanObject");
|
||||
AddHipadabaChild(pNew->objectNode, priv->stepTable->objectNode,pCon);
|
||||
/* AddHipadabaChild(pNew->objectNode, priv->stepTable->objectNode,pCon); */
|
||||
|
||||
AddCommand(pSics, "fmess", FourMessAction, KillSICSOBJ, pNew);
|
||||
}
|
||||
|
Reference in New Issue
Block a user