Page Menu
Home
HEPForge
Search
Configure Global Search
Log In
Files
F10664386
SpartyGui.py
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
22 KB
Subscribers
None
SpartyGui.py
View Options
import
os
_sparty_lib
=
os
.
environ
.
setdefault
(
'SPARTYJETLIBS'
,
'../libs/'
)
import
ROOT
from
JetRetrieverFile
import
PyJetRetrieverFile
import
JetRetrieverLive
import
JetHistoryGui
#from collections import namedtuple
ROOT
.
gSystem
.
Load
(
os
.
path
.
join
(
_sparty_lib
,
"libJetCore.so"
)
)
ROOT
.
gSystem
.
Load
(
os
.
path
.
join
(
_sparty_lib
,
"libExtras.so"
)
)
EventViewBase
=
ROOT
.
SpartyJet
.
EventViewBase
class
JetCollItems
(
object
):
retriever
=
None
button
=
None
def
__init__
(
self
,
name
,
r
=
None
,
b
=
None
):
self
.
name
=
name
self
.
retriever
=
r
self
.
button
=
b
self
.
jetcoll
=
None
self
.
inputcoll
=
None
self
.
input_retriever
=
None
def
add_input_retriever
(
self
,
ret
):
self
.
input_retriever
=
ret
def
__str__
(
self
):
return
"JetCollection
%s
(jetcoll=
%s
, retriever=
%s
, input_retriever=
%s
) "
%
(
self
.
name
,
self
.
jetcoll
,
self
.
retriever
,
self
.
input_retriever
)
def
show
(
self
):
print
'JetCollection '
,
self
.
name
print
' jetcoll ='
,
self
.
jetcoll
print
' inputcoll ='
,
self
.
inputcoll
print
' retriever ='
,
self
.
retriever
print
' input_retriever ='
,
self
.
input_retriever
class
ViewerItem
(
object
):
def
__init__
(
self
,
view
=
None
,
b
=
None
):
self
.
button
=
b
self
.
viewer
=
view
class
SpartyGui
(
ROOT
.
TGMainFrame
)
:
def
__init__
(
self
,
p
,
):
ROOT
.
TGMainFrame
.
__init__
(
self
,
p
,
1000
,
800
)
#print 'LArGui : thread = ', thread.get_ident(), 'self= ',self
self
.
currentEvent
=
0
self
.
names
=
[
"bla"
,
'blu'
,
'bli'
,
'ble'
,
'blo'
]
self
.
runPlotRadioButtons
=
[]
self
.
algSelectCheckButtons
=
[]
self
.
jobSelectCheckButtons
=
[]
self
.
dispatchers
=
[]
self
.
JetCollections
=
{}
self
.
JetCollectionsLive
=
{}
self
.
viewer_items
=
[]
self
.
inputJetItem
=
[]
def
init
(
self
):
self
.
canvas
=
ROOT
.
TCanvas
(
"SpartyCanvas"
)
p
=
self
.
canvas
.
cd
()
#self.drawer.set_pad(p)
self
.
current_subpad
=
0
self
.
ndivX
=
1
self
.
ndivY
=
1
kVerticalFrame
,
kHorizontalFrame
=
ROOT
.
kVerticalFrame
,
ROOT
.
kHorizontalFrame
kLHintsLeft
,
kLHintsTop
=
ROOT
.
kLHintsLeft
,
ROOT
.
kLHintsTop
kLHintsExpandX
,
kLHintsExpandY
=
ROOT
.
kLHintsExpandX
,
ROOT
.
kLHintsExpandY
vert_layout
=
ROOT
.
TGVerticalLayout
(
self
)
self
.
SetLayoutManager
(
vert_layout
)
self
.
fLayout
=
ROOT
.
TGLayoutHints
()
# First group for canvas manipulation ************************************************
#canvas_group = ROOT.TGGroupFrame(self,"canvas_group",kHorizontalFrame,ROOT.TGGroupFrame.GetDefaultGC()(),ROOT.TGGroupFrame.GetDefaultFontStruct())
topcanvas_group
=
ROOT
.
TGGroupFrame
(
self
,
"canvas_group"
,
kHorizontalFrame
,
ROOT
.
TGGroupFrame
.
GetDefaultGC
()(),
ROOT
.
TGGroupFrame
.
GetDefaultFontStruct
())
canvas_group
=
ROOT
.
TGCompositeFrame
(
self
,
kHorizontalFrame
,
ROOT
.
TGGroupFrame
.
GetDefaultGC
()(),
ROOT
.
TGGroupFrame
.
GetDefaultFontStruct
())
canvas_group
.
AddFrame
(
ROOT
.
TGLabel
(
canvas_group
,
"num cols"
),
self
.
fLayout
)
canvas_group
.
AddFrame
(
ROOT
.
TGLabel
(
canvas_group
,
"num rows"
),
self
.
fLayout
)
self
.
ndivx_entry
=
ROOT
.
TGNumberEntry
(
canvas_group
,
1
,
6
,
991199
,
0
,
2
)
canvas_group
.
AddFrame
(
self
.
ndivx_entry
,
ROOT
.
TGLayoutHints
(
kLHintsLeft
|
kLHintsTop
,
2
,
2
,
2
,
2
))
self
.
connect_dispatcher
(
self
.
ndivx_entry
,
"ValueSet(Long_t)"
,
self
.
clear_canvas
)
self
.
ndivy_entry
=
ROOT
.
TGNumberEntry
(
canvas_group
,
1.0
,
6
,
991199
,
0
,
2
)
canvas_group
.
AddFrame
(
self
.
ndivy_entry
,
ROOT
.
TGLayoutHints
(
kLHintsLeft
|
kLHintsTop
,
2
,
2
,
2
,
2
))
self
.
connect_dispatcher
(
self
.
ndivy_entry
,
"ValueSet(Long_t)"
,
self
.
clear_canvas
)
c_reset_button
=
ROOT
.
TGTextButton
(
canvas_group
,
"Reset"
,
991199
)
canvas_group
.
AddFrame
(
c_reset_button
,
ROOT
.
TGLayoutHints
(
kLHintsLeft
|
kLHintsTop
,
2
,
2
,
2
,
2
))
#c_reset_button.Connect("Clicked()","TGTextButton",self.canvas, "Clear()")
self
.
connect_dispatcher
(
c_reset_button
,
"Clicked()"
,
self
.
reset_canvas
)
c_clear_button
=
ROOT
.
TGTextButton
(
canvas_group
,
"Clear"
,
991199
)
canvas_group
.
AddFrame
(
c_clear_button
,
ROOT
.
TGLayoutHints
(
kLHintsLeft
|
kLHintsTop
,
2
,
2
,
2
,
2
))
#c_clear_button.Connect("Clicked()","TGTextButton",self.canvas, "Clear()")
self
.
connect_dispatcher
(
c_clear_button
,
"Clicked()"
,
self
.
clear_canvas
)
canvas_group
.
SetLayoutManager
(
ROOT
.
TGMatrixLayout
(
canvas_group
,
0
,
2
,
2
,
0
))
topcanvas_group
.
AddFrame
(
canvas_group
,
ROOT
.
TGLayoutHints
(
kLHintsLeft
|
kLHintsTop
|
kLHintsExpandX
))
topcanvas_group
.
AddFrame
(
ROOT
.
TGIcon
(
topcanvas_group
,
"../display/block-S.gif"
),
ROOT
.
TGLayoutHints
(
kLHintsLeft
)
)
self
.
AddFrame
(
topcanvas_group
,
ROOT
.
TGLayoutHints
(
kLHintsLeft
|
kLHintsTop
|
kLHintsExpandX
))
# end canvas manipulation ************************************************
jetcoll_group
=
ROOT
.
TGGroupFrame
(
self
,
"JetCollections"
,
kVerticalFrame
,
ROOT
.
TGGroupFrame
.
GetDefaultGC
()(),
ROOT
.
TGGroupFrame
.
GetDefaultFontStruct
())
NCollumn
=
4
jetcoll_group
.
SetLayoutManager
(
ROOT
.
TGMatrixLayout
(
jetcoll_group
,
0
,
NCollumn
))
# ###############/
# Check buttons for algorithms
# ###############/
names
=
self
.
names
for
jc
,
jetitems
in
self
.
JetCollections
.
iteritems
():
button
=
self
.
add_check_button
(
jetcoll_group
,
jc
,
991199
,
JetCollCheckButton
())
jetitems
.
button
=
button
pass
# for a1 in range(len(names)):
# id2 = 991199+a1
# self.add_check_button(jetcoll_group,names[a1], id2, self.algSelectCheckButtons)
ncomplete
=
(
NCollumn
-
len
(
self
.
JetCollections
)
%
NCollumn
)
%
NCollumn
# complete to a multiple of NCollumn
for
a
in
range
(
ncomplete
):
# just fill with void frame
jetcoll_group
.
AddFrame
(
ROOT
.
TGFrame
(
jetcoll_group
),
self
.
fLayout
)
self
.
AddFrame
(
jetcoll_group
,
ROOT
.
TGLayoutHints
(
kLHintsLeft
|
kLHintsTop
|
kLHintsExpandX
))
# end jetcoll manipulation ************************************************
# A horizontal frame
hframe
=
ROOT
.
TGHorizontalFrame
(
self
)
# define groups for event by event operations
event_plots_group
=
ROOT
.
TGGroupFrame
(
hframe
,
"Event by Event plots"
)
hframe
.
AddFrame
(
event_plots_group
,
ROOT
.
TGLayoutHints
(
kLHintsLeft
|
kLHintsTop
|
kLHintsExpandY
|
kLHintsExpandX
))
# define groups for run operations
run_plots_group
=
ROOT
.
TGGroupFrame
(
hframe
,
"Run plots"
)
hframe
.
AddFrame
(
run_plots_group
,
ROOT
.
TGLayoutHints
(
kLHintsLeft
|
kLHintsTop
|
kLHintsExpandY
|
kLHintsExpandX
))
self
.
AddFrame
(
hframe
,
ROOT
.
TGLayoutHints
(
kLHintsLeft
|
kLHintsTop
|
kLHintsExpandX
|
kLHintsExpandY
))
# All event operations ********************************************************
evbyev_frame
=
ROOT
.
TGVerticalFrame
(
event_plots_group
)
evbyev_frame
.
SetLayoutManager
(
ROOT
.
TGMatrixLayout
(
evbyev_frame
,
0
,
3
))
event_plots_group
.
AddFrame
(
evbyev_frame
,
ROOT
.
TGLayoutHints
(
kLHintsLeft
|
kLHintsTop
|
kLHintsExpandX
))
self
.
PreviousEventButton
=
ROOT
.
TGTextButton
(
evbyev_frame
,
"Previous Event"
,
991199
)
#self.PreviousEventButton.Associate(self)
evbyev_frame
.
AddFrame
(
self
.
PreviousEventButton
,
self
.
fLayout
)
self
.
EventNumEntry
=
ROOT
.
TGNumberEntry
(
evbyev_frame
,
self
.
currentEvent
,
10
,
991199
,
ROOT
.
TGNumberFormat
.
kNESInteger
,
ROOT
.
TGNumberFormat
.
kNEANonNegative
)
self
.
EventNumEntry
.
Associate
(
self
)
evbyev_frame
.
AddFrame
(
self
.
EventNumEntry
,
self
.
fLayout
)
self
.
NextEventButton
=
ROOT
.
TGTextButton
(
evbyev_frame
,
"Next Event"
,
991199
)
self
.
NextEventButton
.
Associate
(
self
)
evbyev_frame
.
AddFrame
(
self
.
NextEventButton
,
self
.
fLayout
)
self
.
connect_dispatcher
(
self
.
EventNumEntry
,
"ValueSet(Long_t)"
,
self
.
draw_current_event
)
self
.
NextEventButton
.
Connect
(
"Clicked()"
,
"TGNumberEntry"
,
self
.
EventNumEntry
,
"IncreaseNumber()"
)
self
.
PreviousEventButton
.
Connect
(
"Clicked()"
,
"TGNumberEntry"
,
self
.
EventNumEntry
,
"IncreaseNumber(=0,-1,false)"
)
self
.
connect_dispatcher
(
self
.
NextEventButton
,
"Clicked()"
,
self
.
draw_current_event
)
self
.
connect_dispatcher
(
self
.
PreviousEventButton
,
"Clicked()"
,
self
.
draw_current_event
)
self
.
viewer_items
=
[
ViewerItem
(
ROOT
.
SpartyJet
.
LegoView
())
,
ViewerItem
(
ROOT
.
SpartyJet
.
Event2DView
())
,
ViewerItem
(
ROOT
.
SpartyJet
.
SnowMassView
())
,
ViewerItem
(
ROOT
.
SpartyJet
.
ParamSpace
())
,
ViewerItem
(
ROOT
.
SpartyJet
.
PrintEvent
())
,
]
for
vit
in
self
.
viewer_items
:
vit
.
button
=
self
.
add_check_button
(
event_plots_group
,
vit
.
viewer
.
title
()
,
991199
,
SJCallBack
())
self
.
perform_evbyev_b
=
ROOT
.
TGTextButton
(
event_plots_group
,
"Draw"
,
991199
)
self
.
connect_dispatcher
(
self
.
perform_evbyev_b
,
"Clicked()"
,
self
.
draw_current_event
)
event_plots_group
.
AddFrame
(
self
.
perform_evbyev_b
,
self
.
fLayout
)
evbyev_options
=
ROOT
.
TGTextButton
(
event_plots_group
,
"Options"
,
991199
)
evbyev_options
.
Associate
(
self
)
event_plots_group
.
AddFrame
(
evbyev_options
,
self
.
fLayout
)
history_button
=
ROOT
.
TGTextButton
(
event_plots_group
,
"View History"
,
991199
)
event_plots_group
.
AddFrame
(
history_button
,
self
.
fLayout
)
self
.
connect_dispatcher
(
history_button
,
"Clicked()"
,
self
.
view_history
)
# on the fly algorithms ---------------------------------
expandx_layout
=
ROOT
.
TGLayoutHints
(
kLHintsLeft
|
kLHintsTop
|
kLHintsExpandX
)
onthefly_group
=
ROOT
.
TGGroupFrame
(
hframe
,
"On the fly algorithms"
)
event_plots_group
.
AddFrame
(
onthefly_group
,
expandx_layout
)
onthefly_combo
=
ROOT
.
TGComboBox
(
onthefly_group
,
'Algo type'
)
for
i
,
a
in
enumerate
(
JetRetrieverLive
.
defined_algs
):
onthefly_combo
.
AddEntry
(
a
.
name
,
i
)
onthefly_combo
.
SetHeight
(
20
)
onthefly_combo
.
SetEditable
(
False
)
self
.
onthefly_combo
=
onthefly_combo
onthefly_group
.
AddFrame
(
onthefly_combo
,
expandx_layout
)
otf_hframe
=
ROOT
.
TGHorizontalFrame
(
onthefly_group
)
onthefly_group
.
AddFrame
(
otf_hframe
,
expandx_layout
)
self
.
otf_txtentry
=
[]
for
i
in
range
(
3
):
entry
=
ROOT
.
TGTextEntry
(
otf_hframe
,
""
)
otf_hframe
.
AddFrame
(
entry
,
expandx_layout
)
self
.
otf_txtentry
.
append
(
entry
)
self
.
otf_txtentry
[
0
]
.
SetText
(
"0.5"
)
otf_lab
=
"main param"
for
i
in
range
(
3
):
otf_hframe
.
AddFrame
(
ROOT
.
TGLabel
(
otf_hframe
,
otf_lab
),
expandx_layout
)
otf_lab
=
"param "
+
str
(
i
+
1
)
otf_hframe
.
SetLayoutManager
(
ROOT
.
TGMatrixLayout
(
otf_hframe
,
0
,
3
))
onthefly_button
=
ROOT
.
TGTextButton
(
onthefly_group
,
"Create"
,
991199
)
onthefly_group
.
AddFrame
(
onthefly_button
,
self
.
fLayout
)
otf_line
=
ROOT
.
TGHorizontal3DLine
(
onthefly_group
)
onthefly_group
.
AddFrame
(
otf_line
,
expandx_layout
)
self
.
onthefly_group
=
onthefly_group
self
.
connect_dispatcher
(
onthefly_button
,
"Clicked()"
,
self
.
add_onthefly_algorithm
)
# end event operations ********************************************************
# full run operations ********************************************************
run_vars_hframe
=
ROOT
.
TGHorizontalFrame
(
run_plots_group
)
run_plots_group
.
AddFrame
(
ROOT
.
TGLabel
(
run_plots_group
,
"Choose a variable to be drawn : "
)
,
expandx_layout
)
run_plots_group
.
AddFrame
(
run_vars_hframe
)
self
.
run_vars_buttons
=
[]
self
.
run_defalt_vars
=
[
'e'
,
'p_T'
,
'eta'
,
'phi'
,
'mass'
]
for
vname
in
self
.
run_defalt_vars
:
self
.
run_vars_buttons
+=
[
self
.
add_check_button
(
run_vars_hframe
,
vname
,
991199
,
SJCallBack
())]
run_plots_group
.
AddFrame
(
ROOT
.
TGHorizontal3DLine
(
run_plots_group
),
expandx_layout
)
run_plots_group
.
AddFrame
(
ROOT
.
TGLabel
(
run_plots_group
,
"... or give the expression to be draw below"
)
,
expandx_layout
)
run_plots_group
.
AddFrame
(
ROOT
.
TGLabel
(
run_plots_group
,
"(use $$ as a wildcard (ex: $$_pt) to be replaced by checked jets"
)
,
expandx_layout
)
run_plots_group
.
AddFrame
(
ROOT
.
TGLabel
(
run_plots_group
,
"expression"
)
,
expandx_layout
)
self
.
run_expr_text
=
ROOT
.
TGTextEntry
(
run_plots_group
,
""
)
run_plots_group
.
AddFrame
(
self
.
run_expr_text
,
expandx_layout
)
run_plots_group
.
AddFrame
(
ROOT
.
TGLabel
(
run_plots_group
,
"cuts"
)
,
expandx_layout
)
self
.
run_sel_text
=
ROOT
.
TGTextEntry
(
run_plots_group
,
""
)
run_plots_group
.
AddFrame
(
self
.
run_sel_text
,
expandx_layout
)
run_options_hframe
=
ROOT
.
TGHorizontalFrame
(
run_plots_group
)
run_options_hframe
.
SetLayoutManager
(
ROOT
.
TGMatrixLayout
(
run_options_hframe
,
0
,
2
))
run_plots_drawbutton
=
ROOT
.
TGTextButton
(
run_options_hframe
,
"Draw"
,
991199
)
run_options_hframe
.
AddFrame
(
run_plots_drawbutton
,
self
.
fLayout
)
self
.
connect_dispatcher
(
run_plots_drawbutton
,
"Clicked()"
,
self
.
draw_run_plots
)
run_plots_resetbutton
=
ROOT
.
TGTextButton
(
run_options_hframe
,
"reset"
,
991199
)
run_options_hframe
.
AddFrame
(
run_plots_resetbutton
,
self
.
fLayout
)
self
.
connect_dispatcher
(
run_plots_resetbutton
,
"Clicked()"
,
self
.
reset_run_plots
)
run_plots_group
.
AddFrame
(
run_options_hframe
,
expandx_layout
)
# load_event(self.currentEvent)
self
.
MapSubwindows
()
self
.
Layout
()
self
.
SetWindowName
(
"SpartyJet Analysis Tool"
)
self
.
SetIconName
(
"SpartyJet Analysis Tool"
)
self
.
MapWindow
()
def
draw_current_event
(
self
,
*
l
):
print
"draw_current_event"
,
l
evt
=
self
.
EventNumEntry
.
GetIntNumber
()
active_jets
=
[
ji
for
ji
in
self
.
JetCollections
.
values
()
+
self
.
JetCollectionsLive
.
values
()
if
ji
.
button
.
IsOn
()
]
active_views
=
[
ji
for
ji
in
self
.
viewer_items
if
ji
.
button
.
IsOn
()
]
print
active_views
p
=
1
for
ji
in
active_jets
:
ji
.
show
()
#print ' Drawing ', ji
for
vi
in
active_views
:
if
evt
!=
ji
.
retriever
.
get_current_event
():
vi
.
viewer
.
clear_graphic_objects
()
ji
.
retriever
.
fill_collection
(
ji
,
evt
)
pad
=
self
.
canvas
.
cd
(
p
)
EventViewBase
.
setPad
(
pad
)
vi
.
viewer
.
draw_jets
(
ji
.
jetcoll
,
ji
.
inputcoll
,
ji
.
name
,
ji
.
name
)
p
=
p
+
vi
.
viewer
.
num_pad_used
()
#for i,jitem in enumerate(self.JetCollections):
pass
def
reset_canvas
(
self
,
*
l
):
self
.
canvas
.
Clear
()
self
.
canvas
.
Update
()
self
.
ndivy_entry
.
SetIntNumber
(
1
)
self
.
ndivx_entry
.
SetIntNumber
(
1
)
def
clear_canvas
(
self
,
*
l
):
c1
=
self
.
canvas
c1
.
Clear
()
nx
,
ny
=
self
.
ndivx_entry
.
GetIntNumber
()
,
self
.
ndivy_entry
.
GetIntNumber
()
c1
.
Divide
(
nx
,
ny
)
c1
.
cd
(
1
)
c1
.
Update
()
def
connect_dispatcher
(
self
,
element
,
signal
,
callback
,
*
args
):
""" callback_class is expected to be inheriting SJCallBack"""
if
isinstance
(
callback
,
SJCallBack
):
callback
.
gui
=
self
callback
.
element
=
element
disp
=
ROOT
.
TPyDispatcher
(
callback
)
self
.
dispatchers
.
append
(
disp
)
element
.
Connect
(
signal
,
"TPyDispatcher"
,
disp
,
"Dispatch()"
)
# Helper function to correctly set-up and associate check-buttons
def
add_check_button
(
self
,
container_frame
,
button_name
,
id
,
callback
):
button
=
ROOT
.
TGCheckButton
(
container_frame
,
button_name
,
id
);
#button.Associate(self)
container_frame
.
AddFrame
(
button
,
self
.
fLayout
)
self
.
connect_dispatcher
(
button
,
"Clicked()"
,
callback
)
return
button
def
add_radio_button
(
self
,
container_frame
,
button_name
,
id
):
button
=
TGRadioButton
(
container_frame
,
button_name
,
id
)
button
.
Associate
(
this
)
container_frame
.
AddFrame
(
button
,
self
.
fLayout
)
self
.
runPlotRadioButtons
.
push_back
(
button
)
def
add_text_button
(
self
,
container_frame
,
button_name
,
id
,
button_vect
):
button
=
TGTextButton
(
container_frame
,
button_name
,
id
)
button
.
Associate
(
this
)
container_frame
.
AddFrame
(
button
,
self
.
fLayout
)
if
button_vect
:
button_vect
.
push_back
(
button
)
return
button
def
add_onthefly_algorithm
(
self
):
ialg
=
self
.
onthefly_combo
.
GetSelected
()
params
=
[
self
.
otf_txtentry
[
i
]
.
GetText
()
for
i
in
range
(
3
)
]
print
"ialg ="
,
ialg
,
" main p="
,
params
jettool
=
JetRetrieverLive
.
defined_algs
[
ialg
](
float
(
params
[
0
])
,
*
params
[
1
:])
jretrieve
=
JetRetrieverLive
.
PyJetRetrieverLive
(
jettool
)
jbutton
=
self
.
add_check_button
(
self
.
onthefly_group
,
jettool
.
name
()
,
991199
,
SJCallBack
())
jcitem
=
JetCollItems
(
jettool
.
name
()
,
jretrieve
,
jbutton
)
jcitem
.
inputcoll
=
self
.
inputJetItem
[
0
]
.
inputcoll
jcitem
.
jetcoll
=
ROOT
.
SpartyJet
.
JetCollExtended
()
jcitem
.
add_input_retriever
(
self
.
inputJetItem
[
0
]
.
retriever
)
jbutton
.
MapWindow
()
#self.MapSubwindows()
#self.MapWindow()
self
.
Layout
()
self
.
onthefly_group
.
AddFrame
(
jbutton
)
self
.
JetCollectionsLive
[
jettool
.
name
()]
=
jcitem
def
edit_onthefly_algorithm
(
id
):
pass
def
set_onthefly_name
(
id
,
name
):
pass
def
get_onthefly_name
(
id
):
pass
def
view_history
(
self
):
evt
=
self
.
EventNumEntry
.
GetIntNumber
()
active_jets
=
[
ji
for
ji
in
self
.
JetCollectionsLive
.
values
()
if
ji
.
button
.
IsOn
()
]
try
:
jetitem
=
active_jets
[
0
]
except
:
print
"No live jets "
,
active_jets
return
if
not
jetitem
.
jetcoll
.
has_history
():
print
'no history for jets '
,
jetitem
.
name
return
print
'History for jets '
,
jetitem
.
name
j
=
JetHistoryGui
.
JetHistoryGui
(
ROOT
.
gClient
.
GetRoot
(),
self
,
jetitem
)
j
.
init
()
self
.
historyV
=
j
self
.
canvas
.
cd
()
pass
def
process_ev_check_button
(
id
):
pass
def
process_run_check_button
(
id
):
pass
def
process_run_radio_button
(
id
):
pass
def
fill_selected_jobs
():
pass
def
fill_selected_algs
():
pass
def
draw_ev_all_jobs
():
self
.
fill_selected_jobs
();
self
.
fill_selected_algs
();
npad
=
self
.
ndivY
*
self
.
ndivX
count
=
0
pass
def
reset_run_plots
(
self
):
self
.
run_expr_text
.
SetText
(
""
)
self
.
run_sel_text
.
SetText
(
""
)
def
draw_run_plots
(
self
):
print
'draw_run_plots'
self
.
run_histos
=
[]
active_jets
=
[
ji
for
ji
in
self
.
JetCollections
.
values
()
+
self
.
JetCollectionsLive
.
values
()
if
ji
.
button
.
IsOn
()
]
toDraw
=
self
.
run_expr_text
.
GetText
()
if
toDraw
==
""
:
try
:
ind
=
[
b
.
IsOn
()
for
b
in
self
.
run_vars_buttons
]
.
index
(
True
)
toDraw
=
"$$_"
+
self
.
run_defalt_vars
[
ind
]
except
:
pass
if
toDraw
==
""
:
return
toSelec
=
self
.
run_sel_text
.
GetText
()
for
ji
in
active_jets
:
expr
=
toDraw
.
replace
(
'$$'
,
ji
.
name
)
sel
=
toSelec
.
replace
(
'$$'
,
ji
.
name
)
tree
=
ji
.
retriever
.
get_tree
()
tree
.
Draw
(
expr
,
sel
,
" goff"
)
h
=
ROOT
.
TH1F
(
tree
.
GetHistogram
()
)
h
.
SetName
(
ji
.
name
)
h
.
SetTitle
(
toDraw
.
replace
(
'$$'
,
'Jet'
)
)
self
.
run_histos
.
append
(
h
)
colors
=
[
ROOT
.
kBlack
,
ROOT
.
ROOT
.
kRed
,
ROOT
.
kBlue
,
ROOT
.
kGreen
,
ROOT
.
kYellow
,
ROOT
.
kMagenta
,
ROOT
.
kCyan
,
ROOT
.
kOrange
]
s
=
''
leg
=
ROOT
.
TLegend
(
0.6
,
0.6
,
0.9
,
0.9
)
for
c
,
h
in
zip
(
colors
,
self
.
run_histos
):
h
.
SetLineColor
(
c
)
leg
.
AddEntry
(
h
,
h
.
GetName
())
h
.
Draw
(
s
)
s
=
'same'
leg
.
Draw
()
self
.
run_histos
.
append
(
leg
)
self
.
canvas
.
Update
()
def
evbyev_options
():
pass
def
close_options
():
pass
def
IsOptionsOpen
():
return
self
.
OptionsOpen
def
SetOptionsOpen
(
b
):
self
.
OptionsOpen
=
x
def
rename_algo_button
(
find
,
replace
):
pass
def
addTree
(
self
,
tree
,
filename
,
inputname
=
"InputJet"
,
alias
=
""
):
''' treename can be a TTree or a string (then filename must be set)'''
ret
=
PyJetRetrieverFile
()
ret
.
set_tree_file
(
tree
,
filename
,
5
)
ret
.
set_input_name
(
inputname
)
names
=
ret
.
find_algs
(
inputname
,
alias
)
jetsItems
=
{}
for
n
in
names
:
ji
=
JetCollItems
(
n
,
ret
)
ji
.
jetcoll
=
ROOT
.
SpartyJet
.
JetCollExtended
()
jetsItems
[
n
]
=
ji
inputJetItem
=
JetCollItems
(
n
,
ret
)
inputJetItem
.
inputcoll
=
ROOT
.
SpartyJet
.
JetInputCollection
()
for
ji
in
jetsItems
.
values
():
ji
.
inputcoll
=
inputJetItem
.
inputcoll
self
.
JetCollections
.
update
(
jetsItems
)
self
.
inputJetItem
.
append
(
inputJetItem
)
# public:
# enum SpartyMessage {
# MSG_EXIT =0,
# MSG_NEXT_EVENT,
# MSG_PREV_EVENT,
# MSG_SET_EVENT,
# MSG_CANVAS_RESET,
# MSG_CANVAS_CLEAR,
# MSG_CANVAS_DIVX,
# MSG_CANVAS_DIVY,
# MSG_ALGO_CHECKBUTTON=2000,
# # event plots button
# MSG_EV_CHECKB_FIRST = 3000,
# MSG_EV_CHECKB_PRINTEV ,
# MSG_EV_CHECKB_SNOWMASS ,
# MSG_EV_CHECKB_DVSZPLOT ,
# MSG_EV_CHECKB_LEGOPLOT ,
# MSG_EV_CHECKB_2DVIEW ,
# MSG_EV_CHECKB_LAST,
# MSG_BUTTON_DRAW_EV,
# MSG_BUTTON_OPTIONS,
# MSG_ALGO_CHECKBUTTON_R= 4000,
# # Run plots button
# MSG_RUN_CHECKB_FIRST =5000,
# MSG_RUN_CHECKB_ETPLOT,
# MSG_RUN_CHECKB_MASSPLOT,
# MSG_RUN_CHECKB_PHIPLOT,
# MSG_RUN_CHECKB_ETAPLOT,
# MSG_RUN_CHECKB_PTPLOTA,
# MSG_RUN_CHECKB_LAST,
# MSG_BUTTON_DRAW_RUN,
# MSG_RUN_FIRST_ENTRY,
# MSG_RUN_LAST_ENTRY,
# MSG_RUN_EXP_ENTRY,
# MSG_RUN_SEL_ENTRY,
# MSG_RUN_MIN,
# MSG_RUN_MAX,
# MSG_RUN_NBIN,
# MSG_ONTHEFLY_ADD,
# MSG_RUN_RADIOBUTTON = 9000,
# }
class
SJCallBack
(
object
):
def
__init__
(
self
,
gui
=
None
,
element
=
None
):
self
.
gui
=
gui
self
.
element
=
element
def
__call__
(
self
,
*
l
):
if
self
.
element
.
IsOn
():
print
self
.
element
,
'on'
else
:
print
self
.
element
,
'off'
class
JetCollCheckButton
(
SJCallBack
):
pass
File Metadata
Details
Attached
Mime Type
text/x-python
Expires
Thu, Apr 24, 6:37 AM (1 d, 21 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
4881857
Default Alt Text
SpartyGui.py (22 KB)
Attached To
rSPARTYJETSVN spartyjetsvn
Event Timeline
Log In to Comment