Skip to content

Latest commit

 

History

History
134 lines (110 loc) · 6.62 KB

ToDo.md

File metadata and controls

134 lines (110 loc) · 6.62 KB

SCINT TO DO LIST

CYNDRES

CUT FUNCTIONS

  • Hacer que funcione el cut_min_max_sim para que se tengan que cumplir dos condiciones simultaneamente (es realmente necesario?) Sobre todo para calibrar sin cargarse el pedestal al cortar en PeakTime. La idea es que se cumplan dos condiciones A LA VEZ, que es diferente a hace un min_max normal y luego otro, porque ahí se modifican los valores por separado. La idea principal de esto es en claibración, poder cortar en PeakTime sin quedarnos sin pedestal, es decir, que se cumpla que el peakTime esté en el rango que le pides y que además tenga > x ADCs (por encima del single). Así no nos cargamos el pedestal.
  • Hacer que funcione la variable range para poder chequear las variables en un rango concreto de la ventana.

FIT FUNCTIONS

  • Limpiar las funciones, sobre todo las nuevas. Añadir documentación

VIS FUNCTIONS

  • Hacer que el visualizador (vis_npy) admita varios runes seguidos. Los admite pero creo que hay veces en las que se raya un poco. Pero si es solo el visualizador funciona bien.
  • Intentar reducir el tamaño de vis_npy? Funciona bien pero es larga.

OTHERS

  • Conseguir hacer waveforms medias con cortes en varios canales.

CYTHON WORKSHOP III

  • Carpeta tutorial sin tocar, cada uno su carpeta de macros en su branch. Para cambios relevantes para todos se cambia tutorial.
  • Actualizar notebooks (usados para SBND) y dejar plantillas como las macros para que cada uno parta de ahi
  • Notebook visualizador/cortes etc --> visualizador +- en tutorial.
  • Fusion Joython en SCINT --> Andres tiene partes integradas y Rodrigo ha hecho merge de joython en su carpeta.
  • NOTEBOOKS: VisEvent, Cortes
  • Merge rama de Andres (Sergio?) y
  • entender los problemas que hemos tenido
  • DOCUMENTACION, OUTPUT POR TERMINAL, WIKI, COLORSTYLE
  • PASAR A DATAFRAME (read from dat could be the same; load in a df directly from the npy; saving new columns etc)
  • HTML PARA VER EN DIRECTO LOS PLOTS DE RUIDO EN LA TOMA DE DATOS
  • EXTRAS

CYTHON WORKSHOP II

  • Las cargas que se calculan de nuevo se sobrescriben tal y como esta ahora mismo. hay que pensar como organizar eso.

  • Falta por implementar que se pueda repetir el fit y le puedas dar valores de entrada por ejemplo (calib/scintill)

  • En la de scintillation hay que poner que rango de cargas de los que hay calculados quieres usar/fittear o lo que sea

  • El fit del perfil de centelleo para sacar la tau_slow etc --> LISTO EN DECONVOLUCION

  • Calcular NEvents/s ???

  • Documentar algunas cosas que faltan en las funciones + Wiki (hace mas pequeño el codigo o resumir lo importante)

  • Mejorar los output por terminal (colores)

  • (Extra: Calibracion pmt)

  • (Extra: Analisis DC)

  • ColorStyle

  • Leer TimeStamp --> calcular tiempo medida runs / Rate

  • Integrar cada waveform

  • QUITAR BUCLES (cambiar for por vectores)

    • Problema con el procesado de WFS: procesarlas run a run i.e hacer una macro que ejecute python3 ... para cada run y no pete
    • El resto sin bucle (poner un WARNING?)
    • Indexado para quitar los bucles en los cortes.
    my_run[run][ch][key][my_run[run][ch]["MyCuts"] == True]
  • Añadir al ppio de las funciones una comprobacion de si existen cortes generados y aplicarlos en las funciones que vengan despues.

  • No queremos guardar una branch con los cortes --> Ahora se esta guardando

  • Comprobar ganancias FEB22_2 (testear que los resultados son compatibles con las otras macros)

  • TESTS para las medidas XA-SBND

  • Imports desde un .py comun

  • No pasar por los .root :)

  • Cambiar estructura a carpeta (run00_ch00) con .npy (Ana/Dec/Fit) que serian las ramas del root + info extra que vamos añadiendo. Hay que cambiar os prefijos para que sean el nombre de los .npy. Puedes cargas las ramas que elijas. Kind of solve memory problem

  • Libreria de fit: no saca el chi2; hay que cambiarla o ver como añadirlo/calcularlo.

import numpy as np
from scipy.optimize import curve_fit
import matplotlib.pyplot as plt
def fit_gaussians(x, y, N, p0):
    assert x.shape == y.shape, "Input arrays must have the same shape."
    def gaussian(x, a, x0, sigma):
        return a * np.exp(-(x - x0) ** 2 / (2 * sigma ** 2))
    try:
        popt, pcov = curve_fit(lambda x, *p0: np.sum([gaussian(x, p0[j], p0[j+1], p0[j+2]) for j in range(0, len(p0), 3)]), x, y, p0=p0)
        fit_y = np.sum([gaussian(x, popt[j], popt[j+1], popt[j+2]) for j in range(0, len(popt), 3)])
        chi_squared = np.sum((y - fit_y) ** 2 / fit_y) / np.abs(y.size - len(popt))
        plt.plot(x, y, 'b-', label='data')
        plt.plot(x, fit_y, 'r-', label='fit')
        plt.legend()
        plt.show()
        return popt, chi_squared
    except:
        print("Fit failed.")
  • persistencia no funciona

EXTRAS PARA CUANDO TODO FUNCIONE BIEN

  • Cabeceras {ADC, Osciloscopio}
  • Segmentados binarios del osciloscopio a npy
  • Cambiar sampling – por characteristics del setup (sampling, ganancia electrónica, bits adc, etc)

CYTHON WORKSHOP I

  • NOMBRES variables/funciones.
    • FUNCIONES Y ARGUMENTOS → PYTHON NOTATION my_runs: low_case + “_” binding
    • KEYS → C++ notation
    • SPECIAL DICTIONARIES
      • OPT: visualization Options + CHECK KEY
      • CUT: cortes
  • Documentar funciones
  • Cortes
  • Visualizador
  • Check merge main (dictadura) → script rutina para check nada roto
  • Lectura datos + binario → meter antiguas macros
  • Lectura datos ¿nueva forma sin pasar por .root?
  • Load cargue la siguiente run si encuentra alguna que no existe
  • txt de entrada con las runes para no modificar las runes
  • Colores comunes (DUNE plot-style¿?)

CYTHON WORKSHOP 0

  • Histogram visualizer.
    • Solve bin number / width ...
  • Add cuts to visualizer.
    • Variables to cut:
      • Amplitude (min,max)
      • Pedestal max amp > value (look at the histogram amp to check pedestal width)
      • Pedestal STD (think about it...)
      • Peak Time (min, max)
      • Charge (min, max)
      • Two variables cuts (Peak time pro...)
  • Add cuts to functions: average, histograms...
  • Crear funcion de cortes (minmax, corte simultáneo) y añadir un booleano a cada waveform.
  • Las funciones cogeran las waveforms en función de los booleanos.
  • Elegir nombres (en general) que tengan sentido y añadir unidades por cada variable calculada (para los ejes de los plots y demás).
  • Añadir unidades a los npy y solucionar lo de los labels.