Commit b18394e1 authored by María José Ramos's avatar María José Ramos
Browse files

Fixing code

parent 7552d00d
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
<CENTER><img src="http://opendata.atlas.cern/DataAndTools/pictures/ATLASOD.gif" style="width:50%"></CENTER> <CENTER><img src="http://opendata.atlas.cern/DataAndTools/pictures/ATLASOD.gif" style="width:50%"></CENTER>
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
<CENTER><h1> Analysis Techniques used in Experimental Particle Physics</h1></CENTER> <CENTER><h1> Analysis Techniques used in Experimental Particle Physics</h1></CENTER>
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
<p style='text-align: justify;'> <p style='text-align: justify;'>
A set of pp collision data has been released by the ATLAS Collaboration to the public for educational purposes. The general aim of the 13 TeV ATLAS Open Data and tools released is to provide a straightforward interface to replicate the procedures used by high-energy-physics researchers and enable users to experience the analysis of particle physics data in educational environments. A set of pp collision data has been released by the ATLAS Collaboration to the public for educational purposes. The general aim of the 13 TeV ATLAS Open Data and tools released is to provide a straightforward interface to replicate the procedures used by high-energy-physics researchers and enable users to experience the analysis of particle physics data in educational environments.
</p> </p>
Let's take a current ATLAS Open Data sample and create histograms. Let's take a current ATLAS Open Data sample and create histograms.
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
### Import some Python packages ### Import some Python packages
<p style='text-align: justify;'> <p style='text-align: justify;'>
The <strong>OS module</strong> in Python provides functions for interacting with the operating system. OS comes under Python’s standard utility modules. This module provides a portable way of using operating system-dependent functionality.It is possible to automatically perform many operating system tasks. The OS module provides functions for creating and removing a directory (folder), fetching its contents, changing and identifying the current directory, etc. The <strong>OS module</strong> in Python provides functions for interacting with the operating system. OS comes under Python’s standard utility modules. This module provides a portable way of using operating system-dependent functionality.It is possible to automatically perform many operating system tasks. The OS module provides functions for creating and removing a directory (folder), fetching its contents, changing and identifying the current directory, etc.
</p> </p>
<p style='text-align: justify;'> <p style='text-align: justify;'>
The <strong>datetime module</strong> supplies classes for manipulating dates and times. These classes provide a number of functions to deal with dates, times and time intervals. Date and datetime are an object in Python, so when you manipulate them, you are actually manipulating objects and not string or timestamps. The <strong>datetime module</strong> supplies classes for manipulating dates and times. These classes provide a number of functions to deal with dates, times and time intervals. Date and datetime are an object in Python, so when you manipulate them, you are actually manipulating objects and not string or timestamps.
</p> </p>
<p style='text-align: justify;'> <p style='text-align: justify;'>
With PyROOT, ROOT’s Python-C++ bindings, you can use <strong>ROOT</strong> from Python. PyROOT is HEP’s entrance to all C++ from Python, for example, for frameworks and their steering code. The PyROOT bindings are automatic and dynamic: no pre-generation of Python wrappers is necessary. With PyROOT you can access the full ROOT functionality from Python while benefiting from the performance of the ROOT C++ libraries. With PyROOT, ROOT’s Python-C++ bindings, you can use <strong>ROOT</strong> from Python. PyROOT is HEP’s entrance to all C++ from Python, for example, for frameworks and their steering code. The PyROOT bindings are automatic and dynamic: no pre-generation of Python wrappers is necessary. With PyROOT you can access the full ROOT functionality from Python while benefiting from the performance of the ROOT C++ libraries.
</p> </p>
**TMath** encapsulate most frequently used Math functions. The basic functions Min, Max, Abs and Sign are defined in TMathBase. **TMath** encapsulate most frequently used Math functions. The basic functions Min, Max, Abs and Sign are defined in TMathBase.
<p style='text-align: justify;'> <p style='text-align: justify;'>
Finally, the <strong>pandas</strong> library is a Python library that serves as a tool for reading, writing and manipulating data in the form of DataFrames and Series objects. It will not be used to running or plotting the Analysis, but to read the ATLAS Open Data database with the descriptions of the analysis that can be done in this notebook. Finally, the <strong>pandas</strong> library is a Python library that serves as a tool for reading, writing and manipulating data in the form of DataFrames and Series objects. It will not be used to running or plotting the Analysis, but to read the ATLAS Open Data database with the descriptions of the analysis that can be done in this notebook.
</p> </p>
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` python ``` python
import os import os
import datetime import datetime
import ROOT import ROOT
from ROOT import TMath from ROOT import TMath
import pandas as pd import pandas as pd
``` ```
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
<p style='text-align: justify;'> <p style='text-align: justify;'>
One of the classes defined in the datetime module is datetime class. Its a combination of date and time along with the attributes year, month, day, hour, minute, second, microsecond, and tzinfo. We then used now() method to create a datetime object containing the current local date and time. One of the classes defined in the datetime module is datetime class. Its a combination of date and time along with the attributes year, month, day, hour, minute, second, microsecond, and tzinfo. We then used now() method to create a datetime object containing the current local date and time.
</p> </p>
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` python ``` python
starttime = datetime.datetime.now() starttime = datetime.datetime.now()
print(starttime) print(starttime)
``` ```
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
<p style='text-align: justify;'> <p style='text-align: justify;'>
<strong>os.popen():</strong> This method opens a pipe to or from command. The return value can be read or written depending on whether mode is ‘r’ or ‘w’. The mode parameter is not required, if not provided, the default "r" is taken for the mode. <strong>os.popen():</strong> This method opens a pipe to or from command. The return value can be read or written depending on whether mode is ‘r’ or ‘w’. The mode parameter is not required, if not provided, the default "r" is taken for the mode.
</p> </p>
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` python ``` python
myCmd = os.popen('date').read() myCmd = os.popen('date').read()
print(myCmd) print(myCmd)
``` ```
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
## Get the code the 13TeV analysis ## Get the code the 13TeV analysis
<p style='text-align: justify;'> <p style='text-align: justify;'>
Create folder named <strong>'atlas-data'</strong> where the information of twelve physics analysis examples inspired by the published results of ATLAS Collaboration will be cloned and stored to demonstrate the wide range of scenarios. The folder will be created and the data will be cloned only the first time the notebook is run. Create folder named <strong>'atlas-data'</strong> where the information of twelve physics analysis examples inspired by the published results of ATLAS Collaboration will be cloned and stored to demonstrate the wide range of scenarios. The folder will be created and the data will be cloned only the first time the notebook is run.
</p> </p>
Setting the path as a variable. To get the location of the current working directory <strong>os.getcwd()</strong> is used. Setting the path as a variable. To get the location of the current working directory <strong>os.getcwd()</strong> is used.
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` python ``` python
directory = os.getcwd() directory = os.getcwd()
print(directory) print(directory)
``` ```
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
<p style='text-align: justify;'> <p style='text-align: justify;'>
<strong>os.system(command)</strong> method execute the command (a string) in a subshell. This method is implemented by calling the Standard C function system. If command generates any output, it is sent to the interpreter standard output stream. Whenever this method is used then the respective shell of the Operating system is opened and the command is executed on it. The command parameter indicates which command to execute. <strong>os.system(command)</strong> method execute the command (a string) in a subshell. This method is implemented by calling the Standard C function system. If command generates any output, it is sent to the interpreter standard output stream. Whenever this method is used then the respective shell of the Operating system is opened and the command is executed on it. The command parameter indicates which command to execute.
</p> </p>
The <strong>mkdir</strong> command allows users to create or make new directories. mkdir stands for “make directory”. The <strong>mkdir</strong> command allows users to create or make new directories. mkdir stands for “make directory”.
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` python ``` python
folder_demo = 'atlas-data' folder_demo = 'atlas-data'
if os.path.exists(directory+"/atlas-data"): if os.path.exists(directory+"/atlas-data"):
print("The folder exists") print("The folder exists")
else: else:
command = 'mkdir '+folder_demo command = 'mkdir '+folder_demo
os.system(command) os.system(command)
``` ```
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
Show the contents in the current folder, and check your new folder is there. Show the contents in the current folder, and check your new folder is there.
Commands: Commands:
<p style='text-align: justify;'> <p style='text-align: justify;'>
'ls' with no option list files and directories in bare format where we won’t be able to view details like file types, size, modified date and time, permission and links etc. 'ls' with no option list files and directories in bare format where we won’t be able to view details like file types, size, modified date and time, permission and links etc.
</p> </p>
The command <strong>'ls lhrt'</strong> shows the last modified documents. The command <strong>'ls lhrt'</strong> shows the last modified documents.
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` python ``` python
myCmd = os.popen('ls -lhrt').read() myCmd = os.popen('ls -lhrt').read()
print(myCmd) print(myCmd)
``` ```
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
Print the current path/location. Print the current path/location.
<p style='text-align: justify;'> <p style='text-align: justify;'>
The <strong>pwd</strong> command stands for print working directory. When invoked the command prints the complete path of the current working directory. The <strong>pwd</strong> command stands for print working directory. When invoked the command prints the complete path of the current working directory.
</p> </p>
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` python ``` python
myCmd = os.popen('pwd').read() myCmd = os.popen('pwd').read()
print(myCmd) print(myCmd)
``` ```
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
Get into the folder which we just created. Get into the folder which we just created.
Use the <strong>chdir</strong> command to change to another directory. The syntax is chdir followed by the name of the directory you want to go to. Use the <strong>chdir</strong> command to change to another directory. The syntax is chdir followed by the name of the directory you want to go to.
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` python ``` python
os.chdir(folder_demo+"/") os.chdir(folder_demo+"/")
``` ```
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
Print the current path and check that you are really there. Print the current path and check that you are really there.
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` python ``` python
myCmd = os.popen('pwd').read() myCmd = os.popen('pwd').read()
print(myCmd) print(myCmd)
``` ```
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
Setting the path as a variable. Setting the path as a variable.
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` python ``` python
directory = os.getcwd() directory = os.getcwd()
print(directory) print(directory)
``` ```
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
#### Clone the analysis code #### Clone the analysis code
If it is the first time the notebook is run, the data is cloned. Otherwise, it warns that the data already exists. If it is the first time the notebook is run, the data is cloned. Otherwise, it warns that the data already exists.
The frameworks implement the protocols needed for reading the datasets, making an analysis selection, writing out histograms and plotting the results. The frameworks implement the protocols needed for reading the datasets, making an analysis selection, writing out histograms and plotting the results.
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` python ``` python
if os.path.exists(directory+"/atlas-outreach-cpp-framework-13tev"): if os.path.exists(directory+"/atlas-outreach-cpp-framework-13tev"):
print("The repository exists") print("The repository exists")
else: else:
myCmd = os.popen('git clone https://github.com/atlas-outreach-data-tools/atlas-outreach-cpp-framework-13tev.git').read() myCmd = os.popen('git clone https://github.com/atlas-outreach-data-tools/atlas-outreach-cpp-framework-13tev.git').read()
print(myCmd) print(myCmd)
``` ```
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
Get into the folder which contains the analysis code. Get into the folder which contains the analysis code.
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` python ``` python
os.chdir("atlas-outreach-cpp-framework-13tev/") os.chdir("atlas-outreach-cpp-framework-13tev/")
``` ```
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
Print the current path and check that you are really there. Print the current path and check that you are really there.
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` python ``` python
myCmd = os.popen('pwd').read() myCmd = os.popen('pwd').read()
print(myCmd) print(myCmd)
``` ```
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
Let's see the time. Let's see the time.
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` python ``` python
myCmd = os.popen('date').read() myCmd = os.popen('date').read()
print(myCmd) print(myCmd)
``` ```
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
Show the contents in the current folder. Show the contents in the current folder.
The framework consists of two main parts: The framework consists of two main parts:
<p style='text-align: justify;'> <p style='text-align: justify;'>
The analysis part, located within the <strong>Analysis directory</strong>: it performs the particular object selection and stores the output histograms. The analysis part, located within the <strong>Analysis directory</strong>: it performs the particular object selection and stores the output histograms.
The plotting part, located within the <strong>Plotting directory</strong>: it makes the final Data / Prediction plots. The plotting part, located within the <strong>Plotting directory</strong>: it makes the final Data / Prediction plots.
</p> </p>
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` python ``` python
myCmd = os.popen('ls -lhrt').read() myCmd = os.popen('ls -lhrt').read()
print(myCmd) print(myCmd)
``` ```
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
Setting the path as a variable. Setting the path as a variable.
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` python ``` python
directory = os.getcwd() directory = os.getcwd()
print(directory) print(directory)
``` ```
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
**Output folders** **Output folders**
<p style='text-align: justify;'> <p style='text-align: justify;'>
Create the output folders where the analysis results will be stored. If it is the first time the notebook is run, the output folders will be created. Otherwise, they are reported to already exist. As all the output folders are created at the same time in the next two cells it is verified that they were created using any of the folders of the 12 data examples. Create the output folders where the analysis results will be stored. If it is the first time the notebook is run, the output folders will be created. Otherwise, they are reported to already exist. As all the output folders are created at the same time in the next two cells it is verified that they were created using any of the folders of the 12 data examples.
</p> </p>
<p style='text-align: justify;'> <p style='text-align: justify;'>
<strong>echo</strong> command is used to display line of text/string that are passed as an argument . This is a built in command that is mostly used in shell scripts and batch files to output status text to the screen or a file. <strong>echo</strong> command is used to display line of text/string that are passed as an argument . This is a built in command that is mostly used in shell scripts and batch files to output status text to the screen or a file.
</p> </p>
<p style='text-align: justify;'> <p style='text-align: justify;'>
<strong>"echo \"1\" | ./welcome.sh"</strong> : 1 indicates that you want to automatically create all output directories in the 12 analysis subfolders, if you put 0 instead you can delete content if necessary. <strong>"echo \"1\" | ./welcome.sh"</strong> : 1 indicates that you want to automatically create all output directories in the 12 analysis subfolders, if you put 0 instead you can delete content if necessary.
</p> </p>
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` python ``` python
if os.path.exists(directory+"/Analysis/ZBosonAnalysis/Output_ZBosonAnalysis"): if os.path.exists(directory+"/Analysis/ZBosonAnalysis/Output_ZBosonAnalysis"):
print("Folders exists") print("Folders exists")
else: else:
command1 = "echo \"1\" | ./welcome.sh" command1 = "echo \"1\" | ./welcome.sh"
os.system(command1) os.system(command1)
``` ```
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
Check that the folders were created. Check that the folders were created.
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` python ``` python
myCmd = os.popen('ls -lhrt Analysis/HZZAnalysis').read() myCmd = os.popen('ls -lhrt Analysis/HZZAnalysis').read()
print(myCmd) print(myCmd)
``` ```
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
### Let's run an Analysis now ### Let's run an Analysis now
<p style='text-align: justify;'> <p style='text-align: justify;'>
The naming of the sub-folders follows a simple rule: "NNAnalysis", where NN can be WBoson, ZBoson, TTbar, SingleTop, WZDiBoson, ZZDiBoson, HZZ, HWW, Hyy, ZPrimeBoosted, ZTauTau and SUSY. After you enter your choice, you will see the description of the analysis that has been obtained from a pandas dataframe generated from a .csv file with the analysis information. The naming of the sub-folders follows a simple rule: "NNAnalysis", where NN can be WBoson, ZBoson, TTbar, SingleTop, WZDiBoson, ZZDiBoson, HZZ, HWW, Hyy, ZPrimeBoosted, ZTauTau and SUSY. After you enter your choice, you will see the description of the analysis that has been obtained from a pandas dataframe generated from a .csv file with the analysis information.
</p> </p>
### Select one analysis ### Select one analysis
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` python ``` python
analysis_df = pd.read_csv("notebooks-info/analysis_info.csv", sep="_").set_index("Analysis") analysis_df = pd.read_csv("notebooks-info/analysis_info.csv", sep="_").set_index("Analysis")
``` ```
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` python ``` python
print("The options are:\n WBosonAnalysis\n ZBosonAnalysis\n TTbarAnalysis\n SingleTopAnalysis\n WZDiBosonAnalysis\n ZZDiBosonAnalysis\n HZZAnalysis\n HWWAnalysis\n ZTauTauAnalysis\n HyyAnalysis\n SUSYAnalysis\n ZPrimeBoostedAnalysis") print("The options are:\n WBosonAnalysis\n ZBosonAnalysis\n TTbarAnalysis\n SingleTopAnalysis\n WZDiBosonAnalysis\n ZZDiBosonAnalysis\n HZZAnalysis\n HWWAnalysis\n ZTauTauAnalysis\n HyyAnalysis\n SUSYAnalysis\n ZPrimeBoostedAnalysis")
``` ```
%% Output %% Output
The options are: The options are:
WBosonAnalysis WBosonAnalysis
ZBosonAnalysis ZBosonAnalysis
TTbarAnalysis TTbarAnalysis
SingleTopAnalysis SingleTopAnalysis
WZDiBosonAnalysis WZDiBosonAnalysis
ZZDiBosonAnalysis ZZDiBosonAnalysis
HZZAnalysis HZZAnalysis
HWWAnalysis HWWAnalysis
ZTauTauAnalysis ZTauTauAnalysis
HyyAnalysis HyyAnalysis
SUSYAnalysis SUSYAnalysis
ZPrimeBoostedAnalysis ZPrimeBoostedAnalysis
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` python ``` python
while True: while True:
analysis = input("Enter your choice: ") analysis = input("Enter your choice: ")
try: try:
os.chdir("Analysis/"+analysis) os.chdir("Analysis/"+analysis)
break break
except FileNotFoundError: except FileNotFoundError:
print("Analysis not found") print("Analysis not found")
``` ```
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` python ``` python
analysis = input("Enter your choice: ")
```
%% Output
Enter your choice: HyyAnalysis
%% Cell type:code id: tags:
``` python
print(analysis_df["Description"].loc[f"{analysis}"]) print(analysis_df["Description"].loc[f"{analysis}"])
``` ```
%% Output %% Output
Higgs boson decay in the two-photon final state. Higgs boson decay in the two-photon final state.
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
Print the current path/location. Print the current path/location.
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` python ``` python
myCmd = os.popen('pwd').read() myCmd = os.popen('pwd').read()
print(myCmd) print(myCmd)
``` ```
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` python ``` python
myCmd = os.popen('ls -lhrt').read() myCmd = os.popen('ls -lhrt').read()
print(myCmd) print(myCmd)
``` ```
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
### Run the C++ code now ### Run the C++ code now
Please, note that we are writing the output in a log file. (This file can be inspected in real time in a terminal). Please, note that we are writing the output in a log file. (This file can be inspected in real time in a terminal).
<p style='text-align: justify;'> <p style='text-align: justify;'>
A bash script (run.sh), executed via a Linux/UNIX shell called source: helps you in running the analysis. The script has two options for the user to select how they want to enhance the analysis. A bash script (run.sh), executed via a Linux/UNIX shell called source: helps you in running the analysis. The script has two options for the user to select how they want to enhance the analysis.
</p> </p>
<p style='text-align: justify;'> <p style='text-align: justify;'>
The first option will ask you: do you want to run over all the samples one-by-one, or to run over only data or only simulated samples? The latter options can help you to speed up the analysis, as you can run several samples in several terminals. The first option will ask you: do you want to run over all the samples one-by-one, or to run over only data or only simulated samples? The latter options can help you to speed up the analysis, as you can run several samples in several terminals.
</p> </p>
<p style='text-align: justify;'> <p style='text-align: justify;'>
The second option will ask you: do you want to use the Parallel ROOT Facility (PROOF), a ROOT-integrated tool that enables the analysis of the input samples in parallel on a many-core machine? If your ROOT version has PROOF integrated, it will speed up the analysis by a factor of roughly 5. The second option will ask you: do you want to use the Parallel ROOT Facility (PROOF), a ROOT-integrated tool that enables the analysis of the input samples in parallel on a many-core machine? If your ROOT version has PROOF integrated, it will speed up the analysis by a factor of roughly 5.
</p> </p>
<p style='text-align: justify;'> <p style='text-align: justify;'>
After you choose the options, the code will compile and create the needed ROOT shared libraries, and the analysis selection will begin: it will run over each input sample defined in main_NNAnalysis.C. After you choose the options, the code will compile and create the needed ROOT shared libraries, and the analysis selection will begin: it will run over each input sample defined in main_NNAnalysis.C.
</p> </p>
<p style='text-align: justify;'> <p style='text-align: justify;'>
<strong>"echo \"0\n0\" | ./run.sh >log"</strong> : the first 0 indicates run all data and MC one after another. The second 0 indicates that you don't want to use PROOF. <strong>"echo \"0\n0\" | ./run.sh >log"</strong> : the first 0 indicates run all data and MC one after another. The second 0 indicates that you don't want to use PROOF.
</p> </p>
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` python ``` python
command4 = "echo \"0\n0\" | ./run.sh >log" command4 = "echo \"0\n0\" | ./run.sh >log"
os.system(command4) os.system(command4)
``` ```
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
#### Now the code is done (I hope you see a 0 as output ) #### Now the code is done (I hope you see a 0 as output )
Get into the Plotting folder. The plotting code is located in the Plotting folder. Get into the Plotting folder. The plotting code is located in the Plotting folder.
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` python ``` python
os.chdir("../../Plotting/") os.chdir("../../Plotting/")
``` ```
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
Print the current path and check that you are really there. Print the current path and check that you are really there.
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` python ``` python
myCmd = os.popen('pwd').read() myCmd = os.popen('pwd').read()
print(myCmd) print(myCmd)
``` ```
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
### Let's run the Plotting code ### Let's run the Plotting code
### Select the right analysis ### Select the right analysis
#### The options are: #### The options are:
0 = WBosonAnalysis 0 = WBosonAnalysis
1 = ZBosonAnalysis 1 = ZBosonAnalysis
2 = TTbarAnalysis 2 = TTbarAnalysis
3 = SingleTopAnalysis 3 = SingleTopAnalysis
4 = WZDiBosonAnalysis 4 = WZDiBosonAnalysis
5 = ZZDiBosonAnalysis 5 = ZZDiBosonAnalysis
6 = HWWAnalysis 6 = HWWAnalysis
7 = HZZAnalysis 7 = HZZAnalysis
8 = ZTauTauAnalysis 8 = ZTauTauAnalysis
9 = HyyAnalysis 9 = HyyAnalysis
10 = SUSYAnalysis 10 = SUSYAnalysis
11 = ZPrimeBoostedAnalysis 11 = ZPrimeBoostedAnalysis
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
Bash script (plotme.sh): helps you in running the plotting code. Bash script (plotme.sh): helps you in running the plotting code.
The script has two options for the user to select how they want to enhance the analysis. The script has two options for the user to select how they want to enhance the analysis.
<p style='text-align: justify;'> <p style='text-align: justify;'>
The first option will be: which analysis exactly out of the 12 you want to plot? The first option will be: which analysis exactly out of the 12 you want to plot?
The second option will ask you for the location of the Output_NNAnalysis directory that was created by running the Analysis code. The second option will ask you for the location of the Output_NNAnalysis directory that was created by running the Analysis code.
</p> </p>
<p style='text-align: justify;'> <p style='text-align: justify;'>
After you choose the options, the code will compile and create the needed ROOT shared libraries, and the plotting will begin. If everything was successful, the code will create in the output directory (histograms) the corresponding plots defined in HistoList_ANALYSISNAME.txt. After you choose the options, the code will compile and create the needed ROOT shared libraries, and the plotting will begin. If everything was successful, the code will create in the output directory (histograms) the corresponding plots defined in HistoList_ANALYSISNAME.txt.
</p> </p>
<p style='text-align: justify;'> <p style='text-align: justify;'>
<strong>"echo \"9\n0\" | ./plotme.sh"</strong> : The first number indicates which of the 12 analyzes you want to use and the second, in this case, 0 indicates that the location of the directory is Output_NNAnalysis. <strong>"echo \"9\n0\" | ./plotme.sh"</strong> : The first number indicates which of the 12 analyzes you want to use and the second, in this case, 0 indicates that the location of the directory is Output_NNAnalysis.
</p> </p>
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` python ``` python
while True: while True:
number = input('Choose your analysis. Enter a number: ') number = input('Choose your analysis. Enter a number: ')
try: try:
number = int(number) number = int(number)
if 0<= number <=9: if 0<= number <=9:
break break
else: else:
print("Valid range, please: 0-9.") print("Valid range, please: 0-9.")
except ValueError: except ValueError:
print("Try it again.") print("Try it again.")
``` ```
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` python ``` python
command5 = f"echo \"{number}\n0\" | ./plotme.sh" command5 = f"echo \"{number}\n0\" | ./plotme.sh"
os.system(command5) os.system(command5)
``` ```
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
Show histograms created. Show histograms created.
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` python ``` python
myCmd = os.popen('ls -lhrt histograms/*png').read() myCmd = os.popen('ls -lhrt histograms/*png').read()
print(myCmd) print(myCmd)
``` ```
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
Show explanation from the ATLAS Open Data 13 TeV Documentation. Show explanation from the ATLAS Open Data 13 TeV Documentation.
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` python ``` python
print(analysis_df["Explanation"].loc[f"{analysis}"]) print(analysis_df["Explanation"].loc[f"{analysis}"])
``` ```
%% Output %% Output
The H → yy decay mode provides a very clear and distinctive signature of two isolated and highly energetic photons, and is one of the main channels studied at the LHC. Despite the small branching ratio, a reasonably large signal yield can be obtained thanks to the high photon reconstruction and identification efficiency at the ATLAS experiment. Furthermore, due to the excellent photon energy resolution of the ATLAS calorimeter, the signal manifests itself as a narrow peak in the diphoton invariant mass spectrum on top of a smoothly falling irreducible background from QCD production of two photons. The H → yy decay mode provides a very clear and distinctive signature of two isolated and highly energetic photons, and is one of the main channels studied at the LHC. Despite the small branching ratio, a reasonably large signal yield can be obtained thanks to the high photon reconstruction and identification efficiency at the ATLAS experiment. Furthermore, due to the excellent photon energy resolution of the ATLAS calorimeter, the signal manifests itself as a narrow peak in the diphoton invariant mass spectrum on top of a smoothly falling irreducible background from QCD production of two photons.
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` python ``` python
myCmd = os.popen('date').read() myCmd = os.popen('date').read()
print(myCmd) print(myCmd)
endtime = datetime.datetime.now() endtime = datetime.datetime.now()
print("Analysis finished in % 2d min % 2d s" %(((endtime - starttime).seconds)/60,((endtime - starttime).seconds)%60)) print("Analysis finished in % 2d min % 2d s" %(((endtime - starttime).seconds)/60,((endtime - starttime).seconds)%60))
``` ```
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
### Done! ### Done!
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` python ``` python
``` ```
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` python ``` python
``` ```
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` python ``` python
``` ```
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment