/* Result Sets Interface */
#ifndef SQL_CRSR
#  define SQL_CRSR
  struct sql_cursor
  {
    unsigned int curocn;
    void *ptr1;
    void *ptr2;
    unsigned int magic;
  };
  typedef struct sql_cursor sql_cursor;
  typedef struct sql_cursor SQL_CURSOR;
#endif /* SQL_CRSR */

/* Thread Safety */
typedef void * sql_context;
typedef void * SQL_CONTEXT;

/* Object support */
struct sqltvn
{
  unsigned char *tvnvsn; 
  unsigned short tvnvsnl; 
  unsigned char *tvnnm;
  unsigned short tvnnml; 
  unsigned char *tvnsnm;
  unsigned short tvnsnml;
};
typedef struct sqltvn sqltvn;

struct sqladts
{
  unsigned int adtvsn; 
  unsigned short adtmode; 
  unsigned short adtnum;  
  sqltvn adttvn[1];       
};
typedef struct sqladts sqladts;

static struct sqladts sqladt = {
  1,1,0,
};

/* Binding to PL/SQL Records */
struct sqltdss
{
  unsigned int tdsvsn; 
  unsigned short tdsnum; 
  unsigned char *tdsval[1]; 
};
typedef struct sqltdss sqltdss;
static struct sqltdss sqltds =
{
  1,
  0,
};

/* File name & Package Name */
struct sqlcxp
{
  unsigned short fillen;
           char  filnam[19];
};
static const struct sqlcxp sqlfpn =
{
    18,
    "htofinoparoraio.pc"
};


static unsigned int sqlctx = 19912899;


static struct sqlexd {
   unsigned int   sqlvsn;
   unsigned int   arrsiz;
   unsigned int   iters;
   unsigned int   offset;
   unsigned short selerr;
   unsigned short sqlety;
   unsigned int   occurs;
      const short *cud;
   unsigned char  *sqlest;
      const char  *stmt;
   sqladts *sqladtp;
   sqltdss *sqltdsp;
            void  **sqphsv;
   unsigned int   *sqphsl;
            int   *sqphss;
            void  **sqpind;
            int   *sqpins;
   unsigned int   *sqparm;
   unsigned int   **sqparc;
   unsigned short  *sqpadto;
   unsigned short  *sqptdso;
   unsigned int   sqlcmax;
   unsigned int   sqlcmin;
   unsigned int   sqlcincr;
   unsigned int   sqlctimeout;
   unsigned int   sqlcnowait;
              int   sqfoff;
   unsigned int   sqcmod;
   unsigned int   sqfmod;
            void  *sqhstv[24];
   unsigned int   sqhstl[24];
            int   sqhsts[24];
            void  *sqindv[24];
            int   sqinds[24];
   unsigned int   sqharm[24];
   unsigned int   *sqharc[24];
   unsigned short  sqadto[24];
   unsigned short  sqtdso[24];
} sqlstm = {12,24};

// Prototypes
extern "C" {
  void sqlcxt (void **, unsigned int *,
               struct sqlexd *, const struct sqlcxp *);
  void sqlcx2t(void **, unsigned int *,
               struct sqlexd *, const struct sqlcxp *);
  void sqlbuft(void **, char *);
  void sqlgs2t(void **, char *);
  void sqlorat(void **, unsigned int *, void *);
}

// Forms Interface
static const int IAPSUCC = 0;
static const int IAPFAIL = 1403;
static const int IAPFTL  = 535;
extern "C" { void sqliem(char *, int *); }

 static const char *sq0009 = 
"select paddle ,slope ,offset ,delta_slope ,delta_offset ,cfd_threshold ,res_\
par1 ,res_par2 ,res_par3 ,dist_par1 ,dist_par2 ,dist_par3 ,dist_par4 ,min_leng\
th ,dist_param_type ,time_channel ,coord_pos ,adc_threshold ,adc_pedestal ,e_l\
oss_par1 ,e_loss_par2 ,e_loss_par3 ,e_loss_par4  from tofino_ana.tofino_cal_pa\
r_all where (sector=:b0 and version=:b1)           ";

 static const char *sq0010 = 
"select row_id ,col_id ,paddle_nr  from tofino_ana.tofino_shower_map_data whe\
re (vers_id=:b0 and sector_id=:b1)           ";

typedef struct { unsigned short len; unsigned char arr[1]; } VARCHAR;
typedef struct { unsigned short len; unsigned char arr[1]; } varchar;

/* cud (compilation unit data) array */
static const short sqlcud0[] =
{12,4130,1,0,0,
5,0,0,1,62,0,4,123,0,0,1,0,0,1,0,2,3,0,0,
24,0,0,2,189,0,4,179,0,0,5,1,0,1,0,2,3,0,0,2,3,0,0,2,4,0,0,2,4,0,0,1,3,0,0,
59,0,0,3,192,0,4,186,0,0,5,1,0,1,0,2,3,0,0,2,3,0,0,2,4,0,0,2,4,0,0,1,3,0,0,
94,0,0,4,207,0,4,229,0,0,4,0,0,1,0,2,4,0,0,2,4,0,0,2,4,0,0,2,4,0,0,
125,0,0,5,136,0,4,244,0,0,2,0,0,1,0,2,4,0,0,2,4,0,0,
148,0,0,6,148,0,4,291,0,0,6,0,0,1,0,2,3,0,0,2,3,0,0,2,3,0,0,2,97,0,0,2,3,0,0,2,
3,0,0,
187,0,0,7,84,0,4,356,0,0,2,0,0,1,0,2,3,0,0,2,9,0,0,
210,0,0,8,98,0,4,406,0,0,2,0,0,1,0,2,3,0,0,2,9,0,0,
233,0,0,9,361,0,9,517,0,0,2,2,0,1,0,1,3,0,0,1,3,0,0,
256,0,0,9,0,0,13,518,0,0,23,0,0,1,0,2,3,0,0,2,4,0,0,2,4,0,0,2,4,0,0,2,4,0,0,2,
4,0,0,2,4,0,0,2,4,0,0,2,4,0,0,2,4,0,0,2,4,0,0,2,4,0,0,2,4,0,0,2,4,0,0,2,3,0,0,
2,4,0,0,2,4,0,0,2,4,0,0,2,4,0,0,2,4,0,0,2,4,0,0,2,4,0,0,2,4,0,0,
363,0,0,9,0,0,15,570,0,0,0,0,0,1,0,
378,0,0,10,121,0,9,611,0,0,2,2,0,1,0,1,3,0,0,1,3,0,0,
401,0,0,10,0,0,13,612,0,0,3,0,0,1,0,2,3,0,0,2,3,0,0,2,3,0,0,
428,0,0,10,0,0,15,628,0,0,0,0,0,1,0,
443,0,0,11,453,0,3,708,0,0,24,24,0,1,0,1,3,0,0,1,3,0,0,1,4,0,0,1,4,0,0,1,4,0,0,
1,4,0,0,1,4,0,0,1,4,0,0,1,4,0,0,1,4,0,0,1,4,0,0,1,4,0,0,1,4,0,0,1,4,0,0,1,4,0,
0,1,3,0,0,1,4,0,0,1,4,0,0,1,4,0,0,1,4,0,0,1,4,0,0,1,4,0,0,1,4,0,0,1,4,0,0,
554,0,0,12,121,0,3,765,0,0,5,5,0,1,0,1,3,0,0,1,3,0,0,1,3,0,0,1,3,0,0,1,3,0,0,
589,0,0,13,248,0,6,811,0,0,5,5,0,1,0,3,3,0,0,1,3,0,0,1,3,0,0,1,97,0,0,1,97,0,0,
624,0,0,14,251,0,6,821,0,0,5,5,0,1,0,3,3,0,0,1,3,0,0,1,3,0,0,1,97,0,0,1,97,0,0,
};


//*-- AUTHOR : Ilse Koenig
//*-- Modified : 02/04/2003 by T. Wojcik
//*-- Modified : 26/04/2002 by I. Koenig
//*-- Created : 08/01/2001

//_HADES_CLASS_DESCRIPTION 
//////////////////////////////////////////////////////////////////////////////
// HTofinoParOraIo
//
// Interface class to database Oracle for input/output of parameters needed
// by the Tofino
// (uses the Oracle C/C++ precompiler)
//
//////////////////////////////////////////////////////////////////////////////
using namespace std;
#include "htofinoparoraio.h"
#include "hades.h"
#include "hlocation.h"
#include "hspectrometer.h"
#include "htofinocalpar.h"
#include "htofinodigitpar.h"
#include "htofinodetector.h"
#include "htofinolookup.h"
#include "htofinogeompar.h"
#include "htofinoshowermap.h"
#include "hgeomcompositevolume.h"
#include "hgeomoradetversion.h"
#include <iostream>
#include <iomanip>
#include <unistd.h>

#define SQLCA_STORAGE_CLASS extern
#define ORACA_STORAGE_CLASS extern

// Oracle communication area
#include <oraca.h>
// SQL Communications Area
#include <sqlca.h>

ClassImp(HTofinoParOraIo)

#define TOFINO_MAXMODS 6
#define TOFINO_MAXCELL 4
#define TOFINO_MAXCHAN 48
#define SHOWER_MAXPADS 1024
#define SHOWER_MAXROWS 32
#define SHOWER_MAXCOLS 32
#define NO_TOFINO_CELL 9 //For shower Tofino Map

HTofinoParOraIo::HTofinoParOraIo(HOraConn* pC) : HDetParOraIo(pC) {
  // constructor
  // sets the name of the I/O class "HTofinoParIo"
  // gets the pointer to the connection class
  fName="HTofinoParIo";
  numModules=0;
  tofinoIds=0;
  initModules=0;
  geomVers=0;
}


HTofinoParOraIo::~HTofinoParOraIo() {
  // destructor
  if (tofinoIds) delete tofinoIds;
  if (initModules) delete initModules;
  if (geomVers) delete geomVers;
}
  

Bool_t HTofinoParOraIo::init(HParSet* pPar,Int_t* set) {
  // calls special read-function for each parameter container
  const Text_t* name=pPar->IsA()->GetName();
  if (startIo(pPar)<=0) return kFALSE;
  if (strcmp(name,"HTofinoLookup")==0) return read(((HTofinoLookup*)pPar),set); 
  if (strcmp(name,"HTofinoGeomPar")==0) return read(((HTofinoGeomPar*)pPar),set);
  if (strcmp(name,"HTofinoCalPar")==0) return read(((HTofinoCalPar*)pPar),set);
  if (strcmp(name,"HTofinoShowerMap")==0) return read(((HTofinoShowerMap*)pPar),set);
  if (strcmp(name,"HTofinoDigitPar")==0) return readCond((HParCond*)pPar,set);
  cout<<"initialization of "<<name<<" not possible from Oracle!"<<endl;
  return kFALSE;
}


Int_t HTofinoParOraIo::write(HParSet* pPar) {
  // calls the appropriate write function for the container
  const Text_t* name=pPar->IsA()->GetName();
  if (startIo(pPar)<=0) return kFALSE;
  if (strcmp(name,"HTofinoGeomPar")==0) return writeAlignment((HTofinoGeomPar*)pPar);
  if (strcmp(name,"HTofinoCalPar")==0) return writePar((HTofinoCalPar*)pPar);
  if (strcmp(name,"HTofinoShowerMap")==0) return writePar((HTofinoShowerMap*)pPar);
  if (strcmp(name,"HTofinoDigitPar")==0) return writeCond((HParCond*)pPar);
  cout<<"No write-interface to Oracle for parameter container "
      <<pPar->GetName()<<endl;
  return 0;
}


Int_t HTofinoParOraIo::startIo(HParSet* pPar) {
  // Gets the run start of the actual run
  // reads the detector setup from Oracle for the first run and return the number modules found
  // Returns -1, if the run is not found, or 0, if no modules are found for this run
  runStart=getRunStart(pPar);
  if (runStart>0 && tofinoIds==0) readIds();
  if (runStart==-1 || numModules<=0) {
    pPar->setInputVersion(-1,inputNumber);
    return -1;
  }
  return runStart;
}


Int_t HTofinoParOraIo::readIds() {
  // reads the id numbers of all modules defined for the actual run
  // and stores them in array tofinoIds
  // returns the run id if at least one module can be found
  // returns -1 if nothing is found
  HTofinoDetector* det=(HTofinoDetector*)(gHades->getSetup()->getDetector("Tofino"));
  /* EXEC SQL BEGIN DECLARE SECTION; */ 

    int id[TOFINO_MAXMODS];
  /* EXEC SQL END DECLARE SECTION; */ 

  /* EXEC SQL WHENEVER SQLERROR DO showSqlError("readIds()"); */ 

  /* EXEC SQL WHENEVER NOT FOUND CONTINUE; */ 

  /* EXEC SQL SELECT module
    INTO :id
    FROM tofino_ana.det_setup_at_run_hist; */ 

{
  struct sqlexd sqlstm;
  sqlorat((void **)0, &sqlctx, &oraca);
  sqlstm.sqlvsn = 12;
  sqlstm.arrsiz = 1;
  sqlstm.sqladtp = &sqladt;
  sqlstm.sqltdsp = &sqltds;
  sqlstm.stmt = "select module into :b0  from tofino_ana.det_setup_at_run_hi\
st ";
  sqlstm.iters = (unsigned int  )6;
  sqlstm.offset = (unsigned int  )5;
  sqlstm.selerr = (unsigned short)1;
  sqlstm.cud = sqlcud0;
  sqlstm.sqlest = (unsigned char  *)&sqlca;
  sqlstm.sqlety = (unsigned short)256;
  sqlstm.occurs = (unsigned int  )0;
  sqlstm.sqhstv[0] = (         void  *)id;
  sqlstm.sqhstl[0] = (unsigned int  )sizeof(int);
  sqlstm.sqhsts[0] = (         int  )sizeof(int);
  sqlstm.sqindv[0] = (         void  *)0;
  sqlstm.sqinds[0] = (         int  )0;
  sqlstm.sqharm[0] = (unsigned int  )0;
  sqlstm.sqharc[0] = (unsigned int   *)0;
  sqlstm.sqadto[0] = (unsigned short )0;
  sqlstm.sqtdso[0] = (unsigned short )0;
  sqlstm.sqphsv = sqlstm.sqhstv;
  sqlstm.sqphsl = sqlstm.sqhstl;
  sqlstm.sqphss = sqlstm.sqhsts;
  sqlstm.sqpind = sqlstm.sqindv;
  sqlstm.sqpins = sqlstm.sqinds;
  sqlstm.sqparm = sqlstm.sqharm;
  sqlstm.sqparc = sqlstm.sqharc;
  sqlstm.sqpadto = sqlstm.sqadto;
  sqlstm.sqptdso = sqlstm.sqtdso;
  sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
  if (sqlca.sqlcode < 0) showSqlError("readIds()");
}


  numModules=sqlca.sqlerrd[2];
  if (numModules>0) {
    tofinoIds=new TArrayI(TOFINO_MAXMODS);
    for(Int_t i=0;i<TOFINO_MAXMODS;i++) tofinoIds->AddAt(0,i);
    initModules=new TArrayI(TOFINO_MAXMODS);
  }    
  for(Int_t i=0;i<numModules;i++) {
    Int_t s=id[i]-1;
    if (det->getModule(s,0)) tofinoIds->AddAt(id[i],s);
  }
  return numModules;
}

void HTofinoParOraIo::printIds() {
  // prints the id numbers of all modules
  if (tofinoIds) {
    for(Int_t i=0;i<TOFINO_MAXMODS;i++)
      cout<<"sector: "<<i+1<<"   tofino id: "<<tofinoIds->At(i)<<"\n";
  }
}

Int_t HTofinoParOraIo::getParVersion(HParSet *pPar, Int_t *versions) {
  //Reads the newest version number for parameters *TofinoPar*
  //valid for the curent event file 
  HParOraSet* oraSet=getOraSet(pPar);
  runStart = getRunStart(pPar);
  if (oraSet->contextId==-1 || runStart==-1) return -1;
  Int_t contVers=pPar->getInputVersion(inputNumber);
  if ( contVers!=-1 && runStart>=oraSet->versDate[0]
                    && runStart<=oraSet->versDate[1] ) {
    return contVers;
  }
  const Char_t* containerClass=pPar->IsA()->GetName();
  oraSet->clearVersDate();
  /* EXEC SQL BEGIN DECLARE SECTION; */ 

    struct {
      int  sec[TOFINO_MAXMODS];
      int  vers[TOFINO_MAXMODS];
      double since[TOFINO_MAXMODS];
      double until[TOFINO_MAXMODS];
    } par_vers;
    struct {
      short sec[TOFINO_MAXMODS];
      short vers[TOFINO_MAXMODS];
      short since[TOFINO_MAXMODS];
      short until[TOFINO_MAXMODS];
    } par_vers_ind;
    int context;
  /* EXEC SQL END DECLARE SECTION; */ 

  /* EXEC SQL WHENEVER SQLERROR DO showSqlError("getParVersion(HParOraSet*)"); */ 

  /* EXEC SQL WHENEVER NOT FOUND CONTINUE; */ 

  context = oraSet->contextId;
  if (strcmp(containerClass,"HTofinoCalPar")==0) {
    /* EXEC SQL SELECT sector, vers_id,
                   hdate.to_ansitime(valid_since),
                   hdate.to_ansitime(valid_until)
             INTO :par_vers INDICATOR :par_vers_ind
             FROM tofino_ana.tofino_cal_par_vers_at_date
             WHERE context_id = :context; */ 

{
    struct sqlexd sqlstm;
    sqlorat((void **)0, &sqlctx, &oraca);
    sqlstm.sqlvsn = 12;
    sqlstm.arrsiz = 5;
    sqlstm.sqladtp = &sqladt;
    sqlstm.sqltdsp = &sqltds;
    sqlstm.stmt = "select sector ,vers_id ,hdate.to_ansitime(valid_since) ,h\
date.to_ansitime(valid_until) into :s1:s2 ,:s3:s4 ,:s5:s6 ,:s7:s8   from tofin\
o_ana.tofino_cal_par_vers_at_date where context_id=:b2";
    sqlstm.iters = (unsigned int  )6;
    sqlstm.offset = (unsigned int  )24;
    sqlstm.selerr = (unsigned short)1;
    sqlstm.cud = sqlcud0;
    sqlstm.sqlest = (unsigned char  *)&sqlca;
    sqlstm.sqlety = (unsigned short)256;
    sqlstm.occurs = (unsigned int  )0;
    sqlstm.sqhstv[0] = (         void  *)par_vers.sec;
    sqlstm.sqhstl[0] = (unsigned int  )sizeof(int);
    sqlstm.sqhsts[0] = (         int  )sizeof(int);
    sqlstm.sqindv[0] = (         void  *)par_vers_ind.sec;
    sqlstm.sqinds[0] = (         int  )sizeof(short);
    sqlstm.sqharm[0] = (unsigned int  )0;
    sqlstm.sqharc[0] = (unsigned int   *)0;
    sqlstm.sqadto[0] = (unsigned short )0;
    sqlstm.sqtdso[0] = (unsigned short )0;
    sqlstm.sqhstv[1] = (         void  *)par_vers.vers;
    sqlstm.sqhstl[1] = (unsigned int  )sizeof(int);
    sqlstm.sqhsts[1] = (         int  )sizeof(int);
    sqlstm.sqindv[1] = (         void  *)par_vers_ind.vers;
    sqlstm.sqinds[1] = (         int  )sizeof(short);
    sqlstm.sqharm[1] = (unsigned int  )0;
    sqlstm.sqharc[1] = (unsigned int   *)0;
    sqlstm.sqadto[1] = (unsigned short )0;
    sqlstm.sqtdso[1] = (unsigned short )0;
    sqlstm.sqhstv[2] = (         void  *)par_vers.since;
    sqlstm.sqhstl[2] = (unsigned int  )sizeof(double);
    sqlstm.sqhsts[2] = (         int  )sizeof(double);
    sqlstm.sqindv[2] = (         void  *)par_vers_ind.since;
    sqlstm.sqinds[2] = (         int  )sizeof(short);
    sqlstm.sqharm[2] = (unsigned int  )0;
    sqlstm.sqharc[2] = (unsigned int   *)0;
    sqlstm.sqadto[2] = (unsigned short )0;
    sqlstm.sqtdso[2] = (unsigned short )0;
    sqlstm.sqhstv[3] = (         void  *)par_vers.until;
    sqlstm.sqhstl[3] = (unsigned int  )sizeof(double);
    sqlstm.sqhsts[3] = (         int  )sizeof(double);
    sqlstm.sqindv[3] = (         void  *)par_vers_ind.until;
    sqlstm.sqinds[3] = (         int  )sizeof(short);
    sqlstm.sqharm[3] = (unsigned int  )0;
    sqlstm.sqharc[3] = (unsigned int   *)0;
    sqlstm.sqadto[3] = (unsigned short )0;
    sqlstm.sqtdso[3] = (unsigned short )0;
    sqlstm.sqhstv[4] = (         void  *)&context;
    sqlstm.sqhstl[4] = (unsigned int  )sizeof(int);
    sqlstm.sqhsts[4] = (         int  )sizeof(int);
    sqlstm.sqindv[4] = (         void  *)0;
    sqlstm.sqinds[4] = (         int  )0;
    sqlstm.sqharm[4] = (unsigned int  )0;
    sqlstm.sqadto[4] = (unsigned short )0;
    sqlstm.sqtdso[4] = (unsigned short )0;
    sqlstm.sqphsv = sqlstm.sqhstv;
    sqlstm.sqphsl = sqlstm.sqhstl;
    sqlstm.sqphss = sqlstm.sqhsts;
    sqlstm.sqpind = sqlstm.sqindv;
    sqlstm.sqpins = sqlstm.sqinds;
    sqlstm.sqparm = sqlstm.sqharm;
    sqlstm.sqparc = sqlstm.sqharc;
    sqlstm.sqpadto = sqlstm.sqadto;
    sqlstm.sqptdso = sqlstm.sqtdso;
    sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
    if (sqlca.sqlcode < 0) showSqlError("getParVersion(HParOraSet*)");
}


  } else if (strcmp(containerClass,"HTofinoShowerMap")==0) {
    /* EXEC SQL SELECT sector, vers_id,
                    hdate.to_ansitime(valid_since),
                    hdate.to_ansitime(valid_until)
             INTO :par_vers INDICATOR :par_vers_ind
             FROM tofino_ana.tofino_shower_map_vers_at_date
             WHERE context_id = :context; */ 

{
    struct sqlexd sqlstm;
    sqlorat((void **)0, &sqlctx, &oraca);
    sqlstm.sqlvsn = 12;
    sqlstm.arrsiz = 5;
    sqlstm.sqladtp = &sqladt;
    sqlstm.sqltdsp = &sqltds;
    sqlstm.stmt = "select sector ,vers_id ,hdate.to_ansitime(valid_since) ,h\
date.to_ansitime(valid_until) into :s1:s2 ,:s3:s4 ,:s5:s6 ,:s7:s8   from tofin\
o_ana.tofino_shower_map_vers_at_date where context_id=:b2";
    sqlstm.iters = (unsigned int  )6;
    sqlstm.offset = (unsigned int  )59;
    sqlstm.selerr = (unsigned short)1;
    sqlstm.cud = sqlcud0;
    sqlstm.sqlest = (unsigned char  *)&sqlca;
    sqlstm.sqlety = (unsigned short)256;
    sqlstm.occurs = (unsigned int  )0;
    sqlstm.sqhstv[0] = (         void  *)par_vers.sec;
    sqlstm.sqhstl[0] = (unsigned int  )sizeof(int);
    sqlstm.sqhsts[0] = (         int  )sizeof(int);
    sqlstm.sqindv[0] = (         void  *)par_vers_ind.sec;
    sqlstm.sqinds[0] = (         int  )sizeof(short);
    sqlstm.sqharm[0] = (unsigned int  )0;
    sqlstm.sqharc[0] = (unsigned int   *)0;
    sqlstm.sqadto[0] = (unsigned short )0;
    sqlstm.sqtdso[0] = (unsigned short )0;
    sqlstm.sqhstv[1] = (         void  *)par_vers.vers;
    sqlstm.sqhstl[1] = (unsigned int  )sizeof(int);
    sqlstm.sqhsts[1] = (         int  )sizeof(int);
    sqlstm.sqindv[1] = (         void  *)par_vers_ind.vers;
    sqlstm.sqinds[1] = (         int  )sizeof(short);
    sqlstm.sqharm[1] = (unsigned int  )0;
    sqlstm.sqharc[1] = (unsigned int   *)0;
    sqlstm.sqadto[1] = (unsigned short )0;
    sqlstm.sqtdso[1] = (unsigned short )0;
    sqlstm.sqhstv[2] = (         void  *)par_vers.since;
    sqlstm.sqhstl[2] = (unsigned int  )sizeof(double);
    sqlstm.sqhsts[2] = (         int  )sizeof(double);
    sqlstm.sqindv[2] = (         void  *)par_vers_ind.since;
    sqlstm.sqinds[2] = (         int  )sizeof(short);
    sqlstm.sqharm[2] = (unsigned int  )0;
    sqlstm.sqharc[2] = (unsigned int   *)0;
    sqlstm.sqadto[2] = (unsigned short )0;
    sqlstm.sqtdso[2] = (unsigned short )0;
    sqlstm.sqhstv[3] = (         void  *)par_vers.until;
    sqlstm.sqhstl[3] = (unsigned int  )sizeof(double);
    sqlstm.sqhsts[3] = (         int  )sizeof(double);
    sqlstm.sqindv[3] = (         void  *)par_vers_ind.until;
    sqlstm.sqinds[3] = (         int  )sizeof(short);
    sqlstm.sqharm[3] = (unsigned int  )0;
    sqlstm.sqharc[3] = (unsigned int   *)0;
    sqlstm.sqadto[3] = (unsigned short )0;
    sqlstm.sqtdso[3] = (unsigned short )0;
    sqlstm.sqhstv[4] = (         void  *)&context;
    sqlstm.sqhstl[4] = (unsigned int  )sizeof(int);
    sqlstm.sqhsts[4] = (         int  )sizeof(int);
    sqlstm.sqindv[4] = (         void  *)0;
    sqlstm.sqinds[4] = (         int  )0;
    sqlstm.sqharm[4] = (unsigned int  )0;
    sqlstm.sqadto[4] = (unsigned short )0;
    sqlstm.sqtdso[4] = (unsigned short )0;
    sqlstm.sqphsv = sqlstm.sqhstv;
    sqlstm.sqphsl = sqlstm.sqhstl;
    sqlstm.sqphss = sqlstm.sqhsts;
    sqlstm.sqpind = sqlstm.sqindv;
    sqlstm.sqpins = sqlstm.sqinds;
    sqlstm.sqparm = sqlstm.sqharm;
    sqlstm.sqparc = sqlstm.sqharc;
    sqlstm.sqpadto = sqlstm.sqadto;
    sqlstm.sqptdso = sqlstm.sqtdso;
    sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
    if (sqlca.sqlcode < 0) showSqlError("getParVersion(HParOraSet*)");
}


  }
  for(Int_t i=0;i<sqlca.sqlerrd[2];i++) {
    Int_t s = par_vers.sec[i]-1;
    versions[s] = par_vers.vers[i];
    if (par_vers.since[i]>oraSet->versDate[0]) {
        oraSet->versDate[0]=par_vers.since[i];
    }
    if (par_vers.until[i]<oraSet->versDate[1]) {
        oraSet->versDate[1]=par_vers.until[i];
    }
  }
  if (oraSet->versDate[0]>=0) return getActRunId();
  return -1;
}

Int_t HTofinoParOraIo::getLookupVersion(HTofinoLookup* pPar) { 
  // reads the version for the TofinoLookup container valid at the start time
  // of the actual run
  // returns -1, if no data are found
  HParOraSet* oraSet=getOraSet(pPar);
  Int_t contVers=pPar->getInputVersion(inputNumber);
  if (contVers!=-1 && runStart>=oraSet->versDate[0] && runStart<=oraSet->versDate[1]) {
    return contVers;
  }
  Double_t dateRange[2]={-1.,1.e+12};
  /* EXEC SQL BEGIN DECLARE SECTION; */ 

    double c_since;
    double c_until;
    double r_since;
    double r_until;
    short  c_since_ind;
    short  c_until_ind;
    short  r_since_ind;
    short  r_until_ind;
  /* EXEC SQL END DECLARE SECTION; */ 

  /* EXEC SQL WHENEVER SQLERROR DO showSqlError("getLookupVersion(HTofinoLookup*)"); */ 

  /* EXEC SQL WHENEVER NOT FOUND GOTO notfound; */ 

  /* EXEC SQL SELECT hdate.to_ansitime(config_since), 
                  hdate.to_ansitime(config_until),
                  hdate.to_ansitime(dc_since),
                  hdate.to_ansitime(dc_until)
    INTO :c_since:c_since_ind, :c_until:c_until_ind,
         :r_since:r_since_ind, :r_until:r_until_ind
    FROM tof_ana.tofino_lookup_time_range_hist; */ 

{
  struct sqlexd sqlstm;
  sqlorat((void **)0, &sqlctx, &oraca);
  sqlstm.sqlvsn = 12;
  sqlstm.arrsiz = 5;
  sqlstm.sqladtp = &sqladt;
  sqlstm.sqltdsp = &sqltds;
  sqlstm.stmt = "select hdate.to_ansitime(config_since) ,hdate.to_ansitime(c\
onfig_until) ,hdate.to_ansitime(dc_since) ,hdate.to_ansitime(dc_until) into :b\
0:b1,:b2:b3,:b4:b5,:b6:b7  from tof_ana.tofino_lookup_time_range_hist ";
  sqlstm.iters = (unsigned int  )1;
  sqlstm.offset = (unsigned int  )94;
  sqlstm.selerr = (unsigned short)1;
  sqlstm.cud = sqlcud0;
  sqlstm.sqlest = (unsigned char  *)&sqlca;
  sqlstm.sqlety = (unsigned short)256;
  sqlstm.occurs = (unsigned int  )0;
  sqlstm.sqhstv[0] = (         void  *)&c_since;
  sqlstm.sqhstl[0] = (unsigned int  )sizeof(double);
  sqlstm.sqhsts[0] = (         int  )0;
  sqlstm.sqindv[0] = (         void  *)&c_since_ind;
  sqlstm.sqinds[0] = (         int  )0;
  sqlstm.sqharm[0] = (unsigned int  )0;
  sqlstm.sqadto[0] = (unsigned short )0;
  sqlstm.sqtdso[0] = (unsigned short )0;
  sqlstm.sqhstv[1] = (         void  *)&c_until;
  sqlstm.sqhstl[1] = (unsigned int  )sizeof(double);
  sqlstm.sqhsts[1] = (         int  )0;
  sqlstm.sqindv[1] = (         void  *)&c_until_ind;
  sqlstm.sqinds[1] = (         int  )0;
  sqlstm.sqharm[1] = (unsigned int  )0;
  sqlstm.sqadto[1] = (unsigned short )0;
  sqlstm.sqtdso[1] = (unsigned short )0;
  sqlstm.sqhstv[2] = (         void  *)&r_since;
  sqlstm.sqhstl[2] = (unsigned int  )sizeof(double);
  sqlstm.sqhsts[2] = (         int  )0;
  sqlstm.sqindv[2] = (         void  *)&r_since_ind;
  sqlstm.sqinds[2] = (         int  )0;
  sqlstm.sqharm[2] = (unsigned int  )0;
  sqlstm.sqadto[2] = (unsigned short )0;
  sqlstm.sqtdso[2] = (unsigned short )0;
  sqlstm.sqhstv[3] = (         void  *)&r_until;
  sqlstm.sqhstl[3] = (unsigned int  )sizeof(double);
  sqlstm.sqhsts[3] = (         int  )0;
  sqlstm.sqindv[3] = (         void  *)&r_until_ind;
  sqlstm.sqinds[3] = (         int  )0;
  sqlstm.sqharm[3] = (unsigned int  )0;
  sqlstm.sqadto[3] = (unsigned short )0;
  sqlstm.sqtdso[3] = (unsigned short )0;
  sqlstm.sqphsv = sqlstm.sqhstv;
  sqlstm.sqphsl = sqlstm.sqhstl;
  sqlstm.sqphss = sqlstm.sqhsts;
  sqlstm.sqpind = sqlstm.sqindv;
  sqlstm.sqpins = sqlstm.sqinds;
  sqlstm.sqparm = sqlstm.sqharm;
  sqlstm.sqparc = sqlstm.sqharc;
  sqlstm.sqpadto = sqlstm.sqadto;
  sqlstm.sqptdso = sqlstm.sqtdso;
  sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
  if (sqlca.sqlcode == 1403) goto notfound;
  if (sqlca.sqlcode < 0) showSqlError("getLookupVersion(HTofinoLookup*)");
}


  if (c_since_ind==-1||c_until_ind==-1||r_since_ind==-1||r_until_ind==-1) {
    oraSet->clearVersDate();
    return -1;
  }
  dateRange[0]=c_since;
  dateRange[1]=c_until;
  if (r_since>dateRange[0]) dateRange[0]=r_since;
  if (r_until<dateRange[1]) dateRange[1]=r_until;
  /* EXEC SQL SELECT hdate.to_ansitime(previous_until), 
                  hdate.to_ansitime(next_since)
    INTO :c_since:c_since_ind, :c_until:c_until_ind
    FROM tof_ana.tofino_lookup_time_range_check; */ 

{
  struct sqlexd sqlstm;
  sqlorat((void **)0, &sqlctx, &oraca);
  sqlstm.sqlvsn = 12;
  sqlstm.arrsiz = 5;
  sqlstm.sqladtp = &sqladt;
  sqlstm.sqltdsp = &sqltds;
  sqlstm.stmt = "select hdate.to_ansitime(previous_until) ,hdate.to_ansitime\
(next_since) into :b0:b1,:b2:b3  from tof_ana.tofino_lookup_time_range_check ";
  sqlstm.iters = (unsigned int  )1;
  sqlstm.offset = (unsigned int  )125;
  sqlstm.selerr = (unsigned short)1;
  sqlstm.cud = sqlcud0;
  sqlstm.sqlest = (unsigned char  *)&sqlca;
  sqlstm.sqlety = (unsigned short)256;
  sqlstm.occurs = (unsigned int  )0;
  sqlstm.sqhstv[0] = (         void  *)&c_since;
  sqlstm.sqhstl[0] = (unsigned int  )sizeof(double);
  sqlstm.sqhsts[0] = (         int  )0;
  sqlstm.sqindv[0] = (         void  *)&c_since_ind;
  sqlstm.sqinds[0] = (         int  )0;
  sqlstm.sqharm[0] = (unsigned int  )0;
  sqlstm.sqadto[0] = (unsigned short )0;
  sqlstm.sqtdso[0] = (unsigned short )0;
  sqlstm.sqhstv[1] = (         void  *)&c_until;
  sqlstm.sqhstl[1] = (unsigned int  )sizeof(double);
  sqlstm.sqhsts[1] = (         int  )0;
  sqlstm.sqindv[1] = (         void  *)&c_until_ind;
  sqlstm.sqinds[1] = (         int  )0;
  sqlstm.sqharm[1] = (unsigned int  )0;
  sqlstm.sqadto[1] = (unsigned short )0;
  sqlstm.sqtdso[1] = (unsigned short )0;
  sqlstm.sqphsv = sqlstm.sqhstv;
  sqlstm.sqphsl = sqlstm.sqhstl;
  sqlstm.sqphss = sqlstm.sqhsts;
  sqlstm.sqpind = sqlstm.sqindv;
  sqlstm.sqpins = sqlstm.sqinds;
  sqlstm.sqparm = sqlstm.sqharm;
  sqlstm.sqparc = sqlstm.sqharc;
  sqlstm.sqpadto = sqlstm.sqadto;
  sqlstm.sqptdso = sqlstm.sqtdso;
  sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
  if (sqlca.sqlcode == 1403) goto notfound;
  if (sqlca.sqlcode < 0) showSqlError("getLookupVersion(HTofinoLookup*)");
}


  if (c_since_ind!=-1 && c_since>dateRange[0]) dateRange[0]=c_since;
  if (c_until_ind!=-1 && c_until<dateRange[1]) dateRange[1]=c_until;
  if (contVers==-1 || runStart<oraSet->versDate[0] || runStart>oraSet->versDate[1] ||
      dateRange[0]!=oraSet->versDate[0] || dateRange[1]!=oraSet->versDate[1]) {
    oraSet->versDate[0]=dateRange[0];
    oraSet->versDate[1]=dateRange[1];
    return getActRunId();
  } else return contVers;
notfound:
  oraSet->clearVersDate();
  return -1;
};

