Subversion Repositories f9daq

Rev

Rev 269 | Rev 275 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 269 Rev 270
Line 29... Line 29...
29
 
29
 
30
  <script src="js/Blob.js"></script>
30
  <script src="js/Blob.js"></script>
31
 
31
 
32
 
32
 
33
<!-- <script type="text/javascript" src="js/JSRootCore.js?2d&onload=startGUI""></script> -->
33
<!-- <script type="text/javascript" src="js/JSRootCore.js?2d&onload=startGUI""></script> -->
34
   <script type="text/javascript" src="https://root.cern/js/latest/scripts/JSRootCore.js?more2d&math&onload=startGUI"></script>         
34
   <script type="text/javascript" src="https://root.cern/js/latest/scripts/JSRootCore.js?2d&onload=startGUI"></script>  
35
  <script type = "text/javascript"      language = "javascript">
35
  <script type = "text/javascript"      language = "javascript">
36
                 
36
                 
37
var es;
37
var es;
38
function addLog(message) {
38
function addLog(message) {
39
    var r = document.getElementById('results');
39
   var r = document.getElementById('results');
40
   //r.innerHTML += message + '<br>';
-
 
41
   r.insertAdjacentHTML('beforeend', message +'<br/>');
40
   r.insertAdjacentHTML('beforeend', message +'<br/>');
42
  // r.scrollTop = r.scrollHeight;
-
 
43
}
41
}
44
 
42
 
45
function showStat(message) {
43
function showStat(message) {
46
    var r = document.getElementById('sbar');
44
    var r = document.getElementById('sbar');
47
    r.innerHTML = message ;
45
    r.innerHTML = message ;
Line 50... Line 48...
50
 
48
 
51
 
49
 
52
function startGUI() {
50
function startGUI() {
53
        // d3.select('html').style('height','100%');
51
        // d3.select('html').style('height','100%');
54
        // d3.select('body').style({'min-height':'100%', 'margin':'0px', "overflow" :"hidden"});
52
        // d3.select('body').style({'min-height':'100%', 'margin':'0px', "overflow" :"hidden"});
55
//        var r = document.getElementById('results'); 
53
        //        var r = document.getElementById('results'); 
56
//        r.style.display = 'none';
54
        //        r.style.display = 'none';
57
        var r0 = document.getElementById('sbar');
55
        var r0 = document.getElementById('sbar');
58
        r0.style.display = 'none';
56
        r0.style.display = 'none';
-
 
57
        JSROOT.gStyle.fOptFit = 1111;
59
 
58
 
60
}
59
}
61
 
60
 
62
 
61
 
63
function fitpanel(oFormElement)
62
function fitpanel(oFormElement)
64
{
63
{
65
  var xhr = new XMLHttpRequest();
64
  var xhr = new XMLHttpRequest();
66
  xhr.onreadystatechange = function() {
65
  xhr.onreadystatechange = function() {
67
    if(xhr.readyState == 4 && xhr.status == 200) {
66
    if(xhr.readyState == 4 && xhr.status == 200) {
68
 
-
 
69
        var event = JSON.parse(xhr.responseText);        
67
        var event  = JSON.parse(xhr.responseText);        
70
        var result =event.data;
68
        var result = event.data;
71
        var jsonobj = JSROOT.parse(result.message);
69
        var th1    = JSROOT.parse(result.message);
72
        var sframe = jsonobj.fName;
-
 
73
        var tf1 = jsonobj.fFunctions.arr[0];
-
 
74
        var tformula = tf1.fFormula;
-
 
75
        var len = tf1.fNpar;
70
        var hname  = th1.fName;
76
//        addLog('#TF1     ' +JSON.stringify(tf1, null, '\t')+ '$$$<br>');
-
 
77
        mtext = '<br/>' + "Fit Function: " + tformula.fFormula+ '<br/>';
-
 
78
        mtext +="Chi2/NDF: " + tf1.fChisquare.toPrecision(2) + " / "+ tf1.fNDF+ '<br/>';
-
 
79
        mtext +='<table border="0" width="50%" >';
-
 
80
        for ( var i = 0;i <len;i++){
-
 
81
            var name = tformula.fParams[i].first;
71
        var r      = document.getElementById('drawing');
82
            var val  = tformula.fClingParameters[i];
72
        if (document.getElementById(hname) == null ){
83
            var err  = tf1.fParErrors[i];
-
 
84
            mtext += "<tr><td>" + name + " <td> " + val.toPrecision(4) + " <td>+-<td>" + err.toPrecision(2) + '<br/>';
73
          r.insertAdjacentHTML('beforeend', '<div id="' + hname +'" style="width:80%; height:80%;"></div><br/>');
85
        }
74
        }
86
        mtext +="</table><br/>";
-
 
87
        var mdiv = document.getElementById('param' + sframe);
75
        var hframe = document.getElementById(hname);
88
        mdiv.innerHTML = mtext;
76
        hframe.innerHTML = '';
89
               
-
 
90
        var r = document.getElementById('drawing');
77
//        https://github.com/root-project/jsroot/issues/42
91
        if (document.getElementById(sframe) == null ){
-
 
92
          r.insertAdjacentHTML('beforeend', '<div id="' + sframe +'" style="width:80%; height:80%;"></div><br/>');
-
 
93
        }
78
       
94
        var frame = document.getElementById(sframe);
79
        JSROOT.draw(hname, th1, "hist");
95
        frame.innerHTML = '';
80
        JSROOT.gStyle.fOptFit = 1111;
96
        JSROOT.draw(sframe, jsonobj, "hist");
81
        JSROOT.draw(hname, th1, "func");
-
 
82
 
97
        JSROOT.draw(sframe, jsonobj, "func");
83
       
98
        document.getElementById('data'+ sframe).value=result.message;
84
        document.getElementById('data'+ hname).value=result.message;
99
        frame.scrollIntoView();
85
        //frame.scrollIntoView();
100
    }
86
    }
101
  }
87
  }
102
  xhr.open (oFormElement.method, oFormElement.action, true);
88
  xhr.open (oFormElement.method, oFormElement.action, true);
103
 
89
 
104
  var data = new FormData (oFormElement);  
90
  var data = new FormData (oFormElement);  
Line 133... Line 119...
133
    });
119
    });
