Software for Dual Readout Calorimetry

If you want to stay up to date with what happens in the Dual Readout world, please sign up through https://egroups.cern.ch to the e-group ideal-dualreadout.

This page contains information and pointers about software activities connected with the Dual Readout Calorimeter R&D. Progress and issues are discussed in meetings which are published in indico category https://indico.cern.ch/category/10684/.

IDEA dual readout simulation - HowTo (EDM4HEP branch)

  • The Pavia standalone simulation code is available at the following github link. Clone the repository in a clean directory (e.g. in a "Work" directory). The recommended branch is the EDM4HEP one, which produces podio files containing edm4hep objects as main output (although the previously produced ntuples are still available).
  • If your computing site is making use of /cvmfs, then it is relatively straightforward to set up everything which is needed by setting up the key4hep stack.

source /cvmfs/sw.hsf.org/key4hep/setup.sh

  • Now create a build directory at the same level as the Git_IDEA_CALO_FIBER directory, cd into it, then

cmake ../Git_IDEA_CALO_FIBER/DRC4pifibers/DRC4pigeometry/Dream/B4/ 
make

If everything goes smoothly, you should find your executable file in: build/B4a/exampleB4a. To run the similation: ./B4a/exampleB4a -m myrun.mac -t #Thread. In case you need to merge multiple root files (ntuples with ntuples, and PODIO files with PODIO files), use the ROOT command hadd to merge simulation output.

  • The myrun.mac file is a standard Geant4 macro text file. An example:
/run/initialize #myrun.mac file
/gps/particle e- #select particle type
/gps/energy 5 GeV #select energy
/gps/direction 1 0 0 #select direction <X> <Y> <Z>
/run/beamOn 100 #select number of events

The output of the simulation consists in a flat ntuple whose content is discussed below, and in a PODIO root file containing edm4hep objects.

Available simulated samples and tuple format

The output of the simulation consists in a flat ntuple whose content is discussed below, and in a PODIO root file containing edm4hep objects. The PODIO format is quite compact, and it is discussed in detail in this presentation.

The flat ntuple format is as follows (units are mm, MeV, ns):

EnergyTot: Total energy deposited in calorimeter from Monte Carlo truth. Every step inside the calorimeter I add up the energy deposited. This does not include invisible energy.

Energyem: Energy deposited by the electromagnetic component in the calorimeter from Monte Carlo truth. For electrons/positrons it is very close to EnergyTot.

EnergyScin: Energy deposited in Scin fibers (not Birk corrected!), this is not a signal and is used only to estimate the sampling fraction of scintillating fibers.

EnergyCher: Energy deposited in Cher fibers, this is not a signal and is used only to estimate the sampling fraction of clear fibers.

VectorSignalsR: Vector scintillating p.e. per each tower in the right section of the calorimeter.

VectorSignalsL: Vector scintillating p.e. per each tower in the left section of the calorimetertr.

VectorSignalsCherR: Vector Cherenkov p.e. per each tower in the right section of the calorimeter.

VectorSignalsCherL: Vector Cherenkov p.e. per each tower in the left section of the calorimeter.

VectorR: Vector of energy deposited in each tower from Monte Carlo truth in the right section of the calorimeter.

VectorL: Vector of energy deposited in each tower from Monte Carlo truth in the left section of the calorimeter.

leakage: energy leakage from the calorimeter end due to all particles except neutrinos.

neutrinoleakage: energy leakage from the calorimeter end due to neutrinos.

Each component of the Vector variables represents a calorimeter element. The current geometry contains 75 towers arranged in 36 phi slices. https://twiki.cern.ch/twiki/pub/DREAM/DualReadoutSoftware/src_DR_GeometryHelper.cxx should help in understanding how to go from the vector component to the direction of a given energy deposit. There are some other variables that are left from previous tests and are not used now:

NofCherenkovDetected: Total Cher p.e. detected (Can be used to have a quick overview of the total cherenkov signal, but is not checked, I suggest to compare it with sum(VectorSignalsCherL)+sum(VectorSignalsScinL))

PrimaryParticleName: String with primary particle name, not filled anymore. Can be used again in case a run contains different primary particles shot from one event to the other

PrimaryParticleEnergy: Energy carries by primary particle, not fille anymore. Can be used again in case a run contains primary particles with different energies from one event to the other.

VectorLoop: Only used for B filed studies with soft particles (loopers), now under development.

IDEA dual readout simulation - HowTo (Standalone G4 - master branch)

  • You can install Geant4 standalone in your machine (recommended version: GEANT4.10.05.p01).
  • The instruction on how to install Geant4 can be found at this link. You can also use Geant4 from LCG.
  • Once you got the 'geant4_10_05_p01.zip' file, move it into a clean directory, go there and unzip.
  • To build and install the sw follow these instructions:
# cd to the directory where you unpacked the Geant4 zip file and set the environmental variable $G4_WORK_DIR to point to it
cd "your Geant4 unpacking directory"
export G4_WORK_DIR=`pwd`
# create the 'build' and 'install' directories
mkdir geant4.10.05.p01-build/ geant4.10.05.p01-install/
# cd to the 'build' directory
cd geant4.10.05.p01-build
# create the makefiles
cmake -DGEANT4_INSTALL_DATA=ON -DGEANT4_USE_QT=ON -DGEANT4_BUILD_MULTITHREADED=ON -DCMAKE_INSTALL_PREFIX=$G4_WORK_DIR/geant4.10.05.p01-install $G4_WORK_DIR/geant4.10.05.p01
# create libraries and binaries
make -jN (N is number of threads)
# install
make install

  • You will also need to install HepMC, which can be found at this link (recommended version: HepMC-2.06.09).
  • Once you got the 'HepMC-2.06.09.tar.gz' file, move it into a clean directory, go there and unpack the tarball.
  • To build and install the sw follow these instructions:
