/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D E F I N I T I O N S   D U   M E S O N  :                                                                                 */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Author of '$xrq/meson.L6$I' :                                                                                              */
/*                                                                                                                                   */
/*                    Jean-Francois Colonna (LACTAMME, 1992??????????).                                                              */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D E F I N I T I O N   D U   M E S O N   A   P A R T I R   D ' U N E   P A I R E                                            */
/*        Q U A R K   E T   A N T I - Q U A R K  :                                                                                   */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Version 1 du modele :                                                                                                      */
/*                                                                                                                                   */
/*                    Dans ce modele, la paire (quark,anti-quark) REELs                                                              */
/*                  est immobile, ce qui est garanti au cours du                                                                     */
/*                  temps grace a la conjonction de deux phenomenes :                                                                */
/*                                                                                                                                   */
/*                  1-'CONSERVATION_DU_MODULE_DE_LA_VITESSE_D_UN_QUARK_OU_D_UN_ANTI_QUARK(...)'                                      */
/*                  qui fait que lors d'un evenement du type 'STRONG_ABSORBTION_QxG___Q(...)' ou                                     */
/*                  'STRONG_EMISSION_Q___QxG(...)' un quark ou un anti-quark conserve le module                                      */
/*                  de sa vitesse. Ainsi, si il etait nul (et donc si il etait immobile), il le                                      */
/*                  restera tout au long de la simulation.                                                                           */
/*                                                                                                                                   */
/*                  2-les particules REELles ne sont pas soumises aux evenements du type                                             */
/*                  'STRONG_TRANSFORMATION_QxAQ___G(...)', seuls le sont les particules                                              */
/*                  VIRTUELles. Les particules REELles ne peuvent donc pas disparaitre...                                            */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Version 2 du modele :                                                                                                      */
/*                                                                                                                                   */
/*                    Dans ce modele, la paire (quark,anti-quark) REELs                                                              */
/*                  est mobile, mais ce, independamment des processus                                                                */
/*                  physiques de l'interaction forte. Cela est implante                                                              */
/*                  grace a deux phenomenes :                                                                                        */
/*                                                                                                                                   */
/*                  1-les particules dits REELles ne sont plus visualises                                                            */
/*                  implicitement,                                                                                                   */
/*                                                                                                                                   */
/*                  2-'ENSEMBLE_DES_QUARKS(...)' et 'ENSEMBLE_DES_ANTI_QUARKS(...)'                                                  */
/*                  sont remplaces respectivement par 'ENSEMBLE_DES_QUARKS_VIRTUELS(...)'                                            */
/*                  et 'ENSEMBLE_DES_ANTI_QUARKS_VIRTUELS(...)' dans les modules de                                                  */
/*                  deplacement ('DEPLACEMENT_DE_L_ENSEMBLE_DES_QUARKS' et                                                           */
/*                  'DEPLACEMENT_DE_L_ENSEMBLE_DES_ANTI_QUARK' respectivement),                                                      */
/*                  ainsi que dans les modules d'evenements conditionnels                                                            */
/*                  ('EVENEMENTS_CONDITIONNELS_POUR_CERTAINS_QUARKS' et                                                              */
/*                  'EVENEMENTS_CONDITIONNELS_POUR_CERTAINS_ANTI_QUARKS'                                                             */
/*                  respectivement).                                                                                                 */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#nodefine __VERSION__LES_PARTICULES_REELLES_SONT_SOUMISES_A_L_INTERACTION_FORTE
                                        /* Choix du mode de gestion des particules REELLEs (voir la note ci-dessus...).              */

#define   NOMBRE_DE_QUARKS_ET_D_ANTI_QUARKS_DANS_LE_MESON                                                                               \
                    DEUX                                                                                                                \
                                        /* Nombre de quarks et d'anti-quarks REELs contenus dans le meson...                         */
#define   SAVEUR_DU_QUARK_REEL                                                                                                          \
                    SE12(QUARK_u,QUARK_d)
#define   SAVEUR_DE_L_ANTI_QUARK_REEL                                                                                                   \
                    SAVEUR_DU_QUARK_REEL
                                        /* Saveurs arbitraires des particules REELles.                                               */

#define   _VX_quark_REEL                                                                                                                \
                    FZERO
#define   _VY_quark_REEL                                                                                                                \
                    FZERO
#define   _VZ_quark_REEL                                                                                                                \
                    FZERO
                                        /* Definition de la vitesse d'un quark et d'un anti-quark REEL.                              */
#define   _MX_quark_REEL                                                                                                                \
                    FZERO
#define   _MY_quark_REEL                                                                                                                \
                    FZERO
#define   _MZ_quark_REEL                                                                                                                \
                    FU
                                        /* Definition du moment angulaire d'un quark et d'un anti-quark REEL.                        */
#define   DEMI_CERCLE                                                                                                                   \
                    DIVI(CERCLE_TRIGONOMETRIQUE,FLOT(NOMBRE_DE_QUARKS_ET_D_ANTI_QUARKS_DANS_LE_MESON))                                  \
                                        /* Une moitie du cercle trigonometrique puisqu'il y a un quark et un anti-quark.             */
#define   phase_du_quark_REEL                                                                                                           \
                    GRO5(FRA4(DEMI_CERCLE))                                                                                             \
                                        /* On fixe de facon absolue la position angulaire dans 'PLAN_DE_LA_PARTICULE' du quark REEL, */ \
                                        /* l'anti-quark etant positionne par rapport a lui...                                        */ \
                                        /*                                                                                           */ \
                                        /*                            _                                                              */ \
                                        /*                            Q                                                              */ \
                                        /*                       .                                                                   */ \
                                        /*                                                                                           */ \
                                        /*                   Q                                                                       */ \
                                        /*                                                                                           */

=define   X_quark_REEL_INITIAL                                                                                                          \
                    ADD2(X_DU_CENTRE_DE_LA_PARTICULE                                                                                    \
                        ,MUL2(RAYON_D_UN_HADRON                                                                                         \
                             ,COSX(ADD2(phase_du_quark_REEL                                                                             \
                                       ,GRO0(DEMI_CERCLE)                                                                               \
                                        )                                                                                               \
                                   )                                                                                                    \
                              )                                                                                                         \
                         )
=define   Y_quark_REEL_INITIAL                                                                                                          \
                    ADD2(Y_DU_CENTRE_DE_LA_PARTICULE                                                                                    \
                        ,MUL2(RAYON_D_UN_HADRON                                                                                         \
                             ,SINX(ADD2(phase_du_quark_REEL                                                                             \
                                       ,GRO0(DEMI_CERCLE)                                                                               \
                                        )                                                                                               \
                                   )                                                                                                    \
                              )                                                                                                         \
                         )
