From 415844009904b99dbb57fe13e20a564cb554fdff Mon Sep 17 00:00:00 2001 From: Samuel Rodriguez Ochoa <ro.samuel@javeriana.edu.co> Date: Tue, 11 Jun 2024 18:14:12 +0200 Subject: [PATCH] Delete 2024.05.17_analysis_SCB1.5_total_board.py --- 2024.05.17_analysis_SCB1.5_total_board.py | 411 ---------------------- 1 file changed, 411 deletions(-) delete mode 100644 2024.05.17_analysis_SCB1.5_total_board.py diff --git a/2024.05.17_analysis_SCB1.5_total_board.py b/2024.05.17_analysis_SCB1.5_total_board.py deleted file mode 100644 index 1eab06e..0000000 --- a/2024.05.17_analysis_SCB1.5_total_board.py +++ /dev/null @@ -1,411 +0,0 @@ -#!/usr/bin/env python -#imports -import ROOT -import numpy as np -from datetime import datetime -#Run code -#python -i 2024.05.17_analysis_SCB1.5_total_board.py - -#---------------------------------------------------FUNCTIONS------------------------------------------------------------------ - -#Temperature function -def Temperature(R_SCB): - A=3.9083E-3 - B=-5.775E-7 - C=-4.183E-12 - R0=10000 - if R_SCB < R0: - # 0 = (C4)T^4 + (C3)T^3 + (C2)T^2 + (C1)T + (C0) - C4 = C*R0 - C3 = -C*R0*100 - C2 = B*R0 - C1 = A*R0 - C0 = R0-R_SCB - Tempf = ROOT.Math.Polynomial(C4,C3,C2,C1,C0) - else: - # 0 = (C2)T^2 + (C1)T + (C0) - C2 = B*R0 - C1 = A*R0 - C0 = R0-R_SCB - Tempf = ROOT.Math.Polynomial(C2,C1,C0) - - return Tempf - -pass - - -#---------------------------------------------------VARIABLES----------------------------------------------------------------- - -#MEASUREMENTS -Ch = 0 # channel read -Iout = 0 # source current from the VRB in uA -Vd = 0 # experimental Vref measured -Vout = 0 # output voltage from SCB -Vin = 0 # input voltage from main power supply -Vref=0 # theoretical Vref then is set -points=0 #points taken -#FLAG VARIABLES -current_Vin=0 # when Vin change -sample_counter=0 # samples registered -flag_data = False # flag in false - -#error -maximum_error=0 #Maximum delta measured collector -current_e1=0#maximum error from VRB -current_e2=0#maximum error from SCB -channel_error1=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]#channel error map -channel_error2=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]#channel error map - -#--------------------------------------------------STYLE IMPORT--------------------------------------------------------- - -#ATLAS style -ROOT.gROOT.SetStyle("ATLAS") -legend = ROOT.TLegend(.85,.60,.95,.95) -#Colors for every channel -color_map=[1,11,3,4,5,6,7,8,9,30,38,40,41,42,43,44,45,47,28,23,21,12,33,16] -MuxMap=[4,5,8,9,12,13,14,3,6,7,10,11,27,26,23,22,19,18,17,28,25,24,21,20] - -#---------------------------------------------------GRAPHS---------------------------------------------------------------- - -#multigraph Graph format -mg1 = ROOT.TMultiGraph()# Voltage (SCB) VS Temperature (VRB) -mg2 = ROOT.TMultiGraph()# Voltage (SCB)VS Temperature (SCB) -mg3 = ROOT.TMultiGraph()# Temperature Error (VRB) VS Temperature (VRB) -mg4 = ROOT.TMultiGraph()# Temperature Error (SCB) VS Temperature (SCB) -mg5 = ROOT.TMultiGraph()# Delta Temperature (VRB-SCB) VS Temperature (VRB) - -#multigraph names -mg1.SetTitle(";Voltage from SCB [V];Temperature Read from VRB [C]")# Temperature (VRB) VS Voltage (SCB) -mg2.SetTitle(";Voltage from SCB [V];Temperature Read from SCB [C]")# Temperature (SCB) VS Voltage (SCB) -mg3.SetTitle(";Theoretical temperature [C];Temperature Error Read from VRB [C]")# Temperature Error (VRB) VS Temperature (THEORETICAL) -mg4.SetTitle(";Theoretical temperature [C];Temperature Error Read from SCB [C]")# Temperature Error (SCB) VS Temperature (THEORETICAL) -mg5.SetTitle(";Input from VRB temperature [C];#Delta Temperature [C]")# Delta Temperature (VRB-SCB) VS Temperature (VRB) - -#data management -data1={}#temp (VRB) -data2={}#temp (SCB) -data3={}#error temp (VRB) -data4={}#error temp (SCB) -data7={}#Delta temperature (VRB-SCB) - -#tf to fit -tf1={}# Voltage (SCB) VS Temperature (VRB) -tf2={}# Voltage (SCB)VS Temperature (SCB) - -#-------------------------------------------------HISTOGRAMS----------------------------------------------------------------- - -#analysis Voltage (SCB) VS Temperature (VRB) and Voltage (SCB)VS Temperature (SCB) parameters -h1=ROOT.TH1F("h1",";P0_VRB [C]",100,1000,2000) -h2=ROOT.TH1F("h2",";P1_VRB [C/V]",100,-2000,-1000) -h3=ROOT.TH1F("h3",";P2_VRB [C/V^2]",100,300,700) -h4=ROOT.TH1F("h4",";P0_SCB [C]",100,1000,2000) -h5=ROOT.TH1F("h5",";P1_SCB [C/V]",100,-2000,-1000) -h6=ROOT.TH1F("h6",";P2_SCB [C/V^2]",100,300,700) - -#Error Delta Temperature (VRB-SCB) -h9=ROOT.TH1F("Delta_Temperature",";#Delta Temperature [C]",50,-1,1) - -#Vref -h10=ROOT.TH1F("Vref_histogram",";Vref [V]",10,0.7,0.9) #Vref - -#------------------------------------------------------MAIN---------------------------------------------------------- - - -#--------data collector - -file=open('2024.05.22_DAQ_report.txt')#open the file - -for line in file.readlines(): - - data = line.strip().split(',')#split by commas line read - ch = int(data[0])#channel - Vin = float(data[1])#Vin (negative) - Iout += float(data[2])#Iout - Vout += float(data[3])#Vout - Vd += float(data[4])#Vd - Vref= 0.799319 #Vref theoretical - sample_counter+=1 - -#--------data processor -#-------mean in every measure (voltage point) - - if flag_data: - Iout=Iout/sample_counter - Vout=Vout/sample_counter - Vd=Vd/sample_counter - print("%5i,%10.4f,%10.4f,%10.4f,%10.3f" % (ch,Iout,Vout,Vd,Vin)) - -#-------Temperature change - - #Experimental temperature 1 - #R_SCB1=1000*Vd/Iout# RSCB kohm Iout uA - R_SCB1=1000*Vref/Iout# RSCB kohm Iout uA - Temp1 = Temperature(1000*R_SCB1) - Temp1Roots = Temp1.FindRealRoots() - - #Experimental temperature 2 - #R_SCB2=(10*Vd/(Vout-Vd))# RSCB Kohm - R_SCB2=(10*Vref/(Vout-Vref))# RSCB Kohm - R_SCB2 = 1000*Vout/Iout-10 - Temp2 = Temperature(1000*R_SCB2) - Temp2Roots = Temp2.FindRealRoots() - - #Theoretical temperature - R_SCBT=(59.948)/(12-Vin)# RSCB kohm - Tempt = Temperature(1000*R_SCBT) - TemptRoots = Tempt.FindRealRoots() - -#--------error calculation in the measurements - - #Error experimental temperature 1 - R_error_e1=ROOT.Math.sqrt(1+(1E6*(Vd/Iout)*(Vd/Iout))) - R_error_e1=(10/Iout)*R_error_e1 - T_error_e1= Temperature(R_error_e1+10000) - T_error_e1Roots= T_error_e1.FindRealRoots() - - #Error experimental temperature 2 - A = 4E-2*((Vd*Vd)/((Vout-Vd)*(Vout-Vd))) - B = 10E-10*((Vout*Vout*10000*10000)/((Vout-Vd)*(Vout-Vd))) - C = 1E-8*((Vd*Vd*10000*10000)/((Vout-Vd)*(Vout-Vd))) - R_error_e2=ROOT.Math.sqrt(A+B+C) - T_error_e2= Temperature(R_error_e2+10000) - T_error_e2Roots= T_error_e2.FindRealRoots() - - -#--------set data multigraphs - - if not ch in data1: - gr=ROOT.TGraph() - gr.SetMarkerStyle(20) - data1[ch]=gr - pass - if not ch in data2: - gr=ROOT.TGraph() - gr.SetMarkerStyle(20) - data2[ch]=gr - pass - if not ch in data3: - gr=ROOT.TGraph() - gr.SetMarkerStyle(20) - data3[ch]=gr - pass - if not ch in data4: - gr=ROOT.TGraph() - gr.SetMarkerStyle(20) - data4[ch]=gr - pass - if not ch in data7: - gr=ROOT.TGraph() - gr.SetMarkerStyle(29) - gr.SetMarkerColor(color_map[MuxMap.index(ch)]) - legend.AddEntry(gr,"channel: %5i"%(ch)) - data7[ch]=gr - pass - -#----------save data from -40 to 25 degrees celsius - - if (TemptRoots[0] > -45) and (TemptRoots[0] < 25): - - #sample registred - points+=1 - - #output response - data1[ch].AddPoint(Vout,Temp1Roots[0]) # Temperature (VRB) VS Voltage (SCB) - data2[ch].AddPoint(Vout,Temp2Roots[0]) # Temperature (SCB) VS Voltage (SCB) - - #error response - data3[ch].AddPoint(TemptRoots[0],T_error_e1Roots[0]) # Temperature Error (VRB) VS Temperature (THEORETICAL) - data4[ch].AddPoint(TemptRoots[0],T_error_e2Roots[0]) # Temperature Error (SCB) VS Temperature (THEORETICAL) - data7[ch].AddPoint(Temp1Roots[0],Temp1Roots[0]-Temp2Roots[0])##delta Temperature (VRB-SCB) VS Temperature (VRB) - h9.Fill(Temp1Roots[0]-Temp2Roots[0]) #histogram - h10.Fill(Vd) - - #storage maximum error on the measure and the maximum found - if channel_error1[ch] < T_error_e1Roots[0]: - channel_error1[ch] = T_error_e1Roots[0] - if channel_error2[ch] < T_error_e1Roots[0]: - channel_error2[ch] = T_error_e2Roots[0] - if maximum_error < (abs(Temp1Roots[0]-Temp2Roots[0])): - maximum_error=abs(Temp1Roots[0]-Temp2Roots[0]) - -#-------------reset variables for the next cycle - Iout=0 - Vout=0 - Vd=0 - sample_counter=0 - flag_data=False - -#-------------change in Vin from minmum limit to maximum limit and vice versa - if current_Vin != Vin: - flag_data=True - current_Vin = Vin - -pass - -#---------------------------------------------------FILL AND FIT DATA-------------------------------------------------- -for ch in data1: - mg1.Add(data1[ch]) - tf1[ch] = ROOT.TF1('tf1_1_%i'%ch,'pol2') - data1[ch].Fit(tf1[ch],"","",1,2.5) - pass - -for ch in data2: - mg2.Add(data2[ch]) - tf2[ch] = ROOT.TF1('tf1_2_%i'%ch,'pol2') - data2[ch].Fit(tf2[ch],"","",1,2.5) - pass - -for ch in data3: - mg3.Add(data3[ch]) - pass - -for ch in data4: - mg4.Add(data4[ch]) - pass - -for ch in data7: - mg5.Add(data7[ch],"PL") - - pass - -#--------------------------------------------PLOT AND EXPORT DATA------------------------------------------------------------ - -#------------------DATA 1,2,3,4------------------ -#draw the Graph -c1=ROOT.TCanvas("c1","c1",1600,1600) -c1.Divide(2,2) - -#first path -c1.cd(1) -mg1.Draw("AP") -mg1.GetXaxis().SetRangeUser(1,2.5) -mg1.GetYaxis().SetRangeUser(-80,60) - -#second path -c1.cd(2) -mg2.Draw("AP") -mg2.GetXaxis().SetRangeUser(1,2.5) -mg2.GetYaxis().SetRangeUser(-80,60) - -#third path -c1.cd(3) -mg3.Draw("AP") -mg3.GetYaxis().SetRangeUser(0,0.1) -mg3.GetXaxis().SetRangeUser(-80,60) - -#fourth path -c1.cd(4) -mg4.Draw("AP") -mg4.GetYaxis().SetRangeUser(0,0.1) -mg4.GetXaxis().SetRangeUser(-80,60) - -#print the draw -c1.Update() -c1.SaveAs("C1.pdf") - - -#--------------------------HISTOGRAM FOR TRANSFER FUNCTION PARAMETERS -for ch in sorted(tf1): - h1.Fill(tf1[ch].GetParameter(0)) - print(tf1[ch].GetParameter(0)) - h2.Fill(tf1[ch].GetParameter(1)) - print(tf1[ch].GetParameter(1)) - h3.Fill(tf1[ch].GetParameter(2)) - print(tf1[ch].GetParameter(2)) - h4.Fill(tf2[ch].GetParameter(0)) - h5.Fill(tf2[ch].GetParameter(1)) - h6.Fill(tf2[ch].GetParameter(2)) - pass - -c2=ROOT.TCanvas("c2","c2",1600,1600) -c2.Divide(3,2) -c2.cd(1) -h1.Draw() -c2.cd(2) -h2.Draw() -c2.cd(3) -h3.Draw() -c2.cd(4) -h4.Draw() -c2.cd(5) -h5.Draw() -c2.cd(6) -h6.Draw() -c2.Update() -c2.SaveAs("c2.pdf") - - -#--------------------------------------DATA 5 AND 6------------------ - -#--------Canvas file 3 -c3=ROOT.TCanvas("c1","c1",1600,800) -c3.Divide(3,1) - -#---------error in every channel -c3.cd(1) -mg5.Draw("A pcm plc")#"AP" -legend.Draw() -c3.SetGrid(10,10) -mg5.GetYaxis().SetRangeUser(-0.4,0.4) -mg5.GetXaxis().SetRangeUser(-40,25) -#--------error histogram -c3.cd(2) -h9.Draw() -#---------Vref histogram -c3.cd(3) -h10.Draw() -c3.Update() -c3.SaveAs("c3.pdf") - -#-----------------------------------------QUANTILES------------------------------------------- -quantiles=[0.05,0.25,0.50,0.75,0.95] -for rep in range(4): - prob=np.array(quantiles[rep]) - y=0. - q=np.array([0.]) - y=h9.GetQuantiles(1,q,prob) - quantiles[rep]=q -pass - -#-----save_file -wf=ROOT.TFile('out.root','RECREATE') -wf.cd() -mg1.Write() -mg2.Write() -mg3.Write() -mg4.Write() -mg5.Write() -h1.Write() -h2.Write() -h3.Write() -h4.Write() -h5.Write() -h6.Write() -h9.Write() -h10.Write() -wf.Close() -#---------------------------------------Final report----------------------------------------- -#write the output transfer function -fw=open("Transfer_function_report.txt","w") -ss = "ID,DATE,EXAMINATOR,MEAN (ERROR),STDV(ERROR),MAX ERROR,# POINTS, Q(5%), Q(25%), Q(50%), Q(75%), Q(95%), A(MEAN),A(STDV),B(MEAN),B(STDV),C(MEAN),C(STDV),Vref(MEAN),VREF(STDV)\n" -fw.write(ss) - -#---data characteristics-------------------------- -ss ="SCB1," # ID -today = datetime.today() -formatted_date = today.strftime("%Y %m %d") - -ss+=formatted_date #DATE -ss+=",Samuel,"#EXAMINATOR - -#----error analysis------------------------------- -ss+="%10.4f,%10.4f,%10.4f,%10i," % (h9.GetMean(1),h9.GetStdDev(1),maximum_error,points) -ss+="%10.4f,%10.4f,%10.4f,%10.4f,%10.4f," % (quantiles[0],quantiles[1],quantiles[2],quantiles[3],quantiles[4]) - -#----transfer function coefficients--------------- -ss+="%10.4f,%10.4f," % (h1.GetMean(1),h1.GetStdDev(1)) # a mean and a stdv -ss+="%10.4f,%10.4f," % (h2.GetMean(1),h2.GetStdDev(1))# b mean and b stdv -ss+="%10.4f,%10.4f," % (h3.GetMean(1),h3.GetStdDev(1))# c mean and c stdv -ss+="%10.4f,%10.20f\n" % (h10.GetMean(1),h10.GetStdDev(1))# Vref mean and Vref stdv -fw.write(ss) -fw.close() -- GitLab