the Root-based Optical Module EmulatOr

Update record:  
20040812   ROMEO ver. 0.91 released
20040507   The original ROMEO page uploaded


What is ROMEO?

  • Class Structures
  • DOMPhotoCathode
  • DOMChargeResponse
  • DOMWaveForm

Source code and usage (alpha version)


A fast and reliable detector simulator is indispensable as well as full Monte-Carlo simulator, especially for the phase of physics analysis. While the development of the full Monte-Carlo ray trace simulator for DOMs(DOMINANT) is underway, we started to develop more handy simulator (ROMEO - Root-based Optical Module EmulatOr) which simulates the photon propagation inside the DOM sphere and the PMT response. It would have tables of photon acceptance vs angle of incidence and timing fluctuation of radio active noise optimized by DOMINANT(but have not be implemented yet).
The PMT response is simulated by our analytical model describing our PMT calibration data. Our measurement of the PMT SPE response indicates that the charge response function would be represented by combination of gaussian and exponential. It is scaling with gain and universal without tube to tube variance, which benefits the ROMEO architecture.


What is ROMEO?

ROMEO is the handy (D)OM simulator based on ROOT/C++ especially tuned to the AMANDA/IceCube (D)OMs. Current version equips only the PMT response module which comprises three sub-modules:DOMPhotoCathode, DOMChargeResponse, and DOMWaveForm.



Class Structures

The current class structure is shown in fig.2. We made a base class for modules named "DOMVModule", currently based on TTask/ROOT. This class would be a wrapper for integration to the IceTray framework.




DOMPMTPhotoCathode module simulates the fluctuation of the collection efficiency. The imput data are generated by DOMINANT as a injection point on the PMT surface. We also measured uniformity of the relative collection efficiency as shown in the central panel of fig.3. The right panel of fig.3 shows an example of resultant photo electron distribution sumpled by Monte-Carlo in ROMEO.



DOMPMTChargeResponse module is based on the charge response functions as shown in fig.4. From our analysis of charge response using single photo electrons, we have learnt that it is PMT gain-scaling and exhibits no variance from tube to tube. For example, relative contribution of the exponential-type component to the main gaussian part, which is parameterized by P_ex, is independent on HV and almost universally same between different tubes as ploted in fig.5. Fig.6 shows a sumpled charge distribution of SPE in the simulation using this model which shows good agreement with our calibration data.


(left: fig5, right: fig6)


DOMPMTWaveForm module simulates the wave form function with a simple gaussian model. Gained charge received from the DOMPMTChargeResponse is converted to the normalization factor of the gaussian assuming the 50 ohm impedance. Fig.7 shows superimposed pulse waves simulated by this module.



Source code and usage (alpha version)

Test environment

  • SuSE Linux 7.3 with gcc 3.3
  • MacOSX 10.3 with gcc 3.3


  1. Install ROOT in your computer
  2. Download tgz file of ROMEO from here

How to install the ROMEO

Following procedures assuming bash environment. If you prefer tcsh, change all "export" command to "setenv", i.e.

$ export ROMEOROOT=`pwd`
% setenv ROMEOROOT "`pwd`"

  1. Expand the Romeo_v1.0.tgz file in your convenient directory (<somewhere>).

    $ mv Romeo_v1.0.tgz <somewhere>
    $ cd <somewhere>
    $ tar -zxvf Romeo_v1.0.tgz
    $ mv Romeo Romeo_v1.0
    $ ln -s Romeo_v1.0 pro
    $ cd pro

  2. Define environment valiables

    $ export ROMEOROOT=`pwd`
    $ export SOSYMLINK=ture

    If you are MacOSX user, type more three lines:
    $ export PATH=$PATH:$ROMEOROOT/bin

  3. Compile the ROMEO

    $ cd $ROMEOROOT/src
    $ make install

    See doc/README to get more informations.

  4. If you have trouble at xmkmf -a command...

    ROMEO automatically find cxx dependency by bin/cxxdepends command, however, it may not work on your environment. If you have dependency trouble, try following procedue.

    1) Chech your alias. If you define alias on "which" command, remove the alias.

    2) If you cannot fix the problem by 1), try

    $ cd /usr
    $ find . -name typeinfo
    $ find . -name iostream
    $ find . -name float.h

    then modify your $ROMEOROOT/conf/Imake.root file

    CXXDEPENDS += -I/usr/include/g++-v3
    CXXDEPENDS += -I/usr/include/g++-v3/i586-pc-linux
    CXXDEPENDS += -I/usr/lib/gcc-lib/i586-pc-linux/2.96/include

How to run the ROMEO

$ cd $ROMEOROOT/analysis
$ root -l RomeoDemo.C

See doc/README to get more informations.




Will you visit JULIeT ?


Photon Propagator
(Toy Monte-Carlo)

Ray trace&BG sim

PMT Handy c++ sim

Back to the
Chiba Icecube Home