ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Database
CoolRunQuery
python
utils
AtlRunQueryIOV.py
Go to the documentation of this file.
1
# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
2
3
4
from
functools
import
total_ordering
5
from
PyCool
import
cool
6
import
time
7
8
@total_ordering
9
class
IOVTime
:
10
def
__init__
(self, run=None, lb=None, timerunlb=None,timebased=False):
11
if
isinstance(run,IOVTime):
12
self.
timebased
= run.timebased
13
self.
run
= run.run
14
self.
lb
= run.lb
15
self.
time
= run.time
16
else
:
17
self.
timebased
=timebased
18
self.
run
= self.
lb
= self.
time
=
None
19
if
timebased:
20
self.
time
=timerunlb
21
else
:
22
if
timerunlb
is
not
None
:
23
self.
run
= timerunlb>>32
24
self.
lb
= timerunlb&0xFFFFFFFF
25
else
:
26
self.
run
= run
27
self.
lb
= lb
28
29
def
__str__
(self):
30
if
self.
timebased
:
31
try
:
32
return
"%s"
% time.strftime(
"%a %b %d %Y %X"
,time.gmtime(self.
time
/1E9))
33
except
ValueError:
34
return
"infinity"
35
else
:
36
return
"%i/%i"
% (self.
run
,self.
lb
)
37
38
def
__lt__
(self, other):
39
if
self.
timebased
:
40
return
self.
time
<other.time
41
else
:
42
return
self.
run
<other.run
or
self.
run
==other.run
and
self.
lb
<other.lb
43
44
def
__eq__
(self, other):
45
if
self.
timebased
:
46
return
self.
time
==other.time
47
else
:
48
return
self.
run
==other.run
and
self.
lb
==other.lb
49
50
def
__sub__
(self, other):
51
if
isinstance(other, int):
52
return
IOVTime
(timerunlb=self.
timerunlb
()-1)
53
elif
isinstance(other, IOVTime):
54
return
self.
timerunlb
()-other.timerunlb()
55
56
57
def
timerunlb
(self):
58
if
self.
timebased
:
59
return
self.
time
60
res = self.
run
<<32
61
res += self.
lb
62
return
res
63
64
def
inRange
(self,iovrange):
65
return
iovrange.isInRange(self)
66
67
class
IOVRange
:
68
def
__init__
(self, obj=None, starttime=None, endtime=None, runStart=None, lbStart=None, runEnd=None, lbEnd=None, timebased=False):
69
if
isinstance(obj, cool.IObject):
70
self.
startTime
=
IOVTime
(timerunlb=obj.since(), timebased=timebased)
71
self.
endTime
=
IOVTime
(timerunlb=obj.until(), timebased=timebased)
72
elif
isinstance(obj, IOVRange):
73
self.
startTime
= obj.startTime
74
self.
endTime
= obj.endTime
75
elif
isinstance(starttime, IOVTime)
and
isinstance(endtime, IOVTime):
76
self.
startTime
= starttime
77
self.
endTime
= endtime
78
elif
isinstance(starttime,int)
and
isinstance(endtime,int):
79
self.
startTime
=
IOVTime
(timerunlb=starttime,timebased=timebased)
80
self.
endTime
=
IOVTime
(timerunlb=endtime,timebased=timebased)
81
elif
runStart
is
not
None
and
lbStart
is
not
None
and
runEnd
is
not
None
and
lbEnd
is
not
None
:
82
self.
startTime
=
IOVTime
(runStart, lbStart, timebased=
False
)
83
self.
endTime
=
IOVTime
(runEnd, lbEnd, timebased=
False
)
84
else
:
85
print
(
"IOVRange.__init__: Can't interpret arguments"
)
86
87
@total_ordering
88
def
truncateToSingleRun
(self,runnr):
89
if
self.
startTime
.run<runnr:
90
self.
startTime
.run=runnr
91
self.
startTime
.lb=1
92
if
self.
endTime
.run>runnr:
93
self.
endTime
.run=runnr+1
94
self.
endTime
.lb=0
95
96
def
__str__
(self):
97
return
"[%s, %s)"
% (self.
startTime
,self.
endTime
)
98
99
def
__repr__
(self):
100
return
str(self)
101
102
def
__eq__
(self, other):
103
return
(self.
startTime
== other.startTime)
104
105
def
__lt__
(self, other):
106
return
(self.
startTime
< other.startTime)
107
108
def
length
(self):
109
return
"%2.1f"
% ((self.
endTime
-self.
startTime
)/1.E9)
110
111
def
isInRange
(self, iovtime):
112
return
self.
startTime
<=iovtime
and
iovtime<self.
endTime
113
114
def
overlaps
(self, o):
115
if
o.startTime>=self.
endTime
or
o.endTime<=self.
startTime
:
116
return
False
117
return
True
118
119
python.utils.AtlRunQueryIOV.IOVRange
Definition
AtlRunQueryIOV.py:67
python.utils.AtlRunQueryIOV.IOVRange.startTime
startTime
Definition
AtlRunQueryIOV.py:70
python.utils.AtlRunQueryIOV.IOVRange.truncateToSingleRun
truncateToSingleRun(self, runnr)
Definition
AtlRunQueryIOV.py:88
python.utils.AtlRunQueryIOV.IOVRange.endTime
endTime
Definition
AtlRunQueryIOV.py:71
python.utils.AtlRunQueryIOV.IOVRange.length
length(self)
Definition
AtlRunQueryIOV.py:108
python.utils.AtlRunQueryIOV.IOVRange.overlaps
overlaps(self, o)
Definition
AtlRunQueryIOV.py:114
python.utils.AtlRunQueryIOV.IOVRange.__str__
__str__(self)
Definition
AtlRunQueryIOV.py:96
python.utils.AtlRunQueryIOV.IOVRange.__lt__
__lt__(self, other)
Definition
AtlRunQueryIOV.py:105
python.utils.AtlRunQueryIOV.IOVRange.__repr__
__repr__(self)
Definition
AtlRunQueryIOV.py:99
python.utils.AtlRunQueryIOV.IOVRange.isInRange
isInRange(self, iovtime)
Definition
AtlRunQueryIOV.py:111
python.utils.AtlRunQueryIOV.IOVRange.__eq__
__eq__(self, other)
Definition
AtlRunQueryIOV.py:102
python.utils.AtlRunQueryIOV.IOVRange.__init__
__init__(self, obj=None, starttime=None, endtime=None, runStart=None, lbStart=None, runEnd=None, lbEnd=None, timebased=False)
Definition
AtlRunQueryIOV.py:68
python.utils.AtlRunQueryIOV.IOVTime
Definition
AtlRunQueryIOV.py:9
python.utils.AtlRunQueryIOV.IOVTime.timebased
timebased
Definition
AtlRunQueryIOV.py:12
python.utils.AtlRunQueryIOV.IOVTime.time
time
Definition
AtlRunQueryIOV.py:15
python.utils.AtlRunQueryIOV.IOVTime.lb
int lb
Definition
AtlRunQueryIOV.py:14
python.utils.AtlRunQueryIOV.IOVTime.__sub__
__sub__(self, other)
Definition
AtlRunQueryIOV.py:50
python.utils.AtlRunQueryIOV.IOVTime.timerunlb
timerunlb(self)
Definition
AtlRunQueryIOV.py:57
python.utils.AtlRunQueryIOV.IOVTime.__lt__
__lt__(self, other)
Definition
AtlRunQueryIOV.py:38
python.utils.AtlRunQueryIOV.IOVTime.__str__
__str__(self)
Definition
AtlRunQueryIOV.py:29
python.utils.AtlRunQueryIOV.IOVTime.__eq__
__eq__(self, other)
Definition
AtlRunQueryIOV.py:44
python.utils.AtlRunQueryIOV.IOVTime.run
int run
Definition
AtlRunQueryIOV.py:13
python.utils.AtlRunQueryIOV.IOVTime.__init__
__init__(self, run=None, lb=None, timerunlb=None, timebased=False)
Definition
AtlRunQueryIOV.py:10
python.utils.AtlRunQueryIOV.IOVTime.inRange
inRange(self, iovrange)
Definition
AtlRunQueryIOV.py:64
Generated on
for ATLAS Offline Software by
1.17.0