Bool_t HTofinoParOraIo::read(HTofinoLookup* pPar, Int_t* set) {
  // reads the lookup table (parameter container TofinoLookup) needed by the unpacker
  Int_t version=getLookupVersion(pPar);
  if (version==-1) {
    pPar->setInputVersion(-1,inputNumber);
    return kFALSE;
  }
  if (version==pPar->getInputVersion(inputNumber)) return kTRUE;
  pPar->clear();
  initModules->Reset();
  /* EXEC SQL BEGIN DECLARE SECTION; */ 

    struct {
      int crate[TOFINO_MAXCHAN];
      int slot[TOFINO_MAXCHAN];
      int chan[TOFINO_MAXCHAN];
      char branch[TOFINO_MAXCHAN][2];
      int mod[TOFINO_MAXCHAN];
      int cell[TOFINO_MAXCHAN];
    } lrec;
    struct {
      short crate[TOFINO_MAXCHAN];
      short slot[TOFINO_MAXCHAN];
      short chan[TOFINO_MAXCHAN];
      short branch[TOFINO_MAXCHAN];
      short mod[TOFINO_MAXCHAN];
      short cell[TOFINO_MAXCHAN];
    } lrec_Ind;
  /* EXEC SQL END DECLARE SECTION; */ 

  /* EXEC SQL WHENEVER SQLERROR DO showSqlError("read(HTofinoLookup*,Int_t*)"); */ 

  /* EXEC SQL WHENEVER NOT FOUND CONTINUE; */ 

  /* EXEC SQL SELECT crate, slot, channel, branch, module, paddle
           INTO :lrec INDICATOR :lrec_Ind
           FROM tof_ana.tofino_lookup_at_histdate; */ 

{
  struct sqlexd sqlstm;
  sqlorat((void **)0, &sqlctx, &oraca);
  sqlstm.sqlvsn = 12;
  sqlstm.arrsiz = 6;
  sqlstm.sqladtp = &sqladt;
  sqlstm.sqltdsp = &sqltds;
  sqlstm.stmt = "select crate ,slot ,channel ,branch ,module ,paddle into :s\
1:s2 ,:s3:s4 ,:s5:s6 ,:s7:s8 ,:s9:s10 ,:s11:s12   from tof_ana.tofino_lookup_a\
t_histdate ";
  sqlstm.iters = (unsigned int  )48;
  sqlstm.offset = (unsigned int  )148;
  sqlstm.selerr = (unsigned short)1;
  sqlstm.cud = sqlcud0;
  sqlstm.sqlest = (unsigned char  *)&sqlca;
  sqlstm.sqlety = (unsigned short)256;
  sqlstm.occurs = (unsigned int  )0;
  sqlstm.sqhstv[0] = (         void  *)lrec.crate;
  sqlstm.sqhstl[0] = (unsigned int  )sizeof(int);
  sqlstm.sqhsts[0] = (         int  )sizeof(int);
  sqlstm.sqindv[0] = (         void  *)lrec_Ind.crate;
  sqlstm.sqinds[0] = (         int  )sizeof(short);
  sqlstm.sqharm[0] = (unsigned int  )0;
  sqlstm.sqharc[0] = (unsigned int   *)0;
  sqlstm.sqadto[0] = (unsigned short )0;
  sqlstm.sqtdso[0] = (unsigned short )0;
  sqlstm.sqhstv[1] = (         void  *)lrec.slot;
  sqlstm.sqhstl[1] = (unsigned int  )sizeof(int);
  sqlstm.sqhsts[1] = (         int  )sizeof(int);
  sqlstm.sqindv[1] = (         void  *)lrec_Ind.slot;
  sqlstm.sqinds[1] = (         int  )sizeof(short);
  sqlstm.sqharm[1] = (unsigned int  )0;
  sqlstm.sqharc[1] = (unsigned int   *)0;
  sqlstm.sqadto[1] = (unsigned short )0;
  sqlstm.sqtdso[1] = (unsigned short )0;
  sqlstm.sqhstv[2] = (         void  *)lrec.chan;
  sqlstm.sqhstl[2] = (unsigned int  )sizeof(int);
  sqlstm.sqhsts[2] = (         int  )sizeof(int);
  sqlstm.sqindv[2] = (         void  *)lrec_Ind.chan;
  sqlstm.sqinds[2] = (         int  )sizeof(short);
  sqlstm.sqharm[2] = (unsigned int  )0;
  sqlstm.sqharc[2] = (unsigned int   *)0;
  sqlstm.sqadto[2] = (unsigned short )0;
  sqlstm.sqtdso[2] = (unsigned short )0;
  sqlstm.sqhstv[3] = (         void  *)lrec.branch;
  sqlstm.sqhstl[3] = (unsigned int  )2;
  sqlstm.sqhsts[3] = (         int  )2;
  sqlstm.sqindv[3] = (         void  *)lrec_Ind.branch;
  sqlstm.sqinds[3] = (         int  )sizeof(short);
  sqlstm.sqharm[3] = (unsigned int  )0;
  sqlstm.sqharc[3] = (unsigned int   *)0;
  sqlstm.sqadto[3] = (unsigned short )0;
  sqlstm.sqtdso[3] = (unsigned short )0;
  sqlstm.sqhstv[4] = (         void  *)lrec.mod;
  sqlstm.sqhstl[4] = (unsigned int  )sizeof(int);
  sqlstm.sqhsts[4] = (         int  )sizeof(int);
  sqlstm.sqindv[4] = (         void  *)lrec_Ind.mod;
  sqlstm.sqinds[4] = (         int  )sizeof(short);
  sqlstm.sqharm[4] = (unsigned int  )0;
  sqlstm.sqharc[4] = (unsigned int   *)0;
  sqlstm.sqadto[4] = (unsigned short )0;
  sqlstm.sqtdso[4] = (unsigned short )0;
  sqlstm.sqhstv[5] = (         void  *)lrec.cell;
  sqlstm.sqhstl[5] = (unsigned int  )sizeof(int);
  sqlstm.sqhsts[5] = (         int  )sizeof(int);
  sqlstm.sqindv[5] = (         void  *)lrec_Ind.cell;
  sqlstm.sqinds[5] = (         int  )sizeof(short);
  sqlstm.sqharm[5] = (unsigned int  )0;
  sqlstm.sqharc[5] = (unsigned int   *)0;
  sqlstm.sqadto[5] = (unsigned short )0;
  sqlstm.sqtdso[5] = (unsigned short )0;
  sqlstm.sqphsv = sqlstm.sqhstv;
  sqlstm.sqphsl = sqlstm.sqhstl;
  sqlstm.sqphss = sqlstm.sqhsts;
  sqlstm.sqpind = sqlstm.sqindv;
  sqlstm.sqpins = sqlstm.sqinds;
  sqlstm.sqparm = sqlstm.sqharm;
  sqlstm.sqparc = sqlstm.sqharc;
  sqlstm.sqpadto = sqlstm.sqadto;
  sqlstm.sqptdso = sqlstm.sqtdso;
  sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
  if (sqlca.sqlcode < 0) showSqlError("read(HTofinoLookup*,Int_t*)");
}


  for(Int_t i=0;i<sqlca.sqlerrd[2];i++) {
    Int_t s=lrec.mod[i]-1;
    if (set[s]) {
      pPar->setAddress(lrec.crate[i]-1,lrec.slot[i]-1,lrec.branch[i][0],
                   lrec.chan[i],s,0,lrec.cell[i]-1);
      initModules->AddAt(s+1,s);
    }
  }
  Bool_t allFound=kTRUE;
  for(Int_t i=0;i<TOFINO_MAXMODS;i++) {
    if (set[i]>0 && initModules->At(i)<=0) allFound=kFALSE;
  }
  if (allFound) {
    pPar->setInputVersion(version,inputNumber);
    setChanged(pPar);
    printInfo(pPar->GetName());
  } else pPar->clear();
  return allFound;
}


Bool_t HTofinoParOraIo::read(HTofinoGeomPar* pPar, Int_t* set) {
  // reads the geometry of the MDC and fills the MdcGeomPar container
  Bool_t allFound=kTRUE;
  Int_t detId=-1;
  if (!geomVers) {
    TString detName="TOF";  // geometry is part of TOF!
    detId=getDetectorId(detName.Data());
    geomVers=new HGeomOraDetVersion(detName.Data(),detId);
  } else {
    detId=geomVers->getDetectorId();
  }
  if (detId<=0) {
    allFound=kFALSE;
    delete geomVers;
    geomVers=0;
  }
  if (detId>0&&pPar->isFirstInitialization()) {
    if (!readModGeomNames(pPar,set) || !readCompGeomNames(pPar,set)) {
      allFound=kFALSE;
      pPar->clear();
    } else addGeomOraSet(pPar);
  }  
  if (allFound) allFound=readDetectorGeometry(pPar,set,geomVers);
  return allFound;    
}


Bool_t HTofinoParOraIo::readModGeomNames(HTofinoGeomPar* pPar,Int_t* set) {
  // reads the tofino_pos_id of all modules
  /* EXEC SQL BEGIN DECLARE SECTION; */ 

    struct {
      int id[TOFINO_MAXMODS];
      /* varchar oname[TOFINO_MAXMODS][9]; */ 
struct { unsigned short len; unsigned char arr[10]; } oname[6];

    } mods;
    struct {
      short id_Ind[TOFINO_MAXMODS];
      short oname_Ind[TOFINO_MAXMODS];
    } mods_Ind;
  /* EXEC SQL END DECLARE SECTION; */ 

  /* EXEC SQL WHENEVER SQLERROR DO showSqlError("readModGeomNames()"); */ 

  /* EXEC SQL WHENEVER NOT FOUND CONTINUE; */ 

  /* EXEC SQL SELECT module, geom_obj
           INTO :mods INDICATOR :mods_Ind
           FROM tofino_ana.det_setup_at_run_hist; */ 

{
  struct sqlexd sqlstm;
  sqlorat((void **)0, &sqlctx, &oraca);
  sqlstm.sqlvsn = 12;
  sqlstm.arrsiz = 6;
  sqlstm.sqladtp = &sqladt;
  sqlstm.sqltdsp = &sqltds;
  sqlstm.stmt = "select module ,geom_obj into :s1:s2 ,:s3:s4   from tofino_a\
na.det_setup_at_run_hist ";
  sqlstm.iters = (unsigned int  )6;
  sqlstm.offset = (unsigned int  )187;
  sqlstm.selerr = (unsigned short)1;
  sqlstm.cud = sqlcud0;
  sqlstm.sqlest = (unsigned char  *)&sqlca;
  sqlstm.sqlety = (unsigned short)256;
  sqlstm.occurs = (unsigned int  )0;
  sqlstm.sqhstv[0] = (         void  *)mods.id;
  sqlstm.sqhstl[0] = (unsigned int  )sizeof(int);
  sqlstm.sqhsts[0] = (         int  )sizeof(int);
  sqlstm.sqindv[0] = (         void  *)mods_Ind.id_Ind;
  sqlstm.sqinds[0] = (         int  )sizeof(short);
  sqlstm.sqharm[0] = (unsigned int  )0;
  sqlstm.sqharc[0] = (unsigned int   *)0;
  sqlstm.sqadto[0] = (unsigned short )0;
  sqlstm.sqtdso[0] = (unsigned short )0;
  sqlstm.sqhstv[1] = (         void  *)mods.oname;
  sqlstm.sqhstl[1] = (unsigned int  )11;
  sqlstm.sqhsts[1] = (         int  )12;
  sqlstm.sqindv[1] = (         void  *)mods_Ind.oname_Ind;
  sqlstm.sqinds[1] = (         int  )sizeof(short);
  sqlstm.sqharm[1] = (unsigned int  )0;
  sqlstm.sqharc[1] = (unsigned int   *)0;
  sqlstm.sqadto[1] = (unsigned short )0;
  sqlstm.sqtdso[1] = (unsigned short )0;
  sqlstm.sqphsv = sqlstm.sqhstv;
  sqlstm.sqphsl = sqlstm.sqhstl;
  sqlstm.sqphss = sqlstm.sqhsts;
  sqlstm.sqpind = sqlstm.sqindv;
  sqlstm.sqpins = sqlstm.sqinds;
  sqlstm.sqparm = sqlstm.sqharm;
  sqlstm.sqparc = sqlstm.sqharc;
  sqlstm.sqpadto = sqlstm.sqadto;
  sqlstm.sqptdso = sqlstm.sqtdso;
  sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
  if (sqlca.sqlcode < 0) showSqlError("readModGeomNames()");
}


  Char_t ref[10];
  initModules->Reset();
  for(Int_t i=0;i<sqlca.sqlerrd[2];i++) {
    Int_t s=mods.id[i]-1;
    HModGeomPar* pMod=pPar->getModule(s,0);
    if (pMod && set[s]) {
      if (mods_Ind.oname_Ind[i]!=-1) {
        mods.oname[i].arr[mods.oname[i].len]='\0';
        pMod->SetName((Char_t*)(mods.oname[i].arr));
        initModules->AddAt(s+1,s);
        strcpy(ref,(Char_t*)(mods.oname[i].arr));
        ref[3]='1'; // reference module in sector 1
                    // not yet introduced in database
        pMod->setRefName(ref);
        Int_t mr=pPar->getModNumInMod(ref);
        HGeomCompositeVolume* refMod=pPar->getRefVolume(mr);
        if (refMod==0) {
          refMod=new HGeomCompositeVolume(pPar->getNumComponents());
          refMod->SetName(ref);
          pPar->addRefVolume(refMod,mr);
        }
        pMod->setVolume(refMod);
      }
    }
  }
  Bool_t allFound=kTRUE;
  for(Int_t i=0;i<TOFINO_MAXMODS;i++) {
    if (set[i]>0 && initModules->At(i)==0) allFound=kFALSE;
  }
  return allFound;
}


