#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,
"hrpcparora2io.pc"
};
static unsigned int sqlctx = 4943651;
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,163,0,4,114,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,167,0,4,122,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,257,0,4,166,0,0,11,1,0,1,0,2,3,0,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,1,3,0,0,
126,0,0,4,88,0,4,235,0,0,2,0,0,1,0,2,3,0,0,2,9,0,0,
149,0,0,5,129,0,4,281,0,0,3,0,0,1,0,2,3,0,0,2,3,0,0,2,9,0,0,
176,0,0,6,196,0,4,332,0,0,8,1,0,1,0,2,3,0,0,2,3,0,0,2,3,0,0,2,3,0,0,2,3,0,0,2,
97,0,0,2,3,0,0,1,3,0,0,
223,0,0,7,238,0,6,388,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,
258,0,0,8,242,0,6,398,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,
293,0,0,9,244,0,3,469,0,0,11,11,0,1,0,1,3,0,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,
352,0,0,10,192,0,3,531,0,0,8,8,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,1,97,0,0,1,3,0,0,
};
using namespace std;
#include "hrpcparora2io.h"
#include "hparora2set.h"
#include "hrpccalpar.h"
#include "hrpcgeompar.h"
#include "hgeomcompositevolume.h"
#include "hora2geomdetversion.h"
#include "hrpctrb2lookup.h"
#include "TClass.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(HRpcParOra2Io)
#define RPC_MAXSEC 6
#define RPC_MAXSECCELLS 192
#define RPC_MAXCELLS 1152
#define RPC_MAXTRBS 24
#define RPC_NCHAN_TRB 128
#define RPC_MAXCHANNELS 3072
#define RPC_MAXSECCHANNELS 512
HRpcParOra2Io::HRpcParOra2Io(HOra2Conn* pC) : HDetParOra2Io(pC) {
fName="HRpcParIo";
initModules=new TArrayI(RPC_MAXSEC);
geomVers=0;
}
HRpcParOra2Io::~HRpcParOra2Io(void) {
if (initModules) delete initModules;
if (geomVers) delete geomVers;
}
Bool_t HRpcParOra2Io::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,"HRpcCalPar")==0) return read(((HRpcCalPar*)pPar),set);
if (strcmp(name,"HRpcGeomPar")==0) return read(((HRpcGeomPar*)pPar),set);
if (strcmp(name,"HRpcTrb2Lookup")==0) return read(((HRpcTrb2Lookup*)pPar));
cout<<"No read-interface to Oracle for parameter container "
<<pPar->GetName()<<endl;
return kFALSE;
}
Int_t HRpcParOra2Io::write(HParSet* pPar) {
if (getRunStart(pPar)<=0) return -1;
const Text_t* name=pPar->IsA()->GetName();
if (strcmp(name,"HRpcCalPar")==0) return writePar((HRpcCalPar*)pPar);
if (strcmp(name,"HRpcGeomPar")==0) return writeAlignment((HRpcGeomPar*)pPar);
if (strcmp(name,"HRpcTrb2Lookup")==0) return writePar((HRpcTrb2Lookup*)pPar);
cout<<"No write-interface to Oracle for parameter container "
<<pPar->GetName()<<endl;
return 0;
}
Bool_t HRpcParOra2Io::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,"HRpcCalPar")==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 rpc_ana2.calpar_vers_\
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,"HRpcTrb2Lookup")==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 rpc_ana2.trb2lookup\
_vers_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 HRpcParOra2Io::read(HRpcCalPar* 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 sec[RPC_MAXCELLS];
int col[RPC_MAXCELLS];
int cell[RPC_MAXCELLS];
float rtimeo[RPC_MAXCELLS];
float ltimeo[RPC_MAXCELLS];
float rtoto[RPC_MAXCELLS];
float ltoto[RPC_MAXCELLS];
float t2t[RPC_MAXCELLS];
float t2c[RPC_MAXCELLS];
float oo[RPC_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 sector ,column_number ,cell_number ,right_time_offse\
t ,left_time_offset ,right_tot_offset ,left_tot_offset ,tdc2time ,tot2charge ,\
overall_offset into :s1 ,:s2 ,:s3 ,:s4 ,:s5 ,:s6 ,:s7 ,:s8 ,:s9 ,:s10 from r\
pc_ana2.calpar_data_view where vers_id=:b1";
sqlstm.iters = (unsigned int )1152;
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 *)cal.sec;
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.col;
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.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 *)cal.rtimeo;
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.ltimeo;
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.rtoto;
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.ltoto;
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.t2t;
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.t2c;
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.oo;
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(HRpcCalPar*,Int_t*)");
}
Int_t nData=sqlca.sqlerrd[2];
Int_t s=-1;
for (Int_t i=0;i<nData;i++) {
s=cal.sec[i]-1;
if (set[s]) {
(*pPar)[s].fill(cal.col[i],cal.cell[i],cal.rtimeo[i],cal.ltimeo[i],
cal.rtoto[i],cal.ltoto[i],cal.t2t[i],cal.t2c[i],cal.oo[i]);
initModules->AddAt(1,s);
}
}
rc=kTRUE;
for(Int_t i=0;i<RPC_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 HRpcParOra2Io::read(HRpcGeomPar* 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 HRpcParOra2Io::readModGeomNames(HRpcGeomPar* pPar,Int_t* set) {
struct {
int sec[RPC_MAXSEC];
struct { unsigned short len; unsigned char arr[10]; } oname[6];
} mods;
struct {
short sec[RPC_MAXSEC];
short oname[RPC_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 rpc\
_ana2.detector_setup_at_date ";
sqlstm.iters = (unsigned int )6;
sqlstm.offset = (unsigned int )126;
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<RPC_MAXSEC;i++) {
if (set[i]>0 && initModules->At(i)==0) allFound=kFALSE;
}
return allFound;
}
Bool_t HRpcParOra2Io::readCompGeomNames(HRpcGeomPar* pPar,Int_t* set) {
struct {
int column_number[RPC_MAXCELLS];
int cell_number[RPC_MAXCELLS];
struct { unsigned short len; unsigned char arr[10]; } oname[1152];
} lrecG;
{
struct sqlexd sqlstm;
sqlorat((void **)0, &sqlctx, &oraca);
sqlstm.sqlvsn = 13;
sqlstm.arrsiz = 11;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.stmt = "select column_number ,cell_number ,geom_obj_name into :s1 ,\
:s2 ,:s3 from rpc_ana2.module_cell where geom_obj_name is not null ";
sqlstm.iters = (unsigned int )1152;
sqlstm.offset = (unsigned int )149;
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.column_number;
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.cell_number;
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 *)lrecG.oname;
sqlstm.sqhstl[2] = (unsigned long )11;
sqlstm.sqhsts[2] = ( int )12;
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.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';
cell=pPar->getCompNum(lrecG.column_number[k],lrecG.cell_number[k]);
HGeomVolume* volu=pRefMod->getComponent(cell);
if (volu) volu->SetName((Char_t*)(lrecG.oname[k].arr));
else {
Error("readCompGeomNames","Index for cell %s not found",(Char_t*)(lrecG.oname[k].arr));
return kFALSE;
}
}
return (nCells>0) ? kTRUE : kFALSE;
}
Bool_t HRpcParOra2Io::read(HRpcTrb2Lookup* 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[RPC_MAXCHANNELS];
int chan[RPC_MAXCHANNELS];
int sector[RPC_MAXCHANNELS];
int col[RPC_MAXCHANNELS];
int cell[RPC_MAXCHANNELS];
char side[RPC_MAXCHANNELS][2];
int feaddress[RPC_MAXCHANNELS];
} lookup;
struct {
short address_Ind[RPC_MAXCHANNELS];
short chan_Ind[RPC_MAXCHANNELS];
short sector_Ind[RPC_MAXCHANNELS];
short module_Ind[RPC_MAXCHANNELS];
short cell_Ind[RPC_MAXCHANNELS];
short side_Ind[RPC_MAXCHANNELS];
short feaddress_Ind[RPC_MAXCHANNELS];
} lookup_Ind;
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 trbnet_address ,channel ,sector ,column_no ,cell_no \
,side ,fe_address into :s1:s2 ,:s3:s4 ,:s5:s6 ,:s7:s8 ,:s9:s10 ,:s11:s12 ,:s13\
:s14 from rpc_ana2.trb2lookup_data_view where vers_id=:b2";
sqlstm.iters = (unsigned int )3072;
sqlstm.offset = (unsigned int )176;
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 *)lookup_Ind.address_Ind;
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 *)lookup.chan;
sqlstm.sqhstl[1] = (unsigned long )sizeof(int);
sqlstm.sqhsts[1] = ( int )sizeof(int);
sqlstm.sqindv[1] = ( short *)lookup_Ind.chan_Ind;
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.sqhstv[2] = (unsigned char *)lookup.sector;
sqlstm.sqhstl[2] = (unsigned long )sizeof(int);
sqlstm.sqhsts[2] = ( int )sizeof(int);
sqlstm.sqindv[2] = ( short *)lookup_Ind.sector_Ind;
sqlstm.sqinds[2] = ( int )sizeof(short);
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.col;
sqlstm.sqhstl[3] = (unsigned long )sizeof(int);
sqlstm.sqhsts[3] = ( int )sizeof(int);
sqlstm.sqindv[3] = ( short *)lookup_Ind.module_Ind;
sqlstm.sqinds[3] = ( int )sizeof(short);
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.cell;
sqlstm.sqhstl[4] = (unsigned long )sizeof(int);
sqlstm.sqhsts[4] = ( int )sizeof(int);
sqlstm.sqindv[4] = ( short *)lookup_Ind.cell_Ind;
sqlstm.sqinds[4] = ( int )sizeof(short);
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 *)lookup.side;
sqlstm.sqhstl[5] = (unsigned long )2;
sqlstm.sqhsts[5] = ( int )2;
sqlstm.sqindv[5] = ( short *)lookup_Ind.side_Ind;
sqlstm.sqinds[5] = ( int )sizeof(short);
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 *)lookup.feaddress;
sqlstm.sqhstl[6] = (unsigned long )sizeof(int);
sqlstm.sqhsts[6] = ( int )sizeof(int);
sqlstm.sqindv[6] = ( short *)lookup_Ind.feaddress_Ind;
sqlstm.sqinds[6] = ( int )sizeof(short);
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 *)&vers;
sqlstm.sqhstl[7] = (unsigned long )sizeof(int);
sqlstm.sqhsts[7] = ( int )sizeof(int);
sqlstm.sqindv[7] = ( short *)0;
sqlstm.sqinds[7] = ( int )0;
sqlstm.sqharm[7] = (unsigned long )0;
sqlstm.sqadto[7] = (unsigned short )0;
sqlstm.sqtdso[7] = (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(HRpcTrb2Lookup*)");
}
Int_t nData=sqlca.sqlerrd[2];
for (Int_t i=0;i<nData;i++) {
Char_t s='\0';
if (lookup_Ind.side_Ind[i]!=-1) {
s=lookup.side[i][0];
}
pPar->fill(lookup.address[i],lookup.chan[i],
lookup.sector[i]-1,lookup.col[i],lookup.cell[i],
s,lookup.feaddress[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;
}
Int_t HRpcParOra2Io::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,"HRpcCalPar")==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 rpc_ana2 . rpc_par_query . next_version INTO\
:vers FROM DUAL ; INSERT INTO rpc_ana2 . calpar_vers ( vers_id , orig_context\
_id , run_id , author , description ) VALUES ( :vers , :context , :run , :crea\
tor , :descript ) ; END ;";
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )223;
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,"HRpcTrb2Lookup")==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 rpc_ana2 . rpc_par_query . next_version IN\
TO :vers FROM DUAL ; INSERT INTO rpc_ana2 . trb2lookup_vers ( vers_id , orig_c\
ontext_id , run_id , author , description ) VALUES ( :vers , :context , :run ,\
:creator , :descript ) ; END ;";
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )258;
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 HRpcParOra2Io:: writePar(HRpcCalPar* pPar) {
Int_t version=createVers(pPar);
if (version==-1) return -1;
int sec[RPC_MAXSECCELLS];
int col[RPC_MAXSECCELLS];
int cell[RPC_MAXSECCELLS];
int vers[RPC_MAXSECCELLS];
float rtimeo[RPC_MAXSECCELLS];
float ltimeo[RPC_MAXSECCELLS];
float rtoto[RPC_MAXSECCELLS];
float ltoto[RPC_MAXSECCELLS];
float t2t[RPC_MAXSECCELLS];
float t2c[RPC_MAXSECCELLS];
float oo[RPC_MAXSECCELLS];
int rows_to_insert;
Int_t nCell=0, maxNumCell=0;
for(Int_t s=0; s<pPar->getSize(); s++) {
HRpcCalParSec& rSec= (*pPar)[s];
nCell=0;
for(Int_t m=0; m<rSec.getSize(); m++) {
HRpcCalParCol& rCol= rSec[m];
for(Int_t c=0; c<rCol.getSize(); c++) {
HRpcCalParCell& rCell= rCol[c];
if (rCell.getRightTimeOffset()!=0||rCell.getLeftTimeOffset()!=0
||rCell.getTDC2Time()!=1||rCell.getTOT2Charge()!=1) {
if (nCell >= RPC_MAXSECCELLS) {
Error("writePar(HRpcCalPar*)","Too many cells in sector %i",s);
rollback();
pPar->setChanged(kFALSE);
return -1;
}
sec[nCell]=s+1;
col[nCell]=m;
cell[nCell]=c;
vers[nCell]=version;
rtimeo[nCell]=rCell.getRightTimeOffset();
ltimeo[nCell]=rCell.getLeftTimeOffset();
rtoto[nCell]=rCell.getRightTOTOffset();
ltoto[nCell]=rCell.getLeftTOTOffset();
t2t[nCell]=rCell.getTDC2Time();
t2c[nCell]=rCell.getTOT2Charge();
oo[nCell]=rCell.getT0();
nCell++;
}
}
}
if (nCell==0) continue;
rows_to_insert=nCell;
if (nCell>maxNumCell) maxNumCell=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 rpc_ana2.calpar_data (cell_id,vers_id,right_t\
ime_offset,left_time_offset,right_tot_offset,left_tot_offset,tdc2time,tot2char\
ge,overall_offset) values (rpc_ana2.rpc_par_query.get_cell_id(:b1,:b2,:b3),:b4\
,:b5,:b6,:b7,:b8,:b9,:b10,:b11)";
sqlstm.iters = (unsigned int )rows_to_insert;
sqlstm.offset = (unsigned int )293;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
sqlstm.sqlety = (unsigned short)4352;
sqlstm.occurs = (unsigned int )0;
sqlstm.sqhstv[0] = (unsigned char *)sec;
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 *)col;
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 *)vers;
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 *)rtimeo;
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 *)ltimeo;
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 *)rtoto;
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 *)ltoto;
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 *)t2t;
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 *)t2c;
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 *)oo;
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(HRpcCalPar*)");
rollback();
pPar->setChanged(kFALSE);
return -1;
}
Int_t HRpcParOra2Io::writePar(HRpcTrb2Lookup* pPar) {
Int_t version=createVers(pPar);
if (version==-1) return -1;
int rows_to_insert;
int vers[RPC_NCHAN_TRB];
int address[RPC_NCHAN_TRB];
int chan[RPC_NCHAN_TRB];
int sector[RPC_NCHAN_TRB];
int col[RPC_NCHAN_TRB];
int cell[RPC_NCHAN_TRB];
char side[RPC_NCHAN_TRB][2];
short side_Ind[RPC_NCHAN_TRB];
int feaddress[RPC_NCHAN_TRB];
Int_t nChan=0;
Int_t arrayOffset=pPar->getArrayOffset();
for(Int_t b=0;b<pPar->getSize();b++) {
HRpcTrb2LookupBoard* board=(*pPar)[b];
if (board) {
nChan=0;
for(Int_t t=0;t<board->getSize();t++) {
HRpcTrb2LookupChan& rChan=(*board)[t];
if (rChan.getSector()!=-1&&rChan.getCell()!=-1&&rChan.getFeAddress()!=-1) {
vers[nChan]=version;
address[nChan]=arrayOffset+b;
chan[nChan]=t;
sector[nChan]=rChan.getSector()+1;
col[nChan]=rChan.getColumn();
cell[nChan]=rChan.getCell();
side[nChan][0]=rChan.getSide();
if (side[nChan][0]!='\0') {
side[nChan][1]='\0';
side_Ind[nChan]=0;
} else side_Ind[nChan]=-1;
feaddress[nChan]=rChan.getFeAddress();
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 rpc_ana2.trb2lookup_data (vers_id,trbnet_ad\
dress,channel_id,module_id,cell_index,side,fe_address) values (:b1,:b2,:b3,:b4\
,rpc_ana2.rpc_par_query.get_cell_index(:b5,:b6),:b7:b8,:b9)";
sqlstm.iters = (unsigned int )rows_to_insert;
sqlstm.offset = (unsigned int )352;
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 *)chan;
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 *)sector;
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 *)col;
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 *)cell;
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.sqhstv[6] = (unsigned char *)side;
sqlstm.sqhstl[6] = (unsigned long )2;
sqlstm.sqhsts[6] = ( int )2;
sqlstm.sqindv[6] = ( short *)side_Ind;
sqlstm.sqinds[6] = ( int )sizeof(short);
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 *)feaddress;
sqlstm.sqhstl[7] = (unsigned long )sizeof(int);
sqlstm.sqhsts[7] = ( int )sizeof(int);
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.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<<"trbnet-address "<<"0x"<<hex<<(arrayOffset+b)<<dec<<": "<<rows_to_insert<<" rows inserted\n";
}
}
commit();
pPar->setChanged(kFALSE);
return version;
errorfound:
showSqlError("writePar(HRpcTrb2Lookup*)");
rollback();
pPar->setChanged(kFALSE);
return -1;
}
void HRpcParOra2Io::printInfo(const Char_t* contName) {
Bool_t first=kTRUE;
for(Int_t i=0;i<RPC_MAXSEC;i++) {
if (initModules->At(i)) {
if (first) {
cout<<contName<<": sector(s) initialized from Oracle: ";
first=kFALSE;
}
cout<<i<<" ";
}
}
cout<<'\n';
}