/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D E F I N I T I O N S   D E S   P A R T I C U L E S  :                                                                     */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Author of '$xrq/particle.M5$I' :                                                                                           */
/*                                                                                                                                   */
/*                    Jean-Francois COLONNA (LACTAMME, 1994??????????).                                                              */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D E F I N I T I O N   D ' U N E   P A R T I C U L E   D A N S   L ' E S P A C E - T E M P S  :                             */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
Dstruct07(_propietes_d_espace_temps
         ,DEFV(Float,date_de_naissance)
                                        /* Date de naissance d'une particule (en seconde) a partir de l'origine du calcul.           */
         ,DEFV(Float,duree_de_vie)
                                        /* Duree de vie d'une particule (en seconde).                                                */

         ,DEFV(pointF_3D,position_initiale)
                                        /* Definition de la position initiale de la particule dans l'univers (en metres).            */
         ,DEFV(pointF_3D,position_courante)
                                        /* Definition de la position courante de la particule dans l'univers (en metres).            */

         ,DEFV(deltaF_3D,vitesse_initiale)
                                        /* Definition de la vitesse initiale de la particule (en metres par seconde).                */
         ,DEFV(deltaF_3D,vitesse_courante)
         ,DEFV(Float,module_de_la_vitesse_courante)
                                        /* Definition de la vitesse courante de la particule (en metres par seconde) et de son       */
                                        /* module.                                                                                   */

         ,NOM_VIDE
          );
Typedef(propietes_d_espace_temps,STRU(_propietes_d_espace_temps))
                                        /* Definition d'une particule dans l'espace-temps.                                           */

#define   DATE_DE_NAISSANCE(particule)                                                                                                  \
                    ASD1(PROPRIETES_SPATIO_TEMPORELLES(particule),date_de_naissance)
#define   AGE(particule)                                                                                                                \
                    SOUS(temps,DATE_DE_NAISSANCE(particule))

#define   DUREE_DE_VIE(particule)                                                                                                       \
                    ASD1(PROPRIETES_SPATIO_TEMPORELLES(particule),duree_de_vie)

#define   POSITION_INITIALE(particule)                                                                                                  \
                    ASD1(PROPRIETES_SPATIO_TEMPORELLES(particule),position_initiale)
#define   POSITION_INITIALE_X(particule)                                                                                                \
                    ASD1(POSITION_INITIALE(particule),x)
#define   POSITION_INITIALE_Y(particule)                                                                                                \
                    ASD1(POSITION_INITIALE(particule),y)
#define   POSITION_INITIALE_Z(particule)                                                                                                \
                    ASD1(POSITION_INITIALE(particule),z)

#define   POSITION_COURANTE(particule)                                                                                                  \
                    ASD1(PROPRIETES_SPATIO_TEMPORELLES(particule),position_courante)
#define   POSITION_COURANTE_X(particule)                                                                                                \
                    ASD1(POSITION_COURANTE(particule),x)
#define   POSITION_COURANTE_Y(particule)                                                                                                \
                    ASD1(POSITION_COURANTE(particule),y)
#define   POSITION_COURANTE_Z(particule)                                                                                                \
                    ASD1(POSITION_COURANTE(particule),z)

#define   VITESSE_INITIALE(particule)                                                                                                   \
                    ASD1(PROPRIETES_SPATIO_TEMPORELLES(particule),vitesse_initiale)
#define   VITESSE_INITIALE_X(particule)                                                                                                 \
                    ASD1(VITESSE_INITIALE(particule),dx)
#define   VITESSE_INITIALE_Y(particule)                                                                                                 \
                    ASD1(VITESSE_INITIALE(particule),dy)
#define   VITESSE_INITIALE_Z(particule)                                                                                                 \
                    ASD1(VITESSE_INITIALE(particule),dz)

#define   VITESSE_COURANTE(particule)                                                                                                   \
                    ASD1(PROPRIETES_SPATIO_TEMPORELLES(particule),vitesse_courante)
#define   VITESSE_COURANTE_X(particule)                                                                                                 \
                    ASD1(VITESSE_COURANTE(particule),dx)
#define   VITESSE_COURANTE_Y(particule)                                                                                                 \
                    ASD1(VITESSE_COURANTE(particule),dy)
#define   VITESSE_COURANTE_Z(particule)                                                                                                 \
                    ASD1(VITESSE_COURANTE(particule),dz)
#define   MODULE_DE_LA_VITESSE_COURANTE(particule)                                                                                      \
                    ASD1(PROPRIETES_SPATIO_TEMPORELLES(particule),module_de_la_vitesse_courante)

                                        /* Procedures d'acces aux proprietes spation-temporelles d'une particule.                    */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D U R E E   D E   V I E   D E S   D I F F E R E N T E S   P A R T I C U L E S  :                                           */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   DUREE_DE_VIE_UNDEF                                                                                                            \
                    FLOT__UNDEF                                                                                                         \
                                        /* Duree de vie inconnue...                                                                  */
#define   DUREE_DE_VIE_INFINIE                                                                                                          \
                    F_INFINI                                                                                                            \
                                        /* Duree de vie infinie...                                                                   */

#define   DUREE_DE_VIE_QUARK_u                                                                                                          \
                    DUREE_DE_VIE_INFINIE
#define   DUREE_DE_VIE_QUARK_d                                                                                                          \
                    DUREE_DE_VIE_INFINIE
#define   DUREE_DE_VIE_QUARK_c                                                                                                          \
                    DUREE_DE_VIE_UNDEF
#define   DUREE_DE_VIE_QUARK_s                                                                                                          \
                    DUREE_DE_VIE_UNDEF
#define   DUREE_DE_VIE_QUARK_t                                                                                                          \
                    DUREE_DE_VIE_UNDEF
#define   DUREE_DE_VIE_QUARK_b                                                                                                          \
                    DUREE_DE_VIE_UNDEF
#define   DUREE_DE_VIE_LEPTON_electron                                                                                                  \
                    DUREE_DE_VIE_INFINIE
#define   DUREE_DE_VIE_LEPTON_NEUTRINO_electron                                                                                         \
                    DUREE_DE_VIE_INFINIE
#define   DUREE_DE_VIE_LEPTON_muon                                                                                                      \
                    PARE(2.2e-6)
#define   DUREE_DE_VIE_LEPTON_NEUTRINO_muon                                                                                             \
                    DUREE_DE_VIE_INFINIE
#define   DUREE_DE_VIE_LEPTON_tau                                                                                                       \
                    PARE(3.5e-12)
#define   DUREE_DE_VIE_LEPTON_NEUTRINO_tau                                                                                              \
                    DUREE_DE_VIE_INFINIE
#define   DUREE_DE_VIE_PHOTON                                                                                                           \
                    DUREE_DE_VIE_INFINIE
#define   DUREE_DE_VIE_Wm                                                                                                               \
                    DUREE_DE_VIE_UNDEF
#define   DUREE_DE_VIE_Z0                                                                                                               \
                    DUREE_DE_VIE_UNDEF
#define   DUREE_DE_VIE_GLUON                                                                                                            \
                    DUREE_DE_VIE_UNDEF
#define   DUREE_DE_VIE_Y                                                                                                                \
                    DUREE_DE_VIE_UNDEF
#define   DUREE_DE_VIE_X                                                                                                                \
                    DUREE_DE_VIE_UNDEF
#define   DUREE_DE_VIE_GRAVITON                                                                                                         \
                    DUREE_DE_VIE_UNDEF
#define   DUREE_DE_VIE_HIGGS                                                                                                            \
                    DUREE_DE_VIE_UNDEF

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D E F I N I T I O N   D ' U N E   P A R T I C U L E   D A N S   L E   D O M A I N E   D E   L ' E N E R G I E  :           */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
Dstruct08(_proprietes_energiques
         ,DEFV(Float,masse_au_repos)
                                        /* Definition de la masse au repos de la particule sous la forme :                           */
                                        /*                                                                                           */
                                        /*                  m                                                                        */
                                        /*                   0                                                                       */
                                        /*                                                                                           */
                                        /* (en kilogrammes). A noter la correspondance :                                             */
                                        /*                                                                                           */
                                        /*                   1 Mev           -30                                                     */
                                        /*                  ------ = 1.783.10    Kg                                                  */
                                        /*                     2                                                                     */
                                        /*                    c                                                                      */
                                        /*                                                                                           */
                                        /* puisque, souvent, la masse est exprimee en electron-volts (ce qui correspond au produit   */
                                        /* de la masse au repos par le carre de la vitesse de la lumiere).                           */
         ,DEFV(Float,masse_relativiste)
                                        /* Definition de la masse relativiste de la particule sous la forme :                        */
                                        /*                                                                                           */
                                        /*                           m                                                               */
                                        /*                            0                                                              */
                                        /*                 m = ---------------                                                       */
                                        /*                                 1                                                         */
                                        /*                      |      2 |---                                                        */
                                        /*                      |     v  | 2                                                         */
                                        /*                      |1 - ----|                                                           */
                                        /*                      |      2 |                                                           */
                                        /*                      |     c  |                                                           */
                                        /*                                                                                           */

         ,DEFV(Float,portee_de_l_interaction)
                                        /* Definition de la portee de l'interaction dans le cas d'un boson...                        */
         ,DEFV(Float,longueur_d_onde)
                                        /* Definition de la longueur d'onde 'lambda' de l'onde associe a la particule.               */
         ,DEFV(deltaF_3D,quantite_de_mouvement)
                                        /* Definition de la quantite de mouvement 'P' de la particule ("linear momentum"). En        */
                                        /* mecanique relativiste, on a pour une particule de masse au repos non nulle et donc de     */
                                        /* vitesse 'v' inferieure a la vitesse de la lumiere :                                       */
                                        /*                                                                                           */
                                        /*                  m  > 0                                                                   */
                                        /*                   0                                                                       */
                                        /*                                                                                           */
                                        /*                  v < c                                                                    */
                                        /*                                                                                           */
                                        /*                 -->    -->                                                                */
                                        /*                  P = m. v                                                                 */
                                        /*                                                                                           */
                                        /* En ce qui concerne une particule de masse nulle et se deplacant a la vitesse de la        */
                                        /* lumiere (photon par exemple), on definira la quantite de mouvement par la relation :      */
                                        /*                                                                                           */
                                        /*                  m  = 0                                                                   */
                                        /*                   0                                                                       */
                                        /*                                                                                           */
                                        /*                  v = c                                                                    */
                                        /*                                                                                           */
                                        /*                 -->           -->                                                         */
                                        /*                  P  = h_barre. k                                                          */
                                        /*                                                                                           */
                                        /*                 |-->|     2.pi                                                            */
                                        /*                 | k | = --------                                                          */
                                        /*                          lambda                                                           */
                                        /*                                                                                           */
                                        /*                 -->    -->                                                                */
                                        /*                  k  //  v                                                                 */
                                        /* avec :                                                                                    */
                                        /*                                                                                           */
                                        /*                              h                                                            */
                                        /*                  h_barre = ------                                                         */
                                        /*                             2.pi                                                          */
                                        /*                                                                                           */
                                        /*            -->                                                            -->             */
                                        /* Le vecteur  k  est le vecteur d'onde et est colineaire au vecteur vitesse  v  ; on peut   */
                                        /* donc ecrire :                                                                             */
                                        /*                                                                                           */
                                        /*                                  -->                                                      */
                                        /*                 -->     2.pi      v                                                       */
                                        /*                  k  = --------.-------                                                    */
                                        /*                        lambda   |-->|                                                     */
                                        /*                                 | v |                                                     */
                                        /*                                                                                           */
                                        /* d'ou :                                                                                    */
                                        /*                                                                                           */
                                        /*                                  -->                                                      */
                                        /*                 -->      h        v                                                       */
                                        /*                  P  = --------.-------                                                    */
                                        /*                        lambda   |-->|                                                     */
                                        /*                                 | v |                                                     */
                                        /*                                                                                           */
                                        /* puisque :                                                                                 */
                                        /*                                                                                           */
                                        /*                  h = 2.pi.h_barre                                                         */
                                        /*                                                                                           */
                                        /*                                                                                           */
                                        /* A noter la correspondance :                                                               */
                                        /*                                                                                           */
                                        /*                   1 Mev           -22       -1                                            */
                                        /*                  ------ = 5.344.10    Kg.m.s                                              */
                                        /*                    c                                                                      */
                                        /*                                                                                           */
                                        /* Cette quantite est conservee lors d'un evenement (collision,...).                         */

         ,DEFV(deltaF_3D,moment_cinetique)
                                        /* Definition du moment cinetique (ou "angulaire") de la particule ("angular momentum").     */
                                        /* Cette quantite est conservee lors d'un evenement (collision,...) et est definie par :     */
                                        /*                                                                                           */
                                        /*                 -->   -->    -->                                                          */
                                        /*                  L  =  r  /\  P                                                           */
                                        /*                                                                                           */
                                        /* ou 'r' designe le rayon vecteur de la particule par rapport a une origine 'O'.            */

         ,DEFV(deltaF_3D,moment_magnetique)
                                        /* Definition du moment magnetique 'M' par :                                                 */
                                        /*                                                                                           */
                                        /*                 -->    charge   -->                                                       */
                                        /*                  M  = ---------. L                                                        */
                                        /*                        2.masse                                                            */
                                        /*                                                                                           */

         ,DEFV(Float,energie)
                                        /* Definition de l'energie de la particule 'E'. Pour une particule 'REELLE', l'energie est   */
                                        /* definie par la relation d'Einstein (voir la relativite restreinte), dans un referentiel   */
                                        /* d'inertie, soit :                                                                         */
                                        /*                                                                                           */
                                        /*                   2    2  2    2   4                                                      */
                                        /*                  E  = P .c  + m  .c                                                       */
                                        /*                                0                                                          */
                                        /*                                                                                           */
                                        /* (en electron-volts), cette quantite etant conservee lors d'un evenement (collision,...).  */
                                        /* Pour une particule de masse au repos nulle, on a donc :                                   */
                                        /*                                                                                           */
                                        /*                       -->         h                                                       */
                                        /*                  E = | P |.c = --------.c = h.frequence                                   */
                                        /*                                 lambda                                                    */
                                        /*                                                                                           */
                                        /* puisque :                                                                                 */
                                        /*                                                                                           */
                                        /*                                            v                                              */
                                        /*                  lambda = v.periode = -----------                                         */
                                        /*                                        frequence                                          */
                                        /*                                                                                           */
                                        /* 'v' representant la vitesse.                                                              */
                                        /*                                                                                           */
                                        /* La relation d'incertitude d'Heisenberg autorisant pour un 'dt' fini une incertitude 'dE'  */
                                        /* sur l'energie telle que :                                                                 */
                                        /*                                                                                           */
                                        /*                           h_barre                                                         */
                                        /*                  dE.dt ~ ---------                                                        */
                                        /*                              2                                                            */
                                        /*                                                                                           */
                                        /* la definition precedente de 'E' peut etre violee pour une particule a l'existence breve   */
                                        /* dite particule 'VIRTUELLE". Pour une particule 'REELLE' :                                 */
                                        /*                                                                                           */
                                        /*                  dt = infini   ==>   dE = 0                                               */
                                        /*                                                                                           */

         ,NOM_VIDE
          );
Typedef(proprietes_energiques,STRU(_proprietes_energiques))
                                        /* Definition d'une particule dans le domaine de l'energie.                                  */

#define   MASSE_AU_REPOS(particule)                                                                                                     \
                    ASD1(PROPRIETES_ENERGETIQUES(particule),masse_au_repos)
#define   MASSE_RELATIVISTE(particule)                                                                                                  \
                    ASD1(PROPRIETES_ENERGETIQUES(particule),masse_relativiste)

#define   PORTEE_DE_L_INTERACTION(particule)                                                                                            \
                    ASD1(PROPRIETES_ENERGETIQUES(particule),portee_de_l_interaction)

#define   LONGUEUR_D_ONDE(particule)                                                                                                    \
                    ASD1(PROPRIETES_ENERGETIQUES(particule),longueur_d_onde)

#define   QUANTITE_DE_MOUVEMENT(particule)                                                                                              \
                    ASD1(PROPRIETES_ENERGETIQUES(particule),quantite_de_mouvement)
#define   QUANTITE_DE_MOUVEMENT_X(particule)                                                                                            \
                    ASD1(QUANTITE_DE_MOUVEMENT(particule),dx)
#define   QUANTITE_DE_MOUVEMENT_Y(particule)                                                                                            \
                    ASD1(QUANTITE_DE_MOUVEMENT(particule),dy)
#define   QUANTITE_DE_MOUVEMENT_Z(particule)                                                                                            \
                    ASD1(QUANTITE_DE_MOUVEMENT(particule),dz)

#define   MOMENT_CINETIQUE(particule)                                                                                                   \
                    ASD1(PROPRIETES_ENERGETIQUES(particule),moment_cinetique)
#define   MOMENT_CINETIQUE_X(particule)                                                                                                 \
                    ASD1(MOMENT_CINETIQUE(particule),dx)
#define   MOMENT_CINETIQUE_Y(particule)                                                                                                 \
                    ASD1(MOMENT_CINETIQUE(particule),dy)
#define   MOMENT_CINETIQUE_Z(particule)                                                                                                 \
                    ASD1(MOMENT_CINETIQUE(particule),dz)

#define   MOMENT_MAGNETIQUE(particule)                                                                                                  \
                    ASD1(PROPRIETES_ENERGETIQUES(particule),moment_magnetique)
#define   MOMENT_MAGNETIQUE_X(particule)                                                                                                \
                    ASD1(MOMENT_MAGNETIQUE(particule),dx)
#define   MOMENT_MAGNETIQUE_Y(particule)                                                                                                \
                    ASD1(MOMENT_MAGNETIQUE(particule),dy)
#define   MOMENT_MAGNETIQUE_Z(particule)                                                                                                \
                    ASD1(MOMENT_MAGNETIQUE(particule),dz)

#define   ENERGIE(particule)                                                                                                            \
                    ASD1(PROPRIETES_ENERGETIQUES(particule),energie)

                                        /* Procedures d'acces aux proprietes energetiques d'une particule.                           */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        M A S S E   A U   R E P O S   D E S   D I F F E R E N T E S   P A R T I C U L E S  :                                       */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   MASSE_UNDEF                                                                                                                   \
                    FLOT__UNDEF                                                                                                         \
                                        /* Masse inconnue...                                                                         */
#define   MASSE_NULLE                                                                                                                   \
                    FZERO                                                                                                               \
                                        /* Masse nulle...                                                                            */
#define   MASSE_INFINIE                                                                                                                 \
                    F_INFINI                                                                                                            \
                                        /* Masse infinie...                                                                          */

#define   eV                                                                                                                            \
                    UN
#define   KeV                                                                                                                           \
                    MILLE
#define   MeV                                                                                                                           \
                    MILLION
#define   GeV                                                                                                                           \
                    MILLIARD
#define   CONVERSION_ev_EN_kg(nombre_d_electrons_volts,puissance_de_10)                                                                 \
                    MUL3(1.783e-36,EXP2(VITESSE_DE_LA_LUMIERE),MUL2(nombre_d_electrons_volts,puissance_de_10))
                                        /* Procedures de conversion d'electrons-volts en kilogrammes.                                */

#define   MASSE_QUARK_u                                                                                                                 \
                    CONVERSION_ev_EN_kg(330.0,MeV)
#define   MASSE_QUARK_d                                                                                                                 \
                    CONVERSION_ev_EN_kg(333.0,MeV)
#define   MASSE_QUARK_c                                                                                                                 \
                    CONVERSION_ev_EN_kg(486.0,MeV)
#define   MASSE_QUARK_s                                                                                                                 \
                    CONVERSION_ev_EN_kg(1650.0,MeV)
#define   MASSE_QUARK_t                                                                                                                 \
                    CONVERSION_ev_EN_kg(4500.0,MeV)
#define   MASSE_QUARK_b                                                                                                                 \
                    CONVERSION_ev_EN_kg(70000.0,MeV)
#define   MASSE_LEPTON_electron                                                                                                         \
                    CONVERSION_ev_EN_kg(0.5,MeV)
#define   MASSE_LEPTON_NEUTRINO_electron                                                                                                \
                    MASSE_NULLE
#define   MASSE_LEPTON_muon                                                                                                             \
                    CONVERSION_ev_EN_kg(106.0,MeV)
#define   MASSE_LEPTON_NEUTRINO_muon                                                                                                    \
                    MASSE_NULLE
#define   MASSE_LEPTON_tau                                                                                                              \
                    CONVERSION_ev_EN_kg(1.9,GeV)
#define   MASSE_LEPTON_NEUTRINO_tau                                                                                                     \
                    MASSE_NULLE
#define   MASSE_PHOTON                                                                                                                  \
                    MASSE_NULLE
#define   MASSE_Wm                                                                                                                      \
                    CONVERSION_ev_EN_kg(100.0,GeV)
#define   MASSE_Z0                                                                                                                      \
                    CONVERSION_ev_EN_kg(100.0,GeV)
#define   MASSE_GLUON                                                                                                                   \
                    MASSE_NULLE
#define   MASSE_Y                                                                                                                       \
                    CONVERSION_ev_EN_kg(1.0e+15,GeV)
#define   MASSE_X                                                                                                                       \
                    CONVERSION_ev_EN_kg(1.0e+15,GeV)
#define   MASSE_GRAVITON                                                                                                                \
                    MASSE_NULLE
#define   MASSE_HIGGS                                                                                                                   \
                    MASSE_UNDEF

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D E F I N I T I O N   D E S   N O M B R E S   Q U A N T I Q U E S   D ' U N E   P A R T I C U L E  :                       */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   GAUCHE                                                                                                                        \
                    UN
#define   DROITE                                                                                                                        \
                    NEGA(GAUCHE)
                                        /* Definition des deux valeurs possibles de l'helicite 'h' d'une particule. On notera les    */
                                        /* valeurs de 'DROITE' et 'GAUCHE' qui peuvent sembler non naturelles. Ce choix se justifie  */
                                        /* en examinant par exemple la particule 'LEPTON_electron' pour laquelle on fixe comme       */
                                        /* valeur de charge faible 'cfm1s2'. Comme cette particule est une 'PARTICULE' seul son      */
                                        /* etat d'helicite 'GAUCHE' a une charge faible, est justement -1/2 ; la constante           */
                                        /* multiplicative 'GAUCHE' ne peut donc valoir que +1.                                       */

#define   INVERSE_DE_L_UNITE_DE_SPIN                                                                                                    \
                    DEUX                                                                                                                \
                                        /* Constante permettant de passer du spin 's' au spin 'J' d'une particule par division...    */
#define   INVERSE_DE_L_UNITE_D_ISOSPIN                                                                                                  \
                    DEUX                                                                                                                \
                                        /* Inverse de l'unite d'isospin...                                                           */

#define   PAIRE                                                                                                                         \
                    UN
#define   IMPAIRE                                                                                                                       \
                    NEGA(PAIRE)
                                        /* Definition des deux valeurs possibles de la parite 'P' d'une particule.                   */