=define   Z_quark_REEL_INITIAL                                                                                                          \
                    PLAN_DE_LA_PARTICULE
                                        /* Definition de la position du quark REEL.                                                  */
#define   VX_quark_REEL_INITIALE                                                                                                        \
                    _VX_quark_REEL
#define   VY_quark_REEL_INITIALE                                                                                                        \
                    _VY_quark_REEL
#define   VZ_quark_REEL_INITIALE                                                                                                        \
                    _VZ_quark_REEL
                                        /* Definition de la vitesse du quark REEL.                                                   */
#define   MX_quark_REEL_INITIAL                                                                                                         \
                    NEUT(_MX_quark_REEL)
#define   MY_quark_REEL_INITIAL                                                                                                         \
                    NEUT(_MY_quark_REEL)
#define   MZ_quark_REEL_INITIAL                                                                                                         \
                    NEUT(_MZ_quark_REEL)
                                        /* Definition du moment angulaire du quark REEL.                                             */
DEFV(Local,DEFV(Float,INIT(X_quark_REEL,FLOT__UNDEF)));
DEFV(Local,DEFV(Float,INIT(Y_quark_REEL,FLOT__UNDEF)));
DEFV(Local,DEFV(Float,INIT(Z_quark_REEL,FLOT__UNDEF)));
DEFINITION_D_UNE_POSITION_INDEFINIE(position_initiale_du_quark_REEL);
DEFV(Local,DEFV(Float,INIT(VX_quark_REEL,VX_quark_REEL_INITIALE)));
DEFV(Local,DEFV(Float,INIT(VY_quark_REEL,VY_quark_REEL_INITIALE)));
DEFV(Local,DEFV(Float,INIT(VZ_quark_REEL,VZ_quark_REEL_INITIALE)));
DEFINITION_D_UNE_VITESSE_INDEFINIE(vitesse_initiale_du_quark_REEL);
DEFV(Local,DEFV(Float,INIT(MX_quark_REEL,MX_quark_REEL_INITIAL)));
DEFV(Local,DEFV(Float,INIT(MY_quark_REEL,MY_quark_REEL_INITIAL)));
DEFV(Local,DEFV(Float,INIT(MZ_quark_REEL,MZ_quark_REEL_INITIAL)));
DEFINITION_D_UN_MOMENT_ANGULAIRE_INDEFINI(moment_angulaire_initial_du_quark_REEL);
DEFV(Local,DEFV(quark,INIT(POINTERs(quark_REEL),PARTICULE_NON_DEFINIE)));
#define   DEFINITION_DU_QUARK_REEL                                                                                                      \
                    Bblock                                                                                                              \
                    INITIALISATION_D_UNE_POSITION_QUELCONQUE(position_initiale_du_quark_REEL                                            \
                                                            ,X_quark_REEL                                                               \
                                                            ,Y_quark_REEL                                                               \
                                                            ,Z_quark_REEL                                                               \
                                                             );                                                                         \
                    INITIALISATION_D_UNE_VITESSE_QUELCONQUE(vitesse_initiale_du_quark_REEL                                              \
                                                           ,VX_quark_REEL                                                               \
                                                           ,VY_quark_REEL                                                               \
                                                           ,VZ_quark_REEL                                                               \
                                                            );                                                                          \
                    INITIALISATION_D_UN_MOMENT_ANGULAIRE_QUELCONQUE(moment_angulaire_initial_du_quark_REEL                              \
                                                                   ,MX_quark_REEL                                                       \
                                                                   ,MY_quark_REEL                                                       \
                                                                   ,MZ_quark_REEL                                                       \
                                                                    );                                                                  \
                    DEFINITION_D_UN_QUARK_REEL(quark_REEL                                                                               \
                                              ,SAVEUR_DU_QUARK_REEL                                                                     \
                                              ,position_initiale_du_quark_REEL                                                          \
                                              ,vitesse_initiale_du_quark_REEL                                                           \
                                              ,moment_angulaire_initial_du_quark_REEL                                                   \
                                              ,ROUGE_indefinie                                                                          \
                                              ,VERTE_indefinie                                                                          \
                                              ,BLEUE_indefinie                                                                          \
                                               );                                                                                       \
                    Eblock
#define   COULEUR_DU_QUARK_REEL                                                                                                         \
                    Bblock                                                                                                              \
                    COULEUR_D_UN_QUARK_REEL(quark_REEL                                                                                  \
                                           ,CHARGE_DE_COULEUR_ROUGE(ROUGE_min)                                                          \
                                           ,CHARGE_DE_COULEUR_VERTE(VERTE_min)                                                          \
                                           ,CHARGE_DE_COULEUR_BLEUE(BLEUE_max)                                                          \
                                            );                                                                                          \
                    TRACE_D_UN_EVENEMENT(Prin1("STRONG_CREATION_DU_QUARK_REEL                VIDE --> Q(%d)"                            \
                                              ,ETIQUETTE(quark_REEL)                                                                    \
                                               )                                                                                        \
                                         );                                                                                             \
                    Eblock

=define   X_anti_quark_REEL_INITIAL                                                                                                     \
                    ADD2(X_DU_CENTRE_DE_LA_PARTICULE                                                                                    \
                        ,MUL2(RAYON_D_UN_HADRON                                                                                         \
                             ,COSX(ADD2(phase_du_quark_REEL                                                                             \
                                       ,GRO1(DEMI_CERCLE)                                                                               \
                                        )                                                                                               \
                                   )                                                                                                    \
                              )                                                                                                         \
                         )
=define   Y_anti_quark_REEL_INITIAL                                                                                                     \
                    ADD2(Y_DU_CENTRE_DE_LA_PARTICULE                                                                                    \
                        ,MUL2(RAYON_D_UN_HADRON                                                                                         \
                             ,SINX(ADD2(phase_du_quark_REEL                                                                             \
                                       ,GRO1(DEMI_CERCLE)                                                                               \
                                        )                                                                                               \
                                   )                                                                                                    \
                              )                                                                                                         \
                         )
=define   Z_anti_quark_REEL_INITIAL                                                                                                     \
                    PLAN_DE_LA_PARTICULE
                                        /* Definition de la position de l'anti-quark REEL.                                           */
#define   VX_anti_quark_REEL_INITIALE                                                                                                   \
                    _VX_quark_REEL
#define   VY_anti_quark_REEL_INITIALE                                                                                                   \
                    _VY_quark_REEL
