#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ Overview MPVs plot for BigBGO (AHBGOC) - adapted for DesignAnalysis folder Created on Thu May 2 13:21:02 2024 @author: ava """ import matplotlib.pyplot as plt import sys import numpy as np import pandas as pd from pathlib import Path sys.path.append(str(Path(__file__).resolve().parents[1])) import plotstyle MODE = "slides" # "paper" oder "slides" MODE = "paper" plotstyle.set_style(MODE) # Fixed filenumbers without argparse filenumbers = [14, 16, 18, 20, 5, 7] files = [] descr = [] factors = [] for num in filenumbers: if num == 14: files.append("2023-12-21-AHBGOC-14-langzeit") descr.append("two large diodes") factors.append(1.0) elif num == 16: files.append("2024-01-19-AHBGOC-rau-16_2weeks") descr.append("two large diodes, side roughened") factors.append(1.0) elif num == 18: files.append("2024-03-27-AHBGOC-six-18") descr.append("six small diodes, two preamps") factors.append(1.0) elif num == 20: files.append("2024-04-11-AHBGOC-six-20") descr.append("six small diodes, six preamps") factors.append(1.0) elif num == 22: files.append("2024-04-25-AHBGOC-six-vac-22") descr.append("six small diodes, six preamps, vacuum") factors.append(1.0) elif num == 5: files.append("2026-03-10-ahbgoa-test-5") descr.append("six small diodes, six preamps, dorn readout") factors.append(1/0.7) elif num == 7: files.append("2026-04-13-ahbgoa-test-7") descr.append("six small diodes, six preamps, dorn readout") factors.append(1/0.7) colors = ['tab:blue','tab:orange','tab:green','tab:red','tab:purple','tab:brown', 'tab:pink'] energy = 'keV' f = 1.0 energystr = energy + '$_{Si}$' plt.figure() ypos=[138,148,162,175,107,100] for i in range(len(files)): filename = "/home/asterix/ava/BGO/"+"fitparameters/" + files[i] + '_mpv_sums' data = pd.read_csv(filename+'.txt', sep='\s+') plt.errorbar(data['P'],data['mpv']*factors[i], data['err_mpv']*factors[i], fmt='o',capsize=5,ms=7,barsabove=True,color=colors[i], label=descr[i]) values = data['mpv'] * factors[i] ma = max(values) mi = min(values) std = np.std(values) mean = np.mean(values) cv_percent = (std / mean) * 100 # Variationskoeffizient in Prozent plt.hlines(ma,1,16.5+i/4,ls=':', color=colors[i]) plt.hlines(mi,1,16.5+i/4,ls=':', color=colors[i]) plt.errorbar(16.5+i/4, ma-(ma-mi)/2,(ma-mi)/2,capsize=10,linewidth=2,color=colors[i]) plt.fill_between([1,16.5+i/4], ma,mi,alpha = 0.1,color=colors[i]) kw = dict(color=colors[i]) #plt.text(17.5,ma-(ma-mi)/2-2/(2*i+1), "$\Delta$" + str(np.round(ma-mi,2)),kw) #plt.text(18,ypos[i], "$\Delta$" + str(np.round(ma-mi,2)),kw) plt.text(18, ypos[i], f"CV {cv_percent:.1f}\\%", kw, fontsize=24) # Title numberstr = ','.join(map(str, filenumbers)) tit = f"Overview MPVs at different trigger positions" ylab = 'MPV [' + energystr + ']' xlab = 'Triggerposition' plt.legend(loc='upper right') plt.xticks([1,2,3,4,5,6,7,8,9,10,11,12,13,14, 15, 16, 17]) #plt.title(tit) plt.ylabel(ylab) plt.xlabel(xlab) plt.ylim(100, 270) plt.xlim(0.8, 20) #plt.grid(True, which="both", ls="--", lw=0.5) # Save plot plotstyle.savefig("overview_position_dep", category="BGO") plt.show()