def reaction_int2str( reaction_int, silent=True ):
#;{{{
    """
    Translate reaction number to reaction string.

    The idea of this functions is to ensure that in all function within
    this file the same reaction is meant when referring to reaction 3
    (or any other number).

    The integer provided to this function is tranlated into a string
    specifying the reaction:
        1: D + T     --> n + 4He     T(d,n)4He
        2: D + D     --> p + T       D(d,p)T
        3: D + D     --> n + 3He     D(d,n)3He
        4: 3He + D   --> p + 4He     3He(d,p)4He
        5: T + T     --> 4He + n + n
        6: T + 3He   --> D + 4He         41 %
                         p + 4He + n     55 %
                         p + 4He + n     4 %
        7: 3He + 3He --> p + p + 4He 
        8: p + 11B   --> 4He + 4He + 4He
        9: p + p     --> 2H + nu + e^+

    Parameters
    ----------
    reaction_int: int
        possible values see above

    Returns
    -------
    reaction_str: str
        possible values see the dictionary values
    """

    func_name = 'reaction_int'

    reaction_dict = { 1 : 'DT'  , 
                      2 : 'DD_a',
                      3 : 'DD_b',
                      4 : '3HeD',
                      5 : 'TT',
                      6 : 'T3He',
                      7 : '3He3He',
                      8 : 'p11B',
                      9 : 'pp',
                     }

    # check if reaction_int is in keys of dict, return NaN if not
    if reaction_int in reaction_dict.keys():
        reaction_str = reaction_dict[ reaction_int ]
    else:
        reaction_str = 'NaN'
        print( '{0}: ERROR, no reaction for found for provided key'.format( func_name ) )
        print( '{0}  key was {1}'.format( ' '*len(func_name), reaction_int ) )

    if not silent:
        print ('{0}: reaction_int = {1:d}, reaction_str = {2}'.format(
                func_name, reaction_int, reaction_str))

    return reaction_str