/*** ^^A -*-C++-*- **********************************************/
/*      had_pl - get Hadamard peaklist      18.04.2015          */
/****************************************************************/
/*      Short Description :                                     */
/*      AU program to copy peak list for Hadamard experiment    */
/****************************************************************/
/*      Keywords :                                              */
/*      Hadamard, peaklist                                      */
/****************************************************************/
/*      Description/Usage : had_pl expno                        */
/*      will copy peaklist                                      */
/*      from: expno/pdata/1/peaklist.xml                        */
/*      to: curexp/PL.xml                                       */
/*      will set 1 TD to the nearest power of 2                 */
/*      and increase the dimensionality from 1D to 2D           */
/****************************************************************/
/*      Author(s) :                                             */
/*      Name            : Eriks Kupce                           */
/*      Organisation    : Bruker BioSpin                        */
/*      Email           : eriks.kupce@bruker.com                */
/****************************************************************/
/*      Name            Date    Modification:                   */
/*      eku             150418  created                         */
/****************************************************************/
/*
$Id: had_pl,v 1.3 2018/05/04 11:53:57 wem Exp $
*/

char sourcefile[PATH_MAX], targetfile[PATH_MAX];
int  numpeaks, td = 1;
int  parmode, ret, sexpno = 1;

FETCHPAR("PARMODE", &parmode)

if (parmode < 1  &&  access(ACQUPATH("fid"), F_OK) == 0)
{
  Proc_err(DEF_ERR_OPT, "Program not applicable to 1D raw data");
  ABORT
}

if (i_argc > 2)
  sexpno = atoi(i_argv[2]);
else
  GETINT("Enter peaklist EXPNO:", sexpno)

strcpy(sourcefile, VARPROCPATH(name, sexpno, 1, "peaklist.xml"));
strcpy(targetfile, ACQUPATH("PL.xml"));
ret = dircp(sourcefile, targetfile);
if (ret < 0)
{
  Proc_err(DEF_ERR_OPT, dircp_err(ret));
  ABORT
}

numpeaks = readPeakList(VARPROCPATH(name, sexpno, 1, 0));

if (numpeaks < 1)
{
  Proc_err(DEF_ERR_OPT, "%s", getPeakError());
  ABORT
}

freePeakList();

while (td <= numpeaks)
  td *= 2;

if (parmode < 1)
{                       /* create 2D data set */
  XCMD("chparmod A2")
  XCMD("chparmod P2")
}

STOREPARN(1, "TD", td)
STOREPARN(1, "FnMODE", 1)

FETCHPAR("TD", &td)

if (td > 4096)
{
  char tdtxt[256], ktxt[256];

  ktxt[0] = 0;
  sprintf(tdtxt, "%d", td);
  GETSTRING("Enter TD{F2} for the 2D experiment:", tdtxt)

  if (sscanf(tdtxt, "%d%s", &td, ktxt) > 0  &&  td > 0)
  {
    if (ktxt[0] == 'k'  ||  ktxt[0] == 'K')
      td *= 1024;

    STOREPAR("TD", td)
  }
}

QUIT
