/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D E F I N I T I O N S   D E S   D E S C R I P T I O N S   D E S   P A R T I C U L E S  :                                   */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Author of '$xrq/nucleon.L5$I' :                                                                                            */
/*                                                                                                                                   */
/*                    Jean-Francois Colonna (LACTAMME, 1991??????????).                                                              */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D E F I N I T I O N   D E   L A   D I S T A N C E   P A R C O U R U E  :                                                   */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   DISTANCE_PARCOURUE(v,dt)                                                                                                      \
                    MUL2(v,dt)                                                                                                          \
                                        /* Definition de la distance parcourue pendant un temps 'dt' par un mobile se deplacant a    */ \
                                        /* la vitesse 'v'.                                                                           */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        A D D I T I O N   R E L A T I V I S T E   D E S   V I T E S S E S  :                                                       */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   COMPOSITION_RELATIVISTE_DES_VITESSES(v1,v2)                                                                                   \
                    DIVI(ADD2(v1,v2)                                                                                                    \
                        ,ADD2(FU                                                                                                        \
                             ,DIVI(MUL2(v1,v2)                                                                                          \
                                  ,EXP2(VITESSE_DE_LA_LUMIERE)                                                                          \
                                   )                                                                                                    \
                              )                                                                                                         \
                         )                                                                                                              \
                                        /* Loi de composition relativiste des vitesses :                                             */ \
                                        /*                                                                                           */ \
                                        /*                                   V  + V                                                  */ \
                                        /*                                    1    2                                                 */ \
                                        /*                  V  + V   --> ---------------                                             */ \
                                        /*                   1    2            V  x V                                                */ \
                                        /*                                      1    2                                               */ \
                                        /*                                1 + ---------                                              */ \
                                        /*                                         2                                                 */ \
                                        /*                                        C                                                  */ \
                                        /*                                                                                           */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D E F I N I T I O N   D ' U N  E V E N T U E L   C H A M P   E L E C T R O M A G N E T I Q U E  :                          */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   CHAMP_ELECTRIQUE_X                                                                                                            \
                    FZERO
#define   CHAMP_ELECTRIQUE_Y                                                                                                            \
                    FZERO
#define   CHAMP_ELECTRIQUE_Z                                                                                                            \
                    FZERO
DEFV(Local,DEFV(Float,INIT(champ_electrique_X,CHAMP_ELECTRIQUE_X)));
DEFV(Local,DEFV(Float,INIT(champ_electrique_Y,CHAMP_ELECTRIQUE_Y)));
DEFV(Local,DEFV(Float,INIT(champ_electrique_Z,CHAMP_ELECTRIQUE_Z)));
DEFV(Local,DEFV(deltaF_3D,champ_electrique));
                                        /*                  -->                                                                      */
                                        /* Champ electrique  E  implicite.                                                           */
#define   CHAMP_MAGNETIQUE_X                                                                                                            \
                    FZERO
#define   CHAMP_MAGNETIQUE_Y                                                                                                            \
                    FZERO
#define   CHAMP_MAGNETIQUE_Z                                                                                                            \
                    FZERO
DEFV(Local,DEFV(Float,INIT(champ_magnetique_X,CHAMP_MAGNETIQUE_X)));
DEFV(Local,DEFV(Float,INIT(champ_magnetique_Y,CHAMP_MAGNETIQUE_Y)));
DEFV(Local,DEFV(Float,INIT(champ_magnetique_Z,CHAMP_MAGNETIQUE_Z)));
DEFV(Local,DEFV(deltaF_3D,champ_magnetique));
                                        /*                  -->                                                                      */
                                        /* Champ electrique  B  implicite.                                                           */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D E F I N I T I O N   D E S   C O O R D O N N E S   D ' E S P A C E - T E M P S   D ' U N E   P A R T I C U L E  :         */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
Dstruct07(_coordonnees
         ,DEFV(Float,date_de_naissance)
                                        /* Date de naissance d'un objet.                                                             */
         ,DEFV(Float,duree_de_vie_moyenne_initiale)
                                        /* Valeur initiale de la duree de vie moyenne d'une particule ; il est necessaire de la      */
                                        /* memoriser pour chaque particule, car en effet, 'duree_de_vie_moyenne_courante' peut       */
                                        /* augmenter au cours du temps lorsque, par exemple une particule 'Q' ou 'AQ' est "visee"    */
                                        /* par un 'G'. Or rien empeche qu'un meme 'Q' ou 'AQ' soit "vise" par plusieurs 'G' ; si     */
                                        /* tel est le cas, il ne faut pas que 'duree_de_vie_moyenne_courante' augmente demesurement  */
                                        /* dans 'ALLONGEMENT_DE_LA_DUREE_DE_VIE_MOYENNE(...)', la comparaison relative des deux      */
                                        /* valeurs 'duree_de_vie_moyenne_initiale' et  'duree_de_vie_moyenne_courante' permet de     */
                                        /* savoir ou l'on en est...                                                                  */
         ,DEFV(Float,duree_de_vie_moyenne_courante)
                                        /* Duree de vie moyenne d'un objet ; celle-ci peut etre modifiee au cours de sa vie, et en   */
                                        /* particulier augmentee (c'est par exemple le cas des particules 'Q', 'AQ' ou 'G' qui sont  */
                                        /* en attente de collisions apres 'INTERCEPTION_PARTICULE_PAR_UN_GLUON(...)').               */
         ,DEFV(pointF_3D,position_initiale)
                                        /*                                                     3                                     */
                                        /* Definition de la position initiale d'un objet dans R  (si tant est que l'on               */
                                        /* puisse parler de "position absolue" pour un objet quantique...).                          */
         ,DEFV(pointF_3D,position_courante)
                                        /*                                                     3                                     */
                                        /* definition de la position courante d'un objet dans R  (si tant est que l'on               */
                                        /* puisse parler de "position absolue" pour un objet quantique...).                          */
         ,DEFV(deltaF_3D,vitesse)
                                        /* Definition de la vitesse d'un objet (meme remarque que ci-dessus...).                     */
         ,DEFV(deltaF_3D,moment_angulaire)
                                        /* Definition du moment angulaire d'un objet (meme remarque que ci-dessus...).               */
         ,NOM_VIDE
          );
Typedef(coordonnees,STRU(_coordonnees))
                                        /* Definition d'un objet dans l'espace-temps.                                                */
#define   COORDONNEES(particule,xyz)                                                                                                    \
                    ASI3(particule,espace_temps,position_courante,xyz)                                                                  \
                                        /* Acces a l'une des coordonnees courantes d'une particule...                                */
#define   DEFINITION_D_UNE_POSITION(position,x,y,z)                                                                                     \
                    DEFV(pointF_3D,INIS(position,IstructL03(x,y,z)));                                                                   \
                                        /* Definition d'une position quelconque...                                                   */
#define   DEFINITION_D_UNE_POSITION_INDEFINIE(position_indefinie)                                                                       \
                    DEFINITION_D_UNE_POSITION(position_indefinie,Xcentre_ESPACE,Ycentre_ESPACE,Zcentre_ESPACE);                         \
                                        /* Definition d'une position indefinie ; on choisit (Xcentre,Ycentre,Zcentre) afin d'eviter  */ \
                                        /* d'eventuels problemes arithmetiques avec (FLOT__UNDEF,FLOT__UNDEF,FLOT__UNDEF)...         */ \
                                        /* ATTENTION, il y avait autrefois :                                                         */ \
                                        /*                                                                                           */ \
                                        /*                  DEFINITION_D_UNE_POSITION(position_indefinie                             */ \
                                        /*                                           ,DOUB(Xmax_ESPACE)                              */ \
                                        /*                                           ,DOUB(Ymax_ESPACE)                              */ \
                                        /*                                           ,DOUB(Zmax_ESPACE)                              */ \
                                        /*                                            );                                             */ \
                                        /*                                                                                           */ \
                                        /* mais, il vaut mieux utiliser (Xcentre,Ycentre,Zcentre) qui sont des constantes absolues.  */ \
                                        /* En effet, si l'on se refere a ((Xmin,Xmax),(Ymin,Ymax)) (et non plus aux definitions      */ \
                                        /* relatives au 'pal'), la definition de l'espace n'est plus une constante, puisque son      */ \
                                        /* format 'FORMAT_DES_IMAGES' ne l'est plus...                                               */
DEFINITION_D_UNE_POSITION_INDEFINIE(position_indefinie);
                                        /* Definition d'une position indefinie...                                                    */
#define   DEFINITION_D_UNE_VITESSE(vitesse,vx,vy,vz)                                                                                    \
                    DEFV(deltaF_3D,INIS(vitesse,IstructL03(vx,vy,vz)));                                                                 \
                                        /* Definition d'une vitesse quelconque...                                                    */
#define   DEFINITION_D_UNE_VITESSE_NULLE(vitesse_nulle)                                                                                 \
                    DEFINITION_D_UNE_VITESSE(vitesse_nulle,FZERO,FZERO,FZERO);                                                          \
                                        /* Definition d'une vitesse nulle...                                                         */
DEFINITION_D_UNE_VITESSE_NULLE(vitesse_nulle);
                                        /* Definition d'une vitesse nulle pour les objets (dans le cas des gluons qui se deplacent   */
                                        /* toujours a la vitesse de la lumiere, ce n'est pas philosophiquement genant, car en effet, */
                                        /* c'est seulement pour initialiser...).                                                     */
#define   DEFINITION_D_UNE_VITESSE_INDEFINIE(vitesse_indefinie)                                                                         \
                    DEFINITION_D_UNE_VITESSE(vitesse_indefinie,FZERO,FZERO,FZERO);                                                      \
                                        /* Definition d'une vitesse indefinie ; on choisit (0,0,0) afin d'eviter d'eventuels         */ \
                                        /* problemes arithmetiques avec (FLOT__UNDEF,FLOT__UNDEF,FLOT__UNDEF)...                     */
DEFINITION_D_UNE_VITESSE_INDEFINIE(vitesse_indefinie);
                                        /* Definition d'une vitesse indefinie pour les objets ; celle-ci risque d'etre superieure    */
                                        /* a la vitesse de la lumiere, mais c'est juste un indicateur de l'etat indefini...          */
#define   DEFINITION_D_UN_MOMENT_ANGULAIRE(moment_angulaire,mx,my,mz)                                                                   \
                    DEFV(deltaF_3D,INIS(moment_angulaire,IstructL03(mx,my,mz)));                                                        \
                                        /* Definition d'un moment angulaire quelconque...                                            */
#define   DEFINITION_D_UN_MOMENT_ANGULAIRE_INDEFINI(moment_angulaire_indefini)                                                          \
                    DEFINITION_D_UN_MOMENT_ANGULAIRE(moment_angulaire_indefini,FZERO,FZERO,FZERO);                                      \
                                        /* Definition d'un moment angulaire indefini ; on choisit (0,0,0) afin d'eviter d'eventuels  */ \
                                        /* problemes arithmetiques avec (FLOT__UNDEF,FLOT__UNDEF,FLOT__UNDEF)...                     */
DEFINITION_D_UN_MOMENT_ANGULAIRE_INDEFINI(moment_angulaire_indefini);
                                        /* Definition d'un moment angulaire indefini pour les objets.                                */
#define   DEFINITION_D_UNE_DIRECTION_EN_COORDONNEES_SPHERIQUES(rho,theta,phi)                                                           \
                    DEFV(Float,INIT(rho,FLOT__UNDEF));                                                                                  \
                    DEFV(Float,INIT(theta,FLOT__UNDEF));                                                                                \
                    DEFV(Float,INIT(phi,FLOT__UNDEF));                                                                                  \
                                        /* Definition des composantes d'une direction en coordonnees spheriques {rho,theta,phi}.     */
#define   INITIALISATION_DE_LA_DUREE_DE_VIE_MOYENNE(objet,pd)                                                                           \
                    Bblock                                                                                                              \
                    EGAL(ASD1(objet,duree_de_vie_moyenne_initiale),pd);                                                                 \
                    EGAL(ASD1(objet,duree_de_vie_moyenne_courante),pd);                                                                 \
                    Eblock                                                                                                              \
                                        /* Initialisation de la duree de vie moyenne d'un objet.                                     */
#define   INITIALISATION_DE_LA_DATE_DE_NAISSANCE(objet,pt)                                                                              \
                    Bblock                                                                                                              \
                    EGAL(ASD1(objet,date_de_naissance),pt);                                                                             \
                    Eblock                                                                                                              \
                                        /* Initialisation de la date de naissance d'un objet.                                        */
#define   INITIALISATION_D_UNE_POSITION_QUELCONQUE(position,px,py,pz)                                                                   \
                    Bblock                                                                                                              \
                    INITIALISATION_POINT_3D(position,px,py,pz);                                                                         \
                    Eblock                                                                                                              \
                                        /* Initialisation d'une position quelconque ; cette procedure a ete introduite en partie a   */ \
                                        /* cause du probleme de l'initialisation de la position des trois quarks REELs constitutifs  */ \
                                        /* du proton, les compilateurs n'acceptant pas l'initialisation des structures utilisees     */ \
                                        /* pour les positions a l'aide d'expressions compliquees contenant des fonctions (en         */ \
                                        /* particulier, des lignes trigonometriques) car ces dernieres doivent etre evaluees         */ \
                                        /* des la compilation...                                                                     */
#define   INITIALISATION_DE_LA_POSITION_INITIALE(objet,position_initiale_de_l_objet)                                                    \
                    Bblock                                                                                                              \
                    INITIALISATION_D_UNE_POSITION_QUELCONQUE(ASD1(objet,position_initiale)                                              \
                                                            ,ASD1(position_initiale_de_l_objet,x)                                       \
                                                            ,ASD1(position_initiale_de_l_objet,y)                                       \
                                                            ,ASD1(position_initiale_de_l_objet,z)                                       \
                                                             );                                                                         \
                    Eblock                                                                                                              \
                                        /* Initialisation de la position initiale d'un objet.                                        */
#define   INITIALISATION_DE_LA_POSITION_COURANTE(objet)                                                                                 \
                    Bblock                                                                                                              \
                    TRANSFERT_POINT_3D(ASD1(objet,position_courante),ASD1(objet,position_initiale));                                    \
                    Eblock                                                                                                              \
                                        /* Initialisation de la position courante d'un objet a partir de sa position initiale.       */
#define   INITIALISATION_D_UNE_VITESSE_QUELCONQUE(vitesse,vx,vy,vz)                                                                     \
                    Bblock                                                                                                              \
                    INITIALISATION_ACCROISSEMENT_3D(vitesse,vx,vy,vz);                                                                  \
                    Eblock                                                                                                              \
                                        /* Initialisation d'une vitesse quelconque ; cette procedure a ete introduite en partie a    */ \
                                        /* cause du probleme de l'initialisation de la position des trois quarks REELs constitutifs  */ \
                                        /* du proton, les compilateurs n'acceptant pas l'initialisation des structures utilisees     */ \
                                        /* pour les positions a l'aide d'expressions compliquees contenant des fonctions (en         */ \
                                        /* particulier, des lignes trigonometriques) car ces dernieres doivent etre evaluees         */ \
                                        /* des la compilation...                                                                     */
#define   INITIALISATION_DE_LA_VITESSE(objet,vitesse_de_la_particule)                                                                   \
                    Bblock                                                                                                              \
                    TRANSFERT_ACCROISSEMENT_3D(ASD1(objet,vitesse),vitesse_de_la_particule);                                            \
                    Eblock                                                                                                              \
                                        /* Initialisation de la vitesse d'un objet.                                                  */
#define   INITIALISATION_D_UN_MOMENT_ANGULAIRE_QUELCONQUE(moment_angulaire,mx,my,mz)                                                    \
                    Bblock                                                                                                              \
                    INITIALISATION_ACCROISSEMENT_3D(moment_angulaire,mx,my,mz);                                                         \
                    Eblock                                                                                                              \
                                        /* Initialisation d'un moment angulaire ; cette procedure a ete introduite en partie a       */ \
                                        /* cause du probleme de l'initialisation de la position des trois quarks REELs constitutifs  */ \
                                        /* du proton, les compilateurs n'acceptant pas l'initialisation des structures utilisees     */ \
                                        /* pour les positions a l'aide d'expressions compliquees contenant des fonctions (en         */ \
                                        /* particulier, des lignes trigonometriques) car ces dernieres doivent etre evaluees         */ \
                                        /* des la compilation...                                                                     */