Bool_t HTofinoParOraIo::readCompGeomNames(HTofinoGeomPar* pPar,Int_t* set) {
  // reads the names of all paddles in the geometry tables
  /* EXEC SQL BEGIN DECLARE SECTION; */ 

    struct {
      int cell[TOFINO_MAXCELL];
      /* varchar oname[TOFINO_MAXCELL][9]; */ 
struct { unsigned short len; unsigned char arr[10]; } oname[4];

    } comps;
    struct {
      short cell_Ind[TOFINO_MAXCELL];
      short oname_Ind[TOFINO_MAXCELL];
    } comps_Ind;
  /* EXEC SQL END DECLARE SECTION; */ 

  /* EXEC SQL WHENEVER SQLERROR DO showSqlError("readCompGeomNames(...)"); */ 

  /* EXEC SQL WHENEVER NOT FOUND CONTINUE; */ 

  /* EXEC SQL SELECT paddle_nr, geom_obj_name
           INTO :comps INDICATOR :comps_Ind
           FROM tofino_ana.paddle
           WHERE det_module_id=1; */ 

{
  struct sqlexd sqlstm;
  sqlorat((void **)0, &sqlctx, &oraca);
  sqlstm.sqlvsn = 12;
  sqlstm.arrsiz = 6;
  sqlstm.sqladtp = &sqladt;
  sqlstm.sqltdsp = &sqltds;
  sqlstm.stmt = "select paddle_nr ,geom_obj_name into :s1:s2 ,:s3:s4   from \
tofino_ana.paddle where det_module_id=1";
  sqlstm.iters = (unsigned int  )4;
  sqlstm.offset = (unsigned int  )210;
  sqlstm.selerr = (unsigned short)1;
  sqlstm.cud = sqlcud0;
  sqlstm.sqlest = (unsigned char  *)&sqlca;
  sqlstm.sqlety = (unsigned short)256;
  sqlstm.occurs = (unsigned int  )0;
  sqlstm.sqhstv[0] = (         void  *)comps.cell;
  sqlstm.sqhstl[0] = (unsigned int  )sizeof(int);
  sqlstm.sqhsts[0] = (         int  )sizeof(int);
  sqlstm.sqindv[0] = (         void  *)comps_Ind.cell_Ind;
  sqlstm.sqinds[0] = (         int  )sizeof(short);
  sqlstm.sqharm[0] = (unsigned int  )0;
  sqlstm.sqharc[0] = (unsigned int   *)0;
  sqlstm.sqadto[0] = (unsigned short )0;
  sqlstm.sqtdso[0] = (unsigned short )0;
  sqlstm.sqhstv[1] = (         void  *)comps.oname;
  sqlstm.sqhstl[1] = (unsigned int  )11;
  sqlstm.sqhsts[1] = (         int  )12;
  sqlstm.sqindv[1] = (         void  *)comps_Ind.oname_Ind;
  sqlstm.sqinds[1] = (         int  )sizeof(short);
  sqlstm.sqharm[1] = (unsigned int  )0;
  sqlstm.sqharc[1] = (unsigned int   *)0;
  sqlstm.sqadto[1] = (unsigned short )0;
  sqlstm.sqtdso[1] = (unsigned short )0;
  sqlstm.sqphsv = sqlstm.sqhstv;
  sqlstm.sqphsl = sqlstm.sqhstl;
  sqlstm.sqphss = sqlstm.sqhsts;
  sqlstm.sqpind = sqlstm.sqindv;
  sqlstm.sqpins = sqlstm.sqinds;
  sqlstm.sqparm = sqlstm.sqharm;
  sqlstm.sqparc = sqlstm.sqharc;
  sqlstm.sqpadto = sqlstm.sqadto;
  sqlstm.sqptdso = sqlstm.sqtdso;
  sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
  if (sqlca.sqlcode < 0) showSqlError("readCompGeomNames(...)");
}

         // reference module in sector 1
  HModGeomPar* pMod=0;
  for(Int_t s=0;s<TOFINO_MAXMODS;s++) {
    pMod=pPar->getModule(s,0);
    if (pMod) break;
  }
  if (pMod) {
    HGeomCompositeVolume* pRefMod=pMod->getRefVolume();
    for(Int_t k=0;k<sqlca.sqlerrd[2];k++) {
      if (comps_Ind.oname_Ind[k]!=-1) {
        comps.oname[k].arr[comps.oname[k].len]='\0';
        HGeomVolume* volu=pRefMod->getComponent((comps.cell[k]-1));
        volu->SetName((Char_t*)(comps.oname[k].arr));
      }
    }
  }
  if (sqlca.sqlerrd[2]>0) return kTRUE;
  else return kFALSE;
}