#define   VZ_anti_quark_REEL_INITIALE                                                                                                   \
                    _VZ_quark_REEL
                                        /* Definition de la vitesse de l'anti-quark REEL.                                            */
#define   MX_anti_quark_REEL_INITIAL                                                                                                    \
                    NEGA(_MX_quark_REEL)
#define   MY_anti_quark_REEL_INITIAL                                                                                                    \
                    NEGA(_MY_quark_REEL)
#define   MZ_anti_quark_REEL_INITIAL                                                                                                    \
                    NEGA(_MZ_quark_REEL)
                                        /* Definition du moment angulaire de l'anti-quark REEL.                                      */
DEFV(Local,DEFV(Float,INIT(X_anti_quark_REEL,FLOT__UNDEF)));
DEFV(Local,DEFV(Float,INIT(Y_anti_quark_REEL,FLOT__UNDEF)));
DEFV(Local,DEFV(Float,INIT(Z_anti_quark_REEL,FLOT__UNDEF)));
DEFINITION_D_UNE_POSITION_INDEFINIE(position_initiale_de_l_anti_quark_REEL);
DEFV(Local,DEFV(Float,INIT(VX_anti_quark_REEL,VX_anti_quark_REEL_INITIALE)));
DEFV(Local,DEFV(Float,INIT(VY_anti_quark_REEL,VY_anti_quark_REEL_INITIALE)));
DEFV(Local,DEFV(Float,INIT(VZ_anti_quark_REEL,VZ_anti_quark_REEL_INITIALE)));
DEFINITION_D_UNE_VITESSE_INDEFINIE(vitesse_initiale_de_l_anti_quark_REEL);
DEFV(Local,DEFV(Float,INIT(MX_anti_quark_REEL,MX_anti_quark_REEL_INITIAL)));
DEFV(Local,DEFV(Float,INIT(MY_anti_quark_REEL,MY_anti_quark_REEL_INITIAL)));
DEFV(Local,DEFV(Float,INIT(MZ_anti_quark_REEL,MZ_anti_quark_REEL_INITIAL)));
DEFINITION_D_UN_MOMENT_ANGULAIRE_INDEFINI(moment_angulaire_initial_de_l_anti_quark_REEL);
DEFV(Local,DEFV(anti_quark,INIT(POINTERs(anti_quark_REEL),PARTICULE_NON_DEFINIE)));
#define   DEFINITION_DE_L_ANTI_QUARK_REEL                                                                                               \
                    Bblock                                                                                                              \
                    INITIALISATION_D_UNE_POSITION_QUELCONQUE(position_initiale_de_l_anti_quark_REEL                                     \
                                                            ,X_anti_quark_REEL                                                          \
                                                            ,Y_anti_quark_REEL                                                          \
                                                            ,Z_anti_quark_REEL                                                          \
                                                             );                                                                         \
                    INITIALISATION_D_UNE_VITESSE_QUELCONQUE(vitesse_initiale_de_l_anti_quark_REEL                                       \
                                                           ,VX_anti_quark_REEL                                                          \
                                                           ,VY_anti_quark_REEL                                                          \
                                                           ,VZ_anti_quark_REEL                                                          \
                                                            );                                                                          \
                    INITIALISATION_D_UN_MOMENT_ANGULAIRE_QUELCONQUE(moment_angulaire_initial_de_l_anti_quark_REEL                       \
                                                                   ,MX_anti_quark_REEL                                                  \
                                                                   ,MY_anti_quark_REEL                                                  \
                                                                   ,MZ_anti_quark_REEL                                                  \
                                                                    );                                                                  \
                    DEFINITION_D_UN_ANTI_QUARK_REEL(anti_quark_REEL                                                                     \
                                                   ,SAVEUR_DE_L_ANTI_QUARK_REEL                                                         \
                                                   ,position_initiale_de_l_anti_quark_REEL                                              \
                                                   ,vitesse_initiale_de_l_anti_quark_REEL                                               \
                                                   ,moment_angulaire_initial_de_l_anti_quark_REEL                                       \
                                                   ,ROUGE_indefinie                                                                     \
                                                   ,VERTE_indefinie                                                                     \
                                                   ,BLEUE_indefinie                                                                     \
                                                    );                                                                                  \
                    Eblock
#define   COULEUR_DE_L_ANTI_QUARK_REEL                                                                                                  \
                    Bblock                                                                                                              \
                    COULEUR_D_UN_ANTI_QUARK_REEL(anti_quark_REEL                                                                        \
                                                ,CHARGE_DE_COULEUR_ROUGE(ROUGE_max)                                                     \
                                                ,CHARGE_DE_COULEUR_VERTE(VERTE_max)                                                     \
                                                ,CHARGE_DE_COULEUR_BLEUE(BLEUE_min)                                                     \
                                                 );                                                                                     \
                    TRACE_D_UN_EVENEMENT(Prin1("STRONG_CREATION_DE_L_ANTI_QUARK_REEL         VIDE --> AQ(%d)"                           \
                                              ,ETIQUETTE(anti_quark_REEL)                                                               \
                                               )                                                                                        \
                                         );                                                                                             \
                    Eblock

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D E F I N I T I O N   D U   M E S O N   P A R   L A   S U P E R P O S I T I O N   D E   D E U X                            */
/*        C H A M P S   C O R R E S P O N D A N T   A U   Q U A R K   E T   A   L ' A N T I - Q U A R K   R E E L S  :               */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Definition du champ des quarks de valence :                                                                                */
/*                                                                                                                                   */
/*                                                               2                         _ 2                                       */
/*                                        -etalement0.d0(x,y,z,Q)     -etalement0.d0(x,y,z,Q)                                        */
/*                                                                                                                                   */
/*        VALENCE(x,y,z) = ponderation0.[e                         + e                        ]                                      */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   DISTANCE_CARACTERISTIQUE_g0                                                                                                   \
                    FZERO
DEFV(Local,DEFV(Float,INIT(distance_caracteristique_g0,DISTANCE_CARACTERISTIQUE_g0)));
#define   PENTE_DE_LA_DISTANCE_CARACTERISTIQUE_g0                                                                                       \
                    FU
DEFV(Local,DEFV(Float,INIT(pente_de_la_distance_caracteristique_g0,PENTE_DE_LA_DISTANCE_CARACTERISTIQUE_g0)));
#define   ETALEMENT_g0                                                                                                                  \
                    GRO1(GRO4(GRO16(FU)))
DEFV(Local,DEFV(Float,INIT(etalement_g0,ETALEMENT_g0)));
#define   PONDERATION_g0                                                                                                                \
                    FU
