#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,
"hdetparora2io.pc"
};
static unsigned int sqlctx = 4693795;
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[14];
unsigned long sqhstl[14];
int sqhsts[14];
short *sqindv[14];
int sqinds[14];
unsigned long sqharm[14];
unsigned long *sqharc[14];
unsigned short sqadto[14];
unsigned short sqtdso[14];
} sqlstm = {13,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(unsigned char *, signed int *); }
static const char *sq0009 =
"select object_id ,geant3_shape ,volume_id ,trans_id from hgeom.volume_data_\
at_histdate_2 where ((det_part_id=:b0 and object_name=:b1) and :b2 between geo\
m_vers_min and geom_vers_max) ";
static const char *sq0010 =
"select point_num ,x ,y ,z from hgeom.volume_points where volume_id=:b0 \
";
static const char *sq0011 =
"select ref_obj_name ,x ,y ,z ,r11 ,r12 ,r13 ,r21 ,r22 ,r23 ,r31 ,r32 ,r33 f\
rom hgeom.volume_transform_for_ana where trans_id=:b0 ";
static const char *sq0012 =
"select r11 ,r12 ,r13 ,r21 ,r22 ,r23 ,r31 ,r32 ,r33 ,px ,py ,pz from hgeom.a\
lignment2_data where (geom_obj_id=:b0 and vers_id=:b1) ";
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,0,0,29,64,0,0,0,0,0,1,0,
20,0,0,2,0,0,31,72,0,0,0,0,0,1,0,
35,0,0,3,122,0,4,163,0,0,4,3,0,1,0,2,3,0,0,1,97,0,0,1,97,0,0,1,97,0,0,
66,0,0,4,204,0,4,312,0,0,5,2,0,1,0,2,3,0,0,2,4,0,0,2,4,0,0,1,97,0,0,1,3,0,0,
101,0,0,5,194,0,4,324,0,0,4,2,0,1,0,2,4,0,0,2,4,0,0,1,97,0,0,1,3,0,0,
132,0,0,6,89,0,4,353,0,0,2,1,0,1,0,2,3,0,0,1,97,0,0,
155,0,0,7,187,0,4,379,0,0,5,1,0,1,0,2,3,0,0,2,3,0,0,2,4,0,0,2,4,0,0,1,97,0,0,
190,0,0,8,168,0,4,407,0,0,4,1,0,1,0,2,3,0,0,2,4,0,0,2,4,0,0,1,3,0,0,
221,0,0,9,194,0,9,460,0,0,3,3,0,1,0,1,3,0,0,1,97,0,0,1,3,0,0,
248,0,0,9,0,0,13,461,0,0,4,0,0,1,0,2,3,0,0,2,9,0,0,2,3,0,0,2,3,0,0,
279,0,0,9,0,0,15,481,0,0,0,0,0,1,0,
294,0,0,9,0,0,15,491,0,0,0,0,0,1,0,
309,0,0,10,82,0,9,521,0,0,1,1,0,1,0,1,3,0,0,
328,0,0,10,0,0,13,522,0,0,4,0,0,1,0,2,3,0,0,2,4,0,0,2,4,0,0,2,4,0,0,
359,0,0,10,0,0,15,534,0,0,0,0,0,1,0,
374,0,0,10,0,0,15,537,0,0,0,0,0,1,0,
389,0,0,11,140,0,9,594,0,0,1,1,0,1,0,1,3,0,0,
408,0,0,11,0,0,13,595,0,0,13,0,0,1,0,2,9,0,0,2,4,0,0,2,4,0,0,2,4,0,0,2,4,0,0,2,
4,0,0,2,4,0,0,2,4,0,0,2,4,0,0,2,4,0,0,2,4,0,0,2,4,0,0,2,4,0,0,
475,0,0,11,0,0,15,639,0,0,0,0,0,1,0,
490,0,0,11,0,0,15,642,0,0,0,0,0,1,0,
505,0,0,12,141,0,9,683,0,0,2,2,0,1,0,1,3,0,0,1,3,0,0,
528,0,0,12,0,0,13,684,0,0,12,0,0,1,0,2,4,0,0,2,4,0,0,2,4,0,0,2,4,0,0,2,4,0,0,2,
4,0,0,2,4,0,0,2,4,0,0,2,4,0,0,2,4,0,0,2,4,0,0,2,4,0,0,
591,0,0,12,0,0,15,713,0,0,0,0,0,1,0,
606,0,0,13,238,0,6,771,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,
641,0,0,14,310,0,3,823,0,0,14,14,0,1,0,1,97,0,0,1,3,0,0,1,4,0,0,1,4,0,0,1,4,0,
0,1,4,0,0,1,4,0,0,1,4,0,0,1,4,0,0,1,4,0,0,1,4,0,0,1,4,0,0,1,4,0,0,1,4,0,0,
};
using namespace std;
#include "hdetparora2io.h"
#include "hora2conn.h"
#include "hparora2set.h"
#include "hora2geomobj.h"
#include "hades.h"
#include "hruntimedb.h"
#include "hrun.h"
#include "hparset.h"
#include "hdetgeompar.h"
#include "hspecgeompar.h"
#include "hgeomcompositevolume.h"
#include "hora2geomdetversion.h"
#include <iostream>
#include <iomanip>
#define SQLCA_STORAGE_CLASS extern
#define ORACA_STORAGE_CLASS extern
#include <oraca.h>
#include <sqlca.h>
#include <sqlcpr.h>
ClassImp(HDetParOra2Io)
#define NMAX_MOD 132
#define NMAX_POINTS 100
HDetParOra2Io::HDetParOra2Io(HOra2Conn* pC) : HDetParIo() {
pConn=pC;
actContVers=0;
actRunId=-1;
containerList=0;
}
HDetParOra2Io::~HDetParOra2Io(void) {
if (containerList) {
containerList->Delete();
delete containerList;
containerList=0;
}
}
void HDetParOra2Io::commit(void) {
{
struct sqlexd sqlstm;
sqlorat((void **)0, &sqlctx, &oraca);
sqlstm.sqlvsn = 13;
sqlstm.arrsiz = 0;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )5;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
sqlstm.sqlety = (unsigned short)4352;
sqlstm.occurs = (unsigned int )0;
sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
}
cout<<"Transaction committed"<<endl;
return;
}
void HDetParOra2Io::rollback(void) {
{
struct sqlexd sqlstm;
sqlorat((void **)0, &sqlctx, &oraca);
sqlstm.sqlvsn = 13;
sqlstm.arrsiz = 0;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )20;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
sqlstm.sqlety = (unsigned short)4352;
sqlstm.occurs = (unsigned int )0;
sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
}
cout<<"Transaction rolled back"<<endl;
return;
}
void HDetParOra2Io::showSqlError(const Char_t* f) {
return pConn->showSqlError(f);
}
Int_t HDetParOra2Io::getRunStart(HParSet* pPar) {
actRunId=-1;
runStart=-1;
actContVers=(HRun*)gHades->getRuntimeDb()->getCurrentRun();
if (!actContVers) {
Error("getRunStart(HParSet*)","current run not set in runtime database");
return -1;
}
const Text_t* refRun=actContVers->getRefRun();
if (strlen(refRun)>0) sscanf(refRun,"%i",&actRunId);
else actRunId=actContVers->getRunId();
if (pPar) {
Int_t contVers=getPredefVersion(pPar);
if (contVers>=0) actRunId=contVers;
}
runStart=pConn->getRunStart(actRunId);
return runStart;
}
const Char_t* HDetParOra2Io::getExpLocation() {
return pConn->getExpLocation();
}
const Char_t* HDetParOra2Io::getHistoryDate() {
return pConn->getHistoryDate();
}
Int_t HDetParOra2Io::getPredefVersion(HParSet* pPar) {
HParVersion* pv=(HParVersion*)actContVers->getParVersion((Char_t*)pPar->GetName());
if (pv) return pv->getInputVersion(inputNumber);
else return -1;
}
HParOra2Set* HDetParOra2Io::getOraSet(HParSet* pPar) {
if (!containerList) containerList=new TList;
HParOra2Set* pSet=(HParOra2Set*)(containerList->FindObject(pPar->GetName()));
if (!pSet) {
pSet=new HParOra2Set(pPar->GetName());
pSet->contextId=getContextId(pPar->IsA()->GetName(),pPar->getParamContext());
containerList->Add(pSet);
}
return pSet;
}
Int_t HDetParOra2Io::getContextId(const Char_t* className, const Char_t* paramContext) {
if (strlen(paramContext)==0) return -1;
char* p_class;
char* p_context;
char* p_exp_loc;
int context_id=-1;
p_class=(Char_t*)className;
p_context=(Char_t*)paramContext;
p_exp_loc=(Char_t*)pConn->getExpLocation();
{
struct sqlexd sqlstm;
sqlorat((void **)0, &sqlctx, &oraca);
sqlstm.sqlvsn = 13;
sqlstm.arrsiz = 4;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.stmt = "select context_id into :b0 from hanal2.all_parameter_conte\
xts where ((class=:b1 and context=:b2) and exp_location_id=:b3)";
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )35;
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 *)&context_id;
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 *)p_class;
sqlstm.sqhstl[1] = (unsigned long )0;
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 *)p_context;
sqlstm.sqhstl[2] = (unsigned long )0;
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 *)p_exp_loc;
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.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;
}
return context_id;
not_found:
Error("HDetParOra2Io::getContextId","\nContext %s for class %s not found!",
p_context,p_class);
return -1;
};
void HDetParOra2Io::setChanged(HParSet* pPar) {
setChanged(pPar,getActRunId());
}
void HDetParOra2Io::setChanged(HParSet* pPar,Int_t version) {
pPar->setChanged();
pPar->setInputVersion(version,inputNumber);
TString s="Read from Oracle\n Valid for Run Id ";
s.Append(Form("%d",getActRunId()));
s.Append("\n Status at ");
s.Append(pConn->getHistoryDate());
pPar->setDescription(s.Data());
}
void HDetParOra2Io::addGeomOraSet(HDetGeomPar* pPar) {
HParOra2Set* oraSet=0;
if (!containerList) containerList=new TList;
else oraSet=(HParOra2Set*)(containerList->FindObject(pPar->GetName()));
if (!oraSet) {
oraSet=new HParOra2Set(pPar->GetName());
containerList->Add(oraSet);
}
}
Bool_t HDetParOra2Io::readDetectorGeometry(HDetGeomPar* pPar,Int_t* set,
HOra2GeomDetVersion* detVers) {
if (detVers==0) return kFALSE;
if (getRunStart(pPar)<=0) {
pPar->setInputVersion(-1,inputNumber);
return kFALSE;
}
Int_t contVers=pPar->getInputVersion(inputNumber);
HParOra2Set* oraSet=0;
Bool_t needsGeomInit=kFALSE, needsAlignmentInit=kFALSE, allFound=kTRUE;
Int_t geomVers=detVers->getGeomVersion();
if (runStart<detVers->getSince()||runStart>detVers->getUntil()) {
needsGeomInit=kTRUE;
Int_t detId=detVers->getDetectorId();
if (detId<0) {
geomVers=getGeomVersion(pPar->getDetectorName(),detVers);
} else {
geomVers=getGeomVersion(detId,detVers);
}
}
if (geomVers<=0) {
allFound=kFALSE;
}
Int_t alignmentVers=-1;
if (allFound&&containerList&&strcmp(pConn->getExpLocation(),"VIRTUAL")!=0) {
oraSet=(HParOra2Set*)(containerList->FindObject(pPar->GetName()));
if (oraSet) {
Int_t contextId=oraSet->contextId;
if (contextId<0) {
contextId=getContextId("HDetGeomPar",pPar->getParamContext());
if (contextId==-1) return kFALSE;
oraSet->contextId=contextId;
}
Double_t oldUntil=oraSet->versDate[1];
if (contVers<=0 || runStart<oraSet->versDate[0] || runStart>oldUntil) {
alignmentVers=getAlignmentVersion(oraSet,pPar->getDetectorName());
if (alignmentVers>0||oldUntil!=-1) needsAlignmentInit=kTRUE;
}
}
}
if (allFound&&(needsGeomInit||needsAlignmentInit)) {
TList geomObjects;
for(Int_t pos=0;pos<pPar->getNumModules();pos++) {
HModGeomPar* pMod=pPar->getModule(pos);
if (pMod && set[pos])
geomObjects.Add(new HOra2GeomObj(pMod->GetName(),pMod,'M',0));
}
if (needsGeomInit) {
addGeomRefComponents(pPar,&geomObjects);
}
allFound=readIdealGeometry(&geomObjects,detVers);
if (allFound && needsGeomInit) allFound=transformGeomCompositeComponents(pPar);
if (allFound) {
cout<<pPar->GetName()<<": Geometry initialized from Oracle (version "
<<geomVers<<")\n";
if (needsAlignmentInit&&alignmentVers>0) {
Int_t n=readAlignmentTransform(&geomObjects,alignmentVers);
if (n>0) {
cout<<pPar->GetName()<<": Alignment for "<<n
<<" modules read from Oracle (version "<<alignmentVers<<")\n";
}
}
pPar->setInputVersion(actRunId,inputNumber);
pPar->setChanged();
pPar->setNotFirstInit();
}
}
return allFound;
}
void HDetParOra2Io::addGeomRefComponents(HDetGeomPar* pPar,TList* geomObjects) {
for(Int_t i=0;i<pPar->getNumRefModules();i++) {
HGeomCompositeVolume* refMod=pPar->getRefVolume(i);
if (refMod && refMod->getNumPoints()==0) {
geomObjects->Add(new HOra2GeomObj(refMod->GetName(),refMod,'R',0));
for(Int_t l=0;l<refMod->getNumComponents();l++) {
HGeomVolume* comp=refMod->getComponent(l);
TString compName=comp->GetName();
if (!compName.IsNull()) {
geomObjects->Add(new HOra2GeomObj(compName,comp,'C',refMod));
}
}
}
}
}
Int_t HDetParOra2Io::getAlignmentVersion(HParOra2Set* oraSet,const Char_t* detName) {
if (!oraSet||strlen(detName)==0) return -1;
int context;
char* det;
int vers=-1;
double since;
double until;
short vers_ind;
short since_ind;
short until_ind;
context=(Int_t)oraSet->contextId;
det=(Char_t*)detName;
{
struct sqlexd sqlstm;
sqlorat((void **)0, &sqlctx, &oraca);
sqlstm.sqlvsn = 13;
sqlstm.arrsiz = 5;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.stmt = "select version ,hanadate.date_to_number(valid_since) ,hanad\
ate.date_to_number(valid_until) into :b0:b1,:b2:b3,:b4:b5 from hgeom.alignmen\
t2_vers_at_date where (detector_name=UPPER(:b6) and context_id=:b7)";
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )66;
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 *)&vers_ind;
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 *)&since_ind;
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 *)&until_ind;
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 *)det;
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 *)&context;
sqlstm.sqhstl[4] = (unsigned long )sizeof(int);
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 < 0) goto errorfound;
}
if (vers_ind!=-1&&vers>0) {
oraSet->versDate[0]=since;
oraSet->versDate[1]=until;
return vers;
}
{
struct sqlexd sqlstm;
sqlorat((void **)0, &sqlctx, &oraca);
sqlstm.sqlvsn = 13;
sqlstm.arrsiz = 5;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.stmt = "select hanadate.date_to_number(previous_until) ,hanadate.da\
te_to_number(next_since) into :b0:b1,:b2:b3 from hgeom.alignment2_vers_range_\
check where (detector_name=UPPER(:b4) and context_id=:b5)";
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )101;
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 *)&since;
sqlstm.sqhstl[0] = (unsigned long )sizeof(double);
sqlstm.sqhsts[0] = ( int )0;
sqlstm.sqindv[0] = ( short *)&since_ind;
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 *)&until;
sqlstm.sqhstl[1] = (unsigned long )sizeof(double);
sqlstm.sqhsts[1] = ( int )0;
sqlstm.sqindv[1] = ( short *)&until_ind;
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 *)det;
sqlstm.sqhstl[2] = (unsigned long )0;
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) goto errorfound;
}
oraSet->versDate[0]=(since_ind!=-1) ? (since+1) : 0.;
oraSet->versDate[1]=(until_ind!=-1) ? (until-1) : 1.e+12;
return 0;
notfound:
oraSet->versDate[0]=0.;
oraSet->versDate[1]=1.e+12;
return 0;
errorfound:
pConn->showSqlError("getAlignmentVersion");
oraSet->versDate[0]=-1;
oraSet->versDate[1]=-1;
return -1;
}
Int_t HDetParOra2Io::getDetectorId(const Char_t* detName) {
if (strlen(detName)==0) return -1;
char* dname;
int id;
dname=(Char_t*)detName;
{
struct sqlexd sqlstm;
sqlorat((void **)0, &sqlctx, &oraca);
sqlstm.sqlvsn = 13;
sqlstm.arrsiz = 5;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.stmt = "select detector_part_id into :b0 from hgeom.detector_part \
where detector_name=UPPER(:b1)";
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )132;
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 *)&id;
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 *)dname;
sqlstm.sqhstl[1] = (unsigned long )0;
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.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;
}
return id;
errorfound:
pConn->showSqlError("getDetectorId");
notfound:
return -1;
}
Int_t HDetParOra2Io::getGeomVersion(const Char_t* detName,HOra2GeomDetVersion* detVers) {
if (strlen(detName)==0||!detVers) return -1;
detVers->clearVersDate();
char* dname;
int id;
int vers;
double since;
double until;
dname=(Char_t*)detName;
{
struct sqlexd sqlstm;
sqlorat((void **)0, &sqlctx, &oraca);
sqlstm.sqlvsn = 13;
sqlstm.arrsiz = 5;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.stmt = "select det_part_id ,geom_vers ,hanadate.date_to_number(vali\
d_since) ,hanadate.date_to_number(valid_until) into :b0,:b1,:b2,:b3 from hgeo\
m.geom_setup_at_histdate_2 where detector_name=:b4";
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )155;
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 *)&id;
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 *)&vers;
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 *)&since;
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 *)&until;
sqlstm.sqhstl[3] = (unsigned long )sizeof(double);
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 *)dname;
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 notfound;
if (sqlca.sqlcode < 0) goto errorfound;
}
detVers->fill(id,vers,since,until);
return vers;
errorfound:
pConn->showSqlError("getGeomVersions(const Char_t*,HOra2GeomDetVersion*)");
notfound:
return -1;
}
Int_t HDetParOra2Io::getGeomVersion(Int_t detId,HOra2GeomDetVersion* detVers) {
if (detId<0||!detVers) return -1;
detVers->clearVersDate();
int id;
int vers;
double since;
double until;
id=detId;
;
{
struct sqlexd sqlstm;
sqlorat((void **)0, &sqlctx, &oraca);
sqlstm.sqlvsn = 13;
sqlstm.arrsiz = 5;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.stmt = "select geom_vers ,hanadate.date_to_number(valid_since) ,han\
adate.date_to_number(valid_until) into :b0,:b1,:b2 from hgeom.geom_setup_at_h\
istdate_2 where det_part_id=:b3";
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )190;
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 *)&id;
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) goto errorfound;
}
detVers->fill(vers,since,until);
return vers;
errorfound:
pConn->showSqlError("getGeomVersions(Int_t,HOra2GeomDetVersion*)");
notfound:
return -1;
}
Bool_t HDetParOra2Io::readIdealGeometry(TList* geomObjects,
HOra2GeomDetVersion* detVers) {
if (geomObjects==0||detVers==0) return kFALSE;
char* p_name;
int det_id;
int vers;
struct {
int p_id;
struct { unsigned short len; unsigned char arr[5]; } p_shape;
int p_vol_id;
int p_trans_id;
} vol;
struct {
short p_id_Ind;
short p_shape_Ind;
short p_vol_id_Ind;
short p_trans_id_Ind;
} vol_Ind;
Bool_t rc=kTRUE;
Int_t nTot=0, nVol=0, nTrans=0;
det_id=detVers->getDetectorId();
vers=detVers->getGeomVersion();
if (det_id<0||vers<=0) return kFALSE;
TListIter iter(geomObjects);
HOra2GeomObj* obj;
while((obj=(HOra2GeomObj*)iter.Next())) {
p_name=(Char_t*)obj->GetName();
{
struct sqlexd sqlstm;
sqlorat((void **)0, &sqlctx, &oraca);
sqlstm.sqlvsn = 13;
sqlstm.arrsiz = 5;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.stmt = sq0009;
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )221;
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.sqcmod = (unsigned int )0;
sqlstm.sqhstv[0] = (unsigned char *)&det_id;
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 *)p_name;
sqlstm.sqhstl[1] = (unsigned long )0;
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 *)&vers;
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.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;
}
{
struct sqlexd sqlstm;
sqlorat((void **)0, &sqlctx, &oraca);
sqlstm.sqlvsn = 13;
sqlstm.arrsiz = 5;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )248;
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.sqfoff = ( int )0;
sqlstm.sqfmod = (unsigned int )2;
sqlstm.sqhstv[0] = (unsigned char *)&vol.p_id;
sqlstm.sqhstl[0] = (unsigned long )sizeof(int);
sqlstm.sqhsts[0] = ( int )0;
sqlstm.sqindv[0] = ( short *)&vol_Ind.p_id_Ind;
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 *)&vol.p_shape;
sqlstm.sqhstl[1] = (unsigned long )7;
sqlstm.sqhsts[1] = ( int )0;
sqlstm.sqindv[1] = ( short *)&vol_Ind.p_shape_Ind;
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 *)&vol.p_vol_id;
sqlstm.sqhstl[2] = (unsigned long )sizeof(int);
sqlstm.sqhsts[2] = ( int )0;
sqlstm.sqindv[2] = ( short *)&vol_Ind.p_vol_id_Ind;
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 *)&vol.p_trans_id;
sqlstm.sqhstl[3] = (unsigned long )sizeof(int);
sqlstm.sqhsts[3] = ( int )0;
sqlstm.sqindv[3] = ( short *)&vol_Ind.p_trans_id_Ind;
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 < 0) goto errorfound;
}
nTot++;
if (vol_Ind.p_id_Ind!=-1) obj->objId=vol.p_id;
if (obj->volType!='M') {
nVol++;
obj->volId=vol.p_vol_id;
if (vol_Ind.p_shape_Ind!=-1) {
vol.p_shape.arr[vol.p_shape.len]='\0';
HGeomVolume* node=(HGeomVolume*)(obj->pObj);
if (vol.p_shape.len==3) vol.p_shape.arr[3]=' ';
vol.p_shape.arr[4]='\0';
if (node) node->setShape(((Char_t*)(vol.p_shape.arr)));
} else rc=kFALSE;
}
if (vol_Ind.p_trans_id_Ind!=-1) {
obj->transId=vol.p_trans_id;
nTrans++;
}
}
if (nTot>0) {
{
struct sqlexd sqlstm;
sqlorat((void **)0, &sqlctx, &oraca);
sqlstm.sqlvsn = 13;
sqlstm.arrsiz = 5;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )279;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
sqlstm.sqlety = (unsigned short)4352;
sqlstm.occurs = (unsigned int )0;
sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
if (sqlca.sqlcode < 0) goto errorfound;
}
if (nVol>0) rc=readGeomPoints(geomObjects);
if (rc&&nTrans>0)rc=readGeomTransform(geomObjects);
} else {
rc=kFALSE;
Error("readIdealGeometry","No volumes found in database");
}
return rc;
errorfound:
pConn->showSqlError("readIdealGeometry");
if (nTot>0)
{
struct sqlexd sqlstm;
sqlorat((void **)0, &sqlctx, &oraca);
sqlstm.sqlvsn = 13;
sqlstm.arrsiz = 5;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )294;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
sqlstm.sqlety = (unsigned short)4352;
sqlstm.occurs = (unsigned int )0;
sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
if (sqlca.sqlcode < 0) goto errorfound;
}
return kFALSE;
}
Bool_t HDetParOra2Io::readGeomPoints(TList* geomObjects) {
int id;
struct {
int c[NMAX_POINTS];
double x[NMAX_POINTS];
double y[NMAX_POINTS];
double z[NMAX_POINTS];
} p3d;
Bool_t allFound=kTRUE;
TListIter iter(geomObjects);
HOra2GeomObj* obj;
while((obj=(HOra2GeomObj*)iter.Next())&&allFound) {
if (obj->volType!='M'&&obj->volType!='I') {
HGeomVolume* node=(HGeomVolume*)obj->pObj;
id=obj->volId;
if (id>0) {
{
struct sqlexd sqlstm;
sqlorat((void **)0, &sqlctx, &oraca);
sqlstm.sqlvsn = 13;
sqlstm.arrsiz = 5;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.stmt = sq0010;
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )309;
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.sqcmod = (unsigned int )0;
sqlstm.sqhstv[0] = (unsigned char *)&id;
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.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;
}
{
struct sqlexd sqlstm;
sqlorat((void **)0, &sqlctx, &oraca);
sqlstm.sqlvsn = 13;
sqlstm.arrsiz = 5;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.iters = (unsigned int )100;
sqlstm.offset = (unsigned int )328;
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.sqfoff = ( int )0;
sqlstm.sqfmod = (unsigned int )2;
sqlstm.sqhstv[0] = (unsigned char *)p3d.c;
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 *)p3d.x;
sqlstm.sqhstl[1] = (unsigned long )sizeof(double);
sqlstm.sqhsts[1] = ( int )sizeof(double);
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 *)p3d.y;
sqlstm.sqhstl[2] = (unsigned long )sizeof(double);
sqlstm.sqhsts[2] = ( int )sizeof(double);
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 *)p3d.z;
sqlstm.sqhstl[3] = (unsigned long )sizeof(double);
sqlstm.sqhsts[3] = ( int )sizeof(double);
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.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;
}
Int_t nPoints=sqlca.sqlerrd[2];
if (nPoints<=0) allFound=kFALSE;
else {
node->createPoints(nPoints);
for(Int_t i=0;i<nPoints;i++) {
node->setPoint((p3d.c[i]-1),p3d.x[i],p3d.y[i],p3d.z[i]);
}
}
} else allFound=kFALSE;
}
}
{
struct sqlexd sqlstm;
sqlorat((void **)0, &sqlctx, &oraca);
sqlstm.sqlvsn = 13;
sqlstm.arrsiz = 5;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )359;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
sqlstm.sqlety = (unsigned short)4352;
sqlstm.occurs = (unsigned int )0;
sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
if (sqlca.sqlcode < 0) goto errorfound;
}
return allFound;
errorfound:
{
struct sqlexd sqlstm;
sqlorat((void **)0, &sqlctx, &oraca);
sqlstm.sqlvsn = 13;
sqlstm.arrsiz = 5;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )374;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
sqlstm.sqlety = (unsigned short)4352;
sqlstm.occurs = (unsigned int )0;
sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
if (sqlca.sqlcode < 0) goto errorfound;
}
pConn->showSqlError("readGeomPoints");
return kFALSE;
}
Bool_t HDetParOra2Io::readGeomTransform(TList* geomObjects) {
int id;
struct {
struct { unsigned short len; unsigned char arr[11]; } tref;
double tx;
double ty;
double tz;
double r11;
double r12;
double r13;
double r21;
double r22;
double r23;
double r31;
double r32;
double r33;
} tr;
struct {
short tref_Ind;
short tx_Ind;
short ty_Ind;
short tz_Ind;
short r11_Ind;
short r12_Ind;
short r13_Ind;
short r21_Ind;
short r22_Ind;
short r23_Ind;
short r31_Ind;
short r32_Ind;
short r33_Ind;
} tr_Ind;
Bool_t rc=kTRUE;
Double_t t[3];
Double_t r[9];
TIter next(geomObjects);
HOra2GeomObj* obj;
while ((obj=(HOra2GeomObj*)next())&&rc) {
id=obj->transId;
if (id>0) {
{
struct sqlexd sqlstm;
sqlorat((void **)0, &sqlctx, &oraca);
sqlstm.sqlvsn = 13;
sqlstm.arrsiz = 5;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.stmt = sq0011;
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )389;
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.sqcmod = (unsigned int )0;
sqlstm.sqhstv[0] = (unsigned char *)&id;
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.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;
}
{
struct sqlexd sqlstm;
sqlorat((void **)0, &sqlctx, &oraca);
sqlstm.sqlvsn = 13;
sqlstm.arrsiz = 13;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )408;
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.sqfoff = ( int )0;
sqlstm.sqfmod = (unsigned int )2;
sqlstm.sqhstv[0] = (unsigned char *)&tr.tref;
sqlstm.sqhstl[0] = (unsigned long )13;
sqlstm.sqhsts[0] = ( int )0;
sqlstm.sqindv[0] = ( short *)&tr_Ind.tref_Ind;
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 *)&tr.tx;
sqlstm.sqhstl[1] = (unsigned long )sizeof(double);
sqlstm.sqhsts[1] = ( int )0;
sqlstm.sqindv[1] = ( short *)&tr_Ind.tx_Ind;
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 *)&tr.ty;
sqlstm.sqhstl[2] = (unsigned long )sizeof(double);
sqlstm.sqhsts[2] = ( int )0;
sqlstm.sqindv[2] = ( short *)&tr_Ind.ty_Ind;
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 *)&tr.tz;
sqlstm.sqhstl[3] = (unsigned long )sizeof(double);
sqlstm.sqhsts[3] = ( int )0;
sqlstm.sqindv[3] = ( short *)&tr_Ind.tz_Ind;
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 *)&tr.r11;
sqlstm.sqhstl[4] = (unsigned long )sizeof(double);
sqlstm.sqhsts[4] = ( int )0;
sqlstm.sqindv[4] = ( short *)&tr_Ind.r11_Ind;
sqlstm.sqinds[4] = ( int )0;
sqlstm.sqharm[4] = (unsigned long )0;
sqlstm.sqadto[4] = (unsigned short )0;
sqlstm.sqtdso[4] = (unsigned short )0;
sqlstm.sqhstv[5] = (unsigned char *)&tr.r12;
sqlstm.sqhstl[5] = (unsigned long )sizeof(double);
sqlstm.sqhsts[5] = ( int )0;
sqlstm.sqindv[5] = ( short *)&tr_Ind.r12_Ind;
sqlstm.sqinds[5] = ( int )0;
sqlstm.sqharm[5] = (unsigned long )0;
sqlstm.sqadto[5] = (unsigned short )0;
sqlstm.sqtdso[5] = (unsigned short )0;
sqlstm.sqhstv[6] = (unsigned char *)&tr.r13;
sqlstm.sqhstl[6] = (unsigned long )sizeof(double);
sqlstm.sqhsts[6] = ( int )0;
sqlstm.sqindv[6] = ( short *)&tr_Ind.r13_Ind;
sqlstm.sqinds[6] = ( int )0;
sqlstm.sqharm[6] = (unsigned long )0;
sqlstm.sqadto[6] = (unsigned short )0;
sqlstm.sqtdso[6] = (unsigned short )0;
sqlstm.sqhstv[7] = (unsigned char *)&tr.r21;
sqlstm.sqhstl[7] = (unsigned long )sizeof(double);
sqlstm.sqhsts[7] = ( int )0;
sqlstm.sqindv[7] = ( short *)&tr_Ind.r21_Ind;
sqlstm.sqinds[7] = ( int )0;
sqlstm.sqharm[7] = (unsigned long )0;
sqlstm.sqadto[7] = (unsigned short )0;
sqlstm.sqtdso[7] = (unsigned short )0;
sqlstm.sqhstv[8] = (unsigned char *)&tr.r22;
sqlstm.sqhstl[8] = (unsigned long )sizeof(double);
sqlstm.sqhsts[8] = ( int )0;
sqlstm.sqindv[8] = ( short *)&tr_Ind.r22_Ind;
sqlstm.sqinds[8] = ( int )0;
sqlstm.sqharm[8] = (unsigned long )0;
sqlstm.sqadto[8] = (unsigned short )0;
sqlstm.sqtdso[8] = (unsigned short )0;
sqlstm.sqhstv[9] = (unsigned char *)&tr.r23;
sqlstm.sqhstl[9] = (unsigned long )sizeof(double);
sqlstm.sqhsts[9] = ( int )0;
sqlstm.sqindv[9] = ( short *)&tr_Ind.r23_Ind;
sqlstm.sqinds[9] = ( int )0;
sqlstm.sqharm[9] = (unsigned long )0;
sqlstm.sqadto[9] = (unsigned short )0;
sqlstm.sqtdso[9] = (unsigned short )0;
sqlstm.sqhstv[10] = (unsigned char *)&tr.r31;
sqlstm.sqhstl[10] = (unsigned long )sizeof(double);
sqlstm.sqhsts[10] = ( int )0;
sqlstm.sqindv[10] = ( short *)&tr_Ind.r31_Ind;
sqlstm.sqinds[10] = ( int )0;
sqlstm.sqharm[10] = (unsigned long )0;
sqlstm.sqadto[10] = (unsigned short )0;
sqlstm.sqtdso[10] = (unsigned short )0;
sqlstm.sqhstv[11] = (unsigned char *)&tr.r32;
sqlstm.sqhstl[11] = (unsigned long )sizeof(double);
sqlstm.sqhsts[11] = ( int )0;
sqlstm.sqindv[11] = ( short *)&tr_Ind.r32_Ind;
sqlstm.sqinds[11] = ( int )0;
sqlstm.sqharm[11] = (unsigned long )0;
sqlstm.sqadto[11] = (unsigned short )0;
sqlstm.sqtdso[11] = (unsigned short )0;
sqlstm.sqhstv[12] = (unsigned char *)&tr.r33;
sqlstm.sqhstl[12] = (unsigned long )sizeof(double);
sqlstm.sqhsts[12] = ( int )0;
sqlstm.sqindv[12] = ( short *)&tr_Ind.r33_Ind;
sqlstm.sqinds[12] = ( int )0;
sqlstm.sqharm[12] = (unsigned long )0;
sqlstm.sqadto[12] = (unsigned short )0;
sqlstm.sqtdso[12] = (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 (tr_Ind.tref_Ind==-1) rc=kFALSE;
else {
tr.tref.arr[tr.tref.len]='\0';
Char_t* refTransName=(Char_t*)(tr.tref.arr);
t[0]=tr.tx;
t[1]=tr.ty;
t[2]=tr.tz;
r[0]=tr.r11;
r[1]=tr.r12;
r[2]=tr.r13;
r[3]=tr.r21;
r[4]=tr.r22;
r[5]=tr.r23;
r[6]=tr.r31;
r[7]=tr.r32;
r[8]=tr.r33;
if (obj->volType=='M') {
if (strcmp(refTransName,"CAVE")==0) {
HModGeomPar* pMod=(HModGeomPar*)(obj->pObj);
HGeomTransform& tp=pMod->getLabTransform();
tp.setTransVector(t);
tp.setRotMatrix(r);
} else rc=kFALSE;
} else {
HGeomVolume* vol=(HGeomVolume*)(obj->pObj);
HGeomTransform& tp=vol->getTransform();
tp.setTransVector(t);
tp.setRotMatrix(r);
if (obj->refObj) {
const Char_t* mo=obj->refObj->GetName();
vol->setMother(mo);
if (strcmp(refTransName,mo)!=0) {
HGeomTransform& tm=((HGeomVolume*)(obj->refObj))->getTransform();
tp.transTo(tm);
}
} else {
if (strcmp(refTransName,"CAVE")==0) vol->setMother("CAVE");
else rc=kFALSE;
}
}
}
}
}
{
struct sqlexd sqlstm;
sqlorat((void **)0, &sqlctx, &oraca);
sqlstm.sqlvsn = 13;
sqlstm.arrsiz = 13;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )475;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
sqlstm.sqlety = (unsigned short)4352;
sqlstm.occurs = (unsigned int )0;
sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
if (sqlca.sqlcode < 0) goto errorfound;
}
return rc;
errorfound:
{
struct sqlexd sqlstm;
sqlorat((void **)0, &sqlctx, &oraca);
sqlstm.sqlvsn = 13;
sqlstm.arrsiz = 13;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )490;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
sqlstm.sqlety = (unsigned short)4352;
sqlstm.occurs = (unsigned int )0;
sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
if (sqlca.sqlcode < 0) goto errorfound;
}
pConn->showSqlError("readGeomTransform");
return kFALSE;
}
Int_t HDetParOra2Io::readAlignmentTransform(TList* geomObjects,Int_t version) {
int id;
int vers;
struct {
double r11;
double r12;
double r13;
double r21;
double r22;
double r23;
double r31;
double r32;
double r33;
double t1;
double t2;
double t3;
} tr;
vers=(Int_t)version;
TIter next(geomObjects);
HOra2GeomObj* o;
Double_t r[9];
Double_t t[3];
Int_t n=0;
while ((o=(HOra2GeomObj*)next())) {
if ((o->volType=='M'||o->volType=='T') && (id=(Int_t)o->objId)!=-1) {
{
struct sqlexd sqlstm;
sqlorat((void **)0, &sqlctx, &oraca);
sqlstm.sqlvsn = 13;
sqlstm.arrsiz = 13;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.stmt = sq0012;
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )505;
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.sqcmod = (unsigned int )0;
sqlstm.sqhstv[0] = (unsigned char *)&id;
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 *)&vers;
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.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("readAlignmentTransform");
}
{
struct sqlexd sqlstm;
sqlorat((void **)0, &sqlctx, &oraca);
sqlstm.sqlvsn = 13;
sqlstm.arrsiz = 13;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )528;
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.sqfoff = ( int )0;
sqlstm.sqfmod = (unsigned int )2;
sqlstm.sqhstv[0] = (unsigned char *)&tr.r11;
sqlstm.sqhstl[0] = (unsigned long )sizeof(double);
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 *)&tr.r12;
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 *)&tr.r13;
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 *)&tr.r21;
sqlstm.sqhstl[3] = (unsigned long )sizeof(double);
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 *)&tr.r22;
sqlstm.sqhstl[4] = (unsigned long )sizeof(double);
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.sqhstv[5] = (unsigned char *)&tr.r23;
sqlstm.sqhstl[5] = (unsigned long )sizeof(double);
sqlstm.sqhsts[5] = ( int )0;
sqlstm.sqindv[5] = ( short *)0;
sqlstm.sqinds[5] = ( int )0;
sqlstm.sqharm[5] = (unsigned long )0;
sqlstm.sqadto[5] = (unsigned short )0;
sqlstm.sqtdso[5] = (unsigned short )0;
sqlstm.sqhstv[6] = (unsigned char *)&tr.r31;
sqlstm.sqhstl[6] = (unsigned long )sizeof(double);
sqlstm.sqhsts[6] = ( int )0;
sqlstm.sqindv[6] = ( short *)0;
sqlstm.sqinds[6] = ( int )0;
sqlstm.sqharm[6] = (unsigned long )0;
sqlstm.sqadto[6] = (unsigned short )0;
sqlstm.sqtdso[6] = (unsigned short )0;
sqlstm.sqhstv[7] = (unsigned char *)&tr.r32;
sqlstm.sqhstl[7] = (unsigned long )sizeof(double);
sqlstm.sqhsts[7] = ( int )0;
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.sqhstv[8] = (unsigned char *)&tr.r33;
sqlstm.sqhstl[8] = (unsigned long )sizeof(double);
sqlstm.sqhsts[8] = ( int )0;
sqlstm.sqindv[8] = ( short *)0;
sqlstm.sqinds[8] = ( int )0;
sqlstm.sqharm[8] = (unsigned long )0;
sqlstm.sqadto[8] = (unsigned short )0;
sqlstm.sqtdso[8] = (unsigned short )0;
sqlstm.sqhstv[9] = (unsigned char *)&tr.t1;
sqlstm.sqhstl[9] = (unsigned long )sizeof(double);
sqlstm.sqhsts[9] = ( int )0;
sqlstm.sqindv[9] = ( short *)0;
sqlstm.sqinds[9] = ( int )0;
sqlstm.sqharm[9] = (unsigned long )0;
sqlstm.sqadto[9] = (unsigned short )0;
sqlstm.sqtdso[9] = (unsigned short )0;
sqlstm.sqhstv[10] = (unsigned char *)&tr.t2;
sqlstm.sqhstl[10] = (unsigned long )sizeof(double);
sqlstm.sqhsts[10] = ( int )0;
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.sqhstv[11] = (unsigned char *)&tr.t3;
sqlstm.sqhstl[11] = (unsigned long )sizeof(double);
sqlstm.sqhsts[11] = ( int )0;
sqlstm.sqindv[11] = ( short *)0;
sqlstm.sqinds[11] = ( int )0;
sqlstm.sqharm[11] = (unsigned long )0;
sqlstm.sqadto[11] = (unsigned short )0;
sqlstm.sqtdso[11] = (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("readAlignmentTransform");
}
if (sqlca.sqlerrd[2]==1) {
r[0]=tr.r11;
r[1]=tr.r12;
r[2]=tr.r13;
r[3]=tr.r21;
r[4]=tr.r22;
r[5]=tr.r23;
r[6]=tr.r31;
r[7]=tr.r32;
r[8]=tr.r33;
t[0]=tr.t1;
t[1]=tr.t2;
t[2]=tr.t3;
if (o->volType=='M') {
HModGeomPar* pMod=(HModGeomPar*)(o->pObj);
HGeomTransform& tp=pMod->getLabTransform();
tp.setTransVector(t);
tp.setRotMatrix(r);
} else {
HGeomVolume* vol=(HGeomVolume*)(o->pObj);
HGeomTransform& tp=vol->getTransform();
tp.setTransVector(t);
tp.setRotMatrix(r);
}
n++;
}
}
}
{
struct sqlexd sqlstm;
sqlorat((void **)0, &sqlctx, &oraca);
sqlstm.sqlvsn = 13;
sqlstm.arrsiz = 13;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )591;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
sqlstm.sqlety = (unsigned short)4352;
sqlstm.occurs = (unsigned int )0;
sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
if (sqlca.sqlcode < 0) showSqlError("readAlignmentTransform");
}
return n;
}
Int_t HDetParOra2Io:: writeAlignment(HDetGeomPar* pPar) {
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->getNumModules();i++) {
HModGeomPar* pMod=pPar->getModule(i);
if (!pMod) continue;
if ((rc=writeTransform(version,pMod->GetName(),pMod->getLabTransform()))) n++;
else break;
}
if (rc && n>0) {
cout<<pPar->GetName()<<" alignment: "<<n<<" rows inserted\n";
commit();
}
pPar->setChanged(kFALSE);
return version;
}
Int_t HDetParOra2Io::getAlignmentOutputVersion(HParSet* pPar,const Char_t* context) {
Int_t geomContext=getContextId("HDetGeomPar",context);
if (geomContext==-1) return -1;
cout<<"--------------- Storage of alignment ---------------\n";
if (strcmp(getExpLocation(),"VIRTUAL")==0) {
Error("getAlignmentOutputVersion",
"No alignment for simulation runs");
return -1;
}
if (strlen(pPar->getAuthor())==0) {
Error("getAlignmentOutputVersion",
"author of parameters not defined");
return -1;
}
if (strlen(pPar->getDescription())==0) {
Error("getAlignmentOutputVersion",
"description of parameters not defined");
return -1;
}
int vers=-1;
int contextid;
int run;
char* creator;
char* descript;
contextid=geomContext;
run=actRunId;
creator=(Char_t*)pPar->getAuthor();
descript=(Char_t*)pPar->getDescription();
{
struct sqlexd sqlstm;
sqlorat((void **)0, &sqlctx, &oraca);
sqlstm.sqlvsn = 13;
sqlstm.arrsiz = 13;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.stmt = "begin SELECT hgeom . ana_par_query . next_version INTO :ver\
s FROM DUAL ; INSERT INTO hgeom . alignment2_vers ( vers_id , orig_context_id \
, run_id , author , description ) VALUES ( :vers , :contextid , :run , :creato\
r , :descript ) ; END ;";
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )606;
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 *)&contextid;
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 aligment parameters created: "<<vers<<endl;
return vers;
not_found:
showSqlError("getAlignmentOutputVersion");
rollback();
return vers;
}
Bool_t HDetParOra2Io:: writeTransform(Int_t version, const Char_t* name, const HGeomTransform& transform) {
int vers;
char oname[11];
double r11;
double r12;
double r13;
double r21;
double r22;
double r23;
double r31;
double r32;
double r33;
double p1;
double p2;
double p3;
vers=(Int_t)version;
strcpy(oname,name);
const HGeomRotation tr=transform.getRotMatrix();
r11=(Double_t)tr(0);
r12=(Double_t)tr(1);
r13=(Double_t)tr(2);
r21=(Double_t)tr(3);
r22=(Double_t)tr(4);
r23=(Double_t)tr(5);
r31=(Double_t)tr(6);
r32=(Double_t)tr(7);
r33=(Double_t)tr(8);
const HGeomVector tv=transform.getTransVector();
p1=(Double_t)tv(0);
p2=(Double_t)tv(1);
p3=(Double_t)tv(2);
{
struct sqlexd sqlstm;
sqlorat((void **)0, &sqlctx, &oraca);
sqlstm.sqlvsn = 13;
sqlstm.arrsiz = 14;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.stmt = "insert into hgeom.alignment2_data (geom_obj_id,vers_id,r11,\
r12,r13,r21,r22,r23,r31,r32,r33,px,py,pz) values (hgeom.ana_par_query.geom_obj\
_id(:b0),:b1,round(:b2,7),round(:b3,7),round(:b4,7),round(:b5,7),round(:b6,7),\
round(:b7,7),round(:b8,7),round(:b9,7),round(:b10,7),round(:b11,3),round(:b12,\
3),round(:b13,3))";
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )641;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
sqlstm.sqlety = (unsigned short)4352;
sqlstm.occurs = (unsigned int )0;
sqlstm.sqhstv[0] = (unsigned char *)oname;
sqlstm.sqhstl[0] = (unsigned long )11;
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 *)&vers;
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 *)&r11;
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 *)&r12;
sqlstm.sqhstl[3] = (unsigned long )sizeof(double);
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 *)&r13;
sqlstm.sqhstl[4] = (unsigned long )sizeof(double);
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.sqhstv[5] = (unsigned char *)&r21;
sqlstm.sqhstl[5] = (unsigned long )sizeof(double);
sqlstm.sqhsts[5] = ( int )0;
sqlstm.sqindv[5] = ( short *)0;
sqlstm.sqinds[5] = ( int )0;
sqlstm.sqharm[5] = (unsigned long )0;
sqlstm.sqadto[5] = (unsigned short )0;
sqlstm.sqtdso[5] = (unsigned short )0;
sqlstm.sqhstv[6] = (unsigned char *)&r22;
sqlstm.sqhstl[6] = (unsigned long )sizeof(double);
sqlstm.sqhsts[6] = ( int )0;
sqlstm.sqindv[6] = ( short *)0;
sqlstm.sqinds[6] = ( int )0;
sqlstm.sqharm[6] = (unsigned long )0;
sqlstm.sqadto[6] = (unsigned short )0;
sqlstm.sqtdso[6] = (unsigned short )0;
sqlstm.sqhstv[7] = (unsigned char *)&r23;
sqlstm.sqhstl[7] = (unsigned long )sizeof(double);
sqlstm.sqhsts[7] = ( int )0;
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.sqhstv[8] = (unsigned char *)&r31;
sqlstm.sqhstl[8] = (unsigned long )sizeof(double);
sqlstm.sqhsts[8] = ( int )0;
sqlstm.sqindv[8] = ( short *)0;
sqlstm.sqinds[8] = ( int )0;
sqlstm.sqharm[8] = (unsigned long )0;
sqlstm.sqadto[8] = (unsigned short )0;
sqlstm.sqtdso[8] = (unsigned short )0;
sqlstm.sqhstv[9] = (unsigned char *)&r32;
sqlstm.sqhstl[9] = (unsigned long )sizeof(double);
sqlstm.sqhsts[9] = ( int )0;
sqlstm.sqindv[9] = ( short *)0;
sqlstm.sqinds[9] = ( int )0;
sqlstm.sqharm[9] = (unsigned long )0;
sqlstm.sqadto[9] = (unsigned short )0;
sqlstm.sqtdso[9] = (unsigned short )0;
sqlstm.sqhstv[10] = (unsigned char *)&r33;
sqlstm.sqhstl[10] = (unsigned long )sizeof(double);
sqlstm.sqhsts[10] = ( int )0;
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.sqhstv[11] = (unsigned char *)&p1;
sqlstm.sqhstl[11] = (unsigned long )sizeof(double);
sqlstm.sqhsts[11] = ( int )0;
sqlstm.sqindv[11] = ( short *)0;
sqlstm.sqinds[11] = ( int )0;
sqlstm.sqharm[11] = (unsigned long )0;
sqlstm.sqadto[11] = (unsigned short )0;
sqlstm.sqtdso[11] = (unsigned short )0;
sqlstm.sqhstv[12] = (unsigned char *)&p2;
sqlstm.sqhstl[12] = (unsigned long )sizeof(double);
sqlstm.sqhsts[12] = ( int )0;
sqlstm.sqindv[12] = ( short *)0;
sqlstm.sqinds[12] = ( int )0;
sqlstm.sqharm[12] = (unsigned long )0;
sqlstm.sqadto[12] = (unsigned short )0;
sqlstm.sqtdso[12] = (unsigned short )0;
sqlstm.sqhstv[13] = (unsigned char *)&p3;
sqlstm.sqhstl[13] = (unsigned long )sizeof(double);
sqlstm.sqhsts[13] = ( int )0;
sqlstm.sqindv[13] = ( short *)0;
sqlstm.sqinds[13] = ( int )0;
sqlstm.sqharm[13] = (unsigned long )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 not_found;
if (sqlca.sqlcode < 0) goto not_found;
}
return kTRUE;
not_found:
showSqlError("writeTransform(...)");
rollback();
return kFALSE;
}