PhD-Kopecna-Renata/Scripts/putIntoFigures.py
2022-01-19 11:20:31 +01:00

87 lines
2.9 KiB
Python

from __future__ import print_function
import numpy as np
from putIntoFigures_Utils import *
MAIN_PATH = "/home/renata/Documents/LHCb/Dizertacka/"
decName = "KplusPi0Resolved"
angles = ["ctk", "ctl", "phi"]
params = ["Fl",
"S3",
"S4",
"S5",
"Afb",
"S7",
"S8",
"S9",
"m_b",
"m_sigma_1",
"alpha_1",
"alpha_2",
"n_1",
"n_2"
]
#==============================================================#
# Get all pics in the folder and put them in a latex figure #
#==============================================================#
#Dumps all figures from the file into a list
def read_ls(path):
import subprocess
from subprocess import Popen, PIPE
command = subprocess.Popen('ls '+path, shell=True, stdout=subprocess.PIPE)
stdout = command.communicate()[0] #gives the return of the ls, second member of the list is not important
return stdout.decode().split('\n') #splits the string into a list of files that are in the folder
# Put figs in one figure
def print_figures_from_ls_plus(path):
for fig in read_ls(path):
print("\\includegraphics[width=0.99\\textwidth]{%s}" % (fig))
return
#======================================================================#
# Get all pics from a list with __LOOP__ and put them in one figure #
#======================================================================#
def make_figure(folder, mainName, listOfEntries, figsPerRow, figType, outputFile):
#Get width of the pic based on the number of plots per row
picWidth = 0.9/figsPerRow
#Pass in the mainName of the figure with __LOOP__ where the loop should happen
lineList = []
for num,x in enumerate(listOfEntries,start =1):
name = mainName.replace("__LOOP__",x,1)
newLine = "\\\\" if (num%figsPerRow==0) else "" #Put // at the end of each row
lineList.append("\t\\includegraphics[width=" + "%.2f" %picWidth +"\\textwidth]{" + folder + name + figType + "}"+newLine)
#Open the file
f = open(MAIN_PATH+outputFile+".tex",'w')
print("\\begin{figure}[hbt!]",file = f)
print("\\centering",file = f)
for line in lineList:
print(line, file =f) #Print the includegraphics
print("\\captionof{figure}[]{\label{}}",file = f)
print("\\end{figure}",file = f)
f.close()
print("\\include{"+outputFile+"}")
return
def fig_angCorr_proj(angle, Run):
listOfEntries = list(map(str,np.arange(0,18,1))) #Create a list of "1", "2", "3", ...
make_figure(folder = "./Angular/projections/",
mainName = angle+"eff__LOOP___"+decName+"_Run"+str(Run),
listOfEntries = listOfEntries,
figsPerRow=3, figType = ".eps",
outputFile = "Chapters/Acceptance/app_angProj" + angle+"_Run"+str(Run)
)
return
for angle in angles:
fig_angCorr_proj(angle, 1)
fig_angCorr_proj(angle, 2)