Dstruct13(_nombres_quantiques
         ,DEFV(Int,helicite)
                                        /* Definition de l'helicite 'h' d'une particule ; elle fixe l'orientation du moment          */
                                        /* angulaire de spin par rapport a la direction de mouvement. Elle peut prendre deux         */
                                        /* valeurs distinctes :                                                                      */
                                        /*                                                                                           */
                                        /*                  DROITE                                                                   */
                                        /*                  GAUCHE                                                                   */
                                        /*                                                                                           */
                                        /* la premiere correspondant a un spin dans le sens du mouvement, la rotation ayant lieu     */
                                        /* suivant la regle du tire-bouchon...                                                       */
                                        /*                                                                                           */
                                        /* L'helicite d'une particule peut changer au cours de sa "vie", sauf en ce qui concerne     */
                                        /* les particules de masse nulle car, en effet, il est impossible de les amener au repos...  */
         ,DEFV(Int,spin_s)
         ,DEFV(Float,spin_J)
                                        /* Definition du spin 's' d'une particule. C'est grace a 's' que pourra se faire la          */
                                        /* difference entre les bosons (vecteurs des interactions, leur 's' est pair) et les         */
                                        /* fermions (sources des champs d'interaction, leur 's' est impair). Le nombre quantique     */
                                        /* 's' multiplie par "h-barre sur 2" donne le module du moment cinetique intrinseque. On     */
                                        /* pose :                                                                                    */
                                        /*                                                                                           */
                                        /*                        s                                                                  */
                                        /*                  J  = ---                                                                 */
                                        /*                        2                                                                  */
                                        /*                                                                                           */
                                        /* Les bosons ont alors un 'J' entier, et les fermions, un 'J' demi-entier.                  */
         ,DEFV(Float,isospin_T)
                                        /* Definition de l'isospin 'T' d'une particule. Le nombre 'T' est lie au nombre 'n' d'etats  */
                                        /* de charge d'un multiplet par la formule :                                                 */
                                        /*                                                                                           */
                                        /*                  2.T + 1 = n                                                              */
                                        /*                                                                                           */
                                        /* Par exemple, pour le doublet {proton,neutron}, on a :                                     */
                                        /*                                                                                           */
                                        /*                  n = 2                                                                    */
                                        /*                                                                                           */
                                        /*                       1                                                                   */
                                        /*                  T = ---                                                                  */
                                        /*                       2                                                                   */
                                        /*                                                                                           */
                                        /* Les multiplets ont en commun {B,J,P,S}. L'isospin 'T' se conserve lors de l'interaction   */
                                        /* forte.                                                                                    */
         ,DEFV(Int,nombre_leptonique_l)
                                        /* Definition du nombre leptonique 'l' d'une particule ; seuls les leptons ont un nombre     */
                                        /* leptonique 'l' non nul, alors que pour les hadrons, il est nul. C'est la la difference    */
                                        /* importante entre les leptons (insensibles a l'interaction forte) et les hadrons (qui eux  */
                                        /* sont sensibles a l'interaction forte).                                                    */
                                        /*                                                                                           */
                                        /* Il est sujet a 'ANTI_MATIERE(...)'.                                                       */
         ,DEFV(Float,nombre_baryonique_B)
                                        /* Definition du nombre baryonique 'B' d'une particule ; seuls les baryons ont un nombre     */
                                        /* baryonique 'l' non nul, alors que pour les mesons, il est nul.                            */
                                        /*                                                                                           */
                                        /* Il est sujet a 'ANTI_MATIERE(...)'.                                                       */
         ,DEFV(Int,parite_P)
                                        /* Definition de la parite 'P' {-,+} d'une particule. Elle est dite "paire" ou "positive"    */
                                        /* si la fonction d'onde ne change pas lors du "renversement" des coordonnees, et est dite   */
                                        /* "impaire" ou "negative" dans le cas contraire. Il y a conservation de la parite lors      */
                                        /* des interactions electro-magnetique et forte, alors qu'elle est parfois violee lors de    */
                                        /* l'interaction faible. L'operateur parite 'P' a l'effet suivant sur la fonction d'onde     */
                                        /* d'une particule :                                                                         */
                                        /*                                                                                           */
                                        /*                  P(psi(...)) = p.psi(...)                                                 */
                                        /*                                                                                           */
                                        /* ou 'p' represente les valeurs propres de P ; elles valent '+1' ou -1'. Rappelons que      */
                                        /* si 'f' est une fonction paire, alors :                                                    */
                                        /*                                                                                           */
                                        /*                  f(-x) = f(x)                                                             */
                                        /*                                                                                           */
                                        /* alors que si elle est impaire, alors :                                                    */
                                        /*                                                                                           */
                                        /*                  f(-x) = -f(x)                                                            */
                                        /*                                                                                           */
                                        /* Elle est sujet a 'ANTI_MATIERE(...)'.                                                     */
         ,DEFV(Int,etrangete_S)
                                        /* Definition de l'etrangete 'S' d'une particule. Il y a conservation de l'etrangete lors    */
                                        /* des interactions electro-magnetique et forte, contrairement a l'interaction faible.       */
                                        /*                                                                                           */
                                        /* Elle est sujet a 'ANTI_MATIERE(...)'.                                                     */
         ,DEFV(Int,charme_c)
                                        /* Definition du charme 'c' d'une particule.                                                 */
                                        /*                                                                                           */
                                        /* Il est sujet a 'ANTI_MATIERE(...)'.                                                       */
         ,DEFV(Int,beaute_b)
                                        /* Definition de la beaute 'b' d'une particule.                                              */
                                        /*                                                                                           */
                                        /* Elle est sujet a 'ANTI_MATIERE(...)'.                                                     */
         ,DEFV(Int,verite_t)
                                        /* Definition de la verite 't' (ou "truth") d'une particule.                                 */
                                        /*                                                                                           */
                                        /* Elle est sujet a 'ANTI_MATIERE(...)'.                                                     */
         ,DEFV(Int,hypercharge_Y)
                                        /* Definition de l'hypercharge 'Y' d'une particule, qui est en fait la somme :               */
                                        /*                                                                                           */
                                        /*                  Y = B + S                                                                */
                                        /*                                                                                           */

         ,DEFV(Int,particule_ou_antiparticule)
                                        /* Definition de la distinction entre une particule (+1) et une anti-particule (-1). Ce      */
                                        /* nombre est en fait un facteur multiplicatif a appliquer aux caracteristiques suivantes :  */
                                        /*                                                                                           */
                                        /*                  charge electrique,                                                       */
                                        /*                  charge de couleur (R-V,V-B,B-R),                                         */
                                        /*                  nombre leptonique 'l',                                                   */
                                        /*                  nombre baryonique 'B',                                                   */
                                        /*                  parite 'P',                                                              */
                                        /*                  etrangete 'S',                                                           */
                                        /*                  charme 'c',                                                              */
                                        /*                  beaute 'b',                                                              */
                                        /*                  verite 't'.                                                              */
                                        /*                                                                                           */
                                        /* On notera que la masse 'm', le spin 's', l'isospin 'T' ainsi que la duree de vie, eux,    */
                                        /* restent inchanges, et sont donc identiques pour une particule et son anti-particule.      */

         ,NOM_VIDE
          );
Typedef(nombres_quantiques,STRU(_nombres_quantiques))
                                        /* Definition des charges d'une particule.                                                   */

#define   HELICITE(particule)                                                                                                           \
                    ASD1(NOMBRES_QUANTIQUES(particule),helicite)
#define   SPINs(particule)                                                                                                              \
                    ASD1(NOMBRES_QUANTIQUES(particule),spin_s)
#define   SPIN(particule)                                                                                                               \
                    ASD1(NOMBRES_QUANTIQUES(particule),spin_J)                                                                          \
                                        /* ATTENTION, le spin "utile" (soit 'J', car demi-entier) est appele 'SPIN(...)' et non      */ \
                                        /* pas 'SPINJ(...)' (par analogie avec 'SPINs(...)') afin d'eviter des confusions lors de    */ \
                                        /* l'usage qui en sera fait, puisque c'est celui-ci qui sera reellement utilise...           */
#define   ISOSPIN(particule)                                                                                                            \
                    ASD1(NOMBRES_QUANTIQUES(particule),isospin_T)

#define   aNOMBRE_LEPTONIQUE(particule)                                                                                                 \
                    ASD1(NOMBRES_QUANTIQUES(particule),nombre_leptonique_l)
#define   NOMBRE_LEPTONIQUE(particule)                                                                                                  \
                    ANTI_MATIERE(particule,aNOMBRE_LEPTONIQUE(particule))
#define   aNOMBRE_BARYONIQUE(particule)                                                                                                 \
                    ASD1(NOMBRES_QUANTIQUES(particule),nombre_baryonique_B)
#define   NOMBRE_BARYONIQUE(particule)                                                                                                  \
                    ANTI_MATIERE(particule,aNOMBRE_BARYONIQUE(particule))

#define   aPARITE(particule)                                                                                                            \
                    ASD1(NOMBRES_QUANTIQUES(particule),parite_P)
#define   PARITE(particule)                                                                                                             \
                    ANTI_MATIERE(particule,aPARITE(particule))

#define   aETRANGETE(particule)                                                                                                         \
                    ASD1(NOMBRES_QUANTIQUES(particule),etrangete_S)
#define   ETRANGETE(particule)                                                                                                          \
                    ANTI_MATIERE(particule,aETRANGETE(particule))
#define   aCHARME(particule)                                                                                                            \
                    ASD1(NOMBRES_QUANTIQUES(particule),charme_c)
#define   CHARME(particule)                                                                                                             \
                    ANTI_MATIERE(particule,aCHARME(particule))
#define   aBEAUTE(particule)                                                                                                            \
                    ASD1(NOMBRES_QUANTIQUES(particule),beaute_b)
#define   BEAUTE(particule)                                                                                                             \
                    ANTI_MATIERE(particule,aBEAUTE(particule))
#define   aVERITE(particule)                                                                                                            \
                    ASD1(NOMBRES_QUANTIQUES(particule),verite_t)
#define   VERITE(particule)                                                                                                             \
                    ANTI_MATIERE(particule,aVERITE(particule))

#define   HYPERCHARGE(particule)                                                                                                        \
                    ASD1(NOMBRES_QUANTIQUES(particule),hypercharge_Y)

                                        /* Procedures d'acces aux nombres quantiques d'une particule.                                */

#define   PARTICULE                                                                                                                     \
                    NEUT(FU)
#define   ANTIPARTICULE                                                                                                                 \
                    NEGA(FU)
#define   PARTICULE_ET_ANTIPARTICULE                                                                                                    \
                    PARTICULE
                                        /* Distinction entre une particule et une anti-particule. On notera le cas ou une particule  */
                                        /* est sa propre anti-particule ('PARTICULE_ET_ANTIPARTICULE').                              */

#define   PARTICULE_OU_ANTIPARTICULE(particule)                                                                                         \
                    ASD1(NOMBRES_QUANTIQUES(particule),particule_ou_antiparticule)
#define   ANTI_MATIERE(particule,quantite)                                                                                              \
                    MUL2(PARTICULE_OU_ANTIPARTICULE(particule),quantite)
                                        /* ATTENTION, l'acces aux differentes informations relatives a une particule se fait en      */
                                        /* par des fonction du type :                                                                */
                                        /*                                                                                           */
                                        /*                  FONCTION(particule)                                                      */
                                        /*                                                                                           */
                                        /* sauf pour les informations sujettes a la notion d'anti-matiere, pour lesquelles ces       */
                                        /* fonctions existent en deux exemplaires :                                                  */
                                        /*                                                                                           */
                                        /*                  aFONCTION(particule)                                                     */
                                        /*                  FONCTION(particule)                                                      */
                                        /*                                                                                           */
                                        /* la premiere etant une fonction generale d'acces, alors que la seconde modifie la valeur   */
                                        /* correspondante suivant qu'il s'agit ou pas d'anti-matiere...                              */
                                        /*                                                                                           */
                                        /* ATTENTION, afin de limiter les erreurs possibles de choix entre 'aFONCTION(...)' et       */
                                        /* 'FONCTION(...)', les fonctions 'FONCTION(...)' relatives aux proprietes insensibles a     */
                                        /* la notion d'anti-matiere ne sont pas elles-aussi dedoublees. Ainsi, on fera plus          */
                                        /* attention lors de l'acces aux donnees sujettes a la notion presente d'anti-matiere...     */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        S P I N   ' s '   E N T I E R   D E S   D I F F E R E N T E S   P A R T I C U L E S  :                                     */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   SPINs_UNDEF                                                                                                                   \
                    UNDEF                                                                                                               \
                                        /* Definition du spin 's' indefini...                                                        */
#define   SPINJ_UNDEF                                                                                                                   \
                    UNDEF                                                                                                               \
                                        /* Definition du spin 'J' indefini...                                                        */

#define   SPINs_QUARK_u                                                                                                                 \
                    UN
#define   SPINs_QUARK_d                                                                                                                 \
                    UN
#define   SPINs_QUARK_c                                                                                                                 \
                    UN
#define   SPINs_QUARK_s                                                                                                                 \
                    UN
#define   SPINs_QUARK_t                                                                                                                 \
                    UN
#define   SPINs_QUARK_b                                                                                                                 \
                    UN
#define   SPINs_LEPTON_electron                                                                                                         \
                    UN
#define   SPINs_LEPTON_NEUTRINO_electron                                                                                                \
                    UN
#define   SPINs_LEPTON_muon                                                                                                             \
                    UN
#define   SPINs_LEPTON_NEUTRINO_muon                                                                                                    \
                    UN
#define   SPINs_LEPTON_tau                                                                                                              \
                    UN
#define   SPINs_LEPTON_NEUTRINO_tau                                                                                                     \
                    UN
#define   SPINs_PHOTON                                                                                                                  \
                    DEUX
#define   SPINs_Wm                                                                                                                      \
                    DEUX
#define   SPINs_Z0                                                                                                                      \
                    DEUX
#define   SPINs_GLUON                                                                                                                   \
                    DEUX
#define   SPINs_Y                                                                                                                       \
                    SPINs_UNDEF
#define   SPINs_X                                                                                                                       \
                    SPINs_UNDEF
#define   SPINs_GRAVITON                                                                                                                \
                    QUATRE
#define   SPINs_HIGGS                                                                                                                   \
                    SPINs_UNDEF

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        I S O S P I N   ' T '   D E S   D I F F E R E N T E S   P A R T I C U L E S  :                                             */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   PAS_D_ISOSPIN                                                                                                                 \
                    ZERO                                                                                                                \
                                        /* Definition du cas ou il n'y a pas d'isospin (cas en particulier des particules qui ne     */ \
                                        /* sont pas des hadrons).                                                                    */

#define   ISOSPIN_QUARK_u                                                                                                               \
                    NEUT(INVE(INVERSE_DE_L_UNITE_D_ISOSPIN))
#define   ISOSPIN_QUARK_d                                                                                                               \
                    NEGA(INVE(INVERSE_DE_L_UNITE_D_ISOSPIN))
#define   ISOSPIN_QUARK_c                                                                                                               \
                    PAS_D_ISOSPIN
#define   ISOSPIN_QUARK_s                                                                                                               \
                    PAS_D_ISOSPIN
#define   ISOSPIN_QUARK_t                                                                                                               \
                    PAS_D_ISOSPIN
#define   ISOSPIN_QUARK_b                                                                                                               \
                    PAS_D_ISOSPIN
#define   ISOSPIN_LEPTON_electron                                                                                                       \
                    PAS_D_ISOSPIN
#define   ISOSPIN_LEPTON_NEUTRINO_electron                                                                                              \
                    PAS_D_ISOSPIN
#define   ISOSPIN_LEPTON_muon                                                                                                           \
                    PAS_D_ISOSPIN
#define   ISOSPIN_LEPTON_NEUTRINO_muon                                                                                                  \
                    PAS_D_ISOSPIN
#define   ISOSPIN_LEPTON_tau                                                                                                            \
                    PAS_D_ISOSPIN
#define   ISOSPIN_LEPTON_NEUTRINO_tau                                                                                                   \
                    PAS_D_ISOSPIN
#define   ISOSPIN_PHOTON                                                                                                                \
                    PAS_D_ISOSPIN
#define   ISOSPIN_Wm                                                                                                                    \
                    PAS_D_ISOSPIN
#define   ISOSPIN_Z0                                                                                                                    \
                    PAS_D_ISOSPIN
#define   ISOSPIN_GLUON                                                                                                                 \
                    PAS_D_ISOSPIN
#define   ISOSPIN_Y                                                                                                                     \
                    PAS_D_ISOSPIN
#define   ISOSPIN_X                                                                                                                     \
                    PAS_D_ISOSPIN
#define   ISOSPIN_GRAVITON                                                                                                              \
                    PAS_D_ISOSPIN
#define   ISOSPIN_HIGGS                                                                                                                 \
                    PAS_D_ISOSPIN

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        N O M B R E   L E P T O N I Q U E   D E S   D I F F E R E N T E S   P A R T I C U L E S  :                                 */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   PAS_DE_NOMBRE_LEPTONIQUE                                                                                                      \
                    ZERO
#define   NOMBRE_LEPTONIQUE_DES_LEPTONS                                                                                                 \
                    NEUT(UN)
                                        /* Definition de quelques nombres leptoniques...                                             */

#define   NOMBRE_LEPTONIQUE_QUARK_u                                                                                                     \
                    PAS_DE_NOMBRE_LEPTONIQUE
#define   NOMBRE_LEPTONIQUE_QUARK_d                                                                                                     \
                    PAS_DE_NOMBRE_LEPTONIQUE
#define   NOMBRE_LEPTONIQUE_QUARK_c                                                                                                     \
                    PAS_DE_NOMBRE_LEPTONIQUE
#define   NOMBRE_LEPTONIQUE_QUARK_s                                                                                                     \
                    PAS_DE_NOMBRE_LEPTONIQUE
#define   NOMBRE_LEPTONIQUE_QUARK_t                                                                                                     \
                    PAS_DE_NOMBRE_LEPTONIQUE
#define   NOMBRE_LEPTONIQUE_QUARK_b                                                                                                     \
                    PAS_DE_NOMBRE_LEPTONIQUE
#define   NOMBRE_LEPTONIQUE_LEPTON_electron                                                                                             \
                    NOMBRE_LEPTONIQUE_DES_LEPTONS
#define   NOMBRE_LEPTONIQUE_LEPTON_NEUTRINO_electron                                                                                    \
                    PAS_DE_NOMBRE_LEPTONIQUE
#define   NOMBRE_LEPTONIQUE_LEPTON_muon                                                                                                 \
                    NOMBRE_LEPTONIQUE_DES_LEPTONS
#define   NOMBRE_LEPTONIQUE_LEPTON_NEUTRINO_muon                                                                                        \
                    PAS_DE_NOMBRE_LEPTONIQUE
#define   NOMBRE_LEPTONIQUE_LEPTON_tau                                                                                                  \
                    NOMBRE_LEPTONIQUE_DES_LEPTONS
#define   NOMBRE_LEPTONIQUE_LEPTON_NEUTRINO_tau                                                                                         \
                    PAS_DE_NOMBRE_LEPTONIQUE
#define   NOMBRE_LEPTONIQUE_PHOTON                                                                                                      \
                    PAS_DE_NOMBRE_LEPTONIQUE
#define   NOMBRE_LEPTONIQUE_Wm                                                                                                          \
                    PAS_DE_NOMBRE_LEPTONIQUE
#define   NOMBRE_LEPTONIQUE_Z0                                                                                                          \
                    PAS_DE_NOMBRE_LEPTONIQUE
#define   NOMBRE_LEPTONIQUE_GLUON                                                                                                       \
                    PAS_DE_NOMBRE_LEPTONIQUE
#define   NOMBRE_LEPTONIQUE_Y                                                                                                           \
                    PAS_DE_NOMBRE_LEPTONIQUE
#define   NOMBRE_LEPTONIQUE_X                                                                                                           \
                    PAS_DE_NOMBRE_LEPTONIQUE
#define   NOMBRE_LEPTONIQUE_GRAVITON                                                                                                    \
                    PAS_DE_NOMBRE_LEPTONIQUE
#define   NOMBRE_LEPTONIQUE_HIGGS                                                                                                       \
                    PAS_DE_NOMBRE_LEPTONIQUE

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        N O M B R E   B A R Y O N I Q U E   D E S   D I F F E R E N T E S   P A R T I C U L E S  :                                 */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   NOMBRE_DE_QUARKS_DANS_UN_BARYON                                                                                               \
                    TROIS                                                                                                               \
                                        /* Nombre de quarks dans un baryon...                                                        */

#define   PAS_DE_NOMBRE_BARYONIQUE                                                                                                      \
                    ZERO
#define   NOMBRE_BARYONIQUE_DES_QUARKS                                                                                                  \
                    NEUT(GRO1(INVE(NOMBRE_DE_QUARKS_DANS_UN_BARYON)))
                                        /* Definition de quelques nombres baryoniques...                                             */

#define   NOMBRE_BARYONIQUE_QUARK_u                                                                                                     \
                    NOMBRE_BARYONIQUE_DES_QUARKS
#define   NOMBRE_BARYONIQUE_QUARK_d                                                                                                     \
                    NOMBRE_BARYONIQUE_DES_QUARKS
#define   NOMBRE_BARYONIQUE_QUARK_c                                                                                                     \
                    NOMBRE_BARYONIQUE_DES_QUARKS
#define   NOMBRE_BARYONIQUE_QUARK_s                                                                                                     \
                    NOMBRE_BARYONIQUE_DES_QUARKS
#define   NOMBRE_BARYONIQUE_QUARK_t                                                                                                     \
                    NOMBRE_BARYONIQUE_DES_QUARKS
#define   NOMBRE_BARYONIQUE_QUARK_b                                                                                                     \
                    NOMBRE_BARYONIQUE_DES_QUARKS
#define   NOMBRE_BARYONIQUE_LEPTON_electron                                                                                             \
                    PAS_DE_NOMBRE_BARYONIQUE
#define   NOMBRE_BARYONIQUE_LEPTON_NEUTRINO_electron                                                                                    \
                    PAS_DE_NOMBRE_BARYONIQUE
#define   NOMBRE_BARYONIQUE_LEPTON_muon                                                                                                 \
                    PAS_DE_NOMBRE_BARYONIQUE
#define   NOMBRE_BARYONIQUE_LEPTON_NEUTRINO_muon                                                                                        \
                    PAS_DE_NOMBRE_BARYONIQUE
#define   NOMBRE_BARYONIQUE_LEPTON_tau                                                                                                  \
                    PAS_DE_NOMBRE_BARYONIQUE
#define   NOMBRE_BARYONIQUE_LEPTON_NEUTRINO_tau                                                                                         \
                    PAS_DE_NOMBRE_BARYONIQUE
#define   NOMBRE_BARYONIQUE_PHOTON                                                                                                      \
                    PAS_DE_NOMBRE_BARYONIQUE
#define   NOMBRE_BARYONIQUE_Wm                                                                                                          \
                    PAS_DE_NOMBRE_BARYONIQUE
#define   NOMBRE_BARYONIQUE_Z0                                                                                                          \
                    PAS_DE_NOMBRE_BARYONIQUE
#define   NOMBRE_BARYONIQUE_GLUON                                                                                                       \
                    PAS_DE_NOMBRE_BARYONIQUE
#define   NOMBRE_BARYONIQUE_Y                                                                                                           \
                    PAS_DE_NOMBRE_BARYONIQUE
#define   NOMBRE_BARYONIQUE_X                                                                                                           \
                    PAS_DE_NOMBRE_BARYONIQUE
#define   NOMBRE_BARYONIQUE_GRAVITON                                                                                                    \
                    PAS_DE_NOMBRE_BARYONIQUE
#define   NOMBRE_BARYONIQUE_HIGGS                                                                                                       \
                    PAS_DE_NOMBRE_BARYONIQUE

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        E T R A N G E T E   D E S   D I F F E R E N T E S   P A R T I C U L E S  :                                                 */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   PAS_D_ETRANGETE                                                                                                               \
                    ZERO
#define   ETRANGE                                                                                                                       \
                    NEGA(UN)
                                        /* Definition des deux valeurs possibles de l'etrangete 'S'.                                 */

#define   ETRANGETE_QUARK_u                                                                                                             \
                    PAS_D_ETRANGETE
#define   ETRANGETE_QUARK_d                                                                                                             \
                    PAS_D_ETRANGETE
#define   ETRANGETE_QUARK_c                                                                                                             \
                    PAS_D_ETRANGETE
#define   ETRANGETE_QUARK_s                                                                                                             \
                    ETRANGE
#define   ETRANGETE_QUARK_t                                                                                                             \
                    PAS_D_ETRANGETE
#define   ETRANGETE_QUARK_b                                                                                                             \
                    PAS_D_ETRANGETE
#define   ETRANGETE_LEPTON_electron                                                                                                     \
                    PAS_D_ETRANGETE
#define   ETRANGETE_LEPTON_NEUTRINO_electron                                                                                            \
                    PAS_D_ETRANGETE
#define   ETRANGETE_LEPTON_muon                                                                                                         \
                    PAS_D_ETRANGETE
#define   ETRANGETE_LEPTON_NEUTRINO_muon                                                                                                \
                    PAS_D_ETRANGETE
#define   ETRANGETE_LEPTON_tau                                                                                                          \
                    PAS_D_ETRANGETE
#define   ETRANGETE_LEPTON_NEUTRINO_tau                                                                                                 \
                    PAS_D_ETRANGETE
#define   ETRANGETE_PHOTON                                                                                                              \
                    PAS_D_ETRANGETE
#define   ETRANGETE_Wm                                                                                                                  \
                    PAS_D_ETRANGETE
#define   ETRANGETE_Z0                                                                                                                  \
                    PAS_D_ETRANGETE
#define   ETRANGETE_GLUON                                                                                                               \
                    PAS_D_ETRANGETE
#define   ETRANGETE_Y                                                                                                                   \
                    PAS_D_ETRANGETE
#define   ETRANGETE_X                                                                                                                   \
                    PAS_D_ETRANGETE
#define   ETRANGETE_GRAVITON                                                                                                            \
                    PAS_D_ETRANGETE
#define   ETRANGETE_HIGGS                                                                                                               \
                    PAS_D_ETRANGETE

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C H A R M E   D E S   D I F F E R E N T E S   P A R T I C U L E S  :                                                       */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   PAS_DE_CHARME                                                                                                                 \
                    ZERO
#define   CHARMEE                                                                                                                       \
                    NEUT(UN)
                                        /* Definition des deux valeurs possibles du charme 'c'.                                      */

#define   CHARME_QUARK_u                                                                                                                \
                    PAS_DE_CHARME
#define   CHARME_QUARK_d                                                                                                                \
                    PAS_DE_CHARME
#define   CHARME_QUARK_c                                                                                                                \
                    CHARMEE
#define   CHARME_QUARK_s                                                                                                                \
                    PAS_DE_CHARME
#define   CHARME_QUARK_t                                                                                                                \
                    PAS_DE_CHARME
#define   CHARME_QUARK_b                                                                                                                \
                    PAS_DE_CHARME
#define   CHARME_LEPTON_electron                                                                                                        \
                    PAS_DE_CHARME
#define   CHARME_LEPTON_NEUTRINO_electron                                                                                               \
                    PAS_DE_CHARME
#define   CHARME_LEPTON_muon                                                                                                            \
                    PAS_DE_CHARME
#define   CHARME_LEPTON_NEUTRINO_muon                                                                                                   \
                    PAS_DE_CHARME
#define   CHARME_LEPTON_tau                                                                                                             \
                    PAS_DE_CHARME
#define   CHARME_LEPTON_NEUTRINO_tau                                                                                                    \
                    PAS_DE_CHARME
#define   CHARME_PHOTON                                                                                                                 \
                    PAS_DE_CHARME
