Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2025-08-05 08:11:20

0001 import numpy as np
0002 import math
0003 
0004 def sigmaEff(v, threshold, xmin, xmax):
0005     v = np.sort(v)
0006 
0007     total = np.size(v)
0008     max = threshold * total
0009 
0010     start = []
0011     stop = []
0012     width = []
0013 
0014     i = 0 
0015     while i != np.size(v)-1:
0016         count = 0
0017         j = i
0018         while j != np.size(v)-1 and count < max:
0019             count +=1
0020             j += 1
0021 
0022         if j != np.size(v)-1:
0023             start.append(v[i])
0024             stop.append(v[j])
0025             width.append(v[j] - v[i])
0026 
0027         i += 1
0028 
0029     npminwidth = np.array(width)
0030 
0031     minwidth = np.amin(npminwidth)
0032     pos = np.argmin(npminwidth)
0033 
0034     xmin += [start[pos]]
0035     xmax += [stop[pos]]
0036 
0037     return minwidth
0038 
0039 
0040 def minimum_size_range(file_sizes, percentage):
0041     # calculate how many files need to be in the range
0042     window_size = math.ceil(len(file_sizes) * percentage / 100)
0043 
0044     sorted_sizes = sorted(file_sizes)
0045 
0046     # initialize variables with worst-case values
0047     min_size, max_size = sorted_sizes[0], sorted_sizes[-1]
0048     min_interval = max_size - min_size
0049 
0050     # calculate interval for every window
0051     for i in range(len(sorted_sizes) - (window_size - 1)):
0052         lower, upper = sorted_sizes[i], sorted_sizes[i + (window_size - 1)]
0053         interval = upper - lower
0054 
0055         # if we found a new minimum interval, replace values
0056         if interval < min_interval:
0057             min_interval = interval
0058             min_size, max_size = lower, upper
0059 
0060     return min_size, max_size