DEFV(Local,DEFV(Float,INIT(ponderation_g0,PONDERATION_g0)));
                                        /* Definition du champ d'ordre 0. Nota : plus l'etalement est faible, et plus le champ       */
                                        /* correspondant s'etend loin de son "centre"... De plus, on remarquera que la variable      */
                                        /* 'distance_caracteristique_g0' n'est pas utilisee, et n'est la que par raison de symetrie  */
                                        /* avec les distances d'ordre superieur...                                                   */

=define   CHAMP_DE_VALENCE_DU_QUARK_REEL(cX,cY,cZ)                                                                                      \
                    CHAMP_GAUSSIEN(DISTANCE_ORDRE_0(cX,cY,cZ                                                                            \
                                                   ,quark_REEL                                                                          \
                                                   ,distance_caracteristique_g0                                                         \
                                                   ,pente_de_la_distance_caracteristique_g0                                             \
                                                   ,DISTANCE_CARACTERISTIQUE_g0                                                         \
                                                    )                                                                                   \
                                  ,etalement_g0                                                                                         \
                                   )
=define   CHAMP_DE_VALENCE_DE_L_ANTI_QUARK_REEL(cX,cY,cZ)                                                                               \
                    CHAMP_GAUSSIEN(DISTANCE_ORDRE_0(cX,cY,cZ                                                                            \
                                                   ,anti_quark_REEL                                                                     \
                                                   ,distance_caracteristique_g0                                                         \
                                                   ,pente_de_la_distance_caracteristique_g0                                             \
                                                   ,DISTANCE_CARACTERISTIQUE_g0                                                         \
                                                    )                                                                                   \
                                  ,etalement_g0                                                                                         \
                                   )
                                        /* Definition des deux champs gaussiens associes au quark et a l'anti-quark REELs du meson.  */

=define   CHAMP_DE_VALENCE(champ_de_valence_du_quark_REEL,champ_de_valence_de_l_anti_quark_REEL)                                        \
                    MUL2(ponderation_g0                                                                                                 \
                        ,fMAX2(champ_de_valence_du_quark_REEL                                                                           \
                              ,champ_de_valence_de_l_anti_quark_REEL                                                                    \
                               )                                                                                                        \
                         )
                                        /* Definition de la resultante des deux champs de valence associes au meson. On notera       */
                                        /* l'utilisation de 'fMAX2(...)' a la place de 'MAX2(...)' afin d'alleger le travail du      */
                                        /* compilateur...                                                                            */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D E F I N I T I O N   D E S   V A L E U R S   D E   L A   C H A R G E   D E   C O U L E U R  :                             */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        ATTENTION :                                                                                                                */
/*                                                                                                                                   */
/*                    Pour des raisons liees au pre-processing                                                                       */
/*                  les definitions qui suivent doivent se trouver                                                                   */
/*                  apres les definitions de 'CHAMP_DE_VALENCE_DU_QUARK_REEL(...)',                                                  */
/*                  et 'CHAMP_DE_VALENCE_DE_L_ANTI_QUARK_REEL(...)'...                                                               */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
%define   ROUGE_max                                                                                                                     \
                    COULEUR_max
                                        /* Definition du maximum de la composante ROUGE de la charge de couleur.                     */
%define   VERTE_max                                                                                                                     \
                    COULEUR_max
                                        /* Definition du maximum de la composante VERTE de la charge de couleur.                     */
%define   BLEUE_max                                                                                                                     \
                    COULEUR_max
                                        /* Definition du maximum de la composante BLEUE de la charge de couleur.                     */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D E F I N I T I O N   D E   L A   G E O M E T R I E   D U   C H A M P   " D E   F L U X "   S I M U L A N T                */
/*        L ' I N T E R A C T I O N   F O R T E   E N T R E   L E   Q U A R K   E T   L ' A N T I - Q U A R K  :                     */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Definition du champ de flux :                                                                                              */
/*                                                                                                                                   */
/*                                                            _ 2                                                                    */
/*                                     -etalement1.d1(x,y,z,Q,Q)                                                                     */
/*                                                                                                                                   */
/*        FLUX(x,y,z) = ponderation1.[e                          ]                                                                   */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   DISTANCE_CARACTERISTIQUE_g1                                                                                                   \
                    DOUB(MUL2(RAYON_D_UN_HADRON                                                                                         \
                             ,SINX(MOIT(DEMI_CERCLE))                                                                                   \
                              )                                                                                                         \
                         )
DEFV(Local,DEFV(Float,INIT(distance_caracteristique_g1,FLOT__UNDEF)));
#define   PENTE_DE_LA_DISTANCE_CARACTERISTIQUE_g1                                                                                       \
                    GRO3(FRA2(FRA10(FU)))
DEFV(Local,DEFV(Float,INIT(pente_de_la_distance_caracteristique_g1,PENTE_DE_LA_DISTANCE_CARACTERISTIQUE_g1)));
#define   ETALEMENT_g1                                                                                                                  \
                    GRO4(GRO16(GRO16(FU)))
DEFV(Local,DEFV(Float,INIT(etalement_g1,ETALEMENT_g1)));
#define   PONDERATION_g1                                                                                                                \
                    GRO4(FRA4(FU))
DEFV(Local,DEFV(Float,INIT(ponderation_g1,PONDERATION_g1)));
                                        /* Definition du champ d'ordre 1. Nota : plus l'etalement est faible, et plus le champ       */
                                        /* correspondant s'etend loin de son "centre"... De plus, on fera attention au fait que      */
                                        /* 'DISTANCE_CARACTERISTIQUE_g1' reference des lignes trigonometriques, et que donc          */
                                        /* 'distance_caracteristique_g1' ne peut etre initialisee a la compilation. La pente est     */
                                        /* choisie de facon a ce que un eloignement double provoque un affaiblissement de plus de    */
                                        /* la moitie...                                                                              */

#define   CHAMP_DE_FLUX(cX,cY,cZ)                                                                                                       \
                    MUL2(ponderation_g1                                                                                                 \
                        ,CHAMP_GAUSSIEN(DISTANCE_ORDRE_1(cX,cY,cZ                                                                       \
                                                        ,quark_REEL                                                                     \
                                                        ,anti_quark_REEL                                                                \
                                                        ,distance_caracteristique_g0                                                    \
                                                        ,pente_de_la_distance_caracteristique_g0                                        \
                                                        ,DISTANCE_CARACTERISTIQUE_g0                                                    \
                                                        ,distance_caracteristique_g1                                                    \
                                                        ,pente_de_la_distance_caracteristique_g1                                        \
                                                        ,DISTANCE_CARACTERISTIQUE_g1                                                    \
                                                         )                                                                              \
                                       ,etalement_g1                                                                                    \
                                        )                                                                                               \
                         )                                                                                                              \
                                        /* Definition d'un champ de flux tridimensionnel. On notera que la somme des ponderations    */ \
                                        /* doit etre, de preference, egale a la ponderation du champ fonction de 'DISTANCE_ORDRE_0'  */ \
                                        /* (g0 = g1 + g2).                                                                           */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D E F I N I T I O N   D E   L A   G E O M E T R I E   D U   C H A M P   " D E   C O N F I N E M E N T "                    */
