Skip to content

yuichiok/SSbarAnalysis

Repository files navigation

SSbarAnalysis (Light Quark Analysis)

GitHub commits GitHub license

The primary objective of these codes was to analyze $s\bar{s}$ events, while the analysis is now extended to other light flavour quark events i.e. $u\bar{u}$ and $d\bar{d}$ processes. Detailed concept and explanation for this research can be found in my thesis.

This project expects input root file processed by QQbarAnalysis project. List of parameters used by this analysis can be found in TreeStructures.hh.

Contirbution to this project is always welcome, one just needs to follow the contribution rules. (Or if you're my successor, you can taken on the initiative by forking this repository and use it as main repo.)

Requirements

We use CMake to build the project. Minimum of requirements are:

Version
CMake V3.0
ROOT V6.24/00

Build

In order to build this project, you only need to execute following line.

./build.sh

If this gives an error, this may be caused by the version incompatibility from the building of ROOT. Try changing the CMAKE_CXX_STANDARD version in the CMakeLists.txt.

Execusion

After the build, execution file main.exe should be created.

Configuration file

Configuration file determines the cut parameters for this analysis. These are:

  • [Legacy] Types of generated particles. (currently use all types so don't care about this)
  • JET_btag_max, JET_ctag_max: b-tagging and c-tagging
  • JET_nvtx_max: Maximum number of jet vertex
  • PFO_TPCHits_min: Minimum number of TPC hits for a PFO
  • PFO_offset_max: Maximum offset distance for a PFO
  • PFO_p_min, PFO_p_max: Minimum and Maximum momentum for a PFO
  • LPFO_p_min, LPFO_p_max: Minimum and Maximum momentum for a PFO

Then you need to change the of SSbarAnalysisConfig_example.ini to SSbarAnalysisConfig_default.ini. As a matter of fact, you can change the input file name in the main.cc. In such case, you need to build the project again. (see above)

Execute the file

One can execute this file by:

./main.exe [input_root_file]

replacing [input_root_file] by the path to the input root file from QQbarAnalysis project.

Analysis Workflow

NtupleProcessor

The analysis code follows the basic workflow defined in TSelector class of ROOT. Main programs reside in NtupleProcessor directory.

After executing the main.exe, main.cc will call for NtupleProcessor class. NtupleProcessor will then open an input file and attach its TTree to TSelector, along with predefined class, which is EventAnalyzer for our case. (see here)

For TSelector (see TreeIterator.cc) will execute its methods to the attached TTree in following order:

  1. Init
  2. SlaveBegin
  3. Begin
  4. Notify
  5. Process
  6. SlaveTerminate
  7. Terminate

See TSelector class documentation for more info.

EventAnalyzer

Main analysis process happens here. Output of this analysis will be a ROOT file with set of histograms for each qqbar process (all flavors). Structure of ROOT file looks as following. Structure of output ROOT file

The code is split into two parts: Generated and Reconstructed. The analysis flow as follow:

Generated Events

  1. Generated part will check the particle type of qqbar with EventAnalyzer::isSignal()
  2. Check whether generated event satisfies the preselection (qqbar being back-to-back etc.) with EventAnalyzer::Select().
  3. Main analysis for generated event happens in EventAnalyzer::AnalyzeGen().
    • Check for cuts described in EventAnalyzer::TriggerMap().
    • Fills histogram defined in HistManager.cc.

Reconstructed Events

  1. Reconstructed part takes place after the generated event analysis.
  2. Preselection identical to the generated one will be applied to the reconstructed event analysis with EventAnalyzer::Select() method.
  3. Main analysis for reconstructed event happens in EventAnalyzer::AnalyzeReco().
    • Use jet and its associated PFO information to check for the cuts in EventAnalyzer::TriggerMap().
    • EventAnalyzer::ProcessDoubleTagEfficiency() will fill polar angle histogram after individual cut so that one can compute the selection efficiency later in our macros.
    • EventAnalyzer::ProcessDoubleTag() fills various histograms after going through all the cuts.
    • EventAnalyzer::ResolutionAnalysis() fills histograms related to resolution analysis (Stability and purity)

Note

Historgam and boolean management is done using std::unordered_map in c++ standard library. See the documentation for detail.

Finally after all these parts, one needs to clear the struct with EventAnalyzer::ClearStructs() to avoid segmentation fault upon looping over the events.

In generated event analysis, "cheated PID" will be used for PID. For reconstructed event analysis, dE/dx method is being used. This is implemented in PFOTools.cc. (Commented out line suggest some different methods on PID criteria we've tested in the past)

Macros

These macros here are example codes for plotting histograms based on the ROOT file outputted from the NtupleProcessor. The latest working codes are store within directory. The most important results are the polar angle distribution, stored under macros/polar.

  • pq_method_K(Pi)LPFO_add.cc: Polar angle distribution for single flavor.
  • pq_method_K(Pi)LPFO_total.cc: Polar angle distribution with all background processes being stacked.
  • pq_method_K(Pi)LPFO_BG_sub.cc: Polar angle distribution for single flavor with all other backgrounds being subtracted to estimate the systematic uncertainty.

About

Analysis dedicated to e+e- → ssbar process at ILC

Resources

License

Code of conduct

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages