Version 17 (modified by 8 years ago) ( diff ) | ,
---|
Table of Contents
Delphes Tutorial - MC4BSM July 2016
Pre-requisites
To successfully build Delphes the following prerequisite packages should be installed:
- gcc/tcl:
For linux users gcc/tcl should be already installed. For Mac users you should install XCode.
- ROOT:
can be downloaded from https://root.cern.ch/downloading-root Go on latest release, and download a version under "Binary distributions".
Once it is installed, type:
source [path_to_installation]/root/bin/thisroot.sh
Then simply type in a terminal:
echo $ROOTSYS
If a path is shown then root is properly installed.
Part I - Getting Started
0) Create a tutorial directory:
mkdir DelphesTutorial cd DelphesTutorial
1) Get Delphes:
git clone https://github.com/delphes/delphes.git cd delphes
OR, if you don't have "git" installed, simply type (NOTE: you do not need to execute this step if you already cloned Delphes with git):
wget http://cp3.irmp.ucl.ac.be/downloads/Delphes-3.3.2.tar.gz tar -zxf Delphes-3.3.2.tar.gz mv Delphes-3.3.2 delphes cd delphes
2) Install it:
./configure make -j 4
3) Download Z' (m= 2 TeV) to WW and dijet (pT > 1 TeV) events in stdhep format
wget http://cp3.irmp.ucl.ac.be/downloads/delphes_tuto/pp_zp_ww.hep.gz wget http://cp3.irmp.ucl.ac.be/downloads/delphes_tuto/pp_jj.hep.gz gunzip pp_zp_ww.hep.gz gunzip pp_jj.hep.gz
4) Finally, let's run Delphes. If the compilation went right, you should have three executables:
- DelphesLHEF -> should not be used
- DelphesHepMC -> to be used on HepMC input format (*.hepmc)
- DelphesSTDHEP -> to be used on STDHEP input format (*.hep)
Type for instructions (note that output file comes before input file):
./DelphesSTDHEP
To run on our your input file, type:
./DelphesSTDHEP cards/delphes_card_CMS.tcl out_pp_zp_ww.root pp_zp_ww.hep
5) Open freshly produced Delphes output with ROOT, and explore it.
root -l out_pp_zp_ww.root TBrowser t;
In the browser, double click on the "out_pp_zp_ww.root", and then on the "Delphes" tree. Play around by double clicking on the various branches/observables.
You can then plot important observable with a simple selection with the following syntax:
Delphes->Draw("Muon.PT", "Muon.PT > 20"); Delphes->Draw("Electron.PT", "Electron.PT > 20");
- Note 1: Delphes - tree name, it can be learnt e.g. from TBrowser
- Note 2: Muon/Electron - branch name; PT - variable (leaf) of this branch
Delphes->Draw("Jet.Mass","Electron_size + Muon_size == 1"); Delphes->Draw("Jet.Mass","Electron_size + Muon_size == 1 && Jet.PT > 500");
Objects are already ordered in PT, you can then plot the leading jet observables in this way:
Delphes->Draw("Jet[0].Mass"); Delphes->Draw("Jet[0].PT");
For more information on ROOT trees:
http://cp3.irmp.ucl.ac.be/downloads/RootTreeDescription.html
Part II - Understand and modify the configuration file
The delphes card can be schematically divided in three parts:
- The ExecutionPath is where the simulation/reconstruction sequence of modules is defined
- The list of modules configurations.
- The TreeWriter, where the user defines which objects he stores in the output tree.
You can find an explanation for most Delphes modules here: https://cp3.irmp.ucl.ac.be/projects/delphes/wiki/WorkBook/Modules
- Open the card cards/delphes_card_CMS.tcl with your favorite editor and try to make sense of it.
- Then configure the FastJetFinder module by switching on the options for jet substructure:
################### # Fast Jet finder ################### module FastJetFinder FastJetFinder { set InputArray EFlowMerger/eflow set OutputArray jets # algorithm: 1 CDFJetClu, 2 MidPoint, 3 SIScone, 4 kt, 5 Cambridge/Aachen, 6 antikt set JetAlgorithm 5 set ParameterR 0.8 set ComputeNsubjettiness 1 set Beta 1.0 set AxisMode 4 set ComputeTrimming 1 set RTrim 0.2 set PtFracTrim 0.05 set ComputePruning 1 set ZcutPrun 0.1 set RcutPrun 0.5 set RPrun 0.8 set ComputeSoftDrop 1 set BetaSoftDrop 0.0 set SymmetryCutSoftDrop 0.1 set R0SoftDrop 0.8 set JetPTMin 20.0 }
- Now run Delphes with the newly modified card on both the dijet and Z' samples:
./DelphesSTDHEP cards/delphes_card_CMS.tcl out_pp_zp_ww_js.root pp_zp_ww.hep ./DelphesSTDHEP cards/delphes_card_CMS.tcl out_pp_jj_js.root pp_jj.hep
- Open the files with ROOT TBrowser as in the Getting Started section, and make sure that the new jet substructure variables are properly stored.
- Now download and run this simple event selection macro. It will plot two crucial jet observables that can help in discriminating between a w-jet and a light jet: the jet mass, and the N-subjettiness ratio tau2/tau1.
root examples/macro.C'("out_pp_jj_js.root","out_pp_zp_ww_js.root")'
- Now improve the calorimeter resolution in the card, both energy and angular resolutions (roughly by a factor 20)
set PhiBins {} for {set i -360} {$i <= 360} {incr i} { add PhiBins [expr {$i * $pi/360.0}] } # 0.01 unit in eta up to eta = 2.5 for {set i -1000} {$i <= 1000} {incr i} { set eta [expr {$i * 0.005}] add EtaPhiBins $eta $PhiBins } ... # set ECalResolutionFormula {resolution formula as a function of eta and energy} # Eta shape from arXiv:1306.2016, Energy shape from arXiv:1502.02701 set ECalResolutionFormula { (abs(eta) <= 1.5) *0.05*(1+0.64*eta^2) * sqrt(energy^2*0.008^2 + energy*0.11^2 + 0.40^2) + (abs(eta) > 1.5 && abs(eta) <= 2.5) *0.05* (2.16 + 5.6*(abs(eta)-2)^2) * sqrt(energy^2*0.008^2 + energy*0.11^2 + 0.40^2) + (abs(eta) > 2.5 && abs(eta) <= 5.0) *0.05* sqrt(energy^2*0.107^2 + energy*2.08^2)}
- Re-run Delphes simulation and macro.C with the new configuration and appreciate the effect of improved resolution on the final distributions:
./DelphesSTDHEP cards/delphes_card_CMS.tcl out_pp_zp_ww_js_nc.root pp_zp_ww.hep ./DelphesSTDHEP cards/delphes_card_CMS.tcl out_pp_jj_js_nc.root pp_jj.hep root examples/macro.C'("out_pp_jj_js_bc.root","out_pp_zp_ww_js_bc.root")'
Attachments (1)
- macro.C (4.3 KB ) - added by 8 years ago.
Download all attachments as: .zip