In [1]:
import sys
sys.path.append('/eos/user/s/sterbini/MD_ANALYSIS/public/')
from myToolbox import *
In [2]:
startTime=datetime.datetime(2017,7,1,12,30)
endTime=datetime.datetime(2017,7,2)
fillDF,modeDF=myToolbox.LHCFillsByTime2pnd(startTime-datetime.timedelta(hours=6),endTime-datetime.timedelta(hours=1))
In [3]:
fillDF
Out[3]:
In [4]:
modeDF
Out[4]:
In [7]:
myTitle='1st July 2017'
aux=fillDF
b=modeDF
def colorMe(i):
if np.mod(i,2):
return "m"
else:
return "c"
for i in aux.index:
plt.gca().fill_between([aux[aux.index==i]['startTime'].values[0],
aux[aux.index==i]['endTime'].values[0]], [0,0], [2.1,2.1],color=colorMe(i), alpha=.1)
bb=b[b.index==i]
bbb=bb[bb['mode']=='NOBEAM']
if len(bbb):
plt.gca().fill_between([bbb['startTime'].values[0],
bbb['endTime'].values[0]], [.8,.8], [.9,.9],color='r')
bb=b[b.index==i]
bbb=bb[bb['mode']=='CYCLING']
if len(bbb):
plt.gca().fill_between([bbb['startTime'].values[0],
bbb['endTime'].values[0]], [.9,.9], [1,1],color='r')
bb=b[b.index==i]
bbb=bb[bb['mode']=='SETUP']
if len(bbb):
plt.gca().fill_between([bbb['startTime'].values[0],
bbb['endTime'].values[0]], [1,1], [1.1,1.1],color='r')
bb=b[b.index==i]
bbb=bb[bb['mode']=='INJPROT']
if len(bbb):
plt.gca().fill_between([bbb['startTime'].values[0],
bbb['endTime'].values[0]], [1.1,1.1], [1.2,1.2],color='k')
bb=b[b.index==i]
bbb=bb[bb['mode']=='INJPHYS']
if len(bbb):
plt.gca().fill_between([bbb['startTime'].values[0],
bbb['endTime'].values[0]], [1.2,1.2], [1.3,1.3],color='orange')
bb=b[b.index==i]
bbb=bb[bb['mode']=='PRERAMP']
if len(bbb):
plt.gca().fill_between([bbb['startTime'].values[0],
bbb['endTime'].values[0]], [1.3,1.3], [1.4,1.4],color='b')
bb=b[b.index==i]
bbb=bb[bb['mode']=='RAMP']
if len(bbb):
plt.gca().fill_between([bbb['startTime'].values[0],
bbb['endTime'].values[0]], [1.4,1.4], [1.5,1.5],color='b')
bb=b[b.index==i]
bbb=bb[bb['mode']=='FLATTOP']
if len(bbb):
plt.gca().fill_between([bbb['startTime'].values[0],
bbb['endTime'].values[0]], [1.5,1.5], [1.6,1.6],color='b')
bb=b[b.index==i]
bbb=bb[bb['mode']=='SQUEEZE']
if len(bbb):
plt.gca().fill_between([bbb['startTime'].values[0],
bbb['endTime'].values[0]], [1.6,1.6], [1.7,1.7],color='g')
bb=b[b.index==i]
bbb=bb[bb['mode']=='ADJUST']
if len(bbb):
plt.gca().fill_between([bbb['startTime'].values[0],
bbb['endTime'].values[0]], [1.7,1.7], [1.8,1.8],color='g')
bb=b[b.index==i]
bbb=bb[bb['mode']=='STABLE']
if len(bbb):
plt.gca().fill_between([bbb['startTime'].values[0],
bbb['endTime'].values[0]], [1.8,1.8], [1.9,1.9],color='g')
bb=b[b.index==i]
bbb=bb[bb['mode']=='BEAMDUMP']
if len(bbb):
plt.gca().fill_between([bbb['startTime'].values[0],
bbb['endTime'].values[0]], [1.9,1.9], [2,2],color='k')
plt.plot(bbb['startTime'].values[0],1.95,'vr',ms=12)
bb=b[b.index==i]
bbb=bb[bb['mode']=='RAMPDOWN']
if len(bbb):
plt.gca().fill_between([bbb['startTime'].values[0],
bbb['endTime'].values[0]], [2,2], [2.1,2.1],color='k')
myTest=aux[aux.index==i]['duration']>datetime.timedelta(hours=.3)
if myTest.values[0]:
myDiff=(pnd.to_datetime(aux[aux.index==i]['endTime'].values[0])-pnd.to_datetime(aux[aux.index==i]['startTime'].values[0]))/2
myTime=pnd.to_datetime(aux[aux.index==i]['startTime'].values[0])+myDiff
plt.text(myTime,.6 ,str(i), bbox=dict(facecolor='w', alpha=1),horizontalalignment='center',verticalalignment='center', rotation=90)
plt.yticks([.85, .95, 1.05, 1.15, 1.25, 1.35, 1.45, 1.55, 1.65, 1.75, 1.85, 1.95, 2.05],
['NOBEAM','CYCLING','SETUP','INJPROT','INJPHYS',
'PRERAMP','RAMP','FLATTOP','SQUEEZE','ADJUST','STABLE','BEAMDUMP','RAMPDOWN']);
plt.ylim(0.4,2.1);
plt.title(myTitle)
t = np.arange(startTime-datetime.timedelta(hours=2.5), endTime, datetime.timedelta(hours=2)).astype(datetime.datetime)
plt.xticks(t);
myFmt =mdates.DateFormatter('%H:%M')
plt.gca().xaxis.set_major_formatter(myFmt);
plt.xlabel('time [hh:mm]')
Out[7]:
In [8]:
rawDF=myToolbox.cals2pnd(['LHC.BOFSU:OFC_ENERGY','LHC.BCTFR.A6R4.B1:BEAM_INTENSITY','LHC.BCTFR.A6R4.B2:BEAM_INTENSITY'],
startTime,endTime)
In [9]:
rawDF.tail()
Out[9]:
In [10]:
rawDF=myToolbox.addRowsFromCals(rawDF, deltaTime=datetime.timedelta(minutes=60))
In [11]:
rawDF.tail()
Out[11]:
In [20]:
rawDF=myToolbox.addColumnsFromCals(rawDF, ['ATLAS:LUMI_TOT_INST','CMS:LUMI_TOT_INST'])
In [22]:
rawDF.between_time('21:00','21:02')
Out[22]:
In [16]:
# Please use version >=2.4.2
pytimber.__version__
Out[16]:
In [17]:
log.getUnit('%:LUMI_TOT_INST')
Out[17]:
In [18]:
log.getDescription('%:LUMI_TOT_INST')
Out[18]: