]> jspc29.x-matter.uni-frankfurt.de Git - hadesdaq.git/commitdiff
latest jsroot files master
authorhadaq <jan@lxhadeb07>
Fri, 13 Jun 2025 13:43:24 +0000 (15:43 +0200)
committerhadaq <jan@lxhadeb07>
Fri, 13 Jun 2025 13:43:24 +0000 (15:43 +0200)
13 files changed:
hadesroot/EMC.htm
hadesroot/MDC.htm
hadesroot/Main.htm
hadesroot/Physics.htm
hadesroot/RICH.htm
hadesroot/RPC.htm
hadesroot/Start.htm
hadesroot/TDC.htm [new file with mode: 0644]
hadesroot/TOF.htm
hadesroot/WALL.htm
hadesroot/files/functions.mjs
hadesroot/files/tab.css
hadesroot/index.htm

index b234580738857b05ed01fe6aae98bb7356a37afe..23e20491b89369f7e4af61958cd26bf53b9f77d4 100644 (file)
@@ -6,11 +6,17 @@
   <link rel="icon" type="image/x-icon" href="icons/favicon.ico">
   <title>QA - EMC</title>
   <script type='module'>
-    import {openTab} from './files/functions.mjs';
+    import {openTab, openTabURL, updateDay, updateTime, updateURL} from './files/functions_base.mjs';
     window.openTab = openTab;
+    openTabURL();
+    window.updateURL = updateURL;
+    window.updateTime = () => updateTime("EMC");
+    updateDay("EMC");
+    setInterval(updateDay, 5*60*1000, "EMC");
   </script>
+
   <script type='module'>
-    import { initUpdate, update } from './files/functions.mjs';
+    import { initUpdate, update , updateOtherTabs} from './files/functions.mjs';
     
     let histnames = 
       [
         [
           {},
           [
-            {HIST: {fLineColor : 1, fLineWidth: 2}, LABEL: 'Sec 1', LEGENDNOAUTO: { fX1NDC: 0.8, fY1NDC: 0.75, fX2NDC: 0.99, fY2NDC: 0.90, fNColumns : 1, fTextSize : 0.04 }},
-            {HIST: {fLineColor : 600, fLineWidth: 2}, LABEL: 'Sec 2'},
-            {HIST: {fLineColor : 418, fLineWidth: 2}, LABEL: 'Sec 3'},
-            {HIST: {fLineColor : 861, fLineWidth: 2}, LABEL: 'Sec 4'},
-            {HIST: {fLineColor : 612, fLineWidth: 2}, LABEL: 'Sec 5'},
-            {HIST: {fLineColor : 806, fLineWidth: 2}, LABEL: 'Sec 6'}
+            {fLineColor : 103, fLineWidth: 2, LABEL: 'Sec 1', LEGENDNOAUTO: { fX1NDC: 0.8, fY1NDC: 0.70, fX2NDC: 0.99, fY2NDC: 0.90, fNColumns : 1, fTextSize : 0.04 }},
+            {fLineColor : 104, fLineWidth: 2, LABEL: 'Sec 2'},
+            {fLineColor : 105, fLineWidth: 2, LABEL: 'Sec 3'},
+            {fLineColor : 106, fLineWidth: 2, LABEL: 'Sec 4'},
+            {fLineColor : 107, fLineWidth: 2, LABEL: 'Sec 5'},
+            {fLineColor : 108, fLineWidth: 2, LABEL: 'Sec 6'}
           ],
           {},
-          {HIST: {fLineWidth: 2}},
+          {fLineWidth: 2},
           [
-            {HIST: {fFillStyle : 0, fLineColor : 1, fLineWidth: 2, fOption: 'l'}, LABEL: 'Sec 1', LEGENDNOAUTO: { fX1NDC: 0.8, fY1NDC: 0.75, fX2NDC: 0.99, fY2NDC: 0.90, fNColumns : 1, fTextSize : 0.04 }},
-            {HIST: {fFillStyle : 0, fLineColor : 600, fLineWidth: 2, fOption: 'l'}, LABEL: 'Sec 2'},
-            {HIST: {fFillStyle : 0, fLineColor : 418, fLineWidth: 2, fOption: 'l'}, LABEL: 'Sec 3'},
-            {HIST: {fFillStyle : 0, fLineColor : 861, fLineWidth: 2, fOption: 'l'}, LABEL: 'Sec 4'},
-            {HIST: {fFillStyle : 0, fLineColor : 612, fLineWidth: 2, fOption: 'l'}, LABEL: 'Sec 5'},
-            {HIST: {fFillStyle : 0, fLineColor : 806, fLineWidth: 2, fOption: 'l'}, LABEL: 'Sec 6'}
+            {fFillStyle : 0, fLineColor : 103, fLineWidth: 2, fOption: 'l', LABEL: 'Sec 1', LEGENDNOAUTO: { fX1NDC: 0.1, fY1NDC: 0.89, fX2NDC: 0.9, fY2NDC: 0.95, fNColumns: 3, fTextSize: 0.04}},
+            {fFillStyle : 0, fLineColor : 104, fLineWidth: 2, fOption: 'l', LABEL: 'Sec 2'},
+            {fFillStyle : 0, fLineColor : 105, fLineWidth: 2, fOption: 'l', LABEL: 'Sec 3'},
+            {fFillStyle : 0, fLineColor : 106, fLineWidth: 2, fOption: 'l', LABEL: 'Sec 4'},
+            {fFillStyle : 0, fLineColor : 107, fLineWidth: 2, fOption: 'l', LABEL: 'Sec 5'},
+            {fFillStyle : 0, fLineColor : 108, fLineWidth: 2, fOption: 'l', LABEL: 'Sec 6'}
           ],
           {}
         ],
         [
-          {HIST: {fOption: 'colz2 logz'}},
-          {HIST: {fOption: 'colz2 logz'}}
+          {fOption: 'colz2 logz'},
+          {fOption: 'colz2 logz'}
         ],
         [
-          {HIST: {fOption: 'colz2 logz'}},
-          {HIST: {fOption: 'colz2 logz'}},
-          {HIST: {fOption: 'colz2 logz'}},
-          {HIST: {fOption: 'colz2 logz'}}
+          {fOption: 'colz2 logz'},
+          {fOption: 'colz2 logz'},
+          {fOption: 'colz2 logz'},
+          {fOption: 'colz2 logz'}
         ]
       ];
     
       
       
     // console.log(histoptions);
-    initUpdate(histnames, histoptions, helptext, {Palette: 84});
-    setInterval(update, 3000, histnames, histoptions);
+    initUpdate(histnames, helptext, {Palette: 84});
+    const day = document.getElementById('daySel').value;
+    const time = document.getElementById('timeSel').value;
+    update(histnames, histoptions, day, time);
+    // updateOtherTabs(histnames, histoptions, day, time);
+    setInterval(() => 
+      {
+        const day = document.getElementById('daySel').value;
+        const time = document.getElementById('timeSel').value;
+        update(histnames, histoptions, day, time);
+      }, 3000
+    );
+    document.updateAll = () => 
+      {
+        const day = document.getElementById('daySel').value;
+        const time = document.getElementById('timeSel').value;
+        update(histnames, histoptions, day, time);
+        // updateOtherTabs(histnames, histoptions, day, time);
+      };
   </script>
 </head>
 
 <body>
   <div class="tab">
-    <a href="/hadesroot"><button><b>EMC</b></button></a>
-    <button class="tablinks active" onclick="openTab(event, 't0')">Main</button>
-    <button class="tablinks" onclick="openTab(event, 't1')">TimeWidth</button>
-    <button class="tablinks" onclick="openTab(event, 't2')">ExpertTimeTot</button>
+    <div class="tab-buttons">
+      <a href="/hadesroot"><button><b>EMC</b></button></a>
+      <button class="tablinks" onclick="openTab(event, 't0');updateAll()">Main</button>
+      <button class="tablinks" onclick="openTab(event, 't1');updateAll()">TimeWidth</button>
+      <button class="tablinks" onclick="openTab(event, 't2');updateAll()">ExpertTimeTot</button>
+    </div>
+    <div class="selector">
+      <select id="daySel"  onchange="updateTime()"></select>
+      <select id="timeSel" onchange="updateAll();updateURL()" ></select>
+    </div>
   </div>
 
-  <div id="t0" class="tabcontent active cell3x2">
+  <div id="t0" class="tabcontent cell3x2">
     <div><div id="t0d0"></div></div>
     <div><div id="t0d1"></div></div>
     <div><div id="t0d2"></div></div>
index b22fc8c284893cef380caee5ff43f15251d6746a..6b0bd2ec7ce9b0554c99fc7166bf8b479d627739 100644 (file)
@@ -6,12 +6,17 @@
   <link rel="icon" type="image/x-icon" href="icons/favicon.ico">
   <title>QA - MDC</title>
   <script type='module'>
-    import { openTab } from './files/functions.mjs';
+    import {openTab, openTabURL, updateDay, updateTime, updateURL} from './files/functions_base.mjs';
     window.openTab = openTab;
+    openTabURL();
+    window.updateURL = updateURL;
+    window.updateTime = () => updateTime("MDC");
+    updateDay("MDC");
+    setInterval(updateDay, 5*60*1000, "MDC");
   </script>
 
   <script type='module'>
-    import { initUpdate, update } from './files/functions.mjs';
+    import { initUpdate, update , updateOtherTabs} from './files/functions.mjs';
 //Missing hMdcWireVsLayer  (neuer Plot)
 
     let histnames = 
@@ -359,10 +364,9 @@ hMdcWireVsLayer*/
                       '','','II1','','','','','','II2','','','','','','II3','','','','','','II4','','','','','','II5','','','','','','II6','','','',
                       '','','III1','','','','','','III2','','','','','','III3','','','','','','III4','','','','','','III5','','','','','','III6','','','',
                       '','','IV1','','','','','','IV2','','','','','','IV3','','','','','','IV4','','','','','','IV5','','','','','','IV6','','',''
-            // ], HIST: {fOption: 'hist'}, LABEL: 'Uncut', LEGENDNOAUTO: { fX1NDC: 0.8, fY1NDC: 0.75, fX2NDC: 0.99, fY2NDC: 0.90, fNColumns : 1, fTextSize : 0.04 }, PAINTER: {painters: {1: { lineatt: {width: 3, changed: true, color: "#ff0000"}}}}},
-            ], HIST: {fOption: 'hist line_ff00ff'}, LABEL: 'Uncut', LEGENDNOAUTO: { fX1NDC: 0.8, fY1NDC: 0.75, fX2NDC: 0.99, fY2NDC: 0.90, fNColumns : 1, fTextSize : 0.04 }},
-            {HIST: { fOption: 'hist'}, LABEL: 'Cut'},
-            {HIST: { fOption: 'hist'}, LABEL: 'Noise'}
+            ], fOption: 'hist', LABEL: 'Uncut', LEGENDNOAUTO: { fX1NDC: 0.8, fY1NDC: 0.75, fX2NDC: 0.99, fY2NDC: 0.90, fNColumns : 1, fTextSize : 0.04 }},
+            { fOption: 'hist', LABEL: 'Cut'},
+            { fOption: 'hist', LABEL: 'Noise'}
           ],
           [
             {FRAME: {zoom_ymin: 0, zoom_ymax: 400, zoom_changed_y: true},
@@ -370,104 +374,104 @@ hMdcWireVsLayer*/
                       '','','II1','','','','','','II2','','','','','','II3','','','','','','II4','','','','','','II5','','','','','','II6','','','',
                       '','','III1','','','','','','III2','','','','','','III3','','','','','','III4','','','','','','III5','','','','','','III6','','','',
                       '','','IV1','','','','','','IV2','','','','','','IV3','','','','','','IV4','','','','','','IV5','','','','','','IV6','','',''
-            ], HIST: {fOption: 'hist', fMaximum: -1111}, LABEL: 'Uncut', LEGENDNOAUTO: { fX1NDC: 0.8, fY1NDC: 0.75, fX2NDC: 0.99, fY2NDC: 0.90, fNColumns : 1, fTextSize : 0.04 }},
-            {HIST: {fOption: 'hist', fMaximum: -1111}, LABEL: 'Cut'},
-            {HIST: {fOption: 'hist', fMaximum: -1111}, LABEL: 'Noise'},
+            ], fOption: 'hist', fMaximum: -1111, LABEL: 'Uncut', LEGENDNOAUTO: { fX1NDC: 0.8, fY1NDC: 0.75, fX2NDC: 0.99, fY2NDC: 0.90, fNColumns : 1, fTextSize : 0.04 }},
+            {fOption: 'hist', fMaximum: -1111, LABEL: 'Cut'},
+            {fOption: 'hist', fMaximum: -1111, LABEL: 'Noise'},
           ],
           [
-            {HIST: { fOption: 'colz2 logz'}},
-            {HIST: { fOption: 'text'}},
+            {fOption: 'colz2 logz'},
+            {fOption: 'text'},
           ],
