#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 */
typedef void * sql_context;
typedef void * SQL_CONTEXT;
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,
};
struct sqltdss
{
unsigned int tdsvsn;
unsigned short tdsnum;
unsigned char *tdsval[1];
};
typedef struct sqltdss sqltdss;
static struct sqltdss sqltds =
{
1,
0,
};
struct sqlcxp
{
unsigned short fillen;
char filnam[17];
};
static const struct sqlcxp sqlfpn =
{
16,
"hemcparora2io.pc"
};
static unsigned int sqlctx = 4706083;
static struct sqlexd {
unsigned long 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;
unsigned char **sqphsv;
unsigned long *sqphsl;
int *sqphss;
short **sqpind;
int *sqpins;
unsigned long *sqparm;
unsigned long **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;
unsigned int sqlpfmem;
unsigned char *sqhstv[11];
unsigned long sqhstl[11];
int sqhsts[11];
short *sqindv[11];
int sqinds[11];
unsigned long sqharm[11];
unsigned long *sqharc[11];
unsigned short sqadto[11];
unsigned short sqtdso[11];
} sqlstm = {13,11};
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 *);
}
static const int IAPSUCC = 0;
static const int IAPFAIL = 1403;
static const int IAPFTL = 535;
extern "C" { void sqliem(unsigned char *, signed int *); }
typedef struct { unsigned short len; unsigned char arr[1]; } VARCHAR;
typedef struct { unsigned short len; unsigned char arr[1]; } varchar;
static const short sqlcud0[] =
{13,4130,1,0,0,
5,0,0,1,167,0,4,113,0,0,4,1,0,1,0,2,3,0,0,2,4,0,0,2,4,0,0,1,3,0,0,
36,0,0,2,163,0,4,121,0,0,4,1,0,1,0,2,3,0,0,2,4,0,0,2,4,0,0,1,3,0,0,
67,0,0,3,134,0,4,159,0,0,6,1,0,1,0,2,3,0,0,2,3,0,0,2,3,0,0,2,3,0,0,2,3,0,0,1,3,
0,0,
106,0,0,4,220,0,4,207,0,0,11,1,0,1,0,2,3,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,1,3,0,0,
165,0,0,5,88,0,4,274,0,0,2,0,0,1,0,2,3,0,0,2,9,0,0,
188,0,0,6,108,0,4,319,0,0,2,0,0,1,0,2,3,0,0,2,9,0,0,
211,0,0,7,242,0,6,419,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,
246,0,0,8,238,0,6,429,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,
281,0,0,9,162,0,3,483,0,0,6,6,0,1,0,1,3,0,0,1,3,0,0,1,3,0,0,1,3,0,0,1,3,0,0,1,
3,0,0,
320,0,0,10,228,0,3,550,0,0,11,11,0,1,0,1,3,0,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,
};
using namespace std;
#include "hemcparora2io.h"
#include "hparora2set.h"
#include "hemctrb3lookup.h"
#include "hemccalpar.h"
#include "hemcgeompar.h"
#include "hgeomcompositevolume.h"
#include "hora2geomdetversion.h"
#include "hora2geomobj.h"
#include "TClass.h"
#include "TList.h"
#include <iostream>
#include <iomanip>
#include <unistd.h>
#define SQLCA_STORAGE_CLASS extern
#define ORACA_STORAGE_CLASS extern
#include <oraca.h>
#include <sqlca.h>
ClassImp(HEmcParOra2Io)
#define EMC_MAXSEC 6
#define EMC_MAXSECCELLS 163
#define EMC_MAXCELLS 1956 //978 * 2 because we have 2 channels per cell
#define EMC_MAXGEOMCELLS 164
HEmcParOra2Io::HEmcParOra2Io(HOra2Conn* pC) : HDetParOra2Io(pC) {
fName="HEmcParIo";
initModules=new TArrayI(EMC_MAXSEC);
geomVers=0;
sensVolume=0;
}
HEmcParOra2Io::~HEmcParOra2Io(void) {
if (initModules) delete initModules;
if (geomVers) delete geomVers;
if (sensVolume) delete sensVolume;
}
Bool_t HEmcParOra2Io::init(HParSet* pPar,Int_t* set) {
if (getRunStart(pPar)<0) {
pPar->setInputVersion(-1,inputNumber);
return kFALSE;
}
const Text_t* name=pPar->IsA()->GetName();
if (strcmp(name,"HEmcTrb3Lookup")==0) return read(((HEmcTrb3Lookup*)pPar));
if (strcmp(name,"HEmcCalPar")==0) return read(((HEmcCalPar*)pPar),set);
if (strcmp(name,"HEmcGeomPar")==0) return read(((HEmcGeomPar*)pPar),set);
cout<<"No read-interface to Oracle for parameter container "
<<pPar->GetName()<<endl;
return kFALSE;
}
Int_t HEmcParOra2Io::write(HParSet* pPar) {
if (getRunStart(pPar)<=0) return -1;
const Text_t* name=pPar->IsA()->GetName();
if (strcmp(name,"HEmcTrb3Lookup")==0) return writePar((HEmcTrb3Lookup*)pPar);
if (strcmp(name,"HEmcCalPar")==0) return writePar((HEmcCalPar*)pPar);
if (strcmp(name,"HEmcGeomPar")==0) return writeAlignment((HEmcGeomPar*)pPar);
cout<<"No write-interface to Oracle for parameter container "
<<pPar->GetName()<<endl;
return 0;
}
Bool_t HEmcParOra2Io::getVersion(HParSet* pPar,Int_t& version) {
HParOra2Set* oraSet=getOraSet(pPar);
if (oraSet->contextId==-1 || runStart==-1) {
pPar->setInputVersion(-1,inputNumber);
version=-1;
return kFALSE;
}
Int_t contVers=pPar->getInputVersion(inputNumber);
if (contVers!=-1 && runStart>=oraSet->versDate[0] && runStart<=oraSet->versDate[1]) {
version=contVers;
return kFALSE;
}
const Char_t* containerClass=pPar->IsA()->GetName();
oraSet->clearVersDate();
int context;
int vers;
double since;
double until;
context=oraSet->contextId;
if (strcmp(containerClass,"HEmcTrb3Lookup")==0) {
{
struct sqlexd sqlstm;
sqlorat((void **)0, &sqlctx, &oraca);
sqlstm.sqlvsn = 13;
sqlstm.arrsiz = 4;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.stmt = "select version ,hanadate.date_to_number(valid_since) ,han\
adate.date_to_number(valid_until) into :b0,:b1,:b2 from emc_ana2.trb3lookup_v\
ers_at_date where context_id=:b3";
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )5;
sqlstm.selerr = (unsigned short)1;
sqlstm.sqlpfmem = (unsigned int )0;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
sqlstm.sqlety = (unsigned short)4352;
sqlstm.occurs = (unsigned int )0;
sqlstm.sqhstv[0] = (unsigned char *)&vers;
sqlstm.sqhstl[0] = (unsigned long )sizeof(int);
sqlstm.sqhsts[0] = ( int )0;
sqlstm.sqindv[0] = ( short *)0;
sqlstm.sqinds[0] = ( int )0;
sqlstm.sqharm[0] = (unsigned long )0;
sqlstm.sqadto[0] = (unsigned short )0;
sqlstm.sqtdso[0] = (unsigned short )0;
sqlstm.sqhstv[1] = (unsigned char *)&since;
sqlstm.sqhstl[1] = (unsigned long )sizeof(double);
sqlstm.sqhsts[1] = ( int )0;
sqlstm.sqindv[1] = ( short *)0;
sqlstm.sqinds[1] = ( int )0;
sqlstm.sqharm[1] = (unsigned long )0;
sqlstm.sqadto[1] = (unsigned short )0;
sqlstm.sqtdso[1] = (unsigned short )0;
sqlstm.sqhstv[2] = (unsigned char *)&until;
sqlstm.sqhstl[2] = (unsigned long )sizeof(double);
sqlstm.sqhsts[2] = ( int )0;
sqlstm.sqindv[2] = ( short *)0;
sqlstm.sqinds[2] = ( int )0;
sqlstm.sqharm[2] = (unsigned long )0;
sqlstm.sqadto[2] = (unsigned short )0;
sqlstm.sqtdso[2] = (unsigned short )0;
sqlstm.sqhstv[3] = (unsigned char *)&context;
sqlstm.sqhstl[3] = (unsigned long )sizeof(int);
sqlstm.sqhsts[3] = ( int )0;
sqlstm.sqindv[3] = ( short *)0;
sqlstm.sqinds[3] = ( int )0;
sqlstm.sqharm[3] = (unsigned long )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("getVersion(HParSet*,Int_t&)");
}
} else {
if (strcmp(containerClass,"HEmcCalPar")==0) {
{
struct sqlexd sqlstm;
sqlorat((void **)0, &sqlctx, &oraca);
sqlstm.sqlvsn = 13;
sqlstm.arrsiz = 4;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.stmt = "select version ,hanadate.date_to_number(valid_since) ,h\
anadate.date_to_number(valid_until) into :b0,:b1,:b2 from emc_ana2.calpar_ver\
s_at_date where context_id=:b3";
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )36;
sqlstm.selerr = (unsigned short)1;
sqlstm.sqlpfmem = (unsigned int )0;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
sqlstm.sqlety = (unsigned short)4352;
sqlstm.occurs = (unsigned int )0;
sqlstm.sqhstv[0] = (unsigned char *)&vers;
sqlstm.sqhstl[0] = (unsigned long )sizeof(int);
sqlstm.sqhsts[0] = ( int )0;
sqlstm.sqindv[0] = ( short *)0;
sqlstm.sqinds[0] = ( int )0;
sqlstm.sqharm[0] = (unsigned long )0;
sqlstm.sqadto[0] = (unsigned short )0;
sqlstm.sqtdso[0] = (unsigned short )0;
sqlstm.sqhstv[1] = (unsigned char *)&since;
sqlstm.sqhstl[1] = (unsigned long )sizeof(double);
sqlstm.sqhsts[1] = ( int )0;
sqlstm.sqindv[1] = ( short *)0;
sqlstm.sqinds[1] = ( int )0;
sqlstm.sqharm[1] = (unsigned long )0;
sqlstm.sqadto[1] = (unsigned short )0;
sqlstm.sqtdso[1] = (unsigned short )0;
sqlstm.sqhstv[2] = (unsigned char *)&until;
sqlstm.sqhstl[2] = (unsigned long )sizeof(double);
sqlstm.sqhsts[2] = ( int )0;
sqlstm.sqindv[2] = ( short *)0;
sqlstm.sqinds[2] = ( int )0;
sqlstm.sqharm[2] = (unsigned long )0;
sqlstm.sqadto[2] = (unsigned short )0;
sqlstm.sqtdso[2] = (unsigned short )0;
sqlstm.sqhstv[3] = (unsigned char *)&context;
sqlstm.sqhstl[3] = (unsigned long )sizeof(int);
sqlstm.sqhsts[3] = ( int )0;
sqlstm.sqindv[3] = ( short *)0;
sqlstm.sqinds[3] = ( int )0;
sqlstm.sqharm[3] = (unsigned long )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("getVersion(HParSet*,Int_t&)");
}
}
}
version=vers;
oraSet->versDate[0]=since;
oraSet->versDate[1]=until;
return kTRUE;
notfound:
pPar->setInputVersion(-1,inputNumber);
version=-1;
return kFALSE;
};
Bool_t HEmcParOra2Io::read(HEmcTrb3Lookup* pPar) {
Int_t oraVersion=-1;
Bool_t rc=getVersion(pPar,oraVersion);
if (oraVersion<0) return kFALSE;
if (oraVersion>=0&&rc==kFALSE) return kTRUE;
pPar->clear();
int vers;
struct {
int address[EMC_MAXCELLS];
int channel[EMC_MAXCELLS];
int module[EMC_MAXCELLS];
int cell[EMC_MAXCELLS];
int flag[EMC_MAXCELLS];
} lookup;
vers=oraVersion;
{
struct sqlexd sqlstm;
sqlorat((void **)0, &sqlctx, &oraca);
sqlstm.sqlvsn = 13;
sqlstm.arrsiz = 6;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.stmt = "select trbnet_address ,channel ,module ,cell ,flag into :s1\
,:s2 ,:s3 ,:s4 ,:s5 from emc_ana2.trb3lookup_data_view where vers_id=:b1";
sqlstm.iters = (unsigned int )1956;
sqlstm.offset = (unsigned int )67;
sqlstm.selerr = (unsigned short)1;
sqlstm.sqlpfmem = (unsigned int )0;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
sqlstm.sqlety = (unsigned short)4352;
sqlstm.occurs = (unsigned int )0;
sqlstm.sqhstv[0] = (unsigned char *)lookup.address;
sqlstm.sqhstl[0] = (unsigned long )sizeof(int);
sqlstm.sqhsts[0] = ( int )sizeof(int);
sqlstm.sqindv[0] = ( short *)0;
sqlstm.sqinds[0] = ( int )0;
sqlstm.sqharm[0] = (unsigned long )0;
sqlstm.sqharc[0] = (unsigned long *)0;
sqlstm.sqadto[0] = (unsigned short )0;
sqlstm.sqtdso[0] = (unsigned short )0;
sqlstm.sqhstv[1] = (unsigned char *)lookup.channel;
sqlstm.sqhstl[1] = (unsigned long )sizeof(int);
sqlstm.sqhsts[1] = ( int )sizeof(int);
sqlstm.sqindv[1] = ( short *)0;
sqlstm.sqinds[1] = ( int )0;
sqlstm.sqharm[1] = (unsigned long )0;
sqlstm.sqharc[1] = (unsigned long *)0;
sqlstm.sqadto[1] = (unsigned short )0;
sqlstm.sqtdso[1] = (unsigned short )0;
sqlstm.sqhstv[2] = (unsigned char *)lookup.module;
sqlstm.sqhstl[2] = (unsigned long )sizeof(int);
sqlstm.sqhsts[2] = ( int )sizeof(int);
sqlstm.sqindv[2] = ( short *)0;
sqlstm.sqinds[2] = ( int )0;
sqlstm.sqharm[2] = (unsigned long )0;
sqlstm.sqharc[2] = (unsigned long *)0;
sqlstm.sqadto[2] = (unsigned short )0;
sqlstm.sqtdso[2] = (unsigned short )0;
sqlstm.sqhstv[3] = (unsigned char *)lookup.cell;
sqlstm.sqhstl[3] = (unsigned long )sizeof(int);
sqlstm.sqhsts[3] = ( int )sizeof(int);
sqlstm.sqindv[3] = ( short *)0;
sqlstm.sqinds[3] = ( int )0;
sqlstm.sqharm[3] = (unsigned long )0;
sqlstm.sqharc[3] = (unsigned long *)0;
sqlstm.sqadto[3] = (unsigned short )0;
sqlstm.sqtdso[3] = (unsigned short )0;
sqlstm.sqhstv[4] = (unsigned char *)lookup.flag;
sqlstm.sqhstl[4] = (unsigned long )sizeof(int);
sqlstm.sqhsts[4] = ( int )sizeof(int);
sqlstm.sqindv[4] = ( short *)0;
sqlstm.sqinds[4] = ( int )0;
sqlstm.sqharm[4] = (unsigned long )0;
sqlstm.sqharc[4] = (unsigned long *)0;
sqlstm.sqadto[4] = (unsigned short )0;
sqlstm.sqtdso[4] = (unsigned short )0;
sqlstm.sqhstv[5] = (unsigned char *)&vers;
sqlstm.sqhstl[5] = (unsigned long )sizeof(int);
sqlstm.sqhsts[5] = ( int )sizeof(int);
sqlstm.sqindv[5] = ( short *)0;
sqlstm.sqinds[5] = ( int )0;
sqlstm.sqharm[5] = (unsigned long )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(HEmcTrb3Lookup*)");
}
Int_t nData=sqlca.sqlerrd[2];
for (Int_t i=0;i<nData;i++) {
pPar->fill(lookup.address[i],lookup.channel[i],
lookup.module[i]-1,lookup.cell[i], lookup.flag[i]);
}
rc=kTRUE;
if (nData>0) {
setChanged(pPar,oraVersion);
cout<<pPar->GetName()<<" initialized from Oracle"<<endl;
} else {
pPar->setInputVersion(-1,inputNumber);
rc=kFALSE;
}
return rc;
}
Bool_t HEmcParOra2Io::read(HEmcCalPar* pPar, Int_t* set) {
Int_t oraVersion=-1;
Bool_t rc=getVersion(pPar,oraVersion);
if (oraVersion<0) return kFALSE;
if (oraVersion>=0&&rc==kFALSE) return kTRUE;
pPar->clear();
initModules->Reset();
int vers;
struct {
int module[EMC_MAXCELLS];
int cell[EMC_MAXCELLS];
float tdcSlope[EMC_MAXCELLS];
float tdcOffset[EMC_MAXCELLS];
float adcPar_0[EMC_MAXCELLS];
float adcPar_1[EMC_MAXCELLS];
float adcPar_2[EMC_MAXCELLS];
float timeWalkCorr_0[EMC_MAXCELLS];
float timeWalkCorr_1[EMC_MAXCELLS];
float timeWalkCorr_2[EMC_MAXCELLS];
} cal;
vers=oraVersion;
{
struct sqlexd sqlstm;
sqlorat((void **)0, &sqlctx, &oraca);
sqlstm.sqlvsn = 13;
sqlstm.arrsiz = 11;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.stmt = "select module ,cell ,tdc_slope ,tdc_offset ,adc_par_0 ,adc_\
par_1 ,adc_par_2 ,time_walk_0 ,time_walk_1 ,time_walk_2 into :s1 ,:s2 ,:s3 ,:s\
4 ,:s5 ,:s6 ,:s7 ,:s8 ,:s9 ,:s10 from emc_ana2.calpar_data_view where vers_i\
d=:b1";
sqlstm.iters = (unsigned int )1956;
sqlstm.offset = (unsigned int )106;
sqlstm.selerr = (unsigned short)1;
sqlstm.sqlpfmem = (unsigned int )0;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
sqlstm.sqlety = (unsigned short)4352;
sqlstm.occurs = (unsigned int )0;
sqlstm.sqhstv[0] = (unsigned char *)cal.module;
sqlstm.sqhstl[0] = (unsigned long )sizeof(int);
sqlstm.sqhsts[0] = ( int )sizeof(int);
sqlstm.sqindv[0] = ( short *)0;
sqlstm.sqinds[0] = ( int )0;
sqlstm.sqharm[0] = (unsigned long )0;
sqlstm.sqharc[0] = (unsigned long *)0;
sqlstm.sqadto[0] = (unsigned short )0;
sqlstm.sqtdso[0] = (unsigned short )0;
sqlstm.sqhstv[1] = (unsigned char *)cal.cell;
sqlstm.sqhstl[1] = (unsigned long )sizeof(int);
sqlstm.sqhsts[1] = ( int )sizeof(int);
sqlstm.sqindv[1] = ( short *)0;
sqlstm.sqinds[1] = ( int )0;
sqlstm.sqharm[1] = (unsigned long )0;
sqlstm.sqharc[1] = (unsigned long *)0;
sqlstm.sqadto[1] = (unsigned short )0;
sqlstm.sqtdso[1] = (unsigned short )0;
sqlstm.sqhstv[2] = (unsigned char *)cal.tdcSlope;
sqlstm.sqhstl[2] = (unsigned long )sizeof(float);
sqlstm.sqhsts[2] = ( int )sizeof(float);
sqlstm.sqindv[2] = ( short *)0;
sqlstm.sqinds[2] = ( int )0;
sqlstm.sqharm[2] = (unsigned long )0;
sqlstm.sqharc[2] = (unsigned long *)0;
sqlstm.sqadto[2] = (unsigned short )0;
sqlstm.sqtdso[2] = (unsigned short )0;
sqlstm.sqhstv[3] = (unsigned char *)cal.tdcOffset;
sqlstm.sqhstl[3] = (unsigned long )sizeof(float);
sqlstm.sqhsts[3] = ( int )sizeof(float);
sqlstm.sqindv[3] = ( short *)0;
sqlstm.sqinds[3] = ( int )0;
sqlstm.sqharm[3] = (unsigned long )0;
sqlstm.sqharc[3] = (unsigned long *)0;
sqlstm.sqadto[3] = (unsigned short )0;
sqlstm.sqtdso[3] = (unsigned short )0;
sqlstm.sqhstv[4] = (unsigned char *)cal.adcPar_0;
sqlstm.sqhstl[4] = (unsigned long )sizeof(float);
sqlstm.sqhsts[4] = ( int )sizeof(float);
sqlstm.sqindv[4] = ( short *)0;
sqlstm.sqinds[4] = ( int )0;
sqlstm.sqharm[4] = (unsigned long )0;
sqlstm.sqharc[4] = (unsigned long *)0;
sqlstm.sqadto[4] = (unsigned short )0;
sqlstm.sqtdso[4] = (unsigned short )0;
sqlstm.sqhstv[5] = (unsigned char *)cal.adcPar_1;
sqlstm.sqhstl[5] = (unsigned long )sizeof(float);
sqlstm.sqhsts[5] = ( int )sizeof(float);
sqlstm.sqindv[5] = ( short *)0;
sqlstm.sqinds[5] = ( int )0;
sqlstm.sqharm[5] = (unsigned long )0;
sqlstm.sqharc[5] = (unsigned long *)0;
sqlstm.sqadto[5] = (unsigned short )0;
sqlstm.sqtdso[5] = (unsigned short )0;
sqlstm.sqhstv[6] = (unsigned char *)cal.adcPar_2;
sqlstm.sqhstl[6] = (unsigned long )sizeof(float);
sqlstm.sqhsts[6] = ( int )sizeof(float);
sqlstm.sqindv[6] = ( short *)0;
sqlstm.sqinds[6] = ( int )0;
sqlstm.sqharm[6] = (unsigned long )0;
sqlstm.sqharc[6] = (unsigned long *)0;
sqlstm.sqadto[6] = (unsigned short )0;
sqlstm.sqtdso[6] = (unsigned short )0;
sqlstm.sqhstv[7] = (unsigned char *)cal.timeWalkCorr_0;
sqlstm.sqhstl[7] = (unsigned long )sizeof(float);
sqlstm.sqhsts[7] = ( int )sizeof(float);
sqlstm.sqindv[7] = ( short *)0;
sqlstm.sqinds[7] = ( int )0;
sqlstm.sqharm[7] = (unsigned long )0;
sqlstm.sqharc[7] = (unsigned long *)0;
sqlstm.sqadto[7] = (unsigned short )0;
sqlstm.sqtdso[7] = (unsigned short )0;
sqlstm.sqhstv[8] = (unsigned char *)cal.timeWalkCorr_1;
sqlstm.sqhstl[8] = (unsigned long )sizeof(float);
sqlstm.sqhsts[8] = ( int )sizeof(float);
sqlstm.sqindv[8] = ( short *)0;
sqlstm.sqinds[8] = ( int )0;
sqlstm.sqharm[8] = (unsigned long )0;
sqlstm.sqharc[8] = (unsigned long *)0;
sqlstm.sqadto[8] = (unsigned short )0;
sqlstm.sqtdso[8] = (unsigned short )0;
sqlstm.sqhstv[9] = (unsigned char *)cal.timeWalkCorr_2;
sqlstm.sqhstl[9] = (unsigned long )sizeof(float);
sqlstm.sqhsts[9] = ( int )sizeof(float);
sqlstm.sqindv[9] = ( short *)0;
sqlstm.sqinds[9] = ( int )0;
sqlstm.sqharm[9] = (unsigned long )0;
sqlstm.sqharc[9] = (unsigned long *)0;
sqlstm.sqadto[9] = (unsigned short )0;
sqlstm.sqtdso[9] = (unsigned short )0;
sqlstm.sqhstv[10] = (unsigned char *)&vers;
sqlstm.sqhstl[10] = (unsigned long )sizeof(int);
sqlstm.sqhsts[10] = ( int )sizeof(int);
sqlstm.sqindv[10] = ( short *)0;
sqlstm.sqinds[10] = ( int )0;
sqlstm.sqharm[10] = (unsigned long )0;
sqlstm.sqadto[10] = (unsigned short )0;
sqlstm.sqtdso[10] = (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(HEmcCalPar*,Int_t*)");
}
Int_t nData=sqlca.sqlerrd[2];
Int_t m=-1;
for (Int_t i=0;i<nData;i++) {
m=cal.module[i]-1;
if (set[m]) {
(*pPar)[m][cal.cell[i]].fill(cal.tdcSlope[i],cal.tdcOffset[i],
cal.adcPar_0[i],cal.adcPar_1[i],cal.adcPar_2[i],
cal.timeWalkCorr_0[i], cal.timeWalkCorr_1[i], cal.timeWalkCorr_2[i]);
initModules->AddAt(1,m);
}
}
rc=kTRUE;
for(Int_t i=0;i<EMC_MAXSEC;i++) {
if (set[i]==1 && initModules->At(i)==0) rc=kFALSE;
}
if (rc) {
setChanged(pPar,oraVersion);
printInfo(pPar->GetName());
} else {
pPar->setInputVersion(-1,inputNumber);
}
return rc;
}
Bool_t HEmcParOra2Io::read(HEmcGeomPar* pPar, Int_t* set) {
Bool_t allFound=kTRUE;
Int_t detId=-1;
if (!geomVers) {
detId=getDetectorId(pPar->getDetectorName());
geomVers=new HOra2GeomDetVersion(pPar->getDetectorName(),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 HEmcParOra2Io::readModGeomNames(HEmcGeomPar* pPar,Int_t* set) {
struct {
int sec[EMC_MAXSEC];
struct { unsigned short len; unsigned char arr[10]; } oname[6];
} mods;
struct {
short sec[EMC_MAXSEC];
short oname[EMC_MAXSEC];
} mods_Ind;
{
struct sqlexd sqlstm;
sqlorat((void **)0, &sqlctx, &oraca);
sqlstm.sqlvsn = 13;
sqlstm.arrsiz = 11;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.stmt = "select sector ,geom_obj_name into :s1:s2 ,:s3:s4 from emc\
_ana2.detector_setup_at_date ";
sqlstm.iters = (unsigned int )6;
sqlstm.offset = (unsigned int )165;
sqlstm.selerr = (unsigned short)1;
sqlstm.sqlpfmem = (unsigned int )0;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
sqlstm.sqlety = (unsigned short)4352;
sqlstm.occurs = (unsigned int )0;
sqlstm.sqhstv[0] = (unsigned char *)mods.sec;
sqlstm.sqhstl[0] = (unsigned long )sizeof(int);
sqlstm.sqhsts[0] = ( int )sizeof(int);
sqlstm.sqindv[0] = ( short *)mods_Ind.sec;
sqlstm.sqinds[0] = ( int )sizeof(short);
sqlstm.sqharm[0] = (unsigned long )0;
sqlstm.sqharc[0] = (unsigned long *)0;
sqlstm.sqadto[0] = (unsigned short )0;
sqlstm.sqtdso[0] = (unsigned short )0;
sqlstm.sqhstv[1] = (unsigned char *)mods.oname;
sqlstm.sqhstl[1] = (unsigned long )11;
sqlstm.sqhsts[1] = ( int )12;
sqlstm.sqindv[1] = ( short *)mods_Ind.oname;
sqlstm.sqinds[1] = ( int )sizeof(short);
sqlstm.sqharm[1] = (unsigned long )0;
sqlstm.sqharc[1] = (unsigned long *)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()");
}
Int_t nMods=sqlca.sqlerrd[2];
Int_t s;
Char_t ref[10];
initModules->Reset();
for(Int_t i=0;i<nMods;i++) {
s=mods.sec[i]-1;
HModGeomPar* pMod=pPar->getModule(s,0);
if (pMod && set[s]) {
if (mods_Ind.oname[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[4]='1';
pMod->setRefName(ref);
HGeomCompositeVolume* refMod=pPar->getRefVolume(0);
if (refMod==0) {
refMod=new HGeomCompositeVolume(pPar->getNumComponents());
refMod->SetName(ref);
pPar->addRefVolume(refMod,0);
}
pMod->setVolume(refMod);
}
}
}
Bool_t allFound=kTRUE;
for(Int_t i=0;i<EMC_MAXSEC;i++) {
if (set[i]>0 && initModules->At(i)==0) allFound=kFALSE;
}
return allFound;
}
Bool_t HEmcParOra2Io::readCompGeomNames(HEmcGeomPar* pPar,Int_t* set) {
struct {
int cell_index[EMC_MAXGEOMCELLS];
struct { unsigned short len; unsigned char arr[10]; } oname[164];
} lrecG;
{
struct sqlexd sqlstm;
sqlorat((void **)0, &sqlctx, &oraca);
sqlstm.sqlvsn = 13;
sqlstm.arrsiz = 11;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.stmt = "select cell_index ,geom_obj_name into :s1 ,:s2 from emc_a\
na2.module_cell where geom_obj_name is not null ";
sqlstm.iters = (unsigned int )164;
sqlstm.offset = (unsigned int )188;
sqlstm.selerr = (unsigned short)1;
sqlstm.sqlpfmem = (unsigned int )0;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
sqlstm.sqlety = (unsigned short)4352;
sqlstm.occurs = (unsigned int )0;
sqlstm.sqhstv[0] = (unsigned char *)lrecG.cell_index;
sqlstm.sqhstl[0] = (unsigned long )sizeof(int);
sqlstm.sqhsts[0] = ( int )sizeof(int);
sqlstm.sqindv[0] = ( short *)0;
sqlstm.sqinds[0] = ( int )0;
sqlstm.sqharm[0] = (unsigned long )0;
sqlstm.sqharc[0] = (unsigned long *)0;
sqlstm.sqadto[0] = (unsigned short )0;
sqlstm.sqtdso[0] = (unsigned short )0;
sqlstm.sqhstv[1] = (unsigned char *)lrecG.oname;
sqlstm.sqhstl[1] = (unsigned long )11;
sqlstm.sqhsts[1] = ( int )12;
sqlstm.sqindv[1] = ( short *)0;
sqlstm.sqinds[1] = ( int )0;
sqlstm.sqharm[1] = (unsigned long )0;
sqlstm.sqharc[1] = (unsigned long *)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(...)");
}
HGeomCompositeVolume* pRefMod=pPar->getRefVolume(0);
Int_t nCells=sqlca.sqlerrd[2];
Int_t cell=-1;
for(Int_t k=0;k<nCells;k++) {
lrecG.oname[k].arr[lrecG.oname[k].len]='\0';
TString cName((Char_t*)(lrecG.oname[k].arr));
if (lrecG.cell_index[k] != 999) {
cell=pPar->getCompNum(cName);
HGeomVolume* volu=pRefMod->getComponent(cell);
if (volu) volu->SetName(cName);
else {
Error("readCompGeomNames","Index for cell %s not found",cName.Data());
return kFALSE;
}
} else {
if (!sensVolume) sensVolume=new HGeomVolume();
sensVolume->SetName(cName);
}
}
return (nCells>0) ? kTRUE : kFALSE;
}
void HEmcParOra2Io::addGeomRefComponents(HDetGeomPar* pPar,TList* geomObjects) {
HGeomCompositeVolume* refMod=pPar->getRefVolume(0);
if (refMod && refMod->getNumPoints()==0) {
geomObjects->Add(new HOra2GeomObj(refMod->GetName(),refMod,'R',0));
for(Int_t l=0;l<refMod->getNumComponents();l++) {
HGeomVolume* comp=refMod->getComponent(l);
TString compName=comp->GetName();
if (!compName.IsNull()) {
geomObjects->Add(new HOra2GeomObj(compName,comp,'I',refMod));
}
}
}
geomObjects->Add(new HOra2GeomObj(sensVolume->GetName(),sensVolume,'C',refMod));
}
Bool_t HEmcParOra2Io::transformGeomCompositeComponents(HDetGeomPar* pPar) {
HGeomCompositeVolume* refMod=pPar->getRefVolume(0);
Bool_t rc=kTRUE;
if (refMod && sensVolume) {
TString sensVoluName=sensVolume->GetName();
Int_t nPoints=sensVolume->getNumPoints();
HGeomVolume* refComp=refMod->getComponent(0);
if (sensVoluName.Length()==4 && nPoints>0 && refComp) {
for(Int_t l=0;l<refMod->getNumComponents();l++) {
HGeomVolume* comp=refMod->getComponent(l);
TString compName=comp->GetName();
if (compName.Length()>0) {
comp->SetName(compName.Replace(0,4,sensVoluName));
comp->createPoints(nPoints);
for (Int_t i=0;i<nPoints;i++) comp->setPoint(i,*(sensVolume->getPoint(i)));
}
}
} else rc=kFALSE;
} else rc=kFALSE;
return rc;
}
Int_t HEmcParOra2Io::createVers(HParSet* pPar) {
cout<<"--------------- "<<pPar->GetName()<<" ---------------\n";
if (strlen(pPar->getAuthor())==0) {
Error("createVers(HParSet*)",
"author of parameters not defined");
return -1;
}
if (strlen(pPar->getDescription())==0) {
Error("createVers(HParSet*)",
"descriction of parameters not defined");
return -1;
}
const Char_t* contName=pPar->IsA()->GetName();
int vers=-1;
int context;
int run;
char* creator;
char* descript;
context = getContextId(contName,pPar->getParamContext());
if (context==-1) return -1;
run=getActRunId();
creator=(Char_t*)pPar->getAuthor();
descript=(Char_t*)pPar->getDescription();
if (strcmp(contName,"HEmcTrb3Lookup")==0) {
{
struct sqlexd sqlstm;
sqlorat((void **)0, &sqlctx, &oraca);
sqlstm.sqlvsn = 13;
sqlstm.arrsiz = 11;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.stmt = "begin SELECT emc_ana2 . emc_par_query . next_version INTO\
:vers FROM DUAL ; INSERT INTO emc_ana2 . trb3lookup_vers ( vers_id , orig_con\
text_id , run_id , author , description ) VALUES ( :vers , :context , :run , :\
creator , :descript ) ; END ;";
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )211;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
sqlstm.sqlety = (unsigned short)4352;
sqlstm.occurs = (unsigned int )0;
sqlstm.sqhstv[0] = (unsigned char *)&vers;
sqlstm.sqhstl[0] = (unsigned long )sizeof(int);
sqlstm.sqhsts[0] = ( int )0;
sqlstm.sqindv[0] = ( short *)0;
sqlstm.sqinds[0] = ( int )0;
sqlstm.sqharm[0] = (unsigned long )0;
sqlstm.sqadto[0] = (unsigned short )0;
sqlstm.sqtdso[0] = (unsigned short )0;
sqlstm.sqhstv[1] = (unsigned char *)&context;
sqlstm.sqhstl[1] = (unsigned long )sizeof(int);
sqlstm.sqhsts[1] = ( int )0;
sqlstm.sqindv[1] = ( short *)0;
sqlstm.sqinds[1] = ( int )0;
sqlstm.sqharm[1] = (unsigned long )0;
sqlstm.sqadto[1] = (unsigned short )0;
sqlstm.sqtdso[1] = (unsigned short )0;
sqlstm.sqhstv[2] = (unsigned char *)&run;
sqlstm.sqhstl[2] = (unsigned long )sizeof(int);
sqlstm.sqhsts[2] = ( int )0;
sqlstm.sqindv[2] = ( short *)0;
sqlstm.sqinds[2] = ( int )0;
sqlstm.sqharm[2] = (unsigned long )0;
sqlstm.sqadto[2] = (unsigned short )0;
sqlstm.sqtdso[2] = (unsigned short )0;
sqlstm.sqhstv[3] = (unsigned char *)creator;
sqlstm.sqhstl[3] = (unsigned long )0;
sqlstm.sqhsts[3] = ( int )0;
sqlstm.sqindv[3] = ( short *)0;
sqlstm.sqinds[3] = ( int )0;
sqlstm.sqharm[3] = (unsigned long )0;
sqlstm.sqadto[3] = (unsigned short )0;
sqlstm.sqtdso[3] = (unsigned short )0;
sqlstm.sqhstv[4] = (unsigned char *)descript;
sqlstm.sqhstl[4] = (unsigned long )0;
sqlstm.sqhsts[4] = ( int )0;
sqlstm.sqindv[4] = ( short *)0;
sqlstm.sqinds[4] = ( int )0;
sqlstm.sqharm[4] = (unsigned long )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;
}
} else {
if (strcmp(contName,"HEmcCalPar")==0) {
{
struct sqlexd sqlstm;
sqlorat((void **)0, &sqlctx, &oraca);
sqlstm.sqlvsn = 13;
sqlstm.arrsiz = 11;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.stmt = "begin SELECT emc_ana2 . emc_par_query . next_version IN\
TO :vers FROM DUAL ; INSERT INTO emc_ana2 . calpar_vers ( vers_id , orig_conte\
xt_id , run_id , author , description ) VALUES ( :vers , :context , :run , :cr\
eator , :descript ) ; END ;";
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )246;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
sqlstm.sqlety = (unsigned short)4352;
sqlstm.occurs = (unsigned int )0;
sqlstm.sqhstv[0] = (unsigned char *)&vers;
sqlstm.sqhstl[0] = (unsigned long )sizeof(int);
sqlstm.sqhsts[0] = ( int )0;
sqlstm.sqindv[0] = ( short *)0;
sqlstm.sqinds[0] = ( int )0;
sqlstm.sqharm[0] = (unsigned long )0;
sqlstm.sqadto[0] = (unsigned short )0;
sqlstm.sqtdso[0] = (unsigned short )0;
sqlstm.sqhstv[1] = (unsigned char *)&context;
sqlstm.sqhstl[1] = (unsigned long )sizeof(int);
sqlstm.sqhsts[1] = ( int )0;
sqlstm.sqindv[1] = ( short *)0;
sqlstm.sqinds[1] = ( int )0;
sqlstm.sqharm[1] = (unsigned long )0;
sqlstm.sqadto[1] = (unsigned short )0;
sqlstm.sqtdso[1] = (unsigned short )0;
sqlstm.sqhstv[2] = (unsigned char *)&run;
sqlstm.sqhstl[2] = (unsigned long )sizeof(int);
sqlstm.sqhsts[2] = ( int )0;
sqlstm.sqindv[2] = ( short *)0;
sqlstm.sqinds[2] = ( int )0;
sqlstm.sqharm[2] = (unsigned long )0;
sqlstm.sqadto[2] = (unsigned short )0;
sqlstm.sqtdso[2] = (unsigned short )0;
sqlstm.sqhstv[3] = (unsigned char *)creator;
sqlstm.sqhstl[3] = (unsigned long )0;
sqlstm.sqhsts[3] = ( int )0;
sqlstm.sqindv[3] = ( short *)0;
sqlstm.sqinds[3] = ( int )0;
sqlstm.sqharm[3] = (unsigned long )0;
sqlstm.sqadto[3] = (unsigned short )0;
sqlstm.sqtdso[3] = (unsigned short )0;
sqlstm.sqhstv[4] = (unsigned char *)descript;
sqlstm.sqhstl[4] = (unsigned long )0;
sqlstm.sqhsts[4] = ( int )0;
sqlstm.sqindv[4] = ( short *)0;
sqlstm.sqinds[4] = ( int )0;
sqlstm.sqharm[4] = (unsigned long )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 "<<pPar->GetName()<<" created: "<<vers<<endl;
return vers;
not_found:
showSqlError("createVers(HParSet*)");
return vers;
}
Int_t HEmcParOra2Io::writePar(HEmcTrb3Lookup* pPar) {
Int_t version=createVers(pPar);
if (version==-1) return -1;
int rows_to_insert;
int vers[EMC_MAXCELLS];
int address[EMC_MAXCELLS];
int channel[EMC_MAXCELLS];
int module[EMC_MAXCELLS];
int cell[EMC_MAXCELLS];
int flag[EMC_MAXCELLS];
Int_t nChan=0;
Int_t arrayOffset=pPar->getArrayOffset();
for(Int_t b=0;b<pPar->getSize();b++) {
HEmcTrb3LookupBoard* board=(*pPar)[b];
if (board) {
for(Int_t t=0;t<board->getSize();t++) {
HEmcTrb3LookupChan& rChan=(*board)[t];
if (rChan.getSector()!=-1&&rChan.getCell()!=-1) {
vers[nChan]=version;
address[nChan]=arrayOffset+b;
channel[nChan]=t;
module[nChan]=rChan.getSector()+1;
cell[nChan]=rChan.getCell();
flag[nChan]=rChan.getFlag();
nChan++;
}
}
}
}
rows_to_insert=nChan;
{
struct sqlexd sqlstm;
sqlorat((void **)0, &sqlctx, &oraca);
sqlstm.sqlvsn = 13;
sqlstm.arrsiz = 11;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.stmt = "insert into emc_ana2.trb3lookup_data (vers_id,trbnet_addres\
s,channel_id,cell_id,channel_flag) values (:b1,:b2,:b3,emc_ana2.emc_par_query.\
get_cell_id(:b4,:b5),:b6)";
sqlstm.iters = (unsigned int )rows_to_insert;
sqlstm.offset = (unsigned int )281;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
sqlstm.sqlety = (unsigned short)4352;
sqlstm.occurs = (unsigned int )0;
sqlstm.sqhstv[0] = (unsigned char *)vers;
sqlstm.sqhstl[0] = (unsigned long )sizeof(int);
sqlstm.sqhsts[0] = ( int )sizeof(int);
sqlstm.sqindv[0] = ( short *)0;
sqlstm.sqinds[0] = ( int )0;
sqlstm.sqharm[0] = (unsigned long )0;
sqlstm.sqharc[0] = (unsigned long *)0;
sqlstm.sqadto[0] = (unsigned short )0;
sqlstm.sqtdso[0] = (unsigned short )0;
sqlstm.sqhstv[1] = (unsigned char *)address;
sqlstm.sqhstl[1] = (unsigned long )sizeof(int);
sqlstm.sqhsts[1] = ( int )sizeof(int);
sqlstm.sqindv[1] = ( short *)0;
sqlstm.sqinds[1] = ( int )0;
sqlstm.sqharm[1] = (unsigned long )0;
sqlstm.sqharc[1] = (unsigned long *)0;
sqlstm.sqadto[1] = (unsigned short )0;
sqlstm.sqtdso[1] = (unsigned short )0;
sqlstm.sqhstv[2] = (unsigned char *)channel;
sqlstm.sqhstl[2] = (unsigned long )sizeof(int);
sqlstm.sqhsts[2] = ( int )sizeof(int);
sqlstm.sqindv[2] = ( short *)0;
sqlstm.sqinds[2] = ( int )0;
sqlstm.sqharm[2] = (unsigned long )0;
sqlstm.sqharc[2] = (unsigned long *)0;
sqlstm.sqadto[2] = (unsigned short )0;
sqlstm.sqtdso[2] = (unsigned short )0;
sqlstm.sqhstv[3] = (unsigned char *)module;
sqlstm.sqhstl[3] = (unsigned long )sizeof(int);
sqlstm.sqhsts[3] = ( int )sizeof(int);
sqlstm.sqindv[3] = ( short *)0;
sqlstm.sqinds[3] = ( int )0;
sqlstm.sqharm[3] = (unsigned long )0;
sqlstm.sqharc[3] = (unsigned long *)0;
sqlstm.sqadto[3] = (unsigned short )0;
sqlstm.sqtdso[3] = (unsigned short )0;
sqlstm.sqhstv[4] = (unsigned char *)cell;
sqlstm.sqhstl[4] = (unsigned long )sizeof(int);
sqlstm.sqhsts[4] = ( int )sizeof(int);
sqlstm.sqindv[4] = ( short *)0;
sqlstm.sqinds[4] = ( int )0;
sqlstm.sqharm[4] = (unsigned long )0;
sqlstm.sqharc[4] = (unsigned long *)0;
sqlstm.sqadto[4] = (unsigned short )0;
sqlstm.sqtdso[4] = (unsigned short )0;
sqlstm.sqhstv[5] = (unsigned char *)flag;
sqlstm.sqhstl[5] = (unsigned long )sizeof(int);
sqlstm.sqhsts[5] = ( int )sizeof(int);
sqlstm.sqindv[5] = ( short *)0;
sqlstm.sqinds[5] = ( int )0;
sqlstm.sqharm[5] = (unsigned long )0;
sqlstm.sqharc[5] = (unsigned long *)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 == 1403) goto errorfound;
if (sqlca.sqlcode < 0) goto errorfound;
}
cout<<rows_to_insert<<" rows inserted\n";
commit();
pPar->setChanged(kFALSE);
return version;
errorfound:
showSqlError("writePar(HEmcTrb3Lookup*)");
rollback();
pPar->setChanged(kFALSE);
return -1;
}
Int_t HEmcParOra2Io:: writePar(HEmcCalPar* pPar) {
Int_t version=createVers(pPar);
if (version==-1) return -1;
int module[EMC_MAXSECCELLS];
int cell[EMC_MAXSECCELLS];
int vers[EMC_MAXSECCELLS];
float tdcSlope[EMC_MAXSECCELLS];
float tdcOffset[EMC_MAXSECCELLS];
float adcPar_0[EMC_MAXSECCELLS];
float adcPar_1[EMC_MAXSECCELLS];
float adcPar_2[EMC_MAXSECCELLS];
float timeWalkCorr_0[EMC_MAXCELLS];
float timeWalkCorr_1[EMC_MAXCELLS];
float timeWalkCorr_2[EMC_MAXCELLS];
int rows_to_insert;
Int_t nCell=0;
for(Int_t s=0; s<pPar->getSize(); s++) {
HEmcCalParSec& rSec= (*pPar)[s];
nCell=0;
for(Int_t c=0; c<rSec.getSize(); c++) {
HEmcCalParCell& rCell= rSec[c];
if (rCell.getTdcSlope()!=1||rCell.getTdcOffset()!=0
||rCell.getAdcPar2()!=0||rCell.getAdcPar1()!=1||rCell.getAdcPar0()!=0
||rCell.getTwcPar2()!=0||rCell.getTwcPar1()!=0||rCell.getTwcPar0()!=0) {
if (nCell >= EMC_MAXSECCELLS) {
Error("writePar(HEmcCalPar*)","Too many cells in sector %i",s);
rollback();
pPar->setChanged(kFALSE);
return -1;
}
module[nCell]=s+1;
cell[nCell]=c;
vers[nCell]=version;
tdcSlope[nCell]=rCell.getTdcSlope();
tdcOffset[nCell]=rCell.getTdcOffset();
adcPar_0[nCell]=rCell.getAdcPar0();
adcPar_1[nCell]=rCell.getAdcPar1();
adcPar_2[nCell]=rCell.getAdcPar2();
timeWalkCorr_0[nCell]=rCell.getTwcPar0();
timeWalkCorr_1[nCell]=rCell.getTwcPar1();
timeWalkCorr_2[nCell]=rCell.getTwcPar2();
nCell++;
}
}
if (nCell==0) continue;
rows_to_insert=nCell;
{
struct sqlexd sqlstm;
sqlorat((void **)0, &sqlctx, &oraca);
sqlstm.sqlvsn = 13;
sqlstm.arrsiz = 11;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.stmt = "insert into emc_ana2.calpar_data (vers_id,cell_id,tdc_slo\
pe,tdc_offset,adc_par_0,adc_par_1,adc_par_2,time_walk_0,time_walk_1,time_walk_\
2) values (:b1,emc_ana2.emc_par_query.get_cell_id(:b2,:b3),:b4,:b5,:b6,:b7,:b8\
,:b9,:b10,:b11)";
sqlstm.iters = (unsigned int )rows_to_insert;
sqlstm.offset = (unsigned int )320;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
sqlstm.sqlety = (unsigned short)4352;
sqlstm.occurs = (unsigned int )0;
sqlstm.sqhstv[0] = (unsigned char *)vers;
sqlstm.sqhstl[0] = (unsigned long )sizeof(int);
sqlstm.sqhsts[0] = ( int )sizeof(int);
sqlstm.sqindv[0] = ( short *)0;
sqlstm.sqinds[0] = ( int )0;
sqlstm.sqharm[0] = (unsigned long )0;
sqlstm.sqharc[0] = (unsigned long *)0;
sqlstm.sqadto[0] = (unsigned short )0;
sqlstm.sqtdso[0] = (unsigned short )0;
sqlstm.sqhstv[1] = (unsigned char *)module;
sqlstm.sqhstl[1] = (unsigned long )sizeof(int);
sqlstm.sqhsts[1] = ( int )sizeof(int);
sqlstm.sqindv[1] = ( short *)0;
sqlstm.sqinds[1] = ( int )0;
sqlstm.sqharm[1] = (unsigned long )0;
sqlstm.sqharc[1] = (unsigned long *)0;
sqlstm.sqadto[1] = (unsigned short )0;
sqlstm.sqtdso[1] = (unsigned short )0;
sqlstm.sqhstv[2] = (unsigned char *)cell;
sqlstm.sqhstl[2] = (unsigned long )sizeof(int);
sqlstm.sqhsts[2] = ( int )sizeof(int);
sqlstm.sqindv[2] = ( short *)0;
sqlstm.sqinds[2] = ( int )0;
sqlstm.sqharm[2] = (unsigned long )0;
sqlstm.sqharc[2] = (unsigned long *)0;
sqlstm.sqadto[2] = (unsigned short )0;
sqlstm.sqtdso[2] = (unsigned short )0;
sqlstm.sqhstv[3] = (unsigned char *)tdcSlope;
sqlstm.sqhstl[3] = (unsigned long )sizeof(float);
sqlstm.sqhsts[3] = ( int )sizeof(float);
sqlstm.sqindv[3] = ( short *)0;
sqlstm.sqinds[3] = ( int )0;
sqlstm.sqharm[3] = (unsigned long )0;
sqlstm.sqharc[3] = (unsigned long *)0;
sqlstm.sqadto[3] = (unsigned short )0;
sqlstm.sqtdso[3] = (unsigned short )0;
sqlstm.sqhstv[4] = (unsigned char *)tdcOffset;
sqlstm.sqhstl[4] = (unsigned long )sizeof(float);
sqlstm.sqhsts[4] = ( int )sizeof(float);
sqlstm.sqindv[4] = ( short *)0;
sqlstm.sqinds[4] = ( int )0;
sqlstm.sqharm[4] = (unsigned long )0;
sqlstm.sqharc[4] = (unsigned long *)0;
sqlstm.sqadto[4] = (unsigned short )0;
sqlstm.sqtdso[4] = (unsigned short )0;
sqlstm.sqhstv[5] = (unsigned char *)adcPar_0;
sqlstm.sqhstl[5] = (unsigned long )sizeof(float);
sqlstm.sqhsts[5] = ( int )sizeof(float);
sqlstm.sqindv[5] = ( short *)0;
sqlstm.sqinds[5] = ( int )0;
sqlstm.sqharm[5] = (unsigned long )0;
sqlstm.sqharc[5] = (unsigned long *)0;
sqlstm.sqadto[5] = (unsigned short )0;
sqlstm.sqtdso[5] = (unsigned short )0;
sqlstm.sqhstv[6] = (unsigned char *)adcPar_1;
sqlstm.sqhstl[6] = (unsigned long )sizeof(float);
sqlstm.sqhsts[6] = ( int )sizeof(float);
sqlstm.sqindv[6] = ( short *)0;
sqlstm.sqinds[6] = ( int )0;
sqlstm.sqharm[6] = (unsigned long )0;
sqlstm.sqharc[6] = (unsigned long *)0;
sqlstm.sqadto[6] = (unsigned short )0;
sqlstm.sqtdso[6] = (unsigned short )0;
sqlstm.sqhstv[7] = (unsigned char *)adcPar_2;
sqlstm.sqhstl[7] = (unsigned long )sizeof(float);
sqlstm.sqhsts[7] = ( int )sizeof(float);
sqlstm.sqindv[7] = ( short *)0;
sqlstm.sqinds[7] = ( int )0;
sqlstm.sqharm[7] = (unsigned long )0;
sqlstm.sqharc[7] = (unsigned long *)0;
sqlstm.sqadto[7] = (unsigned short )0;
sqlstm.sqtdso[7] = (unsigned short )0;
sqlstm.sqhstv[8] = (unsigned char *)timeWalkCorr_0;
sqlstm.sqhstl[8] = (unsigned long )sizeof(float);
sqlstm.sqhsts[8] = ( int )sizeof(float);
sqlstm.sqindv[8] = ( short *)0;
sqlstm.sqinds[8] = ( int )0;
sqlstm.sqharm[8] = (unsigned long )0;
sqlstm.sqharc[8] = (unsigned long *)0;
sqlstm.sqadto[8] = (unsigned short )0;
sqlstm.sqtdso[8] = (unsigned short )0;
sqlstm.sqhstv[9] = (unsigned char *)timeWalkCorr_1;
sqlstm.sqhstl[9] = (unsigned long )sizeof(float);
sqlstm.sqhsts[9] = ( int )sizeof(float);
sqlstm.sqindv[9] = ( short *)0;
sqlstm.sqinds[9] = ( int )0;
sqlstm.sqharm[9] = (unsigned long )0;
sqlstm.sqharc[9] = (unsigned long *)0;
sqlstm.sqadto[9] = (unsigned short )0;
sqlstm.sqtdso[9] = (unsigned short )0;
sqlstm.sqhstv[10] = (unsigned char *)timeWalkCorr_2;
sqlstm.sqhstl[10] = (unsigned long )sizeof(float);
sqlstm.sqhsts[10] = ( int )sizeof(float);
sqlstm.sqindv[10] = ( short *)0;
sqlstm.sqinds[10] = ( int )0;
sqlstm.sqharm[10] = (unsigned long )0;
sqlstm.sqharc[10] = (unsigned long *)0;
sqlstm.sqadto[10] = (unsigned short )0;
sqlstm.sqtdso[10] = (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<<"Sector "<<s<<" "<<rows_to_insert<<" rows inserted\n";
}
commit();
pPar->setChanged(kFALSE);
return version;
not_found:
showSqlError("writePar(HEmcCalPar*)");
rollback();
pPar->setChanged(kFALSE);
return -1;
}
void HEmcParOra2Io::printInfo(const Char_t* contName) {
Bool_t first=kTRUE;
for(Int_t i=0;i<EMC_MAXSEC;i++) {
if (initModules->At(i)) {
if (first) {
cout<<contName<<": sector(s) initialized from Oracle: ";
first=kFALSE;
}
cout<<i<<" ";
}
}
cout<<'\n';
}