#define   INITIALISATION_DU_MOMENT_ANGULAIRE(objet,moment_angulaire_de_la_particule)                                                    \
                    Bblock                                                                                                              \
                    TRANSFERT_ACCROISSEMENT_3D(ASD1(objet,moment_angulaire),moment_angulaire_de_la_particule);                          \
                    Eblock                                                                                                              \
                                        /* Initialisation du moment angulaire d'un objet.                                            */

#define   DEPLACEMENT(objet,masse_de_l_objet,charge_de_l_objet)                                                                         \
                                        /* ATTENTION, on notera la necessite de transmettre explicitement les parametres 'masse'     */ \
                                        /* et 'charge' de l'objet. On ne peut en effet utiliser a la place :                         */ \
                                        /*                                                                                           */ \
                                        /*                  cMASSE(objet)                                                            */ \
                                        /*                  cCHARGE(objet)                                                           */ \
                                        /*                                                                                           */ \
                                        /* car, en effet, 'objet' n'est pas une particule mais 'ASI1(particule,espace_temps)',       */ \
                                        /* d'ou la difficulte...                                                                     */ \
                    Bblock                                                                                                              \
                    DEFV(deltaF_3D,produit_de_la_vitesse_et_du_champ_magnetique);                                                       \
                                        /* Afin de calculer :                                                                        */ \
                                        /*                                                                                           */ \
                                        /*                 -->    -->                                                                */ \
                                        /*                  V  /\  B                                                                 */ \
                                        /*                                                                                           */ \
                    DEFV(deltaF_3D,acceleration_due_a_la_force_de_Lorentz);                                                             \
                                        /* Afin de calculer la force de Lorentz.                                                     */ \
                    INCR(ASD2(objet,position_courante,x)                                                                                \
                        ,DISTANCE_PARCOURUE(ASD2(objet,vitesse,dx)                                                                      \
                                           ,PERIODE_COURANTE_DE_L_HORLOGE                                                               \
                                            )                                                                                           \
                         );                                                                                                             \
                    INCR(ASD2(objet,position_courante,y)                                                                                \
                        ,DISTANCE_PARCOURUE(ASD2(objet,vitesse,dy)                                                                      \
                                           ,PERIODE_COURANTE_DE_L_HORLOGE                                                               \
                                            )                                                                                           \
                         );                                                                                                             \
                    INCR(ASD2(objet,position_courante,z)                                                                                \
                        ,DISTANCE_PARCOURUE(ASD2(objet,vitesse,dz)                                                                      \
                                           ,PERIODE_COURANTE_DE_L_HORLOGE                                                               \
                                            )                                                                                           \
                         );                                                                                                             \
                                        /* Deplacement d'un objet au cours d'une periode d'horloge, suivant la formule               */ \
                                        /* prodigieuse :                                                                             */ \
                                        /*                                                                                           */ \
                                        /*                  X <-- X + (Vx.dt),                                                       */ \
                                        /*                  Y <-- Y + (Vy.dt),                                                       */ \
                                        /*                  Z <-- Z + (Vz.dt).                                                       */ \
                                        /*                                                                                           */ \
                                                                                                                                        \
                    INITIALISATION_ACCROISSEMENT_3D(produit_de_la_vitesse_et_du_champ_magnetique                                        \
                                                   ,PvectX(ASD2(objet,vitesse,dx)                                                       \
                                                          ,ASD2(objet,vitesse,dy)                                                       \
                                                          ,ASD2(objet,vitesse,dz)                                                       \
                                                                                                                                        \
                                                          ,ASD1(champ_magnetique,dx)                                                    \
                                                          ,ASD1(champ_magnetique,dy)                                                    \
                                                          ,ASD1(champ_magnetique,dz)                                                    \
                                                           )                                                                            \
                                                                                                                                        \
                                                   ,PvectY(ASD2(objet,vitesse,dx)                                                       \
                                                          ,ASD2(objet,vitesse,dy)                                                       \
                                                          ,ASD2(objet,vitesse,dz)                                                       \
                                                                                                                                        \
                                                          ,ASD1(champ_magnetique,dx)                                                    \
                                                          ,ASD1(champ_magnetique,dy)                                                    \
                                                          ,ASD1(champ_magnetique,dz)                                                    \
                                                           )                                                                            \
                                                                                                                                        \
                                                   ,PvectZ(ASD2(objet,vitesse,dx)                                                       \
                                                          ,ASD2(objet,vitesse,dy)                                                       \
                                                          ,ASD2(objet,vitesse,dz)                                                       \
                                                                                                                                        \
                                                          ,ASD1(champ_magnetique,dx)                                                    \
                                                          ,ASD1(champ_magnetique,dy)                                                    \
                                                          ,ASD1(champ_magnetique,dz)                                                    \
                                                           )                                                                            \
                                                    );                                                                                  \
                                        /* Calcul du produit vectoriel :                                                             */ \
                                        /*                                                                                           */ \
                                        /*                 -->    -->                                                                */ \
                                        /*                  V  /\  B                                                                 */ \
                                        /*                                                                                           */ \
                    INITIALISATION_ACCROISSEMENT_3D(acceleration_due_a_la_force_de_Lorentz                                              \
                                                   ,MUL2(DIVI(charge_de_l_objet,masse_de_l_objet)                                       \
                                                        ,ADD2(ASD1(champ_electrique,dx)                                                 \
                                                             ,ASD1(produit_de_la_vitesse_et_du_champ_magnetique,dx)                     \
                                                              )                                                                         \
                                                         )                                                                              \
                                                   ,MUL2(DIVI(charge_de_l_objet,masse_de_l_objet)                                       \
                                                        ,ADD2(ASD1(champ_electrique,dy)                                                 \
                                                             ,ASD1(produit_de_la_vitesse_et_du_champ_magnetique,dy)                     \
                                                              )                                                                         \
                                                         )                                                                              \
                                                   ,MUL2(DIVI(charge_de_l_objet,masse_de_l_objet)                                       \
                                                        ,ADD2(ASD1(champ_electrique,dz)                                                 \
                                                             ,ASD1(produit_de_la_vitesse_et_du_champ_magnetique,dz)                     \
                                                              )                                                                         \
                                                         )                                                                              \
                                                    );                                                                                  \
                                        /* Calcul de la force de Lorentz appliquee a l'objet courant et ramenee a l'unite de         */ \
                                        /* masse (c'est donc l'acceleration...) ; on a :                                             */ \
                                        /*                                                                                           */ \
                                        /*                 -->     -->   -->  -->                                                    */ \
                                        /*                  F = q.( E  +  V /\ B )                                                   */ \
                                        /*                                                                                           */ \
                                        /* or :                                                                                      */ \
                                        /*                                                                                           */ \
                                        /*                                    --->                                                   */ \
                                        /*                 -->    ------>      dV                                                    */ \
                                        /*                  F = m. gamma  = m.----                                                   */ \
                                        /*                                     dt                                                    */ \
                                        /*                                                                                           */ \
                                        /* d'ou :                                                                                    */ \
                                        /*                                                                                           */ \
                                        /*                                                   --->                                    */ \
                                        /*                   q   -->   -->  -->    ------>    dV                                     */ \
                                        /*                  ---.( E  +  V /\ B ) =  gamma  = ----                                    */ \
                                        /*                   m                                dt                                     */ \
                                        /*                                                                                           */ \
                    INITIALISATION_ACCROISSEMENT_3D(ASD1(objet,vitesse)                                                                 \
                                                   ,AXPB(ASD1(acceleration_due_a_la_force_de_Lorentz,dx)                                \
                                                        ,PERIODE_COURANTE_DE_L_HORLOGE                                                  \
                                                        ,ASD2(objet,vitesse,dx)                                                         \
                                                         )                                                                              \
                                                   ,AXPB(ASD1(acceleration_due_a_la_force_de_Lorentz,dy)                                \
                                                        ,PERIODE_COURANTE_DE_L_HORLOGE                                                  \
                                                        ,ASD2(objet,vitesse,dy)                                                         \
                                                         )                                                                              \
                                                   ,AXPB(ASD1(acceleration_due_a_la_force_de_Lorentz,dz)                                \
                                                        ,PERIODE_COURANTE_DE_L_HORLOGE                                                  \
                                                        ,ASD2(objet,vitesse,dz)                                                         \
                                                         )                                                                              \
                                                    );                                                                                  \
                                        /* Application de la force de Lorentz appliquee a l'objet courant, c'est-a-dire modification */ \
                                        /* de la trajectoire suivant la regle :                                                      */ \
                                        /*                                                                                           */ \
                                        /*                                                                                           */ \
                                        /*                 -->   -->   --->   -->   ------>                                          */ \
                                        /*                  V <-- V  +  dV  =  V  +  gamma .dt                                       */ \
                                        /*                                                                                           */ \
                    Eblock                                                                                                              \
                                        /* Deplacement d'un objet au cours d'une periode d'horloge et prise en compte d'un           */ \
                                        /* eventuel champ electro-magnetique...                                                      */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D I S T A N C E   S E P A R A N T   D E U X   P A R T I C U L E S  :                                                       */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   pDISTANCE(particule1,particule2)                                                                                              \
                    RdisF3D(COORDONNEES(particule1,x)                                                                                   \
                           ,COORDONNEES(particule1,y)                                                                                   \
                           ,COORDONNEES(particule1,z)                                                                                   \
                           ,COORDONNEES(particule2,x)                                                                                   \
                           ,COORDONNEES(particule2,y)                                                                                   \
                           ,COORDONNEES(particule2,z)                                                                                   \
                            )                                                                                                           \
                                        /* Calcul de la distance euclidienne separant deux particules.                               */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D E F I N I T I O N   D E   L A   M A S S E  :                                                                             */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
Dstruct01(_masse_grave
         ,DEFV(Float,masse)
                                        /* Definition de la masse d'une particule.                                                   */
         ,NOM_VIDE
          );
Typedef(masse_grave,STRU(_masse_grave))
                                        /* Definition de la masse.                                                                   */
#define   cMASSE(particule)                                                                                                             \
                    ASI2(particule,masse,masse)                                                                                         \
                                        /* Acces a la masse...                                                                       */
#define   MASSE_D_UNE_PARTICULE(particule,pm)                                                                                           \
                    Bblock                                                                                                              \
                    EGAL(cMASSE(particule),pm);                                                                                         \
                    Eblock                                                                                                              \
                                        /* Mise en place de la masse d'une particule.                                                */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D E F I N I T I O N   D E   L A   V A L E U R   D E   L A   M A S S E  :                                                   */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   MASSE_indefinie                                                                                                               \
                    FU                                                                                                                  \
                                        /* Definition d'une masse indefinie ; on choisit (1) afin de l'utiliser comme si elle        */ \
                                        /* n'existait pas. En fait elle n'est actuellement utilisee que lors du calcul de la         */ \
                                        /* force de Lorenz qui concerne donc les particules chargees...                              */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        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  :                                                     */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
Dstruct01(_charge_electrique
         ,DEFV(Float,electrique)
                                        /* Definition de la charge electrique d'une particule.                                       */
         ,NOM_VIDE
          );
Typedef(charge_electrique,STRU(_charge_electrique))
                                        /* Definition de la charge electrique.                                                       */
#define   cCHARGE(particule)                                                                                                            \
                    ASI2(particule,charge,electrique)                                                                                   \
                                        /* Acces a la charge electrique d'une particule...                                           */
#define   CHARGE_D_UNE_PARTICULE(particule,pe)                                                                                          \
                    Bblock                                                                                                              \
                    EGAL(cCHARGE(particule),pe);                                                                                        \
                    Eblock                                                                                                              \
                                        /* Mise en place de la charge electrique d'une particule.                                    */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D E F I N I T I O N   D E   L A   V A L E U R   D E   L A   C H A R G E   E L E C T R I Q U E  :                           */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   EXAGERATION_DE_LA_CHARGE_DES_ELECTRONS_ET_DES_ANTI_ELECTRONS_VIRTUELS                                                         \
                    GRO2(GRO10(FU))
DEFV(Local,DEFV(Float,INIT(exageration_de_la_charge_des_electrons_et_des_anti_electrons_virtuels
                          ,EXAGERATION_DE_LA_CHARGE_DES_ELECTRONS_ET_DES_ANTI_ELECTRONS_VIRTUELS
                           )
                )
     );
                                        /* La charge des electrons VIRTUELs sera en general tres superieure a celle des electrons    */
                                        /* REELs. Ainsi, ils seront plus sensibles a la force de Lorentz, et donc sans reduire trop  */
                                        /* leur vitesse, leurs trajectoires seront tres courbees...                                  */

#define   CHARGE_indefinie                                                                                                              \
                    FZERO                                                                                                               \
                                        /* Definition d'une charge electrique indefinie ; on choisit (0) afin d'eviter d'eventuels   */ \
                                        /* problemes arithmetiques avec (FLOT__UNDEF)...                                             */
#define   CHARGE_NEUTRE                                                                                                                 \
                    FZERO
#define   CHARGE_DE_L_ELECTRON_REEL                                                                                                     \
                    NEGA(FU)
#define   CHARGE_DE_L_ANTI_ELECTRON_REEL                                                                                                \
                    NEGA(CHARGE_DE_L_ELECTRON_REEL)
#define   CHARGE_DE_L_ELECTRON_VIRTUEL                                                                                                  \
                    MUL2(exageration_de_la_charge_des_electrons_et_des_anti_electrons_virtuels,CHARGE_DE_L_ELECTRON_REEL)
#define   CHARGE_DE_L_ANTI_ELECTRON_VIRTUEL                                                                                             \
                    NEGA(CHARGE_DE_L_ELECTRON_VIRTUEL)
                                        /* Definition de quelques charges electriques utiles...                                      */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        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  :                                                     */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
Dstruct03(_charge_de_couleur
         ,DEFV(Float,ROUGE)
         ,DEFV(Float,VERTE)
         ,DEFV(Float,BLEUE)
                                        /*                                                          3                                */
                                        /* Definition de la charge de couleur d'une particule dans R.                                */
         ,NOM_VIDE
          );
Typedef(charge_de_couleur,STRU(_charge_de_couleur))
                                        /* Definition de la charge de couleur ; on notera qu'elle est representee par un vecteur,    */
                                        /* ce qui est correct pour les quarks, mais ce qui est incorrect pour les gluons qui en      */
                                        /* fait demanderaient des matrices 3x3. Cette supercherie est mise en place afin de          */
                                        /* simplifier le probleme de la conservation de la charge de couleur qui s'ecrira donc       */
                                        /* sous la forme d'une egalite vectorielle et non d'un produit vecteur-matrice...            */
#define   cCOULEUR(particule,RVB)                                                                                                       \
                    ASI2(particule,couleur,RVB)                                                                                         \
                                        /* Acces a l'une des composantes de la charge de couleur d'une particule...                  */
#define   COULEUR_D_UNE_PARTICULE(particule,pr,pv,pb)                                                                                   \
                    Bblock                                                                                                              \
                    EGAL(cCOULEUR(particule,ROUGE),pr);                                                                                 \
                    EGAL(cCOULEUR(particule,VERTE),pv);                                                                                 \
                    EGAL(cCOULEUR(particule,BLEUE),pb);                                                                                 \
                    Eblock                                                                                                              \
                                        /* Mise en place de la couleur (pr,pv,pb) d'une particule.                                   */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D E F I N I T I O N   D E   L A   V A L E U R   D E   L A   C H A R G E   D E   C O U L E U R  :                           */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   COULEUR_indefinie                                                                                                             \
                    FZERO                                                                                                               \
                                        /* Definition d'une charge de couleur indefinie ; on choisit (0) afin d'eviter d'eventuels   */ \
                                        /* problemes arithmetiques avec (FLOT__UNDEF)...                                             */

#include  xrq/nucleon.L5.L6.I"
                                        /* Definition de la valeur absolue des valeurs minimales et maximales des charges de         */
                                        /* couleur des particules (introduit sous cette forme le 20170125050905).                    */

#define   ROUGE_indefinie                                                                                                               \
                    COULEUR_indefinie
%define   ROUGE_min                                                                                                                     \
                    COULEUR_min
                                        /* Definition de la composante ROUGE de la charge de couleur.                                */
#define   VERTE_indefinie                                                                                                               \
                    COULEUR_indefinie
%define   VERTE_min                                                                                                                     \
                    COULEUR_min
                                        /* Definition de la composante VERTE de la charge de couleur.                                */
#define   BLEUE_indefinie                                                                                                               \
                    COULEUR_indefinie
%define   BLEUE_min                                                                                                                     \
                    COULEUR_min
                                        /* Definition de la composante BLEUE de la charge de couleur.                                */

#define   CHARGE_DE_COULEUR_ROUGE(champ_ROUGE)                                                                                          \
                    HOMO(champ_ROUGE,ROUGE_min,ROUGE_max,COULEUR_min,COULEUR_max)
#define   CHARGE_DE_COULEUR_VERTE(champ_VERTE)                                                                                          \
                    HOMO(champ_VERTE,VERTE_min,VERTE_max,COULEUR_min,COULEUR_max)
#define   CHARGE_DE_COULEUR_BLEUE(champ_BLEUE)                                                                                          \
                    HOMO(champ_BLEUE,BLEUE_min,BLEUE_max,COULEUR_min,COULEUR_max)
                                        /* Pour passer d'un champ de couleur a une charge de couleur...                              */

#define   NORMALISATION_DU_ROUGE(charge_ROUGE)                                                                                          \
                    __DENORMALISE_NIVEAU(charge_ROUGE)
#define   NORMALISATION_DU_VERTE(charge_VERTE)                                                                                          \
                    __DENORMALISE_NIVEAU(charge_VERTE)
#define   NORMALISATION_DU_BLEUE(charge_BLEUE)                                                                                          \
                    __DENORMALISE_NIVEAU(charge_BLEUE)
                                        /* Pour passer d'une charge de couleur a un niveau dans [NOIR,BLANC].                        */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C H O I X   D U   M O D E   D E   G E S T I O N   D E S   P A R T I C U L E S  :                                           */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#nodefine FACON_DE_GERER_LES_ENSEMBLES_DE_PARTICULES_VERSION_01                                                                         \
                                        /* Cette facon de gerer les ensembles de particules consiste a les placer dans des tableaux  */ \
                                        /* de structures de type adequat ('quark' ou 'gluon').                                       */
#define   FACON_DE_GERER_LES_ENSEMBLES_DE_PARTICULES_VERSION_02                                                                         \
                                        /* Cette facon de gerer les ensembles de particules consiste a faire de l'allocation         */ \
                                        /* dynamique de structures de type adequat ('quark' ou 'gluon').                             */

=define   _particule                                                                                                                    \
                    STRU(__particule)
TypedefP(particule,_particule)
TypedefS(A___particule,particule)
                                        /* Definition d'une particule. On notera que cette definition figure ici et avant les        */
                                        /* definitions 'Dstruct04(__particule,...)' ou 'Dstruct05(__particule,...)' ; la raison      */
                                        /* en est que 'Dstruct05(__particule,...)' est une definition recursive (a cause des         */
                                        /* chainages)...                                                                             */

#ifdef    FACON_DE_GERER_LES_ENSEMBLES_DE_PARTICULES_VERSION_02
DEFINITION_D_UNE_STRUCTURE_DE_CHAINAGE(liste,particule)
                                        /* Definition d'une structure de liste avec chainage avant et arriere...                     */
#Aifdef   FACON_DE_GERER_LES_ENSEMBLES_DE_PARTICULES_VERSION_02
#Eifdef   FACON_DE_GERER_LES_ENSEMBLES_DE_PARTICULES_VERSION_02

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        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   Q U E L C O N Q U E  :                     */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
Dstruct03(_voisinage
         ,DEFV(Logical,vide)
         ,DEFV(particule,POINTERs(voisine1))
         ,DEFV(Float,distance1)
         ,NOM_VIDE
          );
Typedef(voisinage,STRU(_voisinage))
                                        /* Definition du voisinage d'une particule defini par une liste sequentielle de particules   */
                                        /* voisines, ainsi que le carre des distances associees. Enfin, l'indicateur 'vide' precise  */
                                        /* si la liste contient quelque chose ('FAUX') ou est vide ('VRAI')...                       */
#define   VOISINAGE_D_UNE_PARTICULE(particule)                                                                                          \
                    Bblock                                                                                                              \
                    EGAL(ASI2(particule,voisines,vide),VRAI);                                                                           \
                    EGAL(ASI2(particule,voisines,voisine1),PARTICULE_NON_DEFINIE);                                                      \
                    EGAL(ASI2(particule,voisines,distance1),F_INFINI);                                                                  \
                    Eblock                                                                                                              \
                                        /* Initialisation du voisinage d'une particule telle que lorsqu'on en cree une alors que     */ \
                                        /* l'on parcourt la liste des particules, on ne risque pas de tester cette nouvelle en       */ \
                                        /* ce qui concerne les collisions...                                                         */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        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  :                                               */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Nota :                                                                                                                     */
/*                                                                                                                                   */
/*                    Il faut 2 definitions 'Dstruct05(...)'                                                                         */
/*                  et 'Dstruct06(...)' car en effet les '#ifdef'                                                                    */
/*                  ne peuvent etre mis entre les arguments d'appel                                                                  */
/*                  d'une procedure, puisque le nombre d'arguments                                                                   */
/*                  ne peut etre variable...                                                                                         */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
DEFV(Local,DEFV(Positive,INIT(etiquettage_des_particules,ZERO)));
                                        /* Etiquette unique de la prochaine particule a creer...                                     */

#ifdef    FACON_DE_GERER_LES_ENSEMBLES_DE_PARTICULES_VERSION_01
Dstruct08(__particule
         ,DEFV(Positive,etiquette)
                                        /* Etiquette unique permettant de suivre au cours du temps une particule (par exemple dans   */
                                        /* la base de donnees geometriques).                                                         */
         ,DEFV(Int,nature)
                                        /* Type de la particule (voir la liste 'types_de_particules').                               */
         ,DEFV(Int,saveur)
                                        /* Saveur de la particule ; rappelons que celle-ci n'a de sens que pour les quarks, et       */
                                        /* est alors choisie dans ((u,c,t),(d,s,b)) ; pour les gluons, elle n'a aucun sens, mais     */
                                        /* est fixee 'PAS_DE_SAVEUR' afin de simplifier les choses...                                */
         ,DEFV(coordonnees,espace_temps)
                                        /* Position dans l'espace-temps du quark (si tant est que l'on puisse parler de "position"   */
                                        /* absolue" pour un objet quantique...).                                                     */
         ,DEFV(masse_grave,masse)
                                        /* Definition de la masse d'une particule.                                                   */
         ,DEFV(charge_electrique,charge)
                                        /* Definition de la charge electrique d'une particule.                                       */
         ,DEFV(charge_de_couleur,couleur)
                                        /*                                                     3                                     */
                                        /* Definition de la charge de couleur d'un quark dans R.                                     */
         ,DEFV(voisinage,voisines)
                                        /* Definition de la liste sequentielle des particules voisines.                              */
         ,NOM_VIDE
          );
#Aifdef   FACON_DE_GERER_LES_ENSEMBLES_DE_PARTICULES_VERSION_01
#Eifdef   FACON_DE_GERER_LES_ENSEMBLES_DE_PARTICULES_VERSION_01

#ifdef    FACON_DE_GERER_LES_ENSEMBLES_DE_PARTICULES_VERSION_02
Dstruct09(__particule
         ,DEFV(Positive,etiquette)
                                        /* Etiquette unique permettant de suivre au cours du temps une particule (par exemple dans   */
                                        /* la base de donnees geometriques).                                                         */
         ,DEFV(liste,ensemble)
                                        /* Informations d'acces aux particules suivante et precedente.                               */
         ,DEFV(Int,nature)
                                        /* Type de la particule (voir la liste 'types_de_particules').                               */
         ,DEFV(Int,saveur)
                                        /* Saveur de la particule ; rappelons que celle-ci n'a de sens que pour les quarks, et       */
                                        /* est alors choisie dans ((u,c,t),(d,s,b)) ; pour les gluons, elle n'a aucun sens, mais     */
                                        /* est fixee 'PAS_DE_SAVEUR' afin de simplifier les choses...                                */
         ,DEFV(coordonnees,espace_temps)
                                        /* Position dans l'espace-temps du quark (si tant est que l'on puisse parler de "position"   */
                                        /* absolue" pour un objet quantique...).                                                     */
         ,DEFV(masse_grave,masse)
                                        /* Definition de la masse d'une particule.                                                   */
         ,DEFV(charge_electrique,charge)
                                        /* Definition de la charge electrique d'une particule.                                       */
         ,DEFV(charge_de_couleur,couleur)
                                        /*                                                     3                                     */
                                        /* Definition de la charge de couleur d'un quark dans R.                                     */
         ,DEFV(voisinage,voisines)
                                        /* Definition de la liste sequentielle des particules voisines.                              */
         ,NOM_VIDE
          );
#Aifdef   FACON_DE_GERER_LES_ENSEMBLES_DE_PARTICULES_VERSION_02
#Eifdef   FACON_DE_GERER_LES_ENSEMBLES_DE_PARTICULES_VERSION_02

DenumeT18(PARTICULE_INEXISTANTE
         ,PARTICULE_NAISSANTE

         ,QUARK_REEL
         ,ANTI_QUARK_REEL
         ,QUARK_VIRTUEL
         ,ANTI_QUARK_VIRTUEL

         ,GLUON_REEL
         ,GLUON_VIRTUEL

         ,ELECTRON_REEL
         ,ANTI_ELECTRON_REEL
         ,ELECTRON_VIRTUEL
         ,ANTI_ELECTRON_VIRTUEL

         ,NEUTRINO_REEL
         ,NEUTRINO_VIRTUEL

         ,PHOTON_REEL
         ,PHOTON_VIRTUEL

         ,Z0_REEL
         ,Z0_VIRTUEL

         ,types_de_particules
          )
                                        /* Types possibles des particules. ATTENTION, on notera qu'il n'y a pas de ";" a la suite    */
                                        /* de cette directive, car sinon, il se trouverait colle a la derniere definition...         */
#define   ETIQUETTE(particule)                                                                                                          \
                    ASI1(particule,etiquette)                                                                                           \
                                        /* Acces a l'etiquette d'une particule.                                                      */

#define   NATURE(particule)                                                                                                             \
                    ASI1(particule,nature)                                                                                              \
                                        /* Acces a la nature d'une particule.                                                        */
#define   NATURE_D_UNE_PARTICULE(particule,pn)                                                                                          \
                    Bblock                                                                                                              \
                    EGAL(NATURE(particule),pn);                                                                                         \
                    Eblock                                                                                                              \
                                        /* Mise en place de la nature (pn) d'une particule.                                          */

#define   SAVEUR(particule)                                                                                                             \
                    ASI1(particule,saveur)                                                                                              \
                                        /* Acces a la saveur d'une particule.                                                        */
#define   SAVEUR_D_UNE_PARTICULE(particule,ps)                                                                                          \
                    Bblock                                                                                                              \
                    EGAL(SAVEUR(particule),ps);                                                                                         \
                    Eblock                                                                                                              \
                                        /* Mise en place de la saveur (ps) d'une particule, ce qui rappelons-le n'a de sens que      */ \
                                        /* pour les quarks, et encore pour les VIRTUELs, elle est choisie INDEFINIE...               */

#define   INITIALISATION_DE_LA_DUREE_DE_VIE_MOYENNE_D_UNE_PARTICULE(particule,qd)                                                       \
                    Bblock                                                                                                              \
                    INITIALISATION_DE_LA_DUREE_DE_VIE_MOYENNE(ASI1(particule,espace_temps),qd);                                         \
                    Eblock                                                                                                              \
                                        /* Initialisation de la duree de vie moyenne d'une particule.                                */
#define   INITIALISATION_DE_LA_DATE_DE_NAISSANCE_D_UNE_PARTICULE(particule,qt)                                                          \
                    Bblock                                                                                                              \
                    INITIALISATION_DE_LA_DATE_DE_NAISSANCE(ASI1(particule,espace_temps),qt);                                            \
                    Eblock                                                                                                              \
                                        /* Initialisation de la date de naissance d'une particule.                                   */
#define   CONSERVATION_DE_LA_DATE_DE_NAISSANCE_D_UNE_PARTICULE(particuleD,particuleA)                                                   \
                    Bblock                                                                                                              \
                    INITIALISATION_DE_LA_DATE_DE_NAISSANCE_D_UNE_PARTICULE(particuleA                                                   \
                                                                          ,ASI2(particuleD,espace_temps,date_de_naissance)              \
                                                                           );                                                           \
                    Eblock                                                                                                              \
                                        /* Conservation par 'particuleA' de la date de naissance de 'particuleD'...                  */
#define   INITIALISATION_DE_LA_POSITION_INITIALE_D_UNE_PARTICULE(particule,position_initiale)                                           \
                    Bblock                                                                                                              \
                    INITIALISATION_DE_LA_POSITION_INITIALE(ASI1(particule,espace_temps),position_initiale);                             \
                    Eblock                                                                                                              \
                                        /* Initialisation de la position initiale d'une particule.                                   */
#define   INITIALISATION_DE_LA_POSITION_COURANTE_D_UNE_PARTICULE(particule)                                                             \
                    Bblock                                                                                                              \
                    INITIALISATION_DE_LA_POSITION_COURANTE(ASI1(particule,espace_temps));                                               \
                    Eblock                                                                                                              \
                                        /* Initialisation de la position courante d'une particule a partir de sa position initiale.  */
#define   INITIALISATION_DE_LA_VITESSE_D_UNE_PARTICULE(particule,vitesse)                                                               \
                    Bblock                                                                                                              \
                    INITIALISATION_DE_LA_VITESSE(ASI1(particule,espace_temps),vitesse);                                                 \
                    Eblock                                                                                                              \
                                        /* Initialisation de la vitesse d'une particule.                                             */
#define   INITIALISATION_DU_MOMENT_ANGULAIRE_D_UNE_PARTICULE(particule,moment_angulaire)                                                \
                    Bblock                                                                                                              \
                    INITIALISATION_DU_MOMENT_ANGULAIRE(ASI1(particule,espace_temps),moment_angulaire);                                  \
                    Eblock                                                                                                              \
                                        /* Initialisation du moment angulaire d'une particule.                                       */
#define   DEPLACEMENT_D_UNE_PARTICULE(particule)                                                                                        \
                    Bblock                                                                                                              \
                    DEPLACEMENT(ASI1(particule,espace_temps),cMASSE(particule),cCHARGE(particule));                                     \
                    Eblock                                                                                                              \
                                        /* Deplacement d'une particule au cours d'une periode d'horloge.                             */

