@@ -26,21 +26,25 @@ public class Occupancer extends ArrayList<Occupancer.OccupanceTable> {
2626 static final SchemaFactory FULL_SCHEMA = new SchemaFactory ();
2727 static { FULL_SCHEMA .initFromDirectory (ClasUtilsFile .getResourceDir ("CLAS12DIR" ,"etc/bankdefs/hipo4" )); }
2828
29- int prescale = 1000 ;
29+ long triggerMask = 0x8000000000l ;
30+ int prescale = 0 ;
3031 int nevents = 0 ;
32+ Schema cfgSchema ;
3133
3234 public Occupancer () {
3335 super ();
3436 init ();
3537 }
3638
37- public Occupancer (int prescale ) {
39+ public Occupancer (long triggerMask , int prescale ) {
3840 super ();
41+ this .triggerMask = triggerMask ;
3942 this .prescale = prescale ;
4043 init ();
4144 }
4245
4346 private void init () {
47+ cfgSchema = FULL_SCHEMA .getSchema ("RUN::config" );
4448 try {
4549 // Initialize list, by reading occupancy bank filenames from a directory
4650 // and stripping ".json" suffix and "OCC::" prefix to get hit bank name:
@@ -56,16 +60,19 @@ private void init() {
5660 }
5761
5862 public boolean process (Event event ) {
59- int size = size ();
60- for (int i =0 ; i <size ; i ++) get (i ).fill (event );
61- if (++nevents % prescale == 0 ) {
62- for (int i =0 ; i <size ; i ++) {
63- if (get (i ).getTable ().getRowCount () > 0 ) {
64- event .write (get (i ).create (nevents ));
63+ Bank cfgBank = event .read (new Bank (cfgSchema , 1 ));
64+ if (cfgBank .getRows () > 0 && 0 != (triggerMask & cfgBank .getLong ("trigger" ,0 ))) {
65+ int size = size ();
66+ for (int i =0 ; i <size ; i ++) get (i ).fill (event );
67+ if (++nevents % prescale == 0 ) {
68+ for (int i =0 ; i <size ; i ++) {
69+ if (get (i ).getTable ().getRowCount () > 0 ) {
70+ event .write (get (i ).create (nevents ));
71+ }
72+ get (i ).reset ();
6573 }
66- get ( i ). reset () ;
74+ nevents = 0 ;
6775 }
68- nevents = 0 ;
6976 }
7077 return true ;
7178 }
0 commit comments