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/.

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

  • Make the output format of the simulation uniform, such that the two simulation packages (Asian and European) can be used interchangeably. Make a single repository. Iacopo
    • Attempt to use HepMC3 in the European simulation Lorenzo + Sanghyun
  • Support structure and dead material in the simulation. Pisa
  • Develop the GEANT4 simulation of the new prototype that is going to be tested at Desy in November. Nice opportunity for newcomers. Lorenzo + Gabriella + Jinky
  • Starting the migration to the DD4hep(and eventually FCCSW) Sanghyun
  • Correcting the calibration constants for the signal losses at tower borders. Mostly needed for electrons/photons simulations. Iacopo (Sussex)
  • Investigate how much work it is to import the tracks (simulation + reconstruction) to the calorimeter simulation Sanghyun + Lorenzo
    • Open discussion on dual readout with Crystals - work started in Yonsei on specific non-collider applications Yun Eo - Yonsei - US colleagues

Digitisation:

  • Propagation of SiPM emulation to the fibers Lorenzo, Insubria
  • 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)
  • Position and angular resolution Minsoo Kim (Yonsei)
  • Energy resolution in dijet events Polesello, Pezzotti (Pavia) - Kyuyeong Hwang (Yonsei)

Discussions to be finalised

  • Agree on an established procedure to compare resolitions and linearity for hadronic energy measurement.

Available simulated samples and tuple format

A single particle production has been made using the IDEA like geometry of the calorimeter. It is avaiable at this link.

The tuple 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

  • 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).
  • 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.
  • 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

  • If your computing site is making use of /cvmfs, then it is relatively straightforward to set up Geant4 and HepMC directly using the /cvmfs installation of LCG. These are the instructions (the version of the operative, compiler and LGC may change depending on your local system and needs):

source /cvmfs/atlas.cern.ch/repo/ATLASLocalRootBase/user/atlasLocalSetup.sh
asetup gcc8,none --cmakesetup  # setup the gcc8 compiler including cmake setup 
lsetup "lcgenv -p LCG_96 x86_64-centos7-gcc8-opt HepMC"
lsetup "lcgenv -p LCG_96 x86_64-centos7-gcc8-opt Geant4"
lsetup "lcgenv -p LCG_96 x86_64-centos7-gcc8-opt ROOT" 

  • 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/

If everything goes smoothly, you should find your executable file in: IDEA_calo_fiber-build/B4a/exampleB4a. To run the similation: ./B4a/exampleB4a -m myrun.mac -t #Thread. Use the ROOT command hadd to merge simulation output: hadd -f B4.root B4_*.root

  • 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

-- IacopoVivarelli - 2020-01-31

Topic attachments
I Attachment History ActionSorted ascending 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: r13 < r12 < r11 < r10 < r9 | Backlinks | Raw View | WYSIWYG | More topic actions
Topic revision: r13 - 2020-06-30 - SangHyunKo
 
    • 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-2020 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback