Subversion Repositories f9daq

Compare Revisions

Ignore whitespace Rev 267 → Rev 268

/belle2/masterclass/index.php
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 &rarr;Analyse data &rarr;Visualise results &rarr;Save/load process locally</h1>
<h1>Belle II Masterclass: Describe process &rarr;Run analysis &rarr;Fit results &rarr;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>