#define   CHARME_Wm                                                                                                                     \
                    PAS_DE_CHARME
#define   CHARME_Z0                                                                                                                     \
                    PAS_DE_CHARME
#define   CHARME_GLUON                                                                                                                  \
                    PAS_DE_CHARME
#define   CHARME_Y                                                                                                                      \
                    PAS_DE_CHARME
#define   CHARME_X                                                                                                                      \
                    PAS_DE_CHARME
#define   CHARME_GRAVITON                                                                                                               \
                    PAS_DE_CHARME
#define   CHARME_HIGGS                                                                                                                  \
                    PAS_DE_CHARME

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        B E A U T E   D E S   D I F F E R E N T E S   P A R T I C U L E S  :                                                       */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   PAS_DE_BEAUTE                                                                                                                 \
                    ZERO
#define   BELLE                                                                                                                         \
                    NEUT(UN)
                                        /* Definition des deux valeurs possibles de la beaute 'b'.                                   */

#define   BEAUTE_QUARK_u                                                                                                                \
                    PAS_DE_BEAUTE
#define   BEAUTE_QUARK_d                                                                                                                \
                    PAS_DE_BEAUTE
#define   BEAUTE_QUARK_c                                                                                                                \
                    PAS_DE_BEAUTE
#define   BEAUTE_QUARK_s                                                                                                                \
                    PAS_DE_BEAUTE
#define   BEAUTE_QUARK_t                                                                                                                \
                    PAS_DE_BEAUTE
#define   BEAUTE_QUARK_b                                                                                                                \
                    BELLE
#define   BEAUTE_LEPTON_electron                                                                                                        \
                    PAS_DE_BEAUTE
#define   BEAUTE_LEPTON_NEUTRINO_electron                                                                                               \
                    PAS_DE_BEAUTE
#define   BEAUTE_LEPTON_muon                                                                                                            \
                    PAS_DE_BEAUTE
#define   BEAUTE_LEPTON_NEUTRINO_muon                                                                                                   \
                    PAS_DE_BEAUTE
#define   BEAUTE_LEPTON_tau                                                                                                             \
                    PAS_DE_BEAUTE
#define   BEAUTE_LEPTON_NEUTRINO_tau                                                                                                    \
                    PAS_DE_BEAUTE
#define   BEAUTE_PHOTON                                                                                                                 \
                    PAS_DE_BEAUTE
#define   BEAUTE_Wm                                                                                                                     \
                    PAS_DE_BEAUTE
#define   BEAUTE_Z0                                                                                                                     \
                    PAS_DE_BEAUTE
#define   BEAUTE_GLUON                                                                                                                  \
                    PAS_DE_BEAUTE
#define   BEAUTE_Y                                                                                                                      \
                    PAS_DE_BEAUTE
#define   BEAUTE_X                                                                                                                      \
                    PAS_DE_BEAUTE
#define   BEAUTE_GRAVITON                                                                                                               \
                    PAS_DE_BEAUTE
#define   BEAUTE_HIGGS                                                                                                                  \
                    PAS_DE_BEAUTE

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        V E R I T E   D E S   D I F F E R E N T E S   P A R T I C U L E S  :                                                       */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   PAS_DE_VERITE                                                                                                                 \
                    ZERO
#define   VRAIE                                                                                                                         \
                    NEUT(UN)
                                        /* Definition des deux valeurs possibles de la verite 't'.                                   */

#define   VERITE_QUARK_u                                                                                                                \
                    PAS_DE_VERITE
#define   VERITE_QUARK_d                                                                                                                \
                    PAS_DE_VERITE
#define   VERITE_QUARK_c                                                                                                                \
                    PAS_DE_VERITE
#define   VERITE_QUARK_s                                                                                                                \
                    PAS_DE_VERITE
#define   VERITE_QUARK_t                                                                                                                \
                    VRAIE
#define   VERITE_QUARK_b                                                                                                                \
                    PAS_DE_VERITE
#define   VERITE_LEPTON_electron                                                                                                        \
                    PAS_DE_VERITE
#define   VERITE_LEPTON_NEUTRINO_electron                                                                                               \
                    PAS_DE_VERITE
#define   VERITE_LEPTON_muon                                                                                                            \
                    PAS_DE_VERITE
#define   VERITE_LEPTON_NEUTRINO_muon                                                                                                   \
                    PAS_DE_VERITE
#define   VERITE_LEPTON_tau                                                                                                             \
                    PAS_DE_VERITE
#define   VERITE_LEPTON_NEUTRINO_tau                                                                                                    \
                    PAS_DE_VERITE
#define   VERITE_PHOTON                                                                                                                 \
                    PAS_DE_VERITE
#define   VERITE_Wm                                                                                                                     \
                    PAS_DE_VERITE
#define   VERITE_Z0                                                                                                                     \
                    PAS_DE_VERITE
#define   VERITE_GLUON                                                                                                                  \
                    PAS_DE_VERITE
#define   VERITE_Y                                                                                                                      \
                    PAS_DE_VERITE
#define   VERITE_X                                                                                                                      \
                    PAS_DE_VERITE
#define   VERITE_GRAVITON                                                                                                               \
                    PAS_DE_VERITE
#define   VERITE_HIGGS                                                                                                                  \
                    PAS_DE_VERITE

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D E F I N I T I O N   D E   L A   C H A R G E   E L E C T R I Q U E  :                                                     */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   INVERSE_DE_L_UNITE_DE_CHARGE_ELECTRIQUE                                                                                       \
                    TROIS                                                                                                               \
                                        /* Inverse de l'unite de charge electrique...                                                */

#define   CHARGE_ELECTRIQUE_UNDEF                                                                                                       \
                    FLOT__UNDEF                                                                                                         \
                                        /* Charge electrique inconnue...                                                             */
#define   CHARGE_ELECTRIQUE_NEUTRE                                                                                                      \
                    FZERO                                                                                                               \
                                        /* Charge electrique d'une particule neutre.                                                 */

#define   CHARGE_ELECTRIQUE_1_SUR_3                                                                                                     \
                    NEUT(GRO1(INVE(INVERSE_DE_L_UNITE_DE_CHARGE_ELECTRIQUE)))
#define   CHARGE_ELECTRIQUE_2_SUR_3                                                                                                     \
                    NEUT(ADD2(CHARGE_ELECTRIQUE_1_SUR_3,CHARGE_ELECTRIQUE_1_SUR_3))
#define   CHARGE_ELECTRIQUE_3_SUR_3                                                                                                     \
                    NEUT(ADD3(CHARGE_ELECTRIQUE_1_SUR_3,CHARGE_ELECTRIQUE_1_SUR_3,CHARGE_ELECTRIQUE_1_SUR_3))
#define   CHARGE_ELECTRIQUE_4_SUR_3                                                                                                     \
                    NEUT(ADD4(CHARGE_ELECTRIQUE_1_SUR_3,CHARGE_ELECTRIQUE_1_SUR_3,CHARGE_ELECTRIQUE_1_SUR_3,CHARGE_ELECTRIQUE_1_SUR_3))
                                        /* Quelques charges electriques positives utiles. On notera qu'elles sont definies a l'aide  */
                                        /* des primitives 'ADDn(...)' et non pas de 'GROn(...)' afin de garantir un bon traitement   */
                                        /* de la conservation de la charge electrique qui se fera de toute evidence par addition     */
                                        /* de plusieurs charges electriques (et non pas a l'aide de multiplications...).             */

#define   cem4s3                                                                                                                        \
                    NEGA(CHARGE_ELECTRIQUE_4_SUR_3)
#define   cem1                                                                                                                          \
                    NEGA(CHARGE_ELECTRIQUE_3_SUR_3)
#define   cem1s3                                                                                                                        \
                    NEGA(CHARGE_ELECTRIQUE_1_SUR_3)
#define   ce0                                                                                                                           \
                    CHARGE_ELECTRIQUE_NEUTRE
#define   cep2s3                                                                                                                        \
                    NEUT(CHARGE_ELECTRIQUE_2_SUR_3)
                                        /* Quelques charges electriques utiles...                                                    */

Dstruct01(_charge_electrique
         ,DEFV(Float,electrique)
                                        /* Definition de la charge electrique d'une particule.                                       */
                                        /*                                                                                           */
                                        /* Elle est sujet a 'ANTI_MATIERE(...)'.                                                     */

         ,NOM_VIDE
          );
Typedef(charge_electrique,STRU(_charge_electrique))
                                        /* Definition de la charge electrique d'une particule (interaction electro-magnetique).      */

#define   aCHARGE_ELECTRIQUE(particule)                                                                                                 \
                    ASD1(CHARGES_CHARGE_ELECTRIQUE(particule),electrique)
#define   CHARGE_ELECTRIQUE(particule)                                                                                                  \
                    ANTI_MATIERE(particule,aCHARGE_ELECTRIQUE(particule))

                                        /* Procedures d'acces a la charge electrique d'une particule.                                */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C H A R G E   E L E C T R I Q U E   D E S   D I F F E R E N T E S   P A R T I C U L E S  :                                 */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   CHARGE_ELECTRIQUE_QUARK_u                                                                                                     \
                    cep2s3
#define   CHARGE_ELECTRIQUE_QUARK_d                                                                                                     \
                    cem1s3
#define   CHARGE_ELECTRIQUE_QUARK_c                                                                                                     \
                    cep2s3
#define   CHARGE_ELECTRIQUE_QUARK_s                                                                                                     \
                    cem1s3
#define   CHARGE_ELECTRIQUE_QUARK_t                                                                                                     \
                    cep2s3
#define   CHARGE_ELECTRIQUE_QUARK_b                                                                                                     \
                    cem1s3
#define   CHARGE_ELECTRIQUE_LEPTON_electron                                                                                             \
                    cem1
#define   CHARGE_ELECTRIQUE_LEPTON_NEUTRINO_electron                                                                                    \
                    ce0
#define   CHARGE_ELECTRIQUE_LEPTON_muon                                                                                                 \
                    cem1
#define   CHARGE_ELECTRIQUE_LEPTON_NEUTRINO_muon                                                                                        \
                    ce0
#define   CHARGE_ELECTRIQUE_LEPTON_tau                                                                                                  \
                    cem1
#define   CHARGE_ELECTRIQUE_LEPTON_NEUTRINO_tau                                                                                         \
                    ce0
#define   CHARGE_ELECTRIQUE_PHOTON                                                                                                      \
                    ce0
#define   CHARGE_ELECTRIQUE_Wm                                                                                                          \
                    cem1
#define   CHARGE_ELECTRIQUE_Z0                                                                                                          \
                    ce0
#define   CHARGE_ELECTRIQUE_GLUON                                                                                                       \
                    ce0
#define   CHARGE_ELECTRIQUE_Y                                                                                                           \
                    cem1s3
#define   CHARGE_ELECTRIQUE_X                                                                                                           \
                    cem4s3
#define   CHARGE_ELECTRIQUE_GRAVITON                                                                                                    \
                    ce0
#define   CHARGE_ELECTRIQUE_HIGGS                                                                                                       \
                    CHARGE_ELECTRIQUE_UNDEF

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D E F I N I T I O N   D E   L A   C H A R G E   F A I B L E  :                                                             */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   INVERSE_DE_L_UNITE_DE_CHARGE_FAIBLE                                                                                           \
                    DEUX                                                                                                                \
                                        /* Inverse de l'unite de charge faible...                                                    */

#define   CHARGE_FAIBLE_UNDEF                                                                                                           \
                    FLOT__UNDEF                                                                                                         \
                                        /* Charge faible inconnue...                                                                 */

#define   CHARGE_FAIBLE_NEUTRE                                                                                                          \
                    FZERO
#define   CHARGE_FAIBLE_1_SUR_2                                                                                                         \
                    NEUT(GRO1(INVE(INVERSE_DE_L_UNITE_DE_CHARGE_FAIBLE)))
#define   CHARGE_FAIBLE_2_SUR_2                                                                                                         \
                    NEUT(ADD2(CHARGE_FAIBLE_1_SUR_2,CHARGE_FAIBLE_1_SUR_2))
                                        /* Quelques charges faibles positives utiles.                                                */

#define   cfm2s2                                                                                                                        \
                    NEGA(CHARGE_FAIBLE_2_SUR_2)
#define   cfm1s2                                                                                                                        \
                    NEGA(CHARGE_FAIBLE_1_SUR_2)
#define   cf0                                                                                                                           \
                    CHARGE_FAIBLE_NEUTRE
#define   cfp1s2                                                                                                                        \
                    NEUT(CHARGE_FAIBLE_1_SUR_2)
#define   cfp2s2                                                                                                                        \
                    NEUT(CHARGE_FAIBLE_2_SUR_2)
                                        /* Quelques charges faibles utiles...                                                        */

Dstruct01(_charge_faible
         ,DEFV(Float,faible)
                                        /* Definition de la charge faible d'une particule. Avec elle, on definit la charge U(1)      */
                                        /* telle que :                                                                               */
                                        /*                                                                                           */
                                        /*                  charge electrique = charge faible + charge U(1)                          */
                                        /*                                                                                           */
                                        /* Seules les particules a helicite GAUCHE et les antiparticules a helicite DROITE ont une   */
                                        /* charge faible. Elles sont alors associees deux a deux en des doublets dont un membre      */
                                        /* peut se transformer en l'autre a l'aide des particules 'W+' et 'W-'. Ainsi, par exemple,  */
                                        /* on a les doublets :                                                                       */
                                        /*                                                                                           */
                                        /*                  {neutrino GAUCHE,electron GAUCHE}                                        */
                                        /*                  {quark u GAUCHE,quark d GAUCHE}                                          */
                                        /*                  {anti-electron DROITE,anti-netrinon DROITE}                              */
                                        /*                  {anti-quark d DROITE,anti-quark u DROITE}                                */
                                        /*                                                                                           */
                                        /* La charge U(1) a la meme valeur pour les deux elements d'un doublet, et est egale a la    */
                                        /* valeur moyenne des charges electriques de ces deux elements.                              */
                                        /*                                                                                           */
                                        /* Les particules a helicite DROITE et les antiparticules a helicite GAUCHE ont une charge   */
                                        /* faible nulle et se retrouvent alors dans des singulets (a un seul membre) de charge U(1)  */
                                        /* egale a la charge electrique de ce seul element...                                        */
                                        /*                                                                                           */
                                        /* Elle est sujet a 'ANTI_MATIERE(...)' mais en prenant en plus l'helicite 'HELICITE(...)'   */
                                        /* en compte (voir a ce propos la procedure '_iPARTICULE(...)'.                              */

         ,NOM_VIDE
          );
Typedef(charge_faible,STRU(_charge_faible))
                                        /* Definition de la charge faible d'une particule (interaction faible).                      */
                                        /*                                                                                           */
                                        /* ATTENTION, la charge faible ne se conserve pas car, en effet :                            */
                                        /*                                                                                           */
                                        /* 1-seules les particules a helicite GAUCHE et les antiparticules a helicite DROITE         */
                                        /* portent une charge faible,                                                                */
                                        /* 2-une particule (ou une antiparticule) peut changer d'helicite au cours de sa "vie"       */
                                        /* par modification de son sens de deplacement (sauf en ce qui concerne celles de masse      */
                                        /* nulle...).                                                                                */
                                        /*                                                                                           */
                                        /* Donc en changeant d'helicite une particule (ou une antiparticule) change simultanement    */
                                        /* sa charge faible...                                                                       */

#define   CHARGE_FAIBLE(particule)                                                                                                      \
                    ASD1(CHARGES_CHARGE_FAIBLE(particule),faible)
#define   CHARGE_U_DE_1(particule)                                                                                                      \
                    SOUS(CHARGE_ELECTRIQUE(particule),CHARGE_FAIBLE(particule))

                                        /* Procedures d'acces a la charge faible d'une particule.                                    */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C H A R G E   F A I B L E   D E S   D I F F E R E N T E S   P A R T I C U L E S  :                                         */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Nota important :                                                                                                           */
/*                                                                                                                                   */
/*                    Rappelons que seules les particules a                                                                          */
/*                  helicite GAUCHE et les antiparticules a                                                                          */
/*                  helicite DROITE portent une charge faible.                                                                       */
/*                  La liste suivante donne doncla charge faible                                                                     */
/*                  des particules connues lorsqu'elles ont une                                                                      */
/*                  helicite GAUCHE, sachant que dans le cas de                                                                      */
/*                  l'helicite DROITE elle sera nulle, et que pour                                                                   */
/*                  l'antiparticule associee, il faut inverser                                                                       */
/*                  tout cela...                                                                                                     */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   CHARGE_FAIBLE_QUARK_u                                                                                                         \
                    cfp1s2
#define   CHARGE_FAIBLE_QUARK_d                                                                                                         \
                    cfm1s2
#define   CHARGE_FAIBLE_QUARK_c                                                                                                         \
                    cfp1s2
#define   CHARGE_FAIBLE_QUARK_s                                                                                                         \
                    cfm1s2
#define   CHARGE_FAIBLE_QUARK_t                                                                                                         \
                    cfp1s2
#define   CHARGE_FAIBLE_QUARK_b                                                                                                         \
                    cfm1s2
#define   CHARGE_FAIBLE_LEPTON_electron                                                                                                 \
                    cfm1s2
#define   CHARGE_FAIBLE_LEPTON_NEUTRINO_electron                                                                                        \
                    cfp1s2
#define   CHARGE_FAIBLE_LEPTON_muon                                                                                                     \
                    cfm1s2
#define   CHARGE_FAIBLE_LEPTON_NEUTRINO_muon                                                                                            \
                    cfp1s2
#define   CHARGE_FAIBLE_LEPTON_tau                                                                                                      \
                    cfm1s2
#define   CHARGE_FAIBLE_LEPTON_NEUTRINO_tau                                                                                             \
                    cfp1s2
#define   CHARGE_FAIBLE_PHOTON                                                                                                          \
                    CHARGE_FAIBLE_UNDEF
#define   CHARGE_FAIBLE_Wm                                                                                                              \
                    cfm2s2
#define   CHARGE_FAIBLE_Z0                                                                                                              \
                    CHARGE_FAIBLE_UNDEF
#define   CHARGE_FAIBLE_GLUON                                                                                                           \
                    CHARGE_FAIBLE_UNDEF
#define   CHARGE_FAIBLE_Y                                                                                                               \
                    cfp1s2
#define   CHARGE_FAIBLE_X                                                                                                               \
                    cfm1s2
#define   CHARGE_FAIBLE_GRAVITON                                                                                                        \
                    CHARGE_FAIBLE_UNDEF
#define   CHARGE_FAIBLE_HIGGS                                                                                                           \
                    CHARGE_FAIBLE_UNDEF

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D E F I N I T I O N   D E   L A   C H A R G E   D E   C O U L E U R  :                                                     */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   INVERSE_DE_L_UNITE_DE_CHARGE_DE_COULEUR                                                                                       \
                    DEUX                                                                                                                \
                                        /* Inverse de l'unite de charge de couleur...                                                */

#define   CHARGE_DE_COULEUR_NEUTRE                                                                                                      \
                    FZERO
#define   CHARGE_DE_COULEUR_1_SUR_2                                                                                                     \
                    NEUT(GRO1(INVE(INVERSE_DE_L_UNITE_DE_CHARGE_DE_COULEUR)))
#define   CHARGE_DE_COULEUR_2_SUR_2                                                                                                     \
                    NEUT(ADD2(CHARGE_DE_COULEUR_1_SUR_2,CHARGE_DE_COULEUR_1_SUR_2))
                                        /* Quelques charges electriques positives utiles. On notera qu'elles sont definies a l'aide  */
                                        /* quelques charges de couleur positives utiles. On notera qu'elles sont definies a l'aide   */
                                        /* des primitives 'ADDn(...)' et non pas de 'GROn(...)' afin de garantir un bon traitement   */
                                        /* de la conservation de la charge de couleur qui se fera de toute evidence par addition     */
                                        /* de plusieurs charges de couleur (et non pas a l'aide de multiplications...).              */

#define   ccm1                                                                                                                          \
                    NEGA(CHARGE_DE_COULEUR_2_SUR_2)
#define   ccm1s2                                                                                                                        \
                    NEGA(CHARGE_DE_COULEUR_1_SUR_2)
#define   cc0                                                                                                                           \
                    CHARGE_DE_COULEUR_NEUTRE
#define   ccp1s2                                                                                                                        \
                    NEUT(CHARGE_DE_COULEUR_1_SUR_2)
#define   ccp1                                                                                                                          \
                    NEUT(CHARGE_DE_COULEUR_2_SUR_2)
                                        /* Quelques charges de couleur utiles...                                                     */

Dstruct03(_charges_de_couleur
         ,DEFV(Float,couleur_R_V)
         ,DEFV(Float,couleur_V_B)
         ,DEFV(Float,couleur_B_R)
                                        /* Definition de la charge de couleur d'une particule. Contrairement a la charge electrique, */
                                        /* il s'agit d'un nombre quantique soumis au principe d'exclusion de Pauli. La somme de ces  */
                                        /* trois charges doit toujours etre nulle. On a les deux tableaux suivants :                 */
                                        /*                                                                                           */
                                        /*                            |         |         |                                          */
                                        /*                            |   R-V   |   V-B   |   B-R                                    */
                                        /*                            |         |         |                                          */
                                        /*                                                                                           */
                                        /*   1-quarks :               |         |         |                                          */
                                        /*                  __________|_________|_________|_________                                 */
                                        /*                            |         |         |                                          */
                                        /*                  ROUGE     |  + 1/2  |    0    |  - 1/2                                   */
                                        /*                  __________|_________|_________|_________                                 */
                                        /*                            |         |         |                                          */
                                        /*                  VERTE     |  - 1/2  |  + 1/2  |    0                                     */
                                        /*                  __________|_________|_________|_________                                 */
                                        /*                            |         |         |                                          */
                                        /*                  BLEUE     |    0    |  - 1/2  |  + 1/2                                   */
                                        /*                  __________|_________|_________|_________                                 */
                                        /*                            |         |         |                                          */
                                        /*                                                                                           */
                                        /*                                                                                           */
                                        /*   2-gluons :               |         |         |                                          */
                                        /*                  __________|_________|_________|_________                                 */
                                        /*                            |         |         |                                          */
                                        /*                  G1        |    0    |    0    |    0                                     */
                                        /*                  ..........|.........|.........|.........                                 */
                                        /*                            |         |         |                                          */
                                        /*                  G2        |    0    |    0    |    0                                     */
                                        /*                  __________|_________|_________|_________                                 */
                                        /*                            |         |         |                                          */
                                        /*                  G(R-->V)  |   + 1   |  - 1/2  |  - 1/2                                   */
                                        /*                  ..........|.........|.........|.........                                 */
                                        /*                            |         |         |                                          */
                                        /*                  G(V-->R)  |   - 1   |  + 1/2  |  + 1/2                                   */
                                        /*                  __________|_________|_________|_________                                 */
                                        /*                            |         |         |                                          */
                                        /*                  G(V-->B)  |  - 1/2  |   + 1   |  - 1/2                                   */
                                        /*                  ..........|.........|.........|.........                                 */
                                        /*                            |         |         |                                          */
                                        /*                  G(B-->V)  |  + 1/2  |   - 1   |  + 1/2                                   */
                                        /*                  __________|_________|_________|_________                                 */
                                        /*                            |         |         |                                          */
                                        /*                  G(R-->B)  |  + 1/2  |  + 1/2  |   - 1                                    */
                                        /*                  ..........|.........|.........|.........                                 */
                                        /*                            |         |         |                                          */
                                        /*                  G(B-->R)  |  - 1/2  |  - 1/2  |   + 1                                    */
                                        /*                            |         |         |                                          */
                                        /*                                                                                           */
                                        /* ('G1' et 'G2' ne changeant pas la couleur...).                                            */
                                        /*                                                                                           */
                                        /*                                                                                           */
                                        /* Symetrie des charges de couleur dans SU(3) :                                              */
                                        /*                                                                                           */
                                        /*                                                                                           */
                                        /*                                   \          -----          /                             */
                                        /*                                V-B \         BLEUE         /                              */
                                        /*                                     \          *          /                               */
                                        /*                                      \      .     .      /                                */
                                        /*                                       \  .        -1/2  /                                 */
                                        /*                                   +1/2 *---------------* .                                */
                                        /*                                   .   / \             / \   .                             */
                                        /*                          VERTE *     /   \           /   \     * ROUGE                    */
                                        /*                                     /     \         /     \                               */
                                        /*                                .   /       \       /       \   .                          */
                                        /*                                   /         \     /         \                             */
                                        /*                                . /           \   /           \ .                          */
                                        /*                                 /             \ /             \ +1/2      R-V             */
                                        /*                  --------------*---------------O---------------*--------------            */
                                        /*                           -1/2 .\             / \             /.                          */
                                        /*                                  \           /   \           /                            */
                                        /*                                .  \         /     \         /  .                          */
                                        /*                          -----     \       /       \       /     -----                    */
                                        /*                          ROUGE *    \     /         \     /    * VERTE                    */
                                        /*                                   .  \   /           \   /  .                             */
                                        /*                                      .\ /             \ /.                                */
                                        /*                                        *---------------* -1/2                             */
                                        /*                                       / +1/2         .  \                                 */
                                        /*                                      /      .     .      \                                */
                                        /*                                     /          *          \                               */
                                        /*                                    / B-R     BLEUE         \                              */
                                        /*                                   /                         \                             */
                                        /*                                                                                           */
                                        /*                                                                                           */
                                        /* On notera que cet hexagone peut etre vu comme la projection d'un cube dont les 8 sommets  */
                                        /* se repartissent en quatre familles a quatre etages distincts correspondant aux quatre     */
                                        /* charges quantifiees {0,1/3,2/3,1} ; soit :                                                */
                                        /*                                                                                           */
                                        /*                                 |                                       |                 */
                                        /*        etage 0 : charge=0       |    neutrino                           |    (1 sommet)   */
                                        /*                                 |                                       |                 */
                                        /*    ------------------------------------------------------------------------------------   */
                                        /*                                 |                -  ----- ----- -----   |                 */
                                        /*        etage 1 : charge=+1/3    |    anti-quarks d (ROUGE,VERTE,BLEUE)  |    (3 sommets)  */
                                        /*                                 |                                       |                 */
                                        /*    ------------------------------------------------------------------------------------   */
                                        /*                                 |                                       |                 */
                                        /*        etage 2 : charge=+2/3    |    quarks u (ROUGE,VERTE,BLEUE)       |    (3 sommets)  */
                                        /*                                 |                                       |                 */
                                        /*    ------------------------------------------------------------------------------------   */
                                        /*                                 |                  -                    |                 */
                                        /*        etage 3 : charge=+1      |    anti-electron e                    |    (1 sommet)   */
                                        /*                                 |                                       |                 */
                                        /*                                                                                           */
                                        /* (la projection des sommets 'neutrino' et 'anti-electron' collapsant au point 'O').        */
                                        /*                                                                                           */
                                        /*                                                                                           */
                                        /* On pourrait alors faire le meme schema pour les deux autres familles fondamentales, ce    */
                                        /* qui donnerait pour les trois familles :                                                   */
                                        /*                                                                                           */
                                        /*                                                                                           */
                                        /*                                 |                             |                           */
                                        /*        neutrino electronique    |    neutrino muonique        |    neutrino tauique       */
                                        /*                                 |                             |                           */
                                        /*    ------------------------------------------------------------------------------------   */
                                        /*                       -         |                   -         |                   -       */
                                        /*        anti-quarks    d         |    anti-quarks    s         |    anti-quarks    b       */
                                        /*                                 |                             |                           */
                                        /*    ------------------------------------------------------------------------------------   */
                                        /*                                 |                             |                           */
                                        /*        quarks         u         |    quarks         c         |    quarks         t       */
                                        /*                                 |                             |                           */
                                        /*    ------------------------------------------------------------------------------------   */
                                        /*                       -         |                   -         |                   -       */
                                        /*        anti-electron  e         |    anti-muon      M         |    anti-tau       T       */
                                        /*                                 |                             |                           */
                                        /*                                                                                           */
                                        /*                                                                                           */
                                        /* Elles sont sujet a 'ANTI_MATIERE(...)'.                                                   */

         ,NOM_VIDE
          );
Typedef(charges_de_couleur,STRU(_charges_de_couleur))
                                        /* Definition de la charge de couleur d'une particule (interaction forte).                   */

#define   aCHARGE_DE_COULEUR_R_V(particule)                                                                                             \
                    ASD1(CHARGES_CHARGES_DE_COULEUR(particule),couleur_R_V)
#define   CHARGE_DE_COULEUR_R_V(particule)                                                                                              \
                    ANTI_MATIERE(particule,aCHARGE_DE_COULEUR_R_V(particule))

#define   aCHARGE_DE_COULEUR_V_B(particule)                                                                                             \
                    ASD1(CHARGES_CHARGES_DE_COULEUR(particule),couleur_V_B)
#define   CHARGE_DE_COULEUR_V_B(particule)                                                                                              \
                    ANTI_MATIERE(particule,aCHARGE_DE_COULEUR_V_B(particule))

#define   aCHARGE_DE_COULEUR_B_R(particule)                                                                                             \
                    ASD1(CHARGES_CHARGES_DE_COULEUR(particule),couleur_B_R)
#define   CHARGE_DE_COULEUR_B_R(particule)                                                                                              \
                    ANTI_MATIERE(particule,aCHARGE_DE_COULEUR_B_R(particule))

                                        /* Procedures d'acces a la charge de couleur d'une particule.                                */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D E F I N I T I O N   D E S   C H A R G E S   D ' U N E   P A R T I C U L E  :                                             */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
Dstruct03(_charges
         ,DEFV(charge_electrique,electrique)
                                        /* Definition de la charge electrique d'une particule (interaction electro-magnetique).      */

         ,DEFV(charge_faible,faible)
                                        /* Definition de la charge faible d'une particule (interaction faible).                      */

         ,DEFV(charges_de_couleur,couleur_et_anti_couleur)
                                        /* Definition de la charge de couleur d'une particule (interaction forte).                   */

         ,NOM_VIDE
          );
Typedef(charges,STRU(_charges))
                                        /* Definition des charges d'une particule.                                                   */

#define   CHARGES_CHARGE_ELECTRIQUE(particule)                                                                                          \
                    ASD1(CHARGES(particule),electrique)
#define   CHARGES_CHARGE_FAIBLE(particule)                                                                                              \
                    ASD1(CHARGES(particule),faible)
#define   CHARGES_CHARGES_DE_COULEUR(particule)                                                                                         \
                    ASD1(CHARGES(particule),couleur_et_anti_couleur)

                                        /* Procedures d'acces a la charge de couleur d'une particule.                                */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        P O R T E E   D E S   Q U A T R E   I N T E R A C T I O N S   F O N D A M E N T A L E S  :                                 */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   PAS_DE_PORTEE_POUR_LES_FERMIONS                                                                                               \
                    FZERO                                                                                                               \
                                        /* La portee n'a de sens que pour les bosons.                                                */

#define   PORTEE_DE_HIGGS                                                                                                               \
                    FLOT__UNDEF
#define   PORTEE_DE_X_ET_Y                                                                                                              \
                    DIAMETRE_D_UN_HADRON

#define   PORTEE_DE_L_INTERACTION_FORTE                                                                                                 \
                    DIAMETRE_D_UN_HADRON
#define   PORTEE_DE_L_INTERACTION_ELECTROMAGNETIQUE                                                                                     \
                    F_INFINI
#define   PORTEE_DE_L_INTERACTION_FAIBLE                                                                                                \
                    DIAMETRE_D_UN_HADRON
#define   PORTEE_DE_L_INTERACTION_GRAVITATIONNELLE                                                                                      \
                    F_INFINI
                                        /* Portee des quatre interactions fondamentales classees par intensite decroissante...       */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D E F I N I T I O N   D E S   " T Y P E S "   D ' U N E   P A R T I C U L E  :                                             */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
DenumeT03(STATUT_INDETERMINE
         ,REELLE
         ,VIRTUELLE
         ,realite_des_particules
          )
                                        /* Distinction entre les particules 'REELLE's et 'VIRTUELLE's (voir a ce propos la           */
                                        /* definition du descripteur 'proprietes_energiques').                                       */

DenumeT03(STATISTIQUE_INDETERMINEE
         ,BOSON
         ,FERMION
         ,role_des_particules
          )
                                        /* Distinction entre les 'BOSON's et les 'FERMION's.                                         */
#define   STATISTIQUE(particule)                                                                                                        \
                    COND(EST_PAIR(SPINs(particule))                                                                                     \
                        ,BOSON                                                                                                          \
                        ,COND(EST_IMPAIR(SPINs(particule))                                                                              \
                             ,FERMION                                                                                                   \
                             ,STATISTIQUE_INDETERMINEE                                                                                  \
                              )                                                                                                         \
                         )                                                                                                              \
                                        /* Determination de la statistique a laquelle est soumise 'particule'.                       */

DenumeT22(PARTICULE_INEXISTANTE
         ,PARTICULE_NAISSANTE
                                        /* Types "non physiques" destines a la gestion des particules.                               */
         ,QUARK_u
         ,QUARK_d
         ,QUARK_c
         ,QUARK_s
         ,QUARK_t
         ,QUARK_b
                                        /* Quarks.                                                                                   */
         ,LEPTON_electron
         ,LEPTON_NEUTRINO_electron
         ,LEPTON_muon
         ,LEPTON_NEUTRINO_muon
         ,LEPTON_tau
         ,LEPTON_NEUTRINO_tau
                                        /* Leptons.                                                                                  */

         ,PHOTON
                                        /* Boson de l'interaction electro-magnetique.                                                */
         ,Wm
         ,Z0
                                        /* Bosons de l'interaction faible ; il est possible de considerer qu'en fait ils sont au     */
                                        /* nombre de trois : {W-,Z0,W+} (le 'Wm' etant charge et existant en tant que particule que  */
                                        /* l'on choisit arbitrairement comme etant 'W-' -par analogie avec l'electron de meme charge */
                                        /* electrique algebrique- et comme antiparticule qui est donc 'W+').                         */
         ,GLUON
                                        /* Boson de l'interaction forte ; il est possible de considerer qu'ils sont au nombre de     */
                                        /* 8 distingues par la charge de couleur et la charge d'anti-couleur qu'ils portent          */
                                        /* simultanement...                                                                          */
         ,Y
         ,X
                                        /* Bosons intermediaires entre les leptons et les quarks issus du groupe SU(5). On considere */
                                        /* ici qu'il y en a deux appeles {Y,X} de charges electriques respectives -1/3 et -4/3.      */
                                        /* Elles portent chacune une charge de couleur, et existent sous forme de particule et       */
                                        /* d'antiparticule ; on peut alors considerer qu'elles forment une nouvelle famille          */
                                        /* constituee de :                                                                           */
                                        /*                                                                                           */
                                        /*        12 = 2x3x2 (2={Y,X}, 3={R,V,B}, 2={particule,antiparticule}) particules.           */
                                        /*                                                                                           */
         ,GRAVITON
                                        /* Boson de l'interaction gravitationnelle.                                                  */

         ,HIGGS
                                        /* Boson de Higgs destine a donner la masse des autres particules...                         */

         ,types_de_particules
          )
                                        /* Nom (ou "saveur") des differentes particules...                                           */

Dstruct03(_types
         ,DEFV(Int,nom)
                                        /* Nom de la particule.                                                                      */
         ,DEFV(Int,boson_ou_fermion)
                                        /* Boson ou fermion ? On notera que cette information est redondante avec le spin 's'.       */
                                        /*                                                                                           */
                                        /* Note sur la portee d'une interaction (vehiculee donc par un boson) : la relation          */
                                        /* d'incertitude d'Heisenberg autorisant pour un 'dt' fini une incertitude 'dE'sur           */
                                        /* 'energie telle que :                                                                      */
                                        /*                                                                                           */
                                        /*                           h_barre                                                         */
                                        /*                  dE.dt ~ ---------                                                        */
                                        /*                              2                                                            */
                                        /*                                                                                           */
                                        /* soit 'v' la vitesse du boson ; on a donc :                                                */
                                        /*                                                                                           */
                                        /*                  dx = v.dt                                                                */
                                        /*                                                                                           */
                                        /* d'ou :                                                                                    */
                                        /*                                                                                           */
                                        /*                      dx     h_barre                                                       */
                                        /*                  dE.---- ~ ---------                                                      */
                                        /*                      v         2                                                          */
                                        /*                                                                                           */
                                        /* Or pour l'emission d'un boson virtuel de masse au repos 'm0', il faut une violation       */
                                        /* de la conservation d'energie egale au produit de cette masse au repos par le carre de     */
                                        /* la vitesse de la lumiere, soit :                                                          */
                                        /*                                                                                           */
                                        /*                           2                                                               */
                                        /*                  dE = m .c                                                                */
                                        /*                        0                                                                  */
                                        /*                                                                                           */
                                        /* d'ou :                                                                                    */
                                        /*                                                                                           */
                                        /*                        1    v.h_barre                                                     */
                                        /*                  dx ~ ----.-----------                                                    */
                                        /*                        m          2                                                       */
                                        /*                         0      2.c                                                        */
                                        /*                                                                                           */
                                        /* ce qui montre que la portee de l'interaction vehiculee par le boson virtuel est           */
                                        /* inversement proportionnelle a la masse au repos de ce dernier. Dans le cas particulier    */
                                        /* de boson de masse nulle (photon en particulier), la portee sera infinie, sauf exception   */
                                        /* (cas de l'interaction forte par exemple).                                                 */
         ,DEFV(Int,reelle_ou_virtuelle)
                                        /* Reelle ou virtuelle ?                                                                     */

         ,NOM_VIDE
          );
Typedef(types,STRU(_types))
                                        /* Definition des differents "types" caracterisant une particule.                            */

#define   NOM(particule)                                                                                                                \
                    ASD1(TYPES(particule),nom)
#define   BOSON_OU_FERMION(particule)                                                                                                   \
                    ASD1(TYPES(particule),boson_ou_fermion)
#define   REELLE_OU_VIRTUELLE(particule)                                                                                                \
                    ASD1(TYPES(particule),reelle_ou_virtuelle)

                                        /* Procedures d'acces aux composantes de type d'une particule.                               */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D E F I N I T I O N   D U   V O I S I N A G E   D ' U N E   P A R T I C U L E  :                                           */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
Dstruct03(_voisinage
         ,DEFV(Logical,il_y_a_une_plus_proche_voisine)
                                        /* Indicateur d'existence d'une plus proche voisine.                                         */
         ,DEFV(Particule,POINTERs(voisine_la_plus_proche))
                                        /* Plus proche voisine, si elle existe...                                                    */
         ,DEFV(Float,distance_a_la_plus_proche_voisine)
                                        /* Et si elle existe distance separant alors ces deux particules...                          */

         ,NOM_VIDE
          );
Typedef(voisinage,STRU(_voisinage))
                                        /* Definition du voisinage d'une particule.                                                  */

#define   UNE_VOISINE_LA_PLUS_PROCHE(particule)                                                                                         \
                    ASD1(VOISINAGE(particule),il_y_a_une_plus_proche_voisine)
#define   VOISINE_LA_PLUS_PROCHE(particule)                                                                                             \
                    ASD1(VOISINAGE(particule),voisine_la_plus_proche)
#define   DISTANCE_A_LA_LA_PLUS_PROCHE_VOISINE(particule)                                                                               \
                    ASD1(VOISINAGE(particule),distance_a_la_plus_proche_voisine)

                                        /* Procedures d'acces aux composantes de gestion du voisinage d'une particule.               */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D E F I N I T I O N   D U   " C O L O R I A G E "   D ' U N E   P A R T I C U L E  :                                       */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
Dstruct03(_couleur
         ,DEFV(Float,ROUGE)
         ,DEFV(Float,VERTE)
         ,DEFV(Float,BLEUE)
                                        /* Definition de la couleur d'une particule.                                                 */

         ,NOM_VIDE
          );
Typedef(couleur,STRU(_couleur))
                                        /* Definition de la couleur d'une particule.                                                 */

#define   COULEUR_ROUGE(particule)                                                                                                      \
                    ASD1(COULEUR(particule),ROUGE)
#define   COULEUR_VERTE(particule)                                                                                                      \
                    ASD1(COULEUR(particule),VERTE)
#define   COULEUR_BLEUE(particule)                                                                                                      \
                    ASD1(COULEUR(particule),BLEUE)

                                        /* Procedures d'acces aux composantes de la couleur d'une particule.                         */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D E F I N I T I O N   D E   L A   V I S U A L I S A T I O N   D ' U N E   P A R T I C U L E  :                             */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
Dstruct03(_visualisation
         ,DEFV(Logical,visualiser)
                                        /* Indique s'il faut visualiser ('VRAI') ou pas ('FAUX') cette particule.                    */

         ,DEFV(Float,rayon)
                                        /* Rayon de la particule (en metre) ; ce parametre est en fait principalement destine a la   */
                                        /* visualisation...                                                                          */
         ,DEFV(couleur,Couleur)
                                        /* Couleur (au sens "coloriage" du terme) de la particule.                                   */

         ,NOM_VIDE
          );
Typedef(visualisation,STRU(_visualisation))
                                        /* Definition des informations necessaires a la visualisation des particules.                */

#define   VISUALISER(particule)                                                                                                         \
                    ASD1(VISUALISATION(particule),visualiser)
#define   RAYON(particule)                                                                                                              \
                    ASD1(VISUALISATION(particule),rayon)
#define   COULEUR(particule)                                                                                                            \
                    ASD1(VISUALISATION(particule),Couleur)

                                        /* Procedures d'acces aux composantes de visualisation d'une particule.                      */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D E F I N I T I O N   D E   L A   G E S T I O N   D ' U N E   P A R T I C U L E  :                                         */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
Dstruct04(_gestion
         ,DEFV(Positive,etiquette)
                                        /* Etiquette unique permettant de suivre au cours du temps une particule.                    */

         ,DEFV(liste,ensemble)
                                        /* Informations d'acces aux particules suivante et precedente dans la liste les contenant    */
                                        /* toutes...                                                                                 */

         ,DEFV(voisinage,Voisinage)
                                        /* Definition du voisinage d'une particule.                                                  */

         ,DEFV(visualisation,Visualisation)
                                        /* Definition des informations utiles a la visualisation d'une particule.                    */

         ,NOM_VIDE
          );
Typedef(gestion,STRU(_gestion))
                                        /* Definition des informations necessaires a la gestion des particules.                      */

#define   ETIQUETTE(particule)                                                                                                          \
                    ASD1(GESTION(particule),etiquette)

#define   ENSEMBLE(particule)                                                                                                           \
                    ASD1(GESTION(particule),ensemble)
#define   PRECEDENTE(particule)                                                                                                         \
                    PRECEDENT_DANS_UNE_LISTE(ASD1(GESTION(particule),ensemble))
#define   SUIVANTE(particule)                                                                                                           \
                    SUIVANT_DANS_UNE_LISTE(ASD1(GESTION(particule),ensemble))
#define   VALIDATION(particule)                                                                                                         \
                    VALIDATION_D_UN_ELEMENT_D_UNE_LISTE(ASD1(GESTION(particule),ensemble))

#define   VOISINAGE(particule)                                                                                                          \
                    ASD1(GESTION(particule),Voisinage)

#define   VISUALISATION(particule)                                                                                                      \
                    ASD1(GESTION(particule),Visualisation)

                                        /* Procedures d'acces aux composantes de gestion d'une particule. La procedure               */
                                        /* 'VALIDATION(...)' a ete introduite le 20031103121258...                                   */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D E F I N I T I O N   D ' U N E   P A R T I C U L E   Q U E L C O N Q U E   ( F I N )  :                                   */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
Dstruct06(__Particule
         ,DEFV(types,Types)
                                        /* Definition du type de particule.                                                          */
         ,DEFV(nombres_quantiques,Nombres_quantiques)
                                        /* Definition des nombres quantiques utiles.                                                 */
         ,DEFV(charges,Charges)
                                        /* Definition des differentes charges.                                                       */
         ,DEFV(propietes_d_espace_temps,Proprietes_d_espace_temps)
                                        /* Definition des differents parametres dans l'espace-temps.                                 */
         ,DEFV(proprietes_energiques,Proprietes_energiques)
                                        /* Definition des differents parametres energetiques.                                        */
         ,DEFV(gestion,Gestion)
                                        /* Definition des informations utiles a la gestion d'une particule.                          */

         ,NOM_VIDE
          );

#define   TYPES(particule)                                                                                                              \
                    ASI1(particule,Types)
#define   NOMBRES_QUANTIQUES(particule)                                                                                                 \
                    ASI1(particule,Nombres_quantiques)
#define   CHARGES(particule)                                                                                                            \
                    ASI1(particule,Charges)
#define   PROPRIETES_SPATIO_TEMPORELLES(particule)                                                                                      \
                    ASI1(particule,Proprietes_d_espace_temps)
#define   PROPRIETES_ENERGETIQUES(particule)                                                                                            \
                    ASI1(particule,Proprietes_energiques)
#define   GESTION(particule)                                                                                                            \
                    ASI1(particule,Gestion)

                                        /* Procedures d'acces aux composantes principales d'une particule.                           */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        V A L I D A T I O N   D E   L A   C H A R G E   F A I B L E  :                                                             */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   PEUT_AVOIR_UNE_CHARGE_FAIBLE(particule)                                                                                       \
                    IFOU(IFET(IFEQ(PARTICULE_OU_ANTIPARTICULE(particule),PARTICULE)                                                     \
                             ,IFEQ(HELICITE(particule),GAUCHE)                                                                          \
                              )                                                                                                         \
                        ,IFET(IFEQ(PARTICULE_OU_ANTIPARTICULE(particule),ANTIPARTICULE)                                                 \
                             ,IFEQ(HELICITE(particule),DROITE)                                                                          \
                              )                                                                                                         \
                         )                                                                                                              \
                                        /* Test pour savoir si la particule 'particule' peut avoir une charge faible...              */

#define   VALIDATION_DE_LA_CHARGE_FAIBLE(particule)                                                                                     \
                    Bblock                                                                                                              \
                    Test(IFNE(ABSO(CHARGE_FAIBLE(particule)),CHARGE_FAIBLE_UNDEF))                                                      \
                                        /* Cas ou la charge faible est connue...                                                     */ \
                         Bblock                                                                                                         \
                         Test(PEUT_AVOIR_UNE_CHARGE_FAIBLE(particule))                                                                  \
                                        /* Cas des 'doublets' pour l'interaction faible (c'est-a-dire pour lesquels une transition   */ \
                                        /* est possible), la charge faible doit etre demi-entiere...                                 */ \
                              Bblock                                                                                                    \
                              Test(IFET(IFNE(ABSO(CHARGE_FAIBLE(particule)),ABSO(CHARGE_FAIBLE_1_SUR_2))                                \
                                       ,IFNE(ABSO(CHARGE_FAIBLE(particule)),ABSO(CHARGE_FAIBLE_2_SUR_2))                                \
                                        )                                                                                               \
                                   )                                                                                                    \
                                   Bblock                                                                                               \
                                   PRINT_ERREUR("la charge faible particule GAUCHE ou anti-particule DROITE doit etre demi-entiere");   \
                                   CAL1(Prer1("etiquette particule = %d\n",ETIQUETTE(particule)));                                      \
                                   Eblock                                                                                               \
                              ATes                                                                                                      \
                                   Bblock                                                                                               \
                                   Eblock                                                                                               \
                              ETes                                                                                                      \
                              Eblock                                                                                                    \
                         ATes                                                                                                           \
                              Bblock                                                                                                    \
                                        /* Cas des 'singulets' pour l'interaction faible (c'est-a-dire pour lesquels aucune          */ \
                                        /* transition n'est possible), la charge faible doit etre nulle...                           */ \
                              Test(IFNE(CHARGE_FAIBLE(particule),CHARGE_FAIBLE_NEUTRE))                                                 \
                                   Bblock                                                                                               \
                                   PRINT_ERREUR("la charge faible particule DROITE ou anti-particule GAUCHE doit etre nulle");          \
                                   CAL1(Prer1("etiquette particule = %d\n",ETIQUETTE(particule)));                                      \
                                   Eblock                                                                                               \
                              ATes                                                                                                      \
                                   Bblock                                                                                               \
                                   Eblock                                                                                               \
                              ETes                                                                                                      \
                              Eblock                                                                                                    \
                         ETes                                                                                                           \
                         Eblock                                                                                                         \
                    ATes                                                                                                                \
                                        /* Cas ou la charge faible n'est pas connue...                                               */ \
                         Bblock                                                                                                         \
                         Eblock                                                                                                         \
                    ETes                                                                                                                \
                    Eblock                                                                                                              \
                                        /* Validation de la charge faible.                                                           */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        V A L I D A T I O N   D E S   C H A R G E S   D E   C O U L E U R  :                                                       */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   VALIDATION_DES_CHARGES_DE_COULEUR(particule)                                                                                  \
                    Bblock                                                                                                              \
                    Test(IFNE(ADD3(CHARGE_DE_COULEUR_R_V(particule)                                                                     \
                                  ,CHARGE_DE_COULEUR_V_B(particule)                                                                     \
                                  ,CHARGE_DE_COULEUR_B_R(particule)                                                                     \
                                   )                                                                                                    \
                             ,CHARGE_DE_COULEUR_NEUTRE                                                                                  \
                              )                                                                                                         \
                         )                                                                                                              \
                         Bblock                                                                                                         \
                         PRINT_ERREUR("la somme des charges de couleur d'une particule n'est pas nulle");                               \
                         CAL1(Prer1("etiquette particule = %d\n",ETIQUETTE(particule)));                                                \
                         Eblock                                                                                                         \
                    ATes                                                                                                                \
                         Bblock                                                                                                         \
                         Eblock                                                                                                         \
                    ETes                                                                                                                \
                    Eblock                                                                                                              \
                                        /* Validation des charges de couleur.                                                        */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C A L C U L   D U   S P I N   ' J '  :                                                                                     */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   iSPIN(particule)                                                                                                              \
                    Bblock                                                                                                              \
                    Test(IFNE(ABSO(SPINs(particule)),SPINs_UNDEF))                                                                      \
                                        /* Cas ou la masse au repos est connue...                                                    */ \
                         Bblock                                                                                                         \
                         EGAL(SPIN(particule),DIVI(FLOT(SPINs(particule)),FLOT(INVERSE_DE_L_UNITE_DE_SPIN)));                           \
                         Eblock                                                                                                         \
                    ATes                                                                                                                \
                                        /* Cas ou la masse au repos n'est pas connue...                                              */ \
                         Bblock                                                                                                         \
                         EGAL(SPIN(particule),SPINJ_UNDEF);                                                                             \
                         Eblock                                                                                                         \
                    ETes                                                                                                                \
                    Eblock                                                                                                              \
                                        /* Definition du spin 'J' de la particule.                                                   */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C A L C U L   D U   M O D U L E   D E   L A   V I T E S S E  :                                                             */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   iMODULE_DE_LA_VITESSE_COURANTE(particule)                                                                                     \
                    Bblock                                                                                                              \
                    EGAL(MODULE_DE_LA_VITESSE_COURANTE(particule),longF3D(VITESSE_COURANTE(particule)));                                \
                    Eblock                                                                                                              \
                                        /* Definition du module de la vitesse de la particule.                                       */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C A L C U L   D E   L A   M A S S E   R E L A T I V I S T E  :                                                             */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   iMASSE_RELATIVISTE(particule)                                                                                                 \
                    Bblock                                                                                                              \
                    Test(IFNE(ABSO(MASSE_AU_REPOS(particule)),MASSE_UNDEF))                                                             \
                                        /* Cas ou la masse au repos est connue...                                                    */ \
                         Bblock                                                                                                         \
                         Test(IFEQ_a_peu_pres_absolu(MODULE_DE_LA_VITESSE_COURANTE(particule)                                           \
                                                    ,VITESSE_DE_LA_LUMIERE                                                              \
                                                    ,FRACTION_DE_LA_VITESSE_DE_LA_LUMIERE                                               \
                                                     )                                                                                  \
                              )                                                                                                         \
                              Bblock                                                                                                    \
                              EGAL(MASSE_RELATIVISTE(particule)                                                                         \
                                  ,COND(IFEQ(MASSE_AU_REPOS(particule),MASSE_NULLE)                                                     \
                                       ,MASSE_AU_REPOS(particule)                                                                       \
                                       ,MASSE_INFINIE                                                                                   \
                                        )                                                                                               \
                                   );                                                                                                   \
                                        /* Definition de la masse relativiste de la particule sous la forme pour une particule       */ \
                                        /* se deplacant a la vitesse de la lumiere...                                                */ \
                              Eblock                                                                                                    \
                         ATes                                                                                                           \
                              Bblock                                                                                                    \
                              EGAL(MASSE_RELATIVISTE(particule)                                                                         \
                                  ,DIVI(MASSE_AU_REPOS(particule)                                                                       \
                                       ,RACX(SOUS(FU                                                                                    \
                                                 ,DIVI(EXP2(MODULE_DE_LA_VITESSE_COURANTE(particule))                                   \
                                                      ,EXP2(VITESSE_DE_LA_LUMIERE)                                                      \
                                                       )                                                                                \
                                                  )                                                                                     \
                                             )                                                                                          \
                                        )                                                                                               \
                                   );                                                                                                   \
                                        /* Definition de la masse relativiste de la particule sous la forme :                        */ \
                                        /*                                                                                           */ \
                                        /*                           m                                                               */ \
                                        /*                            0                                                              */ \
                                        /*                 m = ---------------                                                       */ \
                                        /*                                 1                                                         */ \
                                        /*                      |      2 |---                                                        */ \
                                        /*                      |     v  | 2                                                         */ \
                                        /*                      |1 - ----|                                                           */ \
                                        /*                      |      2 |                                                           */ \
                                        /*                      |     c  |                                                           */ \
                                        /*                                                                                           */ \
                              Eblock                                                                                                    \
                         ETes                                                                                                           \
                         Eblock                                                                                                         \
                    ATes                                                                                                                \
                                        /* Cas ou la masse au repos n'est pas connue...                                              */ \
                         Bblock                                                                                                         \
                         EGAL(MASSE_RELATIVISTE(particule),MASSE_UNDEF);                                                                \
                         Eblock                                                                                                         \
                    ETes                                                                                                                \
                    Eblock                                                                                                              \
                                        /* Definition de la masse relativiste 'm' de la particule.                                   */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C A L C U L   D E   L A   Q U A N T I T E   D E   M O U V E M E N T  :                                                     */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   QUANTITE_DE_MOUVEMENT_UNDEF                                                                                                   \
                    FLOT__UNDEF                                                                                                         \
                                        /* Composante quelconque de la quantite de mouvement inconnue...                             */