#define   DEFINITION_D_UNE_PARTICULE_QUELCONQUE(particule,pn,ps,pd,position_init,vitesse_init,moment_angulaire_init,pe,pr,pv,pb)        \
                    Bblock                                                                                                              \
                    EGAL(ETIQUETTE(particule),etiquettage_des_particules);                                                              \
                    INCR(etiquettage_des_particules,I);                                                                                 \
                                        /* Mise en place et gestion de l'etiquettage des particules...                               */ \
                    NATURE_D_UNE_PARTICULE(particule,pn);                                                                               \
                                        /* La nature de la particule est pn,                                                         */ \
                    SAVEUR_D_UNE_PARTICULE(particule,ps);                                                                               \
                                        /* La saveur de la particule est ps,                                                         */ \
                    INITIALISATION_DE_LA_DUREE_DE_VIE_MOYENNE_D_UNE_PARTICULE(particule,pd);                                            \
                                        /* Memorisation de sa duree de vie moyenne a priori ; rappelons que celle-ci peut etre       */ \
                                        /* modifiee au cours de sa vie, et en particulier augmentee (c'est par exemple le cas des    */ \
                                        /* particules 'Q', 'AQ' ou 'G' qui son en attente de collisions apres une reponse positive   */ \
                                        /* de 'INTERCEPTION_PARTICULE_PAR_UN_GLUON(...)').                                           */ \
                    INITIALISATION_DE_LA_DATE_DE_NAISSANCE_D_UNE_PARTICULE(particule,temps_courant);                                    \
                                        /* Memorisation de sa date de naissance,                                                     */ \
                    INITIALISATION_DE_LA_POSITION_INITIALE_D_UNE_PARTICULE(particule,position_init);                                    \
                    INITIALISATION_DE_LA_POSITION_COURANTE_D_UNE_PARTICULE(particule);                                                  \
                                        /* Sa position initiale est (position_init),                                                 */ \
                    INITIALISATION_DE_LA_VITESSE_D_UNE_PARTICULE(particule,vitesse_init);                                               \
                                        /* Sa vitesse initiale est (vitesse_init),                                                   */ \
                    INITIALISATION_DU_MOMENT_ANGULAIRE_D_UNE_PARTICULE(particule,moment_angulaire_init);                                \
                                        /* Son moment angulaire initial est (moment_angulaire_init),                                 */ \
                    MASSE_D_UNE_PARTICULE(particule,MASSE_indefinie);                                                                   \
                                        /* Sa masse n'est pas definie et prise de valeur unitaire...                                 */ \
                    CHARGE_D_UNE_PARTICULE(particule,pe);                                                                               \
                                        /* Sa charge electrique initiale est (pe).                                                   */ \
                    COULEUR_D_UNE_PARTICULE(particule,pr,pv,pb);                                                                        \
                                        /* Et sa couleur initiale est (pr,pv,pb).                                                    */ \
                    VOISINAGE_D_UNE_PARTICULE(particule);                                                                               \
                                        /* Enfin, son voisinage est initialise tel qu'elle n'ait pas de voisines...                  */ \
                    Eblock                                                                                                              \
                                        /* Definition initiale d'un quark quelconque (REEL ou VIRTUEL)                               */

#define   SAVEUR_INDEFINIE                                                                                                              \
                    CHOI(QUARK_SAVEUR_INDEFINIE,LEPTON_SAVEUR_INDEFINIE)                                                                \
                                        /* Valeur arbitraire pour une saveur (au sens large) indefinie...                            */
#define   PAS_DE_SAVEUR                                                                                                                 \
                    CHOI(QUARK_PAS_DE_SAVEUR,LEPTON_PAS_DE_SAVEUR)                                                                      \
                                        /* Valeur arbitraire pour une saveur qui n'a pas de sens...                                  */
#define   DUREE_DE_VIE_MOYENNE_INDEFINIE                                                                                                \
                    FZERO                                                                                                               \
                                        /* Valeur arbitraire de la duree de vie moyenne d'une particule indefinie.                   */
#define   INITIALISATION_D_UNE_PARTICULE_INEXISTANTE(particule)                                                                         \
                    Bblock                                                                                                              \
                    DEFINITION_D_UNE_PARTICULE_QUELCONQUE(particule                                                                     \
                                                         ,PARTICULE_INEXISTANTE                                                         \
                                                         ,SAVEUR_INDEFINIE                                                              \
                                                         ,DUREE_DE_VIE_MOYENNE_INDEFINIE                                                \
                                                         ,position_indefinie                                                            \
                                                         ,vitesse_indefinie                                                             \
                                                         ,moment_angulaire_indefini                                                     \
                                                         ,CHARGE_indefinie                                                              \
                                                         ,ROUGE_min,VERTE_min,BLEUE_min                                                 \
                                                          );                                                                            \
                    Eblock                                                                                                              \
                                        /* Definition initiale d'une particule INEXISTANTe.                                          */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D E F I N I T I O N   D E   L A   S A V E U R   D E S   D I F F E R E N T E S                                              */
/*        F A M I L L E S   D E   P A R T I C U L E S  :                                                                             */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
DenumeT13(QUARK_u
         ,QUARK_d

         ,QUARK_c
         ,QUARK_s

         ,QUARK_t
         ,QUARK_b

         ,QUARK_SAVEUR_INDEFINIE
         ,QUARK_PAS_DE_SAVEUR
                                        /* Saveurs possibles des quarks. On se souviendra que les six saveurs de quarks se rangent   */
                                        /* de deux facons possibles :                                                                */
                                        /*                                                                                           */
                                        /* 1-en 2 familles de 3 : (u,c,t) de charge +2/3,                                            */
                                        /*                        (d,s,b) de charge -1/3.                                            */
                                        /*                                                                                           */
                                        /* 2-en 3 familles de 2 : (u,d) associee a l'electron,                                       */
                                        /*                        (c,s) associee au muon,                                            */
                                        /*                        (t,b) associee au tau.                                             */
                                        /*                                                                                           */
                                        /* On notera que la 'QUARK_SAVEUR_INDEFINIE' est utilisee pour les quarks VIRTUELs dont on   */
                                        /* n'a pas encore fixe la saveur, alors que la 'PAS_DE_SAVEUR' est utilisee pour les gluons  */
                                        /* qui eux ne possedent pas cette propriete. ATTENTION, on notera qu'il n'y a pas de ";" a   */
                                        /* la suite de cette directive, car sinon, il se trouverait colle a la derniere definition.  */
         ,LEPTON_e
         ,LEPTON_m
         ,LEPTON_t

         ,LEPTON_SAVEUR_INDEFINIE
         ,LEPTON_PAS_DE_SAVEUR
                                        /* Saveurs possibles des electrons. On notera que cette notion n'est pas tres 'physique",    */
                                        /* mais a ete ajoutee afin de ne pas multiplier inutilement les diagrammes de Feynman        */
                                        /* relatifs aux leptons charges. Ainsi, partout ou l'on trouvera 'electron', il faudra       */
                                        /* en fait comprendre 'lepton charge' d'une certaine saveur ; il sera de meme pour les       */
                                        /* neutrinos...                                                                              */
         ,saveurs_des_particules
          )
                                        /* ATTENTION, toutes les saveurs sont mise a l'interieur du meme 'DenumeT1??(...)' afin de   */
                                        /* pas avoir de problemes avec 'SAVE(...)' lors de l'edition de la base de donnees par       */
                                        /* 'BASE_DE_DONNEES(...)'. En effet, on a ici des "saveurs" qui valent la meme valeur        */
                                        /* (celles qui auraient le mem rang dans deux 'DenumeT1??(...)' paralleles...                */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D E F I N I T I O N   D E   L A   " S A V E U R "   D E S   L E P T O N S  :                                               */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D E F I N I T I O N   D ' U N   Q U A R K   Q U E L C O N Q U E  :                                                         */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
Typedef(quark,_particule)
TypedefS(A___quark,quark)
                                        /* Definition d'un quark.                                                                    */
Typedef(anti_quark,_particule)
TypedefS(A___anti_quark,anti_quark)
                                        /* Definition d'un anti-quark.                                                               */
#define   DEFINITION_D_UN_QUARK_QUELCONQUE(quark,qn,qs,qd,position_initiale,vitesse_initiale,moment_angulaire_initial,qr,qv,qb)         \
                    Bblock                                                                                                              \
                    DEFINITION_D_UNE_PARTICULE_QUELCONQUE(quark                                                                         \
                                                         ,qn                                                                            \
                                                         ,qs                                                                            \
                                                         ,qd                                                                            \
                                                         ,position_initiale                                                             \
                                                         ,vitesse_initiale                                                              \
                                                         ,moment_angulaire_initial                                                      \
                                                         ,CHARGE_indefinie                                                              \
                                                         ,qr,qv,qb                                                                      \
                                                          );                                                                            \
                    Eblock                                                                                                              \
                                        /* Definition initiale d'un quark quelconque (REEL ou VIRTUEL)                               */
#define   INITIALISATION_D_UN_QUARK_INEXISTANT(quark)                                                                                   \
                    Bblock                                                                                                              \
                    INITIALISATION_D_UNE_PARTICULE_INEXISTANTE(quark);                                                                  \
                    Eblock                                                                                                              \
                                        /* Definition initiale d'un quark INEXISTANT.                                                */
#define   INITIALISATION_D_UN_QUARK_REEL(quark,qs)                                                                                      \
                    Bblock                                                                                                              \
                    DEFINITION_D_UN_QUARK_QUELCONQUE(quark                                                                              \
                                                    ,QUARK_REEL                                                                         \
                                                    ,qs                                                                                 \
                                                    ,duree_de_vie_moyenne_des_quarks_reels                                              \
                                                    ,position_indefinie                                                                 \
                                                    ,vitesse_indefinie                                                                  \
                                                    ,moment_angulaire_indefini                                                          \
                                                    ,ROUGE_indefinie,VERTE_indefinie,BLEUE_indefinie                                    \
                                                     );                                                                                 \
                    Eblock                                                                                                              \
                                        /* Definition initiale d'un quark REEL.                                                      */
#define   INITIALISATION_D_UN_ANTI_QUARK_REEL(anti_quark,qs)                                                                            \
                    Bblock                                                                                                              \
                    DEFINITION_D_UN_QUARK_QUELCONQUE(anti_quark                                                                         \
                                                    ,ANTI_QUARK_REEL                                                                    \
                                                    ,qs                                                                                 \
                                                    ,duree_de_vie_moyenne_des_anti_quarks_reels                                         \
                                                    ,position_indefinie                                                                 \
                                                    ,vitesse_indefinie                                                                  \
                                                    ,moment_angulaire_indefini                                                          \
                                                    ,ROUGE_indefinie,VERTE_indefinie,BLEUE_indefinie                                    \
                                                     );                                                                                 \
                    Eblock                                                                                                              \
                                        /* Definition initiale d'un anti-quark REEL.                                                 */
#define   INITIALISATION_D_UN_QUARK_VIRTUEL(quark,qs)                                                                                   \
                    Bblock                                                                                                              \
                    DEFINITION_D_UN_QUARK_QUELCONQUE(quark                                                                              \
                                                    ,QUARK_VIRTUEL                                                                      \
                                                    ,qs                                                                                 \
                                                    ,duree_de_vie_moyenne_des_quarks_virtuels                                           \
                                                    ,position_indefinie                                                                 \
                                                    ,vitesse_indefinie                                                                  \
                                                    ,moment_angulaire_indefini                                                          \
                                                    ,ROUGE_indefinie,VERTE_indefinie,BLEUE_indefinie                                    \
                                                     );                                                                                 \
                    Eblock                                                                                                              \
                                        /* Definition initiale d'un quark VIRTUEL.                                                   */
#define   INITIALISATION_D_UN_ANTI_QUARK_VIRTUEL(anti_quark,qs)                                                                         \
                    Bblock                                                                                                              \
                    DEFINITION_D_UN_QUARK_QUELCONQUE(anti_quark                                                                         \
                                                    ,ANTI_QUARK_VIRTUEL                                                                 \
                                                    ,qs                                                                                 \
                                                    ,duree_de_vie_moyenne_des_anti_quarks_virtuels                                      \
                                                    ,position_indefinie                                                                 \
                                                    ,vitesse_indefinie                                                                  \
                                                    ,moment_angulaire_indefini                                                          \
                                                    ,ROUGE_indefinie,VERTE_indefinie,BLEUE_indefinie                                    \
                                                     );                                                                                 \
                    Eblock                                                                                                              \
                                        /* Definition initiale d'un anti-quark VIRTUEL.                                              */
#define   DEFINITION_D_UN_QUARK_REEL(quark,qs,position_initiale,vitesse_initiale,moment_angulaire_initial,qr,qv,qb)                     \
                    Bblock                                                                                                              \
                    CREATION_D_UN_QUARK(quark,QUARK_REEL);                                                                              \
                                        /* Creation du quark REEL,                                                                   */ \
                    DEFINITION_D_UN_QUARK_QUELCONQUE(quark                                                                              \
                                                    ,QUARK_REEL                                                                         \
                                                    ,qs                                                                                 \
                                                    ,duree_de_vie_moyenne_des_quarks_reels                                              \
                                                    ,position_initiale                                                                  \
                                                    ,vitesse_initiale                                                                   \
                                                    ,moment_angulaire_initial                                                           \
                                                    ,qr,qv,qb                                                                           \
                                                     );                                                                                 \
                                        /* Et initialisation...                                                                      */ \
                    Eblock                                                                                                              \
                                        /* Creation et definition initiale d'un quark REEL.                                          */
#define   DEFINITION_D_UN_ANTI_QUARK_REEL(anti_quark,qs,position_initiale,vitesse_initiale,moment_angulaire_initial,qr,qv,qb)           \
                    Bblock                                                                                                              \
                    CREATION_D_UN_ANTI_QUARK(anti_quark,ANTI_QUARK_REEL);                                                               \
                                        /* Creation de l'anti-quark REEL,                                                            */ \
                    DEFINITION_D_UN_QUARK_QUELCONQUE(anti_quark                                                                         \
                                                    ,ANTI_QUARK_REEL                                                                    \
                                                    ,qs                                                                                 \
                                                    ,duree_de_vie_moyenne_des_anti_quarks_reels                                         \
                                                    ,position_initiale                                                                  \
                                                    ,vitesse_initiale                                                                   \
                                                    ,moment_angulaire_indefini                                                          \
                                                    ,qr,qv,qb                                                                           \
                                                     );                                                                                 \
                                        /* Et initialisation...                                                                      */ \
                    Eblock                                                                                                              \
                                        /* Creation et definition initiale d'un anti-quark REEL.                                     */
#define   DEFINITION_D_UN_QUARK_VIRTUEL(quark,qs,position_initiale,vitesse_initiale,qr,qv,qb)                                           \
                    Bblock                                                                                                              \
                    CREATION_D_UN_QUARK(quark,QUARK_VIRTUEL);                                                                           \
                                        /* Creation du quark VIRTUEL,                                                                */ \
                    DEFINITION_D_UN_QUARK_QUELCONQUE(quark                                                                              \
                                                    ,QUARK_VIRTUEL                                                                      \
                                                    ,qs                                                                                 \
                                                    ,duree_de_vie_moyenne_des_quarks_virtuels                                           \
                                                    ,position_initiale                                                                  \
                                                    ,vitesse_initiale                                                                   \
                                                    ,moment_angulaire_indefini                                                          \
                                                    ,qr,qv,qb                                                                           \
                                                     );                                                                                 \
                                        /* Et initialisation...                                                                      */ \
                    Eblock                                                                                                              \
                                        /* Creation et definition initiale d'un quark VIRTUEL.                                       */
#define   DEFINITION_D_UN_ANTI_QUARK_VIRTUEL(anti_quark,qs,position_initiale,vitesse_initiale,qr,qv,qb)                                 \
                    Bblock                                                                                                              \
                    CREATION_D_UN_ANTI_QUARK(anti_quark,ANTI_QUARK_VIRTUEL);                                                            \
                                        /* Creation de l'anti-quark VIRTUEL,                                                         */ \
                    DEFINITION_D_UN_QUARK_QUELCONQUE(anti_quark                                                                         \
                                                    ,ANTI_QUARK_VIRTUEL                                                                 \
                                                    ,qs                                                                                 \
                                                    ,duree_de_vie_moyenne_des_anti_quarks_virtuels                                      \
                                                    ,position_initiale                                                                  \
                                                    ,vitesse_initiale                                                                   \
                                                    ,moment_angulaire_indefini                                                          \
                                                    ,qr,qv,qb                                                                           \
                                                     );                                                                                 \
                                        /* Et initialisation...                                                                      */ \
                    Eblock                                                                                                              \
                                        /* Creation et definition initiale d'un anti-quark VIRTUEL.                                  */
#define   COULEUR_D_UN_QUARK_REEL(quark,qr,qv,qb)                                                                                       \
                    Bblock                                                                                                              \
                    COULEUR_D_UNE_PARTICULE(quark,qr,qv,qb);                                                                            \
                    Eblock                                                                                                              \
                                        /* Mise en place de la couleur (qr,qv,qb) d'un quark REEL. En effet, lors de la mise en      */ \
                                        /* place des quarks REELs par 'DEFINITION_DU_QUARK_REEL_ROUGE/VERTE/BLEUE', on ne peut       */ \
                                        /* simultanement definir leur charge de couleurs, car cette derniere reference les extrema   */ \
                                        /* du champ, qui sont eux-memes calcules a partir de la position des quarks REELs. Ainsi,    */ \
                                        /* en definissant 'DEFINITION_DU_QUARK_REEL_ROUGE' (le premier defini), il serait necessaire */ \
                                        /* de connaitre les quarks REELs VERTE et BLEUE, alors que leur position n'est pas encore    */ \
                                        /* definie. Donc, on attendra d'avoir defini la position des 3 quarks REELs avant de fixer   */ \
                                        /* leur charge de couleur...                                                                 */
#define   COULEUR_D_UN_ANTI_QUARK_REEL(anti_quark,qr,qv,qb)                                                                             \
                    Bblock                                                                                                              \
                    COULEUR_D_UNE_PARTICULE(anti_quark,qr,qv,qb);                                                                       \
                    Eblock                                                                                                              \
                                        /* Mise en place de la couleur (qr,qv,qb) d'un anti-quark REEL. En effet, lors de la mise en */ \
                                        /* place des anti-quarks REELs on ne peut simultanement definir leur charge de couleurs, car */ \
                                        /* cette derniere reference les extrema du champ, qui sont eux-memes calcules a partir de la */ \
                                        /* position des particules REELles.                                                          */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D E P L A C E M E N T    D ' U N   Q U A R K   Q U E L C O N Q U E  :                                                      */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   DUREE_DE_VIE_MOYENNE_DES_QUARKS_REELS                                                                                         \
                    GRO1(GRO16(PERIODE_INITIALE_DE_L_HORLOGE))
DEFV(Local,DEFV(Float,INIT(duree_de_vie_moyenne_des_quarks_reels,DUREE_DE_VIE_MOYENNE_DES_QUARKS_REELS)));
                                        /* Duree de vie moyenne des quarks (REELs).                                                  */
#define   DUREE_DE_VIE_MOYENNE_DES_ANTI_QUARKS_REELS                                                                                    \
                    DUREE_DE_VIE_MOYENNE_DES_QUARKS_REELS
DEFV(Local,DEFV(Float,INIT(duree_de_vie_moyenne_des_anti_quarks_reels,DUREE_DE_VIE_MOYENNE_DES_ANTI_QUARKS_REELS)));
                                        /* Duree de vie moyenne des anti-quarks (REELs).                                             */

#define   DUREE_DE_VIE_MOYENNE_DES_QUARKS_VIRTUELS                                                                                      \
                    GRO1(GRO16(PERIODE_INITIALE_DE_L_HORLOGE))
DEFV(Local,DEFV(Float,INIT(duree_de_vie_moyenne_des_quarks_virtuels,DUREE_DE_VIE_MOYENNE_DES_QUARKS_VIRTUELS)));
                                        /* Duree de vie moyenne des quarks (VIRTUELs).                                               */
#define   DUREE_DE_VIE_MOYENNE_DES_ANTI_QUARKS_VIRTUELS                                                                                 \
                    DUREE_DE_VIE_MOYENNE_DES_QUARKS_VIRTUELS
DEFV(Local,DEFV(Float,INIT(duree_de_vie_moyenne_des_anti_quarks_virtuels,DUREE_DE_VIE_MOYENNE_DES_ANTI_QUARKS_VIRTUELS)));
                                        /* Duree de vie moyenne des anti-quarks (VIRTUELs).                                          */

#define   VITESSE_MOYENNE_DES_QUARKS_ET_DES_ANTI_QUARKS                                                                                 \
                    GRO6(FRA10(VITESSE_DE_LA_LUMIERE))                                                                                  \
                                        /* Module de la vitesse moyenne des quarks.                                                  */
#define   DISPERSION_VITESSE_DES_QUARKS_ET_DES_ANTI_QUARKS                                                                              \
                    GRO1(FRA10(VITESSE_DE_LA_LUMIERE))                                                                                  \
                                        /* Le module de la vitesse aleatoire des quarks sera choisie dans le segment :               */ \
                                        /*                                                                                           */ \
                                        /* [VITESSE_MOYENNE_DES_QUARKS-DISPERSION_DE_LA_VITESSE_DES_QUARKS                           */ \
                                        /* ,VITESSE_MOYENNE_DES_QUARKS+DISPERSION_DE_LA_VITESSE_DES_QUARKS].                         */
#define   DEPLACEMENT_D_UN_QUARK(quark)                                                                                                 \
                    Bblock                                                                                                              \
                    DEPLACEMENT_D_UNE_PARTICULE(quark);                                                                                 \
                    Eblock                                                                                                              \
                                        /* Deplacement d'un quark au cours d'une periode d'horloge.                                  */
#define   DEPLACEMENT_D_UN_ANTI_QUARK(anti_quark)                                                                                       \
                    Bblock                                                                                                              \
                    DEPLACEMENT_D_UNE_PARTICULE(anti_quark);                                                                            \
                    Eblock                                                                                                              \
                                        /* Deplacement d'un anti-quark au cours d'une periode d'horloge.                             */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D E F I N I T I O N   D ' U N   G L U O N   Q U E L C O N Q U E  :                                                         */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
Typedef(gluon,_particule)
TypedefS(A___gluon,gluon)
                                        /* Definition d'un gluon.                                                                    */
#define   DEFINITION_D_UN_GLUON_QUELCONQUE(gluon,gn,gd,position_initiale,vitesse_initiale,moment_angulaire_initial,gr,gv,gb)            \
                    Bblock                                                                                                              \
                    DEFINITION_D_UNE_PARTICULE_QUELCONQUE(gluon                                                                         \
                                                         ,gn                                                                            \
                                                         ,PAS_DE_SAVEUR                                                                 \
                                                         ,gd                                                                            \
                                                         ,position_initiale                                                             \
                                                         ,vitesse_initiale                                                              \
                                                         ,moment_angulaire_initial                                                      \
                                                         ,CHARGE_indefinie                                                              \
                                                         ,gr,gv,gb                                                                      \
                                                          );                                                                            \
                    Eblock                                                                                                              \
                                        /* Definition initiale d'un gluon quelconque (VIRTUEL).                                      */
#define   INITIALISATION_D_UN_GLUON_INEXISTANT(gluon)                                                                                   \
                    Bblock                                                                                                              \
                    INITIALISATION_D_UNE_PARTICULE_INEXISTANTE(gluon);                                                                  \
                    Eblock                                                                                                              \
                                        /* Definition initiale d'un gluon INEXISTANT.                                                */
#define   INITIALISATION_D_UN_GLUON_REEL(gluon)                                                                                         \
                    Bblock                                                                                                              \
                    DEFINITION_D_UN_GLUON_QUELCONQUE(gluon                                                                              \
                                                    ,GLUON_REEL                                                                         \
                                                    ,duree_de_vie_moyenne_des_gluons_reels                                              \
                                                    ,position_indefinie                                                                 \
                                                    ,vitesse_indefinie                                                                  \
                                                    ,moment_angulaire_indefini                                                          \
                                                    ,ROUGE_min,VERTE_min,BLEUE_min                                                      \
                                                     );                                                                                 \
                    Eblock                                                                                                              \
                                        /* Definition initiale d'un gluon REEL.                                                      */
#define   INITIALISATION_D_UN_GLUON_VIRTUEL(gluon)                                                                                      \
                    Bblock                                                                                                              \
                    DEFINITION_D_UN_GLUON_QUELCONQUE(gluon                                                                              \
                                                    ,GLUON_VIRTUEL                                                                      \
                                                    ,duree_de_vie_moyenne_des_gluons_virtuels                                           \
                                                    ,position_indefinie                                                                 \
                                                    ,vitesse_indefinie                                                                  \
                                                    ,moment_angulaire_indefini                                                          \
                                                    ,ROUGE_min,VERTE_min,BLEUE_min                                                      \
                                                     );                                                                                 \
                    Eblock                                                                                                              \
                                        /* Definition initiale d'un gluon VIRTUEL.                                                   */
#define   DEFINITION_D_UN_GLUON_REEL(gluon,position_initiale,vitesse_initiale,gr,gv,gb)                                                 \
                    Bblock                                                                                                              \
                    CREATION_D_UN_GLUON(gluon,GLUON_REEL);                                                                              \
                                        /* Creation du gluon REEL,                                                                   */ \
                    DEFINITION_D_UN_GLUON_QUELCONQUE(gluon                                                                              \
                                                    ,GLUON_REEL                                                                         \
                                                    ,duree_de_vie_moyenne_des_gluons_reels                                              \
                                                    ,position_initiale                                                                  \
                                                    ,vitesse_initiale                                                                   \
                                                    ,moment_angulaire_indefini                                                          \
                                                    ,gr,gv,gb                                                                           \
                                                     );                                                                                 \
                                        /* Et initialisation...                                                                      */ \
                    Eblock                                                                                                              \
                                        /* Creation et definition initiale d'un gluon REEL.                                          */
#define   DEFINITION_D_UN_GLUON_VIRTUEL(gluon,position_initiale,vitesse_initiale,gr,gv,gb)                                              \
                    Bblock                                                                                                              \
                    CREATION_D_UN_GLUON(gluon,GLUON_VIRTUEL);                                                                           \
                                        /* Creation du gluon VIRTUEL,                                                                */ \
                    DEFINITION_D_UN_GLUON_QUELCONQUE(gluon                                                                              \
                                                    ,GLUON_VIRTUEL                                                                      \
                                                    ,duree_de_vie_moyenne_des_gluons_virtuels                                           \
                                                    ,position_initiale                                                                  \
                                                    ,vitesse_initiale                                                                   \
                                                    ,moment_angulaire_indefini                                                          \
                                                    ,gr,gv,gb                                                                           \
                                                     );                                                                                 \
                                        /* Et initialisation...                                                                      */ \
                    Eblock                                                                                                              \
                                        /* Creation et definition initiale d'un gluon VIRTUEL.                                       */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D E P L A C E M E N T    D ' U N   G L U O N   Q U E L C O N Q U E  :                                                      */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   DUREE_DE_VIE_MOYENNE_DES_GLUONS_REELS                                                                                         \
                    GRO1(GRO16(PERIODE_INITIALE_DE_L_HORLOGE))
DEFV(Local,DEFV(Float,INIT(duree_de_vie_moyenne_des_gluons_reels,DUREE_DE_VIE_MOYENNE_DES_GLUONS_REELS)));
                                        /* Duree de vie moyenne des gluons REELs                                                     */

#define   DUREE_DE_VIE_MOYENNE_DES_GLUONS_VIRTUELS                                                                                      \
                    GRO1(GRO16(PERIODE_INITIALE_DE_L_HORLOGE))
DEFV(Local,DEFV(Float,INIT(duree_de_vie_moyenne_des_gluons_virtuels,DUREE_DE_VIE_MOYENNE_DES_GLUONS_VIRTUELS)));
                                        /* Duree de vie moyenne des gluons VIRTUELs                                                  */

#define   VITESSE_DES_GLUONS                                                                                                            \
                    VITESSE_DE_LA_LUMIERE                                                                                               \
                                        /* Module de la vitesse des gluons.                                                          */
#define   DEPLACEMENT_D_UN_GLUON(gluon)                                                                                                 \
                    Bblock                                                                                                              \
                    DEPLACEMENT_D_UNE_PARTICULE(gluon);                                                                                 \
                    Eblock                                                                                                              \
                                        /* Deplacement d'un gluon au cours d'une periode d'horloge.                                  */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D E F I N I T I O N   D ' U N   E L E C T R O N   Q U E L C O N Q U E  :                                                   */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
Typedef(electron,_particule)
TypedefS(A___electron,electron)
                                        /* Definition d'un electron.                                                                 */
Typedef(anti_electron,_particule)
TypedefS(A___anti_electron,anti_electron)
                                        /* Definition d'un anti-electron.                                                            */
Typedef(electron_ou_anti_electron,_particule)
TypedefS(A___electron_ou_anti_electron,electron_ou_anti_electron)
                                        /* Definition d'un electron ou d'un anti-electron (utilise lors de recherche de particules   */
                                        /* pour une interception...                                                                  */
#define   DEFINITION_D_UN_ELECTRON_QUELCONQUE(electron,en,es,ed,position_initiale,vitesse_initiale,moment_angulaire_initial)            \
                    Bblock                                                                                                              \
                    DEFINITION_D_UNE_PARTICULE_QUELCONQUE(electron                                                                      \
                                                         ,en                                                                            \
                                                         ,es                                                                            \
                                                         ,ed                                                                            \
                                                         ,position_initiale                                                             \
                                                         ,vitesse_initiale                                                              \
                                                         ,moment_angulaire_initial                                                      \
                                                         ,CHARGE_indefinie                                                              \
                                                         ,ROUGE_indefinie,VERTE_indefinie,BLEUE_indefinie                               \
                                                          );                                                                            \
                    Eblock                                                                                                              \
                                        /* Definition initiale d'un electron quelconque (REEL ou VIRTUEL)                            */
#define   INITIALISATION_D_UN_ELECTRON_INEXISTANT(electron)                                                                             \
                    Bblock                                                                                                              \
                    INITIALISATION_D_UNE_PARTICULE_INEXISTANTE(electron);                                                               \
                    Eblock                                                                                                              \
                                        /* Definition initiale d'un electron INEXISTANT.                                             */
#define   INITIALISATION_D_UN_ELECTRON_REEL(electron,es)                                                                                \
                    Bblock                                                                                                              \
                    DEFINITION_D_UN_ELECTRON_QUELCONQUE(electron                                                                        \
                                                       ,ELECTRON_REEL                                                                   \
                                                       ,es                                                                              \
                                                       ,duree_de_vie_moyenne_des_electrons_reels                                        \
                                                       ,position_indefinie                                                              \
                                                       ,vitesse_indefinie                                                               \
                                                       ,moment_angulaire_indefini                                                       \
                                                        );                                                                              \
                    CHARGE_D_UNE_PARTICULE(electron                                                                                     \
                                          ,CHARGE_DE_L_ELECTRON_REEL                                                                    \
                                           );                                                                                           \
                    COULEUR_D_UNE_PARTICULE(electron                                                                                    \
                                           ,COMPOSANTE_ROUGE_D_UN_ELECTRON_REEL_OU_VIRTUEL                                              \
                                           ,COMPOSANTE_VERTE_D_UN_ELECTRON_REEL_OU_VIRTUEL                                              \
                                           ,COMPOSANTE_BLEUE_D_UN_ELECTRON_REEL_OU_VIRTUEL                                              \
                                            );                                                                                          \
                    Eblock                                                                                                              \
                                        /* Definition initiale d'un electron REEL.                                                   */