Bool_t HTofinoParOraIo::read(HTofinoCalPar* pPar, Int_t* set) {
  // reads the calibration parameters and fill the TofinoCalPar container
  Int_t contVers=pPar->getInputVersion(inputNumber);
  Int_t versions[TOFINO_MAXMODS];
  Int_t version=getParVersion(pPar,versions);
  if (version==-1) {
    pPar->setInputVersion(-1,inputNumber);
    return kFALSE;
    }
  if (contVers==version) return kTRUE;
  if (inputNumber==1) pPar->clear();
  pPar->setInputVersion(version,inputNumber);
  initModules->Reset();
  /* EXEC SQL BEGIN DECLARE SECTION; */ 

  int  sec;
  int vers;
  struct {
    int   paddle[TOFINO_MAXCELL];
    float slope[TOFINO_MAXCELL];
    float offset[TOFINO_MAXCELL];
    float delta_slope[TOFINO_MAXCELL];
    float delta_offset[TOFINO_MAXCELL];
    float cfd_threshold[TOFINO_MAXCELL];
    float res_par1[TOFINO_MAXCELL];
    float res_par2[TOFINO_MAXCELL];
    float res_par3[TOFINO_MAXCELL];
    float dist_par1[TOFINO_MAXCELL];
    float dist_par2[TOFINO_MAXCELL];
    float dist_par3[TOFINO_MAXCELL];
    float dist_par4[TOFINO_MAXCELL];
    float min_length[TOFINO_MAXCELL];
    int   dist_param_type[TOFINO_MAXCELL];
    float time_channel[TOFINO_MAXCELL];
    float coord_pos[TOFINO_MAXCELL];
    //New params added in 2003
    float adc_threshold[TOFINO_MAXCELL];
    float adc_pedestal[TOFINO_MAXCELL];
    float e_loss_par1[TOFINO_MAXCELL];
    float e_loss_par2[TOFINO_MAXCELL];
    float e_loss_par3[TOFINO_MAXCELL];
    float e_loss_par4[TOFINO_MAXCELL];

  }cal;
  struct{
    short paddle[TOFINO_MAXCELL];
    short slope[TOFINO_MAXCELL];
    short offset[TOFINO_MAXCELL];
    short delta_slope[TOFINO_MAXCELL];
    short delta_offset[TOFINO_MAXCELL];
    short cfd_threshold[TOFINO_MAXCELL];
    short res_par1[TOFINO_MAXCELL];
    short res_par2[TOFINO_MAXCELL];
    short res_par3[TOFINO_MAXCELL];
    short dist_par1[TOFINO_MAXCELL];
    short dist_par2[TOFINO_MAXCELL];
    short dist_par3[TOFINO_MAXCELL];
    short dist_par4[TOFINO_MAXCELL];
    short min_length[TOFINO_MAXCELL];
    short dist_param_type[TOFINO_MAXCELL];
    short time_channel[TOFINO_MAXCELL];
    short coord_pos[TOFINO_MAXCELL];
    //New params added in 2003
    short adc_threshold[TOFINO_MAXCELL];
    short adc_pedestal[TOFINO_MAXCELL];
    short e_loss_par1[TOFINO_MAXCELL];
    short e_loss_par2[TOFINO_MAXCELL];
    short e_loss_par3[TOFINO_MAXCELL];
    short e_loss_par4[TOFINO_MAXCELL];
  }cal_ind;
  
  /* EXEC SQL END DECLARE SECTION; */ 

  /* EXEC SQL WHENEVER SQLERROR DO showSqlError("read(HTofinoCalPar*,Int_t*)"); */ 

  /* EXEC SQL WHENEVER NOT FOUND CONTINUE; */ 

  /* EXEC SQL DECLARE cal_cur CURSOR FOR
    SELECT paddle, slope, offset, delta_slope, delta_offset, cfd_threshold,
        res_par1, res_par2, res_par3, dist_par1, dist_par2, dist_par3,
        dist_par4, min_length, dist_param_type, time_channel, coord_pos,
        adc_threshold, adc_pedestal, e_loss_par1, e_loss_par2, e_loss_par3,
        e_loss_par4   
    FROM tofino_ana.tofino_cal_par_all
      WHERE sector= :sec AND version =: vers; */ 
 
  HLocation loc;
  HTofinoCalParCell *pCell;
  loc.setNIndex(2);
  for(Int_t s=0;s<TOFINO_MAXMODS;s++) {
    if(tofinoIds->At(s)>0 &&  versions[s]>0) {
      sec=s+1;
      vers=versions[s];
      /* EXEC SQL OPEN cal_cur; */ 

{
      struct sqlexd sqlstm;
      sqlorat((void **)0, &sqlctx, &oraca);
      sqlstm.sqlvsn = 12;
      sqlstm.arrsiz = 6;
      sqlstm.sqladtp = &sqladt;
      sqlstm.sqltdsp = &sqltds;
      sqlstm.stmt = sq0009;
      sqlstm.iters = (unsigned int  )1;
      sqlstm.offset = (unsigned int  )233;
      sqlstm.selerr = (unsigned short)1;
      sqlstm.cud = sqlcud0;
      sqlstm.sqlest = (unsigned char  *)&sqlca;
      sqlstm.sqlety = (unsigned short)256;
      sqlstm.occurs = (unsigned int  )0;
      sqlstm.sqcmod = (unsigned int )0;
      sqlstm.sqhstv[0] = (         void  *)&sec;
      sqlstm.sqhstl[0] = (unsigned int  )sizeof(int);
      sqlstm.sqhsts[0] = (         int  )0;
      sqlstm.sqindv[0] = (         void  *)0;
      sqlstm.sqinds[0] = (         int  )0;
      sqlstm.sqharm[0] = (unsigned int  )0;
      sqlstm.sqadto[0] = (unsigned short )0;
      sqlstm.sqtdso[0] = (unsigned short )0;
      sqlstm.sqhstv[1] = (         void  *)&vers;
      sqlstm.sqhstl[1] = (unsigned int  )sizeof(int);
      sqlstm.sqhsts[1] = (         int  )0;
      sqlstm.sqindv[1] = (         void  *)0;
      sqlstm.sqinds[1] = (         int  )0;
      sqlstm.sqharm[1] = (unsigned int  )0;
      sqlstm.sqadto[1] = (unsigned short )0;
      sqlstm.sqtdso[1] = (unsigned short )0;
      sqlstm.sqphsv = sqlstm.sqhstv;
      sqlstm.sqphsl = sqlstm.sqhstl;
      sqlstm.sqphss = sqlstm.sqhsts;
      sqlstm.sqpind = sqlstm.sqindv;
      sqlstm.sqpins = sqlstm.sqinds;
      sqlstm.sqparm = sqlstm.sqharm;
      sqlstm.sqparc = sqlstm.sqharc;
      sqlstm.sqpadto = sqlstm.sqadto;
      sqlstm.sqptdso = sqlstm.sqtdso;
      sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
      if (sqlca.sqlcode < 0) showSqlError("read(HTofinoCalPar*,Int_t*)");
}


      /* EXEC SQL FETCH cal_cur INTO :cal INDICATOR :cal_ind; */ 

{
      struct sqlexd sqlstm;
      sqlorat((void **)0, &sqlctx, &oraca);
      sqlstm.sqlvsn = 12;
      sqlstm.arrsiz = 23;
      sqlstm.sqladtp = &sqladt;
      sqlstm.sqltdsp = &sqltds;
      sqlstm.iters = (unsigned int  )4;
      sqlstm.offset = (unsigned int  )256;
      sqlstm.selerr = (unsigned short)1;
      sqlstm.cud = sqlcud0;
      sqlstm.sqlest = (unsigned char  *)&sqlca;
      sqlstm.sqlety = (unsigned short)256;
      sqlstm.occurs = (unsigned int  )0;
      sqlstm.sqfoff = (           int )0;
      sqlstm.sqfmod = (unsigned int )2;
      sqlstm.sqhstv[0] = (         void  *)cal.paddle;
      sqlstm.sqhstl[0] = (unsigned int  )sizeof(int);
      sqlstm.sqhsts[0] = (         int  )sizeof(int);
      sqlstm.sqindv[0] = (         void  *)cal_ind.paddle;
      sqlstm.sqinds[0] = (         int  )sizeof(short);
      sqlstm.sqharm[0] = (unsigned int  )0;
      sqlstm.sqharc[0] = (unsigned int   *)0;
      sqlstm.sqadto[0] = (unsigned short )0;
      sqlstm.sqtdso[0] = (unsigned short )0;
      sqlstm.sqhstv[1] = (         void  *)cal.slope;
      sqlstm.sqhstl[1] = (unsigned int  )sizeof(float);
      sqlstm.sqhsts[1] = (         int  )sizeof(float);
      sqlstm.sqindv[1] = (         void  *)cal_ind.slope;
      sqlstm.sqinds[1] = (         int  )sizeof(short);
      sqlstm.sqharm[1] = (unsigned int  )0;
      sqlstm.sqharc[1] = (unsigned int   *)0;
      sqlstm.sqadto[1] = (unsigned short )0;
      sqlstm.sqtdso[1] = (unsigned short )0;
      sqlstm.sqhstv[2] = (         void  *)cal.offset;
      sqlstm.sqhstl[2] = (unsigned int  )sizeof(float);
      sqlstm.sqhsts[2] = (         int  )sizeof(float);
      sqlstm.sqindv[2] = (         void  *)cal_ind.offset;
      sqlstm.sqinds[2] = (         int  )sizeof(short);
      sqlstm.sqharm[2] = (unsigned int  )0;
      sqlstm.sqharc[2] = (unsigned int   *)0;
      sqlstm.sqadto[2] = (unsigned short )0;
      sqlstm.sqtdso[2] = (unsigned short )0;
      sqlstm.sqhstv[3] = (         void  *)cal.delta_slope;
      sqlstm.sqhstl[3] = (unsigned int  )sizeof(float);
      sqlstm.sqhsts[3] = (         int  )sizeof(float);
      sqlstm.sqindv[3] = (         void  *)cal_ind.delta_slope;
      sqlstm.sqinds[3] = (         int  )sizeof(short);
      sqlstm.sqharm[3] = (unsigned int  )0;
      sqlstm.sqharc[3] = (unsigned int   *)0;
      sqlstm.sqadto[3] = (unsigned short )0;
      sqlstm.sqtdso[3] = (unsigned short )0;
      sqlstm.sqhstv[4] = (         void  *)cal.delta_offset;
      sqlstm.sqhstl[4] = (unsigned int  )sizeof(float);
      sqlstm.sqhsts[4] = (         int  )sizeof(float);
      sqlstm.sqindv[4] = (         void  *)cal_ind.delta_offset;
      sqlstm.sqinds[4] = (         int  )sizeof(short);
      sqlstm.sqharm[4] = (unsigned int  )0;
      sqlstm.sqharc[4] = (unsigned int   *)0;
      sqlstm.sqadto[4] = (unsigned short )0;
      sqlstm.sqtdso[4] = (unsigned short )0;
      sqlstm.sqhstv[5] = (         void  *)cal.cfd_threshold;
      sqlstm.sqhstl[5] = (unsigned int  )sizeof(float);
      sqlstm.sqhsts[5] = (         int  )sizeof(float);
      sqlstm.sqindv[5] = (         void  *)cal_ind.cfd_threshold;
      sqlstm.sqinds[5] = (         int  )sizeof(short);
      sqlstm.sqharm[5] = (unsigned int  )0;
      sqlstm.sqharc[5] = (unsigned int   *)0;
      sqlstm.sqadto[5] = (unsigned short )0;
      sqlstm.sqtdso[5] = (unsigned short )0;
      sqlstm.sqhstv[6] = (         void  *)cal.res_par1;
      sqlstm.sqhstl[6] = (unsigned int  )sizeof(float);
      sqlstm.sqhsts[6] = (         int  )sizeof(float);
      sqlstm.sqindv[6] = (         void  *)cal_ind.res_par1;
      sqlstm.sqinds[6] = (         int  )sizeof(short);
      sqlstm.sqharm[6] = (unsigned int  )0;
      sqlstm.sqharc[6] = (unsigned int   *)0;
      sqlstm.sqadto[6] = (unsigned short )0;
      sqlstm.sqtdso[6] = (unsigned short )0;
      sqlstm.sqhstv[7] = (         void  *)cal.res_par2;
      sqlstm.sqhstl[7] = (unsigned int  )sizeof(float);
      sqlstm.sqhsts[7] = (         int  )sizeof(float);
      sqlstm.sqindv[7] = (         void  *)cal_ind.res_par2;
      sqlstm.sqinds[7] = (         int  )sizeof(short);
      sqlstm.sqharm[7] = (unsigned int  )0;
      sqlstm.sqharc[7] = (unsigned int   *)0;
      sqlstm.sqadto[7] = (unsigned short )0;
      sqlstm.sqtdso[7] = (unsigned short )0;
      sqlstm.sqhstv[8] = (         void  *)cal.res_par3;
      sqlstm.sqhstl[8] = (unsigned int  )sizeof(float);
      sqlstm.sqhsts[8] = (         int  )sizeof(float);
      sqlstm.sqindv[8] = (         void  *)cal_ind.res_par3;
      sqlstm.sqinds[8] = (         int  )sizeof(short);
      sqlstm.sqharm[8] = (unsigned int  )0;
      sqlstm.sqharc[8] = (unsigned int   *)0;
      sqlstm.sqadto[8] = (unsigned short )0;
      sqlstm.sqtdso[8] = (unsigned short )0;
      sqlstm.sqhstv[9] = (         void  *)cal.dist_par1;
      sqlstm.sqhstl[9] = (unsigned int  )sizeof(float);
      sqlstm.sqhsts[9] = (         int  )sizeof(float);
      sqlstm.sqindv[9] = (         void  *)cal_ind.dist_par1;
      sqlstm.sqinds[9] = (         int  )sizeof(short);
      sqlstm.sqharm[9] = (unsigned int  )0;
      sqlstm.sqharc[9] = (unsigned int   *)0;
      sqlstm.sqadto[9] = (unsigned short )0;
      sqlstm.sqtdso[9] = (unsigned short )0;
      sqlstm.sqhstv[10] = (         void  *)cal.dist_par2;
      sqlstm.sqhstl[10] = (unsigned int  )sizeof(float);
      sqlstm.sqhsts[10] = (         int  )sizeof(float);
      sqlstm.sqindv[10] = (         void  *)cal_ind.dist_par2;
      sqlstm.sqinds[10] = (         int  )sizeof(short);
      sqlstm.sqharm[10] = (unsigned int  )0;
      sqlstm.sqharc[10] = (unsigned int   *)0;
      sqlstm.sqadto[10] = (unsigned short )0;
      sqlstm.sqtdso[10] = (unsigned short )0;
      sqlstm.sqhstv[11] = (         void  *)cal.dist_par3;
      sqlstm.sqhstl[11] = (unsigned int  )sizeof(float);
      sqlstm.sqhsts[11] = (         int  )sizeof(float);
      sqlstm.sqindv[11] = (         void  *)cal_ind.dist_par3;
      sqlstm.sqinds[11] = (         int  )sizeof(short);
      sqlstm.sqharm[11] = (unsigned int  )0;
      sqlstm.sqharc[11] = (unsigned int   *)0;
      sqlstm.sqadto[11] = (unsigned short )0;
      sqlstm.sqtdso[11] = (unsigned short )0;
      sqlstm.sqhstv[12] = (         void  *)cal.dist_par4;
      sqlstm.sqhstl[12] = (unsigned int  )sizeof(float);
      sqlstm.sqhsts[12] = (         int  )sizeof(float);
      sqlstm.sqindv[12] = (         void  *)cal_ind.dist_par4;
      sqlstm.sqinds[12] = (         int  )sizeof(short);
      sqlstm.sqharm[12] = (unsigned int  )0;
      sqlstm.sqharc[12] = (unsigned int   *)0;
      sqlstm.sqadto[12] = (unsigned short )0;
      sqlstm.sqtdso[12] = (unsigned short )0;
      sqlstm.sqhstv[13] = (         void  *)cal.min_length;
      sqlstm.sqhstl[13] = (unsigned int  )sizeof(float);
      sqlstm.sqhsts[13] = (         int  )sizeof(float);
      sqlstm.sqindv[13] = (         void  *)cal_ind.min_length;
      sqlstm.sqinds[13] = (         int  )sizeof(short);
      sqlstm.sqharm[13] = (unsigned int  )0;
      sqlstm.sqharc[13] = (unsigned int   *)0;
      sqlstm.sqadto[13] = (unsigned short )0;
      sqlstm.sqtdso[13] = (unsigned short )0;
      sqlstm.sqhstv[14] = (         void  *)cal.dist_param_type;
      sqlstm.sqhstl[14] = (unsigned int  )sizeof(int);
      sqlstm.sqhsts[14] = (         int  )sizeof(int);
      sqlstm.sqindv[14] = (         void  *)cal_ind.dist_param_type;
      sqlstm.sqinds[14] = (         int  )sizeof(short);
      sqlstm.sqharm[14] = (unsigned int  )0;
      sqlstm.sqharc[14] = (unsigned int   *)0;
      sqlstm.sqadto[14] = (unsigned short )0;
      sqlstm.sqtdso[14] = (unsigned short )0;
      sqlstm.sqhstv[15] = (         void  *)cal.time_channel;
      sqlstm.sqhstl[15] = (unsigned int  )sizeof(float);
      sqlstm.sqhsts[15] = (         int  )sizeof(float);
      sqlstm.sqindv[15] = (         void  *)cal_ind.time_channel;
      sqlstm.sqinds[15] = (         int  )sizeof(short);
      sqlstm.sqharm[15] = (unsigned int  )0;
      sqlstm.sqharc[15] = (unsigned int   *)0;
      sqlstm.sqadto[15] = (unsigned short )0;
      sqlstm.sqtdso[15] = (unsigned short )0;
      sqlstm.sqhstv[16] = (         void  *)cal.coord_pos;
      sqlstm.sqhstl[16] = (unsigned int  )sizeof(float);
      sqlstm.sqhsts[16] = (         int  )sizeof(float);
      sqlstm.sqindv[16] = (         void  *)cal_ind.coord_pos;
      sqlstm.sqinds[16] = (         int  )sizeof(short);
      sqlstm.sqharm[16] = (unsigned int  )0;
      sqlstm.sqharc[16] = (unsigned int   *)0;
      sqlstm.sqadto[16] = (unsigned short )0;
      sqlstm.sqtdso[16] = (unsigned short )0;
      sqlstm.sqhstv[17] = (         void  *)cal.adc_threshold;
      sqlstm.sqhstl[17] = (unsigned int  )sizeof(float);
      sqlstm.sqhsts[17] = (         int  )sizeof(float);
      sqlstm.sqindv[17] = (         void  *)cal_ind.adc_threshold;
      sqlstm.sqinds[17] = (         int  )sizeof(short);
      sqlstm.sqharm[17] = (unsigned int  )0;
      sqlstm.sqharc[17] = (unsigned int   *)0;
      sqlstm.sqadto[17] = (unsigned short )0;
      sqlstm.sqtdso[17] = (unsigned short )0;
      sqlstm.sqhstv[18] = (         void  *)cal.adc_pedestal;
      sqlstm.sqhstl[18] = (unsigned int  )sizeof(float);
      sqlstm.sqhsts[18] = (         int  )sizeof(float);
      sqlstm.sqindv[18] = (         void  *)cal_ind.adc_pedestal;
      sqlstm.sqinds[18] = (         int  )sizeof(short);
      sqlstm.sqharm[18] = (unsigned int  )0;
      sqlstm.sqharc[18] = (unsigned int   *)0;
      sqlstm.sqadto[18] = (unsigned short )0;
      sqlstm.sqtdso[18] = (unsigned short )0;
      sqlstm.sqhstv[19] = (         void  *)cal.e_loss_par1;
      sqlstm.sqhstl[19] = (unsigned int  )sizeof(float);
      sqlstm.sqhsts[19] = (         int  )sizeof(float);
      sqlstm.sqindv[19] = (         void  *)cal_ind.e_loss_par1;
      sqlstm.sqinds[19] = (         int  )sizeof(short);
      sqlstm.sqharm[19] = (unsigned int  )0;
      sqlstm.sqharc[19] = (unsigned int   *)0;
      sqlstm.sqadto[19] = (unsigned short )0;
      sqlstm.sqtdso[19] = (unsigned short )0;
      sqlstm.sqhstv[20] = (         void  *)cal.e_loss_par2;
      sqlstm.sqhstl[20] = (unsigned int  )sizeof(float);
      sqlstm.sqhsts[20] = (         int  )sizeof(float);
      sqlstm.sqindv[20] = (         void  *)cal_ind.e_loss_par2;
      sqlstm.sqinds[20] = (         int  )sizeof(short);
      sqlstm.sqharm[20] = (unsigned int  )0;
      sqlstm.sqharc[20] = (unsigned int   *)0;
      sqlstm.sqadto[20] = (unsigned short )0;
      sqlstm.sqtdso[20] = (unsigned short )0;
      sqlstm.sqhstv[21] = (         void  *)cal.e_loss_par3;
      sqlstm.sqhstl[21] = (unsigned int  )sizeof(float);
      sqlstm.sqhsts[21] = (         int  )sizeof(float);
      sqlstm.sqindv[21] = (         void  *)cal_ind.e_loss_par3;
      sqlstm.sqinds[21] = (         int  )sizeof(short);
      sqlstm.sqharm[21] = (unsigned int  )0;
      sqlstm.sqharc[21] = (unsigned int   *)0;
      sqlstm.sqadto[21] = (unsigned short )0;
      sqlstm.sqtdso[21] = (unsigned short )0;
      sqlstm.sqhstv[22] = (         void  *)cal.e_loss_par4;
      sqlstm.sqhstl[22] = (unsigned int  )sizeof(float);
      sqlstm.sqhsts[22] = (         int  )sizeof(float);
      sqlstm.sqindv[22] = (         void  *)cal_ind.e_loss_par4;
      sqlstm.sqinds[22] = (         int  )sizeof(short);
      sqlstm.sqharm[22] = (unsigned int  )0;
      sqlstm.sqharc[22] = (unsigned int   *)0;
      sqlstm.sqadto[22] = (unsigned short )0;
      sqlstm.sqtdso[22] = (unsigned short )0;
      sqlstm.sqphsv = sqlstm.sqhstv;
      sqlstm.sqphsl = sqlstm.sqhstl;
      sqlstm.sqphss = sqlstm.sqhsts;
      sqlstm.sqpind = sqlstm.sqindv;
      sqlstm.sqpins = sqlstm.sqinds;
      sqlstm.sqparm = sqlstm.sqharm;
      sqlstm.sqparc = sqlstm.sqharc;
      sqlstm.sqpadto = sqlstm.sqadto;
      sqlstm.sqptdso = sqlstm.sqtdso;
      sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
      if (sqlca.sqlcode < 0) showSqlError("read(HTofinoCalPar*,Int_t*)");
}


      loc[0]=s;  
      for(Int_t i=0;i<sqlca.sqlerrd[2];i++) {
        loc[1]=cal.paddle[i]-1;
        pCell = (HTofinoCalParCell*)pPar->getSlot(loc);
        if (pCell){
          pCell = new (pCell) HTofinoCalParCell;
          pCell->setSlope(cal.slope[i]);
          pCell->setOffset(cal.offset[i]);
          pCell->setTimeChannel(cal.time_channel[i]);
          pCell->setDistanceParamsType(cal.dist_param_type[i]);    
          Float_t *dist = new Float_t[4];
          dist[0] = cal.dist_par1[i];
          dist[1] = cal.dist_par2[i];
          dist[2] = cal.dist_par3[i];
          dist[3] = cal.dist_par4[i];
          pCell->setDistanceParams(dist);
          delete [] dist;
          pCell->setCoordPosition(cal.coord_pos[i]);
          pCell->setDeltaSlope(cal.delta_slope[i]);
          pCell->setDeltaOffset(cal.delta_offset[i]);
          Float_t *res = new Float_t[4];
          res[0]=cal.res_par1[i];
          res[1]=cal.res_par2[i];
          res[2]=cal.res_par3[i];
          pCell->setResolParams(res);
          delete [] res;
          pCell->setCFDThreshold(cal.cfd_threshold[i]);
          pCell->setMinLength(cal.min_length[i]);
          if(cal_ind.adc_threshold[i]==-1) pCell->setADCThreshold(0);  
          else pCell->setADCThreshold(cal.adc_threshold[i]);
          if(cal_ind.adc_pedestal[i]==-1) pCell->setADCPedestal(0);
          else pCell->setADCPedestal(cal.adc_pedestal[i]);
          Float_t *eLoss = new Float_t[4];
          if(cal_ind.e_loss_par1[i]==-1){
            eLoss[0]=-1;
            eLoss[1]=-1;
            eLoss[2]=-1;
            eLoss[3]=-1;
          } else {
            eLoss[0]=cal.e_loss_par1[i];
            eLoss[1]=cal.e_loss_par2[i];
            eLoss[2]=cal.e_loss_par3[i];
            eLoss[3]=cal.e_loss_par4[i];
          }
          pCell->setElossParams(eLoss);
          delete [] eLoss;
          initModules->AddAt(s+1,s);
        }    
      }
    }  
  }
  /* EXEC SQL CLOSE cal_cur; */ 

{
  struct sqlexd sqlstm;
  sqlorat((void **)0, &sqlctx, &oraca);
  sqlstm.sqlvsn = 12;
  sqlstm.arrsiz = 23;
  sqlstm.sqladtp = &sqladt;
  sqlstm.sqltdsp = &sqltds;
  sqlstm.iters = (unsigned int  )1;
  sqlstm.offset = (unsigned int  )363;
  sqlstm.cud = sqlcud0;
  sqlstm.sqlest = (unsigned char  *)&sqlca;
  sqlstm.sqlety = (unsigned short)256;
  sqlstm.occurs = (unsigned int  )0;
  sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
  if (sqlca.sqlcode < 0) showSqlError("read(HTofinoCalPar*,Int_t*)");
}


  setChanged(pPar);
  //pPar->print();
  printInfo(pPar->GetName());
  return kTRUE;
}