134
}
120
}
135
 
121
 
136
function EventListener(e) {
122
function EventListener(e) {
137
//addLog(JSON.stringify(e) );
123
//addLog(JSON.stringify(e) );
138
 
124
 
139
var result = JSON.parse( e.data );
125
var result = JSON.parse( e.data );
140
 
126
 
141
        if(e.lastEventId == 'CLOSE') {
127
        if(e.lastEventId == 'CLOSE') {
142
            addLog('Received CLOSE closing');
128
            addLog('Received CLOSE closing');
143
            es.close();
129
            es.close();
Line 154... Line 140...
154
                showStat(result.message);
140
                showStat(result.message);
155
              } else {
141
              } else {
156
                var jsonobj = JSROOT.parse(result.message);
142
                var jsonobj = JSROOT.parse(result.message);
157
                var sframe = jsonobj.fName;
143
                var sframe = jsonobj.fName;
158
               
144
               
159
       
145
       
160
                addLog('Histogram :'+ sframe );
146
                addLog('Histogram :'+ sframe );
161
                var r = document.getElementById('results');
147
                var r = document.getElementById('results');
162
                //var r = document.getElementById('drawing');
148
                //var r = document.getElementById('drawing');
163
                if (document.getElementById(sframe) == null ){
149
                if (document.getElementById(sframe) == null ){
164
                  r.insertAdjacentHTML('beforeend', '<div id="' + sframe +'" style="width:1000px; height:600px"></div><br/>');
150
                  r.insertAdjacentHTML('beforeend', '<div id="' + sframe +'" style="width:1000px; height:600px"></div><br/>');
165
                  r.insertAdjacentHTML('beforeend', '<div id="fit' + sframe +'" style="display: none"></div><br/>');
151
                  r.insertAdjacentHTML('beforeend', '<div id="fit' + sframe +'" style="display: none"></div><br/>');
166
                  var fit = document.getElementById('fit'+ sframe);
152
                  var fit = document.getElementById('fit'+ sframe);
167
mform ='<form method="post" action="th1fit.php" onsubmit="return fitpanel(this);">';
153
mform ='<form method="post" action="th1fit.php" onsubmit="return fitpanel(this);">';
168
mform += '  <input class="mybutton" type="submit" value="  Fit  "/>';
154
mform += '  Function:<input type="text"  size="20"  value="gaus"    name="fitfun" /><br/>';
169
mform += '  Range: min=<input type="text" size="2" value="0"   name="min" />';
155
mform += '  Range: min=<input type="text" size="2" value="0"   name="min" />';
170
mform += '  max:<input type="text" size="2"  value="20"   name="max" />';
156
mform += '  max=<input type="text" size="2"  value="20"   name="max" /><br/>';
171
mform += '  Function:<input type="text"  size="5"  value="gaus"    name="fitfun" />';
-
 
172
mform += '  Initial parameters<input type="text" size="5" value=""    name="prm" />';
157
mform += '  Initial parameters (separated by ,)<input type="text" size="20" value=""    name="prm" /><br/>';
173
mform += '  <input id="data'+ sframe +'" type="hidden" value="'+ result.message +'" name="data" />';
158
mform += '  <input id="data'+ sframe +'" type="hidden" value="'+ result.message +'" name="data" />';
174
mform += '  <input type="hidden" value="'+ sframe +'"    name="name" />';
159
mform += '  <input type="hidden" value="'+ sframe +'"    name="name" />';
-
 
160
mform += '  <input class="mybutton" type="submit" value="  Fit  "/>';
175
mform += '</form>';
161
mform += '</form>';
176
                  fit.insertAdjacentHTML('beforeend', '<div id="param' + sframe +'"></div><br/>');
162
                  fit.insertAdjacentHTML('beforeend', '<div id="param' + sframe +'"></div><br/>');
177
                  fit.insertAdjacentHTML('beforeend', mform);
163
                  fit.insertAdjacentHTML('beforeend', mform);
178
                  r.insertAdjacentHTML('beforeend','<input type="button" onclick="togglevisibility(\'fit'+sframe+'\');"  class="mybutton" value="Show/Hide Fit Panel" /><hr/>' );
164
                  r.insertAdjacentHTML('beforeend','<input type="button" onclick="togglevisibility(\'fit'+sframe+'\');"  class="mybutton" value="Show/Hide Fit Panel" /><hr/>' );
179
                  document.getElementById('data'+ sframe).value=result.message;
165
                  document.getElementById('data'+ sframe).value=result.message;
180
                  //r.insertAdjacentHTML('beforeend', JSON.stringify(result.message));
166
                  //r.insertAdjacentHTML('beforeend', JSON.stringify(result.message));
181
                }
167
                }
182
                var frame = document.getElementById(sframe);
168
                var frame = document.getElementById(sframe);
183
         
169
       
184
                JSROOT.redraw(sframe, jsonobj, "hist");
170
                JSROOT.redraw(sframe, jsonobj, "hist");
185
               
171
               
186
 
172
 
187
                frame.scrollIntoView();
173
                frame.scrollIntoView();
188
              }
174
              }