#define   INITIALISATION_D_UN_ANTI_ELECTRON_REEL(anti_electron,es)                                                                      \
                    Bblock                                                                                                              \
                    DEFINITION_D_UN_ELECTRON_QUELCONQUE(anti_electron                                                                   \
                                                       ,ANTI_ELECTRON_REEL                                                              \
                                                       ,es                                                                              \
                                                       ,duree_de_vie_moyenne_des_anti_electrons_reels                                   \
                                                       ,position_indefinie                                                              \
                                                       ,vitesse_indefinie                                                               \
                                                       ,moment_angulaire_indefini                                                       \
                                                        );                                                                              \
                    CHARGE_D_UNE_PARTICULE(anti_electron                                                                                \
                                          ,CHARGE_DE_L_ANTI_ELECTRON_REEL                                                               \
                                           );                                                                                           \
                    COULEUR_D_UNE_PARTICULE(anti_electron                                                                               \
                                           ,COMPOSANTE_ROUGE_D_UN_ANTI_ELECTRON_REEL_OU_VIRTUEL                                         \
                                           ,COMPOSANTE_VERTE_D_UN_ANTI_ELECTRON_REEL_OU_VIRTUEL                                         \
                                           ,COMPOSANTE_BLEUE_D_UN_ANTI_ELECTRON_REEL_OU_VIRTUEL                                         \
                                            );                                                                                          \
                    Eblock                                                                                                              \
                                        /* Definition initiale d'un anti-electron REEL.                                              */
#define   INITIALISATION_D_UN_ELECTRON_VIRTUEL(electron,es)                                                                             \
                    Bblock                                                                                                              \
                    DEFINITION_D_UN_ELECTRON_QUELCONQUE(electron                                                                        \
                                                       ,ELECTRON_VIRTUEL                                                                \
                                                       ,es                                                                              \
                                                       ,duree_de_vie_moyenne_des_electrons_virtuels                                     \
                                                       ,position_indefinie                                                              \
                                                       ,vitesse_indefinie                                                               \
                                                       ,moment_angulaire_indefini                                                       \
                                                        );                                                                              \
                    CHARGE_D_UNE_PARTICULE(electron                                                                                     \
                                          ,CHARGE_DE_L_ELECTRON_VIRTUEL                                                                 \
                                           );                                                                                           \
                    COULEUR_D_UNE_PARTICULE(electron                                                                                    \
                                           ,COMPOSANTE_ROUGE_D_UN_ELECTRON_REEL_OU_VIRTUEL                                              \
                                           ,COMPOSANTE_VERTE_D_UN_ELECTRON_REEL_OU_VIRTUEL                                              \
                                           ,COMPOSANTE_BLEUE_D_UN_ELECTRON_REEL_OU_VIRTUEL                                              \
                                            );                                                                                          \
                    Eblock                                                                                                              \
                                        /* Definition initiale d'un electron VIRTUEL.                                                */
#define   INITIALISATION_D_UN_ANTI_ELECTRON_VIRTUEL(anti_electron,es)                                                                   \
                    Bblock                                                                                                              \
                    DEFINITION_D_UN_ELECTRON_QUELCONQUE(anti_electron                                                                   \
                                                       ,ANTI_ELECTRON_VIRTUEL                                                           \
                                                       ,es                                                                              \
                                                       ,duree_de_vie_moyenne_des_anti_electrons_virtuels                                \
                                                       ,position_indefinie                                                              \
                                                       ,vitesse_indefinie                                                               \
                                                       ,moment_angulaire_indefini                                                       \
                                                        );                                                                              \
                    CHARGE_D_UNE_PARTICULE(anti_electron                                                                                \
                                          ,CHARGE_DE_L_ANTI_ELECTRON_VIRTUEL                                                            \
                                           );                                                                                           \
                    COULEUR_D_UNE_PARTICULE(anti_electron                                                                               \
                                           ,COMPOSANTE_ROUGE_D_UN_ANTI_ELECTRON_REEL_OU_VIRTUEL                                         \
                                           ,COMPOSANTE_VERTE_D_UN_ANTI_ELECTRON_REEL_OU_VIRTUEL                                         \
                                           ,COMPOSANTE_BLEUE_D_UN_ANTI_ELECTRON_REEL_OU_VIRTUEL                                         \
                                            );                                                                                          \
                    Eblock                                                                                                              \
                                        /* Definition initiale d'un anti-electron VIRTUEL.                                           */
#define   DEFINITION_D_UN_ELECTRON_REEL(electron,es,position_initiale,vitesse_initiale,moment_angulaire_initial)                        \
                    Bblock                                                                                                              \
                    CREATION_D_UN_ELECTRON(electron,ELECTRON_REEL);                                                                     \
                                        /* Creation du electron REEL,                                                                */ \
                    DEFINITION_D_UN_ELECTRON_QUELCONQUE(electron                                                                        \
                                                       ,ELECTRON_REEL                                                                   \
                                                       ,es                                                                              \
                                                       ,duree_de_vie_moyenne_des_electrons_reels                                        \
                                                       ,position_initiale                                                               \
                                                       ,vitesse_initiale                                                                \
                                                       ,moment_angulaire_initial                                                        \
                                                        );                                                                              \
                    CHARGE_D_UNE_PARTICULE(electron                                                                                     \
                                          ,CHARGE_DE_L_ELECTRON_REEL                                                                    \
                                           );                                                                                           \
                    COULEUR_D_UNE_PARTICULE(electron                                                                                    \
                                           ,COMPOSANTE_ROUGE_D_UN_ELECTRON_REEL_OU_VIRTUEL                                              \
                                           ,COMPOSANTE_VERTE_D_UN_ELECTRON_REEL_OU_VIRTUEL                                              \
                                           ,COMPOSANTE_BLEUE_D_UN_ELECTRON_REEL_OU_VIRTUEL                                              \
                                            );                                                                                          \
                                        /* Et initialisation...                                                                      */ \
                    Eblock                                                                                                              \
                                        /* Creation et definition initiale d'un electron REEL.                                       */
#define   DEFINITION_D_UN_ANTI_ELECTRON_REEL(anti_electron,es,position_initiale,vitesse_initiale,moment_angulaire_initial)              \
                    Bblock                                                                                                              \
                    CREATION_D_UN_ANTI_ELECTRON(anti_electron,ANTI_ELECTRON_REEL);                                                      \
                                        /* Creation de l'anti-electron REEL,                                                         */ \
                    DEFINITION_D_UN_ELECTRON_QUELCONQUE(anti_electron                                                                   \
                                                       ,ANTI_ELECTRON_REEL                                                              \
                                                       ,es                                                                              \
                                                       ,duree_de_vie_moyenne_des_anti_electrons_reels                                   \
                                                       ,position_initiale                                                               \
                                                       ,vitesse_initiale                                                                \
                                                       ,moment_angulaire_initial                                                        \
                                                        );                                                                              \
                    CHARGE_D_UNE_PARTICULE(anti_electron                                                                                \
                                          ,CHARGE_DE_L_ANTI_ELECTRON_REEL                                                               \
                                           );                                                                                           \
                    COULEUR_D_UNE_PARTICULE(anti_electron                                                                               \
                                           ,COMPOSANTE_ROUGE_D_UN_ANTI_ELECTRON_REEL_OU_VIRTUEL                                         \
                                           ,COMPOSANTE_VERTE_D_UN_ANTI_ELECTRON_REEL_OU_VIRTUEL                                         \
                                           ,COMPOSANTE_BLEUE_D_UN_ANTI_ELECTRON_REEL_OU_VIRTUEL                                         \
                                            );                                                                                          \
                                        /* Et initialisation...                                                                      */ \
                    Eblock                                                                                                              \
                                        /* Creation et definition initiale d'un anti-electron REEL.                                  */
#define   DEFINITION_D_UN_ELECTRON_VIRTUEL(electron,es,position_initiale,vitesse_initiale)                                              \
                    Bblock                                                                                                              \
                    CREATION_D_UN_ELECTRON(electron,ELECTRON_VIRTUEL);                                                                  \
                                        /* Creation du electron VIRTUEL,                                                             */ \
                    DEFINITION_D_UN_ELECTRON_QUELCONQUE(electron                                                                        \
                                                       ,ELECTRON_VIRTUEL                                                                \
                                                       ,es                                                                              \
                                                       ,duree_de_vie_moyenne_des_electrons_virtuels                                     \
                                                       ,position_initiale                                                               \
                                                       ,vitesse_initiale                                                                \
                                                       ,moment_angulaire_indefini                                                       \
                                                        );                                                                              \
                    CHARGE_D_UNE_PARTICULE(electron                                                                                     \
                                          ,CHARGE_DE_L_ELECTRON_VIRTUEL                                                                 \
                                           );                                                                                           \
                    COULEUR_D_UNE_PARTICULE(electron                                                                                    \
                                           ,COMPOSANTE_ROUGE_D_UN_ELECTRON_REEL_OU_VIRTUEL                                              \
                                           ,COMPOSANTE_VERTE_D_UN_ELECTRON_REEL_OU_VIRTUEL                                              \
                                           ,COMPOSANTE_BLEUE_D_UN_ELECTRON_REEL_OU_VIRTUEL                                              \
                                            );                                                                                          \
                                        /* Et initialisation...                                                                      */ \
                    Eblock                                                                                                              \
                                        /* Creation et definition initiale d'un electron VIRTUEL.                                    */
#define   DEFINITION_D_UN_ANTI_ELECTRON_VIRTUEL(anti_electron,es,position_initiale,vitesse_initiale)                                    \
                    Bblock                                                                                                              \
                    CREATION_D_UN_ANTI_ELECTRON(anti_electron,ANTI_ELECTRON_VIRTUEL);                                                   \
                                        /* Creation de l'anti-electron VIRTUEL,                                                      */ \
                    DEFINITION_D_UN_ELECTRON_QUELCONQUE(anti_electron                                                                   \
                                                       ,ANTI_ELECTRON_VIRTUEL                                                           \
                                                       ,es                                                                              \
                                                       ,duree_de_vie_moyenne_des_anti_electrons_virtuels                                \
                                                       ,position_initiale                                                               \
                                                       ,vitesse_initiale                                                                \
                                                       ,moment_angulaire_indefini                                                       \
                                                        );                                                                              \
                    CHARGE_D_UNE_PARTICULE(anti_electron                                                                                \
                                          ,CHARGE_DE_L_ANTI_ELECTRON_VIRTUEL                                                            \
                                           );                                                                                           \
                    COULEUR_D_UNE_PARTICULE(anti_electron                                                                               \
                                           ,COMPOSANTE_ROUGE_D_UN_ANTI_ELECTRON_REEL_OU_VIRTUEL                                         \
                                           ,COMPOSANTE_VERTE_D_UN_ANTI_ELECTRON_REEL_OU_VIRTUEL                                         \
                                           ,COMPOSANTE_BLEUE_D_UN_ANTI_ELECTRON_REEL_OU_VIRTUEL                                         \
                                            );                                                                                          \
                                        /* Et initialisation...                                                                      */ \
                    Eblock                                                                                                              \
                                        /* Creation et definition initiale d'un anti-electron VIRTUEL.                               */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D E P L A C E M E N T    D ' U N   E L E C T R O N   Q U E L C O N Q U E  :                                                */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   DUREE_DE_VIE_MOYENNE_DES_ELECTRONS_REELS                                                                                      \
                    GRO10(GRO16(PERIODE_INITIALE_DE_L_HORLOGE))
DEFV(Local,DEFV(Float,INIT(duree_de_vie_moyenne_des_electrons_reels,DUREE_DE_VIE_MOYENNE_DES_ELECTRONS_REELS)));
                                        /* Duree de vie moyenne des electrons (REELs). On notera que la duree de vie moyenne des     */
                                        /* electrons reels ('DUREE_DE_VIE_MOYENNE_DES_ELECTRONS_REELS') est definie superieure a     */
                                        /* celle des electrons virtuels ('DUREE_DE_VIE_MOYENNE_DES_ELECTRONS_VIRTUELS') afin de      */
                                        /* limiter la production initiale de photons par les electrons reels...                      */
#define   DUREE_DE_VIE_MOYENNE_DES_ANTI_ELECTRONS_REELS                                                                                 \
                    DUREE_DE_VIE_MOYENNE_DES_ELECTRONS_REELS
DEFV(Local,DEFV(Float,INIT(duree_de_vie_moyenne_des_anti_electrons_reels,DUREE_DE_VIE_MOYENNE_DES_ANTI_ELECTRONS_REELS)));
                                        /* Duree de vie moyenne des anti-electrons (REELs).                                          */

#define   DUREE_DE_VIE_MOYENNE_DES_ELECTRONS_VIRTUELS                                                                                   \
                    GRO1(GRO16(PERIODE_INITIALE_DE_L_HORLOGE))
DEFV(Local,DEFV(Float,INIT(duree_de_vie_moyenne_des_electrons_virtuels,DUREE_DE_VIE_MOYENNE_DES_ELECTRONS_VIRTUELS)));
                                        /* Duree de vie moyenne des electrons (VIRTUELs).                                            */
#define   DUREE_DE_VIE_MOYENNE_DES_ANTI_ELECTRONS_VIRTUELS                                                                              \
                    DUREE_DE_VIE_MOYENNE_DES_ELECTRONS_VIRTUELS
DEFV(Local,DEFV(Float,INIT(duree_de_vie_moyenne_des_anti_electrons_virtuels,DUREE_DE_VIE_MOYENNE_DES_ANTI_ELECTRONS_VIRTUELS)));
                                        /* Duree de vie moyenne des anti-electrons (VIRTUELs).                                       */

#define   VITESSE_MOYENNE_DES_ELECTRONS_ET_DES_ANTI_ELECTRONS                                                                           \
                    GRO2(FRA2(FRA15(VITESSE_DE_LA_LUMIERE)))
DEFV(Local,DEFV(Float,INIT(vitesse_moyenne_des_electrons_et_des_anti_electrons,VITESSE_MOYENNE_DES_ELECTRONS_ET_DES_ANTI_ELECTRONS)));
                                        /* Module de la vitesse moyenne des electrons. ATTENTION, la valeur de ce parametre          */
                                        /* conditionne celle de 'ADOLESCENCE_D_UNE_PARTICULE' pour '$xrq/di_elec.L0$K' dans          */
                                        /* '$xrq/di_elec.LH$I'. On notera qu'exceptionnellement cette valeur est parametrable, et    */
                                        /* ce facon a "ajuster" les images aux diagrammes de Feynman...                              */
#define   DISPERSION_VITESSE_DES_ELECTRONS_ET_DES_ANTI_ELECTRONS                                                                        \
                    GRO1(FRA16(vitesse_moyenne_des_electrons_et_des_anti_electrons))                                                    \
                                        /* Le module de la vitesse aleatoire des electrons sera choisie dans le segment :            */ \
                                        /*                                                                                           */ \
                                        /* [VITESSE_MOYENNE_DES_ELECTRONS-DISPERSION_DE_LA_VITESSE_DES_ELECTRONS                     */ \
                                        /* ,VITESSE_MOYENNE_DES_ELECTRONS+DISPERSION_DE_LA_VITESSE_DES_ELECTRONS].                   */
#define   DEPLACEMENT_D_UN_ELECTRON(electron)                                                                                           \
                    Bblock                                                                                                              \
                    DEPLACEMENT_D_UNE_PARTICULE(electron);                                                                              \
                    Eblock                                                                                                              \
                                        /* Deplacement d'un electron au cours d'une periode d'horloge.                               */
#define   DEPLACEMENT_D_UN_ANTI_ELECTRON(anti_electron)                                                                                 \
                    Bblock                                                                                                              \
                    DEPLACEMENT_D_UNE_PARTICULE(anti_electron);                                                                         \
                    Eblock                                                                                                              \
                                        /* Deplacement d'un anti-electron au cours d'une periode d'horloge.                          */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D E F I N I T I O N   D ' U N   N E U T R I N O   Q U E L C O N Q U E  :                                                   */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
Typedef(neutrino,_particule)
TypedefS(A___neutrino,neutrino)
                                        /* Definition d'un neutrino.                                                                 */
#define   DEFINITION_D_UN_NEUTRINO_QUELCONQUE(neutrino,nn,ns,nd,position_initiale,vitesse_initiale,moment_angulaire_initial)            \
                    Bblock                                                                                                              \
                    DEFINITION_D_UNE_PARTICULE_QUELCONQUE(neutrino                                                                      \
                                                         ,nn                                                                            \
                                                         ,ns                                                                            \
                                                         ,nd                                                                            \
                                                         ,position_initiale                                                             \
                                                         ,vitesse_initiale                                                              \
                                                         ,moment_angulaire_initial                                                      \
                                                         ,CHARGE_NEUTRE                                                                 \
                                                         ,ROUGE_indefinie,VERTE_indefinie,BLEUE_indefinie                               \
                                                          );                                                                            \
                    Eblock                                                                                                              \
                                        /* Definition initiale d'un neutrino quelconque (VIRTUEL).                                   */