# cd to the directory where you unpacked the HepMC tar file and set the environmental variable $HEPMC_WORK_DIR to point to it
cd "your HepMC unpacking directory"
export HEPMC_WORK_DIR=`pwd`
# create the 'build' and 'install' directories
mkdir HepMC-2.06.09-build/ HepMC-2.06.09-install/
# cd to the 'build' directory
cd HepMC-2.06.09-build/
# create the makefiles
cmake -DCMAKE_INSTALL_PREFIX=../HepMC-2.06.09-install/ -Dmomentum:STRING=GEV -Dlength:STRING=CM ../HepMC-2.06.09/
# create libraries and binaries
make -jN (N is number of threads)
# install
make install

  • Once you have built and installed Geant4 with HepMC, source the ROOT and Geant4 environment setup scripts.
  • We suggest to put this sourcing in your shell initialization script (e.g. the .bashrc file), together with the definition of the enviromental variables for the ROOT ($ROOTSYS), Geant4 ($G4_WORK_DIR) and HepMC ($HEPMC_WORK_DIR) sw directories.
  • E.g.:
source /home/software/root-6.18.04-build/bin/thisroot.sh
source $G4_WORK_DIR/geant4.10.05.p01-install/bin/geant4.sh
  • Finally, go to the directory where you cloned the Git_IDEA_CALO_FIBER tree and build the sw following these instructions:
# cd to the directory where you cloned the Git_IDEA_CALO_FIBER tree and set the environmental variable $IDEA_DRC_CODE_DIR to point to it
cd "your IDEA dual-readout sw clone directory"
export IDEA_DRC_CODE_DIR=`pwd`
# create the 'build' directory
mkdir IDEA_calo_fiber-build/
# cd to the 'build' directory
cd IDEA_calo_fiber-build
# create the makefiles
cmake -DROOT_INCLUDE_DIRS=$ROOTSYS/ -DHEPMC_DIR=$HEPMC_WORK_DIR/HepMC-2.06.09-install/ -DGeant4_DIR=$G4_WORK_DIR/geant4.10.05.p01-install/lib/Geant4-10.5.1/ $IDEA_DRC_CODE_DIR/Git_IDEA_CALO_FIBER/DRC4pifibers/DRC4pigeometry/Dream/B4/
# create libraries and binaries
make -jN (N is number of threads)

For example, using /cvmfs the cmake command above would be

cmake -DROOT_INCLUDE_DIRS=/cvmfs/sft.cern.ch/lcg/releases/LCG_96/ROOT/6.18.00/x86_64-centos7-gcc8-opt -DHEPMC_DIR=/cvmfs/sft.cern.ch/lcg/releases/LCG_96/HepMC/2.06.09/x86_64-centos7-gcc8-opt -DGeant4_DIR=/cvmfs/sft.cern.ch/lcg/releases/LCG_96/Geant4/10.05.p01/x86_64-centos7-gcc8-opt/lib64/Geant4-10.5.1 ../Git_IDEA_CALO_FIBER/DRC4pifibers/DRC4pigeometry/Dream/B4/

Open tasks

If you have few cycles and want to help with the Dual Readout software development, here is a list of tasks that we would like to see progressing:

Simulation

  • Support structure and dead material in the simulation. Pisa
  • Develop the GEANT4 simulation of the new prototype that will be tested on beam as soon as possible. Nice opportunity for newcomers. Lorenzo + Gabriella + Jinky
  • Finalise the integration of the simulation and/or digitisation/reconstruction code in FCC framework.
  • Correcting the calibration constants for the signal losses at tower borders. Mostly needed for electrons/photons simulations. Iacopo (Sussex)
  • Integration with drift chamber and vertex detector.
  • Combining fiber and crystal calorimeter.

Digitisation:

  • Digitisation code available on PODIO output.
  • Study timing capabilities by adding a complete description of the SiPM response using C++ or python. Single particle ID with and without ML. Como

Reconstruction and analysis

  • Study the tau decay mode tagging with a convolutional neural network. Stefano Giagu (Rome 1)
  • Higgs into gamma gamma - finalise study of response dependency on the material Iacopo (Sussex)
  • Looking at higher jet multiplicity events and related reconstruction problems Polesello (Pavia)
  • Using GAN (Generative Adversarial Network) to produce and replicate calorimeter images for fastsim Jongseok Park (Seoul)
  • Particle identification with ML Yunjae Lee (Seoul - collaboration with Insubria)
  • Energy resolution in dijet events Polesello, Pezzotti (Pavia) - Kyuyeong Hwang (Yonsei)

-- IacopoVivarelli - 2020-01-31

Topic attachments
I Attachment History Action Size Date Who Comment
Unknown file formatcxx src_DR_GeometryHelper.cxx r1 manage 1.5 K 2020-03-12 - 12:18 IacopoVivarelli Quick geometry description to understand how to read the simulation tuple vectors
Edit | Attach | Watch | Print version | History: r15 < r14 < r13 < r12 < r11 | Backlinks | Raw View | WYSIWYG | More topic actions
Topic revision: r15 - 2021-05-12 - LorenzoPezzotti
 
    • Cern Search Icon Cern Search
    • TWiki Search Icon TWiki Search
    • Google Search Icon Google Search

    DREAM All webs login

This site is powered by the TWiki collaboration platform Powered by PerlCopyright & 2008-2023 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
or Ideas, requests, problems regarding TWiki? use Discourse or Send feedback