88import org .jlab .groot .group .DataGroup ;
99import org .jlab .io .base .DataBank ;
1010import org .jlab .io .base .DataEvent ;
11+ import org .jlab .utils .groups .IndexedList ;
1112import org .jlab .utils .groups .IndexedTable ;
1213
1314/**
1718
1819public class DCmonitor extends DetectorMonitor {
1920
20- public IndexedTable tt = null ;
21+ public IndexedTable forward = null ;
2122 public IndexedTable reverse = null ;
2223
2324 public DCmonitor (String name ) {
2425 super (name );
2526 this .setDetectorTabNames ("occupancy" , "occupancyNorm" , "occupancyToT" , "occupancyPercent" , "multiplicity" , "tot" , "groupMult" , "tdc2d" , "tdc1d_s" );
2627 this .useSectorButtons (true );
2728 this .init (false );
29+ this .getCcdb ().init ("/daq/tt/dc" );
2830 }
2931
3032 @ Override
3133 public void createHistos () {
3234
33- this .getReverseTT ( runNumber );
35+ forward = this .getCcdb (). getConstants ( runNumber , "/daq/tt/dc" );
3436
3537 // create histograms
3638 this .setNumberOfEvents (0 );
@@ -45,7 +47,6 @@ public void createHistos() {
4547
4648 H1F raw_summary = new H1F ("raw_summary" ,"raw_summary" ,6 ,0.5 ,6.5 );
4749
48-
4950 for (int sector =1 ; sector <= 6 ; sector ++) {
5051 H2F raw = new H2F ("raw_sec" + sector , "Sector " + sector + " Occupancy" , 112 , 0.5 , 112.5 , 36 , 0.5 , 36.5 );
5152 raw .setTitleX ("wire" );
@@ -66,14 +67,12 @@ public void createHistos() {
6667 occToT .setTitleX ("wire" );
6768 occToT .setTitleY ("layer" );
6869 occToT .setTitle ("sector " +sector );
69-
7070
7171 H1F reg_occ = new H1F ("reg_occ_sec" + sector , "Sector " + sector + " region Occupancy" , 3 , 0.5 , 3.5 );
7272 reg_occ .setTitleX ("region" );
7373 reg_occ .setTitleY ("occupancy %" );
7474 reg_occ .setTitle ("sector " +sector );
7575 reg_occ .setFillColor (3 );
76-
7776
7877 H1F raw_reg_occ = new H1F ("raw_reg_occ_sec" + sector , "Sector " + sector + " region Occupancy" , 3 , 0.5 , 3.5 );
7978 raw_reg_occ .setTitleX ("region" );
@@ -124,36 +123,37 @@ public void createHistos() {
124123 dg .addDataSet (groupMult , 10 );
125124 this .getDataGroup ().add (dg , sector ,0 ,0 );
126125 }
127-
128-
129-
130126 }
131-
132- private void getReverseTT (int run ) {
133- this .getCcdb ().init ("/daq/tt/dc" );
134- tt = this .getCcdb ().getConstants (run , "/daq/tt/dc" );
127+
128+ @ Override
129+ public void runNumberChanged () {
130+ reverse = getReverseTT (forward );
131+ }
132+
133+ private static IndexedTable getReverseTT (IndexedTable tt ) {
135134 System .err .print ("Inverting DC translation table, this may take a few seconds ..." );
136- reverse = new IndexedTable (4 , "crate/I:slot/I:channel/I" );
137- for (int row = 0 ; row < tt .getRowCount (); row ++ ) {
138- int crate = Integer . parseInt (( String ) tt . getValueAt ( row , 0 ) );
139- int slot = Integer . parseInt (( String ) tt . getValueAt ( row , 1 ) );
140- int channel = Integer . parseInt (( String ) tt . getValueAt ( row , 2 ) );
135+ IndexedTable ret = new IndexedTable (4 , "crate/I:slot/I:channel/I" );
136+ for (Object key : tt .getList (). getMap (). keySet () ) {
137+ int crate = IndexedList . IndexGenerator . getIndex (( long ) key , 0 );
138+ int slot = IndexedList . IndexGenerator . getIndex (( long ) key , 1 );
139+ int channel = IndexedList . IndexGenerator . getIndex (( long ) key , 2 );
141140 int sector = tt .getIntValue ("sector" , crate ,slot ,channel );
142141 int layer = tt .getIntValue ("layer" , crate ,slot ,channel );
143142 int comp = tt .getIntValue ("component" , crate ,slot ,channel );
144143 int order = tt .getIntValue ("order" , crate ,slot ,channel );
145- reverse .addEntry (sector , layer , comp , order );
146- reverse .setIntValue (crate , "crate" , sector , layer , comp , order );
147- reverse .setIntValue (slot , "slot" , sector , layer , comp , order );
148- reverse .setIntValue (channel , "channel" , sector , layer , comp , order );
144+ ret .addEntry (sector , layer , comp , order );
145+ ret .setIntValue (crate , "crate" , sector , layer , comp , order );
146+ ret .setIntValue (slot , "slot" , sector , layer , comp , order );
147+ ret .setIntValue (channel , "channel" , sector , layer , comp , order );
149148 }
150149 System .err .println ("Done inverting DC translation table." );
150+ return ret ;
151151 }
152152
153153 @ Override
154154 public void plotHistos () {
155155 // initialize canvas and plot histograms
156-
156+
157157 this .getDetectorCanvas ().getCanvas ("occupancy" ).divide (2 , 3 );
158158 this .getDetectorCanvas ().getCanvas ("occupancy" ).setGridX (false );
159159 this .getDetectorCanvas ().getCanvas ("occupancy" ).setGridY (false );
@@ -289,8 +289,8 @@ public void processEvent(DataEvent event) {
289289 for (int key : multiplicity .keySet ()) {
290290 int slot = this .getL (key );
291291 int group = this .getC (key )/16 ;
292- int sector = this .tt .getIntValue ("sector" , this .getS (key ), this .getL (key ), this .getC (key ));
293- int layer = this .tt .getIntValue ("layer" , this .getS (key ), this .getL (key ), this .getC (key ));
292+ int sector = this .forward .getIntValue ("sector" , this .getS (key ), this .getL (key ), this .getC (key ));
293+ int layer = this .forward .getIntValue ("layer" , this .getS (key ), this .getL (key ), this .getC (key ));
294294 int region = (layer -1 )/12 +1 ;
295295 int sc = slot <10 ? (slot -3 )*6 +group : (slot -7 )*6 +group ;
296296 this .getDataGroup ().getItem (sector ,0 ,0 ).getH2F ("group_mult_sec" +sector ).fill (multiplicity .get (key ),(region -1 )*85 +sc );
@@ -322,7 +322,7 @@ public void analysisUpdate() {
322322 }
323323
324324 for (int sector =1 ; sector <=6 ; sector ++) {
325- H1F raw = this .getDataGroup ().getItem (sector ,0 ,0 ).getH1F ("raw_reg_occ_sec" +sector );
325+ H1F raw = this .getDataGroup ().getItem (sector ,0 ,0 ).getH1F ("raw_reg_occ_sec" +sector );
326326 H1F ave = this .getDataGroup ().getItem (sector ,0 ,0 ).getH1F ("reg_occ_sec" +sector );
327327 if (entries >0 ) {
328328 for (int loop = 0 ; loop < 3 ; loop ++){
0 commit comments