#define   INITIALISATION_D_UN_NEUTRINO_INEXISTANT(neutrino)                                                                             \
                    Bblock                                                                                                              \
                    INITIALISATION_D_UNE_PARTICULE_INEXISTANTE(neutrino);                                                               \
                    Eblock                                                                                                              \
                                        /* Definition initiale d'un neutrino INEXISTANT.                                             */
#define   INITIALISATION_D_UN_NEUTRINO_REEL(neutrino,ns)                                                                                \
                    Bblock                                                                                                              \
                    DEFINITION_D_UN_NEUTRINO_QUELCONQUE(neutrino                                                                        \
                                                       ,NEUTRINO_REEL                                                                   \
                                                       ,ns                                                                              \
                                                       ,duree_de_vie_moyenne_des_neutrinos_reels                                        \
                                                       ,position_indefinie                                                              \
                                                       ,vitesse_indefinie                                                               \
                                                       ,moment_angulaire_indefini                                                       \
                                                        );                                                                              \
                    COULEUR_D_UNE_PARTICULE(neutrino                                                                                    \
                                           ,COMPOSANTE_ROUGE_D_UN_NEUTRINO_REEL_OU_VIRTUEL                                              \
                                           ,COMPOSANTE_VERTE_D_UN_NEUTRINO_REEL_OU_VIRTUEL                                              \
                                           ,COMPOSANTE_BLEUE_D_UN_NEUTRINO_REEL_OU_VIRTUEL                                              \
                                            );                                                                                          \
                    Eblock                                                                                                              \
                                        /* Definition initiale d'un neutrino REEL.                                                   */
#define   INITIALISATION_D_UN_NEUTRINO_VIRTUEL(neutrino,ns)                                                                             \
                    Bblock                                                                                                              \
                    DEFINITION_D_UN_NEUTRINO_QUELCONQUE(neutrino                                                                        \
                                                       ,NEUTRINO_VIRTUEL                                                                \
                                                       ,ns                                                                              \
                                                       ,duree_de_vie_moyenne_des_neutrinos_virtuels                                     \
                                                       ,position_indefinie                                                              \
                                                       ,vitesse_indefinie                                                               \
                                                       ,moment_angulaire_indefini                                                       \
                                                        );                                                                              \
                    COULEUR_D_UNE_PARTICULE(neutrino                                                                                    \
                                           ,COMPOSANTE_ROUGE_D_UN_NEUTRINO_REEL_OU_VIRTUEL                                              \
                                           ,COMPOSANTE_VERTE_D_UN_NEUTRINO_REEL_OU_VIRTUEL                                              \
                                           ,COMPOSANTE_BLEUE_D_UN_NEUTRINO_REEL_OU_VIRTUEL                                              \
                                            );                                                                                          \
                    Eblock                                                                                                              \
                                        /* Definition initiale d'un neutrino VIRTUEL.                                                */
#define   DEFINITION_D_UN_NEUTRINO_REEL(neutrino,ns,position_initiale,vitesse_initiale)                                                 \
                    Bblock                                                                                                              \
                    CREATION_D_UN_NEUTRINO(neutrino,NEUTRINO_REEL);                                                                     \
                                        /* Creation du neutrino REEL,                                                                */ \
                    DEFINITION_D_UN_NEUTRINO_QUELCONQUE(neutrino                                                                        \
                                                       ,NEUTRINO_REEL                                                                   \
                                                       ,ns                                                                              \
                                                       ,duree_de_vie_moyenne_des_neutrinos_reels                                        \
                                                       ,position_initiale                                                               \
                                                       ,vitesse_initiale                                                                \
                                                       ,moment_angulaire_indefini                                                       \
                                                        );                                                                              \
                    COULEUR_D_UNE_PARTICULE(neutrino                                                                                    \
                                           ,COMPOSANTE_ROUGE_D_UN_NEUTRINO_REEL_OU_VIRTUEL                                              \
                                           ,COMPOSANTE_VERTE_D_UN_NEUTRINO_REEL_OU_VIRTUEL                                              \
                                           ,COMPOSANTE_BLEUE_D_UN_NEUTRINO_REEL_OU_VIRTUEL                                              \
                                            );                                                                                          \
                                        /* Et initialisation...                                                                      */ \
                    Eblock                                                                                                              \
                                        /* Creation et definition initiale d'un neutrino REEL.                                       */
#define   DEFINITION_D_UN_NEUTRINO_VIRTUEL(neutrino,ns,position_initiale,vitesse_initiale)                                              \
                    Bblock                                                                                                              \
                    CREATION_D_UN_NEUTRINO(neutrino,NEUTRINO_VIRTUEL);                                                                  \
                                        /* Creation du neutrino VIRTUEL,                                                             */ \
                    DEFINITION_D_UN_NEUTRINO_QUELCONQUE(neutrino                                                                        \
                                                       ,NEUTRINO_VIRTUEL                                                                \
                                                       ,ns                                                                              \
                                                       ,duree_de_vie_moyenne_des_neutrinos_virtuels                                     \
                                                       ,position_initiale                                                               \
                                                       ,vitesse_initiale                                                                \
                                                       ,moment_angulaire_indefini                                                       \
                                                        );                                                                              \
                    COULEUR_D_UNE_PARTICULE(neutrino                                                                                    \
                                           ,COMPOSANTE_ROUGE_D_UN_NEUTRINO_REEL_OU_VIRTUEL                                              \
                                           ,COMPOSANTE_VERTE_D_UN_NEUTRINO_REEL_OU_VIRTUEL                                              \
                                           ,COMPOSANTE_BLEUE_D_UN_NEUTRINO_REEL_OU_VIRTUEL                                              \
                                            );                                                                                          \
                                        /* Et initialisation...                                                                      */ \
                    Eblock                                                                                                              \
                                        /* Creation et definition initiale d'un neutrino VIRTUEL.                                    */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D E P L A C E M E N T    D ' U N   N E U T R I N O   Q U E L C O N Q U E  :                                                */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   DUREE_DE_VIE_MOYENNE_DES_NEUTRINOS_REELS                                                                                      \
                    GRO2(GRO16(PERIODE_INITIALE_DE_L_HORLOGE))
DEFV(Local,DEFV(Float,INIT(duree_de_vie_moyenne_des_neutrinos_reels,DUREE_DE_VIE_MOYENNE_DES_NEUTRINOS_REELS)));
                                        /* Duree de vie moyenne des neutrinos REELs                                                  */

#define   DUREE_DE_VIE_MOYENNE_DES_NEUTRINOS_VIRTUELS                                                                                   \
                    GRO1(GRO16(PERIODE_INITIALE_DE_L_HORLOGE))
DEFV(Local,DEFV(Float,INIT(duree_de_vie_moyenne_des_neutrinos_virtuels,DUREE_DE_VIE_MOYENNE_DES_NEUTRINOS_VIRTUELS)));
                                        /* Duree de vie moyenne des neutrinos VIRTUELs                                               */

#define   VITESSE_MOYENNE_DES_NEUTRINOS                                                                                                 \
                    GRO8(FRA10(VITESSE_DE_LA_LUMIERE))                                                                                  \
                                        /* Module de la vitesse moyenne des neutrinos. ATTENTION, la valeur de ce parametre          */ \
                                        /* conditionne celle de 'ADOLESCENCE_D_UNE_PARTICULE' pour '$xrq/di_elec.L0$K'...            */
#define   DISPERSION_VITESSE_DES_NEUTRINOS                                                                                              \
                    GRO1(FRA4(VITESSE_MOYENNE_DES_NEUTRINOS))                                                                           \
                                        /* Le module de la vitesse aleatoire des neutrinos sera choisie dans le segment :            */ \
                                        /*                                                                                           */ \
                                        /* [VITESSE_MOYENNE_DES_NEUTRINOS-DISPERSION_VITESSE_DES_NEUTRINOS                           */ \
                                        /* ,VITESSE_MOYENNE_DES_NEUTRINOS+DISPERSION_VITESSE_DES_NEUTRINOS].                         */
#define   DEPLACEMENT_D_UN_NEUTRINO(neutrino)                                                                                           \
                    Bblock                                                                                                              \
                    DEPLACEMENT_D_UNE_PARTICULE(neutrino);                                                                              \
                    Eblock                                                                                                              \
                                        /* Deplacement d'un neutrino au cours d'une periode d'horloge.                               */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D E F I N I T I O N   D ' U N   P H O T O N   Q U E L C O N Q U E  :                                                       */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
Typedef(photon,_particule)
TypedefS(A___photon,photon)
                                        /* Definition d'un photon.                                                                   */
#define   DEFINITION_D_UN_PHOTON_QUELCONQUE(photon,pn,pd,position_initiale,vitesse_initiale,moment_angulaire_initial)                   \
                    Bblock                                                                                                              \
                    DEFINITION_D_UNE_PARTICULE_QUELCONQUE(photon                                                                        \
                                                         ,pn                                                                            \
                                                         ,PAS_DE_SAVEUR                                                                 \
                                                         ,pd                                                                            \
                                                         ,position_initiale                                                             \
                                                         ,vitesse_initiale                                                              \
                                                         ,moment_angulaire_initial                                                      \
                                                         ,CHARGE_NEUTRE                                                                 \
                                                         ,ROUGE_indefinie,VERTE_indefinie,BLEUE_indefinie                               \
                                                          );                                                                            \
                    Eblock                                                                                                              \
                                        /* Definition initiale d'un photon quelconque (VIRTUEL).                                     */
#define   INITIALISATION_D_UN_PHOTON_INEXISTANT(photon)                                                                                 \
                    Bblock                                                                                                              \
                    INITIALISATION_D_UNE_PARTICULE_INEXISTANTE(photon);                                                                 \
                    Eblock                                                                                                              \
                                        /* Definition initiale d'un photon INEXISTANT.                                               */
#define   INITIALISATION_D_UN_PHOTON_REEL(photon)                                                                                       \
                    Bblock                                                                                                              \
                    DEFINITION_D_UN_PHOTON_QUELCONQUE(photon                                                                            \
                                                     ,PHOTON_REEL                                                                       \
                                                     ,duree_de_vie_moyenne_des_photons_reels                                            \
                                                     ,position_indefinie                                                                \
                                                     ,vitesse_indefinie                                                                 \
                                                     ,moment_angulaire_indefini                                                         \
                                                      );                                                                                \
                    COULEUR_D_UNE_PARTICULE(photon                                                                                      \
                                           ,COMPOSANTE_ROUGE_D_UN_PHOTON_REEL_OU_VIRTUEL                                                \
                                           ,COMPOSANTE_VERTE_D_UN_PHOTON_REEL_OU_VIRTUEL                                                \
                                           ,COMPOSANTE_BLEUE_D_UN_PHOTON_REEL_OU_VIRTUEL                                                \
                                            );                                                                                          \
                    Eblock                                                                                                              \
                                        /* Definition initiale d'un photon REEL.                                                     */
#define   INITIALISATION_D_UN_PHOTON_VIRTUEL(photon)                                                                                    \
                    Bblock                                                                                                              \
                    DEFINITION_D_UN_PHOTON_QUELCONQUE(photon                                                                            \
                                                     ,PHOTON_VIRTUEL                                                                    \
                                                     ,duree_de_vie_moyenne_des_photons_virtuels                                         \
                                                     ,position_indefinie                                                                \
                                                     ,vitesse_indefinie                                                                 \
                                                     ,moment_angulaire_indefini                                                         \
                                                      );                                                                                \
                    COULEUR_D_UNE_PARTICULE(photon                                                                                      \
                                           ,COMPOSANTE_ROUGE_D_UN_PHOTON_REEL_OU_VIRTUEL                                                \
                                           ,COMPOSANTE_VERTE_D_UN_PHOTON_REEL_OU_VIRTUEL                                                \
                                           ,COMPOSANTE_BLEUE_D_UN_PHOTON_REEL_OU_VIRTUEL                                                \
                                            );                                                                                          \
                    Eblock                                                                                                              \
                                        /* Definition initiale d'un photon VIRTUEL.                                                  */
#define   DEFINITION_D_UN_PHOTON_REEL(photon,position_initiale,vitesse_initiale)                                                        \
                    Bblock                                                                                                              \
                    CREATION_D_UN_PHOTON(photon,PHOTON_REEL);                                                                           \
                                        /* Creation du photon REEL,                                                                  */ \
                    DEFINITION_D_UN_PHOTON_QUELCONQUE(photon                                                                            \
                                                     ,PHOTON_REEL                                                                       \
                                                     ,duree_de_vie_moyenne_des_photons_reels                                            \
                                                     ,position_initiale                                                                 \
                                                     ,vitesse_initiale                                                                  \
                                                     ,moment_angulaire_indefini                                                         \
                                                      );                                                                                \
                    COULEUR_D_UNE_PARTICULE(photon                                                                                      \
                                           ,COMPOSANTE_ROUGE_D_UN_PHOTON_REEL_OU_VIRTUEL                                                \
                                           ,COMPOSANTE_VERTE_D_UN_PHOTON_REEL_OU_VIRTUEL                                                \
                                           ,COMPOSANTE_BLEUE_D_UN_PHOTON_REEL_OU_VIRTUEL                                                \
                                            );                                                                                          \
                                        /* Et initialisation...                                                                      */ \
                    Eblock                                                                                                              \
                                        /* Creation et definition initiale d'un photon REEL.                                         */
#define   DEFINITION_D_UN_PHOTON_VIRTUEL(photon,position_initiale,vitesse_initiale)                                                     \
                    Bblock                                                                                                              \
                    CREATION_D_UN_PHOTON(photon,PHOTON_VIRTUEL);                                                                        \
                                        /* Creation du photon VIRTUEL,                                                               */ \
                    DEFINITION_D_UN_PHOTON_QUELCONQUE(photon                                                                            \
                                                     ,PHOTON_VIRTUEL                                                                    \
                                                     ,duree_de_vie_moyenne_des_photons_virtuels                                         \
                                                     ,position_initiale                                                                 \
                                                     ,vitesse_initiale                                                                  \
                                                     ,moment_angulaire_indefini                                                         \
                                                      );                                                                                \
                    COULEUR_D_UNE_PARTICULE(photon                                                                                      \
                                           ,COMPOSANTE_ROUGE_D_UN_PHOTON_REEL_OU_VIRTUEL                                                \
                                           ,COMPOSANTE_VERTE_D_UN_PHOTON_REEL_OU_VIRTUEL                                                \
                                           ,COMPOSANTE_BLEUE_D_UN_PHOTON_REEL_OU_VIRTUEL                                                \
                                            );                                                                                          \
                                        /* Et initialisation...                                                                      */ \
                    Eblock                                                                                                              \
                                        /* Creation et definition initiale d'un photon VIRTUEL.                                      */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D E P L A C E M E N T    D ' U N   P H O T O N   Q U E L C O N Q U E  :                                                    */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   DUREE_DE_VIE_MOYENNE_DES_PHOTONS_REELS                                                                                        \
                    GRO16(GRO16(PERIODE_INITIALE_DE_L_HORLOGE))
DEFV(Local,DEFV(Float,INIT(duree_de_vie_moyenne_des_photons_reels,DUREE_DE_VIE_MOYENNE_DES_PHOTONS_REELS)));
                                        /* Duree de vie moyenne des photons REELs                                                    */

#define   DUREE_DE_VIE_MOYENNE_DES_PHOTONS_VIRTUELS                                                                                     \
                    GRO1(GRO16(PERIODE_INITIALE_DE_L_HORLOGE))
DEFV(Local,DEFV(Float,INIT(duree_de_vie_moyenne_des_photons_virtuels,DUREE_DE_VIE_MOYENNE_DES_PHOTONS_VIRTUELS)));
                                        /* Duree de vie moyenne des photons VIRTUELs                                                 */

