New decays in the AXSEL package

 

Author: Gloria.Corti@cern.ch


Contents

    1. How to introduce a new decay in the AXSEL package
    2. New decay at the minimal level
    3. New decay at the higher levels
      1. New code
      2. Code to modify


1. How to introduce a new decay in the AXSEL package

Additional EXCLUSIVE decays mode can be introduced in the AXSEL package either at the minimal level or at higher selection level.

Once you are ready to introduce new decay code in the package for general use please send it to me so that I can ensure there are no clashes in case someone else has also introduced something new.

Skeletons on how to modify the necessary routines and of the routines to be provided can be found in the following area on the CERN machines:

/afs/cern.ch/user/g/gcorti/axsel_newdecay

As mentioned in the section on how to use the AXSEL package each decay is identified through the whole code by a 4 character string(for example for Bs->Dsphipi- it is BSDP, for B0->K+pi- is BDKP).This NAME need to be used in the seldecay.cdf and as directory name in the hbook file.

In most of the skeleton files the new decay name is referred as XXXX. This should be substituted with the four characters name identifying the new decay. Please contact me to agree on this name and avoid clashes with other possible decays. In addition the skeleton routines specific to the decay are referred to as having the name "NewDecay", this should be substituted with a meaningful name.

2. How to introduce a new decay at the minimal selection level (SelLevel=0)

In order to introduce an exclusive decay mode at the minimal level 2 routines in the package need to be modified.

Below is a description of the routines that needs to be modified and how that should be done. If you have problems you can contact me with the full decay chain you are requesting to be introduced and I will provide you with the modified routines.

The first routine you will need to modify is

axmakelist.F

This routine defines all the implemented decays and their implemented level of selection. Uncomment and modify the lines relative to "New decay" in the skeleton routine.

The meaning of the variables to be modified can be found in the following table (n refers to the n-th decay)

DECAYList (n)

4 characters strings to identify the decays implemented in the AXSELECT package. It identify the decay through the whole code, including the hbook file and to identify the cuts

DECAYExpl (n)

strings explaning the Decay chain ( mostly to have person readable printouts)

DECAYCode (n)

event type identifyer (as used by mcqry, see the following web page for explanations)

DECAYLevel (n)

level of implementation of the decay (explanations can be found here)

DECAYCCFLag (n)

flag set to true if the analysis looks at the same time for the charge conjugate decay to that described in the Decay Tree.

DECAYHisto (n)

Offset of histogram ID for the decay. 1000 consecutive IDs can be used for the decay starting from the offset, with offset included. An additional offset for all histograms in the package is added and the variable containing the offset should be used in the code.

The other routine it is necessary to modify is the one defining the decay trees themselves in a form recognized by the routines in the package. This routine is called:

axdefinetree.F

Uncomment and modify all lines where the XXXX for the new decay is. The definition of the tree is done in the DATA statement, then in the code this is passed along at run time base on the XXXX chosen in the AXSE card.

The parameter ntXXXX is the number of all particles in the Monte Carlo decay tree. For example for B->pi+pi- this number is 3, for B->J/Psi(mu+mu-)Ks(pi+pi-) is 7.

The DATA statement must follow a specific structure.

DATA XXXXDecay/

1 IDx1 ,2,3,

2 IDx2 ,0,0,

3 IDx3 ,0,0/

For each entry(=line=position in the decay tree) there are 3 variables: the first is the ID of the particle (the parent of the tree is always in position 1 in the tree), the second is the position in the tree of the first daughter particle, the third is the position in the tree of the last daughter particle. Particles from the same parent must be in consecutive order in the tree. A particle is considered as stable by the AXSEL package when the second and third variables for a particle are equal to zero. Parameters should be used to define the IDs of the particles.

See as example how various decays are implemented in the code.

 

3. How to introduce a new decay at higher selection levels (SelLevel>0)

If the minimal decay level for the decay is not already in the package you need to modify the axdefinetree.F and axmakelist.F routines as described above to introduce the decay in the package.

You will need to set in any case the DECAYLevel variable in axmakelist.F to agree with the implemented selection level for the decay.`

An analysis for an EXCLUSIVE decay mode needs to conform to a few rules to be integrated in the AXSEL package. In addition two additional routines in the main package need to be modified to introduce calls to the new routines.

When introducing a decay mode in the AXSEL package at least three routines, an include file and cuts in the form of an entry in the seldecay.cdf file need to be provided.

 

3.1 New code

First let's describe the routines that need to be provided when introducing a new decay analysis. In all of the following NewDecay will have to be substituted with a meaningful name and skeleton routines are provided.

The three routines that must be provided are:

  1. axselNewDecay_histo.F, a routine where the booking of the histograms relative to the decay has to be done
  2. Use the the histogram offset provided, IAXSDecHist, to start the histogram numbering and refer to other implemented decays as example. Few sample histograms that can be filled are provided in the skeleton routine.

  3. axselNewDecay_pprint.F, a routine where a print-out of the cuts used in the selection should be put.
  4. This routine is called by the AXSEL package at the end of a job to print a summary. As for the previous routine a little sample is provided in the skeleton routine.

  5. axselNewDecay.F, the main routine controlling the decay selection.
  6. In this routine you should first read the cdf file and call the axselNewDecay_histo routine when processing the first event. See how this is done in the skeleton routine and in the other implemented decays.

    The following variables are passed as input arguments of the routine:

    Selmode = fast or full selection (0 or 1 respectively)

    If selmode=0 only the tracks that come from the decay should be considered. In order to do that the array ITKMCDecay in axseltkflags.inc is previously filled. For each n-th particle in the AXTK bank the corresponding ITKMCDecay(n) is set. If the value of the flag is zero the particle does not belong to the chosen decay tree. If the value is greater than zero it belongs to the tree where the value is equal to the position of the particle in the decay tree as defined in the routine axdefinetree.F.

    Sellevel = selection level

    It can only be 1 or 2, since the minimal selection level is already taken care of by the package

    IFLGPrt = printing flag

    It can be 0 (no printing), 1 (print information), or 2 (print more complete info)

    (For all these variables refer to the AXSE card for more details)

    The routine must return two output arguments:

    NrecComb = the number of combinations reconstructed by the decay analysis for the requested selection level

    RecList(n,,j) = the list of AXTK addresses of the particle used in reconstructed decay.

    Each index "j" refers to a specific reconstructed combination while the index "n" where the address of the particle need to be put is the position of the particle in the decay tree as defined in axdefinetree.F

 

The include file

axselparxxxx.inc

containing the decay cuts parameters has also to be provided. You will need to change the xxxx to the 4 character string identifying the specific decay in the skeleton routine. Refer to others implemented decays as example.

 

In addition you will need to provide cuts parameters to be included in the seldecay.cdf file containing the cuts for all decays.

The seldecay.cdf file in /afs/cern.ch/user/g/gcorti/axsel_newdecay has a placeholder for a new decay XXXX.

 

3.2 Code to modify

Two routines in addition to axmakelist.F and axdefinedtree.F need to be modified in the package.

The steering routine

axselect.F

must call the main routine implementing then new decay (axselNewDecay) and in the routine

axsellast.F

a call to the routine where the printing of the parameters is done (axselNewDecay_pprint) has to be introduced.

The skeleton routines are set up to introduce a new decay.

 

This page was last modified on 13 Nov. 2000