11package org.jlab.clas.timeline.analysis
22import java.util.concurrent.ConcurrentHashMap
3+ import java.util.concurrent.atomic.AtomicBoolean
34import org.jlab.groot.data.TDirectory
45import org.jlab.groot.data.GraphErrors
56import org.jlab.clas.timeline.fitter.ALERTFitter
67
78class alert_atof_tdc {
89
910def data = new ConcurrentHashMap ()
11+ def has_data = new AtomicBoolean (false )
1012
1113 def processRun (dir , run ) {
1214
@@ -22,19 +24,27 @@ def data = new ConcurrentHashMap()
2224 if (component <= 10 ) file_index = String . format(' sector%d_layer%d_component%d_order0' , sector, layer, component)
2325 else file_index = String . format(' sector%d_layer%d_component%d_order1' , sector, layer, component-1 )
2426 def h1 = dir. getObject(String . format(' /ALERT/TDC_%s' , file_index))
25- data[run]. put(String . format(' atof_tdc_%s' , file_index), h1)
26- def f1 = ALERTFitter . tdcfitter(h1)
27- data[run]. put(String . format(' fit_atof_tdc_%s' , file_index), f1)
28- data[run]. put(String . format(' peak_location_atof_tdc_%s' , file_index), f1. getParameter(1 ))
29- data[run]. put(String . format(' sigma_atof_tdc_%s' , file_index), f1. getParameter(2 ))
30- data[run]. put(String . format(' integral_normalized_to_trigger_atof_tdc_%s' , file_index), Math . sqrt(2 * 3.141597f ) * f1. getParameter(0 ) * f1. getParameter(2 )/ trigger. getBinContent(reference_trigger_bit) )
27+ if (h1!= null && h1. getEntries()> 10 ) {
28+ data[run]. put(String . format(' atof_tdc_%s' , file_index), h1)
29+ def f1 = ALERTFitter . tdcfitter(h1)
30+ data[run]. put(String . format(' fit_atof_tdc_%s' , file_index), f1)
31+ data[run]. put(String . format(' peak_location_atof_tdc_%s' , file_index), f1. getParameter(1 ))
32+ data[run]. put(String . format(' sigma_atof_tdc_%s' , file_index), f1. getParameter(2 ))
33+ data[run]. put(String . format(' integral_normalized_to_trigger_atof_tdc_%s' , file_index), Math . sqrt(2 * 3.141597f ) * f1. getParameter(0 ) * f1. getParameter(2 )/ trigger. getBinContent(reference_trigger_bit) )
34+ has_data. set(true )
35+ }
3136 }
3237 }
3338
3439
3540
3641 def write () {
3742
43+ if (! has_data. get()) {
44+ System . err. println " ERROR: no data for this ALERT timeline, not producing"
45+ return
46+ }
47+
3848 [' peak_location' , ' sigma' , ' integral_normalized_to_trigger' ]. each{variable ->
3949 (0 .. < 15 ). collect{sector ->
4050 (0 .. < 4 ). collect{layer ->
@@ -67,4 +77,4 @@ def data = new ConcurrentHashMap()
6777 }
6878 }
6979 }
70- }
80+ }
0 commit comments