24def getTypeForRun(run,quiet=False):
25 """Get the particle type in the LHC for a given run from the DCS database"""
26
27 newdb=(run>=236107)
28
29
30 if newdb:
31 dbname='CONDBR2'
32 sorfolder='/TDAQ/RunCtrl/SOR'
33 else:
34 dbname='COMP200'
35 sorfolder='/TDAQ/RunCtrl/SOR_Params'
36
37 if not quiet:
38 print ("Reading particle type for run %i, %s" % (run,dbname))
39
40 tdaqDB=indirectOpen('COOLONL_TDAQ/%s' % dbname)
41 if tdaqDB is None:
42 print ("ParticleTypeUtil ERROR: Cannot connect to COOLONL_TDAQ/%s" % dbname)
43 return None
44
45 sortime=0
46 try:
47 tdaqfolder=tdaqDB.getFolder(sorfolder)
48 runiov=run << 32
49 obj=tdaqfolder.findObject(runiov,0)
50 payload=obj.payload()
51 sortime=payload['SORTime']
52 except Exception as e:
53 print ("ParticleTypeUtil ERROR accessing folder %s" % sorfolder)
54 print (e)
55 tdaqDB.closeDatabase()
56
57 if not quiet:
58 print ("Start of run time:", sortime, time.ctime(sortime/1e9))
59
60 dcsDB=indirectOpen('COOLOFL_DCS/%s' % dbname)
61 if dcsDB is None:
62 print ("ParticleTypeUtil ERROR: Cannot connect to COOLOFL_DCS/%s" % dbname)
63 return None
64 data=None
65 try:
66 f=dcsDB.getFolder('/LHC/DCS/FILLSTATE')
67 obj=f.findObject(sortime,1)
68 payload=obj.payload()
69 beam1type=payload["BeamType1"]
70 beam2type=payload["BeamType2"]
71 data=ParticleTypeDCSInfo(beam1type,beam2type)
72 if not quiet:
73 print(
"Found FILLSTATE information valid from %s to %s" % (time.ctime(obj.since()/1e9),time.ctime(obj.until()/1e9)))
74 except Exception as e:
75 print ("ParticleTypeUtil ERROR getting information from /LHC/DCS/FILLSTATE")
76 print (e)
77 dcsDB.closeDatabase()
78
79 return data
80
void print(char *figname, TCanvas *c1)