/*        D U   Q U A R K   E T   D E   L ' A N T I - Q U A R K   :                                                                  */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Definition du champ de confinement :                                                                                       */
/*                                                                                                                                   */
/*        CONFINEMENT(x,y,z) = FLUX(x,y,z)                                                                                           */
/*                                                                                                                                   */
/*        il est donc inutile...                                                                                                     */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   DISTANCE_CARACTERISTIQUE_g2                                                                                                   \
                    FLOT__UNDEF
DEFV(Local,DEFV(Float,INIT(distance_caracteristique_g2,FLOT__UNDEF)));
                                        /* Nota : cette definition est uniquement destinee a la compatibilite avec les deux fichiers */
                                        /* '$xrq/nucleon.LW.1$I' et '$xrq/nucleon.LW.2$I'...                                         */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D E F I N I T I O N   D U   C H A M P   G L O B A L   D ' I N T E R A C T I O N                                            */
/*        I N T E R N E   A U   M E S O N  :                                                                                         */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   CALCULER_LE_CHAMP_DE_FLUX                                                                                                     \
                    VRAI
#define   NE_PAS_CALCULER_LE_CHAMP_DE_FLUX                                                                                              \
                    NOTL(CALCULER_LE_CHAMP_DE_FLUX)
                                        /* Indicateurs precisant si le champ "de flux" doit etre calcule (cas general), ou bien      */
                                        /* ignore (cas de l'initialisation du modele avec des nuages de particules virtuelles).      */

#define   CUTOFF_D_INITIALISATION                                                                                                       \
                    GRO9(FRA10(FU))                                                                                                     \
                                        /* "Cutoff" d'initialisation destine a eliminer les fluctuations qui pourraient surgir en    */ \
                                        /* dehors du proton et a concentrer les nuages de particules virtuelles autour des quarks    */ \
                                        /* REELs.                                                                                    */
DEFV(Local,DEFV(Float,INIT(cutoff_d_initialisation,CUTOFF_D_INITIALISATION)));
                                        /* "Cutoff" d'initialisation. On notera que la valeur de 'cutoff_d_initialisation' est un    */
                                        /* pourcentage et non pas une fraction 'FRAm(FRAn(MAXIMUM_DU_CHAMP_GLOBAL))', car en effet,  */
                                        /* 'MAXIMUM_DU_CHAMP_GLOBAL' n'est pas connu a la compilation, et ne peut donc etre utilise  */
                                        /* pour initialiser 'cutoff_d_initialisation'...                                             */
#define   CUTOFF_DU_CHAMP_GLOBAL                                                                                                        \
                    FZERO                                                                                                               \
                                        /* "Cutoff" du champ global destine a eliminer les fluctuations qui pourraient surgir en     */ \
                                        /* dehors du proton ; il est initialise a 0% de 'MAXIMUM_DU_CHAMP_GLOBAL'...                 */
DEFV(Local,DEFV(Float,INIT(cutoff_du_champ_global,CUTOFF_DU_CHAMP_GLOBAL)));
                                        /* "Cutoff" du champ global. On notera que la valeur de 'cutoff_du_champ_global' est un      */
                                        /* pourcentage et non pas une fraction 'FRAm(FRAn(MAXIMUM_DU_CHAMP_GLOBAL))', car en effet,  */
                                        /* 'MAXIMUM_DU_CHAMP_GLOBAL' n'est pas connu a la compilation, et ne peut donc etre utilise  */
                                        /* pour initialiser 'cutoff_du_champ_global'...                                              */

#define   MINIMUM_DU_CHAMP_GLOBAL                                                                                                       \
                    FZERO                                                                                                               \
                                        /* Valeur minimale (relativement arbitraire) du champ global...                              */
#define   MAXIMUM_DU_CHAMP_GLOBAL                                                                                                       \
                    CHOI(CHAMP_DE_VALENCE(CHAMP_DE_VALENCE_DU_QUARK_REEL(COORDONNEES(quark_REEL,x)                                      \
                                                                        ,COORDONNEES(quark_REEL,y)                                      \
                                                                        ,COORDONNEES(quark_REEL,z)                                      \
                                                                         )                                                              \
                                         ,CHAMP_DE_VALENCE_DE_L_ANTI_QUARK_REEL(COORDONNEES(quark_REEL,x)                               \
                                                                               ,COORDONNEES(quark_REEL,y)                               \
                                                                               ,COORDONNEES(quark_REEL,z)                               \
                                                                                )                                                       \
                                          )                                                                                             \
                        ,CHAMP_DE_VALENCE(CHAMP_DE_VALENCE_DU_QUARK_REEL(COORDONNEES(anti_quark_REEL,x)                                 \
                                                                        ,COORDONNEES(anti_quark_REEL,y)                                 \
                                                                        ,COORDONNEES(anti_quark_REEL,z)                                 \
                                                                         )                                                              \
                                         ,CHAMP_DE_VALENCE_DE_L_ANTI_QUARK_REEL(COORDONNEES(anti_quark_REEL,x)                          \
                                                                               ,COORDONNEES(anti_quark_REEL,y)                          \
                                                                               ,COORDONNEES(anti_quark_REEL,z)                          \
                                                                                )                                                       \
                                          )                                                                                             \
                         )                                                                                                              \
                                        /* Valeur maximale du champ global qui sera atteinte la ou se situent le quark et            */ \
                                        /* l'anti-quark REELs.                                                                       */
DEFV(Local,DEFV(Float,INIT(champ_de_valence_du_quark_REEL,FLOT__UNDEF)));
                                        /* Definition de la partie "de valence du quark REEL" du champ global,                       */
DEFV(Local,DEFV(Float,INIT(champ_de_valence_de_l_anti_quark_REEL,FLOT__UNDEF)));
                                        /* Definition de la partie "de valence de l'anti-quark REEL" du champ global,                */