-          [{HIST: { fOption: 'logy'}, LABEL: 'P0', LEGENDNOAUTO: { fX1NDC: 0.8, fY1NDC: 0.75, fX2NDC: 0.99, fY2NDC: 0.90, fNColumns : 1, fTextSize : 0.04 }}
+          [{fOption: 'logy', LABEL: 'P0', LEGENDNOAUTO: { fX1NDC: 0.8, fY1NDC: 0.75, fX2NDC: 0.99, fY2NDC: 0.90, fNColumns : 1, fTextSize : 0.04 }}
             ,{},{},{},{},{},{LABEL: 'P1'},{},{},{},{},{},{LABEL: 'P2'},{},{},{},{},{},{LABEL: 'P3'},{},{},{},{},{}],
           [{LABEL: 'P0', LEGENDNOAUTO: { fX1NDC: 0.1, fY1NDC: 0.88, fX2NDC: 0.90, fY2NDC: 0.93, fNColumns : 4, fTextSize : 0.04 }}
             ,{},{},{},{},{},{LABEL: 'P1'},{},{},{},{},{},{LABEL: 'P2'},{},{},{},{},{},{LABEL: 'P3'},{},{},{},{},{}],
-          {HIST: { fOption: 'colz2'}}
+          {fOption: 'colz2'}
         ],
         [{},{},{},{},{},{}],
         [
-          {HIST: {fTitle: 'Plane 1, Sector 1', fOption: 'colz2'}},
-          {HIST: {fTitle: 'Plane 1, Sector 2', fOption: 'colz2'}},
-          {HIST: {fTitle: 'Plane 1, Sector 3', fOption: 'colz2'}},
-          {HIST: {fTitle: 'Plane 1, Sector 4', fOption: 'colz2'}},
-          {HIST: {fTitle: 'Plane 1, Sector 5', fOption: 'colz2'}},
-          {HIST: {fTitle: 'Plane 1, Sector 6', fOption: 'colz2'}},
-          {HIST: {fTitle: 'Plane 2, Sector 1', fOption: 'colz2'}},
-          {HIST: {fTitle: 'Plane 2, Sector 2', fOption: 'colz2'}},
-          {HIST: {fTitle: 'Plane 2, Sector 3', fOption: 'colz2'}},
-          {HIST: {fTitle: 'Plane 2, Sector 4', fOption: 'colz2'}},
-          {HIST: {fTitle: 'Plane 2, Sector 5', fOption: 'colz2'}},
-          {HIST: {fTitle: 'Plane 2, Sector 6', fOption: 'colz2'}},
-          {HIST: {fTitle: 'Plane 3, Sector 1', fOption: 'colz2'}},
-          {HIST: {fTitle: 'Plane 3, Sector 2', fOption: 'colz2'}},
-          {HIST: {fTitle: 'Plane 3, Sector 3', fOption: 'colz2'}},
-          {HIST: {fTitle: 'Plane 3, Sector 4', fOption: 'colz2'}},
-          {HIST: {fTitle: 'Plane 3, Sector 5', fOption: 'colz2'}},
-          {HIST: {fTitle: 'Plane 3, Sector 6', fOption: 'colz2'}},
-          {HIST: {fTitle: 'Plane 4, Sector 1', fOption: 'colz2'}},
-          {HIST: {fTitle: 'Plane 4, Sector 2', fOption: 'colz2'}},
-          {HIST: {fTitle: 'Plane 4, Sector 3', fOption: 'colz2'}},
-          {HIST: {fTitle: 'Plane 4, Sector 4', fOption: 'colz2'}},
-          {HIST: {fTitle: 'Plane 4, Sector 5', fOption: 'colz2'}},
-          {HIST: {fTitle: 'Plane 4, Sector 6', fOption: 'colz2'}}
+          {fTitle: 'Plane 1, Sector 1', fOption: 'colz2'},
+          {fTitle: 'Plane 1, Sector 2', fOption: 'colz2'},
+          {fTitle: 'Plane 1, Sector 3', fOption: 'colz2'},
+          {fTitle: 'Plane 1, Sector 4', fOption: 'colz2'},
+          {fTitle: 'Plane 1, Sector 5', fOption: 'colz2'},
+          {fTitle: 'Plane 1, Sector 6', fOption: 'colz2'},
+          {fTitle: 'Plane 2, Sector 1', fOption: 'colz2'},
+          {fTitle: 'Plane 2, Sector 2', fOption: 'colz2'},
+          {fTitle: 'Plane 2, Sector 3', fOption: 'colz2'},
+          {fTitle: 'Plane 2, Sector 4', fOption: 'colz2'},
+          {fTitle: 'Plane 2, Sector 5', fOption: 'colz2'},
+          {fTitle: 'Plane 2, Sector 6', fOption: 'colz2'},
+          {fTitle: 'Plane 3, Sector 1', fOption: 'colz2'},
+          {fTitle: 'Plane 3, Sector 2', fOption: 'colz2'},
+          {fTitle: 'Plane 3, Sector 3', fOption: 'colz2'},
+          {fTitle: 'Plane 3, Sector 4', fOption: 'colz2'},
+          {fTitle: 'Plane 3, Sector 5', fOption: 'colz2'},
+          {fTitle: 'Plane 3, Sector 6', fOption: 'colz2'},
+          {fTitle: 'Plane 4, Sector 1', fOption: 'colz2'},
+          {fTitle: 'Plane 4, Sector 2', fOption: 'colz2'},
+          {fTitle: 'Plane 4, Sector 3', fOption: 'colz2'},
+          {fTitle: 'Plane 4, Sector 4', fOption: 'colz2'},
+          {fTitle: 'Plane 4, Sector 5', fOption: 'colz2'},
+          {fTitle: 'Plane 4, Sector 6', fOption: 'colz2'}
         ],
         [
-          {HIST: {fTitle: 'Plane 1, Sector 1', fOption: 'colz2'}},
-          {HIST: {fTitle: 'Plane 1, Sector 2', fOption: 'colz2'}},
-          {HIST: {fTitle: 'Plane 1, Sector 3', fOption: 'colz2'}},
-          {HIST: {fTitle: 'Plane 1, Sector 4', fOption: 'colz2'}},
-          {HIST: {fTitle: 'Plane 1, Sector 5', fOption: 'colz2'}},
-          {HIST: {fTitle: 'Plane 1, Sector 6', fOption: 'colz2'}},
-          {HIST: {fTitle: 'Plane 2, Sector 1', fOption: 'colz2'}},
-          {HIST: {fTitle: 'Plane 2, Sector 2', fOption: 'colz2'}},
-          {HIST: {fTitle: 'Plane 2, Sector 3', fOption: 'colz2'}},
-          {HIST: {fTitle: 'Plane 2, Sector 4', fOption: 'colz2'}},
-          {HIST: {fTitle: 'Plane 2, Sector 5', fOption: 'colz2'}},
-          {HIST: {fTitle: 'Plane 2, Sector 6', fOption: 'colz2'}},
-          {HIST: {fTitle: 'Plane 3, Sector 1', fOption: 'colz2'}},
-          {HIST: {fTitle: 'Plane 3, Sector 2', fOption: 'colz2'}},
-          {HIST: {fTitle: 'Plane 3, Sector 3', fOption: 'colz2'}},
-          {HIST: {fTitle: 'Plane 3, Sector 4', fOption: 'colz2'}},
-          {HIST: {fTitle: 'Plane 3, Sector 5', fOption: 'colz2'}},
-          {HIST: {fTitle: 'Plane 3, Sector 6', fOption: 'colz2'}},
-          {HIST: {fTitle: 'Plane 4, Sector 1', fOption: 'colz2'}},
-          {HIST: {fTitle: 'Plane 4, Sector 2', fOption: 'colz2'}},
-          {HIST: {fTitle: 'Plane 4, Sector 3', fOption: 'colz2'}},
-          {HIST: {fTitle: 'Plane 4, Sector 4', fOption: 'colz2'}},
-          {HIST: {fTitle: 'Plane 4, Sector 5', fOption: 'colz2'}},
-          {HIST: {fTitle: 'Plane 4, Sector 6', fOption: 'colz2'}}
+          {fTitle: 'Plane 1, Sector 1', fOption: 'colz2'},
+          {fTitle: 'Plane 1, Sector 2', fOption: 'colz2'},
+          {fTitle: 'Plane 1, Sector 3', fOption: 'colz2'},
+          {fTitle: 'Plane 1, Sector 4', fOption: 'colz2'},
+          {fTitle: 'Plane 1, Sector 5', fOption: 'colz2'},
+          {fTitle: 'Plane 1, Sector 6', fOption: 'colz2'},
+          {fTitle: 'Plane 2, Sector 1', fOption: 'colz2'},
+          {fTitle: 'Plane 2, Sector 2', fOption: 'colz2'},
+          {fTitle: 'Plane 2, Sector 3', fOption: 'colz2'},
+          {fTitle: 'Plane 2, Sector 4', fOption: 'colz2'},
+          {fTitle: 'Plane 2, Sector 5', fOption: 'colz2'},
+          {fTitle: 'Plane 2, Sector 6', fOption: 'colz2'},
+          {fTitle: 'Plane 3, Sector 1', fOption: 'colz2'},
+          {fTitle: 'Plane 3, Sector 2', fOption: 'colz2'},
+          {fTitle: 'Plane 3, Sector 3', fOption: 'colz2'},
+          {fTitle: 'Plane 3, Sector 4', fOption: 'colz2'},
+          {fTitle: 'Plane 3, Sector 5', fOption: 'colz2'},
+          {fTitle: 'Plane 3, Sector 6', fOption: 'colz2'},
+          {fTitle: 'Plane 4, Sector 1', fOption: 'colz2'},
+          {fTitle: 'Plane 4, Sector 2', fOption: 'colz2'},
+          {fTitle: 'Plane 4, Sector 3', fOption: 'colz2'},
+          {fTitle: 'Plane 4, Sector 4', fOption: 'colz2'},
+          {fTitle: 'Plane 4, Sector 5', fOption: 'colz2'},
+          {fTitle: 'Plane 4, Sector 6', fOption: 'colz2'}
         ],
         [
-          [{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 0', LEGENDNOAUTO: { fX1NDC: 0.8, fY1NDC: 0.65, fX2NDC: 0.99, fY2NDC: 0.90, fNColumns : 1, fTextSize : 0.04 }},{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 1'},{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 2'},{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 3'},{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 4'},{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 5'}],
-          [{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 0', LEGENDNOAUTO: { fX1NDC: 0.8, fY1NDC: 0.65, fX2NDC: 0.99, fY2NDC: 0.90, fNColumns : 1, fTextSize : 0.04 }},{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 1'},{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 2'},{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 3'},{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 4'},{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 5'}],
-          [{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 0', LEGENDNOAUTO: { fX1NDC: 0.8, fY1NDC: 0.65, fX2NDC: 0.99, fY2NDC: 0.90, fNColumns : 1, fTextSize : 0.04 }},{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 1'},{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 2'},{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 3'},{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 4'},{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 5'}],
-          [{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 0', LEGENDNOAUTO: { fX1NDC: 0.8, fY1NDC: 0.65, fX2NDC: 0.99, fY2NDC: 0.90, fNColumns : 1, fTextSize : 0.04 }},{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 1'},{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 2'},{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 3'},{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 4'},{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 5'}],
-          [{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 0', LEGENDNOAUTO: { fX1NDC: 0.8, fY1NDC: 0.65, fX2NDC: 0.99, fY2NDC: 0.90, fNColumns : 1, fTextSize : 0.04 }},{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 1'},{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 2'},{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 3'},{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 4'},{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 5'}],
-          [{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 0', LEGENDNOAUTO: { fX1NDC: 0.8, fY1NDC: 0.65, fX2NDC: 0.99, fY2NDC: 0.90, fNColumns : 1, fTextSize : 0.04 }},{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 1'},{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 2'},{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 3'},{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 4'},{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 5'}],
+          [{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 103, LABEL: 'Layer 0', LEGENDNOAUTO: { fX1NDC: 0.8, fY1NDC: 0.65, fX2NDC: 0.99, fY2NDC: 0.90, fNColumns : 1, fTextSize : 0.04 }},{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 104, LABEL: 'Layer 1'},{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 105, LABEL: 'Layer 2'},{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 106, LABEL: 'Layer 3'},{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 107, LABEL: 'Layer 4'},{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 108, LABEL: 'Layer 5'}],
+          [{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 103, LABEL: 'Layer 0', LEGENDNOAUTO: { fX1NDC: 0.8, fY1NDC: 0.65, fX2NDC: 0.99, fY2NDC: 0.90, fNColumns : 1, fTextSize : 0.04 }},{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 104, LABEL: 'Layer 1'},{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 105, LABEL: 'Layer 2'},{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 106, LABEL: 'Layer 3'},{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 107, LABEL: 'Layer 4'},{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 108, LABEL: 'Layer 5'}],
+          [{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 103, LABEL: 'Layer 0', LEGENDNOAUTO: { fX1NDC: 0.8, fY1NDC: 0.65, fX2NDC: 0.99, fY2NDC: 0.90, fNColumns : 1, fTextSize : 0.04 }},{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 104, LABEL: 'Layer 1'},{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 105, LABEL: 'Layer 2'},{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 106, LABEL: 'Layer 3'},{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 107, LABEL: 'Layer 4'},{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 108, LABEL: 'Layer 5'}],
+          [{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 103, LABEL: 'Layer 0', LEGENDNOAUTO: { fX1NDC: 0.8, fY1NDC: 0.65, fX2NDC: 0.99, fY2NDC: 0.90, fNColumns : 1, fTextSize : 0.04 }},{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 104, LABEL: 'Layer 1'},{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 105, LABEL: 'Layer 2'},{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 106, LABEL: 'Layer 3'},{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 107, LABEL: 'Layer 4'},{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 108, LABEL: 'Layer 5'}],
+          [{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 103, LABEL: 'Layer 0', LEGENDNOAUTO: { fX1NDC: 0.8, fY1NDC: 0.65, fX2NDC: 0.99, fY2NDC: 0.90, fNColumns : 1, fTextSize : 0.04 }},{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 104, LABEL: 'Layer 1'},{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 105, LABEL: 'Layer 2'},{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 106, LABEL: 'Layer 3'},{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 107, LABEL: 'Layer 4'},{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 108, LABEL: 'Layer 5'}],
+          [{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 103, LABEL: 'Layer 0', LEGENDNOAUTO: { fX1NDC: 0.8, fY1NDC: 0.65, fX2NDC: 0.99, fY2NDC: 0.90, fNColumns : 1, fTextSize : 0.04 }},{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 104, LABEL: 'Layer 1'},{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 105, LABEL: 'Layer 2'},{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 106, LABEL: 'Layer 3'},{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 107, LABEL: 'Layer 4'},{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 108, LABEL: 'Layer 5'}],
         ],
         [
-          [{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 0', LEGENDNOAUTO: { fX1NDC: 0.8, fY1NDC: 0.65, fX2NDC: 0.99, fY2NDC: 0.90, fNColumns : 1, fTextSize : 0.04 }},{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 1'},{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 2'},{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 3'},{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 4'},{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 5'}],
-          [{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 0', LEGENDNOAUTO: { fX1NDC: 0.8, fY1NDC: 0.65, fX2NDC: 0.99, fY2NDC: 0.90, fNColumns : 1, fTextSize : 0.04 }},{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 1'},{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 2'},{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 3'},{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 4'},{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 5'}],
-          [{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 0', LEGENDNOAUTO: { fX1NDC: 0.8, fY1NDC: 0.65, fX2NDC: 0.99, fY2NDC: 0.90, fNColumns : 1, fTextSize : 0.04 }},{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 1'},{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 2'},{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 3'},{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 4'},{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 5'}],
-          [{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 0', LEGENDNOAUTO: { fX1NDC: 0.8, fY1NDC: 0.65, fX2NDC: 0.99, fY2NDC: 0.90, fNColumns : 1, fTextSize : 0.04 }},{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 1'},{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 2'},{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 3'},{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 4'},{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 5'}],
-          [{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 0', LEGENDNOAUTO: { fX1NDC: 0.8, fY1NDC: 0.65, fX2NDC: 0.99, fY2NDC: 0.90, fNColumns : 1, fTextSize : 0.04 }},{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 1'},{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 2'},{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 3'},{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 4'},{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 5'}],
-          [{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 0', LEGENDNOAUTO: { fX1NDC: 0.8, fY1NDC: 0.65, fX2NDC: 0.99, fY2NDC: 0.90, fNColumns : 1, fTextSize : 0.04 }},{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 1'},{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 2'},{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 3'},{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 4'},{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 5'}],
+          [{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 103, LABEL: 'Layer 0', LEGENDNOAUTO: { fX1NDC: 0.8, fY1NDC: 0.65, fX2NDC: 0.99, fY2NDC: 0.90, fNColumns : 1, fTextSize : 0.04 }},{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 104, LABEL: 'Layer 1'},{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 105, LABEL: 'Layer 2'},{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 106, LABEL: 'Layer 3'},{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 107, LABEL: 'Layer 4'},{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 108, LABEL: 'Layer 5'}],
+          [{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 103, LABEL: 'Layer 0', LEGENDNOAUTO: { fX1NDC: 0.8, fY1NDC: 0.65, fX2NDC: 0.99, fY2NDC: 0.90, fNColumns : 1, fTextSize : 0.04 }},{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 104, LABEL: 'Layer 1'},{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 105, LABEL: 'Layer 2'},{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 106, LABEL: 'Layer 3'},{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 107, LABEL: 'Layer 4'},{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 108, LABEL: 'Layer 5'}],
+          [{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 103, LABEL: 'Layer 0', LEGENDNOAUTO: { fX1NDC: 0.8, fY1NDC: 0.65, fX2NDC: 0.99, fY2NDC: 0.90, fNColumns : 1, fTextSize : 0.04 }},{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 104, LABEL: 'Layer 1'},{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 105, LABEL: 'Layer 2'},{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 106, LABEL: 'Layer 3'},{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 107, LABEL: 'Layer 4'},{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 108, LABEL: 'Layer 5'}],
+          [{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 103, LABEL: 'Layer 0', LEGENDNOAUTO: { fX1NDC: 0.8, fY1NDC: 0.65, fX2NDC: 0.99, fY2NDC: 0.90, fNColumns : 1, fTextSize : 0.04 }},{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 104, LABEL: 'Layer 1'},{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 105, LABEL: 'Layer 2'},{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 106, LABEL: 'Layer 3'},{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 107, LABEL: 'Layer 4'},{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 108, LABEL: 'Layer 5'}],
+          [{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 103, LABEL: 'Layer 0', LEGENDNOAUTO: { fX1NDC: 0.8, fY1NDC: 0.65, fX2NDC: 0.99, fY2NDC: 0.90, fNColumns : 1, fTextSize : 0.04 }},{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 104, LABEL: 'Layer 1'},{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 105, LABEL: 'Layer 2'},{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 106, LABEL: 'Layer 3'},{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 107, LABEL: 'Layer 4'},{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 108, LABEL: 'Layer 5'}],
+          [{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 103, LABEL: 'Layer 0', LEGENDNOAUTO: { fX1NDC: 0.8, fY1NDC: 0.65, fX2NDC: 0.99, fY2NDC: 0.90, fNColumns : 1, fTextSize : 0.04 }},{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 104, LABEL: 'Layer 1'},{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 105, LABEL: 'Layer 2'},{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 106, LABEL: 'Layer 3'},{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 107, LABEL: 'Layer 4'},{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 108, LABEL: 'Layer 5'}],
         ],
         [
-          [{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 0', LEGENDNOAUTO: { fX1NDC: 0.8, fY1NDC: 0.65, fX2NDC: 0.99, fY2NDC: 0.90, fNColumns : 1, fTextSize : 0.04 }},{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 1'},{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 2'},{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 3'},{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 4'},{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 5'}],
-          [{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 0', LEGENDNOAUTO: { fX1NDC: 0.8, fY1NDC: 0.65, fX2NDC: 0.99, fY2NDC: 0.90, fNColumns : 1, fTextSize : 0.04 }},{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 1'},{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 2'},{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 3'},{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 4'},{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 5'}],
-          [{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 0', LEGENDNOAUTO: { fX1NDC: 0.8, fY1NDC: 0.65, fX2NDC: 0.99, fY2NDC: 0.90, fNColumns : 1, fTextSize : 0.04 }},{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 1'},{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 2'},{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 3'},{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 4'},{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 5'}],
-          [{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 0', LEGENDNOAUTO: { fX1NDC: 0.8, fY1NDC: 0.65, fX2NDC: 0.99, fY2NDC: 0.90, fNColumns : 1, fTextSize : 0.04 }},{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 1'},{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 2'},{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 3'},{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 4'},{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 5'}],
-          [{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 0', LEGENDNOAUTO: { fX1NDC: 0.8, fY1NDC: 0.65, fX2NDC: 0.99, fY2NDC: 0.90, fNColumns : 1, fTextSize : 0.04 }},{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 1'},{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 2'},{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 3'},{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 4'},{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 5'}],
-          [{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 0', LEGENDNOAUTO: { fX1NDC: 0.8, fY1NDC: 0.65, fX2NDC: 0.99, fY2NDC: 0.90, fNColumns : 1, fTextSize : 0.04 }},{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 1'},{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 2'},{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 3'},{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 4'},{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 5'}],
+          [{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 103, LABEL: 'Layer 0', LEGENDNOAUTO: { fX1NDC: 0.8, fY1NDC: 0.65, fX2NDC: 0.99, fY2NDC: 0.90, fNColumns : 1, fTextSize : 0.04 }},{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 104, LABEL: 'Layer 1'},{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 105, LABEL: 'Layer 2'},{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 106, LABEL: 'Layer 3'},{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 107, LABEL: 'Layer 4'},{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 108, LABEL: 'Layer 5'}],
+          [{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 103, LABEL: 'Layer 0', LEGENDNOAUTO: { fX1NDC: 0.8, fY1NDC: 0.65, fX2NDC: 0.99, fY2NDC: 0.90, fNColumns : 1, fTextSize : 0.04 }},{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 104, LABEL: 'Layer 1'},{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 105, LABEL: 'Layer 2'},{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 106, LABEL: 'Layer 3'},{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 107, LABEL: 'Layer 4'},{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 108, LABEL: 'Layer 5'}],
+          [{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 103, LABEL: 'Layer 0', LEGENDNOAUTO: { fX1NDC: 0.8, fY1NDC: 0.65, fX2NDC: 0.99, fY2NDC: 0.90, fNColumns : 1, fTextSize : 0.04 }},{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 104, LABEL: 'Layer 1'},{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 105, LABEL: 'Layer 2'},{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 106, LABEL: 'Layer 3'},{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 107, LABEL: 'Layer 4'},{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 108, LABEL: 'Layer 5'}],
+          [{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 103, LABEL: 'Layer 0', LEGENDNOAUTO: { fX1NDC: 0.8, fY1NDC: 0.65, fX2NDC: 0.99, fY2NDC: 0.90, fNColumns : 1, fTextSize : 0.04 }},{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 104, LABEL: 'Layer 1'},{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 105, LABEL: 'Layer 2'},{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 106, LABEL: 'Layer 3'},{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 107, LABEL: 'Layer 4'},{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 108, LABEL: 'Layer 5'}],
+          [{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 103, LABEL: 'Layer 0', LEGENDNOAUTO: { fX1NDC: 0.8, fY1NDC: 0.65, fX2NDC: 0.99, fY2NDC: 0.90, fNColumns : 1, fTextSize : 0.04 }},{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 104, LABEL: 'Layer 1'},{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 105, LABEL: 'Layer 2'},{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 106, LABEL: 'Layer 3'},{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 107, LABEL: 'Layer 4'},{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 108, LABEL: 'Layer 5'}],
+          [{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 103, LABEL: 'Layer 0', LEGENDNOAUTO: { fX1NDC: 0.8, fY1NDC: 0.65, fX2NDC: 0.99, fY2NDC: 0.90, fNColumns : 1, fTextSize : 0.04 }},{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 104, LABEL: 'Layer 1'},{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 105, LABEL: 'Layer 2'},{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 106, LABEL: 'Layer 3'},{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 107, LABEL: 'Layer 4'},{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 108, LABEL: 'Layer 5'}],
         ],
         [
-          [{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 0', LEGENDNOAUTO: { fX1NDC: 0.8, fY1NDC: 0.65, fX2NDC: 0.99, fY2NDC: 0.90, fNColumns : 1, fTextSize : 0.04 }},{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 1'},{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 2'},{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 3'},{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 4'},{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 5'}],
-          [{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 0', LEGENDNOAUTO: { fX1NDC: 0.8, fY1NDC: 0.65, fX2NDC: 0.99, fY2NDC: 0.90, fNColumns : 1, fTextSize : 0.04 }},{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 1'},{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 2'},{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 3'},{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 4'},{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 5'}],
-          [{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 0', LEGENDNOAUTO: { fX1NDC: 0.8, fY1NDC: 0.65, fX2NDC: 0.99, fY2NDC: 0.90, fNColumns : 1, fTextSize : 0.04 }},{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 1'},{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 2'},{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 3'},{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 4'},{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 5'}],
-          [{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 0', LEGENDNOAUTO: { fX1NDC: 0.8, fY1NDC: 0.65, fX2NDC: 0.99, fY2NDC: 0.90, fNColumns : 1, fTextSize : 0.04 }},{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 1'},{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 2'},{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 3'},{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 4'},{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 5'}],
-          [{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 0', LEGENDNOAUTO: { fX1NDC: 0.8, fY1NDC: 0.65, fX2NDC: 0.99, fY2NDC: 0.90, fNColumns : 1, fTextSize : 0.04 }},{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 1'},{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 2'},{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 3'},{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 4'},{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 5'}],
-          [{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 0', LEGENDNOAUTO: { fX1NDC: 0.8, fY1NDC: 0.65, fX2NDC: 0.99, fY2NDC: 0.90, fNColumns : 1, fTextSize : 0.04 }},{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 1'},{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 2'},{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 3'},{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 4'},{HIST: {fOption: 'hist logy', fMaximum: -1111}, LABEL: 'Layer 5'}],
+          [{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 103, LABEL: 'Layer 0', LEGENDNOAUTO: { fX1NDC: 0.8, fY1NDC: 0.65, fX2NDC: 0.99, fY2NDC: 0.90, fNColumns : 1, fTextSize : 0.04 }},{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 104, LABEL: 'Layer 1'},{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 105, LABEL: 'Layer 2'},{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 106, LABEL: 'Layer 3'},{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 107, LABEL: 'Layer 4'},{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 108, LABEL: 'Layer 5'}],
+          [{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 103, LABEL: 'Layer 0', LEGENDNOAUTO: { fX1NDC: 0.8, fY1NDC: 0.65, fX2NDC: 0.99, fY2NDC: 0.90, fNColumns : 1, fTextSize : 0.04 }},{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 104, LABEL: 'Layer 1'},{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 105, LABEL: 'Layer 2'},{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 106, LABEL: 'Layer 3'},{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 107, LABEL: 'Layer 4'},{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 108, LABEL: 'Layer 5'}],
+          [{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 103, LABEL: 'Layer 0', LEGENDNOAUTO: { fX1NDC: 0.8, fY1NDC: 0.65, fX2NDC: 0.99, fY2NDC: 0.90, fNColumns : 1, fTextSize : 0.04 }},{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 104, LABEL: 'Layer 1'},{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 105, LABEL: 'Layer 2'},{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 106, LABEL: 'Layer 3'},{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 107, LABEL: 'Layer 4'},{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 108, LABEL: 'Layer 5'}],
+          [{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 103, LABEL: 'Layer 0', LEGENDNOAUTO: { fX1NDC: 0.8, fY1NDC: 0.65, fX2NDC: 0.99, fY2NDC: 0.90, fNColumns : 1, fTextSize : 0.04 }},{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 104, LABEL: 'Layer 1'},{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 105, LABEL: 'Layer 2'},{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 106, LABEL: 'Layer 3'},{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 107, LABEL: 'Layer 4'},{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 108, LABEL: 'Layer 5'}],
+          [{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 103, LABEL: 'Layer 0', LEGENDNOAUTO: { fX1NDC: 0.8, fY1NDC: 0.65, fX2NDC: 0.99, fY2NDC: 0.90, fNColumns : 1, fTextSize : 0.04 }},{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 104, LABEL: 'Layer 1'},{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 105, LABEL: 'Layer 2'},{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 106, LABEL: 'Layer 3'},{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 107, LABEL: 'Layer 4'},{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 108, LABEL: 'Layer 5'}],
+          [{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 103, LABEL: 'Layer 0', LEGENDNOAUTO: { fX1NDC: 0.8, fY1NDC: 0.65, fX2NDC: 0.99, fY2NDC: 0.90, fNColumns : 1, fTextSize : 0.04 }},{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 104, LABEL: 'Layer 1'},{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 105, LABEL: 'Layer 2'},{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 106, LABEL: 'Layer 3'},{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 107, LABEL: 'Layer 4'},{fOption: 'hist logy', fMaximum: -1111, fLineWidth: 2, fLineColor: 108, LABEL: 'Layer 5'}],
         ],
       ];
       
@@ -509,25 +513,48 @@ let helptext =
     ];
       
       
-    await initUpdate(histnames, histoptions, helptext, {Palette: 55});
-    // update(histnames,histoptions);
-    setInterval(update, 5000, histnames, histoptions);
+    await initUpdate(histnames, helptext, {Palette: 55});
+    const day = document.getElementById('daySel').value;
+    const time = document.getElementById('timeSel').value;
+    update(histnames, histoptions, day, time);
+    // updateOtherTabs(histnames, histoptions, day, time);
+    setInterval(() => 
+      {
+        const day = document.getElementById('daySel').value;
+        const time = document.getElementById('timeSel').value;
+        update(histnames, histoptions, day, time);
+      }, 3000
+    );
+    document.updateAll = () => 
+      {
+        const day = document.getElementById('daySel').value;
+        const time = document.getElementById('timeSel').value;
+        update(histnames, histoptions, day, time);
+        // updateOtherTabs(histnames, histoptions, day, time);
+      };
+
   </script>
 </head>
 
 <body>
   <div class="tab">
-    <a href="/hadesroot"><button><b>MDC</b></button></a>
-    <button class="tablinks active" onclick="openTab(event, 't0')">Main</button>
-    <button class="tablinks"        onclick="openTab(event, 't1')">FEE</button>
-    <button class="tablinks"        onclick="openTab(event, 't2')">Potatos</button>
-    <button class="tablinks"        onclick="openTab(event, 't3')">PotatosRaw</button>
-    <button class="tablinks"        onclick="openTab(event, 't4')">Wires I</button>
-    <button class="tablinks"        onclick="openTab(event, 't5')">Wires II</button>
-    <button class="tablinks"        onclick="openTab(event, 't6')">Wires III</button>
-    <button class="tablinks"        onclick="openTab(event, 't7')">Wires IV</button>
+    <div class="tab-buttons">
+      <a href="/hadesroot"><button><b>MDC</b></button></a>
+      <button class="tablinks" onclick="openTab(event, 't0');updateAll()">Main</button>
+      <button class="tablinks" onclick="openTab(event, 't1');updateAll()">FEE</button>
+      <button class="tablinks" onclick="openTab(event, 't2');updateAll()">Potatos</button>
+      <button class="tablinks" onclick="openTab(event, 't3');updateAll()">PotatosRaw</button>
+      <button class="tablinks" onclick="openTab(event, 't4');updateAll()">Wires I</button>
+      <button class="tablinks" onclick="openTab(event, 't5');updateAll()">Wires II</button>
+      <button class="tablinks" onclick="openTab(event, 't6');updateAll()">Wires III</button>
+      <button class="tablinks" onclick="openTab(event, 't7');updateAll()">Wires IV</button>
+    </div>
+    <div class="selector">
+      <select id="daySel"  onchange="updateTime()"></select>
+      <select id="timeSel" onchange="updateAll();updateURL()" ></select>
+    </div>
   </div>
<div id="t0" class="tabcontent cell3x2 active">
 <div id="t0" class="tabcontent cell3x2">
     <div><div id="t0d0"></div></div>
     <div><div id="t0d1"></div></div>
     <div><div id="t0d2"></div></div>
@@ -535,7 +562,7 @@ let helptext =
     <div><div id="t0d4"></div></div>
     <div><div id="t0d5"></div></div>
   </div>
- <div id="t1" class="tabcontent cell1_2x1">
 <div id="t1" class="tabcontent cell1_2x1">
     <div><div id="t1d0"></div></div>
     <div><div id="t1d1"></div></div>
     <div><div id="t1d2"></div></div>
index 3bba6309ed1d5a9eca9b5c3d53bfd134740c3426..eda738e25996cd36445e5db4458cc1e2540cef0c 100644 (file)
@@ -6,13 +6,17 @@
   <link rel="icon" type="image/x-icon" href="icons/favicon.ico">
   <title>QA - Main</title>
   <script type='module'>
-    import { openTab } from './files/functions.mjs';
+    import {openTab, openTabURL, updateDay, updateTime, updateURL} from './files/functions_base.mjs';
     window.openTab = openTab;
+    openTabURL();
+    window.updateURL = updateURL;
+    window.updateTime = () => updateTime("general");
+    updateDay("general");
+    setInterval(updateDay, 5*60*1000, "general");
   </script>
 
   <script type='module'>
-    import { initUpdate, update } from './files/functions.mjs';
-
+    import { initUpdate, update , updateOtherTabs} from './files/functions.mjs';
 
     let histnames = 
       [
       [
         [
           {XLABEL: ['Start', 'Veto', 'M1', 'M2', 'M3', 'M4', 'M5', 'M6', 'M2 nn', 'M3 nn', 'M2 opp', 'PT1', 'PT2', 'PT3', 'PT4', 'PT5', 'FW', 'RICH', 'PT8'],
-            HIST : {fTitle: 'hLatch - Trigger Type', fOption: 'logy'}, FRAME: {zoom_xmin: 0, zoom_xmax: 19, zoom_changed_x: true}
+            fTitle: 'hLatch - Trigger Type', fOption: 'logy', FRAME: {zoom_xmin: 0, zoom_xmax: 19, zoom_changed_x: true}
            },
-          {HIST: {fOption: 'logy'}},
-          {HIST : {fTitle: 'hLatchMult'}},
+          {fOption: 'logy'},
+          {fTitle: 'hLatchMult'},
           [
-            {HIST: {fLineWidth: 2}, LABEL: 'All', LEGENDNOAUTO: { fX1NDC: 0.8, fY1NDC: 0.45, fX2NDC: 0.99, fY2NDC: 0.90, fNColumns : 1, fTextSize : 0.04 }},
-            {HIST: {fLineWidth: 2}, LABEL: 'PT1'},
-            {HIST: {fLineWidth: 2}, LABEL: 'PT2'},
-            {HIST: {fLineWidth: 2}, LABEL: 'PT3'}
+            {fLineWidth: 2, LABEL: 'All', LEGENDNOAUTO: { fX1NDC: 0.8, fY1NDC: 0.45, fX2NDC: 0.99, fY2NDC: 0.90, fNColumns : 1, fTextSize : 0.04 }},
+            {fLineWidth: 2, LABEL: 'PT1'},
+            {fLineWidth: 2, LABEL: 'PT2'},
+            {fLineWidth: 2, LABEL: 'PT3'}
           ],
           [
-            {HIST: {fLineWidth: 2}, LABEL: 'All', LEGENDNOAUTO: { fX1NDC: 0.8, fY1NDC: 0.45, fX2NDC: 0.99, fY2NDC: 0.90, fNColumns : 1, fTextSize : 0.04 }},
-            {HIST: {fLineWidth: 2}, LABEL: 'PT1'},
-            {HIST: {fLineWidth: 2}, LABEL: 'PT2'},
-            {HIST: {fLineWidth: 2}, LABEL: 'PT3'}
+            {fLineWidth: 2, LABEL: 'All', LEGENDNOAUTO: { fX1NDC: 0.8, fY1NDC: 0.45, fX2NDC: 0.99, fY2NDC: 0.90, fNColumns : 1, fTextSize : 0.04 }},
+            {fLineWidth: 2, LABEL: 'PT1'},
+            {fLineWidth: 2, LABEL: 'PT2'},
+            {fLineWidth: 2, LABEL: 'PT3'}
           ],
           [
-            {HIST: {fOption: 'colz2', fXaxis: {fTitle: 'p/z [MeV/c]'}}, STACK: true},
-            {HIST: {fOption: 'colz2'}},
-            {HIST: {fOption: 'colz2'}},
-            {HIST: {fOption: 'colz2'}},
-            {HIST: {fOption: 'colz2'}},
-            {HIST: {fOption: 'colz2'}},
-            {HIST: {fOption: 'colz2'}},
-            {HIST: {fOption: 'colz2'}},
-            {HIST: {fOption: 'colz2'}},
-            {HIST: {fOption: 'colz2'}},
-            {HIST: {fOption: 'colz2'}},
-            {HIST: {fOption: 'colz2'}}
+            {fOption: 'colz2', fXaxis: {fTitle: 'p/z [MeV/c]'}, STACK: true},
+            {fOption: 'colz2'},
+            {fOption: 'colz2'},
+            {fOption: 'colz2'},
+            {fOption: 'colz2'},
+            {fOption: 'colz2'},
+            {fOption: 'colz2'},
+            {fOption: 'colz2'},
+            {fOption: 'colz2'},
+            {fOption: 'colz2'},
+            {fOption: 'colz2'},
+            {fOption: 'colz2'}
           ],
         ],
         [
-          {HIST: {fOption: 'hist l', fTitle: 'PT1'}},
-          {HIST: {fOption: 'hist l', fTitle: 'PT2'}},
-          {HIST: {fOption: 'hist l', fTitle: 'PT3'}},
-          {HIST: {fOption: 'hist l', fTitle: 'PT4'}}
-        ]        
+          {fOption: 'hist l', fTitle: 'PT1'},
+          {fOption: 'hist l', fTitle: 'PT2'},
+          {fOption: 'hist l', fTitle: 'PT3'},
+          {fOption: 'hist l', fTitle: 'PT4'}
+        ]
       ];
       
     let helptext = 
       ];       
       
       
-    await initUpdate(histnames,histoptions, helptext, {Palette : 55});
-    // update(histnames,histoptions);
-    setInterval(update, 3000, histnames, histoptions);
+    await initUpdate(histnames, helptext, {Palette : 55});
+    const day = document.getElementById('daySel').value;
+    const time = document.getElementById('timeSel').value;
+    update(histnames, histoptions, day, time);
+    // updateOtherTabs(histnames, histoptions, day, time);
+    setInterval(() => 
+      {
+        const day = document.getElementById('daySel').value;
+        const time = document.getElementById('timeSel').value;
+        update(histnames, histoptions, day, time);
+      }, 3000
+    );
+    document.updateAll = () => 
+      {
+        const day = document.getElementById('daySel').value;
+        const time = document.getElementById('timeSel').value;
+        update(histnames, histoptions, day, time);
+        // updateOtherTabs(histnames, histoptions, day, time);
+      };
   </script>
 </head>
 
 <body>
   <div class="tab">
-    <a href="/hadesroot"><button><b>Main</b></button></a>
-    <button class="tablinks active" onclick="openTab(event, 't0')">Main</button>
-    <button class="tablinks" onclick="openTab(event, 't1')">TriggerTrend</button>    
+    <div class="tab-buttons">
+      <a href="/hadesroot"><button><b>Main</b></button></a>
+      <button class="tablinks" onclick="openTab(event, 't0');updateAll()">Main</button>
+      <button class="tablinks" onclick="openTab(event, 't1');updateAll()">TriggerTrend</button>
+    </div>
+    <div class="selector">
+      <select id="daySel"  onchange="updateTime()"></select>
+      <select id="timeSel" onchange="updateAll();updateURL()" ></select>
+    </div>
   </div>
 
-  <div id="t0" class="tabcontent cell3x2 active">
+  <div id="t0" class="tabcontent cell3x2">
     <div><div id="t0d0"></div></div>
     <div><div id="t0d1"></div></div>
     <div><div id="t0d2"></div></div>
index 0143bca4493ab3131201c5632d1091a59bf3f9a2..0cb82fba179a953ba8358ae96a5bd6726cfefca1 100644 (file)
@@ -6,12 +6,17 @@
   <link rel="icon" type="image/x-icon" href="icons/favicon.ico">
   <title>QA - Physics</title>
   <script type='module'>
-    import { openTab } from './files/functions.mjs';
+    import {openTab, openTabURL, updateDay, updateTime, updateURL} from './files/functions_base.mjs';
     window.openTab = openTab;
+    openTabURL();
+    window.updateURL = updateURL;
+    window.updateTime = () => updateTime("general");
+    updateDay("general");
+    setInterval(updateDay, 5*60*1000, "general");
   </script>
 
   <script type='module'>
-    import { initUpdate, update } from './files/functions.mjs';
+    import { initUpdate, update , updateOtherTabs} from './files/functions.mjs';
 
     let histnames = 
       [
@@ -56,7 +61,7 @@
           "general/hPhys_candPhi_Used_Sys/hPhys_candPhi_Used_Sys__0__0_",
           "general/hPhys_candPhi_Used_Sys/hPhys_candPhi_Used_Sys__0__1_"
           ]
