#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,
"hspecparoraio.pc"
};
static unsigned int sqlctx = 4950211;
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[14];
unsigned int sqhstl[14];
int sqhsts[14];
void *sqindv[14];
int sqinds[14];
unsigned int sqharm[14];
unsigned int *sqharc[14];
unsigned short sqadto[14];
unsigned short sqtdso[14];
} sqlstm = {12,14};
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(char *, int *); }
static const char *sq0005 =
"select subevent_id ,channel ,detector ,sector ,module ,cell ,side ,fe_addres\
s from hanal.hwpg_trb_lookup_data where vers_id=:b0 ";
static const char *sq0008 =
"select TO_CHAR(( timestamp -(:b0/24)),'yyyy-mm-dd hh24:mi:ss') ,value from \
hades_slow.archive_data_f where (( timestamp between TO_DATE(:b1,'yyyy-mm-dd \
hh24:mi:ss') and TO_DATE(:b2,'yyyy-mm-dd hh24:mi:ss') and pv_id=:b3) and value\
is not null ) order by timestamp ";
static const char *sq0009 =
"select TO_CHAR(( timestamp -(:b0/24)),'yyyy-mm-dd hh24:mi:ss') ,value from \
hades_slow.archive_data_i where (( timestamp between TO_DATE(:b1,'yyyy-mm-dd \
hh24:mi:ss') and TO_DATE(:b2,'yyyy-mm-dd hh24:mi:ss') and pv_id=:b3) and value\
is not null ) order by timestamp ";
typedef struct { unsigned short len; unsigned char arr[1]; } VARCHAR;
typedef struct { unsigned short len; unsigned char arr[1]; } varchar;
static const short sqlcud0[] =
{12,4130,1,0,0,
5,0,0,1,277,0,4,238,0,0,7,2,0,1,0,2,3,0,0,2,9,0,0,2,9,0,0,2,3,0,0,2,3,0,0,1,3,
0,0,1,3,0,0,
48,0,0,2,148,0,4,289,0,0,1,0,0,1,0,2,3,0,0,
67,0,0,3,107,0,4,293,0,0,1,0,0,1,0,2,3,0,0,
86,0,0,4,155,0,4,339,0,0,4,1,0,1,0,2,3,0,0,2,4,0,0,2,4,0,0,1,3,0,0,
117,0,0,5,139,0,9,400,0,0,1,1,0,1,0,1,3,0,0,
136,0,0,5,0,0,13,402,0,0,8,0,0,1,0,2,3,0,0,2,3,0,0,2,97,0,0,2,3,0,0,2,3,0,0,2,
3,0,0,2,97,0,0,2,3,0,0,
183,0,0,5,0,0,15,415,0,0,0,0,0,1,0,
198,0,0,6,206,0,4,465,0,0,5,1,0,1,0,2,3,0,0,2,97,0,0,2,97,0,0,2,3,0,0,1,3,0,0,
233,0,0,7,389,0,4,536,0,0,14,2,0,1,0,2,3,0,0,2,9,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,3,0,0,2,97,0,0,2,97,0,0,2,3,0,0,1,3,0,0,1,97,0,0,
304,0,0,8,280,0,9,613,0,0,4,4,0,1,0,1,3,0,0,1,97,0,0,1,97,0,0,1,3,0,0,
335,0,0,8,0,0,13,615,0,0,2,0,0,1,0,2,97,0,0,2,4,0,0,
358,0,0,8,0,0,15,631,0,0,0,0,0,1,0,
373,0,0,9,280,0,9,673,0,0,4,4,0,1,0,1,3,0,0,1,97,0,0,1,97,0,0,1,3,0,0,
404,0,0,9,0,0,13,675,0,0,2,0,0,1,0,2,97,0,0,2,4,0,0,
427,0,0,9,0,0,15,691,0,0,0,0,0,1,0,
442,0,0,10,249,0,6,772,0,0,6,6,0,1,0,1,97,0,0,3,3,0,0,1,3,0,0,1,3,0,0,1,97,0,0,
1,97,0,0,
481,0,0,11,177,0,3,836,0,0,9,9,0,1,0,1,3,0,0,1,3,0,0,1,3,0,0,1,97,0,0,1,3,0,0,
1,3,0,0,1,3,0,0,1,97,0,0,1,3,0,0,
532,0,0,12,254,0,4,876,0,0,5,1,0,1,0,2,97,0,0,2,3,0,0,2,3,0,0,2,3,0,0,1,3,0,0,
};
using namespace std;
#include "hspecparoraio.h"
#include "hspecgeompar.h"
#include "hgeomcompositevolume.h"
#include "hgeomoradetversion.h"
#include "hmagnetpar.h"
#include "htrblookup.h"
#include "hscspar.h"
#include "hscschannel.h"
#include "hades.h"
#include "hruntimedb.h"
#include "hrun.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(HSpecParOraIo)
#define NMAX_GEOSMALL 100
#define NMAX_SCS 2000
#define NMAX_TRB 1000
#define NCHAN_TRB 128
HSpecParOraIo::HSpecParOraIo(HOraConn* pC) : HDetParOraIo(pC) {
fName="HSpecParIo";
geomCaveVers=0;
geomSectorVers=0;
geomTargetVers=0;
alignTargetVers=0;
}
HSpecParOraIo::~HSpecParOraIo() {
if (geomCaveVers) {
delete geomCaveVers;
geomCaveVers=0;
}
if (geomSectorVers) {
delete geomSectorVers;
geomSectorVers=0;
}
if (geomTargetVers) {
delete geomTargetVers;
geomTargetVers=0;
}
if (alignTargetVers) {
delete alignTargetVers;
alignTargetVers=0;
}
}
Bool_t HSpecParOraIo::init(HParSet* pPar,Int_t* set) {
const Text_t* name=pPar->IsA()->GetName();
if (strcmp(name,"HSpecGeomPar")==0) return read(((HSpecGeomPar*)pPar),set);
if (strcmp(name,"HMagnetPar")==0) {
if (strcmp(pPar->getParamContext(),"MagnetCurrentSetValues")==0) {
return readCond((HParCond*)pPar,set);
} else {
return read(((HMagnetPar*)pPar));
}
}
if (pPar->InheritsFrom("HScsPar")) return read((HScsPar*)pPar);
if (strcmp(name,"HTrbLookup")==0) return read(((HTrbLookup*)pPar));
cout<<"initialization of "<<pPar->GetName()<<" not possible from Oracle!"<<endl;
return kFALSE;
}
Int_t HSpecParOraIo::write(HParSet* pPar) {
const Text_t* name=pPar->IsA()->GetName();
if (strcmp(name,"HSpecGeomPar")==0) return writeAlignment((HSpecGeomPar*)pPar);
if (strcmp(name,"HMagnetPar")==0&&strcmp(pPar->getParamContext(),"MagnetCurrentSetValues")==0) {
return writeCond((HParCond*)pPar);
}
if (strcmp(name,"HTrbLookup")==0) return writeTrbLookup(((HTrbLookup*)pPar));
cout<<"No write-interface to Oracle for parameter container "
<<pPar->GetName()<<endl;
return 0;
}
Bool_t HSpecParOraIo::read(HSpecGeomPar* pPar, Int_t* set) {
Int_t runStart=getRunStart(pPar);
if (runStart<=0) return kFALSE;
Int_t contVers=pPar->getInputVersion(inputNumber);
if (!geomCaveVers) {
geomCaveVers=new HGeomOraDetVersion("CAVE");
}
if (!geomSectorVers) {
geomSectorVers=new HGeomOraDetVersion("SECT");
}
if (!geomTargetVers) {
geomTargetVers=new HGeomOraDetVersion("TARGET");
}
if (!alignTargetVers&&strcmp(getExpLocation(),"VIRTUAL")!=0) {
alignTargetVers=new HParOraSet(pPar->GetName());
Int_t contextId=getContextId("HDetGeomPar",pPar->getParamContext());
if (contextId==-1) return kFALSE;
alignTargetVers->contextId=contextId;
}
Bool_t allFound=kTRUE;
if (runStart<geomCaveVers->getSince()||runStart>geomCaveVers->getUntil()) {
TList geomObjects;
if (!pPar->getCave()) {
HGeomVolume v;
v.SetName("CAVE");
pPar->addCave(&v);
}
geomObjects.Add(new HOraGeomObj("CAVE",pPar->getCave(),'R',0));
Int_t v=getGeomVersion("CAVE",geomCaveVers);
if (v>0) allFound=readIdealGeometry(&geomObjects,geomCaveVers);
geomObjects.Delete();
pPar->setChanged();
}
if (allFound&&(runStart<geomSectorVers->getSince()||runStart>geomSectorVers->getUntil())) {
TList geomObjects;
for(Int_t i=0;i<pPar->getNumSectors();i++) {
TString s="SEC";
s+=(i+1);
if (!pPar->getSector(i)) {
HGeomVolume v;
v.SetName(s.Data());
v.setMother("CAVE");
pPar->addSector(&v);
}
geomObjects.Add(new HOraGeomObj(s,pPar->getSector(i),'R',0));
}
Int_t v=getGeomVersion("SECT",geomSectorVers);
if (v>0) allFound=readIdealGeometry(&geomObjects,geomSectorVers);
geomObjects.Delete();
pPar->setChanged();
}
Bool_t needsGeomInit=kFALSE, needsAlignmentInit=kFALSE;
Int_t geomVers=geomTargetVers->getGeomVersion();
Int_t alignVers=-1;
Int_t detId=geomTargetVers->getDetectorId();
if (allFound&&(runStart<geomTargetVers->getSince()||runStart>geomTargetVers->getUntil())) {
needsGeomInit=kTRUE;
if (detId<0) {
geomVers=getGeomVersion("TARGET",geomTargetVers);
} else {
geomVers=getGeomVersion(detId,geomTargetVers);
}
}
if (geomVers<=0) {
allFound=kFALSE;
}
if (allFound&&alignTargetVers) {
Double_t oldUntil=alignTargetVers->versDate[1];
if (contVers<=0 || needsGeomInit || runStart<alignTargetVers->versDate[0]
|| runStart>oldUntil) {
alignVers=getAlignmentVersion(alignTargetVers,"TARGET");
if (alignVers>0) needsAlignmentInit=kTRUE;
else if (oldUntil!=-1) needsGeomInit=kTRUE;
}
}
if (allFound&&(needsGeomInit||needsAlignmentInit)) {
TList geomObjects;
pPar->clear();
allFound=readTargetVolumes(pPar,geomObjects);
if (allFound) {
cout<<pPar->GetName()<<": Target geometry read from Oracle (version "<<geomVers<<")\n";
if (needsAlignmentInit) {
allFound=readAlignmentTransform(&geomObjects,alignVers);
if (allFound) {
cout<<pPar->GetName()<<": Target alignment read from Oracle(version "<<alignVers<<")\n";
}
}
}
geomObjects.Delete();
pPar->setChanged();
}
if (allFound) {
if (pPar->hasChanged()) {
pPar->setInputVersion(getActRunId(),inputNumber);
pPar->setNotFirstInit();
}
} else {
pPar->clear();
pPar->setChanged(kFALSE);
}
return allFound;
}
Bool_t HSpecParOraIo::readTargetVolumes(HSpecGeomPar* pPar, TList& geomObjects) {
int vers;
int detid;
struct {
int p_id[NMAX_GEOSMALL];
struct { unsigned short len; unsigned char arr[14]; } p_name[100];
struct { unsigned short len; unsigned char arr[6]; } p_shape[100];
int p_vol_id[NMAX_GEOSMALL];
int p_trans_id[NMAX_GEOSMALL];
} vol;
struct {
short p_id_Ind[NMAX_GEOSMALL];
short p_name_Ind[NMAX_GEOSMALL];
short p_shape_Ind[NMAX_GEOSMALL];
short p_vol_id_Ind[NMAX_GEOSMALL];
short p_trans_id_Ind[NMAX_GEOSMALL];
} vol_Ind;
vers=(Int_t)geomTargetVers->getGeomVersion();
detid=(Int_t)geomTargetVers->getDetectorId();
Int_t numTargets=0, i;
Bool_t allFound=kFALSE;
{
struct sqlexd sqlstm;
sqlorat((void **)0, &sqlctx, &oraca);
sqlstm.sqlvsn = 12;
sqlstm.arrsiz = 7;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.stmt = "select object_id ,object_name ,geant3_shape ,volume_id ,tra\
ns_id into :s1:s2 ,:s3:s4 ,:s5:s6 ,:s7:s8 ,:s9:s10 from hgeom.volume_data_at\
_histdate where ((det_part_id=:b2 and :b3 between geom_vers_min and geom_vers_\
max) and (object_name like 'TARG%' or object_name like 'TX%'))";
sqlstm.iters = (unsigned int )100;
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 *)vol.p_id;
sqlstm.sqhstl[0] = (unsigned int )sizeof(int);
sqlstm.sqhsts[0] = ( int )sizeof(int);
sqlstm.sqindv[0] = ( void *)vol_Ind.p_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 *)vol.p_name;
sqlstm.sqhstl[1] = (unsigned int )13;
sqlstm.sqhsts[1] = ( int )16;
sqlstm.sqindv[1] = ( void *)vol_Ind.p_name_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.sqhstv[2] = ( void *)vol.p_shape;
sqlstm.sqhstl[2] = (unsigned int )7;
sqlstm.sqhsts[2] = ( int )8;
sqlstm.sqindv[2] = ( void *)vol_Ind.p_shape_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.sqhstv[3] = ( void *)vol.p_vol_id;
sqlstm.sqhstl[3] = (unsigned int )sizeof(int);
sqlstm.sqhsts[3] = ( int )sizeof(int);
sqlstm.sqindv[3] = ( void *)vol_Ind.p_vol_id_Ind;
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 *)vol.p_trans_id;
sqlstm.sqhstl[4] = (unsigned int )sizeof(int);
sqlstm.sqhsts[4] = ( int )sizeof(int);
sqlstm.sqindv[4] = ( void *)vol_Ind.p_trans_id_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.sqhstv[5] = ( void *)&detid;
sqlstm.sqhstl[5] = (unsigned int )sizeof(int);
sqlstm.sqhsts[5] = ( int )sizeof(int);
sqlstm.sqindv[5] = ( void *)0;
sqlstm.sqinds[5] = ( int )0;
sqlstm.sqharm[5] = (unsigned int )0;
sqlstm.sqadto[5] = (unsigned short )0;
sqlstm.sqtdso[5] = (unsigned short )0;
sqlstm.sqhstv[6] = ( void *)&vers;
sqlstm.sqhstl[6] = (unsigned int )sizeof(int);
sqlstm.sqhsts[6] = ( int )sizeof(int);
sqlstm.sqindv[6] = ( void *)0;
sqlstm.sqinds[6] = ( int )0;
sqlstm.sqharm[6] = (unsigned int )0;
sqlstm.sqadto[6] = (unsigned short )0;
sqlstm.sqtdso[6] = (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) goto errorfound;
}
numTargets=sqlca.sqlerrd[2];
if (numTargets>0) {
pPar->createTargets(numTargets);
for(i=0;i<numTargets;i++) {
if (vol_Ind.p_name_Ind[i]!=-1) {
HGeomVolume v;
vol.p_name[i].arr[vol.p_name[i].len]='\0';
Char_t* nName=(Char_t*)(vol.p_name[i].arr);
v.SetName(nName);
if (vol_Ind.p_shape_Ind[i]!=-1) {
vol.p_shape[i].arr[vol.p_shape[i].len]='\0';
v.setShape((Char_t*)(vol.p_shape[i].arr));
}
v.setMother("CAVE");
pPar->addTarget(&v);
Int_t nt=pPar->getTargetIndex(nName);
HOraGeomObj* obj=new HOraGeomObj(nName,pPar->getTarget(nt),'T',0);
obj->objId=vol.p_id[i];
obj->volId=vol.p_vol_id[i];
if (vol_Ind.p_trans_id_Ind[i]!=-1) obj->transId=vol.p_trans_id[i];
geomObjects.Add(obj);
}
}
allFound=readGeomPoints(&geomObjects);
if (allFound) allFound=readGeomTransform(&geomObjects);
}
return allFound;
errorfound:
showSqlError("readTargetVolumes");
return kFALSE;
}
Bool_t HSpecParOraIo::read(HMagnetPar* pPar) {
Int_t runStart=getRunStart(pPar);
if (runStart<=0) return kFALSE;
Int_t actualCurrent=pPar->getCurrent();
int curr;
short curr_Ind;
if (strcmp(getExpLocation(),"VIRTUAL")==0) {
{
struct sqlexd sqlstm;
sqlorat((void **)0, &sqlctx, &oraca);
sqlstm.sqlvsn = 12;
sqlstm.arrsiz = 7;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.stmt = "select ROUND((field_factor* 3465),0) into :b0:b1 from ha\
nal.simul_project where hades_oper.run_query.get_date between project_begin an\
d project_end";
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )48;
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 *)&curr;
sqlstm.sqhstl[0] = (unsigned int )sizeof(int);
sqlstm.sqhsts[0] = ( int )0;
sqlstm.sqindv[0] = ( void *)&curr_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.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) goto errorfound;
}
} else {
{
struct sqlexd sqlstm;
sqlorat((void **)0, &sqlctx, &oraca);
sqlstm.sqlvsn = 12;
sqlstm.arrsiz = 7;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.stmt = "select mean_current into :b0:b1 from cryo.runs_magnet_cu\
rrent where run_id=hades_oper.run_query.get_run_id";
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )67;
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 *)&curr;
sqlstm.sqhstl[0] = (unsigned int )sizeof(int);
sqlstm.sqhsts[0] = ( int )0;
sqlstm.sqindv[0] = ( void *)&curr_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.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) goto errorfound;
}
}
if (curr_Ind!=-1) {
if (curr>=-4&&curr<=4) curr=0;
if (curr!=actualCurrent||
(pPar->getInputVersion(1)==-1&&pPar->getInputVersion(2)==-1)) {
pPar->setCurrent(curr);
pPar->setChanged();
pPar->setInputVersion(getActRunId(),inputNumber);
}
return kTRUE;
}
return kFALSE;
errorfound:
showSqlError("read(HMagnetPar*)");
notfound:
pPar->setInputVersion(-1,inputNumber);
return kFALSE;
}
Int_t HSpecParOraIo::getVersion(HParSet* pPar) {
Int_t runStart=getRunStart(pPar);
if (runStart<=0) return -1;
HParOraSet* oraSet=getOraSet(pPar);
if (oraSet->contextId==-1) return -1;
Int_t contVers=pPar->getInputVersion(inputNumber);
if (contVers!=-1 && runStart>=oraSet->versDate[0]
&& runStart<=oraSet->versDate[1]) return contVers;
oraSet->clearVersDate();
int context;
struct {
int vers;
double since;
double until;
} parvers;
context=oraSet->contextId;
const Char_t* containerClass=pPar->IsA()->GetName();
if (strcmp(containerClass,"HTrbLookup")==0) {
{
struct sqlexd sqlstm;
sqlorat((void **)0, &sqlctx, &oraca);
sqlstm.sqlvsn = 12;
sqlstm.arrsiz = 7;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.stmt = "select version ,hdate.to_ansitime(valid_since) ,hdate.to_\
ansitime(valid_until) into :s1 ,:s2 ,:s3 from hanal.trb_lookup_vers_at_date \
where context_id=:b1";
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )86;
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 *)&parvers.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 *)&parvers.since;
sqlstm.sqhstl[1] = (unsigned int )sizeof(double);
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 *)&parvers.until;
sqlstm.sqhstl[2] = (unsigned int )sizeof(double);
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 *)&context;
sqlstm.sqhstl[3] = (unsigned int )sizeof(int);
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.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) goto errorfound;
}
}
oraSet->versDate[0]=parvers.since;
oraSet->versDate[1]=parvers.until;
return parvers.vers;
notfound:
return -1;
errorfound:
showSqlError("getVersion(HParSet*)");
return -1;
};
Bool_t HSpecParOraIo::read(HTrbLookup* pPar) {
Int_t contVers=pPar->getInputVersion(inputNumber);
Int_t version=getVersion(pPar);
if (version==-1) {
pPar->setInputVersion(-1,inputNumber);
return kFALSE;
}
if (contVers==version) return kTRUE;
pPar->clear();
int vers;
struct {
int subevtid[NMAX_TRB];
int chan[NMAX_TRB];
char det[NMAX_TRB][2];
int sector[NMAX_TRB];
int module[NMAX_TRB];
int cell[NMAX_TRB];
char side[NMAX_TRB][2];
int feaddress[NMAX_TRB];
} lrecL;
struct {
short subevtid_Ind[NMAX_TRB];
short chan_Ind[NMAX_TRB];
short det_Ind[NMAX_TRB];
short sector_Ind[NMAX_TRB];
short module_Ind[NMAX_TRB];
short cell_Ind[NMAX_TRB];
short side_Ind[NMAX_TRB];
short feaddress_Ind[NMAX_TRB];
} lrecL_Ind;
vers=version;
Int_t nTot=0;
Int_t nLast=0;
{
struct sqlexd sqlstm;
sqlorat((void **)0, &sqlctx, &oraca);
sqlstm.sqlvsn = 12;
sqlstm.arrsiz = 7;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.stmt = sq0005;
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )117;
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.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) goto errorfound;
}
do {
{
struct sqlexd sqlstm;
sqlorat((void **)0, &sqlctx, &oraca);
sqlstm.sqlvsn = 12;
sqlstm.arrsiz = 8;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.iters = (unsigned int )1000;
sqlstm.offset = (unsigned int )136;
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 *)lrecL.subevtid;
sqlstm.sqhstl[0] = (unsigned int )sizeof(int);
sqlstm.sqhsts[0] = ( int )sizeof(int);
sqlstm.sqindv[0] = ( void *)lrecL_Ind.subevtid_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 *)lrecL.chan;
sqlstm.sqhstl[1] = (unsigned int )sizeof(int);
sqlstm.sqhsts[1] = ( int )sizeof(int);
sqlstm.sqindv[1] = ( void *)lrecL_Ind.chan_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.sqhstv[2] = ( void *)lrecL.det;
sqlstm.sqhstl[2] = (unsigned int )2;
sqlstm.sqhsts[2] = ( int )2;
sqlstm.sqindv[2] = ( void *)lrecL_Ind.det_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.sqhstv[3] = ( void *)lrecL.sector;
sqlstm.sqhstl[3] = (unsigned int )sizeof(int);
sqlstm.sqhsts[3] = ( int )sizeof(int);
sqlstm.sqindv[3] = ( void *)lrecL_Ind.sector_Ind;
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 *)lrecL.module;
sqlstm.sqhstl[4] = (unsigned int )sizeof(int);
sqlstm.sqhsts[4] = ( int )sizeof(int);
sqlstm.sqindv[4] = ( void *)lrecL_Ind.module_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.sqhstv[5] = ( void *)lrecL.cell;
sqlstm.sqhstl[5] = (unsigned int )sizeof(int);
sqlstm.sqhsts[5] = ( int )sizeof(int);
sqlstm.sqindv[5] = ( void *)lrecL_Ind.cell_Ind;
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 *)lrecL.side;
sqlstm.sqhstl[6] = (unsigned int )2;
sqlstm.sqhsts[6] = ( int )2;
sqlstm.sqindv[6] = ( void *)lrecL_Ind.side_Ind;
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 *)lrecL.feaddress;
sqlstm.sqhstl[7] = (unsigned int )sizeof(int);
sqlstm.sqhsts[7] = ( int )sizeof(int);
sqlstm.sqindv[7] = ( void *)lrecL_Ind.feaddress_Ind;
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.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) goto errorfound;
}
nLast=sqlca.sqlerrd[2]-nTot;
if (nLast>0) {
for (Int_t i=0;i<nLast;i++) {
Char_t s='\0';
if (lrecL_Ind.side_Ind[i]!=-1) s=lrecL.side[i][0];
pPar->fill(lrecL.subevtid[i],lrecL.chan[i],lrecL.det[i][0],
lrecL.sector[i],lrecL.module[i],lrecL.cell[i],
s,lrecL.feaddress[i]);
nTot++;
}
}
} while (nLast==NMAX_TRB&&nTot<=10000);
{
struct sqlexd sqlstm;
sqlorat((void **)0, &sqlctx, &oraca);
sqlstm.sqlvsn = 12;
sqlstm.arrsiz = 8;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )183;
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) goto errorfound;
}
if (nTot>0) {
pPar->setInputVersion(version,inputNumber);
setChanged(pPar);
cout<<pPar->GetName()<<" initialized from Oracle: ";
return kTRUE;
} else {
pPar->setInputVersion(-1,inputNumber);
return kFALSE;
}
errorfound:
showSqlError("read(HTrbLookup*)");
pPar->setInputVersion(-1,inputNumber);
return kFALSE;
}
Bool_t HSpecParOraIo::read(HScsPar* pPar) {
Int_t runid=gHades->getRuntimeDb()->getCurrentRun()->getRunId();
if (runid<=0) return kFALSE;
pPar->clear();
TString periodBegin, periodEnd;
Int_t utcdiff=0;
Int_t period=readScsPeriod(runid,periodBegin,periodEnd,utcdiff);
if (period<0) return kFALSE;
cout<<period<<" "<<periodBegin<<" "<<periodEnd<<" "<<utcdiff<<endl;
Bool_t rc=readScsSummary(pPar,period,periodBegin.Data(),periodEnd.Data(),utcdiff);
if (rc) {
pPar->setChanged();
pPar->setInputVersion(runid,inputNumber);
} else {
pPar->setInputVersion(-1,inputNumber);
}
return rc;
}
Int_t HSpecParOraIo::readScsPeriod(Int_t runid,TString& tstart,TString& tend, Int_t& utcdiff) {
int rid;
int pid;
char ts[20];
char te[20];
int dt;
rid=runid;
{
struct sqlexd sqlstm;
sqlorat((void **)0, &sqlctx, &oraca);
sqlstm.sqlvsn = 12;
sqlstm.arrsiz = 8;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.stmt = "select period_id ,TO_CHAR(period_begin,'yyyy-mm-dd hh24:mi:\
ss') ,TO_CHAR(period_end,'yyyy-mm-dd hh24:mi:ss') ,hdate.gmt_diff(period_begin\
) into :b0,:b1,:b2,:b3 from hades_slow.hscs_periods where run_id=:b4";
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )198;
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 *)&pid;
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 *)ts;
sqlstm.sqhstl[1] = (unsigned int )20;
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 *)te;
sqlstm.sqhstl[2] = (unsigned int )20;
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 *)&dt;
sqlstm.sqhstl[3] = (unsigned int )sizeof(int);
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 *)&rid;
sqlstm.sqhstl[4] = (unsigned int )sizeof(int);
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 notfound;
if (sqlca.sqlcode < 0) goto errorfound;
}
if (pid>0) {
ts[19]='\0';
te[19]='\0';
tstart=ts;
tend=te;
utcdiff=dt;
}
return pid;
notfound:
Error("readScsPeriod","Period for run id %i not found",rid);
return kFALSE;
errorfound:
showSqlError("readScsPeriod");
return kFALSE;
}
Bool_t HSpecParOraIo::readScsSummary(HScsPar* pPar,Int_t period,
const Char_t* tStart,const Char_t* tEnd,Int_t utcdiff) {
TObjArray* pChannels=pPar->getChannels();
if (!pChannels) return kTRUE;
int pid;
char* chname;
struct {
int chid;
struct { unsigned short len; unsigned char arr[3]; } chtype;
int vprec;
double vmean;
double vsigma;
double vmin;
double vmax;
double vprev;
int ndata;
char dstart[20];
char dend[20];
int vstat;
} chsum;
struct {
short chid_Ind;
short chtype_Ind;
short vprec_Ind;
short vmean_Ind;
short vsigma_Ind;
short vmin_Ind;
short vmax_Ind;
short vprev_Ind;
short ndata_Ind;
short dstart_Ind;
short dend_Ind;
short vstat_Ind;
} chsum_Ind;
pid=period;
HScsChannel* pChan=0;
Bool_t rc=kTRUE;
for (Int_t i=0;i<pChannels->GetSize();i++) {
pChan=(HScsChannel*)(pChannels->At(i));
if (pChan) {
chname=(Char_t*)(pChan->GetName());
{
struct sqlexd sqlstm;
sqlorat((void **)0, &sqlctx, &oraca);
sqlstm.sqlvsn = 12;
sqlstm.arrsiz = 14;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.stmt = "select channel_id ,channel_type ,precision ,mean ,sigma\
,min_value ,max_value ,prev_value ,n_data ,TO_CHAR(data_begin,'yyyy-mm-dd hh2\
4:mi:ss') ,TO_CHAR(data_end,'yyyy-mm-dd hh24:mi:ss') ,stat into :s1:s2 ,:s3:s4\
,:s5:s6 ,:s7:s8 ,:s9:s10 ,:s11:s12 ,:s13:s14 ,:s15:s16 ,:s17:s18 ,:s19:s20 ,:\
s21:s22 ,:s23:s24 from hades_slow.hscs_chan_run_sum_ana where (period_id=:b2\
and channel_name=:b3)";
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.sqhstv[0] = ( void *)&chsum.chid;
sqlstm.sqhstl[0] = (unsigned int )sizeof(int);
sqlstm.sqhsts[0] = ( int )0;
sqlstm.sqindv[0] = ( void *)&chsum_Ind.chid_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 *)&chsum.chtype;
sqlstm.sqhstl[1] = (unsigned int )5;
sqlstm.sqhsts[1] = ( int )0;
sqlstm.sqindv[1] = ( void *)&chsum_Ind.chtype_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 *)&chsum.vprec;
sqlstm.sqhstl[2] = (unsigned int )sizeof(int);
sqlstm.sqhsts[2] = ( int )0;
sqlstm.sqindv[2] = ( void *)&chsum_Ind.vprec_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 *)&chsum.vmean;
sqlstm.sqhstl[3] = (unsigned int )sizeof(double);
sqlstm.sqhsts[3] = ( int )0;
sqlstm.sqindv[3] = ( void *)&chsum_Ind.vmean_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.sqhstv[4] = ( void *)&chsum.vsigma;
sqlstm.sqhstl[4] = (unsigned int )sizeof(double);
sqlstm.sqhsts[4] = ( int )0;
sqlstm.sqindv[4] = ( void *)&chsum_Ind.vsigma_Ind;
sqlstm.sqinds[4] = ( int )0;
sqlstm.sqharm[4] = (unsigned int )0;
sqlstm.sqadto[4] = (unsigned short )0;
sqlstm.sqtdso[4] = (unsigned short )0;
sqlstm.sqhstv[5] = ( void *)&chsum.vmin;
sqlstm.sqhstl[5] = (unsigned int )sizeof(double);
sqlstm.sqhsts[5] = ( int )0;
sqlstm.sqindv[5] = ( void *)&chsum_Ind.vmin_Ind;
sqlstm.sqinds[5] = ( int )0;
sqlstm.sqharm[5] = (unsigned int )0;
sqlstm.sqadto[5] = (unsigned short )0;
sqlstm.sqtdso[5] = (unsigned short )0;
sqlstm.sqhstv[6] = ( void *)&chsum.vmax;
sqlstm.sqhstl[6] = (unsigned int )sizeof(double);
sqlstm.sqhsts[6] = ( int )0;
sqlstm.sqindv[6] = ( void *)&chsum_Ind.vmax_Ind;
sqlstm.sqinds[6] = ( int )0;
sqlstm.sqharm[6] = (unsigned int )0;
sqlstm.sqadto[6] = (unsigned short )0;
sqlstm.sqtdso[6] = (unsigned short )0;
sqlstm.sqhstv[7] = ( void *)&chsum.vprev;
sqlstm.sqhstl[7] = (unsigned int )sizeof(double);
sqlstm.sqhsts[7] = ( int )0;
sqlstm.sqindv[7] = ( void *)&chsum_Ind.vprev_Ind;
sqlstm.sqinds[7] = ( int )0;
sqlstm.sqharm[7] = (unsigned int )0;
sqlstm.sqadto[7] = (unsigned short )0;
sqlstm.sqtdso[7] = (unsigned short )0;
sqlstm.sqhstv[8] = ( void *)&chsum.ndata;
sqlstm.sqhstl[8] = (unsigned int )sizeof(int);
sqlstm.sqhsts[8] = ( int )0;
sqlstm.sqindv[8] = ( void *)&chsum_Ind.ndata_Ind;
sqlstm.sqinds[8] = ( int )0;
sqlstm.sqharm[8] = (unsigned int )0;
sqlstm.sqadto[8] = (unsigned short )0;
sqlstm.sqtdso[8] = (unsigned short )0;
sqlstm.sqhstv[9] = ( void *)chsum.dstart;
sqlstm.sqhstl[9] = (unsigned int )20;
sqlstm.sqhsts[9] = ( int )0;
sqlstm.sqindv[9] = ( void *)&chsum_Ind.dstart_Ind;
sqlstm.sqinds[9] = ( int )0;
sqlstm.sqharm[9] = (unsigned int )0;
sqlstm.sqadto[9] = (unsigned short )0;
sqlstm.sqtdso[9] = (unsigned short )0;
sqlstm.sqhstv[10] = ( void *)chsum.dend;
sqlstm.sqhstl[10] = (unsigned int )20;
sqlstm.sqhsts[10] = ( int )0;
sqlstm.sqindv[10] = ( void *)&chsum_Ind.dend_Ind;
sqlstm.sqinds[10] = ( int )0;
sqlstm.sqharm[10] = (unsigned int )0;
sqlstm.sqadto[10] = (unsigned short )0;
sqlstm.sqtdso[10] = (unsigned short )0;
sqlstm.sqhstv[11] = ( void *)&chsum.vstat;
sqlstm.sqhstl[11] = (unsigned int )sizeof(int);
sqlstm.sqhsts[11] = ( int )0;
sqlstm.sqindv[11] = ( void *)&chsum_Ind.vstat_Ind;
sqlstm.sqinds[11] = ( int )0;
sqlstm.sqharm[11] = (unsigned int )0;
sqlstm.sqadto[11] = (unsigned short )0;
sqlstm.sqtdso[11] = (unsigned short )0;
sqlstm.sqhstv[12] = ( void *)&pid;
sqlstm.sqhstl[12] = (unsigned int )sizeof(int);
sqlstm.sqhsts[12] = ( int )0;
sqlstm.sqindv[12] = ( void *)0;
sqlstm.sqinds[12] = ( int )0;
sqlstm.sqharm[12] = (unsigned int )0;
sqlstm.sqadto[12] = (unsigned short )0;
sqlstm.sqtdso[12] = (unsigned short )0;
sqlstm.sqhstv[13] = ( void *)chname;
sqlstm.sqhstl[13] = (unsigned int )0;
sqlstm.sqhsts[13] = ( int )0;
sqlstm.sqindv[13] = ( void *)0;
sqlstm.sqinds[13] = ( int )0;
sqlstm.sqharm[13] = (unsigned int )0;
sqlstm.sqadto[13] = (unsigned short )0;
sqlstm.sqtdso[13] = (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) goto errorfound;
}
chsum.chtype.arr[chsum.chtype.len]='\0';
pChan->setChannelType((Char_t*)(chsum.chtype.arr));
if (chsum_Ind.vprec_Ind!=-1) pChan->setValuePrecision(chsum.vprec);
if (chsum_Ind.vmean_Ind!=-1) {
pChan->setMean(chsum.vmean);
pChan->setSigma(chsum.vsigma);
pChan->setMinValue(chsum.vmin);
pChan->setMaxValue(chsum.vmax);
}
if (chsum_Ind.vprev_Ind!=-1) pChan->setPreviousVal(chsum.vprev);
if (chsum_Ind.ndata_Ind!=-1&&chsum.ndata>0) {
chsum.dstart[19]='\0';
chsum.dend[19]='\0';
if (chsum.chtype.arr[0]=='F') {
rc=readScsRawF(pChan,chsum.chid,chsum.ndata,chsum.dstart,chsum.dend,utcdiff);
} else if (chsum.chtype.arr[0]=='I') {
rc=readScsRawI(pChan,chsum.chid,chsum.ndata,chsum.dstart,chsum.dend,utcdiff);
} else {
Error("readScsSummary","No interface for channel type %s",pChan->getChannelType());
rc=kFALSE;
}
}
if (chsum_Ind.vstat_Ind!=-1) pChan->setStatus(chsum.vstat);
}
if (!rc) break;
}
return rc;
notfound:
Error("readScsSummary","Channel not found");
return kFALSE;
errorfound:
showSqlError("readScsSummary");
return kFALSE;
}
Bool_t HSpecParOraIo::readScsRawF(HScsChannel* pChan,Int_t channelId,Int_t nData,
Char_t* dataStart,Char_t * dataEnd,Int_t utcdiff) {
if (channelId<=0) return kFALSE;
TObjArray* data=new TObjArray(nData);
int chid;
char* tstart;
char* tend;
int dutc;
struct {
char ti[NMAX_SCS][20];
double va[NMAX_SCS];
} rawdata;
chid=channelId;
tstart=(Char_t*)dataStart;
tend=(Char_t*)dataEnd;
dutc=utcdiff;
Int_t nTot=0;
Int_t nLast=0;
TString lastTimestamp;
UInt_t fDate=0, fTime=0;
{
struct sqlexd sqlstm;
sqlorat((void **)0, &sqlctx, &oraca);
sqlstm.sqlvsn = 12;
sqlstm.arrsiz = 14;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.stmt = sq0008;
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )304;
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 *)&dutc;
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 *)tstart;
sqlstm.sqhstl[1] = (unsigned int )0;
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 *)tend;
sqlstm.sqhstl[2] = (unsigned int )0;
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 *)&chid;
sqlstm.sqhstl[3] = (unsigned int )sizeof(int);
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.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) goto errorfound;
}
do {
{
struct sqlexd sqlstm;
sqlorat((void **)0, &sqlctx, &oraca);
sqlstm.sqlvsn = 12;
sqlstm.arrsiz = 14;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.iters = (unsigned int )2000;
sqlstm.offset = (unsigned int )335;
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 *)rawdata.ti;
sqlstm.sqhstl[0] = (unsigned int )20;
sqlstm.sqhsts[0] = ( int )20;
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 *)rawdata.va;
sqlstm.sqhstl[1] = (unsigned int )sizeof(double);
sqlstm.sqhsts[1] = ( int )sizeof(double);
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.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) goto errorfound;
}
nLast=sqlca.sqlerrd[2]-nTot;
if (nLast>0) {
for (Int_t i=0;i<nLast;i++) {
HScsChannelRaw* p=new HScsChannelRaw();
rawdata.ti[i][19]='\0';
stringToDate(rawdata.ti[i],fDate,fTime);
p->setDate(fDate);
p->setTime(fTime);
p->setValue(rawdata.va[i]);
data->AddAt(p,nTot);
nTot++;
}
lastTimestamp=rawdata.ti[nLast-1];
}
} while (nLast==NMAX_SCS&&nTot<nData);
{
struct sqlexd sqlstm;
sqlorat((void **)0, &sqlctx, &oraca);
sqlstm.sqlvsn = 12;
sqlstm.arrsiz = 14;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )358;
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) goto errorfound;
}
pChan->setRawData(data);
return kTRUE;
errorfound:
showSqlError("readScsRawF");
return kFALSE;
}
Bool_t HSpecParOraIo::readScsRawI(HScsChannel* pChan,Int_t channelId,Int_t nData,
Char_t* dataStart,Char_t * dataEnd,Int_t utcdiff) {
if (channelId<=0) return kFALSE;
TObjArray* data=new TObjArray(nData);
int chid;
char* tstart;
char* tend;
int dutc;
struct {
char ti[NMAX_SCS][20];
double va[NMAX_SCS];
} rawdata;
chid=channelId;
tstart=(Char_t*)dataStart;
tend=(Char_t*)dataEnd;
dutc=utcdiff;
Int_t nTot=0;
Int_t nLast=0;
TString lastTimestamp;
UInt_t fDate=0, fTime=0;
{
struct sqlexd sqlstm;
sqlorat((void **)0, &sqlctx, &oraca);
sqlstm.sqlvsn = 12;
sqlstm.arrsiz = 14;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.stmt = sq0009;
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )373;
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 *)&dutc;
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 *)tstart;
sqlstm.sqhstl[1] = (unsigned int )0;
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 *)tend;
sqlstm.sqhstl[2] = (unsigned int )0;
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 *)&chid;
sqlstm.sqhstl[3] = (unsigned int )sizeof(int);
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.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) goto errorfound;
}
do {
{
struct sqlexd sqlstm;
sqlorat((void **)0, &sqlctx, &oraca);
sqlstm.sqlvsn = 12;
sqlstm.arrsiz = 14;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.iters = (unsigned int )2000;
sqlstm.offset = (unsigned int )404;
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 *)rawdata.ti;
sqlstm.sqhstl[0] = (unsigned int )20;
sqlstm.sqhsts[0] = ( int )20;
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 *)rawdata.va;
sqlstm.sqhstl[1] = (unsigned int )sizeof(double);
sqlstm.sqhsts[1] = ( int )sizeof(double);
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.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) goto errorfound;
}
nLast=sqlca.sqlerrd[2]-nTot;
if (nLast>0) {
for (Int_t i=0;i<nLast;i++) {
HScsChannelRaw* p=new HScsChannelRaw();
rawdata.ti[i][19]='\0';
stringToDate(rawdata.ti[i],fDate,fTime);
p->setDate(fDate);
p->setTime(fTime);
p->setValue(rawdata.va[i]);
data->AddAt(p,nTot);
nTot++;
}
lastTimestamp=rawdata.ti[nLast-1];
}
} while (nLast==NMAX_SCS&&nTot<nData);
{
struct sqlexd sqlstm;
sqlorat((void **)0, &sqlctx, &oraca);
sqlstm.sqlvsn = 12;
sqlstm.arrsiz = 14;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )427;
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) goto errorfound;
}
pChan->setRawData(data);
return kTRUE;
errorfound:
showSqlError("readScsRawI");
return kFALSE;
}
void HSpecParOraIo::stringToDate(const Char_t* timestamp,UInt_t& fDate,UInt_t& fTime) {
Int_t tsec, tmin, thour, tday, tmon, tyear;
tyear=(timestamp[0]-'0')*1000 + (timestamp[1]-'0')*100 + (timestamp[2]-'0')*10
+ (timestamp[3]-'0') - 1900;
tmon=(timestamp[5]-'0')*10 + (timestamp[6]-'0') -1;
tday=(timestamp[8]-'0')*10 + (timestamp[9]-'0');
thour=(timestamp[11]-'0')*10 + (timestamp[12]-'0');
tmin=(timestamp[14]-'0')*10 + (timestamp[15]-'0');
tsec=(timestamp[17]-'0')*10 + (timestamp[18]-'0');
fDate=(tday & 0xFF)+((tmon & 0xFF)<<8)+((tyear & 0xFF)<<16);
fTime=((thour & 0xFF)<<16)+((tmin & 0xFF)<<8)+(tsec & 0xFF);
}
Int_t HSpecParOraIo::writeAlignment(HSpecGeomPar* pPar) {
Int_t runStart=getRunStart(pPar);
if (runStart==-1) return -1;
Int_t version=getAlignmentOutputVersion(pPar,pPar->getParamContext());
if (version==-1) return -1;
Int_t n=0;
Bool_t rc=kTRUE;
for(Int_t i=0;i<pPar->getNumTargets();i++) {
HGeomVolume* pVol=pPar->getTarget(i);
if (!pVol) continue;
if ((rc=writeTransform(version,pVol->GetName(),pVol->getTransform()))) n++;
else break;
}
if (rc && n>0) {
cout<<"Target alignment: "<<n<<" rows inserted\n";
commit();
}
pPar->setChanged(kFALSE);
return version;
}
Int_t HSpecParOraIo::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;
}
Int_t runStart=getRunStart(pPar);
if (runStart==-1) return -1;
char* p_class;
int vers=-1;
int context;
int run;
char* creator;
char* descript;
p_class=(Char_t*)(pPar->IsA()->GetName());
context = getContextId(pPar->IsA()->GetName(),pPar->getParamContext());
if (context==-1) return -1;
run=getActRunId();
creator=(Char_t*)pPar->getAuthor();
descript=(Char_t*)pPar->getDescription();
const Char_t* contName=pPar->IsA()->GetName();
if (strcmp(contName,"HTrbLookup")==0) {
{
struct sqlexd sqlstm;
sqlorat((void **)0, &sqlctx, &oraca);
sqlstm.sqlvsn = 12;
sqlstm.arrsiz = 14;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.stmt = "begin SELECT hanal . ana_par_query . next_version ( :p_cl\
ass ) INTO :vers FROM DUAL ; INSERT INTO hanal . trb_lookup_vers ( vers_id , o\
rig_context_id , run_id , author , description ) VALUES ( :vers , :context , :\
run , :creator , :descript ) ; END ;";
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )442;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
sqlstm.sqlety = (unsigned short)256;
sqlstm.occurs = (unsigned int )0;
sqlstm.sqhstv[0] = ( void *)p_class;
sqlstm.sqhstl[0] = (unsigned int )0;
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.sqhstv[2] = ( void *)&context;
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 *)&run;
sqlstm.sqhstl[3] = (unsigned int )sizeof(int);
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 *)creator;
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.sqhstv[5] = ( void *)descript;
sqlstm.sqhstl[5] = (unsigned int )0;
sqlstm.sqhsts[5] = ( int )0;
sqlstm.sqindv[5] = ( void *)0;
sqlstm.sqinds[5] = ( int )0;
sqlstm.sqharm[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 == 1403) goto errorfound;
if (sqlca.sqlcode < 0) goto errorfound;
}
}
cout<<"Oracle version for "<<pPar->GetName()<<" created: "<<vers<<endl;
return vers;
errorfound:
showSqlError("createVers(HParSet*)");
return vers;
}
Int_t HSpecParOraIo::writeTrbLookup(HTrbLookup* pPar) {
Int_t version=createVers(pPar);
if (version==-1) return -1;
int rows_to_insert;
int vers[NCHAN_TRB];
int subevtid[NCHAN_TRB];
int chan[NCHAN_TRB];
char det[NCHAN_TRB][2];
int sector[NCHAN_TRB];
int module[NCHAN_TRB];
int cell[NCHAN_TRB];
char side[NCHAN_TRB][2];
short side_Ind[NCHAN_TRB];
int feaddress[NCHAN_TRB];
Int_t nChan=0;
Int_t arrayOffset=pPar->getArrayOffset();
for(Int_t b=0;b<pPar->getSize();b++) {
HTrbLookupBoard* board=(*pPar)[b];
if (board) {
nChan=0;
for(Int_t t=0;t<board->getSize();t++) {
HTrbLookupChan& rChan=(*board)[t];
Char_t d=rChan.getDetector();
if (d!='\0') {
vers[nChan]=version;
subevtid[nChan]=arrayOffset+b;
chan[nChan]=t;
det[nChan][0]=d;
det[nChan][1]='\0';
sector[nChan]=rChan.getSector();
module[nChan]=rChan.getModule();
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 = 12;
sqlstm.arrsiz = 14;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.stmt = "insert into hanal.trb_lookup_data (vers_id,subevent_id,\
channel_id,cell_id,fe_address) values (:b1,:b2,:b3,hanal.ana_par_query.get_trb\
_detector_cell(:b4,:b5,:b6,:b7,:b8:b9),:b10)";
sqlstm.iters = (unsigned int )rows_to_insert;
sqlstm.offset = (unsigned int )481;
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 *)subevtid;
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 *)chan;
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 *)det;
sqlstm.sqhstl[3] = (unsigned int )2;
sqlstm.sqhsts[3] = ( int )2;
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 *)sector;
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.sqharc[4] = (unsigned int *)0;
sqlstm.sqadto[4] = (unsigned short )0;
sqlstm.sqtdso[4] = (unsigned short )0;
sqlstm.sqhstv[5] = ( void *)module;
sqlstm.sqhstl[5] = (unsigned int )sizeof(int);
sqlstm.sqhsts[5] = ( int )sizeof(int);
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 *)cell;
sqlstm.sqhstl[6] = (unsigned int )sizeof(int);
sqlstm.sqhsts[6] = ( int )sizeof(int);
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 *)side;
sqlstm.sqhstl[7] = (unsigned int )2;
sqlstm.sqhsts[7] = ( int )2;
sqlstm.sqindv[7] = ( void *)side_Ind;
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 *)feaddress;
sqlstm.sqhstl[8] = (unsigned int )sizeof(int);
sqlstm.sqhsts[8] = ( int )sizeof(int);
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.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<<"SubeventId "<<arrayOffset+b<<": "<<rows_to_insert<<" rows inserted\n";
}
}
if (checkFrontEndAddresses(version)) {
commit();
pPar->setChanged(kFALSE);
return version;
} else {
rollback();
return -1;
}
errorfound:
showSqlError("writePar(HTrbLookup*)");
rollback();
pPar->setChanged(kFALSE);
return -1;
}
Bool_t HSpecParOraIo::checkFrontEndAddresses(Int_t version) {
int vers;
struct {
char det[NMAX_TRB][2];
int sector[NMAX_TRB];
int feaddress[NMAX_TRB];
int ndata[NMAX_TRB];
} lrecLC;
vers=version;
{
struct sqlexd sqlstm;
sqlorat((void **)0, &sqlctx, &oraca);
sqlstm.sqlvsn = 12;
sqlstm.arrsiz = 14;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.stmt = "select detector ,sector ,fe_address ,ncount into :s1 ,:s2 ,\
:s3 ,:s4 from (select detector ,sector ,fe_address ,count(1) ncount from ha\
nal.hwpg_trb_lookup_data where (vers_id=:b1 and fe_address<>(-1)) group by det\
ector,sector,fe_address) where ncount>1";
sqlstm.iters = (unsigned int )1000;
sqlstm.offset = (unsigned int )532;
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 *)lrecLC.det;
sqlstm.sqhstl[0] = (unsigned int )2;
sqlstm.sqhsts[0] = ( int )2;
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 *)lrecLC.sector;
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 *)lrecLC.feaddress;
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 *)lrecLC.ndata;
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 *)&vers;
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) goto errorfound;
}
if (sqlca.sqlerrd[2]>0) {
cout<<"------------------------------------------------------------------------\n";
cout<<"ERROR: Multiple defined front end addresses\n"
"Detector Sector FE-Address Number of Definitions\n";
for(Int_t i=0;i<sqlca.sqlerrd[2];i++) {
cout<<" "<<lrecLC.det[i][0]<<" "<<lrecLC.sector[i]<<" "
<<lrecLC.feaddress[i]<<" \t "<<lrecLC.ndata[i]<<'\n';
}
cout<<"------------------------------------------------------------------------\n";
return kFALSE;
}
return kTRUE;
errorfound:
showSqlError("checkFrontEndAddresses(Int_t version");
return kFALSE;
}
Last change: Sat May 22 13:14:26 2010
Last generated: 2010-05-22 13:14
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.