Example 5 Implementation of the FLUKA simulation of the Pb-Scintillating fiber e.m. calorimeter of the KLOE Experiment -------------------------------------------------------- UPDATED===26.10.2010.14.10.46 TITLE===Implementation of the FLUKA simulation of the Pb-Scintillating fiber e.m. calorimeter of the KLOE Experiment TYPE===database -------------------------------------------------------- --------------------------------------------------------
Giuseppe Battistoni; INFN, Milano
Jaroslaw Zdebik; UJ, Cracow
J. Zdebik
In this example, I describe the process and results of implementation geometry of the KLOE Barrel Calorimeter with realistic material
composition into Fluka package. All my work is based on implemented
one calorimeter module with rectangular shape (work was done by:
"G. Battistoni, B. Di Micco, A. Ferrari, A. Passeri, V. Patera" )
inside Fluka framework. I describe shortly the development of this
module in order to achieve the trapezoid shape (which exists in the
realistic world) and finally, the implementation of the complete
structure of twenty four modules geometry of the Kloe Barrel
Calorimeter (work was done by: J. Zdebik with "B. Di Micco suggestions" )
In this example I will present the the most important steps and code fragments which were necessary to perform in order to achieve the complete simulation of the KLOE Barrel Calorimeter geometry with FLUKA, also implementation of the realistic calorimeter material composition will be discussed. I will focus only on the code related with the FLUKA software.
The KLOE calorimeter consists of three parts: one barrel and two endcaps. Each part is built out of modules with a spaghetti structure made of lead layers with about 1,2 mm thickness (200 layers per 1 module) which are filled with scintillating fibers of 1 mm diameter. The barrel (Fig. 1) has a cilindrical shape and is divided into 24 modules with trapezoid shape. Each module is 23 cm thick.
![]() |
Figure 1: A photo of the KLOE calorimeter [1]. The 24 modules of the barrel and the inner plane of the endcap are shown. |
The volume of the calorimeter consists of 50% fiber, 40% lead and 10% glue. The section of one of the 24 modules and the details of the lead+fiber structure can be aprreciated in Fig. 2. The detailed structure of the module has been simulated as described in the following section.
![]() ![]() |
Figure 2: Single module section (left) and details of the fibers structure in the calorimeter detector (right). |
The calorimeter is built out of lead, plexi and glue [2] which are composed as follows:
Table 1: Composition of hardener mixture [2].
Compound | formula | fraction |
Polyoxypropylediamine | C7H20O3 | 90% |
Triethanolamine | C6H15O3 | 7% |
Aminoethylpiperazine | C6H15N3 | 1.5% |
Diethylenediamine | C4H10N2 | 1.5% |
The module geometry was designed trying to profit of the big degree of
symmetry of the calorimeter structure. The first version of this geometry was
realized in rectangular shape [Implementation to FLUKA package was done
by: G. Battistoni, B. Di Micco, A. Ferrari, A. Passeri
and V. Patera ] with the material description given in the previous
section.
FLUKA allows to define a symmetric geometric structure as recursive isometric
transformations of a base structure. The base structure (referred to as base cell in the
following) has to be defined in its shape and material composition, while the
transformed regions (referred to as replicas in the following) are defined as void boxes whose boundary surfaces can be
overlapped to the boundaries of the base cell. At the tracking level each time
a particle enters in a replica region a transformation is performed in the
base cell. The particle is propagated in the base cell and transformed back to
the replica when it reachs the boundary of the base cell. These
transformations, forward and backward, have to be provided by the user in the
lattic.f routine whose code is reported in source code area .
In the reference system shown in Fig. 3
(the blue axis denote the frame which was used for
simulations with FLUKA, the red coordinate system
presents the coordinate frame of the KLOE detector) the base cell
has dimensions of
52 cm x 1.2 mm x 430 cm, it consists of a lead block filled with
385 scintillating fibers and
glue cylinders (Fig. 4).
![]() |
Figure 3: The coordinate systems used in simulations. |
![]() |
Figure 4: Details of the implementation of the calorimeter layers [3]. |
![]() ![]() |
Figure 5: Cross section of the EmC module with rectangular and trapezoid geometry. Visualization by the FLAIR program [4] using as an input a geometry setup files of FLUKA. |
![]() |
Figure 6: The KLOE fibers schematic view. |
![]() |
Figure 7: Structure of the single module with trapezoid shape. |
![]() |
Figure 8: Distribution of energy deposits in scintillating fibers of a single unit of the electromagnetic calorimeter. |
The barrel was first defined as 24 empty volumes (containers). In one of these volumes we implemented the base cell which describes
one layer of lead, fibers and glue. This cell was replicated 199 times in this volume, to build a rectangular section part of the main
trapezoid module (Fig. 9, left), the same idea
was used to build a single module with rectangular shape, and this base cell
was replicated 200 times in each of the remaining 23 modules (see Fig. 10).
A program code with lattice transformation that performs a rotation and 200 translations for each
module can be examined in appendix A. The remaining two triangle areas in the
first module are filled with the real structure of lead, fibers and glue
cylinder. These two regions were then replicated at the corresponding
positions in the remaining modules, through a single
rotation for each module (Fig. 9, left)
The left panel of Fig. 9 presents
details of the edge area between the base module and the first
replicated area on its right side. In the right panel of
Fig. 9 the energy deposits in the
scintillating fibers at the edge of modules are
presented. The figure was obtained for uniformly distributed photons.
![]() ![]() |
Figure 9: Particular of the base cell and details of the implementation on the edge of two modules. |
![]() |
Figure 10: Visualization of the 24 trapezoid modules of the barrel calorimeter with FLAIR. |
![]() ![]() |
Figure 11: Energy depositions in fibers in the KLOE barrel calorimeter. |
The energy deposits are computed by FLUKA [6] taking into account the Birks
effect [7]
(see equation 1), that is
the saturation of the light output (L) of a scintillating material
when the energy release is high [6].
For high densities of energy deposition, due to the quenching interactions between the excited molecules along the path of
incident particles, the light output is not changing linearly with the energy deposition but
instead it can be described as [8]:
![]() |
c1 = 0.013 cm2MeV-1
c2 = 9.6 x 10-6 cm3MeV-2 |
![]() |
Table 2: Fibers parameters.
A | lambda_1 [cm] | lambda_2 [cm] | |
Kuraray | 0.35 | 50 | 430 |
Pol.hi.tech | 0.35 | 50 | 330 |
1. WORK WITH 1 module with RECTANGULAR shape. 1.1 Almost all parts of this geometry are the same (as were develped for single module with rectangular shape), structure of lattices, and base cell in rectangular part, (more informations you can find in [2] and [9] positions in bibliography). Modification was based on shifting a lattices 1,3,5,7,.....(odd numbers) on x axis on 0.135/2.0 cm in geometry file in order to produce the following structure of fibers: o o o o o o o o o o o o o o o z /\ | | -------> x 2. Description: 2.1 Implementation a new base cell with: lead block RPP 774 0.520350000000000E+02 0.521700000000000E+02-0.215000000000000E+03 0.215000000000000E+03 0.105376086559900E+01 0.117067429511000E+01 one glue cylinder * bdjj glue YCC 775 1.112217580350000E+00 0.521025000000000E+02 0.550000000000000E-01 one fiber cylinder * bdjj fiber YCC 776 1.112217580350000E+00 0.521025000000000E+02 0.500000000000000E-01 These cylinders were located in the triangle areas: 22.....3 2 1 1 2 3 4 ..... 22 * ------------------------------- * ooooo| |ooooo * oooo| |oooo * ooo| |ooo * oo| |oo * o| |X * | | * ------------------- * * * X - base cell which was replicated * o - new lattices = 199 - 9 = 190 * New lattices are situated in 22 columns on the left side of old rectangular part and the same 22 columns for the right side (one box = a new base cell). **************************************************************************** * new lattices on the right and left side * **************************************************************************** * * 777 lattice 10 lattice right side column 1 RPP 777 0.519675000000000E+02 0.521025000000000E+02-0.215000000000000E+03 0.215000000000000E+03 0.117067429511000E+01 0.128758772462100E+01 . . . . . . * 5020 lattice 198 lattice left side column 22 RPP 5020-0.297750000000000E+01-0.284250000000000E+01-0.215000000000000E+03 0.215000000000000E+03 0.231503990431781E+02 0.232673124726891E+02 * 5021 lattice 199 lattice left side column 22 RPP 5021-0.291000000000000E+01-0.277500000000000E+01-0.215000000000000E+03 0.215000000000000E+03 0.232673124726891E+02 0.233842259022001E+02 * * * Each lattice is declared as a region. * *************************************************************************** ****** Old 199 lattices in rectangular shape - modificated - new coordinates. * * * 5022 lattice 1 RPP 5022 0.600000000000000E-01 0.520350000000000E+02-0.215000000000000E+03 0.215000000000000E+03 0.118453429511000E+00 0.235366859022000E+00 . . . . . * 5220 lattice 199 RPP 5220 0.600000000000000E-01 0.520350000000000E+02-0.215000000000000E+03 0.215000000000000E+03 0.232673124726891E+02 0.233842259022001E+02 * * 2.2. Input file: * Declared all new numbers of the regions with material * We are using GLOBAL card: GLOBAL 5000.0 *------------ new modyficated code by JJ ---------------------------* * *----- old fibers regions * ASSIGNMAT 23.0 6.0 390.0 1.0 * *----- old glue region * ASSIGNMAT 31.0 391.0 1.0 * *----- old vacuum region * ASSIGNMAT 2.0 392.0 * *----- old lattices * ASSIGNMAT 24. 393.0 591.0 1.0 * *--- new parts for trapesoidal areas ----------------------------------* * ASSIGNMAT 24. 592.0 4836.0 1.0 * lead block ASSIGNMAT 22.0 3.0 1.0 * 775 - glue ASSIGNMAT 31.0 5.0 1.0 * 776 - fiber ASSIGNMAT 23.0 4.0 1.0 * *--------------------------------------------------------------* For a new lattice areas was not needing to declare a materials. 2.3. mgdraw.f routine: - Declarations a lfibra variable tru for all regions with fibers, - One fiber is contained in 1 region. 2.4 lattic.f routine: - For the old part is the same, - For the new part is based on using IF conditions. ------------- For example: * First column on the right (899 + 189 = 1088) * not + 190 (because the first is a base cell) * IF (IRLTGG.GT.(898).AND.IRLTGG.LT.(1089)) THEN IF(MOD((IRLTGG),2).EQ.0) THEN SB (1) = XB (1) ELSE SB (1) = XB (1) + 0.135D+00/TWOTWO ENDIF SB (2) = XB (2) SB (3) = XB (3)-1.169134295110000D-01*(1+IRLTGG-899) UB (1) = WB (1) UB (2) = WB (2) UB (3) = WB (3) END IF * * Second column on the right (1089 + 181 = 1270) * IF (IRLTGG.GT.(1088).AND.IRLTGG.LT.(1271)) THEN IF(MOD((IRLTGG),2).EQ.0) THEN SB (1) = XB (1) - 0.135D+00 ELSE SB (1) = XB (1) + 0.135D+00/TWOTWO - 0.135D+00 ENDIF SB (2) = XB (2) SB (3) = XB (3)-1.169134295110000D-01 * (9+IRLTGG - 1089) UB (1) = WB (1) UB (2) = WB (2) UB (3) = WB (3) END IF ------------------- 2.5 Some details: TOTAL NUMBER of regions: 4836 TOTAL NUMBER of bodies: 5220 NUMBER of lines in geometry file: 21230B) Lattice replication for 24 modules.
Below is presented the source code of the lattice transformation routine, which build in fly the whole barrel calorimeter geometry, this is the heart of the whole simulation which allows to build barrel calorimeter geometry in FLUKA simulation. *=== lattic ===========================================================* * SUBROUTINE LATTIC (XB, WB, DIST, SB, UB, IR, IRLTGG, IFLAG) INCLUDE '(DBLPRC)' INCLUDE '(DIMPAR)' INCLUDE '(IOUNIT)' INCLUDE '(RTGMMV)' c INCLUDE '(GLTLOC)' *----------------------------------------------------------------------* * LATTIC: user written routine which must return the tracking point * and direction ( SB, UB ) corresponding to region number IR, cell * number IRLTGG and real position/direction XB, WB * * Created on 16 December 1993 by Alfredo Ferrari & Paola Sala * Infn - Milan * * Last change on 26-may-98 by Alfredo Ferrari *----------------------------------------------------------------------* DIMENSION XB (3), WB (3), SB (3), UB (3), UN (3) DOUBLE PRECISION UNN(3),UBB(3) include 'kloecal.inc' LOGICAL LFIRST DATA LFIRST /.TRUE./ IF (LFIRST) THEN LFIRST = .FALSE. ENDIF c rewritting to variable which we can modificate c X,W - where particle hit c S,U - response in the lattice cell KMOD=0 SB(1)=XB(1) SB(2)=XB(2) SB(3)=XB(3) UB(1)=WB(1) UB(2)=WB(2) UB(3)=WB(3) IF(IRLTGG.lt.1.or.IRLTGG.gt.4822) THEN WRITE (LUNOUT,*)' NON-EXISTENT LATTICE: ',IRLTGG c rotation of 23 trapesoids to tha base trapesoid ELSEIF (IRLTGG.GE.4800.and.IRLTGG.LE.4822) THEN XRT = SB(1)-XO YRT = SB(2)-YO ZRT = SB(3)-ZO THETA = -TWOTWO*PIPIPI/24.0D0*(IRLTGG-4799) CALL ROTATE(SB(1),SB(2),SB(3),XRT,YRT,ZRT,THETA) SB(1)=SB(1)+XO SB(2)=SB(2)+YO SB(3)=SB(3)+ZO CALL ROTATE(UBB(1),UBB(2),UBB(3),UB(1),UB(2),UB(3),THETA) DO i=1,3 UB(i) = UBB(i) ENDDO c transformation from 199 lattices into trapes 1 ELSEIF (IRLTGG.GE.1.AND.IRLTGG.LE.199) THEN IF(MOD((IRLTGG),2).EQ.0) THEN SB (1) = SB (1) ELSE SB (1) = SB (1) - 0.135D+00/TWOTWO ENDIF SB (3) = SB (3) - 1.169134295110000D-01 * IRLTGG c c -------------------------------------------------- c transformation of the 200 layers for 2 - 24 trapesoids objects c * in which trapesoid I am * KMOD from 2 to the 24, but rotation for 1 - 23 * KLAYER - layer number in each trapesoid 1-200 c ELSEIF (IRLTGG.GE.200.AND.IRLTGG.LE.4799) THEN KMOD = (IRLTGG - 200)/200 + 1 + 1 THETA = -TWOTWO*PIPIPI/24.0D0*(KMOD - 1) KLAYER = IRLTGG - 200 * (KMOD-1) + 1 XRT=SB(1)-XO YRT=SB(2)-YO ZRT=SB(3)-ZO CALL ROTATE(SB(1),SB(2),SB(3),XRT,YRT,ZRT,THETA) SB(1)=SB(1)+XO SB(2)=SB(2)+YO SB(3)=SB(3)+ZO CALL ROTATE(UBB(1),UBB(2),UBB(3),UB(1),UB(2),UB(3),THETA) DO i=1,3 UB(i) = UBB(i) ENDDO IF(MOD((KLAYER),2).EQ.0) THEN SB (1) = SB (1) - 0.135D+00/TWOTWO ENDIF * * first layer without transformation because it is on the base cell level * * SB (3) = SB (3) - 1.169134295110000D-01 * (KLAYER-1) ENDIF RETURN *=== lantor =======================================================* ENTRY LATNOR ( UN, IRLTNO ) * *--------------------------------------------------------------------* * LATtice cell NORmal transformation: * * Input variables: un(i) = normal components in the tracking re- * ference system * irltno = present lattice cell \# * Output variables: un(i) = normal components in the problem re- * ference system *--------------------------------------------------------------------* * c rotation of the 23 trapesoids IF (IRLTNO.GE.4800.and.IRLTNO.LE.4822) THEN THETA=+TWOTWO*PIPIPI/24.0D0*(IRLTNO-4799) CALL ROTATE(UNN(1),UNN(2),UNN(3),UN(1),UN(2),UN(3),THETA) DO I=1,3 UN(I)=UNN(I) ENDDO c for the 199 lattices in trapesoid-1 ELSEIF (IRLTNO.GE.1.AND.IRLTNO.LE.199) THEN c for the 1 - 200 layers in trapesoids number 2 - 24 ELSEIF (IRLTNO.GE.200.and.IRLTNO.LE.4799) THEN KMOD = (IRLTNO - 200)/200 + 1 + 1 THETA = +TWOTWO*PIPIPI/24.0D0*(KMOD - 1) CALL ROTATE(UNN(1),UNN(2),UNN(3),UN(1),UN(2),UN(3),THETA) DO I=1,3 UN(I)=UNN(I) ENDDO ENDIF RETURN *=== End of subroutine lattic =======================================* END *-------------------------------------------------------------------- SUBROUTINE ROTATE(XOUT,YOUT,ZOUT,XIN,YIN,ZIN,THETA) DOUBLE PRECISION XIN,YIN,ZIN DOUBLE PRECISION XOUT,YOUT,ZOUT DOUBLE PRECISION THETA XOUT = COS(THETA)*XIN+SIN(THETA)*ZIN YOUT = YIN ZOUT = -SIN(THETA)*XIN+COS(THETA)*ZIN END c=================================================================== c===================================================================Conclusions. ::::::::::::