-        ],      
+        ],
         [
         "general/hPhys_candBetaMom_Sys0/hPhys_candBetaMom_Sys0__0__0_" , 
         "general/hPhys_candBetaMom_Sys0/hPhys_candBetaMom_Sys0__0__1_" ,
         "general/hPhys_candVertex_Y",
         "general/hPhys_candVertex_Z",
         "general/hPhys_candVertex_Zclust"
-        ]      
+        ]
       ];
     
     let histoptions = 
       [
 /*tab0*/[
           [
-            {HIST: {fLineColor : 1, fLineWidth: 2, fOption: 'hist'}, LABEL: 'Sec0', LEGENDNOAUTO: { fX1NDC: 0.8, fY1NDC: 0.65, fX2NDC: 0.99, fY2NDC: 0.90, fNColumns : 1, fTextSize : 0.04 }},
-            {HIST: {fLineColor : 600, fLineWidth: 2, fOption: 'hist'}, LABEL: 'Sec1'},
-            {HIST: {fLineColor : 418, fLineWidth: 2, fOption: 'hist'}, LABEL: 'Sec2'},
-            {HIST: {fLineColor : 861, fLineWidth: 2, fOption: 'hist'}, LABEL: 'Sec3'},
-            {HIST: {fLineColor : 612, fLineWidth: 2, fOption: 'hist'}, LABEL: 'Sec4'},
-            {HIST: {fLineColor : 806, fLineWidth: 2, fOption: 'hist'}, LABEL: 'Sec5'}
+            {fLineColor : 103, fLineWidth: 2, fOption: 'hist', LABEL: 'Sec0', LEGENDNOAUTO: { fX1NDC: 0.8, fY1NDC: 0.65, fX2NDC: 0.99, fY2NDC: 0.90, fNColumns : 1, fTextSize : 0.04 }},
+            {fLineColor : 104, fLineWidth: 2, fOption: 'hist', LABEL: 'Sec1'},
+            {fLineColor : 105, fLineWidth: 2, fOption: 'hist', LABEL: 'Sec2'},
+            {fLineColor : 106, fLineWidth: 2, fOption: 'hist', LABEL: 'Sec3'},
+            {fLineColor : 107, fLineWidth: 2, fOption: 'hist', LABEL: 'Sec4'},
+            {fLineColor : 108, fLineWidth: 2, fOption: 'hist', LABEL: 'Sec5'}
           ],
           [
-            {HIST: {fLineColor : 1, fLineWidth: 2, fOption: 'hist'}, LABEL: 'Sec0', LEGENDNOAUTO: { fX1NDC: 0.8, fY1NDC: 0.65, fX2NDC: 0.99, fY2NDC: 0.90, fNColumns : 1, fTextSize : 0.04 }},
-            {HIST: {fLineColor : 600, fLineWidth: 2, fOption: 'hist'}, LABEL: 'Sec1'},
-            {HIST: {fLineColor : 418, fLineWidth: 2, fOption: 'hist'}, LABEL: 'Sec2'},
-            {HIST: {fLineColor : 861, fLineWidth: 2, fOption: 'hist'}, LABEL: 'Sec3'},
-            {HIST: {fLineColor : 612, fLineWidth: 2, fOption: 'hist'}, LABEL: 'Sec4'},
-            {HIST: {fLineColor : 806, fLineWidth: 2, fOption: 'hist'}, LABEL: 'Sec5'}
+            {fLineColor : 103, fLineWidth: 2, fOption: 'hist', LABEL: 'Sec0', LEGENDNOAUTO: { fX1NDC: 0.8, fY1NDC: 0.65, fX2NDC: 0.99, fY2NDC: 0.90, fNColumns : 1, fTextSize : 0.04 }},
+            {fLineColor : 104, fLineWidth: 2, fOption: 'hist', LABEL: 'Sec1'},
+            {fLineColor : 105, fLineWidth: 2, fOption: 'hist', LABEL: 'Sec2'},
+            {fLineColor : 106, fLineWidth: 2, fOption: 'hist', LABEL: 'Sec3'},
+            {fLineColor : 107, fLineWidth: 2, fOption: 'hist', LABEL: 'Sec4'},
+            {fLineColor : 108, fLineWidth: 2, fOption: 'hist', LABEL: 'Sec5'}
           ],
           [
-            {LABEL: 'Sys0', LEGENDNOAUTO: { fX1NDC: 0.1, fY1NDC: 0.88, fX2NDC: 0.90, fY2NDC: 0.93, fNColumns : 2, fTextSize : 0.04 }},
-            {LABEL: 'Sys1'}
+            {fLineWidth: 2, LABEL: 'Sys0', LEGENDNOAUTO: { fX1NDC: 0.1, fY1NDC: 0.88, fX2NDC: 0.90, fY2NDC: 0.93, fNColumns : 2, fTextSize : 0.04 }},
+            {fLineWidth: 2, LABEL: 'Sys1'}
           ],
           [
-            {HIST: {fLineColor : 1, fLineWidth: 2, fOption: 'hist'}, LABEL: 'Sec0', LEGENDNOAUTO: { fX1NDC: 0.8, fY1NDC: 0.65, fX2NDC: 0.99, fY2NDC: 0.90, fNColumns : 1, fTextSize : 0.04 }},
-            {HIST: {fLineColor : 600, fLineWidth: 2, fOption: 'hist'}, LABEL: 'Sec1'},
-            {HIST: {fLineColor : 418, fLineWidth: 2, fOption: 'hist'}, LABEL: 'Sec2'},
-            {HIST: {fLineColor : 861, fLineWidth: 2, fOption: 'hist'}, LABEL: 'Sec3'},
-            {HIST: {fLineColor : 612, fLineWidth: 2, fOption: 'hist'}, LABEL: 'Sec4'},
-            {HIST: {fLineColor : 806, fLineWidth: 2, fOption: 'hist'}, LABEL: 'Sec5'}
+            {fLineColor : 103, fLineWidth: 2, fOption: 'hist', LABEL: 'Sec0', LEGENDNOAUTO: { fX1NDC: 0.8, fY1NDC: 0.65, fX2NDC: 0.99, fY2NDC: 0.90, fNColumns : 1, fTextSize : 0.04 }},
+            {fLineColor : 104, fLineWidth: 2, fOption: 'hist', LABEL: 'Sec1'},
+            {fLineColor : 105, fLineWidth: 2, fOption: 'hist', LABEL: 'Sec2'},
+            {fLineColor : 106, fLineWidth: 2, fOption: 'hist', LABEL: 'Sec3'},
+            {fLineColor : 107, fLineWidth: 2, fOption: 'hist', LABEL: 'Sec4'},
+            {fLineColor : 108, fLineWidth: 2, fOption: 'hist', LABEL: 'Sec5'}
           ],
           [
-            {HIST: {fLineColor : 1, fLineWidth: 2, fOption: 'hist'}, LABEL: 'Sec0', LEGENDNOAUTO: { fX1NDC: 0.8, fY1NDC: 0.65, fX2NDC: 0.99, fY2NDC: 0.90, fNColumns : 1, fTextSize : 0.04 }},
-            {HIST: {fLineColor : 600, fLineWidth: 2, fOption: 'hist'}, LABEL: 'Sec1'},
-            {HIST: {fLineColor : 418, fLineWidth: 2, fOption: 'hist'}, LABEL: 'Sec2'},
-            {HIST: {fLineColor : 861, fLineWidth: 2, fOption: 'hist'}, LABEL: 'Sec3'},
-            {HIST: {fLineColor : 612, fLineWidth: 2, fOption: 'hist'}, LABEL: 'Sec4'},
-            {HIST: {fLineColor : 806, fLineWidth: 2, fOption: 'hist'}, LABEL: 'Sec5'}
+            {fLineColor : 103, fLineWidth: 2, fOption: 'hist', LABEL: 'Sec0', LEGENDNOAUTO: { fX1NDC: 0.8, fY1NDC: 0.65, fX2NDC: 0.99, fY2NDC: 0.90, fNColumns : 1, fTextSize : 0.04 }},
+            {fLineColor : 104, fLineWidth: 2, fOption: 'hist', LABEL: 'Sec1'},
+            {fLineColor : 105, fLineWidth: 2, fOption: 'hist', LABEL: 'Sec2'},
+            {fLineColor : 106, fLineWidth: 2, fOption: 'hist', LABEL: 'Sec3'},
+            {fLineColor : 107, fLineWidth: 2, fOption: 'hist', LABEL: 'Sec4'},
+            {fLineColor : 108, fLineWidth: 2, fOption: 'hist', LABEL: 'Sec5'}
           ],
           [
-            {LABEL: 'Sys0', LEGENDNOAUTO: { fX1NDC: 0.1, fY1NDC: 0.88, fX2NDC: 0.90, fY2NDC: 0.93, fNColumns : 2, fTextSize : 0.04 }},
-            {LABEL: 'Sys1'}
+            {fLineWidth: 2, LABEL: 'Sys0', LEGENDNOAUTO: { fX1NDC: 0.1, fY1NDC: 0.88, fX2NDC: 0.90, fY2NDC: 0.93, fNColumns : 2, fTextSize : 0.04 }},
+            {fLineWidth: 2, LABEL: 'Sys1'}
           ],
         ],
 /*tab1*/[
-          {HIST: {fTitle: 'RPC, Sector 0', fOption: 'colz2 pal50'}},
-          {HIST: {fTitle: 'RPC, Sector 1', fOption: 'colz2 pal50'}},
-          {HIST: {fTitle: 'RPC, Sector 2', fOption: 'colz2 pal50'}},
-          {HIST: {fTitle: 'RPC, Sector 3', fOption: 'colz2 pal50'}},
-          {HIST: {fTitle: 'RPC, Sector 4', fOption: 'colz2 pal50'}},
-          {HIST: {fTitle: 'RPC, Sector 5', fOption: 'colz2 pal50'}}
+          {fTitle: 'RPC, Sector 0', fOption: 'colz2 pal50'},
+          {fTitle: 'RPC, Sector 1', fOption: 'colz2 pal50'},
+          {fTitle: 'RPC, Sector 2', fOption: 'colz2 pal50'},
+          {fTitle: 'RPC, Sector 3', fOption: 'colz2 pal50'},
+          {fTitle: 'RPC, Sector 4', fOption: 'colz2 pal50'},
+          {fTitle: 'RPC, Sector 5', fOption: 'colz2 pal50'}
         ],
 /*tab2*/[
-          {HIST: {fTitle: 'TOF, Sector 0', fOption: 'colz2 pal50'}},
-          {HIST: {fTitle: 'TOF, Sector 1', fOption: 'colz2 pal50'}},
-          {HIST: {fTitle: 'TOF, Sector 2', fOption: 'colz2 pal50'}},
-          {HIST: {fTitle: 'TOF, Sector 3', fOption: 'colz2 pal50'}},
-          {HIST: {fTitle: 'TOF, Sector 4', fOption: 'colz2 pal50'}},
-          {HIST: {fTitle: 'TOF, Sector 5', fOption: 'colz2 pal50'}}
+          {fTitle: 'TOF, Sector 0', fOption: 'colz2 pal50'},
+          {fTitle: 'TOF, Sector 1', fOption: 'colz2 pal50'},
+          {fTitle: 'TOF, Sector 2', fOption: 'colz2 pal50'},
+          {fTitle: 'TOF, Sector 3', fOption: 'colz2 pal50'},
+          {fTitle: 'TOF, Sector 4', fOption: 'colz2 pal50'},
+          {fTitle: 'TOF, Sector 5', fOption: 'colz2 pal50'}
         ],
 /*tab3*/[
           [
-            {HIST: {fLineColor : 1, fLineWidth: 2, fOption: 'hist'}, LABEL: 'Sec0', LEGENDNOAUTO: { fX1NDC: 0.8, fY1NDC: 0.65, fX2NDC: 0.99, fY2NDC: 0.90, fNColumns : 1, fTextSize : 0.04 }},
-            {HIST: {fLineColor : 600, fLineWidth: 2, fOption: 'hist'}, LABEL: 'Sec1'},
-            {HIST: {fLineColor : 418, fLineWidth: 2, fOption: 'hist'}, LABEL: 'Sec2'},
-            {HIST: {fLineColor : 861, fLineWidth: 2, fOption: 'hist'}, LABEL: 'Sec3'},
-            {HIST: {fLineColor : 612, fLineWidth: 2, fOption: 'hist'}, LABEL: 'Sec4'},
-            {HIST: {fLineColor : 806, fLineWidth: 2, fOption: 'hist'}, LABEL: 'Sec5'}
+            {fLineColor : 103, fLineWidth: 2, fOption: 'hist', LABEL: 'Sec0', LEGENDNOAUTO: { fX1NDC: 0.8, fY1NDC: 0.65, fX2NDC: 0.99, fY2NDC: 0.90, fNColumns : 1, fTextSize : 0.04 }},
+            {fLineColor : 104, fLineWidth: 2, fOption: 'hist', LABEL: 'Sec1'},
+            {fLineColor : 105, fLineWidth: 2, fOption: 'hist', LABEL: 'Sec2'},
+            {fLineColor : 106, fLineWidth: 2, fOption: 'hist', LABEL: 'Sec3'},
+            {fLineColor : 107, fLineWidth: 2, fOption: 'hist', LABEL: 'Sec4'},
+            {fLineColor : 108, fLineWidth: 2, fOption: 'hist', LABEL: 'Sec5'}
           ],
           [
-            {HIST: {fLineColor : 1, fLineWidth: 2, fOption: 'hist'}, LABEL: 'Sec0', LEGENDNOAUTO: { fX1NDC: 0.8, fY1NDC: 0.65, fX2NDC: 0.99, fY2NDC: 0.90, fNColumns : 1, fTextSize : 0.04 }},
-            {HIST: {fLineColor : 600, fLineWidth: 2, fOption: 'hist'}, LABEL: 'Sec1'},
-            {HIST: {fLineColor : 418, fLineWidth: 2, fOption: 'hist'}, LABEL: 'Sec2'},
-            {HIST: {fLineColor : 861, fLineWidth: 2, fOption: 'hist'}, LABEL: 'Sec3'},
-            {HIST: {fLineColor : 612, fLineWidth: 2, fOption: 'hist'}, LABEL: 'Sec4'},
-            {HIST: {fLineColor : 806, fLineWidth: 2, fOption: 'hist'}, LABEL: 'Sec5'}
+            {fLineColor : 103, fLineWidth: 2, fOption: 'hist', LABEL: 'Sec0', LEGENDNOAUTO: { fX1NDC: 0.8, fY1NDC: 0.65, fX2NDC: 0.99, fY2NDC: 0.90, fNColumns : 1, fTextSize : 0.04 }},
+            {fLineColor : 104, fLineWidth: 2, fOption: 'hist', LABEL: 'Sec1'},
+            {fLineColor : 105, fLineWidth: 2, fOption: 'hist', LABEL: 'Sec2'},
+            {fLineColor : 106, fLineWidth: 2, fOption: 'hist', LABEL: 'Sec3'},
+            {fLineColor : 107, fLineWidth: 2, fOption: 'hist', LABEL: 'Sec4'},
+            {fLineColor : 108, fLineWidth: 2, fOption: 'hist', LABEL: 'Sec5'}
           ],
           [
-            {HIST: {fLineColor : 1, fLineWidth: 2, fOption: 'hist'}, LABEL: 'Sec0', LEGENDNOAUTO: { fX1NDC: 0.8, fY1NDC: 0.65, fX2NDC: 0.99, fY2NDC: 0.90, fNColumns : 1, fTextSize : 0.04 }},
-            {HIST: {fLineColor : 600, fLineWidth: 2, fOption: 'hist'}, LABEL: 'Sec1'},
-            {HIST: {fLineColor : 418, fLineWidth: 2, fOption: 'hist'}, LABEL: 'Sec2'},
-            {HIST: {fLineColor : 861, fLineWidth: 2, fOption: 'hist'}, LABEL: 'Sec3'},
-            {HIST: {fLineColor : 612, fLineWidth: 2, fOption: 'hist'}, LABEL: 'Sec4'},
-            {HIST: {fLineColor : 806, fLineWidth: 2, fOption: 'hist'}, LABEL: 'Sec5'}
+            {fLineColor : 103, fLineWidth: 2, fOption: 'hist', LABEL: 'Sec0', LEGENDNOAUTO: { fX1NDC: 0.8, fY1NDC: 0.65, fX2NDC: 0.99, fY2NDC: 0.90, fNColumns : 1, fTextSize : 0.04 }},
+            {fLineColor : 104, fLineWidth: 2, fOption: 'hist', LABEL: 'Sec1'},
+            {fLineColor : 105, fLineWidth: 2, fOption: 'hist', LABEL: 'Sec2'},
+            {fLineColor : 106, fLineWidth: 2, fOption: 'hist', LABEL: 'Sec3'},
+            {fLineColor : 107, fLineWidth: 2, fOption: 'hist', LABEL: 'Sec4'},
+            {fLineColor : 108, fLineWidth: 2, fOption: 'hist', LABEL: 'Sec5'}
           ],
           [
-            {HIST: {fLineColor : 1, fLineWidth: 2, fOption: 'hist'}, LABEL: 'Sec0', LEGENDNOAUTO: { fX1NDC: 0.8, fY1NDC: 0.65, fX2NDC: 0.99, fY2NDC: 0.90, fNColumns : 1, fTextSize : 0.04 }},
-            {HIST: {fLineColor : 600, fLineWidth: 2, fOption: 'hist'}, LABEL: 'Sec1'},
-            {HIST: {fLineColor : 418, fLineWidth: 2, fOption: 'hist'}, LABEL: 'Sec2'},
-            {HIST: {fLineColor : 861, fLineWidth: 2, fOption: 'hist'}, LABEL: 'Sec3'},
-            {HIST: {fLineColor : 612, fLineWidth: 2, fOption: 'hist'}, LABEL: 'Sec4'},
-            {HIST: {fLineColor : 806, fLineWidth: 2, fOption: 'hist'}, LABEL: 'Sec5'}
+            {fLineColor : 103, fLineWidth: 2, fOption: 'hist', LABEL: 'Sec0', LEGENDNOAUTO: { fX1NDC: 0.8, fY1NDC: 0.65, fX2NDC: 0.99, fY2NDC: 0.90, fNColumns : 1, fTextSize : 0.04 }},
+            {fLineColor : 104, fLineWidth: 2, fOption: 'hist', LABEL: 'Sec1'},
+            {fLineColor : 105, fLineWidth: 2, fOption: 'hist', LABEL: 'Sec2'},
+            {fLineColor : 106, fLineWidth: 2, fOption: 'hist', LABEL: 'Sec3'},
+            {fLineColor : 107, fLineWidth: 2, fOption: 'hist', LABEL: 'Sec4'},
+            {fLineColor : 108, fLineWidth: 2, fOption: 'hist', LABEL: 'Sec5'}
           ],
           [
-            {HIST: {fLineColor : 1, fLineWidth: 2, fOption: 'hist'}, LABEL: 'Sec0', LEGENDNOAUTO: { fX1NDC: 0.8, fY1NDC: 0.65, fX2NDC: 0.99, fY2NDC: 0.90, fNColumns : 1, fTextSize : 0.04 }},
-            {HIST: {fLineColor : 600, fLineWidth: 2, fOption: 'hist'}, LABEL: 'Sec1'},
-            {HIST: {fLineColor : 418, fLineWidth: 2, fOption: 'hist'}, LABEL: 'Sec2'},
-            {HIST: {fLineColor : 861, fLineWidth: 2, fOption: 'hist'}, LABEL: 'Sec3'},
-            {HIST: {fLineColor : 612, fLineWidth: 2, fOption: 'hist'}, LABEL: 'Sec4'},
-            {HIST: {fLineColor : 806, fLineWidth: 2, fOption: 'hist'}, LABEL: 'Sec5'}
+            {fLineColor : 103, fLineWidth: 2, fOption: 'hist', LABEL: 'Sec0', LEGENDNOAUTO: { fX1NDC: 0.8, fY1NDC: 0.65, fX2NDC: 0.99, fY2NDC: 0.90, fNColumns : 1, fTextSize : 0.04 }},
+            {fLineColor : 104, fLineWidth: 2, fOption: 'hist', LABEL: 'Sec1'},
+            {fLineColor : 105, fLineWidth: 2, fOption: 'hist', LABEL: 'Sec2'},
+            {fLineColor : 106, fLineWidth: 2, fOption: 'hist', LABEL: 'Sec3'},
+            {fLineColor : 107, fLineWidth: 2, fOption: 'hist', LABEL: 'Sec4'},
+            {fLineColor : 108, fLineWidth: 2, fOption: 'hist', LABEL: 'Sec5'}
           ],
           [
-            {HIST: {fLineColor : 1, fLineWidth: 2, fOption: 'hist'}, LABEL: 'Sec0', LEGENDNOAUTO: { fX1NDC: 0.8, fY1NDC: 0.65, fX2NDC: 0.99, fY2NDC: 0.90, fNColumns : 1, fTextSize : 0.04 }},
-            {HIST: {fLineColor : 600, fLineWidth: 2, fOption: 'hist'}, LABEL: 'Sec1'},
-            {HIST: {fLineColor : 418, fLineWidth: 2, fOption: 'hist'}, LABEL: 'Sec2'},
-            {HIST: {fLineColor : 861, fLineWidth: 2, fOption: 'hist'}, LABEL: 'Sec3'},
-            {HIST: {fLineColor : 612, fLineWidth: 2, fOption: 'hist'}, LABEL: 'Sec4'},
-            {HIST: {fLineColor : 806, fLineWidth: 2, fOption: 'hist'}, LABEL: 'Sec5'}
+            {fLineColor : 103, fLineWidth: 2, fOption: 'hist', LABEL: 'Sec0', LEGENDNOAUTO: { fX1NDC: 0.8, fY1NDC: 0.65, fX2NDC: 0.99, fY2NDC: 0.90, fNColumns : 1, fTextSize : 0.04 }},
+            {fLineColor : 104, fLineWidth: 2, fOption: 'hist', LABEL: 'Sec1'},
+            {fLineColor : 105, fLineWidth: 2, fOption: 'hist', LABEL: 'Sec2'},
+            {fLineColor : 106, fLineWidth: 2, fOption: 'hist', LABEL: 'Sec3'},
+            {fLineColor : 107, fLineWidth: 2, fOption: 'hist', LABEL: 'Sec4'},
+            {fLineColor : 108, fLineWidth: 2, fOption: 'hist', LABEL: 'Sec5'}
           ]
         ],
         [
-          {HIST: {fTitle: 'RPC, Track Cand Mult'}},
-          {HIST: {fTitle: 'RPC, Track Mult Sum'}},
-          {HIST: {fTitle: 'RPC, Mult Lep Sum'}},
-          {HIST: {fTitle: 'TOF, Track Cand Mult'}},
-          {HIST: {fTitle: 'TOF, Track Mult Sum'}},
-          {HIST: {fTitle: 'TOF, Mult Lep Sum'}}
+          {fTitle: 'RPC, Track Cand Mult'},
+          {fTitle: 'RPC, Track Mult Sum'},
+          {fTitle: 'RPC, Mult Lep Sum'},
+          {fTitle: 'TOF, Track Cand Mult'},
+          {fTitle: 'TOF, Track Mult Sum'},
+          {fTitle: 'TOF, Mult Lep Sum'}
         ],
         [
           [
-            {HIST: {fLineColor : 1, fLineWidth: 2, fOption: 'hist'}, LABEL: 'Sec0', LEGENDNOAUTO: { fX1NDC: 0.8, fY1NDC: 0.65, fX2NDC: 0.99, fY2NDC: 0.90, fNColumns : 1, fTextSize : 0.04 }},
-            {HIST: {fLineColor : 600, fLineWidth: 2, fOption: 'hist'}, LABEL: 'Sec1'},
-            {HIST: {fLineColor : 418, fLineWidth: 2, fOption: 'hist'}, LABEL: 'Sec2'},
-            {HIST: {fLineColor : 861, fLineWidth: 2, fOption: 'hist'}, LABEL: 'Sec3'},
-            {HIST: {fLineColor : 612, fLineWidth: 2, fOption: 'hist'}, LABEL: 'Sec4'},
-            {HIST: {fLineColor : 806, fLineWidth: 2, fOption: 'hist'}, LABEL: 'Sec5'}
+            {fLineColor : 103, fLineWidth: 2, fOption: 'hist', LABEL: 'Sec0', LEGENDNOAUTO: { fX1NDC: 0.8, fY1NDC: 0.65, fX2NDC: 0.99, fY2NDC: 0.90, fNColumns : 1, fTextSize : 0.04 }},
+            {fLineColor : 104, fLineWidth: 2, fOption: 'hist', LABEL: 'Sec1'},
+            {fLineColor : 105, fLineWidth: 2, fOption: 'hist', LABEL: 'Sec2'},
+            {fLineColor : 106, fLineWidth: 2, fOption: 'hist', LABEL: 'Sec3'},
+            {fLineColor : 107, fLineWidth: 2, fOption: 'hist', LABEL: 'Sec4'},
+            {fLineColor : 108, fLineWidth: 2, fOption: 'hist', LABEL: 'Sec5'}
           ],
           [
-            {HIST: {fLineColor : 1, fLineWidth: 2, fOption: 'hist'}, LABEL: 'Sec0', LEGENDNOAUTO: { fX1NDC: 0.8, fY1NDC: 0.65, fX2NDC: 0.99, fY2NDC: 0.90, fNColumns : 1, fTextSize : 0.04 }},
-            {HIST: {fLineColor : 600, fLineWidth: 2, fOption: 'hist'}, LABEL: 'Sec1'},
-            {HIST: {fLineColor : 418, fLineWidth: 2, fOption: 'hist'}, LABEL: 'Sec2'},
-            {HIST: {fLineColor : 861, fLineWidth: 2, fOption: 'hist'}, LABEL: 'Sec3'},
-            {HIST: {fLineColor : 612, fLineWidth: 2, fOption: 'hist'}, LABEL: 'Sec4'},
-            {HIST: {fLineColor : 806, fLineWidth: 2, fOption: 'hist'}, LABEL: 'Sec5'}
+            {fLineColor : 103, fLineWidth: 2, fOption: 'hist', LABEL: 'Sec0', LEGENDNOAUTO: { fX1NDC: 0.8, fY1NDC: 0.65, fX2NDC: 0.99, fY2NDC: 0.90, fNColumns : 1, fTextSize : 0.04 }},
+            {fLineColor : 104, fLineWidth: 2, fOption: 'hist', LABEL: 'Sec1'},
+            {fLineColor : 105, fLineWidth: 2, fOption: 'hist', LABEL: 'Sec2'},
+            {fLineColor : 106, fLineWidth: 2, fOption: 'hist', LABEL: 'Sec3'},
+            {fLineColor : 107, fLineWidth: 2, fOption: 'hist', LABEL: 'Sec4'},
+            {fLineColor : 108, fLineWidth: 2, fOption: 'hist', LABEL: 'Sec5'}
           ],
           [
-            {HIST: {fLineColor : 1, fLineWidth: 2, fOption: 'hist'}, LABEL: 'Sec0', LEGENDNOAUTO: { fX1NDC: 0.8, fY1NDC: 0.65, fX2NDC: 0.99, fY2NDC: 0.90, fNColumns : 1, fTextSize : 0.04 }},
-            {HIST: {fLineColor : 600, fLineWidth: 2, fOption: 'hist'}, LABEL: 'Sec1'},
-            {HIST: {fLineColor : 418, fLineWidth: 2, fOption: 'hist'}, LABEL: 'Sec2'},
-            {HIST: {fLineColor : 861, fLineWidth: 2, fOption: 'hist'}, LABEL: 'Sec3'},
-            {HIST: {fLineColor : 612, fLineWidth: 2, fOption: 'hist'}, LABEL: 'Sec4'},
-            {HIST: {fLineColor : 806, fLineWidth: 2, fOption: 'hist'}, LABEL: 'Sec5'}
+            {fLineColor : 103, fLineWidth: 2, fOption: 'hist', LABEL: 'Sec0', LEGENDNOAUTO: { fX1NDC: 0.8, fY1NDC: 0.65, fX2NDC: 0.99, fY2NDC: 0.90, fNColumns : 1, fTextSize : 0.04 }},
+            {fLineColor : 104, fLineWidth: 2, fOption: 'hist', LABEL: 'Sec1'},
+            {fLineColor : 105, fLineWidth: 2, fOption: 'hist', LABEL: 'Sec2'},
+            {fLineColor : 106, fLineWidth: 2, fOption: 'hist', LABEL: 'Sec3'},
+            {fLineColor : 107, fLineWidth: 2, fOption: 'hist', LABEL: 'Sec4'},
+            {fLineColor : 108, fLineWidth: 2, fOption: 'hist', LABEL: 'Sec5'}
           ],
           [
-            {HIST: {fLineColor : 1, fLineWidth: 2, fOption: 'hist'}, LABEL: 'Sec0', LEGENDNOAUTO: { fX1NDC: 0.8, fY1NDC: 0.65, fX2NDC: 0.99, fY2NDC: 0.90, fNColumns : 1, fTextSize : 0.04 }},
-            {HIST: {fLineColor : 600, fLineWidth: 2, fOption: 'hist'}, LABEL: 'Sec1'},
-            {HIST: {fLineColor : 418, fLineWidth: 2, fOption: 'hist'}, LABEL: 'Sec2'},
-            {HIST: {fLineColor : 861, fLineWidth: 2, fOption: 'hist'}, LABEL: 'Sec3'},
-            {HIST: {fLineColor : 612, fLineWidth: 2, fOption: 'hist'}, LABEL: 'Sec4'},
-            {HIST: {fLineColor : 806, fLineWidth: 2, fOption: 'hist'}, LABEL: 'Sec5'}
+            {fLineColor : 103, fLineWidth: 2, fOption: 'hist', LABEL: 'Sec0', LEGENDNOAUTO: { fX1NDC: 0.8, fY1NDC: 0.65, fX2NDC: 0.99, fY2NDC: 0.90, fNColumns : 1, fTextSize : 0.04 }},
+            {fLineColor : 104, fLineWidth: 2, fOption: 'hist', LABEL: 'Sec1'},
+            {fLineColor : 105, fLineWidth: 2, fOption: 'hist', LABEL: 'Sec2'},
+            {fLineColor : 106, fLineWidth: 2, fOption: 'hist', LABEL: 'Sec3'},
+            {fLineColor : 107, fLineWidth: 2, fOption: 'hist', LABEL: 'Sec4'},
+            {fLineColor : 108, fLineWidth: 2, fOption: 'hist', LABEL: 'Sec5'}
           ]
         ],
         [
           {},
           {},
           {}
-        ]        
+        ]
       ];
    let helptext  =
    [
       "intentionally empty"
     ]
    ];