DEFV(Local,DEFV(Float,INIT(champ_de_valence_ROUGE,FLOT__UNDEF)));
DEFV(Local,DEFV(Float,INIT(champ_de_valence_VERTE,FLOT__UNDEF)));
DEFV(Local,DEFV(Float,INIT(champ_de_valence_BLEUE,FLOT__UNDEF)));
                                        /* Ces trois definitions sont donnees afin d'assurer la compatibilite avec le generateur     */
                                        /* de nuages de particules virtuelles '$xrq/nucleon.LK$I'...                                 */
DEFV(Local,DEFV(Float,INIT(champ_de_flux,FLOT__UNDEF)));
                                        /* Definition de la partie "de flux" du champ global,                                        */
DEFV(Local,DEFV(Float,INIT(champ_global,FLOT__UNDEF)));
                                        /* Intensite du champ resultant (valence + flux + confinement).                              */
#define   COMPARE_X_A(cX,cA,particule)                                                                                                  \
                    Bblock                                                                                                              \
                    Test(IFGE(cX,cA))                                                                                                   \
                         Bblock                                                                                                         \
                         EGAL(particule_REELLE_dominante,particule);                                                                    \
                         Eblock                                                                                                         \
                    ATes                                                                                                                \
                         Bblock                                                                                                         \
                         Eblock                                                                                                         \
                    ETes                                                                                                                \
                    Eblock                                                                                                              \
                                        /* Choix de la  particule REEL dominante lorsque 'cX' l'emporte sur 'cA'. On notera que l'on */ \
                                        /* ne fait plus appel a la logique floue. En fait, en prenant par exemple le cas de deux     */ \
                                        /* quarks REELs, a mi-distance se produirait un renversement brutal du choix du quark REEL   */ \
                                        /* dominant ; la solution a ce probleme est donnee par le calcul de deux valeurs aleatoires  */ \
                                        /* 'choix_champ_du_quark_REEL', 'choix_champ_de_l_anti_quark_REEL' qui assureront une        */ \
                                        /* transition douce...                                                                       */
#define   COMPARE_Q_AQ(cQ,cAQ)                                                                                                          \
                    Bblock                                                                                                              \
                    COMPARE_X_A(cQ,cAQ,quark_REEL);                                                                                     \
                    Eblock                                                                                                              \
                                        /* Choix du quark REEL comme particule dominante quand 'cQ' l'emporte sur 'cAQ'...           */
#define   COMPARE_AQ_Q(cQ,cAQ)                                                                                                          \
                    Bblock                                                                                                              \
                    COMPARE_X_A(cAQ,cQ,anti_quark_REEL);                                                                                \
                    Eblock                                                                                                              \
                                        /* Choix de l'anti-quark  REEL comme particule dominante quand 'cAQ' l'emporte sur 'cQ'...   */
#define   PERMUTATION_Q_AQ(permutation)                                                                                                 \
                    Bblock                                                                                                              \
                    permutation(COMPARE_Q_AQ(choix_champ_du_quark_REEL,choix_champ_de_l_anti_quark_REEL);                               \
                               ,COMPARE_AQ_Q(choix_champ_du_quark_REEL,choix_champ_de_l_anti_quark_REEL);                               \
                                );                                                                                                      \
                    Eblock                                                                                                              \
                                        /* Permutation de deux tests relatifs au quark et a l'anti-quark  REEL.                      */
