21 from MuonFixedIdUnpack
import *
25 if caller.debug ==
True:
27 if isinstance(exc,cx_Oracle.Error):
29 if isinstance(error,str):
32 self.
args += error.message,
34 if isinstance(exc,str):
37 if isinstance(exc,Exception):
53 service_re = re.compile(
r'\(SERVICE_NAME\s*\=\s*([A-Za-z.]+)\)+')
55 unixts = re.compile(
'[0-9]{10,11}')
57 def __init__(self,head_id=None,impl=None,lr=None,ur=None,lt=None,ut=None,luminosity=None,rootfile=None,statusflag=None):
66 self.
dbtime = {
'wtime': 0,
'ptime': 0 }
68 self.
timer = {
'wtime':0,
'ptime': 0 }
95 lt =
"19700101 00:00:00"
97 ut =
"20690721 00:37:33"
103 lt = lt.replace(
"-",
"")
104 lowtime_converted = time.strptime(lt,
"%Y%m%d %H:%M:%S")
105 self.
lowtime = calendar.timegm(lowtime_converted)
112 ut = ut.replace(
"-",
"")
113 uptime_converted = time.strptime(ut,
"%Y%m%d %H:%M:%S")
114 self.
uptime = calendar.timegm(uptime_converted)
117 if luminosity ==
None:
127 if statusflag ==
None:
166 self.
setdb(CalibDbInfo.calibdb)
184 if self.
dconn !=
None:
185 if self.
debug ==
True:
186 print(
"Closing calibration database connection")
189 if self.
debug ==
True:
190 print(
"Closing metadata database connection")
193 except cx_Oracle.InterfaceError
as exc:
196 if exc ==
'not connected':
201 if self.
debug ==
True:
202 traceback.print_exc()
207 dblist =
'%-10s %-28s %-28s \n' % (
"ID",
"SERVICE",
"SCHEMA")
208 dblist +=
'---------------------------------------------------------------\n'
209 for ldb
in CalibDbInfo.databases.keys():
210 if ldb == CalibDbInfo.calibdb:
211 isdefault =
"(Default)"
214 if ldb
not in CalibDbInfo.db.keys():
217 schema = CalibDbInfo.db[ldb]
218 dblist +=
"%-10s %-28s %-28s %s \n" % (ldb,CalibData.service_re.search(CalibDbInfo.databases[ldb]).
group(1),schema,isdefault)
222 if dbid
in CalibDbInfo.databases:
230 raise Exception(
"SERVICE_NAME not found in databases[%s]" % dbid)
232 raise Exception(
"Tried to set CalibData object to unknown database %s" % (dbid))
236 print (output +
'\n')
240 required = dict( (name,getattr(self,name))
for name
in checkvars)
241 for varname,var
in required.items():
247 var = {
'write':
'dbw',
'read':
'dbr' }
250 passattr = var[access] +
'_password'
251 proxyattr = var[access] +
'_proxy'
252 obj = getattr(CalibDbInfo,attr)
253 passobj = getattr(CalibDbInfo,passattr)
254 proxyobj = getattr(CalibDbInfo,proxyattr)
255 rval[
'password'] = passobj[self.
database]
257 if schema ==
'meta' or (schema ==
'data' and access ==
'read'):
260 rval[
'user'] +=
'[' + proxyobj[self.
database] +
']'
285 def connect(self,access='read',schema='meta'):
288 userstring = userinfo[
'user']
289 userpass = userinfo[
'password']
290 cstring = userstring +
"/" + userpass +
"@" + self.
tnsname
292 dbname = CalibDbInfo.db[self.
database]
if schema ==
'meta' else 'queried data schema'
294 dbgstring =
'%s %s connection to %s requested - doing nothing and keeping existing open' % (access,schema,dbname)
295 dbgstring2 =
'New connection required - closing %s schema database connection' % schema
296 dbgstring3 =
'Opening connection with connection information: %s' % cstring
299 if self.
mconn !=
None:
307 self.
mconn = cx_Oracle.connect(cstring)
313 elif schema ==
'data':
320 if self.
dconn !=
None:
328 self.
dconn = cx_Oracle.connect(cstring)
332 except Exception
as exc:
333 output =
"There was an error connecting to the database "
334 if self.
mschema !=
None and schema ==
"meta":
335 output +=
"Schema: %s" % self.
mschema
336 if self.
dschema !=
None and schema ==
"data":
337 output +=
"Schema: %s" % self.
dschema
339 if isinstance(exc,cx_Oracle.Error):
341 output += error.message
342 elif isinstance(exc,KeyError):
343 output +=
"There is configuration missing for database identifier '%s' - check CalibDbInfo.py" % self.
database
345 output += exc.args[0]
351 schema_sql = self.
mschema +
'.MDT_DATA_SCHEMA'
352 sql =
"select WRITER_ACCOUNT,SCHEMA_NAME from %s where ACTIVE = 1 " % (schema_sql)
355 self.
dbgout(
"SQL in set_active_db: %s" % sql)
357 except Exception
as exc:
360 result = self.
mcursor.fetchone()
368 self.
timer[
'wtime'] = time.time()
369 self.
timer[
'ptime'] = time.clock()
373 raise Exception(
"Called timestop without calling timestart")
375 welap = time.time() - self.
timer[
'wtime']
376 pelap = time.clock() - self.
timer[
'ptime']
377 self.
dbtime[
'wtime'] += welap
378 self.
dbtime[
'ptime'] += pelap
387 if self.
limit ==
True:
388 sql_del_limit =
" AND ROWNUM < %s" % (self.
maxops + 1)
392 esql = sql + sql_del_limit
393 self.
dbgout(
"SQL executed in exec_delete: %s" % esql)
398 rowcount = self.
dcursor.rowcount
399 elif ctype ==
"meta":
403 rowcount = self.
mcursor.rowcount
418 elif ctype ==
"meta":
430 print (
"Ready to commit %s operations" % self.
opcount)
431 confirm = raw_input(
"Enter 'y' or 'yes' if you wish to continue with operation: ")
432 if confirm
not in (
"y",
"yes",
"Y"):
433 raise Exception(
"User cancelled operation")
447 if self.
dconn !=
None:
457 except Exception
as exc:
462 if self.
mconn !=
None:
468 if self.
dconn !=
None:
473 except cx_Oracle.InterfaceError
as exc:
475 if exc ==
'not open':
479 except Exception
as exc:
508 linkid = service + lb
510 dblink_sql =
"CREATE DATABASE LINK %s CONNECT TO %s identified by %s using '%s'" % (linkid, CalibDbInfo.dbr[srcdb],CalibDbInfo.dbr_password[srcdb],CalibDbInfo.databases[srcdb])
511 check_sql =
"SELECT DB_LINK from USER_DB_LINKS where lower(DB_LINK) like '%s%s'" % (linkid,
'%');
516 self.
dbgout (
"SQL in setup_dblink: %s" % check_sql)
521 self.
dbgout(
"SQL in setup_dblink: %s" % dblink_sql)
524 except Exception
as exc:
529 drop_sql =
"DROP DATABASE LINK %s" % self.
linkid
530 self.
dbgout(
"Deleting database link")
533 self.
dbgout(
"SQL in drop_dblink: %s" % drop_sql)
535 except Exception
as exc:
542 info +=
"Lower Run IOV: %s \n" % self.
lowrun
543 info +=
"Upper Run IOV: %s \n" % self.
uprun
545 info +=
"Rootfile: %s \n" % self.
rootfile
546 info +=
"Sitename: %s \n" % self.
sitename
548 info +=
"Status Flag: %s \n" % self.
statusflag
556 hardware_tubestring = mid.online_re.search(fullstring)
557 software_tubestring = mid.offline_re.search(fullstring)
558 numeric_tubestring = mid.numeric_re.search(fullstring)
560 if (hardware_tubestring):
561 return hardware_tubestring.group()
562 if (software_tubestring):
563 return software_tubestring.group()
564 if (numeric_tubestring):
566 datematch = re.compile(
r'(19|20)\d\d(0[1-9]|1[012])(0[1-9]|[12][0-9]|3[01])')
567 if not datematch.search(fullstring):
568 return numeric_tubestring.group()
574 exepath = sys.path[0] +
"/muonfixedid"
575 retval = subprocess.Popen([exepath,tube], stdout=subprocess.PIPE).stdout.read()
576 if "ERROR" in retval:
585 return mid.identifier
591 string =
"%s_%s_%s" % (mid.stationNameString(),mid.stationPhi(),mid.stationEta())
600 sql =
"select head.head_id, head.implementation, head.data_schema, sh.SCHEMA_NAME, head.lowrun,head.uprun,head.lowtime,head.uptime, head.luminosity, head.rootfile, head.site_name, head.insert_time, head.status_flag, sh.WRITER_ACCOUNT, sh.ACTIVE, sh.ARCHIVED, sh.ARCHIVE_CONNECTION_STRING from %s.MDT_HEAD head, %s.MDT_DATA_SCHEMA sh where head.DATA_SCHEMA = sh.SCHEMA_NAME AND " % (self.
mschema,self.
mschema)
602 sql +=
"head.HEAD_ID = %s " % self.
head_id
604 sql +=
"ORDER BY head.head_id DESC"
606 self.
dbgout(
"SQL from get_head_info: %s" % sql)
610 except Exception
as exc:
613 result = self.
mcursor.fetchone()
620 self.
uprun = result[5]
635 if result[16] ==
None:
650 if isinstance(dtobj,datetime.datetime):
651 return dtobj.strftime(
'%d-%b-%y %I.%M.%S.%f %p %z').
upper()
653 raise Exception(
"Not a datetime object")
655 def get_t0(self,tube_id=None,chamber_id=None):
658 sql =
"SELECT T.chamber, T.tube_id, T.P4, T.ADC_1, T.validflag, T.nhits_above_adc_cut, V.algo_flag,V.chisquare_1,V.P4_err,V.P5,V.P5_err,V.P0,C.P0_ERR,V.P6,V.p6_err, V.tube_grouping from"+self.
dschema +
".MDT_TUBE T, " + self.
dschema +
".MDT_TUBE_V V," + self.
dschema +
".MDT_TUBE_C C where T.head_id = :hid AND C.head_id = :hid AND V.head_id = :hid"
659 if chamber_id !=
None:
660 sql +=
" AND t.chamber = :cid AND C.tube_id IN (SELECT tube_id from %s.MDT_TUBE T WHERE T.chamber = :cid) AND V.tube_id IN (SELECT tube_id from %s.MDT_TUBE T WHERE T.chamber = :cid)"
662 sql +=
" AND T.tube_id = :tid AND C.tube_id = :tid AND V.tube_id = :tid"
664 self.
dbgout(
"SQL in get_tzero: %s" % sql)
668 except Exception
as exc:
672 for r
in self.cursor.fetchall():
678 sql =
"SELECT HEAD_ID, REGION_ID,CALIBFLAG,LOWRUN,UPRUN,HISTOGRAM,N_SEGS,AVER_ANGLE,DELTA_AVER_ANGLE,AVER_SPREAD,DELTA_AVER_SPREAD,CONVERGENCE,B_AVER,T_AVER,HV,CURR,GAS,VALIDFLAG,ALGO_FLAG,BINSFROM %s.MDT_RT" % (self.
dschema )
679 if chamber_id !=
None:
680 sql +=
" AND region_id = :rid"
683 except Exception
as exc:
686 for r
in self.cursor.fetchall():
687 self.rt[rowcount] = r
691 if not isinstance(sourceobj,CalibData):
692 raise Exception(
"Called %s without providing copy source CalibData object" % fn)
693 if sourceobj.mschema ==
None:
694 raise Exception(
"CalibData object passed to %s not initialized with get_head_info() method" % fn)
701 sql_exists =
"SELECT SCHEMA_NAME from %s.MDT_DATA_SCHEMA WHERE SCHEMA_NAME = '%s'" % (self.
mschema, self.
dschema)
705 self.
dbgout(
"SQL from write_data_schema: %s" % sql_exists)
712 raise Exception(self,
"Tried to write new MDT_DATA SCHEMA %s but SCHEMA_NAME exists" % self.
dschema)
715 except Exception
as e:
719 self.
dbgout(
"SQL from write_data_schema: %s" % sql_insert)
723 except Exception
as exc:
724 raise HeadInsertError(self,
"Unable to insert into MDT_DATA_SCHEMA: %s" % exc)
729 required = dict( (name,getattr(self,name))
for name
in [
'implementation',
'lowrun',
'uprun',
'lowtime',
'uptime',
'luminosity',
'rootfile',
'sitename' ])
730 for varname,var
in required.items():
732 raise HeadInsertError(self,
"Write head ID - %s was not set, cannot create new id" % varname)
735 raise HeadInsertError(self,
"Cannot insert new meta information into replica database because self.head_id is not set")
748 sql =
"INSERT INTO %s.MDT_HEAD(HEAD_ID,IMPLEMENTATION, LOWRUN, UPRUN, LOWTIME, UPTIME, LUMINOSITY, ROOTFILE, SITE_NAME, DATA_SCHEMA,INSERT_TIME,STATUS_FLAG) VALUES(%s,'%s',%s,%s,%s,%s,%s,'%s','%s'," % (self.
mschema, self.
head_id, self.
implementation, self.
lowrun, self.
uprun, self.
lowtime, self.
uptime, self.
luminosity, self.
rootfile,self.
sitename)
755 sql +=
"%s) RETURNING head_id,data_schema into :newid,:schema" % (self.
statusflag)
759 sql =
"UPDATE %s.MDT_HEAD SET IMPLEMENTATION='%s', LOWRUN=%s, UPRUN=%s, LOWTIME=%s, UPTIME=%s, LUMINOSITY=%s,ROOTFILE='%s',SITE_NAME='%s', INSERT_TIME = '%s', STATUS_FLAG=%s WHERE HEAD_ID=%s" % (self.
mschema, self.
implementation,self.
lowrun,self.
uprun,self.
lowtime,self.
uptime,self.
luminosity,self.
rootfile,self.
sitename,self.
insert_time,self.status_flag, self.
head_id)
762 self.
dbgout(
"SQL from write_headid: %s" % sql)
775 self.
dschema = schema.getvalue()
776 except Exception
as exc:
782 fromid = sourceobj.head_id
783 srcdb_id = sourceobj.database
787 self.
head_id = sourceobj.head_id
792 self.
lowrun = sourceobj.lowrun
793 self.
uprun = sourceobj.uprun
794 self.
lowtime = sourceobj.lowtime
795 self.
uptime = sourceobj.uptime
815 raise HeadInsertError(self,
"Destination is configured as 'replica' but got new head_id %s from insert when expecting id %s - cannot replicate head_id from source. Check your CalibDbInfo.py configuration." % (self.
head_id, sourceobj.head_id))
817 def copy_rt(self,sourceobj,chamber=None,ignore_missing=False):
820 fromid = sourceobj.head_id
821 srcdb_id = sourceobj.database
827 raise Exception(
"Cannot copy RT in same database without setting head_id for CalibData object")
831 id_select =
"head_id"
833 schema_sql =
"%s.MDT_RT" % sourceobj.dschema
834 schema_sql_map = schema_sql +
"_MAP"
837 schema_sql +=
"@%s" % self.
linkid
838 schema_sql_map +=
"@%s" % self.
linkid
840 sql_rt =
"INSERT INTO %s.MDT_RT (HEAD_ID, REGION_ID,CALIBFLAG,LOWRUN,UPRUN,HISTOGRAM,N_SEGS,AVER_ANGLE,DELTA_AVER_ANGLE,AVER_SPREAD,DELTA_AVER_SPREAD,CONVERGENCE,B_AVER,T_AVER,HV,CURR,GAS,VALIDFLAG,ALGO_FLAG,BINS) SELECT %s,REGION_ID,CALIBFLAG,LOWRUN,UPRUN,HISTOGRAM,N_SEGS,AVER_ANGLE,DELTA_AVER_ANGLE,AVER_SPREAD,DELTA_AVER_SPREAD,CONVERGENCE,B_AVER,T_AVER,HV,CURR,GAS,VALIDFLAG,ALGO_FLAG,BINS FROM %s WHERE HEAD_ID = %s" % (self.
dschema, id_select, schema_sql, fromid)
842 sql_rt_map =
"INSERT INTO %s.MDT_RT_MAP(HEAD_ID, REGION_ID,CALIBFLAG,POINT_NR,S,T,R) SELECT %s,REGION_ID,CALIBFLAG,POINT_NR,S,T,R FROM %s WHERE HEAD_ID = %s" % (self.
dschema, id_select, schema_sql_map, fromid)
846 chamber_sql =
" AND region_id = %s" % chamber_id
847 sql_rt += chamber_sql
848 sql_rt_map += chamber_sql
850 self.
dbgout(
"SQL in copy_rt: %s" % sql_rt_map)
853 self.
dbgout(
"SQL in copy_rt: %s" % sql_rt)
855 self.
dbgout(
"SQL in copy_rt: %s" % sql_rt_map)
857 if self.
dcursor.rowcount == 0
and ignore_missing ==
False:
858 raise DataCopyError(self,
"There is no RT data in the source head id")
859 except cx_Oracle.IntegrityError
as exc:
861 except HeadInsertError:
863 except Exception
as exc:
867 def copy_tzero(self,sourceobj=None,chamber=None,tube=None,ignore_missing=False):
871 fromid = sourceobj.head_id
872 srcdb_id = sourceobj.database
878 raise Exception(
"Cannot copy tzero in same database without setting head_id for CalibData object")
882 id_select =
"head_id"
884 schema_sql =
"%s.MDT_TUBE" % sourceobj.dschema
885 schema_sql_tv = schema_sql +
"_V"
886 schema_sql_tc = schema_sql +
"_C"
889 schema_sql +=
"@%s" % self.
linkid
890 schema_sql_tv +=
"@%s" % self.
linkid
891 schema_sql_tc +=
"@%s" % self.
linkid
893 mdt_tube_sql =
"INSERT INTO %s.MDT_TUBE SELECT tube_id,%s,chamber,calibflag,validflag,nhits,nhits_above_adc_cut,p4,adc_0,adc_1,adc_2,adc_3,insert_time FROM %s WHERE head_id = %s" % (self.
dschema,id_select,schema_sql,fromid)
895 mdt_tube_v_sql =
"INSERT INTO %s.MDT_TUBE_V (head_id,tube_id,calibflag, chisquare_1, chisquare_2, p0, p1, p2, p3, p5, p6, p7, p8, p9, p4_err, p5_err, p6_err, algo_flag, entries, tube_grouping) SELECT %s, tube_id,calibflag, chisquare_1, chisquare_2, p0, p1, p2, p3, p5, p6, p7, p8, p9, p4_err, p5_err, p6_err, algo_flag, entries, tube_grouping FROM %s WHERE head_id = %s" % (self.
dschema,id_select,schema_sql_tv,fromid)
897 mdt_tube_c_sql =
"INSERT INTO %s.MDT_TUBE_C (head_id, tube_id,calibflag, p0_err, p1_err, p2_err, p3_err, p7_err, p8_err, p9_err, cov_1, cov_2, cov_3, cov_4, adc_0_err, adc_1_err, adc_2_err, adc_3_err, adc_chisquare, adc_pedestal, adc_pedestal_width) SELECT %s,tube_id,calibflag, p0_err, p1_err, p2_err, p3_err, p7_err, p8_err, p9_err, cov_1, cov_2, cov_3, cov_4, adc_0_err, adc_1_err, adc_2_err, adc_3_err, adc_chisquare, adc_pedestal, adc_pedestal_width FROM %s WHERE head_id = %s" % (self.
dschema,id_select,schema_sql_tc,fromid)
899 if chamber !=
None and tube ==
None:
901 chamber_sql =
" AND chamber = %s" % chamber_id
902 chamber_tube_sql =
" AND tube_id IN (SELECT tube_id FROM %s WHERE chamber=%s)" % (schema_sql,chamber_id)
903 mdt_tube_sql += chamber_sql
904 mdt_tube_v_sql += chamber_tube_sql
905 mdt_tube_c_sql += chamber_tube_sql
906 elif tube !=
None and chamber ==
None:
908 tube_sql =
" AND tube_id = %s" % tube_id
909 mdt_tube_sql += tube_sql
910 mdt_tube_v_sql += tube_sql
911 mdt_tube_c_sql += tube_sql
912 elif tube !=
None and chamber !=
None:
913 raise DataCopyError(self,
"Cannot operate on both chamber and single tube")
915 self.
dbgout(
"SQL in copy_tzero: %s" % mdt_tube_sql)
916 self.
dbgout(
"SQL in copy_tzero: %s" % mdt_tube_c_sql)
917 self.
dbgout(
"SQL in copy_tzero: %s" % mdt_tube_v_sql)
923 if self.
dcursor.rowcount == 0
and ignore_missing ==
False:
924 raise DataCopyError(self,
"There is no T0 data in the source head id")
927 except cx_Oracle.IntegrityError
as exc:
929 except HeadInsertError:
931 except cx_Oracle.Error
as exc:
936 sql_map =
"INSERT INTO %s.MDT_RT_MAP(HEAD_ID, REGION_ID,CALIBFLAG,POINT_NR,S,T,R) VALUES (%s,%s,%s,%s,%s,%s,%s)" % ( self.
dschema, self.
head_id,self.
regionid,self.
calibflag,point_nr,s,t,r)
937 if self.
debug ==
True:
938 self.
dbgout(
"SQL from insert_rt_map: %s" % sql_map)
940 if point_nr == 99
or point_nr == 199:
942 if tmax > 800.
or tmax < 700.:
943 raise Exception(
"Tmax value %s: Tmax must be in range 700 to 800 ns" % t)
945 except cx_Oracle.IntegrityError
as exc:
947 except Exception
as exc:
951 if self.
type ==
None:
952 raise RTInsertError(self,
"Cannot insert RT until you set object 'type' variable")
955 sql_rt =
"INSERT INTO %s.MDT_RT (HEAD_ID, REGION_ID,CALIBFLAG,LOWRUN,UPRUN,HISTOGRAM,N_SEGS,AVER_ANGLE,DELTA_AVER_ANGLE,AVER_SPREAD,DELTA_AVER_SPREAD,CONVERGENCE,B_AVER,T_AVER,HV,CURR,GAS,VALIDFLAG,ALGO_FLAG,BINS) VALUES (%s,%s,%s,%s,%s,'%s',%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,'%s',%s)" % (self.
dschema,self.
head_id,regionid,self.
calibflag,self.
lowrun,self.
uprun,self.
histogram,self.
n_segs,self.
aver_angle,self.
delta_aver_angle,self.
aver_spread,self.
delta_aver_spread,self.
convergence,self.
b_aver,self.
t_aver,self.
hv,self.
curr,self.
gas,self.
validflag,self.
type,self.
bins)
957 self.
dbgout(
"SQL from insert_rt: %s" % sql_rt)
962 except cx_Oracle.IntegrityError
as exc:
964 except Exception
as exc:
967 def insert_adc(self,tube_id,chamber_id,nhits,adc_0,adc_0_err,adc_1,adc_1_err,adc_2,adc_2_err,adc_3,adc_3_err,adc_chisquare):
969 sql_tube =
'INSERT INTO %s.MDT_TUBE (HEAD_ID,TUBE_ID,CHAMBER,VALIDFLAG,NHITS,NHITS_ABOVE_ADC_CUT,P4,ADC_0,ADC_1,ADC_2,ADC_3) VALUES (%s,%s,%s,0,%s,%s,%s,%s,%s,%s,%s)' % (self.
dschema,self.
head_id,tube_id,chamber_id,self.
validflag,nhits,nhits,adc_0,adc_1,adc_2,adc_3)
970 sql_tube_c =
"INSERT INTO %s.MDT_TUBE_C (HEAD_ID,TUBE_ID,ADC_0_ERR,ADC_1_ERR,ADC_2_ERR,ADC_3_ERR,ADC_CHISQUARE) VALUES (%s,%s,%s,%s,%s,%s,%s)" % (self.
dschema,self.
head_id,tube_id, adc_0_err, adc_1_err, adc_2_err, adc_3_err, adc_chisquare)
972 if self.
debug ==
True:
973 self.
dbgout(
"SQL from insert_adc: %s" % sql_tube)
974 self.
dbgout(
"SQL from insert_adc: %s" % sql_tube_c)
979 except cx_Oracle.IntegrityError
as exc:
981 except Exception
as exc:
984 def insert_t0(self,tube_id,chamber_id, tzero,avg_adc,calibflag,stats,chi2,t0err,tmax,tmax_err,noise,noise_err,slope,slope_err):
988 sql_tube =
"INSERT INTO %s.MDT_TUBE (HEAD_ID,TUBE_ID,CALIBFLAG,CHAMBER,P4,ADC_1,VALIDFLAG,NHITS,NHITS_ABOVE_ADC_CUT) VALUES (%s,%s,%s,%s,%s,%s,%s,%s,%s)" % (self.
dschema,self.
head_id,tube_id,calibflag,chamber_id,tzero,avg_adc,self.
validflag,stats,stats)
991 sql_tube_c =
"INSERT INTO %s.MDT_TUBE_C (HEAD_ID,TUBE_ID,CALIBFLAG,P0_ERR) VALUES (%s,%s,%s,%s)" % (self.
dschema,self.
head_id,tube_id,calibflag,noise_err)
992 sql_tube_v =
"INSERT INTO %s.MDT_TUBE_V (HEAD_ID,TUBE_ID,CALIBFLAG,CHISQUARE_1,P4_ERR,P5,P5_ERR,P0,P6,P6_ERR,ALGO_FLAG,TUBE_GROUPING) VALUES (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,'%s','%s')" % (self.
dschema,self.
head_id,tube_id,calibflag,chi2,t0err,tmax,tmax_err,noise,slope,slope_err,self.
type,self.
t0_tube_grouping)
994 if self.
debug ==
True:
995 self.
dbgout(
"SQL from insert_t0: %s" % sql_tube)
996 self.
dbgout(
"SQL from insert_t0: %s" % sql_tube_c)
997 self.
dbgout(
"SQL from insert_t0: %s" % sql_tube_v)
1003 except cx_Oracle.IntegrityError
as exc:
1005 except Exception
as exc:
1014 self.
dbgout(
"SQL from delete_head_id: %s" % sql)
1018 except Exception
as exc:
1023 sql_rt_map =
"DELETE FROM %s.MDT_RT_MAP WHERE HEAD_ID=%s" % (self.
dschema, self.
head_id)
1024 sql_rt =
"DELETE FROM %s.MDT_RT WHERE HEAD_ID=%s" % (self.
dschema, self.
head_id)
1029 sql_rt_map +=
" AND REGION_ID=%s" % region_id
1030 sql_rt +=
" AND REGION_ID=%s" % region_id
1034 except Exception
as exc:
1039 sql_tube_v =
"DELETE FROM %s.MDT_TUBE_V WHERE HEAD_ID=%s" % (self.
dschema, self.
head_id)
1040 sql_tube_c =
"DELETE FROM %s.MDT_TUBE_C WHERE HEAD_ID=%s" % (self.
dschema, self.
head_id)
1041 sql_tube =
"DELETE FROM %s.MDT_TUBE WHERE HEAD_ID=%s" % (self.
dschema, self.
head_id)
1044 sql_tube +=
" AND CHAMBER=%s" % chamber_id
1045 chamber_tube_sql =
" AND tube_id IN (SELECT tube_id FROM %s.MDT_TUBE WHERE chamber=%s)" % (self.
dschema,chamber_id)
1046 sql_tube_v += chamber_tube_sql
1047 sql_tube_c += chamber_tube_sql
1048 elif tube !=
None and chamber ==
None:
1050 sql_tube_v +=
" AND TUBE_ID=%s" % tube_id
1051 sql_tube_c +=
" AND TUBE_ID=%s" % tube_id
1052 sql_tube +=
" AND TUBE_ID=%s" % tube_id
1054 self.
dbgout(
"SQL from delete_t0: %s" % sql_tube_v)
1055 self.
dbgout(
"SQL from delete_t0: %s" % sql_tube_c)
1056 self.
dbgout(
"SQL from delete_t0: %s" % sql_tube)
1062 except Exception
as exc:
1067 sql_valid =
"UPDATE %s.MDT_RT SET VALIDFLAG=3 WHERE HEAD_ID=%s " % (self.
dschema, self.
head_id)
1069 sql_valid +=
"AND REGION_ID=%s" % tube
1071 self.
dbgout(
"SQL from set_rt_valid: %s" % sql_valid)
1075 except Exception
as exc:
1080 sql_valid =
"UPDATE %s.MDT_TUBE SET VALIDFLAG=3 WHERE HEAD_ID=%s " % (self.
dschema, self.
head_id)
1082 sql_valid +=
"AND TUBE_ID=%s" % tube
1084 self.
dbgout(
"SQL from set_t0_valid: %s" % sql_valid)
1088 except Exception
as exc:
1093 sql =
"SELECT HEAD_ID,IMPLEMENTATION,LOWRUN,UPRUN,LOWTIME,UPTIME,LUMINOSITY,SITE_NAME,INSERT_TIME FROM %s.MDT_HEAD ORDER BY HEAD_ID DESC" % (self.
mschema)
1095 self.
dbgout(
"SQL from fetch_head_data: %s" % sql)
1099 except Exception
as exc:
1106 head_data_rows.append(head_row)
1107 head_row = self.
mcursor.fetchone()
1108 return head_data_rows
1111 text =
"%-10s%-35s%-10s%-10s%-12s%-12s%-5s%-6s%-30s\n" % (
'HEAD_ID',
'IMPLEMENTATION',
'LOWRUN',
'UPRUN',
'LOWTIME',
'UPTIME',
'LUM',
'SITE',
'INSERT TIME')
1112 for data
in head_data_rows:
1113 text +=
"%-10s%-35s%-10s%-10s%-12s%-12s%-5s%-6s%-30s\n" % (data[0],data[1],data[2],data[3],data[4],data[5],data[6],data[7],data[8])