-    initUpdate(histnames, histoptions, helptext, {Palette: 84});
-    setInterval(update, 3000, histnames, histoptions);
+  initUpdate(histnames, helptext, {Palette: 84});
+  const day = document.getElementById('daySel').value;
+  const time = document.getElementById('timeSel').value;
+  update(histnames, histoptions, day, time);
+  // updateOtherTabs(histnames, histoptions, day, time);
+  setInterval(() => 
+    {
+      const day = document.getElementById('daySel').value;
+      const time = document.getElementById('timeSel').value;
+      update(histnames, histoptions, day, time);
+    }, 3000
+  );
+  document.updateAll = () => 
+    {
+      const day = document.getElementById('daySel').value;
+      const time = document.getElementById('timeSel').value;
+      update(histnames, histoptions, day, time);
+      // updateOtherTabs(histnames, histoptions, day, time);
+    };
   </script>
 </head>
 
 <body>
   <div class="tab">
-    <a href="/hadesroot"><button><b>Physics</b></button></a>
-    <button class="tablinks active" onclick="openTab(event, 't0')">Main</button>
-    <button class="tablinks" onclick="openTab(event, 't1')">BetaMom RPC</button>
-    <button class="tablinks" onclick="openTab(event, 't2')">BetaMom TOF</button>
-    <button class="tablinks" onclick="openTab(event, 't3')">Match</button>
-    <button class="tablinks" onclick="openTab(event, 't4')">MultDist</button>
-    <button class="tablinks" onclick="openTab(event, 't5')">ToT MIPS</button>
-    <button class="tablinks" onclick="openTab(event, 't6')">Vertex</button>
+    <div class="tab-buttons">
+      <a href="/hadesroot"><button><b>Physics</b></button></a>
+      <button class="tablinks" onclick="openTab(event, 't0');updateAll()">Main</button>
+      <button class="tablinks" onclick="openTab(event, 't1');updateAll()">BetaMom RPC</button>
+      <button class="tablinks" onclick="openTab(event, 't2');updateAll()">BetaMom TOF</button>
+      <button class="tablinks" onclick="openTab(event, 't3');updateAll()">Match</button>
+      <button class="tablinks" onclick="openTab(event, 't4');updateAll()">MultDist</button>
+      <button class="tablinks" onclick="openTab(event, 't5');updateAll()">ToT MIPS</button>
+      <button class="tablinks" onclick="openTab(event, 't6');updateAll()">Vertex</button>
+    </div>
+    <div class="selector">
+      <select id="daySel"  onchange="updateTime()"></select>
+      <select id="timeSel" onchange="updateAll();updateURL()" ></select>
+    </div>
   </div>
 
-  <div id="t0" class="tabcontent active cell3x2">
+  <div id="t0" class="tabcontent cell3x2">
     <div><div id="t0d0"></div></div>
     <div><div id="t0d1"></div></div>
     <div><div id="t0d2"></div></div>
index c6183a398234a1b6735adc3be3e50c1f0ba847b6..3f70de16020df5ac0232adb50e60ff8ae7a971d5 100644 (file)
@@ -6,11 +6,17 @@
   <link rel="icon" type="image/x-icon" href="icons/favicon.ico">
   <title>QA - RICH</title>
   <script type='module'>
-    import { openTab } from './files/functions.mjs';
+    import {openTab, openTabURL, updateDay, updateTime, updateURL} from './files/functions_base.mjs';
     window.openTab = openTab;
+    openTabURL();
+    window.updateURL = updateURL;
+    window.updateTime = () => updateTime("RICH");
+    updateDay("RICH");
+    setInterval(updateDay, 5*60*1000, "RICH");
   </script>
+
   <script type='module'>
-    import { initUpdate, update } from './files/functions.mjs';
+    import { initUpdate, update , updateOtherTabs} from './files/functions.mjs';
     
     let histnames = 
       [
       [
         [
           [
-            {HIST: {fOption: 'histl logy', fYaxis : {fTitle: 'Number of Laser Hits per Event'}}, LABEL: 'Sum', LEGENDNOAUTO: { fX1NDC: 0.1, fY1NDC: 0.89, fX2NDC: 0.9, fY2NDC: 0.95, fNColumns: 3, fTextSize: 0.04}},
-            {HIST: {fFillStyle : 0, fLineColor : 1, fLineWidth: 2, fOption: 'l'}, LABEL: 'Sec1'},
-            {HIST: {fFillStyle : 0, fLineColor : 600, fLineWidth: 2, fOption: 'l'}, LABEL: 'Sec2'},
-            {HIST: {fFillStyle : 0, fLineColor : 418, fLineWidth: 2, fOption: 'l'}, LABEL: 'Sec3'},
-            {HIST: {fFillStyle : 0, fLineColor : 861, fLineWidth: 2, fOption: 'l'}, LABEL: 'Sec4'},
-            {HIST: {fFillStyle : 0, fLineColor : 612, fLineWidth: 2, fOption: 'l'}, LABEL: 'Sec5'},
-            {HIST: {fFillStyle : 0, fLineColor : 806, fLineWidth: 2, fOption: 'l'}, LABEL: 'Sec6'}
+            {fOption: 'histl logy', fLineColor: 1, fFillColor: 1, fYaxis : {fTitle: 'Number of Laser Hits per Event'}, LABEL: { fLabel: 'Sum', fOption: 'l' }, LEGENDNOAUTO: { fX1NDC: 0.1, fY1NDC: 0.89, fX2NDC: 0.9, fY2NDC: 0.95, fNColumns: 3, fTextSize: 0.04}},
+            {fFillStyle : 0, fLineColor : 103, fLineWidth: 2, fOption: 'l', LABEL: 'Sec1'},
+            {fFillStyle : 0, fLineColor : 104, fLineWidth: 2, fOption: 'l', LABEL: 'Sec2'},
+            {fFillStyle : 0, fLineColor : 105, fLineWidth: 2, fOption: 'l', LABEL: 'Sec3'},
+            {fFillStyle : 0, fLineColor : 106, fLineWidth: 2, fOption: 'l', LABEL: 'Sec4'},
+            {fFillStyle : 0, fLineColor : 107, fLineWidth: 2, fOption: 'l', LABEL: 'Sec5'},
+            {fFillStyle : 0, fLineColor : 108, fLineWidth: 2, fOption: 'l', LABEL: 'Sec6'}
           ],
           [
-            {HIST: {fOption: 'histl logy', fYaxis : {fTitle: 'Number of Hits per Event'}}, LABEL: 'Sum', LEGENDNOAUTO: { fX1NDC: 0.1, fY1NDC: 0.89, fX2NDC: 0.9, fY2NDC: 0.95, fNColumns: 3, fTextSize: 0.04}},
-            {HIST: {fFillStyle : 0, fLineColor : 1, fLineWidth: 2, fOption: 'l'}, LABEL: 'Sec1'},
-            {HIST: {fFillStyle : 0, fLineColor : 600, fLineWidth: 2, fOption: 'l'}, LABEL: 'Sec2'},
-            {HIST: {fFillStyle : 0, fLineColor : 418, fLineWidth: 2, fOption: 'l'}, LABEL: 'Sec3'},
-            {HIST: {fFillStyle : 0, fLineColor : 861, fLineWidth: 2, fOption: 'l'}, LABEL: 'Sec4'},
-            {HIST: {fFillStyle : 0, fLineColor : 612, fLineWidth: 2, fOption: 'l'}, LABEL: 'Sec5'},
-            {HIST: {fFillStyle : 0, fLineColor : 806, fLineWidth: 2, fOption: 'l'}, LABEL: 'Sec6'}
+            {fOption: 'histl logy', fLineColor: 1, fFillColor: 1, fYaxis : {fTitle: 'Number of Hits per Event'}, LABEL: 'Sum', LEGENDNOAUTO: { fX1NDC: 0.1, fY1NDC: 0.89, fX2NDC: 0.9, fY2NDC: 0.95, fNColumns: 3, fTextSize: 0.04}},
+            {fFillStyle : 0, fLineColor : 103, fLineWidth: 2, fOption: 'l', LABEL: 'Sec1'},
+            {fFillStyle : 0, fLineColor : 104, fLineWidth: 2, fOption: 'l', LABEL: 'Sec2'},
+            {fFillStyle : 0, fLineColor : 105, fLineWidth: 2, fOption: 'l', LABEL: 'Sec3'},
+            {fFillStyle : 0, fLineColor : 106, fLineWidth: 2, fOption: 'l', LABEL: 'Sec4'},
+            {fFillStyle : 0, fLineColor : 107, fLineWidth: 2, fOption: 'l', LABEL: 'Sec5'},
+            {fFillStyle : 0, fLineColor : 108, fLineWidth: 2, fOption: 'l', LABEL: 'Sec6'}
           ],
           [
-            {HIST: {fOption: 'histl logy', fYaxis : {fTitle: 'Number of Rings per Event'}}, LABEL: 'Sum', LEGENDNOAUTO: { fX1NDC: 0.1, fY1NDC: 0.89, fX2NDC: 0.9, fY2NDC: 0.95, fNColumns: 3, fTextSize: 0.04}},
-            {HIST: {fFillStyle : 0, fLineColor : 1, fLineWidth: 2, fOption: 'l'}, LABEL: 'Sec1'},
-            {HIST: {fFillStyle : 0, fLineColor : 600, fLineWidth: 2, fOption: 'l'}, LABEL: 'Sec2'},
-            {HIST: {fFillStyle : 0, fLineColor : 418, fLineWidth: 2, fOption: 'l'}, LABEL: 'Sec3'},
-            {HIST: {fFillStyle : 0, fLineColor : 861, fLineWidth: 2, fOption: 'l'}, LABEL: 'Sec4'},
-            {HIST: {fFillStyle : 0, fLineColor : 612, fLineWidth: 2, fOption: 'l'}, LABEL: 'Sec5'},
-            {HIST: {fFillStyle : 0, fLineColor : 806, fLineWidth: 2, fOption: 'l'}, LABEL: 'Sec6'}
+            {fOption: 'histl logy', fLineColor: 1, fFillColor: 1, fYaxis : {fTitle: 'Number of Rings per Event'}, LABEL: 'Sum', LEGENDNOAUTO: { fX1NDC: 0.1, fY1NDC: 0.89, fX2NDC: 0.9, fY2NDC: 0.95, fNColumns: 3, fTextSize: 0.04}},
+            {fFillStyle : 0, fLineColor : 103, fLineWidth: 2, fOption: 'l', LABEL: 'Sec1'},
+            {fFillStyle : 0, fLineColor : 104, fLineWidth: 2, fOption: 'l', LABEL: 'Sec2'},
+            {fFillStyle : 0, fLineColor : 105, fLineWidth: 2, fOption: 'l', LABEL: 'Sec3'},
+            {fFillStyle : 0, fLineColor : 106, fLineWidth: 2, fOption: 'l', LABEL: 'Sec4'},
+            {fFillStyle : 0, fLineColor : 107, fLineWidth: 2, fOption: 'l', LABEL: 'Sec5'},
+            {fFillStyle : 0, fLineColor : 108, fLineWidth: 2, fOption: 'l', LABEL: 'Sec6'}
           ]
         ],
         [
-          {HIST: {fTitle: 'Single Event 1', fOption: 'col pal57'}, FRAME: {fillatt: {color: 'black'}}},
-          {HIST: {fTitle: 'Single Event 2', fOption: 'col pal57'}, FRAME: {fillatt: {color: 'black'}}},
-          {HIST: {fTitle: 'Single Event 3', fOption: 'col pal57'}, FRAME: {fillatt: {color: 'black'}}},
-          {HIST: {fTitle: 'Single Event 4', fOption: 'col pal57'}, FRAME: {fillatt: {color: 'black'}}}
+          {fTitle: 'Single Event 1', fOption: 'col pal57', FRAME: {fillatt: {color: 'black'}}},
+          {fTitle: 'Single Event 2', fOption: 'col pal57', FRAME: {fillatt: {color: 'black'}}},
+          {fTitle: 'Single Event 3', fOption: 'col pal57', FRAME: {fillatt: {color: 'black'}}},
+          {fTitle: 'Single Event 4', fOption: 'col pal57', FRAME: {fillatt: {color: 'black'}}}
         ],
         [
           {},
           {},
-          {HIST: {fOption: 'colz2 logz'}},
-          {HIST: {fOption: 'colz2 logz'}}
+          {fOption: 'colz2 logz'},
+          {fOption: 'colz2 logz'}
         ],
         [
-          {HIST: {fOption: 'logy'}, XLABEL: ['only LE', 'only TE', 'both']},
-          {HIST: {fOption: 'logy'}},
-          {HIST: {fOption: 'logy'}}
+          {fOption: 'logy', XLABEL: ['only LE', 'only TE', 'both']},
+          {fOption: 'logy'},
+          {fOption: 'logy'}
         ],
         [
-          {HIST: {fOption: 'hist'}},
-          {HIST: {fOption: 'hist'}},
-          {HIST: {fOption: 'hist'}},
-          {HIST: {fOption: 'hist'}}
+          {fOption: 'hist'},
+          {fOption: 'hist'},
+          {fOption: 'hist'},
+          {fOption: 'hist'}
         ],
         [
-          {HIST: {fOption: 'colz'}},
-          {HIST: {fOption: 'colz'}}
+          {fOption: 'colz'},
+          {fOption: 'colz'}
         ],
         [
           {},
           {},
           {},
           {},
-          {HIST: {fOption: 'colz'}},
+          {fOption: 'colz'},
           {}
         ]
       ];
         ["",""],
         ["","","","","",""]
       ];      
-    initUpdate(histnames, histoptions, helptext, {Palette : 84});
-    setInterval(update, 3000, histnames, histoptions);
+    initUpdate(histnames, helptext, {Palette : 84});
+    const day = document.getElementById('daySel').value;
+    const time = document.getElementById('timeSel').value;
+    update(histnames, histoptions, day, time);
+    // updateOtherTabs(histnames, histoptions, day, time);
+    setInterval(() => 
+      {
+        const day = document.getElementById('daySel').value;
+        const time = document.getElementById('timeSel').value;
+        update(histnames, histoptions, day, time);
+      }, 3000
+    );
+    document.updateAll = () => 
+      {
+        const day = document.getElementById('daySel').value;
+        const time = document.getElementById('timeSel').value;
+        update(histnames, histoptions, day, time);
+        // updateOtherTabs(histnames, histoptions, day, time);
+      };
   </script>
 </head>
 
 <body>
   <div class="tab">
-    <a href="/hadesroot"><button><b>RICH</b></button></a>
-    <button class="tablinks active" onclick="openTab(event, 't0')">TrendPlots</button>
-    <button class="tablinks" onclick="openTab(event, 't1')">SingleEvent</button>
-    <button class="tablinks" onclick="openTab(event, 't2')">RawTiming</button>
-    <button class="tablinks" onclick="openTab(event, 't3')">EdgeInfo</button>
-    <button class="tablinks" onclick="openTab(event, 't4')">NofPerEvent</button>
-    <button class="tablinks" onclick="openTab(event, 't5')">RichXY</button>
-    <button class="tablinks" onclick="openTab(event, 't6')">RichSpatial</button>
+    <div class="tab-buttons">
+      <a href="/hadesroot"><button><b>RICH</b></button></a>
+      <button class="tablinks" onclick="openTab(event, 't0');updateAll()">TrendPlots</button>
+      <button class="tablinks" onclick="openTab(event, 't1');updateAll()">SingleEvent</button>
+      <button class="tablinks" onclick="openTab(event, 't2');updateAll()">RawTiming</button>
+      <button class="tablinks" onclick="openTab(event, 't3');updateAll()">EdgeInfo</button>
+      <button class="tablinks" onclick="openTab(event, 't4');updateAll()">NofPerEvent</button>
+      <button class="tablinks" onclick="openTab(event, 't5');updateAll()">RichXY</button>
+      <button class="tablinks" onclick="openTab(event, 't6');updateAll()">RichSpatial</button>
+    </div>
+    <div class="selector">
+      <select id="daySel"  onchange="updateTime()"></select>
+      <select id="timeSel" onchange="updateAll();updateURL()" ></select>
+    </div>
   </div>
 
-  <div id="t0" class="tabcontent cell3x1 active">
+  <div id="t0" class="tabcontent cell3x1">
     <div><div id="t0d0"></div></div>
     <div><div id="t0d1"></div></div>
     <div><div id="t0d2"></div></div>
index 542a8180dffb28c686e25e7f77d05a60836153c1..f984fab66fd1c6cf6578f046812aace94134c0aa 100644 (file)
@@ -6,13 +6,17 @@
   <link rel="icon" type="image/x-icon" href="icons/favicon.ico">
   <title>QA - RPC</title>
   <script type='module'>
-    import { openTab } from './files/functions.mjs';
+    import {openTab, openTabURL, updateDay, updateTime, updateURL} from './files/functions_base.mjs';
     window.openTab = openTab;
+    openTabURL();
+    window.updateURL = updateURL;
+    window.updateTime = () => updateTime("RPC");
+    updateDay("RPC");
+    setInterval(updateDay, 5*60*1000, "RPC");
   </script>
 
   <script type='module'>
-    import { initUpdate, update } from './files/functions.mjs';
-
+    import { initUpdate, update , updateOtherTabs} from './files/functions.mjs';
 
     let histnames = 
       [
         ],
         [
           [
-           {HIST: {fFillStyle : 0, fLineColor : 1, fLineWidth: 2, fOption: 'l'}, LABEL: 'Sec1', LEGENDNOAUTO: { fX1NDC: 0.18, fY1NDC: 0.15, fX2NDC: 0.33, fY2NDC: 0.45, fNColumns : 1, fTextSize : 0.04 }},
-            {HIST: {fFillStyle : 0, fLineColor : 600, fLineWidth: 2, fOption: 'l'}, LABEL: 'Sec2'},
-            {HIST: {fFillStyle : 0, fLineColor : 418, fLineWidth: 2, fOption: 'l'}, LABEL: 'Sec3'},
-            {HIST: {fFillStyle : 0, fLineColor : 861, fLineWidth: 2, fOption: 'l'}, LABEL: 'Sec4'},
-            {HIST: {fFillStyle : 0, fLineColor : 612, fLineWidth: 2, fOption: 'l'}, LABEL: 'Sec5'},
-            {HIST: {fFillStyle : 0, fLineColor : 806, fLineWidth: 2, fOption: 'l'}, LABEL: 'Sec6'}
+           {fFillStyle : 0, fLineColor : 103, fLineWidth: 2, fOption: 'l', LABEL: 'Sec1', LEGENDNOAUTO: { fX1NDC: 0.18, fY1NDC: 0.15, fX2NDC: 0.33, fY2NDC: 0.45, fNColumns : 1, fTextSize : 0.04 }},
+            {fFillStyle : 0, fLineColor : 104, fLineWidth: 2, fOption: 'l', LABEL: 'Sec2'},
+            {fFillStyle : 0, fLineColor : 105, fLineWidth: 2, fOption: 'l', LABEL: 'Sec3'},
+            {fFillStyle : 0, fLineColor : 106, fLineWidth: 2, fOption: 'l', LABEL: 'Sec4'},
+            {fFillStyle : 0, fLineColor : 107, fLineWidth: 2, fOption: 'l', LABEL: 'Sec5'},
+            {fFillStyle : 0, fLineColor : 108, fLineWidth: 2, fOption: 'l', LABEL: 'Sec6'}
           ],
           [
-           {HIST: {fFillStyle : 0, fLineColor : 1, fLineWidth: 2, fOption: 'l'}, LABEL: 'Sec1', LEGENDNOAUTO: { fX1NDC: 0.18, fY1NDC: 0.15, fX2NDC: 0.33, fY2NDC: 0.45, fNColumns : 1, fTextSize : 0.04 }},
-            {HIST: {fFillStyle : 0, fLineColor : 600, fLineWidth: 2, fOption: 'l'}, LABEL: 'Sec2'},
-            {HIST: {fFillStyle : 0, fLineColor : 418, fLineWidth: 2, fOption: 'l'}, LABEL: 'Sec3'},
-            {HIST: {fFillStyle : 0, fLineColor : 861, fLineWidth: 2, fOption: 'l'}, LABEL: 'Sec4'},
-            {HIST: {fFillStyle : 0, fLineColor : 612, fLineWidth: 2, fOption: 'l'}, LABEL: 'Sec5'},
-            {HIST: {fFillStyle : 0, fLineColor : 806, fLineWidth: 2, fOption: 'l'}, LABEL: 'Sec6'}
+           {fFillStyle : 0, fLineColor : 103, fLineWidth: 2, fOption: 'l', LABEL: 'Sec1', LEGENDNOAUTO: { fX1NDC: 0.18, fY1NDC: 0.15, fX2NDC: 0.33, fY2NDC: 0.45, fNColumns : 1, fTextSize : 0.04 }},
+            {fFillStyle : 0, fLineColor : 104, fLineWidth: 2, fOption: 'l', LABEL: 'Sec2'},
+            {fFillStyle : 0, fLineColor : 105, fLineWidth: 2, fOption: 'l', LABEL: 'Sec3'},
+            {fFillStyle : 0, fLineColor : 106, fLineWidth: 2, fOption: 'l', LABEL: 'Sec4'},
+            {fFillStyle : 0, fLineColor : 107, fLineWidth: 2, fOption: 'l', LABEL: 'Sec5'},
+            {fFillStyle : 0, fLineColor : 108, fLineWidth: 2, fOption: 'l', LABEL: 'Sec6'}
           ],            
         ],
         [
         ],
         [ {}, {}, {}, {}, {}, {} ],
 /*        [ 
-          {HIST: {fTitle: 'Sector 1', fOption: 'colz2'}},
-          {HIST: {fTitle: 'Sector 2', fOption: 'colz2'}},
-          {HIST: {fTitle: 'Sector 3', fOption: 'colz2'}},
-          {HIST: {fTitle: 'Sector 4', fOption: 'colz2'}},
-          {HIST: {fTitle: 'Sector 5', fOption: 'colz2'}},
-          {HIST: {fTitle: 'Sector 6', fOption: 'colz2'}},
+          {fTitle: 'Sector 1', fOption: 'colz2'},
+          {fTitle: 'Sector 2', fOption: 'colz2'},
+          {fTitle: 'Sector 3', fOption: 'colz2'},
+          {fTitle: 'Sector 4', fOption: 'colz2'},
+          {fTitle: 'Sector 5', fOption: 'colz2'},
+          {fTitle: 'Sector 6', fOption: 'colz2'},
         ],
         [ 
-          {HIST: {fTitle: 'Sector 1', fOption: 'colz2'}},
-          {HIST: {fTitle: 'Sector 2', fOption: 'colz2'}},
-          {HIST: {fTitle: 'Sector 3', fOption: 'colz2'}},
-          {HIST: {fTitle: 'Sector 4', fOption: 'colz2'}},
-          {HIST: {fTitle: 'Sector 5', fOption: 'colz2'}},
-          {HIST: {fTitle: 'Sector 6', fOption: 'colz2'}},
+          {fTitle: 'Sector 1', fOption: 'colz2'},
+          {fTitle: 'Sector 2', fOption: 'colz2'},
+          {fTitle: 'Sector 3', fOption: 'colz2'},
+          {fTitle: 'Sector 4', fOption: 'colz2'},
+          {fTitle: 'Sector 5', fOption: 'colz2'},
+          {fTitle: 'Sector 6', fOption: 'colz2'},
         ],        
         [ 
-          {HIST: {fTitle: 'Sector 1', fOption: 'colz2'}},
-          {HIST: {fTitle: 'Sector 2', fOption: 'colz2'}},
-          {HIST: {fTitle: 'Sector 3', fOption: 'colz2'}},
-          {HIST: {fTitle: 'Sector 4', fOption: 'colz2'}},
-          {HIST: {fTitle: 'Sector 5', fOption: 'colz2'}},
-          {HIST: {fTitle: 'Sector 6', fOption: 'colz2'}},
-        ], */       
+          {fTitle: 'Sector 1', fOption: 'colz2'},
+          {fTitle: 'Sector 2', fOption: 'colz2'},
+          {fTitle: 'Sector 3', fOption: 'colz2'},
+          {fTitle: 'Sector 4', fOption: 'colz2'},
+          {fTitle: 'Sector 5', fOption: 'colz2'},
+          {fTitle: 'Sector 6', fOption: 'colz2'},
+        ], */
       ];
       
     let helptext = 
         // ["","","","","",""],
       ];    
       
-    initUpdate(histnames,histoptions, helptext, {Palette : 55});
-    setInterval(update, 3000, histnames, histoptions);
+    initUpdate(histnames, helptext, {Palette : 55});
+    const day = document.getElementById('daySel').value;
+    const time = document.getElementById('timeSel').value;
+    update(histnames, histoptions, day, time);
+    // updateOtherTabs(histnames, histoptions, day, time);
+    setInterval(() => 
+      {
+        const day = document.getElementById('daySel').value;
+        const time = document.getElementById('timeSel').value;
+        update(histnames, histoptions, day, time);
+      }, 3000
+    );
+    document.updateAll = () => 
+      {
+        const day = document.getElementById('daySel').value;
+        const time = document.getElementById('timeSel').value;
+        update(histnames, histoptions, day, time);
+        // updateOtherTabs(histnames, histoptions, day, time);
+      };
   </script>
 </head>
 
 <body>
   <div class="tab">
-    <a href="/hadesroot"><button><b>RPC</b></button></a>
-    <button class="tablinks active" onclick="openTab(event, 't0')">Main</button>
-    <button class="tablinks" onclick="openTab(event, 't1')">Mult</button>
-    <button class="tablinks" onclick="openTab(event, 't2')">ChargeDiff</button>
-    <button class="tablinks" onclick="openTab(event, 't3')">CellMult</button>
-    <button class="tablinks" onclick="openTab(event, 't4')">CellMultEnds</button>
-    <button class="tablinks" onclick="openTab(event, 't5')">RawMult</button>    
-    <button class="tablinks" onclick="openTab(event, 't6')">HitXY</button>    
-<!--    <button class="tablinks" onclick="openTab(event, 't7')">MboDboMult</button>    
-    <button class="tablinks" onclick="openTab(event, 't8')">TrbChanMult</button>    
-    <button class="tablinks" onclick="openTab(event, 't9')">TrbMboMult</button>    -->
+    <div class="tab-buttons">
+      <a href="/hadesroot"><button><b>RPC</b></button></a>
+      <button class="tablinks" onclick="openTab(event, 't0');updateAll()">Main</button>
+      <button class="tablinks" onclick="openTab(event, 't1');updateAll()">Mult</button>
+      <button class="tablinks" onclick="openTab(event, 't2');updateAll()">ChargeDiff</button>
+      <button class="tablinks" onclick="openTab(event, 't3');updateAll()">CellMult</button>
+      <button class="tablinks" onclick="openTab(event, 't4');updateAll()">CellMultEnds</button>
+      <button class="tablinks" onclick="openTab(event, 't5');updateAll()">RawMult</button>    
+      <button class="tablinks" onclick="openTab(event, 't6');updateAll()">HitXY</button>    
+<!--      <button class="tablinks" onclick="openTab(event, 't7')">MboDboMult</button>    
+      <button class="tablinks" onclick="openTab(event, 't8')">TrbChanMult</button>    
+      <button class="tablinks" onclick="openTab(event, 't9')">TrbMboMult</button>    -->
+    </div>
+    <div class="selector">
+      <select id="daySel"  onchange="updateTime()"></select>
+      <select id="timeSel" onchange="updateAll();updateURL()" ></select>
+    </div>
   </div>
 
-  <div id="t0" class="tabcontent cell3x2 active">
+  <div id="t0" class="tabcontent cell3x2">
     <div><div id="t0d0"></div></div>
     <div><div id="t0d1"></div></div>
     <div><div id="t0d2"></div></div>
index 7cd1a7510b9b2b5a7a3a7dec87614e8bce15916c..19af689cc6d021981c81d4716fd6ae29928cb040 100644 (file)
@@ -6,13 +6,17 @@
   <link rel="icon" type="image/x-icon" href="icons/favicon.ico">
   <title>QA - Start</title>
   <script type='module'>
-    import { openTab } from './files/functions.mjs';
+    import {openTab, openTabURL, updateDay, updateTime, updateURL} from './files/functions_base.mjs';
     window.openTab = openTab;
+    openTabURL();
+    window.updateURL = updateURL;
+    window.updateTime = () => updateTime("START");
+    updateDay("START");
+    setInterval(updateDay, 5*60*1000, "START");
   </script>
 
   <script type='module'>
-    import { initUpdate, update } from './files/functions.mjs';
-
+    import { initUpdate, update , updateOtherTabs} from './files/functions.mjs';
 
     let histnames = 
       [
@@ -58,9 +62,9 @@
     let histoptions = 
       [
         [
-          {HIST : {fTitle: 'Start X Profile'}},
-          {HIST : {fTitle: 'Start Y Profile'}},
-          {HIST : {fTitle: 'Veto Profile'}},
+          {fTitle: 'Start X Profile'},
+          {fTitle: 'Start Y Profile'},
+          {fTitle: 'Veto Profile'},
           {},
           {},
           [
           ],
           {},
           [
-            {HIST: {fFillStyle : 0, fLineColor : 2, fLineWidth: 1, fOption: 'l logy'}, LABEL: 'Start X', LEGENDNOAUTO: { fX1NDC: 0.8, fY1NDC: 0.75, fX2NDC: 0.99, fY2NDC: 0.90, fNColumns : 1, fTextSize : 0.04 }},
-            {HIST: {fFillStyle : 0, fLineColor : 4, fLineWidth: 1, fOption: 'l logy'}, LABEL: 'Start Y'},
-            {HIST: {fFillStyle : 0, fLineColor : 3, fLineWidth: 1, fOption: 'l logy'}, LABEL: 'Veto'},
-          ],        
+            {fFillStyle : 0, fLineColor : 2, fLineWidth: 1, fOption: 'l logy', LABEL: 'Start X', LEGENDNOAUTO: { fX1NDC: 0.8, fY1NDC: 0.75, fX2NDC: 0.99, fY2NDC: 0.90, fNColumns : 1, fTextSize : 0.04 }},
+            {fFillStyle : 0, fLineColor : 4, fLineWidth: 1, fOption: 'l logy', LABEL: 'Start Y'},
+            {fFillStyle : 0, fLineColor : 3, fLineWidth: 1, fOption: 'l logy', LABEL: 'Veto'},
+          ],
           [
             {LABEL: 'Start X', LEGENDNOAUTO: { fX1NDC: 0.8, fY1NDC: 0.75, fX2NDC: 0.99, fY2NDC: 0.90, fNColumns : 1, fTextSize : 0.04 }},
             {LABEL: 'Start Y'},
             {LABEL: 'Veto'},
-          ],        
+          ],
         ],
         [
-          {HIST: {fOption: 'colz2 pal50'}},
-          {HIST: {fOption: 'colz2 pal50'}},
-          {HIST: {fOption: 'colz2 pal50', fZaxis: {fTitle: 'counts'}}},
-          {HIST: {fOption: 'colz2 pal50', fZaxis: {fTitle: 'counts'}}}
+          {fOption: 'colz2 pal50'},
+          {fOption: 'colz2 pal50'},
+          {fOption: 'colz2 pal50', fZaxis: {fTitle: 'counts'}},
+          {fOption: 'colz2 pal50', fZaxis: {fTitle: 'counts'}}
         ],
         [
-          {HIST: {fOption: 'colz2 pal50', fZaxis: {fTitle: 'counts'}}},
-          {HIST: {fOption: 'colz2 pal50', fZaxis: {fTitle: 'counts'}}},
-          {HIST: {fOption: 'colz2 pal50', fZaxis: {fTitle: 'counts'}}},
-          {HIST: {fOption: 'colz2 pal50', fZaxis: {fTitle: 'counts'}}}
-        ],        
+          {fOption: 'colz2 pal50', fZaxis: {fTitle: 'counts'}},
+          {fOption: 'colz2 pal50', fZaxis: {fTitle: 'counts'}},
+          {fOption: 'colz2 pal50', fZaxis: {fTitle: 'counts'}},
+          {fOption: 'colz2 pal50', fZaxis: {fTitle: 'counts'}}
+        ],
       ];
       
     let helptext = 
       ];       
       
       
-    initUpdate(histnames,histoptions, helptext, {Palette : 56});
-    setInterval(update, 3000, histnames, histoptions);
+    initUpdate(histnames, helptext, {Palette : 56});
+    const day = document.getElementById('daySel').value;
+    const time = document.getElementById('timeSel').value;
+    update(histnames, histoptions, day, time);
+    // updateOtherTabs(histnames, histoptions, day, time);
+    setInterval(() => 
+      {
+        const day = document.getElementById('daySel').value;
+        const time = document.getElementById('timeSel').value;
+        update(histnames, histoptions, day, time);
+      }, 3000
+    );
+    document.updateAll = () => 
+      {
+        const day = document.getElementById('daySel').value;
+        const time = document.getElementById('timeSel').value;
+        update(histnames, histoptions, day, time);
+        // updateOtherTabs(histnames, histoptions, day, time);
+      };
   </script>
 </head>
 
 <body>
   <div class="tab">
-    <a href="/hadesroot"><button><b>Start</b></button></a>
-    <button class="tablinks active" onclick="openTab(event, 't0')">Main</button>
-    <button class="tablinks"        onclick="openTab(event, 't1')">Times</button>
-    <button class="tablinks"        onclick="openTab(event, 't2')">Veto Time Diff</button>
+    <div class="tab-buttons">
+      <a href="/hadesroot"><button><b>Start</b></button></a>
+      <button class="tablinks" onclick="openTab(event, 't0');updateAll()">Main</button>
+      <button class="tablinks" onclick="openTab(event, 't1');updateAll()">Times</button>
+      <button class="tablinks" onclick="openTab(event, 't2');updateAll()">Veto Time Diff</button>
+    </div>
+    <div class="selector">
+      <select id="daySel"  onchange="updateTime()"></select>
+      <select id="timeSel" onchange="updateAll();updateURL()" ></select>
+    </div>
   </div>
 
-  <div id="t0" class="tabcontent cell3x3 active">
+  <div id="t0" class="tabcontent cell3x3">
     <div><div id="t0d0"></div></div>
     <div><div id="t0d1"></div></div>
     <div><div id="t0d2"></div></div>
diff --git a/hadesroot/TDC.htm b/hadesroot/TDC.htm
new file mode 100644 (file)
index 0000000..0b33dae
--- /dev/null
@@ -0,0 +1,200 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8">
+  <link rel="stylesheet" type="text/css" href="files/tab.css">
+  <link rel="icon" type="image/x-icon" href="icons/favicon.ico">
+  <title>QA - Main</title>
+  <script type='module'>
+    import {openTab, openTabURL, updateDay, updateTime, updateURL} from './files/functions_base.mjs';
+    window.openTab = openTab;
+    openTabURL();
+    window.updateURL = updateURL;
+    window.updateTime = () => updateTime("TDC");
+    updateDay("TDC");
+    setInterval(updateDay, 5*60*1000, "TDC");
+  </script>
+
+  <script type='module'>
+    import { initUpdate, update , updateOtherTabs} from './files/functions.mjs';
+    import {createPalette } from './files/functions_base.mjs';
+    let histnames = 
+      [
+        [ "../../mon/gethmonroot.cgi?file=TdcCalMon0&"  ],
+        [ "../../mon/gethmonroot.cgi?file=TdcCalMon1&"  ],
+        [ "../../mon/gethmonroot.cgi?file=TdcCalMon2&"  ],
+        [ "../../mon/gethmonroot.cgi?file=TdcCalMon3&"  ],
+        [ "../../mon/gethmonroot.cgi?file=TdcCalMon4&"  ],
+        [ "../../mon/gethmonroot.cgi?file=TdcCalMon5&"  ],
+        [ "../../mon/gethmonroot.cgi?file=TdcCalMon6&"  ],
+        [ "../../mon/gethmonroot.cgi?file=TdcCalMon7&"  ],
+        [ "../../mon/gethmonroot.cgi?file=TdcCalMon8&"  ],
+        [ "../../mon/gethmonroot.cgi?file=TdcCalMon9&"  ],        
+      ];
+
+
+      
+    let histoptions = 
+      [
+        [
+          {fXaxis: {fLabelSize: 0.01}, fOption: 'col0z',
+           CONTOURS: 100,
+           PAINTER: {_color_palette: {palette: createPalette([-10,-9,9,10],['red','yellow','blue','red'])}}}
+        ],
+        [
+          {fXaxis: {fLabelSize: 0.01}, fOption: 'col0z',
+           CONTOURS: 100,
+           PAINTER: {_color_palette: {palette: createPalette([0,1,10,25,35,50,50.1,200],['red','#008800','#00ff00','#ffff00','#ffaaaa','#ff00ff','#aa0000','#000000'],200)}}}
+        ],
+        [
+          {fXaxis: {fLabelSize: 0.01}, fOption: 'col0z',
+           CONTOURS: 100,
+           }
+        ],
+        [
+          {fXaxis: {fLabelSize: 0.01}, fOption: 'col0z',
+           CONTOURS: 100,
+           }
+        ],
+        [
+          {fXaxis: {fLabelSize: 0.01}, fOption: 'col0z',
+           CONTOURS: 1000,
+           PAINTER: {_color_palette: {palette: createPalette([19,19.8,20,20.2,29.8,30,30.2,31],['red','red','green','red','red','blue','red','red'],1000)}}}
+        ],
+        [
+          {fXaxis: {fLabelSize: 0.01}, fOption: 'col0z',
+           CONTOURS: 1000,
+           PAINTER: {_color_palette: {palette: createPalette([0,0.1,40,50,51,100,120,120.1,400],['red','#008800','#00ff00','#ffff00','orange','#ffaaaa','#ff00ff','#aa0000','#000000'],1000)}}}
+        ],
+        [
+          {fXaxis: {fLabelSize: 0.01}, fOption: 'col0z',
+           CONTOURS: 100,
+           }
+        ],
+        [
+          {fXaxis: {fLabelSize: 0.01}, fOption: 'col0z',
+           CONTOURS: 100,
+           }
+        ],
+        [
+          {fXaxis: {fLabelSize: 0.01}, fOption: 'col0z',
+           CONTOURS: 1000,
+           PAINTER: {_color_palette: {palette: createPalette([0,0.000001,0.0009,0.001,0.1],['#004400','#00ff00','#33ff00','yellow','red'],1000)}}}
+        ],
+        [
+          {fXaxis: {fLabelSize: 0.01}, fOption: 'col0z',
+           CONTOURS: 1000,
+           PAINTER: {_color_palette: {palette: createPalette([0,0.000001,21,21.6,22,43,44,50],['#33ff00','#ff0000','#ff0000','#ff5500','#00ff00','yellow','red','red'],1000)}}}
+        ],        
+      ];
+      
+    let helptext = 
+      [
+        [
+          "",
+        ],  
+        [
+          "",
+        ], 
+        [
+          "",
+        ], 
+        [
+          "",
+        ], 
+        [
+          "",
+        ], 
+        [
+          "",
+        ], 
+        [
+          "",
+        ], 
+        [
+          "",
+        ], 
+        [
+          "",
+        ], 
+        [
+          "",
+        ], 
+      ];       
+      
+      
+    await initUpdate(histnames, helptext, {Palette : 55});
+    const day = document.getElementById('daySel').value;
+    const time = document.getElementById('timeSel').value;
+    update(histnames, histoptions, day, time);
+    // updateOtherTabs(histnames, histoptions, day, time);
+    // setInterval(() => 
+    //   {
+    //     const day = document.getElementById('daySel').value;
+    //     const time = document.getElementById('timeSel').value;
+    //     update(histnames, histoptions, day, time);
+    //   }, 3000
+    // );
+    document.updateAll = () => 
+      {
+        const day = document.getElementById('daySel').value;
+        const time = document.getElementById('timeSel').value;
+        update(histnames, histoptions, day, time);
+        // updateOtherTabs(histnames, histoptions, day, time);
+      };
+  </script>
+</head>
+
+<body>
+  <div class="tab">
+    <div class="tab-buttons">
+      <a href="/hadesroot"><button><b>TDC</b></button></a>
+      <button class="tablinks" onclick="openTab(event, 't0');updateAll()">LE</button>
+      <button class="tablinks" onclick="openTab(event, 't1');updateAll()">LE &sigma;</button>
+      <button class="tablinks" onclick="openTab(event, 't2');updateAll()">Ign LE outliers</button>
+      <button class="tablinks" onclick="openTab(event, 't3');updateAll()">Ign LE hits</button>
+      <button class="tablinks" onclick="openTab(event, 't4');updateAll()">ToT</button>
+      <button class="tablinks" onclick="openTab(event, 't5');updateAll()">ToT &sigma;</button>
+      <button class="tablinks" onclick="openTab(event, 't6');updateAll()">Ign ToT outliers</button>
+      <button class="tablinks" onclick="openTab(event, 't7');updateAll()">Ign ToT</button>
+      <button class="tablinks" onclick="openTab(event, 't8');updateAll()">Corrected</button>
+      <button class="tablinks" onclick="openTab(event, 't9');updateAll()">ToT Shifts</button>
+    </div>
+    <div class="selector">
+      <select id="daySel"  onchange="updateTime()"></select>
+      <select id="timeSel" onchange="updateAll();updateURL()" ></select>
+    </div>
+  </div>
+
+  <div id="t0" class="tabcontent cell1x1 ">
+    <div><div id="t0d0"></div></div>
+  </div>
+  <div id="t1" class="tabcontent cell1x1 ">
+    <div><div id="t1d0"></div></div>
+  </div>
+  <div id="t2" class="tabcontent cell1x1 ">
+    <div><div id="t2d0"></div></div>
+  </div>
+  <div id="t3" class="tabcontent cell1x1 ">
+    <div><div id="t3d0"></div></div>
+  </div>
+  <div id="t4" class="tabcontent cell1x1 ">
+    <div><div id="t4d0"></div></div>
+  </div>
+  <div id="t5" class="tabcontent cell1x1 ">
+    <div><div id="t5d0"></div></div>
+  </div>
+  <div id="t6" class="tabcontent cell1x1 ">
+    <div><div id="t6d0"></div></div>
+  </div>
+  <div id="t7" class="tabcontent cell1x1 ">
+    <div><div id="t7d0"></div></div>
+  </div>
+  <div id="t8" class="tabcontent cell1x1 ">
+    <div><div id="t8d0"></div></div>
+  </div>
+  <div id="t9" class="tabcontent cell1x1 ">
+    <div><div id="t9d0"></div></div>
+  </div>
+
+</body>
index 74bbe6cfd61798fe86fe48c4d8b20773ac463a0c..cdeb5783f694e565870251b1855fcc9594136ae8 100644 (file)
@@ -6,14 +6,18 @@
   <link rel="icon" type="image/x-icon" href="icons/favicon.ico">
   <title>QA - TOF</title>
   <script type='module'>
-    import { openTab } from './files/functions.mjs';
+    import {openTab, openTabURL, updateDay, updateTime, updateURL} from './files/functions_base.mjs';
     window.openTab = openTab;
+    openTabURL();
+    window.updateURL = updateURL;
+    window.updateTime = () => updateTime("TOF");
+    updateDay("TOF");
+    setInterval(updateDay, 5*60*1000, "TOF");
   </script>
 
   <script type='module'>
-    import { initUpdate, update } from './files/functions.mjs';
-
-
+    import { initUpdate, update , updateOtherTabs} from './files/functions.mjs';
+    
     let histnames = 
       [
         [
           {}
         ],
         [
-          {HIST: {fOption: 'colz2'}},
-          {HIST: {fOption: 'colz2'}},
-          {HIST: {fOption: 'colz2'}},
-          {HIST: {fOption: 'colz2'}}
+          {fOption: 'colz2'},
+          {fOption: 'colz2'},
+          {fOption: 'colz2'},
+          {fOption: 'colz2'}
         ],
         [
-          {HIST: {fOption: 'colz2'}},
-          {HIST: {fOption: 'colz2'}},
-          {HIST: {fOption: 'colz2'}},
-          {HIST: {fOption: 'colz2'}}
+          {fOption: 'colz2'},
+          {fOption: 'colz2'},
+          {fOption: 'colz2'},
+          {fOption: 'colz2'}
         ],
         [
           {},
       ];       
       
       
-    initUpdate(histnames,histoptions, helptext, {Palette : 55});
-    setInterval(update, 3000, histnames, histoptions);
+    initUpdate(histnames, helptext, {Palette : 55});
+    const day = document.getElementById('daySel').value;
+    const time = document.getElementById('timeSel').value;
+    update(histnames, histoptions, day, time);
+    // updateOtherTabs(histnames, histoptions, day, time);
+    setInterval(() => 
+      {
+        const day = document.getElementById('daySel').value;
+        const time = document.getElementById('timeSel').value;
+        update(histnames, histoptions, day, time);
+      }, 3000
+    );
+    document.updateAll = () => 
+      {
+        const day = document.getElementById('daySel').value;
+        const time = document.getElementById('timeSel').value;
+        update(histnames, histoptions, day, time);
+        // updateOtherTabs(histnames, histoptions, day, time);
+      };
   </script>
 </head>
 
 <body>
   <div class="tab">
-    <a href="/hadesroot"><button><b>TOF</b></button></a>
-    <button class="tablinks active" onclick="openTab(event, 't0')">Main</button>
-    <button class="tablinks" onclick="openTab(event, 't1')">ADC</button>
-    <button class="tablinks" onclick="openTab(event, 't2')">TDC</button>
-    <button class="tablinks" onclick="openTab(event, 't3')">Hit</button>
+    <div class="tab-buttons">
+      <a href="/hadesroot"><button><b>TOF</b></button></a>
+      <button class="tablinks" onclick="openTab(event, 't0');updateAll()">Main</button>
+      <button class="tablinks" onclick="openTab(event, 't1');updateAll()">ADC</button>
+      <button class="tablinks" onclick="openTab(event, 't2');updateAll()">TDC</button>
+      <button class="tablinks" onclick="openTab(event, 't3');updateAll()">Hit</button>
+    </div>
+    <div class="selector">
+      <select id="daySel"  onchange="updateTime()"></select>
+      <select id="timeSel" onchange="updateAll();updateURL()" ></select>
+    </div>
   </div>
 
-  <div id="t0" class="tabcontent cell3x2 active">
+  <div id="t0" class="tabcontent cell3x2">
     <div><div id="t0d0"></div></div>
     <div><div id="t0d1"></div></div>
     <div><div id="t0d2"></div></div>
index cb4d42e6ebec21ef9c7e0afa9d99ea3e31a1e57c..dfa5ecb62f23ad286347a0081fbacd135ab4daef 100644 (file)
@@ -6,12 +6,17 @@
   <link rel="icon" type="image/x-icon" href="icons/favicon.ico">
   <title>QA - WALL</title>
   <script type='module'>
-    import { openTab } from './files/functions.mjs';
+    import {openTab, openTabURL, updateDay, updateTime, updateURL} from './files/functions_base.mjs';
     window.openTab = openTab;
+    openTabURL();
+    window.updateURL = updateURL;
+    window.updateTime = () => updateTime("WALL");
+    updateDay("WALL");
+    setInterval(updateDay, 5*60*1000, "WALL");
   </script>
 
   <script type='module'>
-    import { initUpdate, update } from './files/functions.mjs';
+    import { initUpdate, update , updateOtherTabs} from './files/functions.mjs';
 
     let histnames = 
       [
       [
         [
           [
-            {HIST: {fOption: 'hist'}},//"WALL/hWallProf1/hWallProf1__0__0_",
-            {HIST: {fOption: 'hist'}} //"WALL/hWallProf1/hWallProf1__0__1_"
+            {fOption: 'hist'},
+            {fOption: 'hist'} 
           ],
           [
-            {HIST: {fOption: 'hist'}},//"WALL/hWallProf2/hWallProf2__0__0_",
-            {HIST: {fOption: 'hist'}} //"WALL/hWallProf2/hWallProf2__0__1_"
+            {fOption: 'hist'},
+            {fOption: 'hist'} 
           ],
           [
-            {HIST: {fOption: 'hist'}},//"WALL/hWallProf3/hWallProf3__0__0_",
-            {HIST: {fOption: 'hist'}} //"WALL/hWallProf3/hWallProf3__0__1_"
+            {fOption: 'hist'},
+            {fOption: 'hist'} 
           ]
         ],
         [
           [
-            {HIST: {fOption: 'hist'}},//"/WALL/hWallCellHits/hWallCellHits__0__0_",
-            {HIST: {fOption: 'hist'}} //"/WALL/hWallCellHits/hWallCellHits__0__0_"
+            {fOption: 'hist'},
+            {fOption: 'hist'} 
           ],
-          {HIST: {fOption: 'colz2 logz'}},//"/WALL/hWallTimeRawCell",
-          {HIST: {fOption: 'colz2 logz'}} //"/WALL/hWallWidthRawCell"
+          {fOption: 'colz2 logz'},
+          {fOption: 'colz2 logz'} 
         ],
         [
           [
-            {HIST: {fFillStyle: 0, fLineColor: 1, fLineWidth: 2, fOption: 'hist logy'}, LABEL: 'I Quarter', LEGENDNOAUTO: { fX1NDC: 0.8, fY1NDC: 0.75, fX2NDC: 0.99, fY2NDC: 0.90, fNColumns : 1, fTextSize : 0.04 }},//"/WALL/hWallRawMult/hWallRawMult__0__0_",
-            {HIST: {fFillStyle: 0, fLineColor: 600, fLineWidth: 2, fOption: 'hist logy'}, LABEL: 'II Quarter'},//"/WALL/hWallRawMult/hWallRawMult__0__1_",
-            {HIST: {ffFillStyle: 0, fLineColor: 418, fLineWidth: 2, fOption: 'hist logy'}, LABEL: 'III Quarter'},//"/WALL/hWallRawMult/hWallRawMult__0__2_",
-            {HIST: {ffFillStyle: 0, fLineColor: 861, fLineWidth: 2, fOption: 'hist logy'}, LABEL: 'IV Quarter'} //"/WALL/hWallRawMult/hWallRawMult__0__3_"
+            {fFillStyle: 0, fLineColor: 103, fLineWidth: 2, fOption: 'hist logy', LABEL: 'I Quarter', LEGENDNOAUTO: { fX1NDC: 0.8, fY1NDC: 0.75, fX2NDC: 0.99, fY2NDC: 0.90, fNColumns : 1, fTextSize : 0.04 }},
+            {fFillStyle: 0, fLineColor: 104, fLineWidth: 2, fOption: 'hist logy', LABEL: 'II Quarter'},
+            {ffFillStyle: 0, fLineColor: 105, fLineWidth: 2, fOption: 'hist logy', LABEL: 'III Quarter'},
+            {ffFillStyle: 0, fLineColor: 106, fLineWidth: 2, fOption: 'hist logy', LABEL: 'IV Quarter'} 
           ],
           [
-            {HIST: {fFillStyle: 0, fLineColor: 1, fLineWidth: 2, fOption: 'hist logy'}, LABEL: 'Small', LEGENDNOAUTO: { fX1NDC: 0.8, fY1NDC: 0.75, fX2NDC: 0.99, fY2NDC: 0.90, fNColumns : 1, fTextSize : 0.04 }},//"/WALL/hWallRawMultBySize/hWallRawMultBySize__0__0_",
-            {HIST: {fFillStyle: 0, fLineColor: 600, fLineWidth: 2, fOption: 'hist logy'}, LABEL: 'Medium'},//"/WALL/hWallRawMultBySize/hWallRawMultBySize__0__1_",
-            {HIST: {fFillStyle: 0, fLineColor: 418, fLineWidth: 2, fOption: 'hist logy'}, LABEL: 'Large'}//"/WALL/hWallRawMultBySize/hWallRawMultBySize__0__2_"
+            {fFillStyle: 0, fLineColor: 103, fLineWidth: 2, fOption: 'hist logy', LABEL: 'Small', LEGENDNOAUTO: { fX1NDC: 0.8, fY1NDC: 0.75, fX2NDC: 0.99, fY2NDC: 0.90, fNColumns : 1, fTextSize : 0.04 }},
+            {fFillStyle: 0, fLineColor: 104, fLineWidth: 2, fOption: 'hist logy', LABEL: 'Medium'},
+            {fFillStyle: 0, fLineColor: 105, fLineWidth: 2, fOption: 'hist logy', LABEL: 'Large'}
           ],
           [
-            {HIST: {fFillStyle: 0, fLineColor: 1, fLineWidth: 2, fOption: 'l'}, LABEL: 'I Quarter', LEGENDNOAUTO: { fX1NDC: 0.1, fY1NDC: 0.89, fX2NDC: 0.9, fY2NDC: 0.95, fNColumns: 4, fTextSize: 0.04 }},//"/WALL/trending/hWallRawMult_trend/hWallRawMult_trend__0__0_",
-            {HIST: {fFillStyle: 0, fLineColor: 600, fLineWidth: 2, fOption: 'l'}, LABEL: 'II Quarter'},//"/WALL/trending/hWallRawMult_trend/hWallRawMult_trend__0__1_",
-            {HIST: {ffFillStyle: 0, fLineColor: 418, fLineWidth: 2, fOption: 'l'}, LABEL: 'III Quarter'},//"/WALL/trending/hWallRawMult_trend/hWallRawMult_trend__0__2_",
-            {HIST: {ffFillStyle: 0, fLineColor: 861, fLineWidth: 2, fOption: 'l'}, LABEL: 'IV Quarter'} //"/WALL/trending/hWallRawMult_trend/hWallRawMult_trend__0__3_"
+            {fFillStyle: 0, fLineColor: 103, fLineWidth: 2, fOption: 'l', LABEL: 'I Quarter', LEGENDNOAUTO: { fX1NDC: 0.1, fY1NDC: 0.89, fX2NDC: 0.9, fY2NDC: 0.95, fNColumns: 4, fTextSize: 0.04 }},
+            {fFillStyle: 0, fLineColor: 104, fLineWidth: 2, fOption: 'l', LABEL: 'II Quarter'},
+            {ffFillStyle: 0, fLineColor: 105, fLineWidth: 2, fOption: 'l', LABEL: 'III Quarter'},
+            {ffFillStyle: 0, fLineColor: 106, fLineWidth: 2, fOption: 'l', LABEL: 'IV Quarter'} 
           ],
           [
-            {HIST: {fFillStyle: 0, fLineColor: 1, fLineWidth: 2, fOption: 'l'}, LABEL: 'Small', LEGENDNOAUTO: { fX1NDC: 0.1, fY1NDC: 0.89, fX2NDC: 0.9, fY2NDC: 0.95, fNColumns: 3, fTextSize: 0.04 }},//"/WALL/trending/hWallRawMultBySize_trend/hWallRawMultBySize_trend__0__0_",
-            {HIST: {fFillStyle: 0, fLineColor: 600, fLineWidth: 2, fOption: 'l'}, LABEL: 'Medium'},//"/WALL/trending/hWallRawMultBySize_trend/hWallRawMultBySize_trend__0__1_",
-            {HIST: {fFillStyle: 0, fLineColor: 418, fLineWidth: 2, fOption: 'l'}, LABEL: 'Large'}//"/WALL/trending/hWallRawMultBySize_trend/hWallRawMultBySize_trend__0__2_"
+            {fFillStyle: 0, fLineColor: 103, fLineWidth: 2, fOption: 'l', LABEL: 'Small', LEGENDNOAUTO: { fX1NDC: 0.1, fY1NDC: 0.89, fX2NDC: 0.9, fY2NDC: 0.95, fNColumns: 3, fTextSize: 0.04 }},
+            {fFillStyle: 0, fLineColor: 104, fLineWidth: 2, fOption: 'l', LABEL: 'Medium'},
+            {fFillStyle: 0, fLineColor: 105, fLineWidth: 2, fOption: 'l', LABEL: 'Large'}
           ],
         ],
         [
-          {},//"/WALL/hWallHitTime",
-          {},//"/WALL/hWallHitCharge",
-          {} //"/WALL/hWallHitXY"
+          {},
+          {},
+          {} 
         ],
         [
-          {},//"/WALL/hWallTimeSmall",
-          {},//"/WALL/hWallTimeMedium",
-          {},//"/WALL/hWallTimeLarge",
-          {},//"/WALL/hWallADCSmall",
-          {},//"/WALL/hWallADCMedium",
-          {} //"/WALL/hWallADCLarge"
+          {},
+          {},
+          {},
+          {},
+          {},
+          {} 
         ],
         [
-          {},//"/WALL/hWallLatchTimeSmall",
-          {},//"/WALL/hWallLatchTimeMedium",
-          {},//"/WALL/hWallLatchTimeLarge",
-          {},//"/WALL/hWallLatchADCSmall",
-          {},//"/WALL/hWallLatchADCMedium",
-          {}//"/WALL/hWallLatchADCLarge",
+          {},
+          {},
+          {},
+          {},
+          {},
+          {}
         ],
         [
-          {HIST: {fOption: 'colz2 logz'}},//"/WALL/hWallTimeCalCell",
-          {HIST: {fOption: 'colz2 logz'}} //"/WALL/hWallChargeCalCell"
+          {fOption: 'colz2 logz'},
+          {fOption: 'colz2 logz'} 
         ]
       ];
     let helptext = 
         ["",""]
       ]; 
       
-    initUpdate(histnames, histoptions, helptext, {Palette: 55});
-    setInterval(update, 3000, histnames, histoptions);
+    initUpdate(histnames, helptext, {Palette: 55});
+    const day = document.getElementById('daySel').value;
+    const time = document.getElementById('timeSel').value;
+    update(histnames, histoptions, day, time);
+    // updateOtherTabs(histnames, histoptions, day, time);
+    setInterval(() => 
+      {
+        const day = document.getElementById('daySel').value;
+        const time = document.getElementById('timeSel').value;
+        update(histnames, histoptions, day, time);
+      }, 3000
+    );
+    document.updateAll = () => 
+      {
+        const day = document.getElementById('daySel').value;
+        const time = document.getElementById('timeSel').value;
+        update(histnames, histoptions, day, time);
+        // updateOtherTabs(histnames, histoptions, day, time);
+      };
   </script>
 </head>
 
 <body>
   <div class="tab">
-    <a href="/hadesroot"><button><b>WALL</b></button></a>
-    <button class="tablinks active" onclick="openTab(event, 't0')">Profile</button>
-    <button class="tablinks" onclick="openTab(event, 't1')">Main</button>
-    <button class="tablinks" onclick="openTab(event, 't2')">Trend</button>
-    <button class="tablinks" onclick="openTab(event, 't3')">Hit</button>
-    <button class="tablinks" onclick="openTab(event, 't4')">Control</button>
-    <button class="tablinks" onclick="openTab(event, 't5')">ControlLATCH</button>
-    <button class="tablinks" onclick="openTab(event, 't6')">Cal</button>
+    <div class="tab-buttons">
+      <a href="/hadesroot"><button><b>WALL</b></button></a>
+      <button class="tablinks" onclick="openTab(event, 't0');updateAll()">Profile</button>
+      <button class="tablinks" onclick="openTab(event, 't1');updateAll()">Main</button>
+      <button class="tablinks" onclick="openTab(event, 't2');updateAll()">Trend</button>
+      <button class="tablinks" onclick="openTab(event, 't3');updateAll()">Hit</button>
+      <button class="tablinks" onclick="openTab(event, 't4');updateAll()">Control</button>
+      <button class="tablinks" onclick="openTab(event, 't5');updateAll()">ControlLATCH</button>
+      <button class="tablinks" onclick="openTab(event, 't6');updateAll()">Cal</button>
+    </div>
+    <div class="selector">
+      <select id="daySel"  onchange="updateTime()"></select>
+      <select id="timeSel" onchange="updateAll();updateURL()" ></select>
+    </div>
   </div>
-
-  <div id="t0" class="tabcontent cell3x1 active">
+  <div id="t0" class="tabcontent cell3x1">
     <div><div id="t0d0"></div></div>
     <div><div id="t0d1"></div></div>
     <div><div id="t0d2"></div></div>
index d567199c4f3be871f2b61d176b46a86c487751be..e029e07767da404f085bae9ad449fc0a91b2831a 100644 (file)
@@ -1,16 +1,15 @@
 import * as root from '/jsroot/modules/main.mjs';
 
 let first_call = {};
-export async function initUpdate(histnames, histoptions, helptext, globalSettings) {
-    for (var t = 0; t < histnames.length; t++) {
+export async function initUpdate(histnames, helptext, globalSettings) {
+    for (let t = 0; t < histnames.length; t++) {
         first_call[t] = {};
     }
     if (globalSettings) for (let [key, value] of Object.entries(globalSettings)) {
         root.settings[key] = value;
     }
     // document.getElementsByClassName("tabcontent")[0].style.display = 'flex';
-    document.getElementsByClassName("tabcontent")[0].classList.add("active");
-    await update(histnames, histoptions);
+    // document.getElementsByClassName("tabcontent")[0].classList.add("active");
 
     // Array.from(document.getElementsByClassName("tabcontent")).forEach(addhelp);
     for (let tc = 0; tc < document.getElementsByClassName("tabcontent").length; tc++) {
@@ -32,7 +31,7 @@ function deepMerge(target, source) {
     if (!source)
         return target;
     Object.entries(source).forEach(([key, value]) => {
-        if (value && typeof value === 'object') {
+        if (value && typeof value === 'object' && !Array.isArray(value)) {
             deepMerge(target[key] = target[key] || {}, value);
             return;
         }
@@ -52,12 +51,37 @@ function setPainterSettings(painter, settings) {
         deepMerge(painter.getPadPainter(), settings.PAD);
 }
 
-function createLegendEntry(obj, lbl) {
-    let entry = root.create('TLegendEntry');
-    entry.fObject = obj;
-    entry.fLabel = lbl;
-    entry.fOption = 'l';
-    return entry;
+function createLegend(histo, histos, lbls, settings) {
+    let leg = root.create('TLegend');
+    if (settings) Object.assign(leg, settings);
+    for (let [key, lbl] of Object.entries(lbls)) {
+        let entry = root.create('TLegendEntry');
+        if (typeof lbl === 'object') {
+            deepMerge(entry, lbl);
+            entry.fObject = histos[key];
+        }
+        else {
+            entry.fObject = histos[key];
+            entry.fLabel = lbl;
+            entry.fOption = 'l';
+        }
+        leg.fPrimitives.Add(entry);
+    }
+    if (!settings)
+        histo.fFunctions.Add(leg, 'autoplace');
+    else
+        histo.fFunctions.Add(leg, '');
+}
+
+function createAxisLabels(lbl_names) {
+    const ret = root.create('THashList');
+    for (let l = 0; l < lbl_names.length; l++) {
+        let lbl = root.create('TObjString');
+        lbl.fString = lbl_names[l];
+        lbl.fUniqueID = l + 1;
+        ret.Add(lbl, '');
+    }
+    return ret;
 }
 
 function AddH2(h1, h2) {
@@ -75,132 +99,108 @@ function AddH2(h1, h2) {
         h1.fArray[iX + (nbinsXh1 + 2) * iY] += h2.fArray[iX + (nbinsXh1 + 2) * iY];
 }
 
-export async function update(histnames, histoptions) {
-
-    for (var t = 0; t < histnames.length; t++) {
-        let tablinks = document.getElementsByClassName("tablinks");
-        if (!tablinks[t].className.includes("active"))
-            continue;
+async function getHisto(base, histname, filename, histoption) {
+    // console.log(base + histname + filename);
+    let histo = await root.httpRequest(base + histname + filename, 'object');
+    // console.log(histo);
+    deepMerge(histo, histoption);
+    // console.log(histo);
+    histo.LABEL = histo?.LABEL == '' ? histo.fTitle : histo.LABEL;
+    if (histo.XLABEL) histo.fXaxis.fLabels = createAxisLabels(histo.XLABEL);
+    if (histo.YLABEL) histo.fYaxis.fLabels = createAxisLabels(histo.YLABEL);
+    if (histo.ZLABEL) histo.fZaxis.fLabels = createAxisLabels(histo.ZLABEL);
+    for (let i = 0; i < histo.CONTOURS; i++) histo.fContour[i] = -9999;
+    return histo;
+}
 
-        for (var i = 0; i < histnames[t].length; i++) {
-            if (!Array.isArray(histnames[t][i])) {
-                if (histnames[t][i] == '') continue;
-                let hist = await root.httpRequest('/qaweb/HadesQA/' + histnames[t][i] + '/root.json.gz?compact=23', 'object');
-                if (histoptions[t][i].HIST) deepMerge(hist, histoptions[t][i].HIST);
-                if(hist.XLABEL) 
-                    histoptions[t][i].XLABEL = hist.XLABEL;
-                if (histoptions[t][i].XLABEL) {
-                    hist.fXaxis.fLabels = root.create('THashList');
-                    for (let l = 0; l < histoptions[t][i].XLABEL.length; l++) {
-                        let lbl = root.create('TObjString');
-                        lbl.fString = histoptions[t][i].XLABEL[l];
-                        lbl.fUniqueID = l + 1;
-                        hist.fXaxis.fLabels.Add(lbl, '');
-                    }
-                }
-                if(hist.YLABEL) 
-                    histoptions[t][i].YLABEL = hist.YLABEL;
-                if (histoptions[t][i].YLABEL) {
-                    hist.fYaxis.fLabels = root.create('THashList');
-                    for (let l = 0; l < histoptions[t][i].YLABEL.length; l++) {
-                        let lbl = root.create('TObjString');
-                        lbl.fString = histoptions[t][i].YLABEL[l];
-                        lbl.fUniqueID = l + 1;
-                        hist.fYaxis.fLabels.Add(lbl, '');
-                    }                    
-                }
-                let painter = await root.redraw(`t${t}d${i}`, hist, '');
-                if (!first_call[t][i]) {
-                    setPainterSettings(painter, histoptions[t][i]);
-                    // painter = await root.redraw(`t${t}d${i}`, hist, '');
-                    first_call[t][i] = true;
-                }
-                // console.log(hist);
-                // console.log(painter);
-                // console.log(painter.getFramePainter());
-                // console.log(painter.getPadPainter());
+async function updateCanvas(t, i, base, histnames, filename, histoptions, first_call) {
+    if (!Array.isArray(histnames)) {
+        if (histnames === '') return false;
+        getHisto(base, histnames, filename, histoptions).then(async function(histo) {
+            let painter = await root.redraw(`t${t}d${i}`, histo, '');
+            if (!first_call) {
+                setPainterSettings(painter, histo);
+                painter = await root.redraw(`t${t}d${i}`, histo, '');
+                // first_call = true;
             }
-            else {
-                let histo = [];
-                let label = {};
-                for (var j = 0; j < histnames[t][i].length; j++) {
-                    histo[j] = await root.httpRequest('/qaweb/HadesQA/' + histnames[t][i][j] + '/root.json.gz?compact=23', 'object');
-                    deepMerge(histo[j], histoptions[t][i][j].HIST);
-                    if (histoptions[t][i][j].LABEL == '') label[j] = histo[j].fTitle;
-                    if (histoptions[t][i][j].LABEL) label[j] = histoptions[t][i][j].LABEL;
-                    if (histoptions[t][i][j].XLABEL) {
-                        histo[j].fXaxis.fLabels = root.create('THashList');
-                        for (let l = 0; l < histoptions[t][i][j].XLABEL.length; l++) {
-                            let lbl = root.create('TObjString');
-                            lbl.fString = histoptions[t][i][j].XLABEL[l];
-                            lbl.fUniqueID = l + 1;
-                            histo[j].fXaxis.fLabels.Add(lbl, '');
-                        }
-                    }
-                    if (histo.length > 0 && histo[0]._typename.includes('TH2') && histoptions[t][i][0].STACK)
-                        AddH2(histo[0], histo[j]);
-                    // console.log(histo[j]);
-                }
-                const stack = root.createTHStack(...histo);
-                // console.log(stack);
-                if (histo[0].fTitle) stack.fTitle = histo[0].fTitle;
-                if (Object.keys(label).length) {
-                    let leg = root.create('TLegend');
-                    if (histoptions[t][i][Object.keys(label)[0]].LEGENDNOAUTO)
-                        Object.assign(leg, histoptions[t][i][Object.keys(label)[0]].LEGENDNOAUTO);
-                    for (let [key, value] of Object.entries(label)) {
-                        leg.fPrimitives.Add(createLegendEntry(histo[key], value));
-                    }
-                    // console.log(leg);
-                    if (!histoptions[t][i][Object.keys(label)[0]].LEGENDNOAUTO)
-                        stack.fHists.arr[0].fFunctions.Add(leg, 'autoplace');
-                    else
-                        stack.fHists.arr[0].fFunctions.Add(leg, '');
-                }
-                let painter;
-                if (histo[0]._typename.includes('TH2') && histoptions[t][i][0].STACK)
-                    painter = await root.redraw(`t${t}d${i}`, histo[0], '');
-                else if (histoptions[t][i][0].STACK)
+            // console.log(histo);
+            // console.log(painter);
+            // console.log(painter.getFramePainter());
+            // console.log(painter.getPadPainter());
+        });
+    }
+    else {
+        let promises = [];
+        for (let j = 0; j < histnames.length; j++) {
+            promises[j] = getHisto(base, histnames[j], filename, histoptions[j]);
+        }
+        Promise.all(promises).then(async function(histos) {
+            const label = Object.fromEntries(
+                histos.map((obj, index) => [index, obj.LABEL]).filter(([_, label]) => label !== undefined)
+            );
+            const is2DStack = (histos[0]._typename.includes('TH2') && histos[0].STACK);
+            if (is2DStack) for (const histo of histos) AddH2(histos[0], histo);
+            const stack = root.createTHStack(...histos);
+            if (histos[0].fTitle) stack.fTitle = histos[0].fTitle;
+            if (label.length > 0 || histos[0].LEGENDNOAUTO) createLegend(histos[0], histos, label, histos[0].LEGENDNOAUTO);
+            let painter;
+            if (is2DStack)
+                painter = await root.redraw(`t${t}d${i}`, histos[0], '');
+            else if (histos[0].STACK)
+                painter = await root.redraw(`t${t}d${i}`, stack, '');
+            else
+                painter = await root.redraw(`t${t}d${i}`, stack, 'nostack');
+            if (!first_call) {
+                setPainterSettings(painter, histos[0]);
+                if (is2DStack)
+                    painter = await root.redraw(`t${t}d${i}`, histos[0], '');
+                else if (histos[0].STACK)
                     painter = await root.redraw(`t${t}d${i}`, stack, '');
                 else
                     painter = await root.redraw(`t${t}d${i}`, stack, 'nostack');
-                if (!first_call[t][i]) {
-                    setPainterSettings(painter, histoptions[t][i][0]);
-                    // if (histo[0]._typename.includes('TH2') && histoptions[t][i][0].STACK)
-                    //     painter = await root.redraw(`t${t}d${i}`, histo[0], '');
-                    // else if (histoptions[t][i][0].STACK)
-                    //     painter = await root.redraw(`t${t}d${i}`, stack, '');
-                    // else
-                    //     painter = await root.redraw(`t${t}d${i}`, stack, 'nostack');
-                    first_call[t][i] = true;
-                }
-                // console.log(stack);
-                // console.log(histo[0]);
-                // console.log(painter);
-                // console.log(painter.getFramePainter());
-                // console.log(painter.getPadPainter());
+                // first_call = true;
             }
+            // console.log(stack);
+            // console.log(histos[0]);
+            // console.log(painter);
+            // console.log(painter.getFramePainter());
+            // console.log(painter.getPadPainter());
+        });
+    }
+    return true;
+}
+
+function update_tab(t, histnames, histoptions, date, time) {
+    for (let i = 0; i < histnames[t].length; i++) {
+        let basename, filename;
+        if (date == 'LIVE' || date == '' || time == '') {
+            basename = '/qaweb/HadesQA/';
+            filename = '/root.json.gz?compact=23';
         }
+        else {
+            basename = `downloads/backup/${date}/${time}/HadesQA/`;
+            filename = '.root.json.gz';
+        }
+        first_call[t][i] = updateCanvas(t, i, basename, histnames[t][i], filename, histoptions[t][i], first_call[t][i]);
     }
 }
 
-export function openTab(evt, Name) {
-    // Declare all variables
-    var i, tabcontent, tablinks;
+export function update(histnames, histoptions, date, time) {
+    for (let t = 0; t < histnames.length; t++) {
+        let tablinks = document.getElementsByClassName("tablinks");
+        if (!tablinks[t].className.includes("active"))
+            continue;
 
-    // Get all elements with class="tabcontent" and hide them
-    tabcontent = document.getElementsByClassName("tabcontent");
-    for (i = 0; i < tabcontent.length; i++) {
-        tabcontent[i].classList.remove("active");
+        update_tab(t, histnames, histoptions, date, time);
     }
+}
 
-    // Get all elements with class="tablinks" and remove the class "active"
-    tablinks = document.getElementsByClassName("tablinks");
-    for (i = 0; i < tablinks.length; i++) {
-        tablinks[i].classList.remove("active");
-    }
+export function updateOtherTabs(histnames, histoptions, date, time) {
+    for (let t = 0; t < histnames.length; t++) {
+        let tablinks = document.getElementsByClassName("tablinks");
+        if (tablinks[t].className.includes("active"))
+            continue;
 
-    // Show the current tab, and add an "active" class to the button that opened the tab
-    document.getElementById(Name).classList.add("active");
-    evt.currentTarget.classList.add("active");
+        update_tab(t, histnames, histoptions, date, time);
+    }
 }
index e0eb6e1cfb8e530cbd732e6b677a9148a0ae8ef1..42c81c1564771a49b9c7643817ea3af28fbc0cfd 100644 (file)
@@ -103,9 +103,20 @@ body {
   padding: 0;
   margin: 0;
   background-color: #f1f1f1;
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+  /* flex-wrap: wrap; */
+  gap: 0;
+
+}
+
+.tab-buttons {
+  display: flex;
 }
 
-.tab button {
+.tab button,
+.tab a button {
   background-color: inherit;
   float: left;
   border: 1px solid #aaa;
@@ -114,6 +125,23 @@ body {
   padding: 5px 20px;
   transition: 0.3s;
   border-radius:10px 10px 0 0;
+  flex-shrink: 0;
+}
+
+.selector {
+  display: flex;
+}
+
+.selector select {
+  background-color: inherit;
+  top: 5px;
+  float: right;
+  border: 1px solid #aaa;
+  outline: none;
+  cursor: pointer;
+  padding: 5px 20px;
+  transition: 0.3s;
+  border-radius:10px 10px 0 0;
 }
 
 .tab button:hover {
index b4c4a91318a7b3c40faaec2a13f2b2b313497b96..b14a24f37b655e01c5e96cfba8408fb7a18340ca 100644 (file)
 <li><a href="RPC.htm">RPC</a></li>
 <li><a href="EMC.htm">Calorimeter</a></li>
 <li><a href="WALL.htm">Forward Wall</a></li>
+</ul></div>
+
 
+<div class="linkbox" style="float:left;width:730px;"><h4>Miscellaneous</h4><ul>
+<li><a href="TDC.htm">TDC Calibration Test data</a></li>
 </ul></div>
 
 </body>