#define   FRACTION_DE_LA_VITESSE_DE_LA_LUMIERE                                                                                          \
                    FRA1(FRA10(FRA10(VITESSE_DE_LA_LUMIERE)))                                                                           \
                                        /* Fraction de la vitesse de la lumiere 'c' destinee a faire des tests d'egalite par         */ \
                                        /* rapport a 'c' en prenant en compte les erreurs d'arrondi lors du calcul du module         */ \
                                        /* d'un vecteur vitesse.                                                                     */

#define   iQUANTITE_DE_MOUVEMENT(particule)                                                                                             \
                    Bblock                                                                                                              \
                    Test(IFNE(ABSO(MASSE_AU_REPOS(particule)),MASSE_UNDEF))                                                             \
                                        /* Cas ou la masse au repos est connue...                                                    */ \
                         Bblock                                                                                                         \
                         Test(IZEQ(MASSE_AU_REPOS(particule)))                                                                          \
                              Bblock                                                                                                    \
                              DEFV(Float,INIT(module_de_la_quantite_de_mouvement_ramene_a_la_vitesse                                    \
                                             ,DIVI(DIVI(CONSTANTE_DE_PLANCK,LONGUEUR_D_ONDE(particule))                                 \
                                                  ,MODULE_DE_LA_VITESSE_COURANTE(particule)                                             \
                                                   )                                                                                    \
                                              )                                                                                         \
                                   );                                                                                                   \
                                        /* Definition du module de la quantite de mouvement divise par le module de la vitesse.      */ \
                              Test(IFNE_a_peu_pres_absolu(MODULE_DE_LA_VITESSE_COURANTE(particule)                                      \
                                                         ,VITESSE_DE_LA_LUMIERE                                                         \
                                                         ,FRACTION_DE_LA_VITESSE_DE_LA_LUMIERE                                          \
                                                          )                                                                             \
                                   )                                                                                                    \
                                   Bblock                                                                                               \
                                   PRINT_ERREUR("une particule de masse au repos nulle ne se deplace pas a la vitesse de la lumiere");  \
                                   CAL1(Prer1("etiquette particule = %d\n",ETIQUETTE(particule)));                                      \
                                   CAL1(Prer1("module de la vitesse particule = %f\n",MODULE_DE_LA_VITESSE_COURANTE(particule)));       \
                                   Eblock                                                                                               \
                              ATes                                                                                                      \
                                   Bblock                                                                                               \
                                   Eblock                                                                                               \
                              ETes                                                                                                      \
                                                                                                                                        \
                              INITIALISATION_ACCROISSEMENT_3D(QUANTITE_DE_MOUVEMENT(particule)                                          \
                                                             ,MUL2(module_de_la_quantite_de_mouvement_ramene_a_la_vitesse               \
                                                                  ,VITESSE_COURANTE_X(particule)                                        \
                                                                   )                                                                    \
                                                             ,MUL2(module_de_la_quantite_de_mouvement_ramene_a_la_vitesse               \
                                                                  ,VITESSE_COURANTE_Y(particule)                                        \
                                                                   )                                                                    \
                                                             ,MUL2(module_de_la_quantite_de_mouvement_ramene_a_la_vitesse               \
                                                                  ,VITESSE_COURANTE_Z(particule)                                        \
                                                                   )                                                                    \
                                                              );                                                                        \
                                        /* Definition de la quantite de mouvement 'P' de la particule ("linear momentum") dans le    */ \
                                        /* cas d'une particule de masse au repos nulle :                                             */ \
                                        /*                                                                                           */ \
                                        /*                  m  = 0                                                                   */ \
                                        /*                   0                                                                       */ \
                                        /*                                                                                           */ \
                                        /*                  v = c                                                                    */ \
                                        /*                                                                                           */ \
                                        /*                 -->           -->                                                         */ \
                                        /*                  P  = h_barre. k                                                          */ \
                                        /*                                                                                           */ \
                                        /*                 |-->|     2.pi                                                            */ \
                                        /*                 | k | = --------                                                          */ \
                                        /*                          lambda                                                           */ \
                                        /*                                                                                           */ \
                                        /*                 -->    -->                                                                */ \
                                        /*                  k  //  v                                                                 */ \
                                        /*                                                                                           */ \
                                        /*            -->                                                            -->             */ \
                                        /* Le vecteur  k  est le vecteur d'onde et est colineaire au vecteur vitesse  v  ; on peut   */ \
                                        /* donc ecrire :                                                                             */ \
                                        /*                                                                                           */ \
                                        /*                                  -->                                                      */ \
                                        /*                 -->     2.pi      v                                                       */ \
                                        /*                  k  = --------.-------                                                    */ \
                                        /*                        lambda   |-->|                                                     */ \
                                        /*                                 | v |                                                     */ \
                                        /*                                                                                           */ \
                                        /* d'ou :                                                                                    */ \
                                        /*                                                                                           */ \
                                        /*                                  -->                                                      */ \
                                        /*                 -->      h        v                                                       */ \
                                        /*                  P  = --------.-------                                                    */ \
                                        /*                        lambda   |-->|                                                     */ \
                                        /*                                 | v |                                                     */ \
                                        /*                                                                                           */ \
                                        /* puisque :                                                                                 */ \
                                        /*                                                                                           */ \
                                        /*                  h = 2.pi.h_barre                                                         */ \
                                        /*                                                                                           */ \
                              Eblock                                                                                                    \
                         ATes                                                                                                           \
                              Bblock                                                                                                    \
                              Test(IFEQ_a_peu_pres_absolu(MODULE_DE_LA_VITESSE_COURANTE(particule)                                      \
                                                         ,VITESSE_DE_LA_LUMIERE                                                         \
                                                         ,FRACTION_DE_LA_VITESSE_DE_LA_LUMIERE                                          \
                                                          )                                                                             \
                                   )                                                                                                    \
                                   Bblock                                                                                               \
                                   PRINT_ERREUR("une particule de masse au repos non nulle se deplace a la vitesse de la lumiere");     \
                                   CAL1(Prer1("etiquette particule = %d\n",ETIQUETTE(particule)));                                      \
                                   Eblock                                                                                               \
                              ATes                                                                                                      \
                                   Bblock                                                                                               \
                                   Eblock                                                                                               \
                              ETes                                                                                                      \
                                                                                                                                        \
                              INITIALISATION_ACCROISSEMENT_3D(QUANTITE_DE_MOUVEMENT(particule)                                          \
                                                             ,MUL2(MASSE_RELATIVISTE(particule),VITESSE_COURANTE_X(particule))          \
                                                             ,MUL2(MASSE_RELATIVISTE(particule),VITESSE_COURANTE_Y(particule))          \
                                                             ,MUL2(MASSE_RELATIVISTE(particule),VITESSE_COURANTE_Z(particule))          \
                                                              );                                                                        \
                                        /* Definition de la quantite de mouvement 'P' de la particule ("linear momentum") dans le    */ \
                                        /* cas d'une particule de masse au repos non nulle :                                         */ \
                                        /*                                                                                           */ \
                                        /*                  m  > 0                                                                   */ \
                                        /*                   0                                                                       */ \
                                        /*                                                                                           */ \
                                        /*                  v < c                                                                    */ \
                                        /*                                                                                           */ \
                                        /*                 -->    -->                                                                */ \
                                        /*                  P = m. v                                                                 */ \
                                        /*                                                                                           */ \
                              Eblock                                                                                                    \
                         ETes                                                                                                           \
                         Eblock                                                                                                         \
                    ATes                                                                                                                \
                                        /* Cas ou la masse au repos n'est pas connue...                                              */ \
                         Bblock                                                                                                         \
                         INITIALISATION_ACCROISSEMENT_3D(QUANTITE_DE_MOUVEMENT(particule)                                               \
                                                        ,QUANTITE_DE_MOUVEMENT_UNDEF                                                    \
                                                        ,QUANTITE_DE_MOUVEMENT_UNDEF                                                    \
                                                        ,QUANTITE_DE_MOUVEMENT_UNDEF                                                    \
                                                         );                                                                             \
                         Eblock                                                                                                         \
                    ETes                                                                                                                \
                    Eblock                                                                                                              \
                                        /* Definition de la quantite de mouvement 'P' de la particule ("linear momentum").           */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        M I S E   A   J O U R   D E S   G R A N D E U R S   R E L A T I V I S T E S  :                                             */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   iGRANDEURS_RELATIVISTES(particule)                                                                                            \
                    Bblock                                                                                                              \
                    iMODULE_DE_LA_VITESSE_COURANTE(particule);                                                                          \
                    iMASSE_RELATIVISTE(particule);                                                                                      \
                    iQUANTITE_DE_MOUVEMENT(particule);                                                                                  \
                                        /* Definition des differentes grandeurs relativistes "derivees"... ATTENTION a l'ordre       */ \
                                        /* imperatif des procedures suivantes :                                                      */ \
                                        /*                                                                                           */ \
                                        /*                  iMODULE_DE_LA_VITESSE_COURANTE(particule);                               */ \
                                        /*                  iMASSE_RELATIVISTE(particule);                                           */ \
                                        /*                  iQUANTITE_DE_MOUVEMENT(particule);                                       */ \
                                        /*                                                                                           */ \
                                        /* puisque chacune d'entre-elles utilise ce qu'ont calcule les precedentes...                */ \
                    Eblock                                                                                                              \
                                        /* Mise a jour des differentes grandeurs relativistes liees a la vitesse courante.           */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C A L C U L   D U   M O M E N T   M A G N E T I Q U E  :                                                                   */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   MOMENT_MAGNETIQUE_UNDEF                                                                                                       \
                    FLOT__UNDEF                                                                                                         \
                                        /* Composante quelconque du moment magnetique inconnu...                                     */

#define   iMOMENT_MAGNETIQUE(particule)                                                                                                 \
                    Bblock                                                                                                              \
                    Test(IFNE(ABSO(MASSE_AU_REPOS(particule)),MASSE_UNDEF))                                                             \
                                        /* Cas ou la masse au repos est connue...                                                    */ \
                         Bblock                                                                                                         \
                         Test(IZGT(MASSE_RELATIVISTE(particule)))                                                                       \
                              Bblock                                                                                                    \
                              DEFV(Float,INIT(charge_electrique_ramenee_a_la_masse_relativiste                                          \
                                             ,DIVI(CHARGE_ELECTRIQUE(particule),DOUB(MASSE_RELATIVISTE(particule)))                     \
                                              )                                                                                         \
                                   );                                                                                                   \
                                        /* Definition de la charge electrique ramenee au double de la masse relativiste.             */ \
                              INITIALISATION_ACCROISSEMENT_3D(MOMENT_MAGNETIQUE(particule)                                              \
                                                             ,MUL2(charge_electrique_ramenee_a_la_masse_relativiste                     \
                                                                  ,MOMENT_CINETIQUE_X(particule)                                        \
                                                                   )                                                                    \
                                                             ,MUL2(charge_electrique_ramenee_a_la_masse_relativiste                     \
                                                                  ,MOMENT_CINETIQUE_Y(particule)                                        \
                                                                   )                                                                    \
                                                             ,MUL2(charge_electrique_ramenee_a_la_masse_relativiste                     \
                                                                  ,MOMENT_CINETIQUE_Z(particule)                                        \
                                                                   )                                                                    \
                                                              );                                                                        \
                                        /* Definition du moment magnetique 'M' par :                                                 */ \
                                        /*                                                                                           */ \
                                        /*                 -->    charge   -->                                                       */ \
                                        /*                  M  = ---------. L                                                        */ \
                                        /*                        2.masse                                                            */ \
                                        /*                                                                                           */ \
                                        /* pour une particule non relativiste...                                                     */ \
                              Eblock                                                                                                    \
                         ATes                                                                                                           \
                              Bblock                                                                                                    \
                              INITIALISATION_ACCROISSEMENT_3D(MOMENT_MAGNETIQUE(particule)                                              \
                                                             ,FZERO                                                                     \
                                                             ,FZERO                                                                     \
                                                             ,FZERO                                                                     \
                                                              );                                                                        \
                                        /* Definition du moment magnetique 'M' d'une particule relativiste...                        */ \
                              Eblock                                                                                                    \
                         ETes                                                                                                           \
                         Eblock                                                                                                         \
                    ATes                                                                                                                \
                                        /* Cas ou la masse au repos n'est pas connue...                                              */ \
                         Bblock                                                                                                         \
                         INITIALISATION_ACCROISSEMENT_3D(MOMENT_MAGNETIQUE(particule)                                                   \
                                                        ,MOMENT_MAGNETIQUE_UNDEF                                                        \
                                                        ,MOMENT_MAGNETIQUE_UNDEF                                                        \
                                                        ,MOMENT_MAGNETIQUE_UNDEF                                                        \
                                                         );                                                                             \
                         Eblock                                                                                                         \
                    ETes                                                                                                                \
                    Eblock                                                                                                              \
                                        /* Definition du moment magnetique 'M' de la particule.                                      */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C A L C U L   D E   L ' E N E R G I E  :                                                                                   */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   ENERGIE_UNDEF                                                                                                                 \
                    FLOT__UNDEF                                                                                                         \
                                        /* Energie inconnue...                                                                       */

#define   iENERGIE(particule)                                                                                                           \
                    Bblock                                                                                                              \
                    Test(IFNE(ABSO(MASSE_AU_REPOS(particule)),MASSE_UNDEF))                                                             \
                                        /* Cas ou la masse au repos est connue...                                                    */ \
                         Bblock                                                                                                         \
                         EGAL(ENERGIE(particule)                                                                                        \
                             ,RACX(ADD2(MUL2(EXP2(longF3D(QUANTITE_DE_MOUVEMENT(particule))),EXP2(VITESSE_DE_LA_LUMIERE))               \
                                       ,MUL2(EXP2(MASSE_AU_REPOS(particule)),EXP4(VITESSE_DE_LA_LUMIERE))                               \
                                        )                                                                                               \
                                   )                                                                                                    \
                              );                                                                                                        \
                                        /* Definition de l'energie de la particule 'E'. Pour une particule 'REELLE', l'energie est   */ \
                                        /* definie par la relation d'Einstein (voir la relativite restreinte), dans un referentiel   */ \
                                        /* d'inertie, soit :                                                                         */ \
                                        /*                                                                                           */ \
                                        /*                   2    2  2    2   4                                                      */ \
                                        /*                  E  = P .c  + m  .c                                                       */ \
                                        /*                                0                                                          */ \
                                        /*                                                                                           */ \
                         Eblock                                                                                                         \
                    ATes                                                                                                                \
                                        /* Cas ou la masse au repos n'est pas connue...                                              */ \
                         Bblock                                                                                                         \
                         EGAL(ENERGIE(particule),ENERGIE_UNDEF);                                                                        \
                         Eblock                                                                                                         \
                    ETes                                                                                                                \
                    Eblock                                                                                                              \
                                        /* Definition de l'energie 'E' de la particule.                                              */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        P R O C E D U R E   D E   C R E A T I O N   E T   I N I T I A L I S A T I O N   D ' U N E   P A R T I C U L E  :           */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   _iPARTICULE(particule,n,rv,pap,m0,p,lo,h,s,T,nl,nb,P,S,c,b,t,ce,cf,RV,VB,BR,x0,y0,z0,Vx0,Vy0,Vz0,Lx0,Ly0,Lz0,dv,v,r,R,V,B)    \
                    Bblock                                                                                                              \
                    CREATION_D_UNE_PARTICULE(particule);                                                                                \
                                        /* Creation de la structure necessaire a decrire la particule.                               */ \
                                                                                                                                        \
                    EGAL(ETIQUETTE(particule),etiquette_de_la_prochaine_particule_a_creer);                                             \
                    INCR(etiquette_de_la_prochaine_particule_a_creer,I);                                                                \
                                        /* Identification "logique" de la particule.                                                 */ \
                                                                                                                                        \
                    EGAL(NOM(particule),n);                                                                                             \
                    EGAL(REELLE_OU_VIRTUELLE(particule),rv);                                                                            \
                    EGAL(PARTICULE_OU_ANTIPARTICULE(particule),pap);                                                                    \
                                        /* Identification "physique" de la particule. C'est 'pap' qui va permettre d'utiliser par    */ \
                                        /* la suite la procedure 'ANTI_MATIERE(...)'.                                                */ \
                                                                                                                                        \
                    EGAL(LONGUEUR_D_ONDE(particule),lo);                                                                                \
                                        /* Definition de la longueur d'onde de la particule (equivalence onde-corpuscule...).        */ \
                                                                                                                                        \
                    EGAL(HELICITE(particule),h);                                                                                        \
                    EGAL(SPINs(particule),s);                                                                                           \
                    iSPIN(particule);                                                                                                   \
                    EGAL(BOSON_OU_FERMION(particule),STATISTIQUE(particule));                                                           \
                                        /* Definition de la statistique a laquelle est soumise la particule (quantite "derivee"...). */ \
                                        /*                                                                                           */ \
                                        /* ATTENTION il est preferable de calculer 'BOSON_OU_FERMION(particule)' avant les calculs   */ \
                                        /* des quantites "derivees" au cas ou ces dernieres utiliserait 'STATISTIQUE(particule)'...  */ \
                                                                                                                                        \
                    EGAL(ISOSPIN(particule),T);                                                                                         \
                    EGAL(aNOMBRE_LEPTONIQUE(particule),ANTI_MATIERE(particule,nl));                                                     \
                    EGAL(aPARITE(particule),ANTI_MATIERE(particule,P));                                                                 \
                                                                                                                                        \
                    EGAL(aNOMBRE_BARYONIQUE(particule),ANTI_MATIERE(particule,nb));                                                     \
                    EGAL(aETRANGETE(particule),ANTI_MATIERE(particule,S));                                                              \
                    EGAL(aCHARME(particule),ANTI_MATIERE(particule,c));                                                                 \
                    EGAL(aBEAUTE(particule),ANTI_MATIERE(particule,b));                                                                 \
                    EGAL(aVERITE(particule),ANTI_MATIERE(particule,t));                                                                 \
                    EGAL(HYPERCHARGE(particule),ADD2(NOMBRE_BARYONIQUE(particule),ETRANGETE(particule)));                               \
                                        /* Definition des nombres quantiques principaux.                                             */ \
                                                                                                                                        \
                    EGAL(aCHARGE_ELECTRIQUE(particule),ANTI_MATIERE(particule,ce));                                                     \
                    EGAL(CHARGE_FAIBLE(particule)                                                                                       \
                        ,COND(PEUT_AVOIR_UNE_CHARGE_FAIBLE(particule)                                                                   \
                             ,ANTI_MATIERE(particule,cf)                                                                                \
                             ,CHARGE_FAIBLE_NEUTRE                                                                                      \
                              )                                                                                                         \
                         );                                                                                                             \
                    VALIDATION_DE_LA_CHARGE_FAIBLE(particule);                                                                          \
                    EGAL(aCHARGE_DE_COULEUR_R_V(particule),ANTI_MATIERE(particule,RV));                                                 \
                    EGAL(aCHARGE_DE_COULEUR_V_B(particule),ANTI_MATIERE(particule,VB));                                                 \
                    EGAL(aCHARGE_DE_COULEUR_B_R(particule),ANTI_MATIERE(particule,BR));                                                 \
                    VALIDATION_DES_CHARGES_DE_COULEUR(particule);                                                                       \
                                        /* Definition des differentes charges.                                                       */ \
                                                                                                                                        \
                    EGAL(MASSE_AU_REPOS(particule),m0);                                                                                 \
                                        /* Definition de la masse au repose de la particule.                                         */ \
                    EGAL(PORTEE_DE_L_INTERACTION(particule),p);                                                                         \
                                        /* Definition de la portee de l'interaction (dans le cas d'un boson...).                     */ \
                                                                                                                                        \
                    EGAL(DATE_DE_NAISSANCE(particule),temps);                                                                           \
                                                                                                                                        \
                    INITIALISATION_POINT_3D(POSITION_INITIALE(particule),x0,y0,z0);                                                     \
                    TRANSFERT_POINT_3D(POSITION_COURANTE(particule),POSITION_INITIALE(particule));                                      \
                                                                                                                                        \
                    INITIALISATION_ACCROISSEMENT_3D(MOMENT_CINETIQUE(particule),Lx0,Ly0,Lz0);                                           \
                    EGAL(DUREE_DE_VIE(particule),dv);                                                                                   \
                                        /* Definition des coordonnees spatio-temporelles.                                            */ \
                                                                                                                                        \
                    INITIALISATION_ACCROISSEMENT_3D(VITESSE_INITIALE(particule),Vx0,Vy0,Vz0);                                           \
                    TRANSFERT_ACCROISSEMENT_3D(VITESSE_COURANTE(particule),VITESSE_INITIALE(particule));                                \
                    iGRANDEURS_RELATIVISTES(particule);                                                                                 \
                                        /* Definition des coordonnees spatio-temporelles "derivees" et relativistes...               */ \
                                                                                                                                        \
                    iMOMENT_MAGNETIQUE(particule);                                                                                      \
                    iENERGIE(particule);                                                                                                \
                                        /* Definition du moment magnetique et de l'energie (quantites "derivees"...).                */ \
                                                                                                                                        \
                    EGAL(UNE_VOISINE_LA_PLUS_PROCHE(particule),NEXIST);                                                                 \
                    EGAL(VOISINE_LA_PLUS_PROCHE(particule),PARTICULE_NON_DEFINIE);                                                      \
                    EGAL(DISTANCE_A_LA_LA_PLUS_PROCHE_VOISINE(particule),FLOT__UNDEF);                                                  \
                                        /* Initialisation du voisinage.                                                              */ \
                                                                                                                                        \
                    EGAL(VISUALISER(particule),v);                                                                                      \
                    EGAL(RAYON(particule),r);                                                                                           \
                    EGAL(COULEUR_ROUGE(particule),R);                                                                                   \
                    EGAL(COULEUR_VERTE(particule),V);                                                                                   \
                    EGAL(COULEUR_BLEUE(particule),B);                                                                                   \
                                        /* Definition de la visualisation de la particule.                                           */ \
                                                                                                                                        \
                    Eblock                                                                                                              \
                                        /* Procedure d'initialisation d'une particule quelconque...                                  */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        P R O C E D U R E   D E   C R E A T I O N   E T   I N I T I A L I S A T I O N   D ' U N E   P A R T I C U L E  :           */