#define   VITESSE_DES_PHOTONS                                                                                                           \
                    VITESSE_DE_LA_LUMIERE                                                                                               \
                                        /* Module de la vitesse des photons.                                                         */
#define   DEPLACEMENT_D_UN_PHOTON(photon)                                                                                               \
                    Bblock                                                                                                              \
                    DEPLACEMENT_D_UNE_PARTICULE(photon);                                                                                \
                    Eblock                                                                                                              \
                                        /* Deplacement d'un photon au cours d'une periode d'horloge.                                 */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D E F I N I T I O N   D ' U N   Z 0   Q U E L C O N Q U E  :                                                               */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
Typedef(z0,_particule)
TypedefS(A___z0,z0)
                                        /* Definition d'un z0.                                                                       */
#define   DEFINITION_D_UN_Z0_QUELCONQUE(z0,pn,pd,position_initiale,vitesse_initiale,moment_angulaire_initial)                           \
                    Bblock                                                                                                              \
                    DEFINITION_D_UNE_PARTICULE_QUELCONQUE(z0                                                                            \
                                                         ,pn                                                                            \
                                                         ,PAS_DE_SAVEUR                                                                 \
                                                         ,pd                                                                            \
                                                         ,position_initiale                                                             \
                                                         ,vitesse_initiale                                                              \
                                                         ,moment_angulaire_initial                                                      \
                                                         ,CHARGE_NEUTRE                                                                 \
                                                         ,ROUGE_indefinie,VERTE_indefinie,BLEUE_indefinie                               \
                                                          );                                                                            \
                    Eblock                                                                                                              \
                                        /* Definition initiale d'un z0 quelconque (VIRTUEL).                                         */
#define   INITIALISATION_D_UN_Z0_INEXISTANT(z0)                                                                                         \
                    Bblock                                                                                                              \
                    INITIALISATION_D_UNE_PARTICULE_INEXISTANTE(z0);                                                                     \
                    Eblock                                                                                                              \
                                        /* Definition initiale d'un z0 INEXISTANT.                                                   */
#define   INITIALISATION_D_UN_Z0_REEL(z0)                                                                                               \
                    Bblock                                                                                                              \
                    DEFINITION_D_UN_Z0_QUELCONQUE(z0                                                                                    \
                                                 ,Z0_REEL                                                                               \
                                                 ,duree_de_vie_moyenne_des_z0s_reels                                                    \
                                                 ,position_indefinie                                                                    \
                                                 ,vitesse_indefinie                                                                     \
                                                 ,moment_angulaire_indefini                                                             \
                                                  );                                                                                    \
                    COULEUR_D_UNE_PARTICULE(z0                                                                                          \
                                           ,COMPOSANTE_ROUGE_D_UN_Z0_REEL_OU_VIRTUEL                                                    \
                                           ,COMPOSANTE_VERTE_D_UN_Z0_REEL_OU_VIRTUEL                                                    \
                                           ,COMPOSANTE_BLEUE_D_UN_Z0_REEL_OU_VIRTUEL                                                    \
                                            );                                                                                          \
                    Eblock                                                                                                              \
                                        /* Definition initiale d'un z0 REEL.                                                         */
#define   INITIALISATION_D_UN_Z0_VIRTUEL(z0)                                                                                            \
                    Bblock                                                                                                              \
                    DEFINITION_D_UN_Z0_QUELCONQUE(z0                                                                                    \
                                                 ,Z0_VIRTUEL                                                                            \
                                                 ,duree_de_vie_moyenne_des_z0s_virtuels                                                 \
                                                 ,position_indefinie                                                                    \
                                                 ,vitesse_indefinie                                                                     \
                                                 ,moment_angulaire_indefini                                                             \
                                                  );                                                                                    \
                    COULEUR_D_UNE_PARTICULE(z0                                                                                          \
                                           ,COMPOSANTE_ROUGE_D_UN_Z0_REEL_OU_VIRTUEL                                                    \
                                           ,COMPOSANTE_VERTE_D_UN_Z0_REEL_OU_VIRTUEL                                                    \
                                           ,COMPOSANTE_BLEUE_D_UN_Z0_REEL_OU_VIRTUEL                                                    \
                                            );                                                                                          \
                    Eblock                                                                                                              \
                                        /* Definition initiale d'un z0 VIRTUEL.                                                      */
#define   DEFINITION_D_UN_Z0_REEL(z0,position_initiale,vitesse_initiale)                                                                \
                    Bblock                                                                                                              \
                    CREATION_D_UN_Z0(z0,Z0_REEL);                                                                                       \
                                        /* Creation du z0 REEL,                                                                      */ \
                    DEFINITION_D_UN_Z0_QUELCONQUE(z0                                                                                    \
                                                 ,Z0_REEL                                                                               \
                                                 ,duree_de_vie_moyenne_des_z0s_reels                                                    \
                                                 ,position_initiale                                                                     \
                                                 ,vitesse_initiale                                                                      \
                                                 ,moment_angulaire_indefini                                                             \
                                                  );                                                                                    \
                    COULEUR_D_UNE_PARTICULE(z0                                                                                          \
                                           ,COMPOSANTE_ROUGE_D_UN_Z0_REEL_OU_VIRTUEL                                                    \
                                           ,COMPOSANTE_VERTE_D_UN_Z0_REEL_OU_VIRTUEL                                                    \
                                           ,COMPOSANTE_BLEUE_D_UN_Z0_REEL_OU_VIRTUEL                                                    \
                                            );                                                                                          \
                                        /* Et initialisation...                                                                      */ \
                    Eblock                                                                                                              \
                                        /* Creation et definition initiale d'un z0 REEL.                                             */
#define   DEFINITION_D_UN_Z0_VIRTUEL(z0,position_initiale,vitesse_initiale)                                                             \
                    Bblock                                                                                                              \
                    CREATION_D_UN_Z0(z0,Z0_VIRTUEL);                                                                                    \
                                        /* Creation du z0 VIRTUEL,                                                                   */ \
                    DEFINITION_D_UN_Z0_QUELCONQUE(z0                                                                                    \
                                                 ,Z0_VIRTUEL                                                                            \
                                                 ,duree_de_vie_moyenne_des_z0s_virtuels                                                 \
                                                 ,position_initiale                                                                     \
                                                 ,vitesse_initiale                                                                      \
                                                 ,moment_angulaire_indefini                                                             \
                                                  );                                                                                    \
                    COULEUR_D_UNE_PARTICULE(z0                                                                                          \
                                           ,COMPOSANTE_ROUGE_D_UN_Z0_REEL_OU_VIRTUEL                                                    \
                                           ,COMPOSANTE_VERTE_D_UN_Z0_REEL_OU_VIRTUEL                                                    \
                                           ,COMPOSANTE_BLEUE_D_UN_Z0_REEL_OU_VIRTUEL                                                    \
                                            );                                                                                          \
                                        /* Et initialisation...                                                                      */ \
                    Eblock                                                                                                              \
                                        /* Creation et definition initiale d'un z0 VIRTUEL.                                          */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D E P L A C E M E N T    D ' U N   Z 0   Q U E L C O N Q U E  :                                                            */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   DUREE_DE_VIE_MOYENNE_DES_Z0S_REELS                                                                                            \
                    GRO1(GRO8(PERIODE_INITIALE_DE_L_HORLOGE))
DEFV(Local,DEFV(Float,INIT(duree_de_vie_moyenne_des_z0s_reels,DUREE_DE_VIE_MOYENNE_DES_Z0S_REELS)));
                                        /* Duree de vie moyenne des z0s REELs. Cette valeur est choisie faible afin de garantir      */
                                        /* la presence d'un evenement entre le neutrino REEL et l'electron REEL (lorsque tel est     */
                                        /* l'etat initial du modele...).                                                             */

#define   DUREE_DE_VIE_MOYENNE_DES_Z0S_VIRTUELS                                                                                         \
                    GRO1(GRO16(PERIODE_INITIALE_DE_L_HORLOGE))
DEFV(Local,DEFV(Float,INIT(duree_de_vie_moyenne_des_z0s_virtuels,DUREE_DE_VIE_MOYENNE_DES_Z0S_VIRTUELS)));
                                        /* Duree de vie moyenne des z0s VIRTUELs.                                                    */

#define   VITESSE_DES_Z0S                                                                                                               \
                    VITESSE_DE_LA_LUMIERE                                                                                               \
                                        /* Module de la vitesse des z0s.                                                             */
#define   DEPLACEMENT_D_UN_Z0(z0)                                                                                                       \
                    Bblock                                                                                                              \
                    DEPLACEMENT_D_UNE_PARTICULE(z0);                                                                                    \
                    Eblock                                                                                                              \
                                        /* Deplacement d'un z0 au cours d'une periode d'horloge.                                     */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        Q U E L Q U E S   P A R T I C U L E S   V I R T U E L L E S   D E   M A N O E U V R E  :                                   */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   PARTICULE_NON_DEFINIE                                                                                                         \
                    ADRESSE(particule_non_definie)                                                                                      \
                                        /* Pour definir des particules non definies, des fins de listes,...                          */
DEFV(Local,DEFV(particule,particule_non_definie));
                                        /* Au cas ou une particule non definie serait, par erreur, referencee...                     */

DEFV(Local,DEFV(particule,particule_indifferente));
                                        /* Au cas ou une particule indifferente serait necessaire (voir 'v $xrq/di_elec.LH$I').      */

#define   quarkD1                                                                                                                       \
                    ACCES_QUARK(identite_du_quark_courant)
DEFV(Local,DEFV(quark,INIT(POINTERs(quarkD2),PARTICULE_NON_DEFINIE)));
DEFV(Local,DEFV(quark,INIT(POINTERs(quarkA1),PARTICULE_NON_DEFINIE)));
DEFV(Local,DEFV(quark,INIT(POINTERs(quarkA2),PARTICULE_NON_DEFINIE)));
DEFV(Local,DEFV(quark,INIT(POINTERs(quarkA3),PARTICULE_NON_DEFINIE)));
                                        /* Quelques quarks utiles...                                                                 */

#define   anti_quarkD1                                                                                                                  \
                    ACCES_ANTI_QUARK(identite_de_l_anti_quark_courant)
DEFV(Local,DEFV(anti_quark,INIT(POINTERs(anti_quarkD2),PARTICULE_NON_DEFINIE)));
DEFV(Local,DEFV(anti_quark,INIT(POINTERs(anti_quarkA1),PARTICULE_NON_DEFINIE)));
DEFV(Local,DEFV(anti_quark,INIT(POINTERs(anti_quarkA2),PARTICULE_NON_DEFINIE)));
DEFV(Local,DEFV(anti_quark,INIT(POINTERs(anti_quarkA3),PARTICULE_NON_DEFINIE)));
                                        /* Quelques anti-quarks utiles...                                                            */

#define   gluonD1                                                                                                                       \
                    ACCES_GLUON(identite_du_gluon_courant)
DEFV(Local,DEFV(gluon,INIT(POINTERs(gluonD2),PARTICULE_NON_DEFINIE)));
DEFV(Local,DEFV(gluon,INIT(POINTERs(gluonA1),PARTICULE_NON_DEFINIE)));
DEFV(Local,DEFV(gluon,INIT(POINTERs(gluonA2),PARTICULE_NON_DEFINIE)));
DEFV(Local,DEFV(gluon,INIT(POINTERs(gluonA3),PARTICULE_NON_DEFINIE)));
DEFV(Local,DEFV(gluon,INIT(POINTERs(gluonA4),PARTICULE_NON_DEFINIE)));
                                        /* Quelques gluons utiles...                                                                 */

#define   electronD1                                                                                                                    \
                    ACCES_ELECTRON(identite_de_l_electron_courant)
DEFV(Local,DEFV(electron,INIT(POINTERs(electronD2),PARTICULE_NON_DEFINIE)));
DEFV(Local,DEFV(electron,INIT(POINTERs(electronA1),PARTICULE_NON_DEFINIE)));
DEFV(Local,DEFV(electron,INIT(POINTERs(electronA2),PARTICULE_NON_DEFINIE)));
DEFV(Local,DEFV(electron,INIT(POINTERs(electronA3),PARTICULE_NON_DEFINIE)));
                                        /* Quelques electrons utiles...                                                              */

#define   anti_electronD1                                                                                                               \
                    ACCES_ANTI_ELECTRON(identite_de_l_anti_electron_courant)
DEFV(Local,DEFV(anti_electron,INIT(POINTERs(anti_electronD2),PARTICULE_NON_DEFINIE)));
DEFV(Local,DEFV(anti_electron,INIT(POINTERs(anti_electronA1),PARTICULE_NON_DEFINIE)));
DEFV(Local,DEFV(anti_electron,INIT(POINTERs(anti_electronA2),PARTICULE_NON_DEFINIE)));
DEFV(Local,DEFV(anti_electron,INIT(POINTERs(anti_electronA3),PARTICULE_NON_DEFINIE)));
                                        /* Quelques anti-electrons utiles...                                                         */

DEFV(Local,DEFV(electron_ou_anti_electron,INIT(POINTERs(electron_ou_anti_electronA2),PARTICULE_NON_DEFINIE)));
                                        /* Quelques electrons ou anti-electrons utiles...                                            */

#define   neutrinoD1                                                                                                                    \
                    ACCES_ELECTRON(identite_du_neutrino_courant)
DEFV(Local,DEFV(neutrino,INIT(POINTERs(neutrinoD2),PARTICULE_NON_DEFINIE)));
DEFV(Local,DEFV(neutrino,INIT(POINTERs(neutrinoA1),PARTICULE_NON_DEFINIE)));
DEFV(Local,DEFV(neutrino,INIT(POINTERs(neutrinoA2),PARTICULE_NON_DEFINIE)));
DEFV(Local,DEFV(neutrino,INIT(POINTERs(neutrinoA3),PARTICULE_NON_DEFINIE)));
                                        /* Quelques neutrinos utiles...                                                              */

#define   photonD1                                                                                                                      \
                    ACCES_PHOTON(identite_du_photon_courant)
DEFV(Local,DEFV(photon,INIT(POINTERs(photonD2),PARTICULE_NON_DEFINIE)));
DEFV(Local,DEFV(photon,INIT(POINTERs(photonA1),PARTICULE_NON_DEFINIE)));
DEFV(Local,DEFV(photon,INIT(POINTERs(photonA2),PARTICULE_NON_DEFINIE)));
DEFV(Local,DEFV(photon,INIT(POINTERs(photonA3),PARTICULE_NON_DEFINIE)));
DEFV(Local,DEFV(photon,INIT(POINTERs(photonA4),PARTICULE_NON_DEFINIE)));
                                        /* Quelques photons utiles...                                                                */

#define   z0D1                                                                                                                          \
                    ACCES_PHOTON(identite_du_z0_courant)
DEFV(Local,DEFV(z0,INIT(POINTERs(z0D2),PARTICULE_NON_DEFINIE)));
DEFV(Local,DEFV(z0,INIT(POINTERs(z0A1),PARTICULE_NON_DEFINIE)));
DEFV(Local,DEFV(z0,INIT(POINTERs(z0A2),PARTICULE_NON_DEFINIE)));
DEFV(Local,DEFV(z0,INIT(POINTERs(z0A3),PARTICULE_NON_DEFINIE)));
DEFV(Local,DEFV(z0,INIT(POINTERs(z0A4),PARTICULE_NON_DEFINIE)));
                                        /* Quelques z0s utiles...                                                                    */

DEFV(Local,DEFV(particule,INIT(POINTERs(particule_REELLE_dominante),PARTICULE_NON_DEFINIE)));
                                        /* Definition de la particule REELLE dominante par rapport au champ de couleur global et     */
                                        /* pour une position donnee dans l'espace physique.                                          */



Copyright © Jean-François Colonna, 2019-2021.
Copyright © CMAP (Centre de Mathématiques APpliquées) UMR CNRS 7641 / Ecole Polytechnique, 2019-2021.