#define   CALCUL_DU_CHAMP_GLOBAL(cX,cY,cZ,calculer_le_champ_de_flux,calculer_le_champ_de_confinement,cutoff)                            \
                    Bblock                                                                                                              \
                    DEFV(Float,INIT(choix_champ_du_quark_REEL,COULEUR_indefinie));                                                      \
                    DEFV(Float,INIT(choix_champ_de_l_anti_quark_REEL,COULEUR_indefinie));                                               \
                                        /* Ensemble de deux valeurs aleatoires calculees chacune par rapport a la valeur locale      */ \
                                        /* du champ de couleur associe.                                                              */ \
                    DEFV(Float,INIT(pour_ne_pas_favoriser_une_particule,FLOT__UNDEF));                                                  \
                                        /* Afin de ne pas favoriser un quark REEL plutot qu'un autre, lorsqu'il y a equilibre de     */ \
                                        /* leurs contribution...                                                                     */ \
                                                                                                                                        \
                    EGAL(champ_de_valence_du_quark_REEL,CHAMP_DE_VALENCE_DU_QUARK_REEL(cX,cY,cZ));                                      \
                    EGAL(champ_de_valence_de_l_anti_quark_REEL,CHAMP_DE_VALENCE_DE_L_ANTI_QUARK_REEL(cX,cY,cZ));                        \
                                        /* Calcul des champs "de valence".                                                           */ \
                    EGAL(champ_de_valence_ROUGE                                                                                         \
                        ,fMAX2(SCAL(champ_de_valence_du_quark_REEL                                                                      \
                                   ,CHARGE_DE_COULEUR_ROUGE(ROUGE_max)                                                                  \
                                   ,cCOULEUR(quark_REEL,ROUGE)                                                                          \
                                    )                                                                                                   \
                              ,SCAL(champ_de_valence_de_l_anti_quark_REEL                                                               \
                                   ,CHARGE_DE_COULEUR_ROUGE(ROUGE_max)                                                                  \
                                   ,cCOULEUR(anti_quark_REEL,ROUGE)                                                                     \
                                    )                                                                                                   \
                               )                                                                                                        \
                         );                                                                                                             \
                    EGAL(champ_de_valence_VERTE                                                                                         \
                        ,fMAX2(SCAL(champ_de_valence_du_quark_REEL                                                                      \
                                   ,CHARGE_DE_COULEUR_VERTE(VERTE_max)                                                                  \
                                   ,cCOULEUR(quark_REEL,VERTE)                                                                          \
                                    )                                                                                                   \
                              ,SCAL(champ_de_valence_de_l_anti_quark_REEL                                                               \
                                   ,CHARGE_DE_COULEUR_VERTE(VERTE_max)                                                                  \
                                   ,cCOULEUR(anti_quark_REEL,VERTE)                                                                     \
                                    )                                                                                                   \
                               )                                                                                                        \
                         );                                                                                                             \
                    EGAL(champ_de_valence_BLEUE                                                                                         \
                        ,fMAX2(SCAL(champ_de_valence_du_quark_REEL                                                                      \
                                   ,CHARGE_DE_COULEUR_BLEUE(BLEUE_max)                                                                  \
                                   ,cCOULEUR(quark_REEL,BLEUE)                                                                          \
                                    )                                                                                                   \
                              ,SCAL(champ_de_valence_de_l_anti_quark_REEL                                                               \
                                   ,CHARGE_DE_COULEUR_BLEUE(BLEUE_max)                                                                  \
                                   ,cCOULEUR(anti_quark_REEL,BLEUE)                                                                     \
                                    )                                                                                                   \
                               )                                                                                                        \
                         );                                                                                                             \
                                        /* Ces trois definitions sont donnees afin d'assurer la compatibilite avec le generateur     */ \
                                        /* de nuages de particules virtuelles '$xrq/nucleon.LK$I'...                                 */ \
                                                                                                                                        \
                    Test(IL_FAUT(calculer_le_champ_de_flux))                                                                            \
                         Bblock                                                                                                         \
                         EGAL(champ_de_flux,CHAMP_DE_FLUX(cX,cY,cZ));                                                                   \
                                        /* Calcul du champ "de flux".                                                                */ \
                         Eblock                                                                                                         \
                    ATes                                                                                                                \
                         Bblock                                                                                                         \
                         EGAL(champ_de_flux,MINIMUM_DU_CHAMP_GLOBAL);                                                                   \
                                        /* Cas ou le champ "de flux" est ignore (cas de l'initialisation sur des nuages de           */ \
                                        /* particules virtuelles centres sur les trois quarks REELs).                                */ \
                         Eblock                                                                                                         \
                    ETes                                                                                                                \
                                                                                                                                        \
                    EGAL(champ_global                                                                                                   \
                        ,MAX2(CHAMP_DE_VALENCE(champ_de_valence_du_quark_REEL,champ_de_valence_de_l_anti_quark_REEL)                    \
                             ,champ_de_flux                                                                                             \
                              )                                                                                                         \
                         );                                                                                                             \
                                        /* Superposition des champs "de valence" et "de flux".                                       */ \
                    EGAL(champ_global                                                                                                   \
                        ,fCOND(IFGE(champ_global,MUL2(cutoff,MAXIMUM_DU_CHAMP_GLOBAL))                                                  \
                              ,champ_global                                                                                             \
                              ,MINIMUM_DU_CHAMP_GLOBAL                                                                                  \
                               )                                                                                                        \
                         );                                                                                                             \
                                        /* Prise en compte du cutoff ; on notera l'ecriture :                                        */ \
                                        /*                                                                                           */ \
                                        /*                  MUL2(cutoff,MAXIMUM_DU_CHAMP_GLOBAL)                                     */ \
                                        /*                                                                                           */ \
                                        /* qui vient du fait que 'MAXIMUM_DU_CHAMP_GLOBAL' n'est pas connu a la compilation, et      */ \
                                        /* ne peut donc etre utilise pour initialiser 'cutoff'...                                    */ \
                    GENERATION_D_UNE_VALEUR(choix_champ_du_quark_REEL                                                                   \
                                           ,MINIMUM_DU_CHAMP_GLOBAL                                                                     \
                                           ,champ_de_valence_du_quark_REEL                                                              \
                                            );                                                                                          \
                    GENERATION_D_UNE_VALEUR(choix_champ_de_l_anti_quark_REEL                                                            \
                                           ,MINIMUM_DU_CHAMP_GLOBAL                                                                     \
                                           ,champ_de_valence_de_l_anti_quark_REEL                                                       \
                                            );                                                                                          \
                                        /* Generation de deux valeurs aleatoires calculees chacune par rapport a la valeur locale    */ \
                                        /* du champ associe ; on notera que si c'est par exemple le quark REEL qui est le champ      */ \
                                        /* dominant, alors la valeur aleatoire 'choix_champ_du_quark_REEL' que l'on calculeici a     */ \
                                        /* de bonnes chances d'etre superieure a la valeur 'choix_champ_de_l_anti_quark_REEL', et    */ \
                                        /* donc le quark REEL a lui aussi de bonnes chances pour etre choisi comme particule REELle  */ \
                                        /* dominante...                                                                              */ \
                    GENERATION_D_UNE_VALEUR(pour_ne_pas_favoriser_une_particule                                                         \
                                           ,FZERO                                                                                       \
                                           ,FACT(NOMBRE_DE_QUARKS_ET_D_ANTI_QUARKS_DANS_LE_MESON)                                       \
                                            );                                                                                          \
                                        /* Generation d'une valeur aleatoire qui va nous permettre de choisir un ordre de test       */ \
                                        /* des trois quarks REELs parmi les 2!=2 possibles...                                        */ \
                    Choi(INTE(pour_ne_pas_favoriser_une_particule))                                                                     \
                         Bblock                                                                                                         \
                         Ca1e(ZERO)                                                                                                     \
                              Bblock                                                                                                    \
                              PERMUTATION_Q_AQ(PERMUTATION_12);                                                                         \
                              Eblock                                                                                                    \
                         ECa1                                                                                                           \
                                                                                                                                        \
                         Ca1e(UN)                                                                                                       \
                              Bblock                                                                                                    \
                              PERMUTATION_Q_AQ(PERMUTATION_21);                                                                         \
                              Eblock                                                                                                    \
                         ECa1                                                                                                           \
                                                                                                                                        \
                         Defo                                                                                                           \
                              Bblock                                                                                                    \
                              PERMUTATION_Q_AQ(PERMUTATION_21);                                                                         \
                              Eblock                                                                                                    \
                         EDef                                                                                                           \
                         Eblock                                                                                                         \
                    ECho                                                                                                                \
                                        /* Sequence de selection du quark REEL dominant au point (cX,cY,cZ) ; toute cette mecanique  */ \
                                        /* au demeurant un peu lourde, est introduite pour satisfaire une juste requete              */ \
                                        /* intellectuelle. En effet, il aurait ete possible d'effectuer systematiquement la          */ \
                                        /* sequence de test suivante :                                                               */ \
                                        /*                                                                                           */ \
                                        /*   COMPARE_Q_AQ(champ_de_valence_du_quark_REEL,champ_de_valence_de_l_anti_quark_REEL);     */ \
                                        /*                                                                                           */ \
                                        /* mais, il est evident qu'elle dissymetrise le role des particules REELles, puisque,        */ \
                                        /* par exemple, s'il y a egalite entre les champs 'quark REEL' et 'anti-quark REEL', c'est   */ \
                                        /* toujours le quark REEL qui sera choisi comme particule dominante. Le choix aleatoire de   */ \
                                        /* l'ordre des tests resoud ce conflit...                                                    */ \
                    Eblock                                                                                                              \
                                        /* Intensite du champ resultant ; il est obtenu a l'aide du champ "de flux" qui              */ \
                                        /* definit les lignes d'interaction, et par des champs de valence centres sur les            */ \
                                        /* quarks reels ; on notera que l'on calcule separement les trois champs de couleur          */ \
                                        /* au cas ou l'on aurait besoin d'eux individuellement...                                    */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        G E S T I O N   D E S   P A R T I C U L E S   R E E L L E S  :                                                             */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   CHANGEMENT_EVENTUEL_DE_QUARK_REEL(quarkD,quarkA)                                                                              \
                    Bblock                                                                                                              \
                    Test(IFEQ(NATURE(quarkD),QUARK_REEL))                                                                               \
                         Bblock                                                                                                         \
                         Choi(NATURE(quarkA))                                                                                           \
                              Bblock                                                                                                    \
                              Ca1e(QUARK_VIRTUEL)                                                                                       \
                                   Bblock                                                                                               \
                                   DECR(nombre_instantane_de_quarks_VIRTUELs,I);                                                        \
                                        /* Decomptage des quarks VIRTUELs.                                                           */ \
                                   Eblock                                                                                               \
                              ECa1                                                                                                      \
                                                                                                                                        \
                              Defo                                                                                                      \
                                   Bblock                                                                                               \
                                   PRINT_ERREUR("la nature du quark a changer n'est pas reconnue");                                     \
                                   Eblock                                                                                               \
                              EDef                                                                                                      \
                              Eblock                                                                                                    \
                         ECho                                                                                                           \
                                                                                                                                        \
                         NATURE_D_UNE_PARTICULE(quarkA,QUARK_REEL);                                                                     \
                                        /* Le quark 'quarkA' devient reel, puisque 'quarkD' l'etait et qu'il va mourir...            */ \
                                                                                                                                        \
                         INCR(nombre_instantane_de_quarks_REELs,I);                                                                     \
                         INCR(nombre_total_de_quarks_REELs,I);                                                                          \
                                        /* Comptage des quarks REELs.                                                                */ \
                                                                                                                                        \
                         INITIALISATION_DE_LA_POSITION_INITIALE_D_UNE_PARTICULE(quarkA                                                  \
                                                                               ,ASI2(quarkD,espace_temps,position_courante)             \
                                                                                );                                                      \
                         INITIALISATION_DE_LA_POSITION_COURANTE_D_UNE_PARTICULE(quarkA);                                                \
                                        /* Et le 'quarkA' se place la ou etait 'quarkD'...                                           */ \
                                                                                                                                        \
                         Test(IFEQ(quarkD,quark_REEL))                                                                                  \
                              Bblock                                                                                                    \
                              CHANGEMENT_DE_QUARK_REEL(quark_REEL,quarkA);                                                              \
                                        /* Si 'quarkD' etait le quark REEL ROUGE, 'quarkD' le devient...                             */ \
                              Eblock                                                                                                    \
                         ATes                                                                                                           \
                              Bblock                                                                                                    \
                              PRINT_ERREUR("un quark a le type REEL, mais n'est pas le quark REEL courant");                            \
                              Eblock                                                                                                    \
                         ETes                                                                                                           \
                         Eblock                                                                                                         \
                    ATes                                                                                                                \
                         Bblock                                                                                                         \
                         Eblock                                                                                                         \
                    ETes                                                                                                                \
                    Eblock                                                                                                              \
                                        /* Passage de l'etat REEL d'un quark qui le possedait (et qui va etre detruit) a un qui      */ \
                                        /* va l'acquerir (et qui vient d'etre cree).                                                 */

