Skip to content

Commit

Permalink
Modified analysis example directory
Browse files Browse the repository at this point in the history
  • Loading branch information
lscharenberg committed Aug 1, 2023
1 parent eeafd3d commit 99c1b92
Show file tree
Hide file tree
Showing 15 changed files with 1,153 additions and 12 deletions.
1 change: 1 addition & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ list(APPEND CMAKE_MODULE_PATH ${EXTRA_MODULES_DIR}/modules)
# Conan
#=============================================================================

SET(CONAN_DISABLE_CHECK_COMPILER TRUE)
SET(CONAN_PROFILE "default" CACHE STRING "Name of conan profile to use, uses default by default")
SET(CONAN "AUTO" CACHE STRING "conan options AUTO (conan must be in path), MANUAL (expects conanbuildinfo.cmake in build directory) or DISABLE")
if(${CONAN} MATCHES "AUTO")
Expand Down
42 changes: 30 additions & 12 deletions analysis/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,45 +3,63 @@
VMM3a/SRS Data Analysis Tool:
vmm-sdat is the analysis software for VMM3a data, recorded with the SRS as PCAP or HDF5 files (GdGEM pipeline of the EFU). From the PCAP or HDF5 file, a root tree with the hits and clusters is created.

## Further analysis of root tree

The produced root tree can be further analyzed in different ways. For three ways, which are explained here in more detail, example scripts can be found in the analysis folder
## Further analysis with the root tree [`examples_read_data']

The produced root tree can be further analyzed in different ways. Some general examples on how to read the data from the root tree are shown in `examples_read_data'.


### Analysis with Python
Python is becoming increasingly popular. The example tree-reader.py shows how with the help of uproot, a root file with the root tree inside is read. The data is then plotted with matplotlib.
To select only specific entries of the tree, pandas can be used to apply a cut to the data.This is shown in the example tree-cutter.py.
For questions, please ask [email protected]


### Analysis with TSelector root script
The root framework provides the TSelector mechanism. Details can be found here:
https://root.cern.ch/developing-tselector
In short, the following steps are needed.
1. Open root from the command line
2. Open the root tree from the root prompt: TFile f("example.root")
3. Get the event tree from the file: TTree *t = f.Get<TTree>("clusters_detector")
4. Create the selector script: t->MakeSelector("VMM3a_analysis")
2. Open the root tree from the root prompt: `TFile f("example.root")'
3. Get the event tree from the file: `TTree *t = f.Get<TTree>("clusters_detector")'
4. Create the selector script: `t->MakeSelector("VMM3a_analysis")'
5. The last command creates two files, VMM3a_analysis.C, VMM3a_analysis.h
6. Add the plot that you want to create to the script. ATTENTION: In the example provided in the analysis folder, this has already been done!!

So you need just to call the analysis script from your tree:
1. At the command line: root example.root
2. In root: clusters_detector->Process("VMM3a_analysis.C++")
1. At the command line: `root example.root'
2. In root: `clusters_detector->Process("VMM3a_analysis.C++")'


### Analysis with compiled root script
In the CMakeList.txt in the main directory, the example executable accessTree is created.

add_executable(accessTree ${CMAKE_CURRENT_SOURCE_DIR}/analysis/accessTree.cpp)
`add_executable(accessTree ${CMAKE_CURRENT_SOURCE_DIR}/analysis/accessTree.cpp)'

This example can be edited to analyze and plot different data from the tree. In principle the same things can be done with the compiled root script and the TSelector root script. The compiled executable will just be faster.


### Analysis with CINT root script
This example creates a multitude of plots for the LET Multigrid detector that consists of grids and wires. It can be easily adapted to detector with an x/y readout by replacing wires with x and strips with y. To execute the script, the following strips are necessary:
1. start root by typing in a terminal: root
2. in root, type ".x plots_LET.C++("example_LET",".",0)"
1. start root by typing in a terminal: `root'
2. in root, type `.x plots_LET.C++("example_LET",".",0)'


### Normalization of histograms
The script normalizeHisto can be used to normalize histograms, or carry out a
This example creates a multitude of plots for the LET Multigrid detector that consists of grids and wires. It can be easily adapted to detector with an x/y readout by replacing wires with x and strips with y. To execute the script, the following strips are necessary:
1. start root by typing in a terminal: root
2. in root, type ".x plots_LET.C++("example_LET",".",0)"
1. start root by typing in a terminal: `root'
2. in root, type `.x plots_LET.C++("example_LET",".",0)'


## Specific applications

In addition to the analysis methods that are introduced in general in `examples_read_data', also specific analysis programs for one specific application are shown here.


### RD51 Beam Telescope [`application_rd51_beam_telescope']

For the RD51 Beam Telescope (see [https://doi.org/10.1088/1748-0221/18/05/C05017](https://doi.org/10.1088/1748-0221/18/05/C05017)), which is read out with VMM3a/SRS, the data from the vmm-sdat root tree are taken and analysed by [anamicom](https://gitlab.physik.uni-muenchen.de/Jonathan.Bortfeldt/anamicom).
Anamicom takes the root tree from vmm-sdat and performs the event building and the track reconstruction for the charged particle tracks recorded with the beam telescope.
It saves the information in another root tree (not the one from vmm-sdat).
The information from the anamicom root tree are taken in the provided macro and used to calculate the spatial resolution and efficiency of a detector under test, following the method described [here](https://cds.cern.ch/record/2860765).
Loading

0 comments on commit 99c1b92

Please sign in to comment.