Aslund IFR Simulation
Created: October 9, 1996
Author: Riccardo de Sangro (riccardo.desangro@lnf.infn.it)
Last Update: July 7, 1997 - R. de Sangro
Introduction
A preliminary first version of the simulation of the IFR has been included in Aslund. It provides the identification of charged particles (muons, with some pi misidentification) and of neutral hadrons (K0L, neutrons, anti-neutrons).
Charged Particles - muon ID
The treatment of charged particles in the IFR was coded by M.G. Pia, who provided a detailed description of the code and its usage. You are referred to her documentation
for further details, and to the file Aslund/user/ifrusage.uanal for a usage example.
Neutral Hadrons - K0L ID
Generalities
To simulate the response of the IFR to neutral hadrons we have used a parametrisation obtained with BBSIM. The bbsim simulation was made generating a flat distribution in p (0 to 3 GeV/c), theta (0-180deg), phi (0-360deg) of single
particle (K0L,n0,n0b) events.
All BBSIM data was generated using FLUKA among the possible alternatives (GHEISHA, GCALOR). The motivation for this choice is that FLUKA gives the highest interaction probability for K0L's in the
electromagnetic calorimeter, and therefore it is more conservative with respect to the others. This is because there are fewer K0L hits overall in the IFR, and therefore a lower detection efficiency. Of course, it will always be possible to generate MC
events with the other hadronic packages and implement switches to be able to select which parametrisation to use, but this choice is not available now.
Various distributions of efficiency VS momentum, theta, phi and deposited energy in the electromagnetic calorimeter were made. From these distributions a look-up table of the
efficiency as a function of p,theta has been compiled and stored in two disk files in the Aslund/data directory: IFRk0leff.dat (K0L and anti-neutrons), IFRn0eff.dat (neutrons). These look-up tables are read out at run initialization, and
printed out as a check at the same time.
The simulation of the IFR has been inserted in the routine that treats the neutrals in Aslund, neusim.f. For all the neutral hadrons first a check is made to assess whether it hits the calorimeter. Then if it does, a deposited energy in the
e.m. calorimeter is extracted according to a distribution function obtained from a fit to BBSIM data. This energy is both added to the jets and stored in the neutral hadron bank, after checking if it were above the detection threshold for
the calorimeter (0.025 GeV).
For all the neutral hadrons, the logical function ifridf is called to perform all the necessary actions to simulate the IFR response. The function returns with a .TRUE. value if the particle was positively identified in the IFR. It is
in this routine that the look-up table in consulted and the efficiencies applied. A correction is made on the p,theta dependent efficiency to take into account also its dependency on the energy deposited in the e.m. calorimeter prior to entering the IFR.
The overall efficiency therefore takes into account most of the effects that might induce changes in the IFR response to neutral particles.
The Neutral Hadron Bank
In the routine ifridf.f all the information that the IFR is capable of giving about the neutral particle is collected and stored in a number of variables included in the common block /ifrdet/, which is accessed by including the
ifrdet.inc include file, of which an excerpt is listed below:
c
c detected neutral hadrons common. These reconstructed quantities can
c be fetched into PALL with a call to trkall with INDX=7.
integer*4 nhdmax,ncnhad
parameter (nhdmax=100)
real*4 pnhad(3,nhdmax), ! Neutral hadron smeared director cosines
> ptotnhad(nhdmax), ! " " total momentum = unit vector
> ptnhad(nhdmax), ! " " transverse momentum (from cosines)
> thenhad(nhdmax), ! " " theta (after smearing)
> phinhad(nhdmax), ! " " phi " "
> ipnhad(nhdmax), ! " " Track index in jetset
> enhad(nhdmax) ! " " Energy deposited in EMC, if any
C (before Egmin cuts)
common/ifrdet/ncnhad, pnhad, ptotnhad, ptnhad, thenhad, phinhad,
> ipnhad, enhad
To access this information, however, one can also (should instead) make a call to the routine TRKALL.F with INDX=7, i.e.
DIMENSION PALL(20)
INDX=7
CALL TRKTYP(INDX,NHADTOT)
DO IP=1,NHADTOT
CALL TRKALL(INDX,IP,PALL,TRKNAM)
ENDDO
with the usual meaning of the various variables: IT is the neutral particle index in the neutral hadron bank, PALL(20) is a vector whose components meaning is the same as that for the reconstructed charged tracks or energy jets, and that
is loaded with all the information about the reconstructed neutral hadron:
C
PALL(1) = PNHAD(1,IP) ! Director cosines of unit momentum vector
PALL(2) = PNHAD(2,IP) !
PALL(3) = PNHAD(3,IP) !
PALL(4) = 0.010 ! The energy is NOT measured for K0L, n0-bar, n0
C so for now fix it at 10 MeV
PALL(6) = PTNHAD(IP)
PALL(7) = PTOTNHAD(IP) ! Unity (neither the neutral hadrom momentum
C is measured)
PALL(5) = 0. ! Sorry I don't know the mass (K0L? neutron?)
PALL(8) = 0. ! Sorry, I don't know that either
PALL(9) = PHINHAD(IP)
PALL(10) = 0.
PALL(11) = 0.
C
PALL(12) = 0. ! The neutral hadron
PALL(13) = 0. ! vertex is assumed at
PALL(14) = 0. ! 0. 0. 0.
PALL(15) = 0.
C
PALL(16) = 6. ! neutral "stable" track
IPLUND = IPNHAD(IP)
IF(KLU(IPLUND,2).EQ.130) THEN
TRKNAM='K_L0'
ELSEIF(KLU(IPLUND,2).EQ.2112) THEN
TRKNAM='Neutron'
ELSEIF(KLU(IPLUND,2).EQ.-2112) THEN
TRKNAM='Anti-Neutron'
ENDIF
PALL(17) = IPLUND ! Index of track in LUND
PALL(18) = LUCOMP(KLU(IPLUND,2))
PALL(19) = ENHAD(IP) ! Energy dep in Emc (if any)
PALL(20) = KLU(IPLUND,2) ! Particle KF code
Since the IFR can only provide the information about the direction of the neutral particle, that is reflected in the fact that among the reconstructed quantities the total momentum and the total energy are missing. The components of the momentum
three-vector are recalculated after the smearing of the theta and phi angles according to the IFR angular resolution. The angular resolution has been parameterised with the superposition of two gaussians with 20mr and 100mr sigmas. The smearing is applied
to the generated momentum vector around the original direction. The energy deposited in the e.m. calorimeter is loaded in PALL(19).
Code Usage
As an example of how to fetch the reconstructed neutral hadrons detected quantities, you can look at the file Aslund/user/ifrusage.uanal, which contains a usage example.
Test plots needed to verify the simulation can be seen here. One has to keep in mind that the IFR does not provide a discrimination between K0L, neutrons or anti-neutrons.
You may, however, find out which it was by looking at ifrneuid(ip), which assumes the values stored in the parameters ifrk0l, ifrn0, ifrn0b; if the hadron is not identified ifrneuid(ip) will assume the value ifrnull.
All the MC truth can be accessed by calling TRKALL(INDX,IT,PALL,TRKNAM) with INDX=1 and IT=IPNHAD(IP) which is the LUND index corresponding to the IPth neutral hadron in the neutral hadron track bank.
Code Release -- (last update July 16, 97)
The currently tagged version is: V05-01-10.
This is not included in the last release (4.2.1), but it should be in the next one.
The original simulation was tested on HP-UX10 and AIX4 using 100K single particle K0L and neutrons, and also 10K Upsilon(4S) events without problems.
For updates on Aslund code releases, look here .
|