Bool_t HTofinoParOraIo::read(HTofinoShowerMap* pPar, Int_t* set) {
  // reads the tofino-shower map and fill the TofinoShowerMap container
  //It is used only one map for all sectors
  Int_t contVers=pPar->getInputVersion(inputNumber);
  Int_t versions[TOFINO_MAXMODS];
  Int_t version=getParVersion(pPar,versions);
  if (version==-1) {
    pPar->setInputVersion(-1,inputNumber);
    return kFALSE;
  }
  if (contVers==version) return kTRUE;
  if (inputNumber==1) pPar->clear();
  pPar->setInputVersion(version,inputNumber);
  initModules->Reset();
  /* EXEC SQL BEGIN DECLARE SECTION; */ 

    int vers;
    int sec;
    int row_id[SHOWER_MAXPADS];
    int col_id[SHOWER_MAXPADS];
    int cell_id[SHOWER_MAXPADS];
    short cell_ind[SHOWER_MAXPADS];
  /* EXEC SQL END DECLARE SECTION; */ 

  HLocation loc;
  HTofinoShowerMapCell *pCell;
  loc.setNIndex(2);
  /* EXEC SQL DECLARE cur_map CURSOR  FOR 
           SELECT row_id, col_id, paddle_nr
           FROM tofino_ana.tofino_shower_map_data
           WHERE vers_id =:vers and sector_id =:sec; */ 
 
  //For future..... This is not used now
//  for(Int_t s=0; s<TOFINO_MAXMODS;s++){
    sec = 1; 
    vers = versions[1];//sector-less parameters 
    /* EXEC SQL OPEN cur_map; */ 

{
    struct sqlexd sqlstm;
    sqlorat((void **)0, &sqlctx, &oraca);
    sqlstm.sqlvsn = 12;
    sqlstm.arrsiz = 23;
    sqlstm.sqladtp = &sqladt;
    sqlstm.sqltdsp = &sqltds;
    sqlstm.stmt = sq0010;
    sqlstm.iters = (unsigned int  )1;
    sqlstm.offset = (unsigned int  )378;
    sqlstm.selerr = (unsigned short)1;
    sqlstm.cud = sqlcud0;
    sqlstm.sqlest = (unsigned char  *)&sqlca;
    sqlstm.sqlety = (unsigned short)256;
    sqlstm.occurs = (unsigned int  )0;
    sqlstm.sqcmod = (unsigned int )0;
    sqlstm.sqhstv[0] = (         void  *)&vers;
    sqlstm.sqhstl[0] = (unsigned int  )sizeof(int);
    sqlstm.sqhsts[0] = (         int  )0;
    sqlstm.sqindv[0] = (         void  *)0;
    sqlstm.sqinds[0] = (         int  )0;
    sqlstm.sqharm[0] = (unsigned int  )0;
    sqlstm.sqadto[0] = (unsigned short )0;
    sqlstm.sqtdso[0] = (unsigned short )0;
    sqlstm.sqhstv[1] = (         void  *)&sec;
    sqlstm.sqhstl[1] = (unsigned int  )sizeof(int);
    sqlstm.sqhsts[1] = (         int  )0;
    sqlstm.sqindv[1] = (         void  *)0;
    sqlstm.sqinds[1] = (         int  )0;
    sqlstm.sqharm[1] = (unsigned int  )0;
    sqlstm.sqadto[1] = (unsigned short )0;
    sqlstm.sqtdso[1] = (unsigned short )0;
    sqlstm.sqphsv = sqlstm.sqhstv;
    sqlstm.sqphsl = sqlstm.sqhstl;
    sqlstm.sqphss = sqlstm.sqhsts;
    sqlstm.sqpind = sqlstm.sqindv;
    sqlstm.sqpins = sqlstm.sqinds;
    sqlstm.sqparm = sqlstm.sqharm;
    sqlstm.sqparc = sqlstm.sqharc;
    sqlstm.sqpadto = sqlstm.sqadto;
    sqlstm.sqptdso = sqlstm.sqtdso;
    sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
    if (sqlca.sqlcode < 0) showSqlError("read(HTofinoCalPar*,Int_t*)");
}


    /* EXEC SQL FETCH cur_map INTO :row_id, :col_id, cell_id:cell_ind; */ 

{
    struct sqlexd sqlstm;
    sqlorat((void **)0, &sqlctx, &oraca);
    sqlstm.sqlvsn = 12;
    sqlstm.arrsiz = 23;
    sqlstm.sqladtp = &sqladt;
    sqlstm.sqltdsp = &sqltds;
    sqlstm.iters = (unsigned int  )1024;
    sqlstm.offset = (unsigned int  )401;
    sqlstm.selerr = (unsigned short)1;
    sqlstm.cud = sqlcud0;
    sqlstm.sqlest = (unsigned char  *)&sqlca;
    sqlstm.sqlety = (unsigned short)256;
    sqlstm.occurs = (unsigned int  )0;
    sqlstm.sqfoff = (           int )0;
    sqlstm.sqfmod = (unsigned int )2;
    sqlstm.sqhstv[0] = (         void  *)row_id;
    sqlstm.sqhstl[0] = (unsigned int  )sizeof(int);
    sqlstm.sqhsts[0] = (         int  )sizeof(int);
    sqlstm.sqindv[0] = (         void  *)0;
    sqlstm.sqinds[0] = (         int  )0;
    sqlstm.sqharm[0] = (unsigned int  )0;
    sqlstm.sqharc[0] = (unsigned int   *)0;
    sqlstm.sqadto[0] = (unsigned short )0;
    sqlstm.sqtdso[0] = (unsigned short )0;
    sqlstm.sqhstv[1] = (         void  *)col_id;
    sqlstm.sqhstl[1] = (unsigned int  )sizeof(int);
    sqlstm.sqhsts[1] = (         int  )sizeof(int);
    sqlstm.sqindv[1] = (         void  *)0;
    sqlstm.sqinds[1] = (         int  )0;
    sqlstm.sqharm[1] = (unsigned int  )0;
    sqlstm.sqharc[1] = (unsigned int   *)0;
    sqlstm.sqadto[1] = (unsigned short )0;
    sqlstm.sqtdso[1] = (unsigned short )0;
    sqlstm.sqhstv[2] = (         void  *)cell_id;
    sqlstm.sqhstl[2] = (unsigned int  )sizeof(int);
    sqlstm.sqhsts[2] = (         int  )sizeof(int);
    sqlstm.sqindv[2] = (         void  *)cell_ind;
    sqlstm.sqinds[2] = (         int  )sizeof(short);
    sqlstm.sqharm[2] = (unsigned int  )0;
    sqlstm.sqharc[2] = (unsigned int   *)0;
    sqlstm.sqadto[2] = (unsigned short )0;
    sqlstm.sqtdso[2] = (unsigned short )0;
    sqlstm.sqphsv = sqlstm.sqhstv;
    sqlstm.sqphsl = sqlstm.sqhstl;
    sqlstm.sqphss = sqlstm.sqhsts;
    sqlstm.sqpind = sqlstm.sqindv;
    sqlstm.sqpins = sqlstm.sqinds;
    sqlstm.sqparm = sqlstm.sqharm;
    sqlstm.sqparc = sqlstm.sqharc;
    sqlstm.sqpadto = sqlstm.sqadto;
    sqlstm.sqptdso = sqlstm.sqtdso;
    sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
    if (sqlca.sqlcode < 0) showSqlError("read(HTofinoCalPar*,Int_t*)");
}


    for(Int_t n =0;n<sqlca.sqlerrd[2];n++){
      loc[0] = row_id[n]-1;
      loc[1] = col_id[n]-1;
      pCell = (HTofinoShowerMapCell*) pPar->getSlot(loc);
      if (pCell) {
        pCell = new(pCell) HTofinoShowerMapCell;
        if (cell_ind[n]==-1){
          pCell->setCellNumber(NO_TOFINO_CELL);
        }
        else{
          pCell->setCellNumber(cell_id[n]-1);
        }
      }    
    }
//  }
  /* EXEC SQL CLOSE cur_map; */ 

{
  struct sqlexd sqlstm;
  sqlorat((void **)0, &sqlctx, &oraca);
  sqlstm.sqlvsn = 12;
  sqlstm.arrsiz = 23;
  sqlstm.sqladtp = &sqladt;
  sqlstm.sqltdsp = &sqltds;
  sqlstm.iters = (unsigned int  )1;
  sqlstm.offset = (unsigned int  )428;
  sqlstm.cud = sqlcud0;
  sqlstm.sqlest = (unsigned char  *)&sqlca;
  sqlstm.sqlety = (unsigned short)256;
  sqlstm.occurs = (unsigned int  )0;
  sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
  if (sqlca.sqlcode < 0) showSqlError("read(HTofinoCalPar*,Int_t*)");
}


  setChanged(pPar);
  printInfo(pPar->GetName());
  //pPar->print();
  return kTRUE;
}