/*        A V E C   R E D U C T I O N   D U   C O D E   G E N E R E   E N   P A S S A N T   P A R   U N E   F O N C T I O N  :       */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   __iPARTICULE(particule,n,rv,pap,m0,p,lo,h,s,T,nl,nb,P,S,c,b,t,ce,cf,RV,VB,BR,x0,y0,z0,Vx0,Vy0,Vz0,Lx0,Ly0,Lz0,dv,v,r,R,V,B)   \
                    Bblock                                                                                                              \
                    iPARTICULE(ADRESSE(particule)                                                                                       \
                              ,INTE(n)                                                                                                  \
                              ,INTE(rv)                                                                                                 \
                              ,INTE(pap)                                                                                                \
                              ,FLOT(m0)                                                                                                 \
                              ,FLOT(p)                                                                                                  \
                              ,FLOT(lo)                                                                                                 \
                              ,INTE(h)                                                                                                  \
                              ,INTE(s)                                                                                                  \
                              ,FLOT(T)                                                                                                  \
                              ,INTE(nl)                                                                                                 \
                              ,FLOT(nb)                                                                                                 \
                              ,INTE(P)                                                                                                  \
                              ,INTE(S)                                                                                                  \
                              ,INTE(c)                                                                                                  \
                              ,INTE(b)                                                                                                  \
                              ,INTE(t)                                                                                                  \
                              ,FLOT(ce)                                                                                                 \
                              ,FLOT(cf)                                                                                                 \
                              ,FLOT(RV),FLOT(VB),FLOT(BR)                                                                               \
                              ,FLOT(x0),FLOT(y0),FLOT(z0)                                                                               \
                              ,FLOT(Vx0),FLOT(Vy0),FLOT(Vz0)                                                                            \
                              ,FLOT(Lx0),FLOT(Ly0),FLOT(Lz0)                                                                            \
                              ,FLOT(dv)                                                                                                 \
                              ,LOGI(v)                                                                                                  \
                              ,FLOT(r)                                                                                                  \
                              ,FLOT(R)                                                                                                  \
                              ,FLOT(V)                                                                                                  \
                              ,FLOT(B)                                                                                                  \
                               );                                                                                                       \
                    Eblock                                                                                                              \
                                        /* Procedure d'initialisation d'une particule quelconque avec reduction du code genere. On   */ \
                                        /* notera les 'INTE(...)', 'LOGI(...)' et 'FLOT(...)' destines a eviter des confusions dans  */ \
                                        /* les types puisque 'iPARTICULE(...)' est une "vraie" fonction et non pas une procedure...  */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C R E A T I O N   E T   D ' I N I T I A L I S A T I O N   D ' U N   F E R M I O N  :                                       */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   iFERMION(fermion,n,rv,pap,m0,lo,h,s,T,nl,nb,P,S,c,b,t,ce,cf,RV,VB,BR,x0,y0,z0,Vx0,Vy0,Vz0,Lx0,Ly0,Lz0,dv,v,r,R,V,B)           \
                    Bblock                                                                                                              \
                    __iPARTICULE(fermion                                                                                                \
                                ,n                                                                                                      \
                                ,rv                                                                                                     \
                                ,pap                                                                                                    \
                                ,m0                                                                                                     \
                                ,PAS_DE_PORTEE_POUR_LES_FERMIONS                                                                        \
                                ,lo                                                                                                     \
                                ,h                                                                                                      \
                                ,s                                                                                                      \
                                ,T                                                                                                      \
                                ,nl                                                                                                     \
                                ,nb                                                                                                     \
                                ,P                                                                                                      \
                                ,S                                                                                                      \
                                ,c                                                                                                      \
                                ,b                                                                                                      \
                                ,t                                                                                                      \
                                ,ce                                                                                                     \
                                ,cf                                                                                                     \
                                ,RV,VB,BR                                                                                               \
                                ,x0,y0,z0                                                                                               \
                                ,Vx0,Vy0,Vz0                                                                                            \
                                ,Lx0,Ly0,Lz0                                                                                            \
                                ,dv                                                                                                     \
                                ,v                                                                                                      \
                                ,r                                                                                                      \
                                ,R,V,B                                                                                                  \
                                 );                                                                                                     \
                    Eblock                                                                                                              \
                                        /* Procedure de creation et d'initialisation d'un fermion.                                   */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C R E A T I O N   E T   D ' I N I T I A L I S A T I O N   D ' U N   L E P T O N  :                                         */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   iLEPTON(lepton,n,rv,pap,m0,lo,h,s,T,nl,nb,P,S,c,b,t,ce,cf,RV,VB,BR,x0,y0,z0,Vx0,Vy0,Vz0,Lx0,Ly0,Lz0,dv,v,r,R,V,B)             \
                    Bblock                                                                                                              \
                    iFERMION(lepton                                                                                                     \
                            ,n                                                                                                          \
                            ,rv                                                                                                         \
                            ,pap                                                                                                        \
                            ,m0                                                                                                         \
                            ,lo                                                                                                         \
                            ,h                                                                                                          \
                            ,s                                                                                                          \
                            ,T                                                                                                          \
                            ,nl                                                                                                         \
                            ,nb                                                                                                         \
                            ,P                                                                                                          \
                            ,S                                                                                                          \
                            ,c                                                                                                          \
                            ,b                                                                                                          \
                            ,t                                                                                                          \
                            ,ce                                                                                                         \
                            ,cf                                                                                                         \
                            ,RV,VB,BR                                                                                                   \
                            ,x0,y0,z0                                                                                                   \
                            ,Vx0,Vy0,Vz0                                                                                                \
                            ,Lx0,Ly0,Lz0                                                                                                \
                            ,dv                                                                                                         \
                            ,v                                                                                                          \
                            ,r                                                                                                          \
                            ,R,V,B                                                                                                      \
                             );                                                                                                         \
                    Eblock                                                                                                              \
                                        /* Procedure de creation et d'initialisation d'un lepton.                                    */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C R E A T I O N   E T   D ' I N I T I A L I S A T I O N   D ' U N   E L E C T R O N  :                                     */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   iELECTRON(electron,rv,pap,lo,h,P,x0,y0,z0,Vx0,Vy0,Vz0,Lx0,Ly0,Lz0,v,r,R,V,B)                                                  \
                    Bblock                                                                                                              \
                    iLEPTON(electron                                                                                                    \
                           ,LEPTON_electron                                                                                             \
                           ,rv                                                                                                          \
                           ,pap                                                                                                         \
                           ,MASSE_LEPTON_electron                                                                                       \
                           ,lo                                                                                                          \
                           ,h                                                                                                           \
                           ,SPINs_LEPTON_electron                                                                                       \
                           ,ISOSPIN_LEPTON_electron                                                                                     \
                           ,NOMBRE_LEPTONIQUE_LEPTON_electron                                                                           \
                           ,NOMBRE_BARYONIQUE_LEPTON_electron                                                                           \
                           ,P                                                                                                           \
                           ,ETRANGETE_LEPTON_electron                                                                                   \
                           ,CHARME_LEPTON_electron                                                                                      \
                           ,BEAUTE_LEPTON_electron                                                                                      \
                           ,VERITE_LEPTON_electron                                                                                      \
                           ,CHARGE_ELECTRIQUE_LEPTON_electron                                                                           \
                           ,CHARGE_FAIBLE_LEPTON_electron                                                                               \
                           ,cc0,cc0,cc0                                                                                                 \
                           ,x0,y0,z0                                                                                                    \
                           ,Vx0,Vy0,Vz0                                                                                                 \
                           ,Lx0,Ly0,Lz0                                                                                                 \
                           ,DUREE_DE_VIE_LEPTON_electron                                                                                \
                           ,v                                                                                                           \
                           ,r                                                                                                           \
                           ,R,V,B                                                                                                       \
                            );                                                                                                          \
                    Eblock                                                                                                              \
                                        /* Procedure de creation et d'initialisation d'un electron.                                  */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C R E A T I O N   E T   D ' I N I T I A L I S A T I O N   D ' U N   N E U T R I N O   E L E C T R O N I Q U E  :           */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   iNEUTRINO_ELECTRON(neutrino_electronique,rv,pap,lo,h,P,x0,y0,z0,Vx0,Vy0,Vz0,Lx0,Ly0,Lz0,v,r,R,V,B)                            \
                    Bblock                                                                                                              \
                    iLEPTON(neutrino_electronique                                                                                       \
                           ,LEPTON_NEUTRINO_electron                                                                                    \
                           ,rv                                                                                                          \
                           ,pap                                                                                                         \
                           ,MASSE_LEPTON_NEUTRINO_electron                                                                              \
                           ,lo                                                                                                          \
                           ,h                                                                                                           \
                           ,SPINs_LEPTON_NEUTRINO_electron                                                                              \
                           ,ISOSPIN_LEPTON_NEUTRINO_electron                                                                            \
                           ,NOMBRE_LEPTONIQUE_LEPTON_NEUTRINO_electron                                                                  \
                           ,NOMBRE_BARYONIQUE_LEPTON_NEUTRINO_electron                                                                  \
                           ,P                                                                                                           \
                           ,ETRANGETE_LEPTON_NEUTRINO_electron                                                                          \
                           ,CHARME_LEPTON_NEUTRINO_electron                                                                             \
                           ,BEAUTE_LEPTON_NEUTRINO_electron                                                                             \
                           ,VERITE_LEPTON_NEUTRINO_electron                                                                             \
                           ,CHARGE_ELECTRIQUE_LEPTON_NEUTRINO_electron                                                                  \
                           ,CHARGE_FAIBLE_LEPTON_NEUTRINO_electron                                                                      \
                           ,cc0,cc0,cc0                                                                                                 \
                           ,x0,y0,z0                                                                                                    \
                           ,Vx0,Vy0,Vz0                                                                                                 \
                           ,Lx0,Ly0,Lz0                                                                                                 \
                           ,DUREE_DE_VIE_LEPTON_NEUTRINO_electron                                                                       \
                           ,v                                                                                                           \
                           ,r                                                                                                           \
                           ,R,V,B                                                                                                       \
                            );                                                                                                          \
                    Eblock                                                                                                              \
                                        /* Procedure de creation et d'initialisation d'un neutrino electronique.                     */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C R E A T I O N   E T   D ' I N I T I A L I S A T I O N   D ' U N   M U O N  :                                             */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   iMUON(muon,rv,pap,lo,h,P,x0,y0,z0,Vx0,Vy0,Vz0,Lx0,Ly0,Lz0,v,r,R,V,B)                                                          \
                    Bblock                                                                                                              \
                    iLEPTON(muon                                                                                                        \
                           ,LEPTON_muon                                                                                                 \
                           ,rv                                                                                                          \
                           ,pap                                                                                                         \
                           ,MASSE_LEPTON_muon                                                                                           \
                           ,lo                                                                                                          \
                           ,h                                                                                                           \
                           ,SPINs_LEPTON_muon                                                                                           \
                           ,ISOSPIN_LEPTON_muon                                                                                         \
                           ,NOMBRE_LEPTONIQUE_LEPTON_muon                                                                               \
                           ,NOMBRE_BARYONIQUE_LEPTON_muon                                                                               \
                           ,P                                                                                                           \
                           ,ETRANGETE_LEPTON_muon                                                                                       \
                           ,CHARME_LEPTON_muon                                                                                          \
                           ,BEAUTE_LEPTON_muon                                                                                          \
                           ,VERITE_LEPTON_muon                                                                                          \
                           ,CHARGE_ELECTRIQUE_LEPTON_muon                                                                               \
                           ,CHARGE_FAIBLE_LEPTON_muon                                                                                   \
                           ,cc0,cc0,cc0                                                                                                 \
                           ,x0,y0,z0                                                                                                    \
                           ,Vx0,Vy0,Vz0                                                                                                 \
                           ,Lx0,Ly0,Lz0                                                                                                 \
                           ,DUREE_DE_VIE_LEPTON_muon                                                                                    \
                           ,v                                                                                                           \
                           ,r                                                                                                           \
                           ,R,V,B                                                                                                       \
                            );                                                                                                          \
                    Eblock                                                                                                              \
                                        /* Procedure de creation et d'initialisation d'un muon.                                      */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C R E A T I O N   E T   D ' I N I T I A L I S A T I O N   D ' U N   N E U T R I N O   M U O N I Q U E  :                   */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   iNEUTRINO_MUON(neutrino_muonique,rv,pap,lo,h,P,x0,y0,z0,Vx0,Vy0,Vz0,Lx0,Ly0,Lz0,v,r,R,V,B)                                    \
                    Bblock                                                                                                              \
                    iLEPTON(neutrino_muonique                                                                                           \
                           ,LEPTON_NEUTRINO_muon                                                                                        \
                           ,rv                                                                                                          \
                           ,pap                                                                                                         \
                           ,MASSE_LEPTON_NEUTRINO_muon                                                                                  \
                           ,lo                                                                                                          \
                           ,h                                                                                                           \
                           ,SPINs_LEPTON_NEUTRINO_muon                                                                                  \
                           ,ISOSPIN_LEPTON_NEUTRINO_muon                                                                                \
                           ,NOMBRE_LEPTONIQUE_LEPTON_NEUTRINO_muon                                                                      \
                           ,NOMBRE_BARYONIQUE_LEPTON_NEUTRINO_muon                                                                      \
                           ,P                                                                                                           \
                           ,ETRANGETE_LEPTON_NEUTRINO_muon                                                                              \
                           ,CHARME_LEPTON_NEUTRINO_muon                                                                                 \
                           ,BEAUTE_LEPTON_NEUTRINO_muon                                                                                 \
                           ,VERITE_LEPTON_NEUTRINO_muon                                                                                 \
                           ,CHARGE_ELECTRIQUE_LEPTON_NEUTRINO_muon                                                                      \
                           ,CHARGE_FAIBLE_LEPTON_NEUTRINO_muon                                                                          \
                           ,cc0,cc0,cc0                                                                                                 \
                           ,x0,y0,z0                                                                                                    \
                           ,Vx0,Vy0,Vz0                                                                                                 \
                           ,Lx0,Ly0,Lz0                                                                                                 \
                           ,DUREE_DE_VIE_LEPTON_NEUTRINO_muon                                                                           \
                           ,v                                                                                                           \
                           ,r                                                                                                           \
                           ,R,V,B                                                                                                       \
                            );                                                                                                          \
                    Eblock                                                                                                              \
                                        /* Procedure de creation et d'initialisation d'un neutrino muonique.                         */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C R E A T I O N   E T   D ' I N I T I A L I S A T I O N   D ' U N   T A U  :                                               */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   iTAU(tau,rv,pap,lo,h,P,x0,y0,z0,Vx0,Vy0,Vz0,Lx0,Ly0,Lz0,v,r,R,V,B)                                                            \
                    Bblock                                                                                                              \
                    iLEPTON(tau                                                                                                         \
                           ,LEPTON_tau                                                                                                  \
                           ,rv                                                                                                          \
                           ,pap                                                                                                         \
                           ,MASSE_LEPTON_tau                                                                                            \
                           ,lo                                                                                                          \
                           ,h                                                                                                           \
                           ,SPINs_LEPTON_tau                                                                                            \
                           ,ISOSPIN_LEPTON_tau                                                                                          \
                           ,NOMBRE_LEPTONIQUE_LEPTON_tau                                                                                \
                           ,NOMBRE_BARYONIQUE_LEPTON_tau                                                                                \
                           ,P                                                                                                           \
                           ,ETRANGETE_LEPTON_tau                                                                                        \
                           ,CHARME_LEPTON_tau                                                                                           \
                           ,BEAUTE_LEPTON_tau                                                                                           \
                           ,VERITE_LEPTON_tau                                                                                           \
                           ,CHARGE_ELECTRIQUE_LEPTON_tau                                                                                \
                           ,CHARGE_FAIBLE_LEPTON_tau                                                                                    \
                           ,cc0,cc0,cc0                                                                                                 \
                           ,x0,y0,z0                                                                                                    \
                           ,Vx0,Vy0,Vz0                                                                                                 \
                           ,Lx0,Ly0,Lz0                                                                                                 \
                           ,DUREE_DE_VIE_LEPTON_tau                                                                                     \
                           ,v                                                                                                           \
                           ,r                                                                                                           \
                           ,R,V,B                                                                                                       \
                            );                                                                                                          \
                    Eblock                                                                                                              \
                                        /* Procedure de creation et d'initialisation d'un tau.                                       */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C R E A T I O N   E T   D ' I N I T I A L I S A T I O N   D ' U N   N E U T R I N O   T A U I Q U E  :                     */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   iNEUTRINO_TAU(neutrino_tauique,rv,pap,lo,h,P,x0,y0,z0,Vx0,Vy0,Vz0,Lx0,Ly0,Lz0,v,r,R,V,B)                                      \
                    Bblock                                                                                                              \
                    iLEPTON(neutrino_tauique                                                                                            \
                           ,LEPTON_NEUTRINO_tau                                                                                         \
                           ,rv                                                                                                          \
                           ,pap                                                                                                         \
                           ,MASSE_LEPTON_NEUTRINO_tau                                                                                   \
                           ,lo                                                                                                          \
                           ,h                                                                                                           \
                           ,SPINs_LEPTON_NEUTRINO_tau                                                                                   \
                           ,ISOSPIN_LEPTON_NEUTRINO_tau                                                                                 \
                           ,NOMBRE_LEPTONIQUE_LEPTON_NEUTRINO_tau                                                                       \
                           ,NOMBRE_BARYONIQUE_LEPTON_NEUTRINO_tau                                                                       \
                           ,P                                                                                                           \
                           ,ETRANGETE_LEPTON_NEUTRINO_tau                                                                               \
                           ,CHARME_LEPTON_NEUTRINO_tau                                                                                  \
                           ,BEAUTE_LEPTON_NEUTRINO_tau                                                                                  \
                           ,VERITE_LEPTON_NEUTRINO_tau                                                                                  \
                           ,CHARGE_ELECTRIQUE_LEPTON_NEUTRINO_tau                                                                       \
                           ,CHARGE_FAIBLE_LEPTON_NEUTRINO_tau                                                                           \
                           ,cc0,cc0,cc0                                                                                                 \
                           ,x0,y0,z0                                                                                                    \
                           ,Vx0,Vy0,Vz0                                                                                                 \
                           ,Lx0,Ly0,Lz0                                                                                                 \
                           ,DUREE_DE_VIE_LEPTON_NEUTRINO_tau                                                                            \
                           ,v                                                                                                           \
                           ,r                                                                                                           \
                           ,R,V,B                                                                                                       \
                            );                                                                                                          \
                    Eblock                                                                                                              \
                                        /* Procedure de creation et d'initialisation d'un neutrino tauique.                          */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C R E A T I O N   E T   D ' I N I T I A L I S A T I O N   D ' U N   Q U A R K  :                                           */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   iQUARK(quark,n,rv,pap,m0,lo,h,s,T,nl,nb,P,S,c,b,t,ce,cf,RV,VB,BR,x0,y0,z0,Vx0,Vy0,Vz0,Lx0,Ly0,Lz0,dv,v,r,R,V,B)               \
                    Bblock                                                                                                              \
                    iFERMION(quark                                                                                                      \
                            ,n                                                                                                          \
                            ,rv                                                                                                         \
                            ,pap                                                                                                        \
                            ,m0                                                                                                         \
                            ,lo                                                                                                         \
                            ,h                                                                                                          \
                            ,s                                                                                                          \
                            ,T                                                                                                          \
                            ,nl                                                                                                         \
                            ,nb                                                                                                         \
                            ,P                                                                                                          \
                            ,S                                                                                                          \
                            ,c                                                                                                          \
                            ,b                                                                                                          \
                            ,t                                                                                                          \
                            ,ce                                                                                                         \
                            ,cf                                                                                                         \
                            ,RV,VB,BR                                                                                                   \
                            ,x0,y0,z0                                                                                                   \
                            ,Vx0,Vy0,Vz0                                                                                                \
                            ,Lx0,Ly0,Lz0                                                                                                \
                            ,dv                                                                                                         \
                            ,v                                                                                                          \
                            ,r                                                                                                          \
                            ,R,V,B                                                                                                      \
                             );                                                                                                         \
                    Eblock                                                                                                              \
                                        /* Procedure de creation et d'initialisation d'un quark.                                     */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C R E A T I O N   E T   D ' I N I T I A L I S A T I O N   D ' U N   Q U A R K   ' u '  :                                   */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   iQUARK_u(quark_u,rv,pap,lo,h,P,RV,VB,BR,x0,y0,z0,Vx0,Vy0,Vz0,Lx0,Ly0,Lz0,v,r,R,V,B)                                           \
                    Bblock                                                                                                              \
                    iQUARK(quark_u                                                                                                      \
                          ,QUARK_u                                                                                                      \
                          ,rv                                                                                                           \
                          ,pap                                                                                                          \
                          ,MASSE_QUARK_u                                                                                                \
                          ,lo                                                                                                           \
                          ,h                                                                                                            \
                          ,ETRANGETE_QUARK_u                                                                                            \
                          ,ISOSPIN_QUARK_u                                                                                              \
                          ,NOMBRE_LEPTONIQUE_QUARK_u                                                                                    \
                          ,NOMBRE_BARYONIQUE_QUARK_u                                                                                    \
                          ,P                                                                                                            \
                          ,ETRANGETE_QUARK_u                                                                                            \
                          ,CHARME_QUARK_u                                                                                               \
                          ,BEAUTE_QUARK_u                                                                                               \
                          ,VERITE_QUARK_u                                                                                               \
                          ,CHARGE_ELECTRIQUE_QUARK_u                                                                                    \
                          ,CHARGE_FAIBLE_QUARK_u                                                                                        \
                          ,RV,VB,BR                                                                                                     \
                          ,x0,y0,z0                                                                                                     \
                          ,Vx0,Vy0,Vz0                                                                                                  \
                          ,Lx0,Ly0,Lz0                                                                                                  \
                          ,DUREE_DE_VIE_QUARK_u                                                                                         \
                          ,v                                                                                                            \
                          ,r                                                                                                            \
                          ,R,V,B                                                                                                        \
                           );                                                                                                           \
                    Eblock                                                                                                              \
                                        /* Procedure de creation et d'initialisation d'un quark 'u'.                                 */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C R E A T I O N   E T   D ' I N I T I A L I S A T I O N   D ' U N   Q U A R K   ' d '  :                                   */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   iQUARK_d(quark_d,rv,pap,lo,h,P,RV,VB,BR,x0,y0,z0,Vx0,Vy0,Vz0,Lx0,Ly0,Lz0,v,r,R,V,B)                                           \
                    Bblock                                                                                                              \
                    iQUARK(quark_d                                                                                                      \
                          ,QUARK_d                                                                                                      \
                          ,rv                                                                                                           \
                          ,pap                                                                                                          \
                          ,MASSE_QUARK_d                                                                                                \
                          ,lo                                                                                                           \
                          ,h                                                                                                            \
                          ,ETRANGETE_QUARK_d                                                                                            \
                          ,ISOSPIN_QUARK_d                                                                                              \
                          ,NOMBRE_LEPTONIQUE_QUARK_d                                                                                    \
                          ,NOMBRE_BARYONIQUE_QUARK_d                                                                                    \
                          ,P                                                                                                            \
                          ,ETRANGETE_QUARK_d                                                                                            \
                          ,CHARME_QUARK_d                                                                                               \
                          ,BEAUTE_QUARK_d                                                                                               \
                          ,VERITE_QUARK_d                                                                                               \
                          ,CHARGE_ELECTRIQUE_QUARK_d                                                                                    \
                          ,CHARGE_FAIBLE_QUARK_d                                                                                        \
                          ,RV,VB,BR                                                                                                     \
                          ,x0,y0,z0                                                                                                     \
                          ,Vx0,Vy0,Vz0                                                                                                  \
                          ,Lx0,Ly0,Lz0                                                                                                  \
                          ,DUREE_DE_VIE_QUARK_d                                                                                         \
                          ,v                                                                                                            \
                          ,r                                                                                                            \
                          ,R,V,B                                                                                                        \
                           );                                                                                                           \
                    Eblock                                                                                                              \
                                        /* Procedure de creation et d'initialisation d'un quark 'd'.                                 */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C R E A T I O N   E T   D ' I N I T I A L I S A T I O N   D ' U N   Q U A R K   ' c '  :                                   */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   iQUARK_c(quark_c,rv,pap,lo,h,P,RV,VB,BR,x0,y0,z0,Vx0,Vy0,Vz0,Lx0,Ly0,Lz0,v,r,R,V,B)                                           \
                    Bblock                                                                                                              \
                    iQUARK(quark_c                                                                                                      \
                          ,QUARK_c                                                                                                      \
                          ,rv                                                                                                           \
                          ,pap                                                                                                          \
                          ,MASSE_QUARK_c                                                                                                \
                          ,lo                                                                                                           \
                          ,h                                                                                                            \
                          ,ETRANGETE_QUARK_c                                                                                            \
                          ,ISOSPIN_QUARK_c                                                                                              \
                          ,NOMBRE_LEPTONIQUE_QUARK_c                                                                                    \
                          ,NOMBRE_BARYONIQUE_QUARK_c                                                                                    \
                          ,P                                                                                                            \
                          ,ETRANGETE_QUARK_c                                                                                            \
                          ,CHARME_QUARK_c                                                                                               \
                          ,BEAUTE_QUARK_c                                                                                               \
                          ,VERITE_QUARK_c                                                                                               \
                          ,CHARGE_ELECTRIQUE_QUARK_c                                                                                    \
                          ,CHARGE_FAIBLE_QUARK_c                                                                                        \
                          ,RV,VB,BR                                                                                                     \
                          ,x0,y0,z0                                                                                                     \
                          ,Vx0,Vy0,Vz0                                                                                                  \
                          ,Lx0,Ly0,Lz0                                                                                                  \
                          ,DUREE_DE_VIE_QUARK_c                                                                                         \
                          ,v                                                                                                            \
                          ,r                                                                                                            \
                          ,R,V,B                                                                                                        \
                           );                                                                                                           \
                    Eblock                                                                                                              \
                                        /* Procedure de creation et d'initialisation d'un quark 'c'.                                 */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C R E A T I O N   E T   D ' I N I T I A L I S A T I O N   D ' U N   Q U A R K   ' s '  :                                   */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   iQUARK_s(quark_s,rv,pap,lo,h,P,RV,VB,BR,x0,y0,z0,Vx0,Vy0,Vz0,Lx0,Ly0,Lz0,v,r,R,V,B)                                           \
                    Bblock                                                                                                              \
                    iQUARK(quark_s                                                                                                      \
                          ,QUARK_s                                                                                                      \
                          ,rv                                                                                                           \
                          ,pap                                                                                                          \
                          ,MASSE_QUARK_s                                                                                                \
                          ,lo                                                                                                           \
                          ,h                                                                                                            \
                          ,ETRANGETE_QUARK_s                                                                                            \
                          ,ISOSPIN_QUARK_s                                                                                              \
                          ,NOMBRE_LEPTONIQUE_QUARK_s                                                                                    \
                          ,NOMBRE_BARYONIQUE_QUARK_s                                                                                    \
                          ,P                                                                                                            \
                          ,ETRANGETE_QUARK_s                                                                                            \
                          ,CHARME_QUARK_s                                                                                               \
                          ,BEAUTE_QUARK_s                                                                                               \
                          ,VERITE_QUARK_s                                                                                               \
                          ,CHARGE_ELECTRIQUE_QUARK_s                                                                                    \
                          ,CHARGE_FAIBLE_QUARK_s                                                                                        \
                          ,RV,VB,BR                                                                                                     \
                          ,x0,y0,z0                                                                                                     \
                          ,Vx0,Vy0,Vz0                                                                                                  \
                          ,Lx0,Ly0,Lz0                                                                                                  \
                          ,DUREE_DE_VIE_QUARK_s                                                                                         \
                          ,v                                                                                                            \
                          ,r                                                                                                            \
                          ,R,V,B                                                                                                        \
                           );                                                                                                           \
                    Eblock                                                                                                              \
                                        /* Procedure de creation et d'initialisation d'un quark 's'.                                 */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C R E A T I O N   E T   D ' I N I T I A L I S A T I O N   D ' U N   Q U A R K   ' t '  :                                   */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   iQUARK_t(quark_t,rv,pap,lo,h,P,RV,VB,BR,x0,y0,z0,Vx0,Vy0,Vz0,Lx0,Ly0,Lz0,v,r,R,V,B)                                           \
                    Bblock                                                                                                              \
                    iQUARK(quark_t                                                                                                      \
                          ,QUARK_t                                                                                                      \
                          ,rv                                                                                                           \
                          ,pap                                                                                                          \
                          ,MASSE_QUARK_t                                                                                                \
                          ,lo                                                                                                           \
                          ,h                                                                                                            \
                          ,ETRANGETE_QUARK_t                                                                                            \
                          ,ISOSPIN_QUARK_t                                                                                              \
                          ,NOMBRE_LEPTONIQUE_QUARK_t                                                                                    \
                          ,NOMBRE_BARYONIQUE_QUARK_t                                                                                    \
                          ,P                                                                                                            \
                          ,ETRANGETE_QUARK_t                                                                                            \
                          ,CHARME_QUARK_t                                                                                               \
                          ,BEAUTE_QUARK_t                                                                                               \
                          ,VERITE_QUARK_t                                                                                               \
                          ,CHARGE_ELECTRIQUE_QUARK_t                                                                                    \
                          ,CHARGE_FAIBLE_QUARK_t                                                                                        \
                          ,RV,VB,BR                                                                                                     \
                          ,x0,y0,z0                                                                                                     \
                          ,Vx0,Vy0,Vz0                                                                                                  \
                          ,Lx0,Ly0,Lz0                                                                                                  \
                          ,DUREE_DE_VIE_QUARK_t                                                                                         \
                          ,v                                                                                                            \
                          ,r                                                                                                            \
                          ,R,V,B                                                                                                        \
                           );                                                                                                           \
                    Eblock                                                                                                              \
                                        /* Procedure de creation et d'initialisation d'un quark 't'.                                 */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C R E A T I O N   E T   D ' I N I T I A L I S A T I O N   D ' U N   Q U A R K   ' b '  :                                   */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   iQUARK_b(quark_b,rv,pap,lo,h,P,RV,VB,BR,x0,y0,z0,Vx0,Vy0,Vz0,Lx0,Ly0,Lz0,v,r,R,V,B)                                           \
                    Bblock                                                                                                              \
                    iQUARK(quark_b                                                                                                      \
                          ,QUARK_b                                                                                                      \
                          ,rv                                                                                                           \
                          ,pap                                                                                                          \
                          ,MASSE_QUARK_b                                                                                                \
                          ,lo                                                                                                           \
                          ,h                                                                                                            \
                          ,ETRANGETE_QUARK_b                                                                                            \
                          ,ISOSPIN_QUARK_b                                                                                              \
                          ,NOMBRE_LEPTONIQUE_QUARK_b                                                                                    \
                          ,NOMBRE_BARYONIQUE_QUARK_b                                                                                    \
                          ,P                                                                                                            \
                          ,ETRANGETE_QUARK_b                                                                                            \
                          ,CHARME_QUARK_b                                                                                               \
                          ,BEAUTE_QUARK_b                                                                                               \
                          ,VERITE_QUARK_b                                                                                               \
                          ,CHARGE_ELECTRIQUE_QUARK_b                                                                                    \
                          ,CHARGE_FAIBLE_QUARK_b                                                                                        \
                          ,RV,VB,BR                                                                                                     \
                          ,x0,y0,z0                                                                                                     \
                          ,Vx0,Vy0,Vz0                                                                                                  \
                          ,Lx0,Ly0,Lz0                                                                                                  \
                          ,DUREE_DE_VIE_QUARK_b                                                                                         \
                          ,v                                                                                                            \
                          ,r                                                                                                            \
                          ,R,V,B                                                                                                        \
                           );                                                                                                           \
                    Eblock                                                                                                              \
                                        /* Procedure de creation et d'initialisation d'un quark 'b'.                                 */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C R E A T I O N   E T   D ' I N I T I A L I S A T I O N   D ' U N   B O S O N  :                                           */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   iBOSON(boson,n,rv,pap,m0,p,lo,h,s,T,nl,nb,P,S,c,b,t,ce,cf,RV,VB,BR,x0,y0,z0,Vx0,Vy0,Vz0,Lx0,Ly0,Lz0,dv,v,r,R,V,B)             \
                    Bblock                                                                                                              \
                    __iPARTICULE(boson                                                                                                  \
                                ,n                                                                                                      \
                                ,rv                                                                                                     \
                                ,pap                                                                                                    \
                                ,m0                                                                                                     \
                                ,p                                                                                                      \
                                ,lo                                                                                                     \
                                ,h                                                                                                      \
                                ,s                                                                                                      \
                                ,T                                                                                                      \
                                ,nl                                                                                                     \
                                ,nb                                                                                                     \
                                ,P                                                                                                      \
                                ,S                                                                                                      \
                                ,c                                                                                                      \
                                ,b                                                                                                      \
                                ,t                                                                                                      \
                                ,ce                                                                                                     \
                                ,cf                                                                                                     \
                                ,RV,VB,BR                                                                                               \
                                ,x0,y0,z0                                                                                               \
                                ,Vx0,Vy0,Vz0                                                                                            \
                                ,Lx0,Ly0,Lz0                                                                                            \
                                ,dv                                                                                                     \
                                ,v                                                                                                      \
                                ,r                                                                                                      \
                                ,R,V,B                                                                                                  \
                                 );                                                                                                     \
                    Eblock                                                                                                              \
                                        /* Procedure de creation et d'initialisation d'un boson.                                     */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C R E A T I O N   E T   D ' I N I T I A L I S A T I O N   D ' U N   P H O T O N  :                                         */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   iPHOTON(photon,rv,lo,h,P,x0,y0,z0,Vx0,Vy0,Vz0,Lx0,Ly0,Lz0,v,r,R,V,B)                                                          \
                    Bblock                                                                                                              \
                    iBOSON(photon                                                                                                       \
                          ,PHOTON                                                                                                       \
                          ,rv                                                                                                           \
                          ,PARTICULE_ET_ANTIPARTICULE                                                                                   \
                          ,MASSE_PHOTON                                                                                                 \
                          ,PORTEE_DE_L_INTERACTION_ELECTROMAGNETIQUE                                                                    \
                          ,lo                                                                                                           \
                          ,h                                                                                                            \
                          ,SPINs_PHOTON                                                                                                 \
                          ,ISOSPIN_PHOTON                                                                                               \
                          ,NOMBRE_LEPTONIQUE_PHOTON                                                                                     \
                          ,NOMBRE_BARYONIQUE_PHOTON                                                                                     \
                          ,P                                                                                                            \
                          ,ETRANGETE_PHOTON                                                                                             \
                          ,CHARME_PHOTON                                                                                                \
                          ,BEAUTE_PHOTON                                                                                                \
                          ,VERITE_PHOTON                                                                                                \
                          ,CHARGE_ELECTRIQUE_PHOTON                                                                                     \
                          ,CHARGE_FAIBLE_PHOTON                                                                                         \
                          ,cc0,cc0,cc0                                                                                                  \
                          ,x0,y0,z0                                                                                                     \
                          ,Vx0,Vy0,Vz0                                                                                                  \
                          ,Lx0,Ly0,Lz0                                                                                                  \
                          ,DUREE_DE_VIE_PHOTON                                                                                          \
                          ,v                                                                                                            \
                          ,r                                                                                                            \
                          ,R,V,B                                                                                                        \
                           );                                                                                                           \
                    Eblock                                                                                                              \
                                        /* Procedure de creation et d'initialisation d'un photon.                                    */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C R E A T I O N   E T   D ' I N I T I A L I S A T I O N   D ' U N   B O S O N   ' W '  :                                   */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   iWm(boson_Wm,rv,pap,lo,h,P,x0,y0,z0,Vx0,Vy0,Vz0,Lx0,Ly0,Lz0,v,r,R,V,B)                                                        \
                    Bblock                                                                                                              \
                    iBOSON(boson_Wm                                                                                                     \
                          ,Wm                                                                                                           \
                          ,rv                                                                                                           \
                          ,pap                                                                                                          \
                          ,MASSE_Wm                                                                                                     \
                          ,PORTEE_DE_L_INTERACTION_FAIBLE                                                                               \
                          ,lo                                                                                                           \
                          ,h                                                                                                            \
                          ,SPINs_Wm                                                                                                     \
                          ,ISOSPIN_Wm                                                                                                   \
                          ,NOMBRE_LEPTONIQUE_Wm                                                                                         \
                          ,NOMBRE_BARYONIQUE_Wm                                                                                         \
                          ,P                                                                                                            \
                          ,ETRANGETE_Wm                                                                                                 \
                          ,CHARME_Wm                                                                                                    \
                          ,BEAUTE_Wm                                                                                                    \
                          ,VERITE_Wm                                                                                                    \
                          ,CHARGE_ELECTRIQUE_Wm                                                                                         \
                          ,CHARGE_FAIBLE_Wm                                                                                             \
                          ,cc0,cc0,cc0                                                                                                  \
                          ,x0,y0,z0                                                                                                     \
                          ,Vx0,Vy0,Vz0                                                                                                  \
                          ,Lx0,Ly0,Lz0                                                                                                  \
                          ,DUREE_DE_VIE_Wm                                                                                              \
                          ,v                                                                                                            \
                          ,r                                                                                                            \
                          ,R,V,B                                                                                                        \
                           );                                                                                                           \
                    Eblock                                                                                                              \
                                        /* Procedure de creation et d'initialisation d'un boson 'W'.                                 */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C R E A T I O N   E T   D ' I N I T I A L I S A T I O N   D ' U N   B O S O N   ' Z 0 '  :                                 */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   iZ0(boson_Z0,rv,pap,lo,h,P,x0,y0,z0,Vx0,Vy0,Vz0,Lx0,Ly0,Lz0,v,r,R,V,B)                                                        \
                    Bblock                                                                                                              \
                    iBOSON(boson_Z0                                                                                                     \
                          ,Z0                                                                                                           \
                          ,rv                                                                                                           \
                          ,pap                                                                                                          \
                          ,MASSE_Z0                                                                                                     \
                          ,PORTEE_DE_L_INTERACTION_FAIBLE                                                                               \
                          ,lo                                                                                                           \
                          ,h                                                                                                            \
                          ,SPINs_Z0                                                                                                     \
                          ,ISOSPIN_Z0                                                                                                   \
                          ,NOMBRE_LEPTONIQUE_Z0                                                                                         \
                          ,NOMBRE_BARYONIQUE_Z0                                                                                         \
                          ,P                                                                                                            \
                          ,ETRANGETE_Z0                                                                                                 \
                          ,CHARME_Z0                                                                                                    \
                          ,BEAUTE_Z0                                                                                                    \
                          ,VERITE_Z0                                                                                                    \
                          ,CHARGE_ELECTRIQUE_Z0                                                                                         \
                          ,CHARGE_FAIBLE_Z0                                                                                             \
                          ,cc0,cc0,cc0                                                                                                  \
                          ,x0,y0,z0                                                                                                     \
                          ,Vx0,Vy0,Vz0                                                                                                  \
                          ,Lx0,Ly0,Lz0                                                                                                  \
                          ,DUREE_DE_VIE_Z0                                                                                              \
                          ,v                                                                                                            \
                          ,r                                                                                                            \
                          ,R,V,B                                                                                                        \
                           );                                                                                                           \
                    Eblock                                                                                                              \
                                        /* Procedure de creation et d'initialisation d'un boson 'Z0'.                                */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C R E A T I O N   E T   D ' I N I T I A L I S A T I O N   D ' U N   G L U O N  :                                           */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   iGLUON(gluon,rv,pap,lo,h,P,RV,VB,BR,x0,y0,z0,Vx0,Vy0,Vz0,Lx0,Ly0,Lz0,v,r,R,V,B)                                               \
                    Bblock                                                                                                              \
                    iBOSON(gluon                                                                                                        \
                          ,GLUON                                                                                                        \
                          ,rv                                                                                                           \
                          ,pap                                                                                                          \
                          ,MASSE_GLUON                                                                                                  \
                          ,PORTEE_DE_L_INTERACTION_FORTE                                                                                \
                          ,lo                                                                                                           \
                          ,h                                                                                                            \
                          ,SPINs_GLUON                                                                                                  \
                          ,ISOSPIN_GLUON                                                                                                \
                          ,NOMBRE_LEPTONIQUE_GLUON                                                                                      \
                          ,NOMBRE_BARYONIQUE_GLUON                                                                                      \
                          ,P                                                                                                            \
                          ,ETRANGETE_GLUON                                                                                              \
                          ,CHARME_GLUON                                                                                                 \
                          ,BEAUTE_GLUON                                                                                                 \
                          ,VERITE_GLUON                                                                                                 \
                          ,CHARGE_ELECTRIQUE_GLUON                                                                                      \
                          ,CHARGE_FAIBLE_GLUON                                                                                          \
                          ,RV,VB,BR                                                                                                     \
                          ,x0,y0,z0                                                                                                     \
                          ,Vx0,Vy0,Vz0                                                                                                  \
                          ,Lx0,Ly0,Lz0                                                                                                  \
                          ,DUREE_DE_VIE_GLUON                                                                                           \
                          ,v                                                                                                            \
                          ,r                                                                                                            \
                          ,R,V,B                                                                                                        \
                           );                                                                                                           \
                    Eblock                                                                                                              \
                                        /* Procedure de creation et d'initialisation d'un gluon.                                     */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C R E A T I O N   E T   D ' I N I T I A L I S A T I O N   D ' U N   B O S O N   ' Y '  :                                   */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   iY(boson_Y,rv,pap,lo,h,P,RV,VB,BR,x0,y0,z0,Vx0,Vy0,Vz0,Lx0,Ly0,Lz0,v,r,R,V,B)                                                 \
                    Bblock                                                                                                              \
                    iBOSON(boson_Y                                                                                                      \
                          ,Y                                                                                                            \
                          ,rv                                                                                                           \
                          ,pap                                                                                                          \
                          ,MASSE_Y                                                                                                      \
                          ,PORTEE_DE_X_ET_Y                                                                                             \
                          ,lo                                                                                                           \
                          ,h                                                                                                            \
                          ,SPINs_Y                                                                                                      \
                          ,ISOSPIN_Y                                                                                                    \
                          ,NOMBRE_LEPTONIQUE_Y                                                                                          \
                          ,NOMBRE_BARYONIQUE_Y                                                                                          \
                          ,P                                                                                                            \
                          ,ETRANGETE_Y                                                                                                  \
                          ,CHARME_Y                                                                                                     \
                          ,BEAUTE_Y                                                                                                     \
                          ,VERITE_Y                                                                                                     \
                          ,CHARGE_ELECTRIQUE_Y                                                                                          \
                          ,CHARGE_FAIBLE_Y                                                                                              \
                          ,RV,VB,BR                                                                                                     \
                          ,x0,y0,z0                                                                                                     \
                          ,Vx0,Vy0,Vz0                                                                                                  \
                          ,Lx0,Ly0,Lz0                                                                                                  \
                          ,DUREE_DE_VIE_Y                                                                                               \
                          ,v                                                                                                            \
                          ,r                                                                                                            \
                          ,R,V,B                                                                                                        \
                           );                                                                                                           \
                    Eblock                                                                                                              \
                                        /* Procedure de creation et d'initialisation d'un boson 'Y'.                                 */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C R E A T I O N   E T   D ' I N I T I A L I S A T I O N   D ' U N   B O S O N   ' X '  :                                   */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   iX(boson_X,rv,pap,lo,h,P,RV,VB,BR,x0,y0,z0,Vx0,Vy0,Vz0,Lx0,Ly0,Lz0,v,r,R,V,B)                                                 \
                    Bblock                                                                                                              \
                    iBOSON(boson_X                                                                                                      \
                          ,X                                                                                                            \
                          ,rv                                                                                                           \
                          ,pap                                                                                                          \
                          ,MASSE_X                                                                                                      \
                          ,PORTEE_DE_X_ET_Y                                                                                             \
                          ,lo                                                                                                           \
                          ,h                                                                                                            \
                          ,SPINs_X                                                                                                      \
                          ,ISOSPIN_X                                                                                                    \
                          ,NOMBRE_LEPTONIQUE_X                                                                                          \
                          ,NOMBRE_BARYONIQUE_X                                                                                          \
                          ,P                                                                                                            \
                          ,ETRANGETE_X                                                                                                  \
                          ,CHARME_X                                                                                                     \
                          ,BEAUTE_X                                                                                                     \
                          ,VERITE_X                                                                                                     \
                          ,CHARGE_ELECTRIQUE_X                                                                                          \
                          ,CHARGE_FAIBLE_X                                                                                              \
                          ,RV,VB,BR                                                                                                     \
                          ,x0,y0,z0                                                                                                     \
                          ,Vx0,Vy0,Vz0                                                                                                  \
                          ,Lx0,Ly0,Lz0                                                                                                  \
                          ,DUREE_DE_VIE_X                                                                                               \
                          ,v                                                                                                            \
                          ,r                                                                                                            \
                          ,R,V,B                                                                                                        \
                           );                                                                                                           \
                    Eblock                                                                                                              \
                                        /* Procedure de creation et d'initialisation d'un boson 'X'.                                 */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C R E A T I O N   E T   D ' I N I T I A L I S A T I O N   D ' U N   G R A V I T O N  :                                     */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   iGRAVITON(graviton,rv,pap,lo,h,P,x0,y0,z0,Vx0,Vy0,Vz0,Lx0,Ly0,Lz0,v,r,R,V,B)                                                  \
                    Bblock                                                                                                              \
                    iBOSON(graviton                                                                                                     \
                          ,GRAVITON                                                                                                     \
                          ,rv                                                                                                           \
                          ,pap                                                                                                          \
                          ,MASSE_GRAVITON                                                                                               \
                          ,PORTEE_DE_L_INTERACTION_GRAVITATIONNELLE                                                                     \
                          ,lo                                                                                                           \
                          ,h                                                                                                            \
                          ,SPINs_GRAVITON                                                                                               \
                          ,ISOSPIN_GRAVITON                                                                                             \
                          ,NOMBRE_LEPTONIQUE_GRAVITON                                                                                   \
                          ,NOMBRE_BARYONIQUE_GRAVITON                                                                                   \
                          ,P                                                                                                            \
                          ,ETRANGETE_GRAVITON                                                                                           \
                          ,CHARME_GRAVITON                                                                                              \
                          ,BEAUTE_GRAVITON                                                                                              \
                          ,VERITE_GRAVITON                                                                                              \
                          ,CHARGE_ELECTRIQUE_GRAVITON                                                                                   \
                          ,CHARGE_FAIBLE_GRAVITON                                                                                       \
                          ,cc0,cc0,cc0                                                                                                  \
                          ,x0,y0,z0                                                                                                     \
                          ,Vx0,Vy0,Vz0                                                                                                  \
                          ,Lx0,Ly0,Lz0                                                                                                  \
                          ,DUREE_DE_VIE_GRAVITON                                                                                        \
                          ,v                                                                                                            \
                          ,r                                                                                                            \
                          ,R,V,B                                                                                                        \
                           );                                                                                                           \
                    Eblock                                                                                                              \
                                        /* Procedure de creation et d'initialisation d'un graviton.                                  */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C R E A T I O N   E T   D ' I N I T I A L I S A T I O N   D ' U N   H I G G S  :                                           */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   iHIGGS(higgs,rv,pap,lo,h,P,x0,y0,z0,Vx0,Vy0,Vz0,Lx0,Ly0,Lz0,v,r,R,V,B)                                                        \
                    Bblock                                                                                                              \
                    iBOSON(higgs                                                                                                        \
                          ,HIGGS                                                                                                        \
                          ,rv                                                                                                           \
                          ,pap                                                                                                          \
                          ,MASSE_HIGGS                                                                                                  \
                          ,PORTEE_DE_HIGGS                                                                                              \
                          ,lo                                                                                                           \
                          ,h                                                                                                            \
                          ,SPINs_HIGGS                                                                                                  \
                          ,ISOSPIN_HIGGS                                                                                                \
                          ,NOMBRE_LEPTONIQUE_HIGGS                                                                                      \
                          ,NOMBRE_BARYONIQUE_HIGGS                                                                                      \
                          ,P                                                                                                            \
                          ,ETRANGETE_HIGGS                                                                                              \
                          ,CHARME_HIGGS                                                                                                 \
                          ,BEAUTE_HIGGS                                                                                                 \
                          ,VERITE_HIGGS                                                                                                 \
                          ,CHARGE_ELECTRIQUE_HIGGS                                                                                      \
                          ,CHARGE_FAIBLE_HIGGS                                                                                          \
                          ,cc0,cc0,cc0                                                                                                  \
                          ,x0,y0,z0                                                                                                     \
                          ,Vx0,Vy0,Vz0                                                                                                  \
                          ,Lx0,Ly0,Lz0                                                                                                  \
                          ,DUREE_DE_VIE_HIGGS                                                                                           \
                          ,v                                                                                                            \
                          ,r                                                                                                            \
                          ,R,V,B                                                                                                        \
                           );                                                                                                           \
                    Eblock                                                                                                              \
                                        /* Procedure de creation et d'initialisation d'un Higgs.                                     */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        P R O C E D U R E S   D ' E D I T I O N   D ' U N E   P A R T I C U L E  :                                                 */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   pPARTICULE_TABULATION                                                                                                         \
                    SOUS(SOIXANTE,UN)                                                                                                   \
                                        /* Tabulation d'edition du signe "=" des messages...                                         */
#define   pPARTICULE_ALIGNEMENT                                                                                                         \
                    " ........................................................."                                                        \
                                        /* Tabulation d'edition du signe "=" des messages...                                         */

#define   pPARTICULE_debut(message)                                                                                                     \
                    Bblock                                                                                                              \
                    CAL2(Prin3("%s%.*s = {"                                                                                             \
                              ,message                                                                                                  \
                              ,SOUS(pPARTICULE_TABULATION,chain_Xtaille(message))                                                       \
                              ,pPARTICULE_ALIGNEMENT                                                                                    \
                               )                                                                                                        \
                         );                                                                                                             \
                    Eblock                                                                                                              \
                                        /* Debut de l'edition de quelque chose...                                                    */
#define   pPARTICULE_separateur                                                                                                         \
                    Bblock                                                                                                              \
                    CAL2(Prin0(","));                                                                                                   \
                    Eblock                                                                                                              \
                                        /* Edition d'un separateur a l'interieur d'un vecteur.                                       */
#define   pPARTICULE_fin                                                                                                                \
                    Bblock                                                                                                              \
                    CAL2(Prin0("}\n"));                                                                                                 \
                    Eblock                                                                                                              \
                                        /* Fin de l'edition de quelque chose...                                                      */

#define   pPARTICULE_Int_base(valeur)                                                                                                   \
                    Bblock                                                                                                              \
                    Test(IZNE(valeur))                                                                                                  \
                         Bblock                                                                                                         \
                         Test(IFEQ(ABSO(valeur),UNDEF))                                                                                 \
                              Bblock                                                                                                    \
                              pPARTICULE_CHAR_base(COND(IZGT(valeur),"+indefini","-indefini"));                                         \
                              Eblock                                                                                                    \
                         ATes                                                                                                           \
                              Bblock                                                                                                    \
                              Test(IFEQ(ABSO(valeur),INFINI))                                                                           \
                                   Bblock                                                                                               \
                                   pPARTICULE_CHAR_base(COND(IZGT(valeur),"+infini","-infini"));                                        \
                                   Eblock                                                                                               \
                              ATes                                                                                                      \
                                   Bblock                                                                                               \
                                   CAL2(Prin1("%+d",valeur));                                                                           \
                                   Eblock                                                                                               \
                              ETes                                                                                                      \
                              Eblock                                                                                                    \
                         ETes                                                                                                           \
                         Eblock                                                                                                         \
                    ATes                                                                                                                \
                         Bblock                                                                                                         \
                         CAL2(Prin1("%d",valeur));                                                                                      \
                         Eblock                                                                                                         \
                    ETes                                                                                                                \
                    Eblock                                                                                                              \
                                        /* Edition inconditionnelle d'une valeur entiere signee.                                     */
#define   _pPARTICULE_Int(condition,message,valeur)                                                                                     \
                    Bblock                                                                                                              \
                    Test(EST_VRAI(condition))                                                                                           \
                         Bblock                                                                                                         \
                         pPARTICULE_debut(message);                                                                                     \
                         pPARTICULE_Int_base(valeur);                                                                                   \
                         pPARTICULE_fin;                                                                                                \
                         Eblock                                                                                                         \
                    ATes                                                                                                                \
                         Bblock                                                                                                         \
                         Eblock                                                                                                         \
                    ETes                                                                                                                \
                    Eblock                                                                                                              \
                                        /* Edition d'une valeur entiere.                                                             */
#define   pPARTICULE_rationnel_base(valeur,denominator)                                                                                 \
                    Bblock                                                                                                              \
                    Test(IFET(IZNE(valeur),IZNE(denominator)))                                                                          \
                         Bblock                                                                                                         \
                         Test(IFET(EST_ENTIER(valeur),DIVISIBLE(FRACTION(valeur,denominator),denominator)))                             \
                              Bblock                                                                                                    \
                              pPARTICULE_Int_base(INTE(valeur));                                                                        \
                              Eblock                                                                                                    \
                         ATes                                                                                                           \
                              Bblock                                                                                                    \
                              CAL2(Prin2("%+d/%d",FRACTION(valeur,denominator),INTE(denominator)));                                     \
                              Eblock                                                                                                    \
                         ETes                                                                                                           \
                         Eblock                                                                                                         \
                    ATes                                                                                                                \
                         Bblock                                                                                                         \
                         pPARTICULE_Int_base(INTE(valeur));                                                                             \
                         Eblock                                                                                                         \
                    ETes                                                                                                                \
                    Eblock                                                                                                              \
                                        /* Edition inconditionnelle d'une valeur rationnelle.                                        */
#define   _pPARTICULE_rationnel(condition,message,valeur,denominator)                                                                   \
                    Bblock                                                                                                              \
                    Test(EST_VRAI(condition))                                                                                           \
                         Bblock                                                                                                         \
                         pPARTICULE_debut(message);                                                                                     \
                         pPARTICULE_rationnel_base(valeur,denominator);                                                                 \
                         pPARTICULE_fin;                                                                                                \
                         Eblock                                                                                                         \
                    ATes                                                                                                                \
                         Bblock                                                                                                         \
                         Eblock                                                                                                         \
                    ETes                                                                                                                \
                    Eblock                                                                                                              \
                                        /* Edition d'une valeur rationnelle.                                                         */

#define   pPARTICULE_Float_base(valeur)                                                                                                 \
                    Bblock                                                                                                              \
                    Test(IZNE(valeur))                                                                                                  \
                         Bblock                                                                                                         \
                         Test(IFEQ(ABSO(valeur),FLOT__UNDEF))                                                                           \
                              Bblock                                                                                                    \
                              pPARTICULE_CHAR_base(COND(IZGT(valeur),"+indefini","-indefini"));                                         \
                              Eblock                                                                                                    \
                         ATes                                                                                                           \
                              Bblock                                                                                                    \
                              Test(IFEQ(ABSO(valeur),F_INFINI))                                                                         \
                                   Bblock                                                                                               \
                                   pPARTICULE_CHAR_base(COND(IZGT(valeur),"+infini","-infini"));                                        \
                                   Eblock                                                                                               \
                              ATes                                                                                                      \
                                   Bblock                                                                                               \
                                   CAL2(Prin1("%+g",valeur));                                                                           \
                                   Eblock                                                                                               \
                              ETes                                                                                                      \
                              Eblock                                                                                                    \
                         ETes                                                                                                           \
                         Eblock                                                                                                         \
                    ATes                                                                                                                \
                         Bblock                                                                                                         \
                         CAL2(Prin1("%g",valeur));                                                                                      \
                         Eblock                                                                                                         \
                    ETes                                                                                                                \
                    Eblock                                                                                                              \
                                        /* Edition inconditionnelle d'une valeur flottante.                                          */
#define   _pPARTICULE_Float(condition,message,valeur)                                                                                   \
                    Bblock                                                                                                              \
                    Test(EST_VRAI(condition))                                                                                           \
                         Bblock                                                                                                         \
                         pPARTICULE_debut(message);                                                                                     \
                         pPARTICULE_Float_base(valeur);                                                                                 \
                         pPARTICULE_fin;                                                                                                \
                         Eblock                                                                                                         \
                    ATes                                                                                                                \
                         Bblock                                                                                                         \
                         Eblock                                                                                                         \
                    ETes                                                                                                                \
                    Eblock                                                                                                              \
                                        /* Edition d'une valeur flottante.                                                           */
#define   _pPARTICULE_rationnel_vecteur(condition,message,composante_1,composante_2,composante_3,denominator)                           \
                    Bblock                                                                                                              \
                    Test(EST_VRAI(condition))                                                                                           \
                         Bblock                                                                                                         \
                         pPARTICULE_debut(message);                                                                                     \
                         pPARTICULE_rationnel_base(composante_1,denominator);                                                           \
                         pPARTICULE_separateur;                                                                                         \
                         pPARTICULE_rationnel_base(composante_2,denominator);                                                           \
                         pPARTICULE_separateur;                                                                                         \
                         pPARTICULE_rationnel_base(composante_3,denominator);                                                           \
                         pPARTICULE_fin;                                                                                                \
                         Eblock                                                                                                         \
                    ATes                                                                                                                \
                         Bblock                                                                                                         \
                         Eblock                                                                                                         \
                    ETes                                                                                                                \
                    Eblock                                                                                                              \
                                        /* Edition d'un vecteur rationnel.                                                           */
#define   _pPARTICULE_Float_vecteur(condition,message,composante_1,composante_2,composante_3)                                           \
                    Bblock                                                                                                              \
                    Test(EST_VRAI(condition))                                                                                           \
                         Bblock                                                                                                         \
                         pPARTICULE_debut(message);                                                                                     \
                         pPARTICULE_Float_base(composante_1);                                                                           \
                         pPARTICULE_separateur;                                                                                         \
                         pPARTICULE_Float_base(composante_2);                                                                           \
                         pPARTICULE_separateur;                                                                                         \
                         pPARTICULE_Float_base(composante_3);                                                                           \
                         pPARTICULE_fin;                                                                                                \
                         Eblock                                                                                                         \
                    ATes                                                                                                                \
                         Bblock                                                                                                         \
                         Eblock                                                                                                         \
                    ETes                                                                                                                \
                    Eblock                                                                                                              \
                                        /* Edition d'un vecteur flottant.                                                            */

#define   pPARTICULE_CHAR_base(valeur)                                                                                                  \
                    Bblock                                                                                                              \
                    CAL2(Prin1("%s",valeur));                                                                                           \
                    Eblock                                                                                                              \
                                        /* Edition inconditionnelle d'une valeur chaine de caractere.                                */
#define   _pPARTICULE_CHAR(condition,message,valeur)                                                                                    \
                    Bblock                                                                                                              \
                    Test(EST_VRAI(condition))                                                                                           \
                         Bblock                                                                                                         \
                         pPARTICULE_debut(message);                                                                                     \
                         pPARTICULE_CHAR_base(valeur);                                                                                  \
                         pPARTICULE_fin;                                                                                                \
                         Eblock                                                                                                         \
                    ATes                                                                                                                \
                         Bblock                                                                                                         \
                         Eblock                                                                                                         \
                    ETes                                                                                                                \
                    Eblock                                                                                                              \
                                        /* Edition d'une valeur chaine de caractere.                                                 */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        E D I T I O N   D ' U N E   P A R T I C U L E  :                                                                           */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   pPARTICULE(particule)                                                                                                         \
                    Bblock                                                                                                              \
                    CAL2(Prin0("\n"));                                                                                                  \
                                                                                                                                        \
                    pPARTICULE_Int(TOUJOURS_VRAI,"etiquette",ETIQUETTE(particule));                                                     \
                                        /* Identification "logique" de la particule.                                                 */ \
                                                                                                                                        \
                    CAL2(Prin0("\n"));                                                                                                  \
                                                                                                                                        \
                    pPARTICULE_CHAR(IFEQ(NOM(particule),QUARK_u),"saveur","QUARK u");                                                   \
                    pPARTICULE_CHAR(IFEQ(NOM(particule),QUARK_d),"saveur","QUARK d");                                                   \
                    pPARTICULE_CHAR(IFEQ(NOM(particule),QUARK_c),"saveur","QUARK c");                                                   \
                    pPARTICULE_CHAR(IFEQ(NOM(particule),QUARK_s),"saveur","QUARK s");                                                   \
                    pPARTICULE_CHAR(IFEQ(NOM(particule),QUARK_t),"saveur","QUARK t");                                                   \
                    pPARTICULE_CHAR(IFEQ(NOM(particule),QUARK_b),"saveur","QUARK b");                                                   \
                    pPARTICULE_CHAR(IFEQ(NOM(particule),LEPTON_electron),"saveur","LEPTON electron");                                   \
                    pPARTICULE_CHAR(IFEQ(NOM(particule),LEPTON_NEUTRINO_electron),"saveur","LEPTON NEUTRINO electron");                 \
                    pPARTICULE_CHAR(IFEQ(NOM(particule),LEPTON_muon),"saveur","LEPTON muon");                                           \
                    pPARTICULE_CHAR(IFEQ(NOM(particule),LEPTON_NEUTRINO_muon),"saveur","LEPTON NEUTRINO muon");                         \
                    pPARTICULE_CHAR(IFEQ(NOM(particule),LEPTON_tau),"saveur","LEPTON tau");                                             \
                    pPARTICULE_CHAR(IFEQ(NOM(particule),LEPTON_NEUTRINO_tau),"saveur","LEPTON NEUTRINO tau");                           \
                    pPARTICULE_CHAR(IFEQ(NOM(particule),PHOTON),"saveur","PHOTON");                                                     \
                    pPARTICULE_CHAR(IFEQ(NOM(particule),Wm),"saveur","Wm");                                                             \
                    pPARTICULE_CHAR(IFEQ(NOM(particule),Z0),"saveur","Z0");                                                             \
                    pPARTICULE_CHAR(IFEQ(NOM(particule),GLUON),"saveur","GLUON");                                                       \
                    pPARTICULE_CHAR(IFEQ(NOM(particule),Y),"saveur","Y");                                                               \
                    pPARTICULE_CHAR(IFEQ(NOM(particule),X),"saveur","X");                                                               \
                    pPARTICULE_CHAR(IFEQ(NOM(particule),GRAVITON),"saveur","GRAVITON");                                                 \
                    pPARTICULE_CHAR(IFEQ(NOM(particule),HIGGS),"saveur","HIGGS");                                                       \
                                                                                                                                        \
                    CAL2(Prin0("\n"));                                                                                                  \
                                                                                                                                        \
                    pPARTICULE_CHAR(IFEQ(REELLE_OU_VIRTUELLE(particule),REELLE),"etat","Particule reelle");                             \
                    pPARTICULE_CHAR(IFEQ(REELLE_OU_VIRTUELLE(particule),VIRTUELLE),"etat","Particule virtuelle");                       \
                                        /* Identification "physique" de la particule. ATTENTION au 'P' majuscule de 'Particule'      */ \
                                        /* destine a bloquer la substitution par le 'particule' argument de 'pPARTICULE(...).        */ \
                                                                                                                                        \
                    pPARTICULE_CHAR(IFEQ(BOSON_OU_FERMION(particule),BOSON),"statistique","boson");                                     \
                    pPARTICULE_CHAR(IFEQ(BOSON_OU_FERMION(particule),FERMION),"statistique","fermion");                                 \
                                        /* Definition de la statistique a laquelle est soumise la particule (quantite "derivee"...). */ \
                                                                                                                                        \
                    CAL2(Prin0("\n"));                                                                                                  \
                                                                                                                                        \
                    pPARTICULE_Int(TOUJOURS_VRAI,"nombre leptonique",NOMBRE_LEPTONIQUE(particule));                                     \
                    pPARTICULE_rationnel(TOUJOURS_VRAI                                                                                  \
                                        ,"nombre baryonique"                                                                            \
                                        ,NOMBRE_BARYONIQUE(particule)                                                                   \
                                        ,NOMBRE_DE_QUARKS_DANS_UN_BARYON                                                                \
                                         );                                                                                             \
                                                                                                                                        \
                    CAL2(Prin0("\n"));                                                                                                  \
                                                                                                                                        \
                    pPARTICULE_CHAR(IFEQ(HELICITE(particule),DROITE),"helicite 'h'","droite");                                          \
                    pPARTICULE_CHAR(IFEQ(HELICITE(particule),GAUCHE),"helicite 'h'","gauche");                                          \
                    pPARTICULE_CHAR(IFEQ(PARITE(particule),PAIRE),"parite 'P'","paire");                                                \
                    pPARTICULE_CHAR(IFEQ(PARITE(particule),IMPAIRE),"parite 'P'","impaire");                                            \
                                                                                                                                        \
                    CAL2(Prin0("\n"));                                                                                                  \
                                                                                                                                        \
                    pPARTICULE_Int(TOUJOURS_VRAI,"spins 's' (entier)",SPINs(particule));                                                \
                    pPARTICULE_rationnel(TOUJOURS_VRAI                                                                                  \
                                        ,"spin 'J' (demi-entier)"                                                                       \
                                        ,SPIN(particule)                                                                                \
                                        ,INVERSE_DE_L_UNITE_DE_SPIN                                                                     \
                                         );                                                                                             \
                    pPARTICULE_rationnel(TOUJOURS_VRAI,"isospin 'T'",ISOSPIN(particule),INVERSE_DE_L_UNITE_D_ISOSPIN);                  \
                    pPARTICULE_Int(TOUJOURS_VRAI,"etrangete 'S'",ETRANGETE(particule));                                                 \
                    pPARTICULE_Int(TOUJOURS_VRAI,"charme 'c'",CHARME(particule));                                                       \
                    pPARTICULE_Int(TOUJOURS_VRAI,"beaute 'b'",BEAUTE(particule));                                                       \
                    pPARTICULE_Int(TOUJOURS_VRAI,"verite 't'",VERITE(particule));                                                       \
                    pPARTICULE_Int(TOUJOURS_VRAI,"hypercharge 'Y'",HYPERCHARGE(particule));                                             \
                                        /* Definition des nombres quantiques principaux.                                             */ \
                                                                                                                                        \
                    CAL2(Prin0("\n"));                                                                                                  \
                                                                                                                                        \
                    pPARTICULE_rationnel(TOUJOURS_VRAI                                                                                  \
                                        ,"charge electrique 'ce'"                                                                       \
                                        ,CHARGE_ELECTRIQUE(particule)                                                                   \
                                        ,INVERSE_DE_L_UNITE_DE_CHARGE_ELECTRIQUE                                                        \
                                         );                                                                                             \
                    pPARTICULE_rationnel(TOUJOURS_VRAI                                                                                  \
                                        ,"charge faible 'cf'"                                                                           \
                                        ,CHARGE_FAIBLE(particule)                                                                       \
                                        ,INVERSE_DE_L_UNITE_DE_CHARGE_FAIBLE                                                            \
                                         );                                                                                             \
                    pPARTICULE_rationnel_vecteur(TOUJOURS_VRAI                                                                          \
                                                ,"charge de couleur 'cc' [R-V,V-B,B-R]"                                                 \
                                                ,CHARGE_DE_COULEUR_R_V(particule)                                                       \
                                                ,CHARGE_DE_COULEUR_V_B(particule)                                                       \
                                                ,CHARGE_DE_COULEUR_B_R(particule)                                                       \
                                                ,INVERSE_DE_L_UNITE_DE_CHARGE_DE_COULEUR                                                \
                                                 );                                                                                     \
                                        /* Definition des differentes charges.                                                       */ \
                                                                                                                                        \
                    CAL2(Prin0("\n"));                                                                                                  \
                                                                                                                                        \
                    pPARTICULE_Float(TOUJOURS_VRAI,"masse au repos 'm0' (kilogramme)",MASSE_AU_REPOS(particule));                       \
                    pPARTICULE_Float(TOUJOURS_VRAI,"masse relativiste 'm' (kilogramme)",MASSE_RELATIVISTE(particule));                  \
                    pPARTICULE_Float(TOUJOURS_VRAI,"energie 'E' (joule)",ENERGIE(particule));                                           \
                    pPARTICULE_Float(IFEQ(BOSON_OU_FERMION(particule),BOSON),"portee 'p'",PORTEE_DE_L_INTERACTION(particule));          \
                                        /* Definition de la masse de la particule.                                                   */ \
                                                                                                                                        \
                    pPARTICULE_Float(TOUJOURS_VRAI,"longueur d'onde 'lambda' (metre)",LONGUEUR_D_ONDE(particule));                      \
                                        /* Definition de la longueur d'onde de la particule (equivalence onde-corpuscule...).        */ \
                                                                                                                                        \
                    CAL2(Prin0("\n"));                                                                                                  \
                                                                                                                                        \
                    pPARTICULE_Float(TOUJOURS_VRAI,"date de naissance (seconde)",DATE_DE_NAISSANCE(particule));                         \
                    pPARTICULE_Float(TOUJOURS_VRAI,"duree de vie (seconde)",DUREE_DE_VIE(particule));                                   \
                                                                                                                                        \
                    CAL2(Prin0("\n"));                                                                                                  \
                                                                                                                                        \
                    pPARTICULE_Float_vecteur(TOUJOURS_VRAI                                                                              \
                                            ,"position initiale (metre)"                                                                \
                                            ,POSITION_INITIALE_X(particule)                                                             \
                                            ,POSITION_INITIALE_Y(particule)                                                             \
                                            ,POSITION_INITIALE_Z(particule)                                                             \
                                             );                                                                                         \
                    pPARTICULE_Float_vecteur(TOUJOURS_VRAI                                                                              \
                                            ,"position courante (metre)"                                                                \
                                            ,POSITION_COURANTE_X(particule)                                                             \
                                            ,POSITION_COURANTE_Y(particule)                                                             \
                                            ,POSITION_COURANTE_Z(particule)                                                             \
                                             );                                                                                         \
                                        /* Definition des coordonnees spatio-temporelles.                                            */ \
                                                                                                                                        \
                    pPARTICULE_Float_vecteur(TOUJOURS_VRAI                                                                              \
                                            ,"vitesse initiale 'V0' (metre par seconde)"                                                \
                                            ,VITESSE_INITIALE_X(particule)                                                              \
                                            ,VITESSE_INITIALE_Y(particule)                                                              \
                                            ,VITESSE_INITIALE_Z(particule)                                                              \
                                             );                                                                                         \
                    pPARTICULE_Float_vecteur(TOUJOURS_VRAI                                                                              \
                                            ,"vitesse courante 'V' (metre par seconde)"                                                 \
                                            ,VITESSE_COURANTE_X(particule)                                                              \
                                            ,VITESSE_COURANTE_Y(particule)                                                              \
                                            ,VITESSE_COURANTE_Z(particule)                                                              \
                                             );                                                                                         \
                    pPARTICULE_CHAR(IFEQ_a_peu_pres_absolu(MODULE_DE_LA_VITESSE_COURANTE(particule)                                     \
                                                          ,VITESSE_DE_LA_LUMIERE                                                        \
                                                          ,FRACTION_DE_LA_VITESSE_DE_LA_LUMIERE                                         \
                                                           )                                                                            \
                                   ,"module de la vitesse 'v' (metre par seconde)"                                                      \
                                   ,"c"                                                                                                 \
                                    );                                                                                                  \
                    pPARTICULE_Float(IFNE_a_peu_pres_absolu(MODULE_DE_LA_VITESSE_COURANTE(particule)                                    \
                                                           ,VITESSE_DE_LA_LUMIERE                                                       \
                                                           ,FRACTION_DE_LA_VITESSE_DE_LA_LUMIERE                                        \
                                                            )                                                                           \
                                    ,"module de la vitesse 'v' (metre par seconde)"                                                     \
                                    ,MODULE_DE_LA_VITESSE_COURANTE(particule)                                                           \
                                     );                                                                                                 \
                    pPARTICULE_Float_vecteur(TOUJOURS_VRAI                                                                              \
                                            ,"quantite de mouvement 'P' (kilogramme metre par seconde)"                                 \
                                            ,QUANTITE_DE_MOUVEMENT_X(particule)                                                         \
                                            ,QUANTITE_DE_MOUVEMENT_Y(particule)                                                         \
                                            ,QUANTITE_DE_MOUVEMENT_Z(particule)                                                         \
                                             );                                                                                         \
                                        /* Definition des coordonnees spatio-temporelles "derivees" et relativistes...               */ \
                                                                                                                                        \
                    pPARTICULE_Float_vecteur(TOUJOURS_VRAI                                                                              \
                                            ,"moment cinetique 'L' (kilogramme metre carre par seconde)"                                \
                                            ,MOMENT_CINETIQUE_X(particule)                                                              \
                                            ,MOMENT_CINETIQUE_Y(particule)                                                              \
                                            ,MOMENT_CINETIQUE_Z(particule)                                                              \
                                             );                                                                                         \
                                                                                                                                        \
                    pPARTICULE_Float_vecteur(TOUJOURS_VRAI                                                                              \
                                            ,"moment magnetique 'M' (ampere metre carre)"                                               \
                                            ,MOMENT_MAGNETIQUE_X(particule)                                                             \
                                            ,MOMENT_MAGNETIQUE_Y(particule)                                                             \
                                            ,MOMENT_MAGNETIQUE_Z(particule)                                                             \
                                             );                                                                                         \
                                        /* Definition des moments cinetique et magnetique.                                           */ \
                                                                                                                                        \
                    CAL2(Prin0("\n"));                                                                                                  \
                                                                                                                                        \
                    pPARTICULE_CHAR(IFEQ(VISUALISER(particule),VRAI),"visualiser","oui");                                               \
                    pPARTICULE_CHAR(IFEQ(VISUALISER(particule),FAUX),"visualiser","non");                                               \
                    pPARTICULE_Float(TOUJOURS_VRAI,"rayon 'r' (metre)",RAYON(particule));                                               \
                    pPARTICULE_Float_vecteur(IL_FAUT(VISUALISER(particule))                                                             \
                                            ,"couleur de visualisation"                                                                 \
                                            ,COULEUR_ROUGE(particule),COULEUR_VERTE(particule),COULEUR_BLEUE(particule)                 \
                                             );                                                                                         \
                                        /* Definition de la visualisation de la particule.                                           */ \
                                                                                                                                        \
                    CAL2(Prin0("\n"));                                                                                                  \
                    Eblock                                                                                                              \
                                        /* Procedure d'edition d'une particule quelconque...                                         */



Copyright © Jean-François COLONNA, 2019-2024.
Copyright © CMAP (Centre de Mathématiques APpliquées) UMR CNRS 7641 / École polytechnique, Institut Polytechnique de Paris, 2019-2024.