31,7 → 31,7 |
|
|
<!-- <script type="text/javascript" src="js/JSRootCore.js?2d&onload=startGUI""></script> --> |
<script type="text/javascript" src="https://root.cern/js/latest/scripts/JSRootCore.js?2d&onload=startGUI"></script> |
<script type="text/javascript" src="https://root.cern/js/latest/scripts/JSRootCore.js?more2d&math&onload=startGUI"></script> |
<script type = "text/javascript" language = "javascript"> |
|
var es; |
52,8 → 52,8 |
function startGUI() { |
// d3.select('html').style('height','100%'); |
// d3.select('body').style({'min-height':'100%', 'margin':'0px', "overflow" :"hidden"}); |
var r = document.getElementById('results'); |
r.style.display = 'none'; |
// var r = document.getElementById('results'); |
// r.style.display = 'none'; |
var r0 = document.getElementById('sbar'); |
r0.style.display = 'none'; |
|
60,7 → 60,55 |
} |
|
|
var cnt=0; |
function fitpanel(oFormElement) |
{ |
var xhr = new XMLHttpRequest(); |
xhr.onreadystatechange = function() { |
if(xhr.readyState == 4 && xhr.status == 200) { |
|
var event = JSON.parse(xhr.responseText); |
var result =event.data; |
var jsonobj = JSROOT.parse(result.message); |
var sframe = jsonobj.fName; |
var tf1 = jsonobj.fFunctions.arr[0]; |
var tformula = tf1.fFormula; |
var len = tf1.fNpar; |
// addLog('#TF1 ' +JSON.stringify(tf1, null, '\t')+ '$$$<br>'); |
mtext = '<br/>' + "Fit Function: " + tformula.fFormula+ '<br/>'; |
mtext +="Chi2/NDF: " + tf1.fChisquare.toPrecision(2) + " / "+ tf1.fNDF+ '<br/>'; |
mtext +='<table border="0" >'; |
for ( var i = 0;i <len;i++){ |
var name = tformula.fParams[i].first; |
var val = tformula.fClingParameters[i]; |
var err = tf1.fParErrors[i]; |
mtext += "<tr><td>" + name + " <td> " + val.toPrecision(4) + " <td>+-<td>" + err.toPrecision(2) + '<br/>'; |
} |
mtext +="</table><br/>"; |
var mdiv = document.getElementById('param' + sframe); |
mdiv.innerHTML = mtext; |
|
var r = document.getElementById('drawing'); |
if (document.getElementById(sframe) == null ){ |
r.insertAdjacentHTML('beforeend', '<div id="' + sframe +'" style="width:80%; height:80%;"></div><br/>'); |
} |
var frame = document.getElementById(sframe); |
frame.innerHTML = ''; |
JSROOT.draw(sframe, jsonobj, "hist"); |
JSROOT.draw(sframe, jsonobj, "func"); |
document.getElementById('data'+ sframe).value=result.message; |
frame.scrollIntoView(); |
} |
} |
xhr.open (oFormElement.method, oFormElement.action, true); |
|
var data = new FormData (oFormElement); |
xhr.send (data); |
|
return false; // Markus had to return true |
} |
|
|
|
function startTask() { |
|
var r = document.getElementById('results'); |
86,6 → 134,8 |
} |
|
function EventListener(e) { |
//addLog(JSON.stringify(e) ); |
|
var result = JSON.parse( e.data ); |
|
if(e.lastEventId == 'CLOSE') { |
104,16 → 154,36 |
showStat(result.message); |
} else { |
var jsonobj = JSROOT.parse(result.message); |
var sframe = 'rh'+ (cnt++); |
addLog('ROOT_JSON object '+ sframe ); |
//var r = document.getElementById('results'); |
var r = document.getElementById('drawing'); |
r.insertAdjacentHTML('beforeend', '<div id="' + sframe +'" style="width:60%; height:60%;"></div><br/>'); |
|
var sframe = jsonobj.fName; |
|
|
addLog('Histogram :'+ sframe ); |
var r = document.getElementById('results'); |
//var r = document.getElementById('drawing'); |
if (document.getElementById(sframe) == null ){ |
r.insertAdjacentHTML('beforeend', '<div id="' + sframe +'" style="width:1000px; height:600px"></div><br/>'); |
r.insertAdjacentHTML('beforeend', '<div id="fit' + sframe +'" style="display: none"></div><br/>'); |
var fit = document.getElementById('fit'+ sframe); |
mform ='<form method="post" action="th1fit.php" onsubmit="return fitpanel(this);">'; |
mform += ' <input class="mybutton" type="submit" value=" Fit "/>'; |
mform += ' Range: min=<input type="text" size="2" value="0" name="min" />'; |
mform += ' max:<input type="text" size="2" value="10" name="max" />'; |
mform += ' Function:<input type="text" size="5" value="gaus" name="fitfun" />'; |
mform += ' Initial parameters<input type="text" size="5" value="1;2;3" name="prm" />'; |
mform += ' <input id="data'+ sframe +'" type="hidden" value="'+ result.message +'" name="data" />'; |
mform += ' <input type="hidden" value="'+ sframe +'" name="name" />'; |
mform += '</form>'; |
|
fit.insertAdjacentHTML('beforeend', mform); |
fit.insertAdjacentHTML('beforeend', '<div id="param' + sframe +'"></div><br/>'); |
r.insertAdjacentHTML('beforeend','<input type="button" onclick="togglevisibility(\'fit'+sframe+'\');" class="mybutton" value="Show/Hide Fit Panel" /><hr/>' ); |
document.getElementById('data'+ sframe).value=result.message; |
//r.insertAdjacentHTML('beforeend', JSON.stringify(result.message)); |
} |
var frame = document.getElementById(sframe); |
//JSROOT.draw(frame, jsonobj, "hist"); |
JSROOT.draw(sframe, jsonobj, "hist"); |
//addLog('JSON :' + JSON.stringify(jsonobj)+ '<br>'); |
|
JSROOT.redraw(sframe, jsonobj, "hist"); |
|
|
frame.scrollIntoView(); |
} |
134,7 → 204,7 |
} |
|
|
|
/* |
function switchTask() { |
var div = document.getElementById('results'); |
var divs = document.getElementById('sbar'); |
152,12 → 222,24 |
} |
|
} |
*/ |
|
|
function togglevisibility( name ) { |
var div = document.getElementById(name); |
if (div.style.display !== 'none') { |
div.style.display = 'none'; |
} |
else { |
div.style.display = 'block'; |
} |
} |
|
|
function readSingleFile(e) { |
|
var div0 = document.getElementById('blocklyDiv'); |
if (div0.style.display === 'none') switchTask(); |
//if (div0.style.display === 'none') switchTask(); |
|
var file = e.target.files[0]; |
if (!file) { |
239,31 → 321,23 |
} |
|
|
|
|
|
|
</script> |
|
</head> |
<body> |
<h1>Belle II Masterclass: Define process →Analyse data →Visualise results →Save/load process locally</h1> |
<h1>Belle II Masterclass: Describe process →Run analysis →Fit results →Save/load process locally</h1> |
<!-- <input type="button" onclick="showCode();" class="mybutton" value="Show JavaScript" /> --> |
<input type="button" onclick="startTask();" class="mybutton" value="Run Analysis" /> |
<input type="button" onclick="stopTask();" class="mybutton" value="Interrupt" /> |
<input type="button" onclick="switchTask();" class="mybutton" value="Switch between Diagram and Results" /> |
<!-- <input type="button" onclick="switchTask();" class="mybutton" value="Switch between Diagram and Results" /> --> |
<input type="button" onclick="saveBlockly();" class="mybutton" value="Save Diagram" /> |
<form style="display:inline;"><label for="file-input" class="mybutton" style="">Load Diagram</label> |
<input type="file" style="visibility:hidden;" id="file-input" onClick="this.form.reset()" data-buttonText="Load Diagram"/></form> |
<br /> |
|
|
|
<input type="file" style="visibility:hidden;" id="file-input" onClick="this.form.reset()" data-buttonText="Load Diagram"/></form> |
<br/> |
<progress id='progressor' value="0" max='100' style="width:95%"></progress> |
<span id="percentage" style="text-align:right; display:block; margin-top:5px;">0</span> |
<p id="sbar" ></div> |
|
|
<br /> |
|
<div id="blocklyDiv" style="height:500px; width:95%"></div><br /> |
334,6 → 408,6 |
|
|
</script> |
<div id="drawing" style="width:800px; height:600px"></div> |
<div id="drawing"></div> |
</body> |
</html> |