Int_t  HTofinoParOraIo::writePar(HTofinoCalPar*pPar){
  Int_t version=createVers(pPar);
  if (version==-1) return -1;
  HLocation loc;
  HTofinoCalParCell *pCell;
  loc.setNIndex(2);  
  /* EXEC SQL BEGIN DECLARE SECTION; */ 

    struct {
      int   vers[TOFINO_MAXCELL];
      int   paddle[TOFINO_MAXCELL];
      float slope[TOFINO_MAXCELL];
      float offset[TOFINO_MAXCELL];
      float delta_slope[TOFINO_MAXCELL];
      float delta_offset[TOFINO_MAXCELL];
      float cfd_threshold[TOFINO_MAXCELL];
      float res_par1[TOFINO_MAXCELL];
      float res_par2[TOFINO_MAXCELL];
      float res_par3[TOFINO_MAXCELL];
      float dist_par1[TOFINO_MAXCELL];
      float dist_par2[TOFINO_MAXCELL];
      float dist_par3[TOFINO_MAXCELL];
      float dist_par4[TOFINO_MAXCELL];
      float min_length[TOFINO_MAXCELL];
      int   dist_param_type[TOFINO_MAXCELL];
      float time_channel[TOFINO_MAXCELL];
      float coord_pos[TOFINO_MAXCELL];
      //New params added in 2003
      float adc_threshold[TOFINO_MAXCELL];
      float adc_pedestal[TOFINO_MAXCELL];
      float e_loss_par1[TOFINO_MAXCELL];
      float e_loss_par2[TOFINO_MAXCELL];
      float e_loss_par3[TOFINO_MAXCELL];
      float e_loss_par4[TOFINO_MAXCELL];
    }cal;
  /* EXEC SQL END DECLARE SECTION; */ 

  for(Int_t s =0; s<pPar->getSectors();s++){
    loc[0]=s;
    for(Int_t c=0; c<pPar->getCells();c++){
      loc[1]=c;
      pCell = pPar->getObject(loc);
      cal.vers[c]=version;
      cal.paddle[c] = (s+1)*10 + c+1;
      cal.slope[c] = pCell->getSlope();
      cal.offset[c] = pCell->getOffset();
      cal.delta_slope[c] = pCell->getDeltaSlope();
      cal.delta_offset[c] = pCell->getDeltaOffset();
      cal.cfd_threshold[c] =  pCell->getCFDThreshold();
      Float_t res[3];
      pCell->getResolParams(res);  
      cal.res_par1[c] = res[0];
      cal.res_par2[c] = res[1];
      cal.res_par3[c] = res[2];
      Float_t dist[4];
      pCell->getDistanceParams(dist);  
      cal.dist_par1[c] = dist[0];
      cal.dist_par2[c] = dist[1];
      cal.dist_par3[c] = dist[2];
      cal.dist_par4[c] = dist[3];
      cal.min_length[c] = pCell->getMinLength();
      cal.dist_param_type[c] = pCell->getDistanceParamsType();
      cal.time_channel[c] =  pCell->getTimeChannel();
      cal.coord_pos[c] = pCell->getCoordPosition();
      cal.adc_threshold[c]=pCell->getADCThreshold();
      cal.adc_pedestal[c]=pCell->getADCPedestal();
      Float_t eLoss[4];
      pCell->getElossParams(eLoss);
      cal.e_loss_par1[c]=eLoss[0];  
      cal.e_loss_par2[c]=eLoss[1];  
      cal.e_loss_par3[c]=eLoss[2];  
      cal.e_loss_par4[c]=eLoss[3];  
    }
    /* EXEC SQL WHENEVER SQLERROR GOTO not_found; */ 

    /* EXEC SQL WHENEVER NOT FOUND GOTO not_found; */ 

    /* EXEC SQL INSERT INTO tofino_ana.tofino_cal_par_data_v2
               (vers_id, paddle_id,
                slope, offset, delta_slope, delta_offset, cfd_threshold,
                res_par1, res_par2, res_par3, dist_par1, dist_par2,
                dist_par3, dist_par4, min_length,
                dist_param_type, time_channel, coord_pos,adc_threshold, adc_pedestal, 
                e_loss_par1, e_loss_par2, e_loss_par3, e_loss_par4)
             VALUES (:cal); */ 

{
    struct sqlexd sqlstm;
    sqlorat((void **)0, &sqlctx, &oraca);
    sqlstm.sqlvsn = 12;
    sqlstm.arrsiz = 24;
    sqlstm.sqladtp = &sqladt;
    sqlstm.sqltdsp = &sqltds;
    sqlstm.stmt = "insert into tofino_ana.tofino_cal_par_data_v2 (vers_id,pa\
ddle_id,slope,offset,delta_slope,delta_offset,cfd_threshold,res_par1,res_par2,\
res_par3,dist_par1,dist_par2,dist_par3,dist_par4,min_length,dist_param_type,ti\
me_channel,coord_pos,adc_threshold,adc_pedestal,e_loss_par1,e_loss_par2,e_loss\
_par3,e_loss_par4) values (:s1 ,:s2 ,:s3 ,:s4 ,:s5 ,:s6 ,:s7 ,:s8 ,:s9 ,:s10 ,\
:s11 ,:s12 ,:s13 ,:s14 ,:s15 ,:s16 ,:s17 ,:s18 ,:s19 ,:s20 ,:s21 ,:s22 ,:s23 ,\
:s24 )";
    sqlstm.iters = (unsigned int  )4;
    sqlstm.offset = (unsigned int  )443;
    sqlstm.cud = sqlcud0;
    sqlstm.sqlest = (unsigned char  *)&sqlca;
    sqlstm.sqlety = (unsigned short)256;
    sqlstm.occurs = (unsigned int  )0;
    sqlstm.sqhstv[0] = (         void  *)cal.vers;
    sqlstm.sqhstl[0] = (unsigned int  )sizeof(int);
    sqlstm.sqhsts[0] = (         int  )sizeof(int);
    sqlstm.sqindv[0] = (         void  *)0;
    sqlstm.sqinds[0] = (         int  )0;
    sqlstm.sqharm[0] = (unsigned int  )0;
    sqlstm.sqharc[0] = (unsigned int   *)0;
    sqlstm.sqadto[0] = (unsigned short )0;
    sqlstm.sqtdso[0] = (unsigned short )0;
    sqlstm.sqhstv[1] = (         void  *)cal.paddle;
    sqlstm.sqhstl[1] = (unsigned int  )sizeof(int);
    sqlstm.sqhsts[1] = (         int  )sizeof(int);
    sqlstm.sqindv[1] = (         void  *)0;
    sqlstm.sqinds[1] = (         int  )0;
    sqlstm.sqharm[1] = (unsigned int  )0;
    sqlstm.sqharc[1] = (unsigned int   *)0;
    sqlstm.sqadto[1] = (unsigned short )0;
    sqlstm.sqtdso[1] = (unsigned short )0;
    sqlstm.sqhstv[2] = (         void  *)cal.slope;
    sqlstm.sqhstl[2] = (unsigned int  )sizeof(float);
    sqlstm.sqhsts[2] = (         int  )sizeof(float);
    sqlstm.sqindv[2] = (         void  *)0;
    sqlstm.sqinds[2] = (         int  )0;
    sqlstm.sqharm[2] = (unsigned int  )0;
    sqlstm.sqharc[2] = (unsigned int   *)0;
    sqlstm.sqadto[2] = (unsigned short )0;
    sqlstm.sqtdso[2] = (unsigned short )0;
    sqlstm.sqhstv[3] = (         void  *)cal.offset;
    sqlstm.sqhstl[3] = (unsigned int  )sizeof(float);
    sqlstm.sqhsts[3] = (         int  )sizeof(float);
    sqlstm.sqindv[3] = (         void  *)0;
    sqlstm.sqinds[3] = (         int  )0;
    sqlstm.sqharm[3] = (unsigned int  )0;
    sqlstm.sqharc[3] = (unsigned int   *)0;
    sqlstm.sqadto[3] = (unsigned short )0;
    sqlstm.sqtdso[3] = (unsigned short )0;
    sqlstm.sqhstv[4] = (         void  *)cal.delta_slope;
    sqlstm.sqhstl[4] = (unsigned int  )sizeof(float);
    sqlstm.sqhsts[4] = (         int  )sizeof(float);
    sqlstm.sqindv[4] = (         void  *)0;
    sqlstm.sqinds[4] = (         int  )0;
    sqlstm.sqharm[4] = (unsigned int  )0;
    sqlstm.sqharc[4] = (unsigned int   *)0;
    sqlstm.sqadto[4] = (unsigned short )0;
    sqlstm.sqtdso[4] = (unsigned short )0;
    sqlstm.sqhstv[5] = (         void  *)cal.delta_offset;
    sqlstm.sqhstl[5] = (unsigned int  )sizeof(float);
    sqlstm.sqhsts[5] = (         int  )sizeof(float);
    sqlstm.sqindv[5] = (         void  *)0;
    sqlstm.sqinds[5] = (         int  )0;
    sqlstm.sqharm[5] = (unsigned int  )0;
    sqlstm.sqharc[5] = (unsigned int   *)0;
    sqlstm.sqadto[5] = (unsigned short )0;
    sqlstm.sqtdso[5] = (unsigned short )0;
    sqlstm.sqhstv[6] = (         void  *)cal.cfd_threshold;
    sqlstm.sqhstl[6] = (unsigned int  )sizeof(float);
    sqlstm.sqhsts[6] = (         int  )sizeof(float);
    sqlstm.sqindv[6] = (         void  *)0;
    sqlstm.sqinds[6] = (         int  )0;
    sqlstm.sqharm[6] = (unsigned int  )0;
    sqlstm.sqharc[6] = (unsigned int   *)0;
    sqlstm.sqadto[6] = (unsigned short )0;
    sqlstm.sqtdso[6] = (unsigned short )0;
    sqlstm.sqhstv[7] = (         void  *)cal.res_par1;
    sqlstm.sqhstl[7] = (unsigned int  )sizeof(float);
    sqlstm.sqhsts[7] = (         int  )sizeof(float);
    sqlstm.sqindv[7] = (         void  *)0;
    sqlstm.sqinds[7] = (         int  )0;
    sqlstm.sqharm[7] = (unsigned int  )0;
    sqlstm.sqharc[7] = (unsigned int   *)0;
    sqlstm.sqadto[7] = (unsigned short )0;
    sqlstm.sqtdso[7] = (unsigned short )0;
    sqlstm.sqhstv[8] = (         void  *)cal.res_par2;
    sqlstm.sqhstl[8] = (unsigned int  )sizeof(float);
    sqlstm.sqhsts[8] = (         int  )sizeof(float);
    sqlstm.sqindv[8] = (         void  *)0;
    sqlstm.sqinds[8] = (         int  )0;
    sqlstm.sqharm[8] = (unsigned int  )0;
    sqlstm.sqharc[8] = (unsigned int   *)0;
    sqlstm.sqadto[8] = (unsigned short )0;
    sqlstm.sqtdso[8] = (unsigned short )0;
    sqlstm.sqhstv[9] = (         void  *)cal.res_par3;
    sqlstm.sqhstl[9] = (unsigned int  )sizeof(float);
    sqlstm.sqhsts[9] = (         int  )sizeof(float);
    sqlstm.sqindv[9] = (         void  *)0;
    sqlstm.sqinds[9] = (         int  )0;
    sqlstm.sqharm[9] = (unsigned int  )0;
    sqlstm.sqharc[9] = (unsigned int   *)0;
    sqlstm.sqadto[9] = (unsigned short )0;
    sqlstm.sqtdso[9] = (unsigned short )0;
    sqlstm.sqhstv[10] = (         void  *)cal.dist_par1;
    sqlstm.sqhstl[10] = (unsigned int  )sizeof(float);
    sqlstm.sqhsts[10] = (         int  )sizeof(float);
    sqlstm.sqindv[10] = (         void  *)0;
    sqlstm.sqinds[10] = (         int  )0;
    sqlstm.sqharm[10] = (unsigned int  )0;
    sqlstm.sqharc[10] = (unsigned int   *)0;
    sqlstm.sqadto[10] = (unsigned short )0;
    sqlstm.sqtdso[10] = (unsigned short )0;
    sqlstm.sqhstv[11] = (         void  *)cal.dist_par2;
    sqlstm.sqhstl[11] = (unsigned int  )sizeof(float);
    sqlstm.sqhsts[11] = (         int  )sizeof(float);
    sqlstm.sqindv[11] = (         void  *)0;
    sqlstm.sqinds[11] = (         int  )0;
    sqlstm.sqharm[11] = (unsigned int  )0;
    sqlstm.sqharc[11] = (unsigned int   *)0;
    sqlstm.sqadto[11] = (unsigned short )0;
    sqlstm.sqtdso[11] = (unsigned short )0;
    sqlstm.sqhstv[12] = (         void  *)cal.dist_par3;
    sqlstm.sqhstl[12] = (unsigned int  )sizeof(float);
    sqlstm.sqhsts[12] = (         int  )sizeof(float);
    sqlstm.sqindv[12] = (         void  *)0;
    sqlstm.sqinds[12] = (         int  )0;
    sqlstm.sqharm[12] = (unsigned int  )0;
    sqlstm.sqharc[12] = (unsigned int   *)0;
    sqlstm.sqadto[12] = (unsigned short )0;
    sqlstm.sqtdso[12] = (unsigned short )0;
    sqlstm.sqhstv[13] = (         void  *)cal.dist_par4;
    sqlstm.sqhstl[13] = (unsigned int  )sizeof(float);
    sqlstm.sqhsts[13] = (         int  )sizeof(float);
    sqlstm.sqindv[13] = (         void  *)0;
    sqlstm.sqinds[13] = (         int  )0;
    sqlstm.sqharm[13] = (unsigned int  )0;
    sqlstm.sqharc[13] = (unsigned int   *)0;
    sqlstm.sqadto[13] = (unsigned short )0;
    sqlstm.sqtdso[13] = (unsigned short )0;
    sqlstm.sqhstv[14] = (         void  *)cal.min_length;
    sqlstm.sqhstl[14] = (unsigned int  )sizeof(float);
    sqlstm.sqhsts[14] = (         int  )sizeof(float);
    sqlstm.sqindv[14] = (         void  *)0;
    sqlstm.sqinds[14] = (         int  )0;
    sqlstm.sqharm[14] = (unsigned int  )0;
    sqlstm.sqharc[14] = (unsigned int   *)0;
    sqlstm.sqadto[14] = (unsigned short )0;
    sqlstm.sqtdso[14] = (unsigned short )0;
    sqlstm.sqhstv[15] = (         void  *)cal.dist_param_type;
    sqlstm.sqhstl[15] = (unsigned int  )sizeof(int);
    sqlstm.sqhsts[15] = (         int  )sizeof(int);
    sqlstm.sqindv[15] = (         void  *)0;
    sqlstm.sqinds[15] = (         int  )0;
    sqlstm.sqharm[15] = (unsigned int  )0;
    sqlstm.sqharc[15] = (unsigned int   *)0;
    sqlstm.sqadto[15] = (unsigned short )0;
    sqlstm.sqtdso[15] = (unsigned short )0;
    sqlstm.sqhstv[16] = (         void  *)cal.time_channel;
    sqlstm.sqhstl[16] = (unsigned int  )sizeof(float);
    sqlstm.sqhsts[16] = (         int  )sizeof(float);
    sqlstm.sqindv[16] = (         void  *)0;
    sqlstm.sqinds[16] = (         int  )0;
    sqlstm.sqharm[16] = (unsigned int  )0;
    sqlstm.sqharc[16] = (unsigned int   *)0;
    sqlstm.sqadto[16] = (unsigned short )0;
    sqlstm.sqtdso[16] = (unsigned short )0;
    sqlstm.sqhstv[17] = (         void  *)cal.coord_pos;
    sqlstm.sqhstl[17] = (unsigned int  )sizeof(float);
    sqlstm.sqhsts[17] = (         int  )sizeof(float);
    sqlstm.sqindv[17] = (         void  *)0;
    sqlstm.sqinds[17] = (         int  )0;
    sqlstm.sqharm[17] = (unsigned int  )0;
    sqlstm.sqharc[17] = (unsigned int   *)0;
    sqlstm.sqadto[17] = (unsigned short )0;
    sqlstm.sqtdso[17] = (unsigned short )0;
    sqlstm.sqhstv[18] = (         void  *)cal.adc_threshold;
    sqlstm.sqhstl[18] = (unsigned int  )sizeof(float);
    sqlstm.sqhsts[18] = (         int  )sizeof(float);
    sqlstm.sqindv[18] = (         void  *)0;
    sqlstm.sqinds[18] = (         int  )0;
    sqlstm.sqharm[18] = (unsigned int  )0;
    sqlstm.sqharc[18] = (unsigned int   *)0;
    sqlstm.sqadto[18] = (unsigned short )0;
    sqlstm.sqtdso[18] = (unsigned short )0;
    sqlstm.sqhstv[19] = (         void  *)cal.adc_pedestal;
    sqlstm.sqhstl[19] = (unsigned int  )sizeof(float);
    sqlstm.sqhsts[19] = (         int  )sizeof(float);
    sqlstm.sqindv[19] = (         void  *)0;
    sqlstm.sqinds[19] = (         int  )0;
    sqlstm.sqharm[19] = (unsigned int  )0;
    sqlstm.sqharc[19] = (unsigned int   *)0;
    sqlstm.sqadto[19] = (unsigned short )0;
    sqlstm.sqtdso[19] = (unsigned short )0;
    sqlstm.sqhstv[20] = (         void  *)cal.e_loss_par1;
    sqlstm.sqhstl[20] = (unsigned int  )sizeof(float);
    sqlstm.sqhsts[20] = (         int  )sizeof(float);
    sqlstm.sqindv[20] = (         void  *)0;
    sqlstm.sqinds[20] = (         int  )0;
    sqlstm.sqharm[20] = (unsigned int  )0;
    sqlstm.sqharc[20] = (unsigned int   *)0;
    sqlstm.sqadto[20] = (unsigned short )0;
    sqlstm.sqtdso[20] = (unsigned short )0;
    sqlstm.sqhstv[21] = (         void  *)cal.e_loss_par2;
    sqlstm.sqhstl[21] = (unsigned int  )sizeof(float);
    sqlstm.sqhsts[21] = (         int  )sizeof(float);
    sqlstm.sqindv[21] = (         void  *)0;
    sqlstm.sqinds[21] = (         int  )0;
    sqlstm.sqharm[21] = (unsigned int  )0;
    sqlstm.sqharc[21] = (unsigned int   *)0;
    sqlstm.sqadto[21] = (unsigned short )0;
    sqlstm.sqtdso[21] = (unsigned short )0;
    sqlstm.sqhstv[22] = (         void  *)cal.e_loss_par3;
    sqlstm.sqhstl[22] = (unsigned int  )sizeof(float);
    sqlstm.sqhsts[22] = (         int  )sizeof(float);
    sqlstm.sqindv[22] = (         void  *)0;
    sqlstm.sqinds[22] = (         int  )0;
    sqlstm.sqharm[22] = (unsigned int  )0;
    sqlstm.sqharc[22] = (unsigned int   *)0;
    sqlstm.sqadto[22] = (unsigned short )0;
    sqlstm.sqtdso[22] = (unsigned short )0;
    sqlstm.sqhstv[23] = (         void  *)cal.e_loss_par4;
    sqlstm.sqhstl[23] = (unsigned int  )sizeof(float);
    sqlstm.sqhsts[23] = (         int  )sizeof(float);
    sqlstm.sqindv[23] = (         void  *)0;
    sqlstm.sqinds[23] = (         int  )0;
    sqlstm.sqharm[23] = (unsigned int  )0;
    sqlstm.sqharc[23] = (unsigned int   *)0;
    sqlstm.sqadto[23] = (unsigned short )0;
    sqlstm.sqtdso[23] = (unsigned short )0;
    sqlstm.sqphsv = sqlstm.sqhstv;
    sqlstm.sqphsl = sqlstm.sqhstl;
    sqlstm.sqphss = sqlstm.sqhsts;
    sqlstm.sqpind = sqlstm.sqindv;
    sqlstm.sqpins = sqlstm.sqinds;
    sqlstm.sqparm = sqlstm.sqharm;
    sqlstm.sqparc = sqlstm.sqharc;
    sqlstm.sqpadto = sqlstm.sqadto;
    sqlstm.sqptdso = sqlstm.sqtdso;
    sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
    if (sqlca.sqlcode == 1403) goto not_found;
    if (sqlca.sqlcode < 0) goto not_found;
}


  }
  cout<<"********    Calibration parameters written to Oracle ***********\n";
  cout<<"****************************************************************\n";
  commit();
  pPar->setChanged(kFALSE);
  return version;
not_found:
  showSqlError("writePar(HTofinoCalPar*)");
  rollback();
  pPar->setChanged(kFALSE);
  return -1;
}


Int_t  HTofinoParOraIo::writePar(HTofinoShowerMap*pPar){
  Int_t version=createVers(pPar);
  if (version==-1) return -1;
  /* EXEC SQL BEGIN DECLARE SECTION; */ 

    int vers[SHOWER_MAXPADS];
    int row_id[SHOWER_MAXPADS];
    int col_id[SHOWER_MAXPADS];
    int cell_id[SHOWER_MAXPADS];    
    int sector_id[SHOWER_MAXPADS];  
    short cell_ind[SHOWER_MAXPADS];
  /* EXEC SQL END DECLARE SECTION; */ 

  HLocation loc;
  loc.setNIndex(2);
  Int_t nId=0;
  for(Int_t s =0; s<TOFINO_MAXMODS;s++){
    nId=0;
    for (Int_t r = 0; r<SHOWER_MAXROWS;r++){
      loc[0]=r;
      for(Int_t c = 0; c <SHOWER_MAXCOLS;c++){
        vers[nId] = version;
        loc[1]=c;
        sector_id[nId]=s+1;
        row_id[nId] = r+1;
        col_id[nId] = c+1;
        if(pPar->getCellNumber(loc)==NO_TOFINO_CELL){
          cell_ind[nId]=-1;
        } else {
          cell_ind[nId]=pPar->getCellNumber(loc);
        }
        cell_id[nId] = (pPar->getCellNumber(loc))+1;
        nId++;  
      }
    }
    /* EXEC SQL WHENEVER SQLERROR GOTO not_found; */ 

    /* EXEC SQL WHENEVER NOT FOUND GOTO not_found; */ 

    /* EXEC SQL INSERT INTO tofino_ana.tofino_shower_map_data
             (vers_id,sector_id,row_id,col_id,paddle_nr)
             VALUES (:vers, :sector_id ,:row_id,:col_id,:cell_id:cell_ind); */ 

{
    struct sqlexd sqlstm;
    sqlorat((void **)0, &sqlctx, &oraca);
    sqlstm.sqlvsn = 12;
    sqlstm.arrsiz = 24;
    sqlstm.sqladtp = &sqladt;
    sqlstm.sqltdsp = &sqltds;
    sqlstm.stmt = "insert into tofino_ana.tofino_shower_map_data (vers_id,se\
ctor_id,row_id,col_id,paddle_nr) values (:b0,:b1,:b2,:b3,:b4:b5)";
    sqlstm.iters = (unsigned int  )1024;
    sqlstm.offset = (unsigned int  )554;
    sqlstm.cud = sqlcud0;
    sqlstm.sqlest = (unsigned char  *)&sqlca;
    sqlstm.sqlety = (unsigned short)256;
    sqlstm.occurs = (unsigned int  )0;
    sqlstm.sqhstv[0] = (         void  *)vers;
    sqlstm.sqhstl[0] = (unsigned int  )sizeof(int);
    sqlstm.sqhsts[0] = (         int  )sizeof(int);
    sqlstm.sqindv[0] = (         void  *)0;
    sqlstm.sqinds[0] = (         int  )0;
    sqlstm.sqharm[0] = (unsigned int  )0;
    sqlstm.sqharc[0] = (unsigned int   *)0;
    sqlstm.sqadto[0] = (unsigned short )0;
    sqlstm.sqtdso[0] = (unsigned short )0;
    sqlstm.sqhstv[1] = (         void  *)sector_id;
    sqlstm.sqhstl[1] = (unsigned int  )sizeof(int);
    sqlstm.sqhsts[1] = (         int  )sizeof(int);
    sqlstm.sqindv[1] = (         void  *)0;
    sqlstm.sqinds[1] = (         int  )0;
    sqlstm.sqharm[1] = (unsigned int  )0;
    sqlstm.sqharc[1] = (unsigned int   *)0;
    sqlstm.sqadto[1] = (unsigned short )0;
    sqlstm.sqtdso[1] = (unsigned short )0;
    sqlstm.sqhstv[2] = (         void  *)row_id;
    sqlstm.sqhstl[2] = (unsigned int  )sizeof(int);
    sqlstm.sqhsts[2] = (         int  )sizeof(int);
    sqlstm.sqindv[2] = (         void  *)0;
    sqlstm.sqinds[2] = (         int  )0;
    sqlstm.sqharm[2] = (unsigned int  )0;
    sqlstm.sqharc[2] = (unsigned int   *)0;
    sqlstm.sqadto[2] = (unsigned short )0;
    sqlstm.sqtdso[2] = (unsigned short )0;
    sqlstm.sqhstv[3] = (         void  *)col_id;
    sqlstm.sqhstl[3] = (unsigned int  )sizeof(int);
    sqlstm.sqhsts[3] = (         int  )sizeof(int);
    sqlstm.sqindv[3] = (         void  *)0;
    sqlstm.sqinds[3] = (         int  )0;
    sqlstm.sqharm[3] = (unsigned int  )0;
    sqlstm.sqharc[3] = (unsigned int   *)0;
    sqlstm.sqadto[3] = (unsigned short )0;
    sqlstm.sqtdso[3] = (unsigned short )0;
    sqlstm.sqhstv[4] = (         void  *)cell_id;
    sqlstm.sqhstl[4] = (unsigned int  )sizeof(int);
    sqlstm.sqhsts[4] = (         int  )sizeof(int);
    sqlstm.sqindv[4] = (         void  *)cell_ind;
    sqlstm.sqinds[4] = (         int  )sizeof(short);
    sqlstm.sqharm[4] = (unsigned int  )0;
    sqlstm.sqharc[4] = (unsigned int   *)0;
    sqlstm.sqadto[4] = (unsigned short )0;
    sqlstm.sqtdso[4] = (unsigned short )0;
    sqlstm.sqphsv = sqlstm.sqhstv;
    sqlstm.sqphsl = sqlstm.sqhstl;
    sqlstm.sqphss = sqlstm.sqhsts;
    sqlstm.sqpind = sqlstm.sqindv;
    sqlstm.sqpins = sqlstm.sqinds;
    sqlstm.sqparm = sqlstm.sqharm;
    sqlstm.sqparc = sqlstm.sqharc;
    sqlstm.sqpadto = sqlstm.sqadto;
    sqlstm.sqptdso = sqlstm.sqtdso;
    sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
    if (sqlca.sqlcode == 1403) goto not_found;
    if (sqlca.sqlcode < 0) goto not_found;
}


  }  
  cout<<"******* TofinoShowerMap  parameters written to Oracle **********\n";
  cout<<"****************************************************************\n";
  commit();
  pPar->setChanged(kFALSE);
  return version;
not_found:
  showSqlError("writePar(HTofinoShowerMap*)");
  rollback();
  pPar->setChanged(kFALSE);
  return -1;
}


Int_t HTofinoParOraIo::createVers(HParSet *pPar){
  cout<<"\n------------------  "<<pPar->GetName()<<"   ------------------\n";
  cout<<"Author: "<<pPar->getAuthor()<<endl;
  if (strlen(pPar->getAuthor())==0) {
    Error("createVers(HParSet*)",
          "\nAuthor of parameters not defined, please set it!");
    return -1;
  }
  if (strlen(pPar->getDescription())==0) {
    Error("createVers(HParSet*)",
          "\ndescription of parameters not definedi, please set it!");
    return -1;
  }
  /* EXEC SQL BEGIN DECLARE SECTION; */ 

    int   vers=-1;
    int   context;
    int   run;
    char* creator;
    char* descript;
  /* EXEC SQL END DECLARE SECTION; */ 

  context = getContextId(pPar->IsA()->GetName(),pPar->getParamContext());
  if (context==-1) return -1;
  run=getActRunId();
  creator  = (Char_t*)pPar->getAuthor();
  descript = (Char_t*)pPar->getDescription();
  /* EXEC SQL WHENEVER SQLERROR GOTO not_found; */ 

  /* EXEC SQL WHENEVER NOT FOUND GOTO not_found; */ 

  const Char_t* contName=pPar->IsA()->GetName();
  if (strcmp(contName,"HTofinoCalPar")==0) {
    /* EXEC SQL EXECUTE
      BEGIN
        SELECT tofino_ana.tofino_util.next_version INTO :vers FROM DUAL;
        INSERT INTO tofino_ana.tofino_cal_par_vers
                   (vers_id, orig_context_id, run_id, author, description)
            VALUES (:vers, :context, :run, :creator, :descript);
      END;
    END-EXEC; */ 

{
    struct sqlexd sqlstm;
    sqlorat((void **)0, &sqlctx, &oraca);
    sqlstm.sqlvsn = 12;
    sqlstm.arrsiz = 24;
    sqlstm.sqladtp = &sqladt;
    sqlstm.sqltdsp = &sqltds;
    sqlstm.stmt = "begin SELECT tofino_ana . tofino_util . next_version INTO\
 :vers FROM DUAL ; INSERT INTO tofino_ana . tofino_cal_par_vers ( vers_id , or\
ig_context_id , run_id , author , description ) VALUES ( :vers , :context , :r\
un , :creator , :descript ) ; END ;";
    sqlstm.iters = (unsigned int  )1;
    sqlstm.offset = (unsigned int  )589;
    sqlstm.cud = sqlcud0;
    sqlstm.sqlest = (unsigned char  *)&sqlca;
    sqlstm.sqlety = (unsigned short)256;
    sqlstm.occurs = (unsigned int  )0;
    sqlstm.sqhstv[0] = (         void  *)&vers;
    sqlstm.sqhstl[0] = (unsigned int  )sizeof(int);
    sqlstm.sqhsts[0] = (         int  )0;
    sqlstm.sqindv[0] = (         void  *)0;
    sqlstm.sqinds[0] = (         int  )0;
    sqlstm.sqharm[0] = (unsigned int  )0;
    sqlstm.sqadto[0] = (unsigned short )0;
    sqlstm.sqtdso[0] = (unsigned short )0;
    sqlstm.sqhstv[1] = (         void  *)&context;
    sqlstm.sqhstl[1] = (unsigned int  )sizeof(int);
    sqlstm.sqhsts[1] = (         int  )0;
    sqlstm.sqindv[1] = (         void  *)0;
    sqlstm.sqinds[1] = (         int  )0;
    sqlstm.sqharm[1] = (unsigned int  )0;
    sqlstm.sqadto[1] = (unsigned short )0;
    sqlstm.sqtdso[1] = (unsigned short )0;
    sqlstm.sqhstv[2] = (         void  *)&run;
    sqlstm.sqhstl[2] = (unsigned int  )sizeof(int);
    sqlstm.sqhsts[2] = (         int  )0;
    sqlstm.sqindv[2] = (         void  *)0;
    sqlstm.sqinds[2] = (         int  )0;
    sqlstm.sqharm[2] = (unsigned int  )0;
    sqlstm.sqadto[2] = (unsigned short )0;
    sqlstm.sqtdso[2] = (unsigned short )0;
    sqlstm.sqhstv[3] = (         void  *)creator;
    sqlstm.sqhstl[3] = (unsigned int  )0;
    sqlstm.sqhsts[3] = (         int  )0;
    sqlstm.sqindv[3] = (         void  *)0;
    sqlstm.sqinds[3] = (         int  )0;
    sqlstm.sqharm[3] = (unsigned int  )0;
    sqlstm.sqadto[3] = (unsigned short )0;
    sqlstm.sqtdso[3] = (unsigned short )0;
    sqlstm.sqhstv[4] = (         void  *)descript;
    sqlstm.sqhstl[4] = (unsigned int  )0;
    sqlstm.sqhsts[4] = (         int  )0;
    sqlstm.sqindv[4] = (         void  *)0;
    sqlstm.sqinds[4] = (         int  )0;
    sqlstm.sqharm[4] = (unsigned int  )0;
    sqlstm.sqadto[4] = (unsigned short )0;
    sqlstm.sqtdso[4] = (unsigned short )0;
    sqlstm.sqphsv = sqlstm.sqhstv;
    sqlstm.sqphsl = sqlstm.sqhstl;
    sqlstm.sqphss = sqlstm.sqhsts;
    sqlstm.sqpind = sqlstm.sqindv;
    sqlstm.sqpins = sqlstm.sqinds;
    sqlstm.sqparm = sqlstm.sqharm;
    sqlstm.sqparc = sqlstm.sqharc;
    sqlstm.sqpadto = sqlstm.sqadto;
    sqlstm.sqptdso = sqlstm.sqtdso;
    sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
    if (sqlca.sqlcode == 1403) goto not_found;
    if (sqlca.sqlcode < 0) goto not_found;
}


    cout<<"Oracle version for TofinoCalPar created:  "<<vers<<endl;
  } else if (strcmp(contName,"HTofinoShowerMap")==0) {
    /* EXEC SQL EXECUTE
      BEGIN
        SELECT tofino_ana.tofino_util.next_version INTO :vers FROM DUAL;
        INSERT INTO tofino_ana.tofino_shower_map_vers
                   (vers_id, orig_context_id, run_id, author, description)
            VALUES (:vers, :context, :run, :creator, :descript);
      END;
    END-EXEC; */ 

{
    struct sqlexd sqlstm;
    sqlorat((void **)0, &sqlctx, &oraca);
    sqlstm.sqlvsn = 12;
    sqlstm.arrsiz = 24;
    sqlstm.sqladtp = &sqladt;
    sqlstm.sqltdsp = &sqltds;
    sqlstm.stmt = "begin SELECT tofino_ana . tofino_util . next_version INTO\
 :vers FROM DUAL ; INSERT INTO tofino_ana . tofino_shower_map_vers ( vers_id ,\
 orig_context_id , run_id , author , description ) VALUES ( :vers , :context ,\
 :run , :creator , :descript ) ; END ;";
    sqlstm.iters = (unsigned int  )1;
    sqlstm.offset = (unsigned int  )624;
    sqlstm.cud = sqlcud0;
    sqlstm.sqlest = (unsigned char  *)&sqlca;
    sqlstm.sqlety = (unsigned short)256;
    sqlstm.occurs = (unsigned int  )0;
    sqlstm.sqhstv[0] = (         void  *)&vers;
    sqlstm.sqhstl[0] = (unsigned int  )sizeof(int);
    sqlstm.sqhsts[0] = (         int  )0;
    sqlstm.sqindv[0] = (         void  *)0;
    sqlstm.sqinds[0] = (         int  )0;
    sqlstm.sqharm[0] = (unsigned int  )0;
    sqlstm.sqadto[0] = (unsigned short )0;
    sqlstm.sqtdso[0] = (unsigned short )0;
    sqlstm.sqhstv[1] = (         void  *)&context;
    sqlstm.sqhstl[1] = (unsigned int  )sizeof(int);
    sqlstm.sqhsts[1] = (         int  )0;
    sqlstm.sqindv[1] = (         void  *)0;
    sqlstm.sqinds[1] = (         int  )0;
    sqlstm.sqharm[1] = (unsigned int  )0;
    sqlstm.sqadto[1] = (unsigned short )0;
    sqlstm.sqtdso[1] = (unsigned short )0;
    sqlstm.sqhstv[2] = (         void  *)&run;
    sqlstm.sqhstl[2] = (unsigned int  )sizeof(int);
    sqlstm.sqhsts[2] = (         int  )0;
    sqlstm.sqindv[2] = (         void  *)0;
    sqlstm.sqinds[2] = (         int  )0;
    sqlstm.sqharm[2] = (unsigned int  )0;
    sqlstm.sqadto[2] = (unsigned short )0;
    sqlstm.sqtdso[2] = (unsigned short )0;
    sqlstm.sqhstv[3] = (         void  *)creator;
    sqlstm.sqhstl[3] = (unsigned int  )0;
    sqlstm.sqhsts[3] = (         int  )0;
    sqlstm.sqindv[3] = (         void  *)0;
    sqlstm.sqinds[3] = (         int  )0;
    sqlstm.sqharm[3] = (unsigned int  )0;
    sqlstm.sqadto[3] = (unsigned short )0;
    sqlstm.sqtdso[3] = (unsigned short )0;
    sqlstm.sqhstv[4] = (         void  *)descript;
    sqlstm.sqhstl[4] = (unsigned int  )0;
    sqlstm.sqhsts[4] = (         int  )0;
    sqlstm.sqindv[4] = (         void  *)0;
    sqlstm.sqinds[4] = (         int  )0;
    sqlstm.sqharm[4] = (unsigned int  )0;
    sqlstm.sqadto[4] = (unsigned short )0;
    sqlstm.sqtdso[4] = (unsigned short )0;
    sqlstm.sqphsv = sqlstm.sqhstv;
    sqlstm.sqphsl = sqlstm.sqhstl;
    sqlstm.sqphss = sqlstm.sqhsts;
    sqlstm.sqpind = sqlstm.sqindv;
    sqlstm.sqpins = sqlstm.sqinds;
    sqlstm.sqparm = sqlstm.sqharm;
    sqlstm.sqparc = sqlstm.sqharc;
    sqlstm.sqpadto = sqlstm.sqadto;
    sqlstm.sqptdso = sqlstm.sqtdso;
    sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
    if (sqlca.sqlcode == 1403) goto not_found;
    if (sqlca.sqlcode < 0) goto not_found;
}


    cout<<"Oracle version for TofinoShowerMap  created:  "<<vers<<endl;
  } else {
    Error("createVers(HParSet *pPar)","I don't know such container:%s",contName);
  }
  return vers;
not_found:
  showSqlError("createParVers(HParSet*)");
  return -1;
}

void HTofinoParOraIo::printInfo(const Char_t* contName) {
  // prints the modules initialized from Oracle
  // will later go to the log file
  Bool_t first=kTRUE;
  for(Int_t i=0;i<TOFINO_MAXMODS;i++) {
    if (initModules->At(i)) {
      if (first) {
        cout<<contName<<": module(s) initialized from Oracle: ";
        first=kFALSE;
      }
      cout<<(initModules->At(i)-1)<<" ";
    }
  }
  cout<<'\n';
}

Last change: Sat May 22 13:16:50 2010
Last generated: 2010-05-22 13:16

This page has been automatically generated. If you have any comments or suggestions about the page layout send a mail to ROOT support, or contact the developers with any questions or problems regarding ROOT.