#define   CHANGEMENT_EVENTUEL_D_ANTI_QUARK_REEL(anti_quarkD,anti_quarkA)                                                                \
                    Bblock                                                                                                              \
                    Test(IFEQ(NATURE(anti_quarkD),ANTI_QUARK_REEL))                                                                     \
                         Bblock                                                                                                         \
                         Choi(NATURE(anti_quarkA))                                                                                      \
                              Bblock                                                                                                    \
                              Ca1e(ANTI_QUARK_VIRTUEL)                                                                                  \
                                   Bblock                                                                                               \
                                   DECR(nombre_instantane_d_anti_quarks_VIRTUELs,I);                                                    \
                                        /* Decomptage des anti-quarks VIRTUELs.                                                      */ \
                                   Eblock                                                                                               \
                              ECa1                                                                                                      \
                                                                                                                                        \
                              Defo                                                                                                      \
                                   Bblock                                                                                               \
                                   PRINT_ERREUR("la nature de l'anti-quark a changer n'est pas reconnue");                              \
                                   Eblock                                                                                               \
                              EDef                                                                                                      \
                              Eblock                                                                                                    \
                         ECho                                                                                                           \
                                                                                                                                        \
                         NATURE_D_UNE_PARTICULE(anti_quarkA,ANTI_QUARK_REEL);                                                           \
                                        /* L'anti-quark 'anti_quarkA' devient reel, puisque 'anti_quarkD' l'etait et qu'il meure...  */ \
                                                                                                                                        \
                         INCR(nombre_instantane_d_anti_quarks_REELs,I);                                                                 \
                         INCR(nombre_total_d_anti_quarks_REELs,I);                                                                      \
                                        /* Comptage des anti-quarks REELs.                                                           */ \
                                                                                                                                        \
                         INITIALISATION_DE_LA_POSITION_INITIALE_D_UNE_PARTICULE(anti_quarkA                                             \
                                                                               ,ASI2(anti_quarkD,espace_temps,position_courante)        \
                                                                                );                                                      \
                         INITIALISATION_DE_LA_POSITION_COURANTE_D_UNE_PARTICULE(anti_quarkA);                                           \
                                        /* Et le 'anti_quarkA' se place la ou etait 'anti_quarkD'...                                 */ \
                                                                                                                                        \
                         Test(IFEQ(anti_quarkD,anti_quark_REEL))                                                                        \
                              Bblock                                                                                                    \
                              CHANGEMENT_D_ANTI_QUARK_REEL(anti_quark_REEL,anti_quarkA);                                                \
                                        /* Si 'anti_quarkD' etait l'anti-quark REEL ROUGE, 'anti_quarkD' le devient...               */ \
                              Eblock                                                                                                    \
                         ATes                                                                                                           \
                              Bblock                                                                                                    \
                              PRINT_ERREUR("un anti-quark a le type REEL, mais n'est pas l'anti-quark REEL courant");                   \
                              Eblock                                                                                                    \
                         ETes                                                                                                           \
                         Eblock                                                                                                         \
                    ATes                                                                                                                \
                         Bblock                                                                                                         \
                         Eblock                                                                                                         \
                    ETes                                                                                                                \
                    Eblock                                                                                                              \
                                        /* Passage de l'etat REEL d'un anti-quark qui le possedait (et qui va etre detruit) a un qui */ \
                                        /* va l'acquerir (et qui vient d'etre cree).                                                 */



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