Juraj Smieško (CERN)
Annecy, 01 Feb 2024
Goal of the framework is to aid the users in obtaining the desired physics results from the reconstructed objects
Framework requirements:
Describes event data with the set of standard objects.
Example object:
#------------- CalorimeterHit
edm4hep::CalorimeterHit:
Description: "Calorimeter hit"
Author : "F.Gaede, DESY"
Members:
- uint64_t cellID //detector specific (geometrical) cell id.
- float energy //energy of the hit in [GeV].
- float energyError //error of the hit energy in [GeV].
- float time //time of the hit in [ns].
- edm4hep::Vector3f position //position of the hit in world coordinates in [mm].
- int32_t type //type of hit. Mapping of integer types to names via collection parameters "CalorimeterHitTypeNames" and "CalorimeterHitTypeValues".
Plethora of processes are pre-generated and available from EOS
Various intermediate files of common interest can be stored at:
/eos/experiment/fcc/ee/analyses_storage/...
in four subfolders:
Access and quotas:
Analysis can be imagined as a graph composed out of building blocks
To generate graph of your analysis:
fccanalyses run analysis_script.py --graph
Latest release of FCCAnalyses is v0.8.0
How to get FCCAnalyses:
Key4hep platforms: CentOS 7, AlmaLinux 9, Ubuntu 22.04
Analysis spread through two repositories:
One can write and run the analysis in several ways
One can write and run an analysis in several ways
Making FCCAnalyses more robust framework
[jsmiesko@death-machine FCCAnalyses (master =)]$ fccanalysis --help
...
sub-commands:
sub-command one of the available sub-commands
init generate a RDataFrame based FCC analysis
build build and install local analysis
test test whole or a part of the analysis framework
pin pin fccanalyses to the current version of Key4hep stack
run run a RDataFrame based FCC analysis
final run a RDataFrame based FCC analysis final configuration
plots run a RDataFrame based FCC analysis plot configuration
[jsmiesko@death-machine FCCAnalyses (master =)]$ fccanalysis --help
usage: fccanalysis [-h] [-v | -vv | -vvv] sub-command ...
FCCAnalyses v0.8.0
options:
-h, --help show this help message and exit
-v, --verbose make output verbose
-vv, --more-verbose make output more verbose
-vvv, --most-verbose make output even more verbose
Get something out of the analyzer:
#include "RLogger.hxx"
R__LOG_INFO(ROOT.Detail.RDF.RDFLogChannel(), "Info message")
source "${FCCTESTS_STACK}"
RNDMSTR="$(sed 's/[-]//g' < /proc/sys/kernel/random/uuid | head -c 12)"
WORKDIR="${FCCTESTS_TMPDIR}/fccanalyses-stack-full-analysis-${RNDMSTR}"
mkdir -p "${WORKDIR}" || exit 1
cd "${WORKDIR}" || exit 1
fccanalysis run ${FCCANALYSES}/../share/examples/examples/FCCee/higgs/mH-recoil/mumu/analysis_stage1.py || exit 1
fccanalysis run ${FCCANALYSES}/../share/examples/examples/FCCee/higgs/mH-recoil/mumu/analysis_stage2.py || exit 1
fccanalysis final ${FCCANALYSES}/../share/examples/examples/FCCee/higgs/mH-recoil/mumu/analysis_final.py || exit 1
fccanalysis plots ${FCCANALYSES}/../share/examples/examples/FCCee/higgs/mH-recoil/mumu/analysis_plots.py
Unlocking full potential of ROOT RDataFrame and EDM4hep inside FCCAnalyses framework
Preserving EDM4hep Associations in RDataFrame
-----
For more details about EDM4hep, see Thomas' talk
Sample output path example
/eos/experiment/fcc/prod/fcc/ee/winter2023/91.19gev/Zbb/idea/delphes/00012345/
-----
See also Lorenzo's talk
import FCCAnalyses
import ROOT
ROOT.gROOT.SetBatch(True)
def main():
'''
Example analysis entry point
'''
sample = FCCAnalyses.Sample('p8_ee_WW_ecm240')
FCCAnalyses.register_analyzers('examples/FCCee/import/AddAnalyzers.h')
dframe = fccana.get_dataframe(sample)
dframe2 = dframe.Define("particles", "gen_particles()")
dframe3 = dframe2.Define("particles_pt", "MCParticle::get_pt(particles)")
hist = dframe3.Histo1D("particles_pt")
hist.Print()
canvas = ROOT.TCanvas("canvas", "", 450, 450)
hist.Draw()
canvas.Print('test.pdf')
if __name__ == '__main__':
main()
Pythia 8 | ee → ZH @ 240 GeV
To visualize your MC Particle tree, do:
Pythia 8 | ee → ZH @ 240 GeV
There are several sources of documentation
Analysis spread through two repositories:
Condor environment now isolated from machine where the submission was done
Created CI to check every commit
Added helper sub-command: fccanalysis build
Added helper sub-command: fccanalysis pin