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

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D E F I N I T I O N   D U   P R O T O N   A   P A R T I R   D E   T R O I S   Q U A R K S   " R E E L S "  :               */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Version 1 du modele :                                                                                                      */
/*                                                                                                                                   */
/*                    Dans ce modele, les trois quarks dits REELs                                                                    */
/*                  sont immobiles, 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 quarks REELs ne sont pas soumis aux evenements du type                                                     */
/*                  'STRONG_TRANSFORMATION_QxAQ___G(...)', seuls le sont les quarks                                                  */
/*                  VIRTUELs. Les quarks REELs ne peuvent donc pas disparaitre...                                                    */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Version 2 du modele :                                                                                                      */
/*                                                                                                                                   */
/*                    Dans ce modele, les trois quarks dits REELs                                                                    */
/*                  sont mobiles, mais ce, independamment des processus                                                              */
/*                  physiques de l'interaction forte. Cela est implante                                                              */
/*                  grace a deux phenomenes :                                                                                        */
/*                                                                                                                                   */
/*                  1-les trois quarks dits REELs 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_DANS_LE_PROTON                                                                                               \
                    TROIS                                                                                                               \
                                        /* Nombre de quarks REELs contenus dans le proton...                                         */
#define   SAVEUR_DU_QUARK_REEL_ROUGE                                                                                                    \
                    SE12(QUARK_u,QUARK_d)
#define   SAVEUR_DU_QUARK_REEL_VERTE                                                                                                    \
                    SE12(QUARK_u,QUARK_d)
#define   SAVEUR_DU_QUARK_REEL_BLEUE                                                                                                    \
                    SE22(QUARK_u,QUARK_d)
                                        /* Saveurs arbitraires des trois quarks REELs (ROUGE,VERTE,BLEUE), en se souvenant           */
                                        /* malgre tout que le proton est un assemblage de trois quarks de saveur (u,u,d)...          */

#define   _VX_quark_REEL                                                                                                                \
                    FZERO
#define   _VY_quark_REEL                                                                                                                \
                    FZERO
#define   _VZ_quark_REEL                                                                                                                \
                    FZERO
                                        /* Definition de la vitesse d'un quark REEL.                                                 */
#define   _MX_quark_REEL                                                                                                                \
                    FZERO
#define   _MY_quark_REEL                                                                                                                \
                    FZERO
#define   _MZ_quark_REEL                                                                                                                \
                    FU
                                        /* Definition du moment angulaire d'un quark REEL.                                           */
#define   TIERS_DE_CERCLE                                                                                                               \
                    DIVI(CERCLE_TRIGONOMETRIQUE,FLOT(NOMBRE_DE_QUARKS_DANS_LE_PROTON))                                                  \
                                        /* Un tiers du cercle trigonometrique puisqu'il y a trois quarks reels.                      */
#define   phase_du_quark_REEL_ROUGE                                                                                                     \
                    NEUT(FRA4(TIERS_DE_CERCLE))                                                                                         \
                                        /* On fixe de facon absolue la position angulaire dans 'PLAN_DE_LA_PARTICULE' du quark       */ \
                                        /* ROUGE, les quarks VERTE et BLEUE etant fixes par rapport a lui...                         */ \
                                        /*                                                                                           */ \
                                        /*                  V---------R                                                              */ \
                                        /*                   \   .   /                                                               */ \
                                        /*                    \  .  /                                                                */ \
                                        /*                     \ . /                                                                 */ \
                                        /*                      \ /                                                                  */ \
                                        /*                       B                                                                   */ \
                                        /*                                                                                           */ \
                                        /* Depuis que 'X_quark_REEL_ROUGE' (et les autres...) est devenu une variable, les choses    */ \
                                        /* ont change :                                                                              */ \
                                        /*                                                                                           */ \
                                        /*        #define   PHASE_DU_QUARK_REEL_ROUGE                                             \  */ \
                                        /*                            NEUT(FRA4(TIERS_DE_CERCLE))                                    */ \
                                        /*                                                                                           */ \
                                        /* et :                                                                                      */ \
                                        /*                                                                                           */ \
                                        /*        DEFV(Local,DEFV(Float,INIT(phase_du_quark_REEL_ROUGE,PHASE_DU_QUARK_REEL_ROUGE))); */ \
                                        /*                                                                                           */ \
                                        /* 'phase_du_quark_REEL_ROUGE' est redevenue une constante...                                */ \
                                        /*                                                                                           */

=define   X_quark_REEL_ROUGE_INITIAL                                                                                                    \
                    ADD2(X_DU_CENTRE_DE_LA_PARTICULE                                                                                    \
                        ,MUL2(RAYON_D_UN_HADRON                                                                                         \
                             ,COSX(ADD2(phase_du_quark_REEL_ROUGE                                                                       \
                                       ,GRO0(TIERS_DE_CERCLE)                                                                           \
                                        )                                                                                               \
                                   )                                                                                                    \
                              )                                                                                                         \
                         )
=define   Y_quark_REEL_ROUGE_INITIAL                                                                                                    \
                    ADD2(Y_DU_CENTRE_DE_LA_PARTICULE                                                                                    \
                        ,MUL2(RAYON_D_UN_HADRON                                                                                         \
                             ,SINX(ADD2(phase_du_quark_REEL_ROUGE                                                                       \
                                       ,GRO0(TIERS_DE_CERCLE)                                                                           \
                                        )                                                                                               \
                                   )                                                                                                    \
                              )                                                                                                         \
                         )
=define   Z_quark_REEL_ROUGE_INITIAL                                                                                                    \
                    PLAN_DE_LA_PARTICULE
                                        /* Definition de la position du quark reel ROUGE.                                            */
#define   VX_quark_REEL_ROUGE_INITIALE                                                                                                  \
                    _VX_quark_REEL
#define   VY_quark_REEL_ROUGE_INITIALE                                                                                                  \
                    _VY_quark_REEL
#define   VZ_quark_REEL_ROUGE_INITIALE                                                                                                  \
                    _VZ_quark_REEL
                                        /* Definition de la vitesse du quark reel ROUGE.                                             */
#define   MX_quark_REEL_ROUGE_INITIAL                                                                                                   \
                    NEUT(_MX_quark_REEL)
#define   MY_quark_REEL_ROUGE_INITIAL                                                                                                   \
                    NEUT(_MY_quark_REEL)
#define   MZ_quark_REEL_ROUGE_INITIAL                                                                                                   \
                    NEUT(_MZ_quark_REEL)
                                        /* Definition du moment angulaire du quark reel ROUGE.                                       */
DEFV(Local,DEFV(Float,INIT(X_quark_REEL_ROUGE,FLOT__UNDEF)));
DEFV(Local,DEFV(Float,INIT(Y_quark_REEL_ROUGE,FLOT__UNDEF)));
DEFV(Local,DEFV(Float,INIT(Z_quark_REEL_ROUGE,FLOT__UNDEF)));
DEFINITION_D_UNE_POSITION_INDEFINIE(position_initiale_du_quark_REEL_ROUGE);
DEFV(Local,DEFV(Float,INIT(VX_quark_REEL_ROUGE,VX_quark_REEL_ROUGE_INITIALE)));
DEFV(Local,DEFV(Float,INIT(VY_quark_REEL_ROUGE,VY_quark_REEL_ROUGE_INITIALE)));
DEFV(Local,DEFV(Float,INIT(VZ_quark_REEL_ROUGE,VZ_quark_REEL_ROUGE_INITIALE)));
DEFINITION_D_UNE_VITESSE_INDEFINIE(vitesse_initiale_du_quark_REEL_ROUGE);
DEFV(Local,DEFV(Float,INIT(MX_quark_REEL_ROUGE,MX_quark_REEL_ROUGE_INITIAL)));
DEFV(Local,DEFV(Float,INIT(MY_quark_REEL_ROUGE,MY_quark_REEL_ROUGE_INITIAL)));
DEFV(Local,DEFV(Float,INIT(MZ_quark_REEL_ROUGE,MZ_quark_REEL_ROUGE_INITIAL)));
DEFINITION_D_UN_MOMENT_ANGULAIRE_INDEFINI(moment_angulaire_initial_du_quark_REEL_ROUGE);
DEFV(Local,DEFV(quark,INIT(POINTERs(quark_REEL_ROUGE),PARTICULE_NON_DEFINIE)));
#define   DEFINITION_DU_QUARK_REEL_ROUGE                                                                                                \
                    Bblock                                                                                                              \
                    INITIALISATION_D_UNE_POSITION_QUELCONQUE(position_initiale_du_quark_REEL_ROUGE                                      \
                                                            ,X_quark_REEL_ROUGE                                                         \
                                                            ,Y_quark_REEL_ROUGE                                                         \
                                                            ,Z_quark_REEL_ROUGE                                                         \
                                                             );                                                                         \
                    INITIALISATION_D_UNE_VITESSE_QUELCONQUE(vitesse_initiale_du_quark_REEL_ROUGE                                        \
                                                           ,VX_quark_REEL_ROUGE                                                         \
                                                           ,VY_quark_REEL_ROUGE                                                         \
                                                           ,VZ_quark_REEL_ROUGE                                                         \
                                                            );                                                                          \
                    INITIALISATION_D_UN_MOMENT_ANGULAIRE_QUELCONQUE(moment_angulaire_initial_du_quark_REEL_ROUGE                        \
                                                                   ,MX_quark_REEL_ROUGE                                                 \
                                                                   ,MY_quark_REEL_ROUGE                                                 \
                                                                   ,MZ_quark_REEL_ROUGE                                                 \
                                                                    );                                                                  \
                    DEFINITION_D_UN_QUARK_REEL(quark_REEL_ROUGE                                                                         \
                                              ,SAVEUR_DU_QUARK_REEL_ROUGE                                                               \
                                              ,position_initiale_du_quark_REEL_ROUGE                                                    \
                                              ,vitesse_initiale_du_quark_REEL_ROUGE                                                     \
                                              ,moment_angulaire_initial_du_quark_REEL_ROUGE                                             \
                                              ,ROUGE_indefinie                                                                          \
                                              ,VERTE_indefinie                                                                          \
                                              ,BLEUE_indefinie                                                                          \
                                               );                                                                                       \
                    Eblock
#define   COULEUR_DU_QUARK_REEL_ROUGE                                                                                                   \
                    Bblock                                                                                                              \
                    COULEUR_D_UN_QUARK_REEL(quark_REEL_ROUGE                                                                            \
                                           ,CHARGE_DE_COULEUR_ROUGE(ROUGE_max)                                                          \
                                           ,CHARGE_DE_COULEUR_VERTE(VERTE_min)                                                          \
                                           ,CHARGE_DE_COULEUR_BLEUE(BLEUE_min)                                                          \
                                            );                                                                                          \
                    TRACE_D_UN_EVENEMENT(Prin1("STRONG_CREATION_DU_QUARK_REEL_ROUGE          VIDE --> Q(%d)"                            \
                                              ,ETIQUETTE(quark_REEL_ROUGE)                                                              \
                                               )                                                                                        \
                                         );                                                                                             \
                    Eblock

=define   X_quark_REEL_VERTE_INITIAL                                                                                                    \
                    ADD2(X_DU_CENTRE_DE_LA_PARTICULE                                                                                    \
                        ,MUL2(RAYON_D_UN_HADRON                                                                                         \
                             ,COSX(ADD2(phase_du_quark_REEL_ROUGE                                                                       \
                                       ,GRO1(TIERS_DE_CERCLE)                                                                           \
                                        )                                                                                               \
                                   )                                                                                                    \
                              )                                                                                                         \
                         )
=define   Y_quark_REEL_VERTE_INITIAL                                                                                                    \
                    ADD2(Y_DU_CENTRE_DE_LA_PARTICULE                                                                                    \
                        ,MUL2(RAYON_D_UN_HADRON                                                                                         \
                             ,SINX(ADD2(phase_du_quark_REEL_ROUGE                                                                       \
                                       ,GRO1(TIERS_DE_CERCLE)                                                                           \
                                        )                                                                                               \
                                   )                                                                                                    \
                              )                                                                                                         \
                         )
=define   Z_quark_REEL_VERTE_INITIAL                                                                                                    \
                    PLAN_DE_LA_PARTICULE
                                        /* Definition de la position du quark reel VERTE.                                            */
#define   VX_quark_REEL_VERTE_INITIALE                                                                                                  \
                    _VX_quark_REEL
#define   VY_quark_REEL_VERTE_INITIALE                                                                                                  \
                    _VY_quark_REEL
#define   VZ_quark_REEL_VERTE_INITIALE                                                                                                  \
                    _VZ_quark_REEL
                                        /* Definition de la vitesse du quark reel VERTE.                                             */
#define   MX_quark_REEL_VERTE_INITIAL                                                                                                   \
                    NEGA(_MX_quark_REEL)
#define   MY_quark_REEL_VERTE_INITIAL                                                                                                   \
                    NEGA(_MY_quark_REEL)
#define   MZ_quark_REEL_VERTE_INITIAL                                                                                                   \
                    NEGA(_MZ_quark_REEL)
                                        /* Definition du moment angulaire du quark reel VERTE.                                       */
DEFV(Local,DEFV(Float,INIT(X_quark_REEL_VERTE,FLOT__UNDEF)));
DEFV(Local,DEFV(Float,INIT(Y_quark_REEL_VERTE,FLOT__UNDEF)));
DEFV(Local,DEFV(Float,INIT(Z_quark_REEL_VERTE,FLOT__UNDEF)));
DEFINITION_D_UNE_POSITION_INDEFINIE(position_initiale_du_quark_REEL_VERTE);
DEFV(Local,DEFV(Float,INIT(VX_quark_REEL_VERTE,VX_quark_REEL_VERTE_INITIALE)));
DEFV(Local,DEFV(Float,INIT(VY_quark_REEL_VERTE,VY_quark_REEL_VERTE_INITIALE)));
DEFV(Local,DEFV(Float,INIT(VZ_quark_REEL_VERTE,VZ_quark_REEL_VERTE_INITIALE)));
DEFINITION_D_UNE_VITESSE_INDEFINIE(vitesse_initiale_du_quark_REEL_VERTE);
DEFV(Local,DEFV(Float,INIT(MX_quark_REEL_VERTE,MX_quark_REEL_VERTE_INITIAL)));
DEFV(Local,DEFV(Float,INIT(MY_quark_REEL_VERTE,MY_quark_REEL_VERTE_INITIAL)));
DEFV(Local,DEFV(Float,INIT(MZ_quark_REEL_VERTE,MZ_quark_REEL_VERTE_INITIAL)));
DEFINITION_D_UN_MOMENT_ANGULAIRE_INDEFINI(moment_angulaire_initial_du_quark_REEL_VERTE);
DEFV(Local,DEFV(quark,INIT(POINTERs(quark_REEL_VERTE),PARTICULE_NON_DEFINIE)));
#define   DEFINITION_DU_QUARK_REEL_VERTE                                                                                                \
                    Bblock                                                                                                              \
                    INITIALISATION_D_UNE_POSITION_QUELCONQUE(position_initiale_du_quark_REEL_VERTE                                      \
                                                            ,X_quark_REEL_VERTE                                                         \
                                                            ,Y_quark_REEL_VERTE                                                         \
                                                            ,Z_quark_REEL_VERTE                                                         \
                                                             );                                                                         \
                    INITIALISATION_D_UNE_VITESSE_QUELCONQUE(vitesse_initiale_du_quark_REEL_VERTE                                        \
                                                           ,VX_quark_REEL_VERTE                                                         \
                                                           ,VY_quark_REEL_VERTE                                                         \
                                                           ,VZ_quark_REEL_VERTE                                                         \
                                                            );                                                                          \
                    INITIALISATION_D_UN_MOMENT_ANGULAIRE_QUELCONQUE(moment_angulaire_initial_du_quark_REEL_VERTE                        \
                                                                   ,MX_quark_REEL_VERTE                                                 \
                                                                   ,MY_quark_REEL_VERTE                                                 \
                                                                   ,MZ_quark_REEL_VERTE                                                 \
                                                                    );                                                                  \
                    DEFINITION_D_UN_QUARK_REEL(quark_REEL_VERTE                                                                         \
                                              ,SAVEUR_DU_QUARK_REEL_VERTE                                                               \
                                              ,position_initiale_du_quark_REEL_VERTE                                                    \
                                              ,vitesse_initiale_du_quark_REEL_VERTE                                                     \
                                              ,moment_angulaire_initial_du_quark_REEL_VERTE                                             \
                                              ,ROUGE_indefinie                                                                          \
                                              ,VERTE_indefinie                                                                          \
                                              ,BLEUE_indefinie                                                                          \
                                               );                                                                                       \
                    Eblock
#define   COULEUR_DU_QUARK_REEL_VERTE                                                                                                   \
                    Bblock                                                                                                              \
                    COULEUR_D_UN_QUARK_REEL(quark_REEL_VERTE                                                                            \
                                           ,CHARGE_DE_COULEUR_ROUGE(ROUGE_min)                                                          \
                                           ,CHARGE_DE_COULEUR_VERTE(VERTE_max)                                                          \
                                           ,CHARGE_DE_COULEUR_BLEUE(BLEUE_min)                                                          \
                                            );                                                                                          \
                    TRACE_D_UN_EVENEMENT(Prin1("STRONG_CREATION_DU_QUARK_REEL_VERTE          VIDE --> Q(%d)"                            \
                                              ,ETIQUETTE(quark_REEL_VERTE)                                                              \
                                               )                                                                                        \
                                         );                                                                                             \
                    Eblock

=define   X_quark_REEL_BLEUE_INITIAL                                                                                                    \
                    ADD2(X_DU_CENTRE_DE_LA_PARTICULE                                                                                    \
                        ,MUL2(RAYON_D_UN_HADRON                                                                                         \
                             ,COSX(ADD2(phase_du_quark_REEL_ROUGE                                                                       \
                                       ,GRO2(TIERS_DE_CERCLE)                                                                           \
                                        )                                                                                               \
                                   )                                                                                                    \
                              )                                                                                                         \
                         )
=define   Y_quark_REEL_BLEUE_INITIAL                                                                                                    \
                    ADD2(Y_DU_CENTRE_DE_LA_PARTICULE                                                                                    \
                        ,MUL2(RAYON_D_UN_HADRON                                                                                         \
                             ,SINX(ADD2(phase_du_quark_REEL_ROUGE                                                                       \
                                       ,GRO2(TIERS_DE_CERCLE)                                                                           \
                                        )                                                                                               \
                                   )                                                                                                    \
                              )                                                                                                         \
                         )
=define   Z_quark_REEL_BLEUE_INITIAL                                                                                                    \
                    PLAN_DE_LA_PARTICULE
                                        /* Definition de la position du quark reel BLEUE.                                            */
#define   VX_quark_REEL_BLEUE_INITIALE                                                                                                  \
                    _VX_quark_REEL
#define   VY_quark_REEL_BLEUE_INITIALE                                                                                                  \
                    _VY_quark_REEL
#define   VZ_quark_REEL_BLEUE_INITIALE                                                                                                  \
                    _VZ_quark_REEL
                                        /* Definition de la vitesse du quark reel BLEUE.                                             */
#define   MX_quark_REEL_BLEUE_INITIAL                                                                                                   \
                    NEGA(_MX_quark_REEL)
#define   MY_quark_REEL_BLEUE_INITIAL                                                                                                   \
                    NEGA(_MY_quark_REEL)
#define   MZ_quark_REEL_BLEUE_INITIAL                                                                                                   \
                    NEGA(_MZ_quark_REEL)
                                        /* Definition du moment angulaire du quark reel BLEUE.                                       */
DEFV(Local,DEFV(Float,INIT(X_quark_REEL_BLEUE,FLOT__UNDEF)));
DEFV(Local,DEFV(Float,INIT(Y_quark_REEL_BLEUE,FLOT__UNDEF)));
DEFV(Local,DEFV(Float,INIT(Z_quark_REEL_BLEUE,FLOT__UNDEF)));
DEFINITION_D_UNE_POSITION_INDEFINIE(position_initiale_du_quark_REEL_BLEUE);
DEFV(Local,DEFV(Float,INIT(VX_quark_REEL_BLEUE,VX_quark_REEL_BLEUE_INITIALE)));
DEFV(Local,DEFV(Float,INIT(VY_quark_REEL_BLEUE,VY_quark_REEL_BLEUE_INITIALE)));
DEFV(Local,DEFV(Float,INIT(VZ_quark_REEL_BLEUE,VZ_quark_REEL_BLEUE_INITIALE)));
DEFINITION_D_UNE_VITESSE_INDEFINIE(vitesse_initiale_du_quark_REEL_BLEUE);
DEFV(Local,DEFV(Float,INIT(MX_quark_REEL_BLEUE,MX_quark_REEL_BLEUE_INITIAL)));
DEFV(Local,DEFV(Float,INIT(MY_quark_REEL_BLEUE,MY_quark_REEL_BLEUE_INITIAL)));
DEFV(Local,DEFV(Float,INIT(MZ_quark_REEL_BLEUE,MZ_quark_REEL_BLEUE_INITIAL)));
DEFINITION_D_UN_MOMENT_ANGULAIRE_INDEFINI(moment_angulaire_initial_du_quark_REEL_BLEUE);
DEFV(Local,DEFV(quark,INIT(POINTERs(quark_REEL_BLEUE),PARTICULE_NON_DEFINIE)));
                                        /* Definition des trois quarks REELs constitutifs du proton.                                 */
#define   DEFINITION_DU_QUARK_REEL_BLEUE                                                                                                \
                    Bblock                                                                                                              \
                    INITIALISATION_D_UNE_POSITION_QUELCONQUE(position_initiale_du_quark_REEL_BLEUE                                      \
                                                            ,X_quark_REEL_BLEUE                                                         \
                                                            ,Y_quark_REEL_BLEUE                                                         \
                                                            ,Z_quark_REEL_BLEUE                                                         \
                                                             );                                                                         \
                    INITIALISATION_D_UNE_VITESSE_QUELCONQUE(vitesse_initiale_du_quark_REEL_BLEUE                                        \
                                                           ,VX_quark_REEL_BLEUE                                                         \
                                                           ,VY_quark_REEL_BLEUE                                                         \
                                                           ,VZ_quark_REEL_BLEUE                                                         \
                                                            );                                                                          \
                    INITIALISATION_D_UN_MOMENT_ANGULAIRE_QUELCONQUE(moment_angulaire_initial_du_quark_REEL_BLEUE                        \
                                                                   ,MX_quark_REEL_BLEUE                                                 \
                                                                   ,MY_quark_REEL_BLEUE                                                 \
                                                                   ,MZ_quark_REEL_BLEUE                                                 \
                                                                    );                                                                  \
                    DEFINITION_D_UN_QUARK_REEL(quark_REEL_BLEUE                                                                         \
                                              ,SAVEUR_DU_QUARK_REEL_BLEUE                                                               \
                                              ,position_initiale_du_quark_REEL_BLEUE                                                    \
                                              ,vitesse_initiale_du_quark_REEL_BLEUE                                                     \
                                              ,moment_angulaire_initial_du_quark_REEL_BLEUE                                             \
                                              ,ROUGE_indefinie                                                                          \
                                              ,VERTE_indefinie                                                                          \
                                              ,BLEUE_indefinie                                                                          \
                                               );                                                                                       \
                    Eblock
                                        /* Definition des trois quarks REELs constitutifs du proton, mais ATTENTION, sans la         */
                                        /* charge de couleur (voir ce qui suit...).                                                  */
#define   COULEUR_DU_QUARK_REEL_BLEUE                                                                                                   \
                    Bblock                                                                                                              \
                    COULEUR_D_UN_QUARK_REEL(quark_REEL_BLEUE                                                                            \
                                           ,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_BLEUE          VIDE --> Q(%d)"                            \
                                              ,ETIQUETTE(quark_REEL_BLEUE)                                                              \
                                               )                                                                                        \
                                         );                                                                                             \
                    Eblock
                                        /* Mise en place de la couleur (qr,qv,qb) d'un quark REEL. En effet, lors de la mise en      */
                                        /* place des quarks REELs par 'DEFINITION_DU_QUARK_REEL_ROUGE/VERTE/BLEUE', on ne peut       */
                                        /* simultanement definir leur charge de couleurs, car cette derniere reference les extrema   */
                                        /* du champ, qui sont eux-memes calcules a partir de la position des quarks REELs. Ainsi,    */
                                        /* en definissant 'DEFINITION_DU_QUARK_REEL_ROUGE' (le premier defini), il serait necessaire */
                                        /* de connaitre les quarks REELs VERTE et BLEUE, alors que leur position n'est pas encore    */
                                        /* definie. Donc, on attendra d'avoir defini la position des 3 quarks REELs avant de fixer   */
                                        /* leur charge de couleur par 'COULEUR_DU_QUARK_REEL_ROUGE/VERTE/BLEUE'...                   */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D E F I N I T I O N   D U   P R O T O N   P A R   L A   S U P E R P O S I T I O N   D E   T R O I S                        */
/*        C H A M P S   C O R R E S P O N D A N T   A   S E S   T R O I S   Q U A R K S   R E E L S   ( D I T S                      */
/*        " Q U A R K S   D E   V A L E N C E " )  :                                                                                 */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*                   ....::::---+++++oooooooo++++----::::.....                                                                       */
/*                  ....::::---+++ooooo****ooooo+++---::::.....                                                                      */
/*                  ...::::--+++ooo************ooo+++---:::......                                                                    */
/*                  ...:::--+++ooo***########***ooo+++--::::........                                                                 */
/*                  ...::---++ooo***#       ##***ooo++---::::...................                                                     */
/*                  ..:::---++oo***## VERTE ###***oo+++---:::::.....................                                                 */
/*                  ..:::---++ooo***#       ##***ooo+++---::::::::::::::::::::::....                                                 */
/*                  ...:::--+++oo****########****ooo+++----:::::::::::::::::::::::::                                                 */
/*                  ...:::---+++ooo*************ooo+++-------:::------------------::                                                 */
/*                  ....:::---+++oooo********ooooo++++--------------+++++++++++++---                                                 */
/*                  .....:::----++++ooooooooooo+++++-------------+++++ooooooooo+++++                                                 */
/*                   .....::::----++++++++++++++++-------------++++ooooo******ooooo+                                                 */
/*                    .....:::::-----+++++++++----------------+++oooo************ooo                                                 */
/*                     ......:::::---------------------------+++ooo****########****o                                                 */
/*                      ......:::::----------------:::-------+++ooo***#       ###***                                                 */
/*                      ......::::::-------------::::::-----++++oo***## ROUGE ###***                                                 */
/*                      ......:::::----------------:::-------+++ooo***#       ###***                                                 */
/*                     ......:::::---------------------------+++ooo****########****o                                                 */
/*                    .....:::::-----+++++++++----------------+++oooo************ooo                                                 */
/*                   .....::::----++++++++++++++++-------------++++ooooo******ooooo+                                                 */
/*                  .....:::----++++ooooooooooo+++++-------------+++++ooooooooo+++++                                                 */
/*                  ....:::---+++oooo********ooooo++++--------------+++++++++++++---                                                 */
/*                  ...:::---+++ooo*************ooo+++-------:::------------------::                                                 */
/*                  ...:::--+++oo****########****ooo+++----:::::::::::::::::::::::::                                                 */
/*                  ..:::---++ooo***#       ##***ooo+++---::::::::::::::::::::::....                                                 */
/*                  ..:::---++oo***## BLEUE ###***oo+++---:::::.....................                                                 */
/*                  ...::---++ooo***#       ##***ooo++---::::...................                                                     */
/*                  ...:::--+++ooo***########***ooo+++--::::........                                                                 */
/*                  ...::::--+++ooo************ooo+++---:::......                                                                    */
/*                  ....::::---+++ooooo****ooooo+++---::::.....                                                                      */
/*                   ....::::---+++++oooooooo++++----::::.....                                                                       */
/*                    .....::::-----++++++++++-----::::.....                                                                         */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Definition du champ des quarks de valence :                                                                                */
/*                                                                                                                                   */
/*                                                                2                            2                            2        */
/*                                        -etalement0.d0(x,y,z,Q )     -etalement0.d0(x,y,z,Q )     -etalement0.d0(x,y,z,Q )         */
/*                                                              R                            V                            B          */
/*        VALENCE(x,y,z) = ponderation0.[e                          + 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_ROUGE(cX,cY,cZ)                                                                                              \
                    CHAMP_GAUSSIEN(DISTANCE_ORDRE_0(cX,cY,cZ                                                                            \
                                                   ,quark_REEL_ROUGE                                                                    \
                                                   ,distance_caracteristique_g0                                                         \
                                                   ,pente_de_la_distance_caracteristique_g0                                             \
                                                   ,DISTANCE_CARACTERISTIQUE_g0                                                         \
                                                    )                                                                                   \
                                  ,etalement_g0                                                                                         \
                                   )
=define   CHAMP_DE_VALENCE_VERTE(cX,cY,cZ)                                                                                              \
                    CHAMP_GAUSSIEN(DISTANCE_ORDRE_0(cX,cY,cZ                                                                            \
                                                   ,quark_REEL_VERTE                                                                    \
                                                   ,distance_caracteristique_g0                                                         \
                                                   ,pente_de_la_distance_caracteristique_g0                                             \
                                                   ,DISTANCE_CARACTERISTIQUE_g0                                                         \
                                                    )                                                                                   \
                                  ,etalement_g0                                                                                         \
                                   )
=define   CHAMP_DE_VALENCE_BLEUE(cX,cY,cZ)                                                                                              \
                    CHAMP_GAUSSIEN(DISTANCE_ORDRE_0(cX,cY,cZ                                                                            \
                                                   ,quark_REEL_BLEUE                                                                    \
                                                   ,distance_caracteristique_g0                                                         \
                                                   ,pente_de_la_distance_caracteristique_g0                                             \
                                                   ,DISTANCE_CARACTERISTIQUE_g0                                                         \
                                                    )                                                                                   \
                                  ,etalement_g0                                                                                         \
                                   )
                                        /* Definition des trois champs gaussiens associes aux trois quarks de valence du proton.     */

=define   CHAMP_DE_VALENCE_RVB(champ_de_valence_ROUGE,champ_de_valence_VERTE,champ_de_valence_BLEUE)                                    \
                    MUL2(ponderation_g0                                                                                                 \
                        ,fMAX3(champ_de_valence_ROUGE                                                                                   \
                              ,champ_de_valence_VERTE                                                                                   \
                              ,champ_de_valence_BLEUE                                                                                   \
                               )                                                                                                        \
                         )
                                        /* Definition de la resultante des trois champs de valence associes au proton. On notera     */
                                        /* l'utilisation de 'fMAX3(...)' a la place de 'MAX3(...)' 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_ROUGE(...)',                                                          */
/*                  'CHAMP_DE_VALENCE_VERTE(...)' et 'CHAMP_DE_VALENCE_BLEUE(...)'...                                                */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
%define   ROUGE_max                                                                                                                     \
                    CHAMP_DE_VALENCE_ROUGE(COORDONNEES(quark_REEL_ROUGE,x)                                                              \
                                          ,COORDONNEES(quark_REEL_ROUGE,y)                                                              \
                                          ,COORDONNEES(quark_REEL_ROUGE,z)                                                              \
                                           )
                                        /* Definition du maximum de la composante ROUGE de la charge de couleur.                     */
%define   VERTE_max                                                                                                                     \
                    CHAMP_DE_VALENCE_VERTE(COORDONNEES(quark_REEL_VERTE,x)                                                              \
                                          ,COORDONNEES(quark_REEL_VERTE,y)                                                              \
                                          ,COORDONNEES(quark_REEL_VERTE,z)                                                              \
                                           )
                                        /* Definition du maximum de la composante VERTE de la charge de couleur.                     */
%define   BLEUE_max                                                                                                                     \
                    CHAMP_DE_VALENCE_BLEUE(COORDONNEES(quark_REEL_BLEUE,x)                                                              \
                                          ,COORDONNEES(quark_REEL_BLEUE,y)                                                              \
                                          ,COORDONNEES(quark_REEL_BLEUE,z)                                                              \
                                           )
                                        /* 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 S   T R O I S   Q U A R K S   D E   V A L E N C E  :               */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*                                                                .......                                                            */
/*                                                ..:::....::--++++++++++++---::...:::...                                            */
/*                                              .::-+++++o***################****o+++++-:.                                           */
/*                                             ..-+o*   ###########################   *o-:.                                          */
/*                                             ..-+o# V ########################### R *o-:.                                          */
/*                                              .:-+o   ##**##################**###   +-:..                                          */
/*                                                .:+*######*o++++++oo+++++++o#######o-..                                            */
/*                                                 .-o########o+:........:-o*#######*+:                                              */
/*                                                  :+*########*+-.    .:+o*#######*o-.                                              */
/*                                                  .:+*########*o-:  .:+o########*o-.                                               */
/*                                                   .-+*########*o-:.:+*########*o-:                                                */
/*                                                    .-+*########*o-:+*########*o-:                                                 */
/*                                                     .:+*########*o+*########*o-:                                                  */
/*                                                      .:+o*#######*o########*+-.                                                   */
/*                                                        .-o*#######*######*o+:.                                                    */
/*                                                         .:+o*###########*+-.                                                      */
/*                                                           .:+o###   ##*o-.                                                        */
/*                                                             .:-o* B *+-:.                                                         */
/*                                                             .:-+o   o-:.                                                          */
/*                                                              ..:----::.                                                           */
/*                                                                 .....                                                             */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Definition du champ de flux :                                                                                              */
/*                                                                                                                                   */
/*                                                                2                               2                               2  */
/*                                     -etalement1.d1(x,y,z,Q ,Q )     -etalement1.d1(x,y,z,Q ,Q )     -etalement1.d1(x,y,z,Q ,Q )   */
/*                                                           R  V                            V  B                            B  R    */
/*        FLUX(x,y,z) = ponderation1.[e                             + e                             + e                            ] */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   DISTANCE_CARACTERISTIQUE_g1                                                                                                   \
                    DOUB(MUL2(RAYON_D_UN_HADRON                                                                                         \
                             ,SINX(MOIT(TIERS_DE_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                                                                                                 \
                        ,fMAX3(CHAMP_GAUSSIEN(DISTANCE_ORDRE_1(cX,cY,cZ                                                                 \
                                                              ,quark_REEL_ROUGE                                                         \
                                                              ,quark_REEL_VERTE                                                         \
                                                              ,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                                                                              \
                                              )                                                                                         \
                              ,CHAMP_GAUSSIEN(DISTANCE_ORDRE_1(cX,cY,cZ                                                                 \
                                                              ,quark_REEL_VERTE                                                         \
                                                              ,quark_REEL_BLEUE                                                         \
                                                              ,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                                                                              \
                                              )                                                                                         \
                              ,CHAMP_GAUSSIEN(DISTANCE_ORDRE_1(cX,cY,cZ                                                                 \
                                                              ,quark_REEL_BLEUE                                                         \
                                                              ,quark_REEL_ROUGE                                                         \
                                                              ,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). Enfin, on remarquera l'utilisation de 'fMAX3(...)' a la place de          */ \
                                        /* 'MAX3(...)' afin d'alleger le travail du compilateur...                                   */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        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 E S   T R O I S   Q U A R K S   D E   V A L E N C E   E T   D E S   P A R T I C U L E S   V I R T U E L L E S  :         */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*                                                                .......                                                            */
/*                                                ..:::....::--++++++++++++---::...:::...                                            */
/*                                              .::-+++++o***################****o+++++-:.                                           */
/*                                             ..-+o**###############################**o-:.                                          */
/*                                             ..-+o**#   #######################   #**o-:.                                          */
/*                                              .:-+o*# V ####################### R #*+-:..                                          */
/*                                                .:+*#   #######################   #o-..                                            */
/*                                                 .-o##############################*+:                                              */
/*                                                  :+*############################*o-.                                              */
/*                                                  .:+*##########################*o-.                                               */
/*                                                   .-+*########################*o-:                                                */
/*                                                    .-+*######################*o-:                                                 */
/*                                                     .:+*####################*o-:                                                  */
/*                                                      .:+o*#################*+-.                                                   */
/*                                                        .-o*######   #####*o+:.                                                    */
/*                                                         .:+o*#### B ####*+-.                                                      */
/*                                                           .:+o###   ##*o-.                                                        */
/*                                                             .:-o**#**+-:.                                                         */
/*                                                             .:-+o***o-:.                                                          */
/*                                                              ..:----::.                                                           */
/*                                                                 .....                                                             */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Definition du champ de confinement :                                                                                       */
/*                                                                                                                                   */
/*                                                                          2                                                        */
/*                                            -etalement2.d2(x,y,z,Q ,Q ,Q )                                                         */
/*                                                                  R  V  B                                                          */
/*        CONFINEMENT(x,y,z) = ponderation2.[e                               ]                                                       */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   DISTANCE_CARACTERISTIQUE_g2                                                                                                   \
                    MOIT(MUL2(DISTANCE_CARACTERISTIQUE_g1                                                                               \
                             ,MUL2(DISTANCE_CARACTERISTIQUE_g1                                                                          \
                                  ,SINX(MOIT(TIERS_DE_CERCLE))                                                                          \
                                   )                                                                                                    \
                              )                                                                                                         \
                         )
DEFV(Local,DEFV(Float,INIT(distance_caracteristique_g2,FLOT__UNDEF)));
#define   PENTE_DE_LA_DISTANCE_CARACTERISTIQUE_g2                                                                                       \
                    PENTE_DE_LA_DISTANCE_CARACTERISTIQUE_g1
DEFV(Local,DEFV(Float,INIT(pente_de_la_distance_caracteristique_g2,PENTE_DE_LA_DISTANCE_CARACTERISTIQUE_g2)));
#define   ETALEMENT_g2                                                                                                                  \
                    GRO1(GRO4(GRO16(FU)))
DEFV(Local,DEFV(Float,INIT(etalement_g2,ETALEMENT_g2)));
#define   PONDERATION_g2                                                                                                                \
                    SOUS(PONDERATION_g0,PONDERATION_g1)
DEFV(Local,DEFV(Float,INIT(ponderation_g2,PONDERATION_g2)));
                                        /* Definition du champ d'ordre 2. 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_g2' est en fait l'aire d'un triangle, et reference donc les     */
                                        /* lignes trigonometriques, 'distance_caracteristique_g2' ne peut donc pas etre initialisee  */
                                        /* a la compilation...                                                                       */

#define   CHAMP_DE_CONFINEMENT(cX,cY,cZ)                                                                                                \
                    MUL2(ponderation_g2                                                                                                 \
                        ,CHAMP_GAUSSIEN(DISTANCE_ORDRE_2(cX,cY,cZ                                                                       \
                                                        ,quark_REEL_ROUGE                                                               \
                                                        ,quark_REEL_VERTE                                                               \
                                                        ,quark_REEL_BLEUE                                                               \
                                                        ,distance_caracteristique_g0                                                    \
                                                        ,pente_de_la_distance_caracteristique_g0                                        \
                                                        ,DISTANCE_CARACTERISTIQUE_g0                                                    \
                                                        ,distance_caracteristique_g1                                                    \
                                                        ,pente_de_la_distance_caracteristique_g1                                        \
                                                        ,DISTANCE_CARACTERISTIQUE_g1                                                    \
                                                        ,distance_caracteristique_g2                                                    \
                                                        ,pente_de_la_distance_caracteristique_g2                                        \
                                                        ,DISTANCE_CARACTERISTIQUE_g2                                                    \
                                                         )                                                                              \
                                       ,etalement_g2                                                                                    \
                                        )                                                                                               \
                         )                                                                                                              \
                                        /* Definition d'un champ de confinement 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 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   P R O T O N  :                                                                                       */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*                                          .                                                                                        */
/*                                    .............                                                                                  */
/*                                  ...:::::-:::::...                                                                                */
/*                                 ...::---+++++++--:...                                                                             */
/*                                 ..::-++o*#######*o+-:..                                                                           */
/*                                ...:-+o####*oooo*###*o+::..                                                                        */
/*                                 ..:+o##*ooo+++-::-+*##*+-::....                                                                   */
/*                                 .:-o##*+++++--::...:-o###*oo+-::...                                                               */
/*                                 .:-o##o-----:::...  ..:-+**###*o+-:.....                                                          */
/*                                 ..-o##o::::.....        ..:-+o###*+-:::...                                                        */
/*                                  .:+*#o:....            ...::--o###o+-::...                                                       */
/*                                  .:-*#*-.              ...::-+++o##*o+-::..                                                       */
/*                                  .:-o##+.              ...:--++oo*##o+--:...                                                      */
/*                                  .:-*#*-.              ...::-+++o##*o+-::..                                                       */
/*                                  .:+*#o:....            ...::--o###o+-::...                                                       */
/*                                 ..-o##o::::.....        ..:-+o###*+-:::...                                                        */
/*                                 .:-o##o-----:::...  ..:-+**###*o+-:.....                                                          */
/*                                 .:-o##*+++++--::...:-o###*oo+-::...                                                               */
/*                                 ..:+o##*ooo+++-::-+*##*+-::....                                                                   */
/*                                ...:-+o####*oooo*###*o+::..                                                                        */
/*                                 ..::-++o*#######*o+-:..                                                                           */
/*                                 ...::---+++++++--:...                                                                             */
/*                                  ...:::::-:::::...                                                                                */
/*                                    .............                                                                                  */
/*                                          .                                                                                        */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#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   CALCULER_LE_CHAMP_DE_CONFINEMENT                                                                                              \
                    VRAI
#define   NE_PAS_CALCULER_LE_CHAMP_DE_CONFINEMENT                                                                                       \
                    NOTL(CALCULER_LE_CHAMP_DE_CONFINEMENT)
                                        /* Indicateurs precisant si le champ "de confinement" doit etre calcule, ou bien ignore      */
                                        /* (cas general, car en effet, d'une part ainsi on economise des calculs, et d'autre part,   */
                                        /* les champs "de valence" et "de flux" assurent deja le confinement...).                    */

#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                                                                                                       \
                    CHOY(CHAMP_DE_VALENCE_RVB(CHAMP_DE_VALENCE_ROUGE(COORDONNEES(quark_REEL_ROUGE,x)                                    \
                                                                    ,COORDONNEES(quark_REEL_ROUGE,y)                                    \
                                                                    ,COORDONNEES(quark_REEL_ROUGE,z)                                    \
                                                                     )                                                                  \
                                             ,CHAMP_DE_VALENCE_VERTE(COORDONNEES(quark_REEL_ROUGE,x)                                    \
                                                                    ,COORDONNEES(quark_REEL_ROUGE,y)                                    \
                                                                    ,COORDONNEES(quark_REEL_ROUGE,z)                                    \
                                                                     )                                                                  \
                                             ,CHAMP_DE_VALENCE_BLEUE(COORDONNEES(quark_REEL_ROUGE,x)                                    \
                                                                    ,COORDONNEES(quark_REEL_ROUGE,y)                                    \
                                                                    ,COORDONNEES(quark_REEL_ROUGE,z)                                    \
                                                                     )                                                                  \
                                              )                                                                                         \
                        ,CHAMP_DE_VALENCE_RVB(CHAMP_DE_VALENCE_ROUGE(COORDONNEES(quark_REEL_VERTE,x)                                    \
                                                                    ,COORDONNEES(quark_REEL_VERTE,y)                                    \
                                                                    ,COORDONNEES(quark_REEL_VERTE,z)                                    \
                                                                     )                                                                  \
                                             ,CHAMP_DE_VALENCE_VERTE(COORDONNEES(quark_REEL_VERTE,x)                                    \
                                                                    ,COORDONNEES(quark_REEL_VERTE,y)                                    \
                                                                    ,COORDONNEES(quark_REEL_VERTE,z)                                    \
                                                                     )                                                                  \
                                             ,CHAMP_DE_VALENCE_BLEUE(COORDONNEES(quark_REEL_VERTE,x)                                    \
                                                                    ,COORDONNEES(quark_REEL_VERTE,y)                                    \
                                                                    ,COORDONNEES(quark_REEL_VERTE,z)                                    \
                                                                     )                                                                  \
                                              )                                                                                         \
                        ,CHAMP_DE_VALENCE_RVB(CHAMP_DE_VALENCE_ROUGE(COORDONNEES(quark_REEL_BLEUE,x)                                    \
                                                                    ,COORDONNEES(quark_REEL_BLEUE,y)                                    \
                                                                    ,COORDONNEES(quark_REEL_BLEUE,z)                                    \
                                                                     )                                                                  \
                                             ,CHAMP_DE_VALENCE_VERTE(COORDONNEES(quark_REEL_BLEUE,x)                                    \
                                                                    ,COORDONNEES(quark_REEL_BLEUE,y)                                    \
                                                                    ,COORDONNEES(quark_REEL_BLEUE,z)                                    \
                                                                     )                                                                  \
                                             ,CHAMP_DE_VALENCE_BLEUE(COORDONNEES(quark_REEL_BLEUE,x)                                    \
                                                                    ,COORDONNEES(quark_REEL_BLEUE,y)                                    \
                                                                    ,COORDONNEES(quark_REEL_BLEUE,z)                                    \
                                                                     )                                                                  \
                                              )                                                                                         \
                         )                                                                                                              \
                                        /* Valeur maximale du champ global qui sera atteinte la ou se situent les trois quarks       */ \
                                        /* reels ROUGE, VERTE et BLEUE. On notera qu'a ces emplacements, les composantes 'TREFLE'    */ \
                                        /* et 'GAUSS' sont egales, et que d'autre part, le champ 'TREFLE' peut ne pas etre encore    */ \
                                        /* completement defini ; c'est pourquoi, n'intervient ici que la composante 'GAUSS'...       */
DEFV(Local,DEFV(Float,INIT(champ_de_valence_ROUGE,FLOT__UNDEF)));
                                        /* Definition de la partie "de valence ROUGE" du champ global,                               */
DEFV(Local,DEFV(Float,INIT(champ_de_valence_VERTE,FLOT__UNDEF)));
                                        /* Definition de la partie "de valence VERTE" du champ global,                               */
DEFV(Local,DEFV(Float,INIT(champ_de_valence_BLEUE,FLOT__UNDEF)));
                                        /* Definition de la partie "de valence BLEUE" du champ global,                               */
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_de_confinement,FLOT__UNDEF)));
                                        /* Definition de la partie "de confinement" du champ global.                                 */
DEFV(Local,DEFV(Float,INIT(champ_global,FLOT__UNDEF)));
                                        /* Intensite du champ resultant (valence + flux + confinement).                              */
#define   COMPARE_X_AB(cX,cA,cB,particule)                                                                                              \
                    Bblock                                                                                                              \
                    Test(IFET(IFGE(cX,cA),IFGE(cX,cB)))                                                                                 \
                         Bblock                                                                                                         \
                         EGAL(particule_REELLE_dominante,particule);                                                                    \
                         Eblock                                                                                                         \
                    ATes                                                                                                                \
                         Bblock                                                                                                         \
                         Eblock                                                                                                         \
                    ETes                                                                                                                \
                    Eblock                                                                                                              \
                                        /* Choix du quark REEL dominant lorsque 'cX' l'emporte sur 'cA' et 'cB'. 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 trois valeurs aleatoires */ \
                                        /* 'choix_champ_ROUGE', 'choix_champ_VERTE' et 'choix_champ_BLEUE' qui assureront une        */ \
                                        /* transition douce...                                                                       */
#define   COMPARE_R_VB(cR,cV,cB)                                                                                                        \
                    Bblock                                                                                                              \
                    COMPARE_X_AB(cR,cV,cB,quark_REEL_ROUGE);                                                                            \
                    Eblock                                                                                                              \
                                        /* Choix du quark REEL ROUGE comme quark dominant quand 'cR' l'emporte sur 'cV' et 'cB'...   */
#define   COMPARE_V_BR(cR,cV,cB)                                                                                                        \
                    Bblock                                                                                                              \
                    COMPARE_X_AB(cV,cB,cR,quark_REEL_VERTE);                                                                            \
                    Eblock                                                                                                              \
                                        /* Choix du quark REEL VERTE comme quark dominant quand 'cV' l'emporte sur 'cB' et 'cR'...   */
#define   COMPARE_B_RV(cR,cV,cB)                                                                                                        \
                    Bblock                                                                                                              \
                    COMPARE_X_AB(cB,cR,cV,quark_REEL_BLEUE);                                                                            \
                    Eblock                                                                                                              \
                                        /* Choix du quark REEL BLEUE comme quark dominant quand 'cB' l'emporte sur 'cR' et 'cV'...   */
#define   PERMUTATION_RVB(permutation)                                                                                                  \
                    Bblock                                                                                                              \
                    permutation(COMPARE_R_VB(choix_champ_ROUGE,choix_champ_VERTE,choix_champ_BLEUE);                                    \
                               ,COMPARE_V_BR(choix_champ_ROUGE,choix_champ_VERTE,choix_champ_BLEUE);                                    \
                               ,COMPARE_B_RV(choix_champ_ROUGE,choix_champ_VERTE,choix_champ_BLEUE);                                    \
                                );                                                                                                      \
                    Eblock                                                                                                              \
                                        /* Permutation de trois tests relatifs aux quarks REELs.                                     */
#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_ROUGE,ROUGE_indefinie));                                                                \
                    DEFV(Float,INIT(choix_champ_VERTE,VERTE_indefinie));                                                                \
                    DEFV(Float,INIT(choix_champ_BLEUE,BLEUE_indefinie));                                                                \
                                        /* Ensemble de trois valeurs aleatoires calculees chacune par rapport a la valeur locale     */ \
                                        /* du champ de couleur associe.                                                              */ \
                    DEFV(Float,INIT(pour_ne_pas_favoriser_un_quark_REEL,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_ROUGE,CHAMP_DE_VALENCE_ROUGE(cX,cY,cZ));                                                      \
                    EGAL(champ_de_valence_VERTE,CHAMP_DE_VALENCE_VERTE(cX,cY,cZ));                                                      \
                    EGAL(champ_de_valence_BLEUE,CHAMP_DE_VALENCE_BLEUE(cX,cY,cZ));                                                      \
                                        /* Calcul des champs "de valence".                                                           */ \
                                                                                                                                        \
                    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                                                                                                                \
                                                                                                                                        \
                    Test(IL_FAUT(calculer_le_champ_de_confinement))                                                                     \
                         Bblock                                                                                                         \
                         EGAL(champ_de_confinement,CHAMP_DE_CONFINEMENT(cX,cY,cZ));                                                     \
                                        /* Calcul du champ "de confinement".                                                         */ \
                         Eblock                                                                                                         \
                    ATes                                                                                                                \
                         Bblock                                                                                                         \
                         EGAL(champ_de_confinement,MINIMUM_DU_CHAMP_GLOBAL);                                                            \
                                        /* Cas ou le champ "de confinement" 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_RVB(champ_de_valence_ROUGE,champ_de_valence_VERTE,champ_de_valence_BLEUE)                \
                             ,ADD2(champ_de_flux                                                                                        \
                                  ,champ_de_confinement                                                                                 \
                                   )                                                                                                    \
                              )                                                                                                         \
                         );                                                                                                             \
                                        /* Superposition des champs "de valence", "de flux" et "de confinement".                     */ \
                    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_ROUGE                                                                           \
                                           ,ROUGE_min                                                                                   \
                                           ,champ_de_valence_ROUGE                                                                      \
                                            );                                                                                          \
                    GENERATION_D_UNE_VALEUR(choix_champ_VERTE                                                                           \
                                           ,VERTE_min                                                                                   \
                                           ,champ_de_valence_VERTE                                                                      \
                                            );                                                                                          \
                    GENERATION_D_UNE_VALEUR(choix_champ_BLEUE                                                                           \
                                           ,BLEUE_min                                                                                   \
                                           ,champ_de_valence_BLEUE                                                                      \
                                            );                                                                                          \
                                        /* Generation de trois valeurs aleatoires calculees chacune par rapport a la valeur locale   */ \
                                        /* du champ de couleur associe ; on notera que si c'est par exemple le ROUGE qui est le      */ \
                                        /* champ dominant, alors la valeur aleatoire ROUGE que l'on calcule ici a de bonnes chances  */ \
                                        /* d'etre superieure aux valeurs aleatoires VERTE et BLEUE, et donc le quark REEL ROUGE a    */ \
                                        /* lui aussi de bonnes chances pour etre choisi comme quark REEL dominant...                 */ \
                    GENERATION_D_UNE_VALEUR(pour_ne_pas_favoriser_un_quark_REEL                                                         \
                                           ,FZERO                                                                                       \
                                           ,FACT(NOMBRE_DE_QUARKS_DANS_LE_PROTON)                                                       \
                                            );                                                                                          \
                                        /* Generation d'une valeur aleatoire qui va nous permettre de choisir un ordre de test       */ \
                                        /* des trois quarks REELs parmi les 3!=6 possibles...                                        */ \
                    Choi(INTE(pour_ne_pas_favoriser_un_quark_REEL))                                                                     \
                         Bblock                                                                                                         \
                         Ca1e(ZERO)                                                                                                     \
                              Bblock                                                                                                    \
                              PERMUTATION_RVB(PERMUTATION_123);                                                                         \
                              Eblock                                                                                                    \
                         ECa1                                                                                                           \
                                                                                                                                        \
                         Ca1e(UN)                                                                                                       \
                              Bblock                                                                                                    \
                              PERMUTATION_RVB(PERMUTATION_132);                                                                         \
                              Eblock                                                                                                    \
                         ECa1                                                                                                           \
                                                                                                                                        \
                         Ca1e(DEUX)                                                                                                     \
                              Bblock                                                                                                    \
                              PERMUTATION_RVB(PERMUTATION_231);                                                                         \
                              Eblock                                                                                                    \
                         ECa1                                                                                                           \
                                                                                                                                        \
                         Ca1e(TROIS)                                                                                                    \
                              Bblock                                                                                                    \
                              PERMUTATION_RVB(PERMUTATION_213);                                                                         \
                              Eblock                                                                                                    \
                         ECa1                                                                                                           \
                                                                                                                                        \
                         Ca1e(QUATRE)                                                                                                   \
                              Bblock                                                                                                    \
                              PERMUTATION_RVB(PERMUTATION_312);                                                                         \
                              Eblock                                                                                                    \
                         ECa1                                                                                                           \
                                                                                                                                        \
                         Ca1e(CINQ)                                                                                                     \
                              Bblock                                                                                                    \
                              PERMUTATION_RVB(PERMUTATION_321);                                                                         \
                              Eblock                                                                                                    \
                         ECa1                                                                                                           \
                                                                                                                                        \
                         Defo                                                                                                           \
                              Bblock                                                                                                    \
                              PERMUTATION_RVB(PERMUTATION_321);                                                                         \
                              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_R_VB(champ_de_valence_ROUGE,champ_de_valence_VERTE,champ_de_valence_BLEUE);     */ \
                                        /*   COMPARE_V_BR(champ_de_valence_ROUGE,champ_de_valence_VERTE,champ_de_valence_BLEUE);     */ \
                                        /*   COMPARE_B_RV(champ_de_valence_ROUGE,champ_de_valence_VERTE,champ_de_valence_BLEUE);     */ \
                                        /*                                                                                           */ \
                                        /* mais, il est evident qu'elle dissymetrise le role des trois quarks REELs, puisque,        */ \
                                        /* par exemple, s'il y a egalite entre les champs ROUGE et VERTE, c'est toujours le          */ \
                                        /* quark REEL ROUGE qui sera choisi comme quark dominant. 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_ROUGE))                                                                            \
                              Bblock                                                                                                    \
                              CHANGEMENT_DE_QUARK_REEL(quark_REEL_ROUGE,quarkA);                                                        \
                                        /* Si 'quarkD' etait le quark REEL ROUGE, 'quarkD' le devient...                             */ \
                              Eblock                                                                                                    \
                         ATes                                                                                                           \
                              Bblock                                                                                                    \
                              Test(IFEQ(quarkD,quark_REEL_VERTE))                                                                       \
                                   Bblock                                                                                               \
                                   CHANGEMENT_DE_QUARK_REEL(quark_REEL_VERTE,quarkA);                                                   \
                                        /* Si 'quarkD' etait le quark REEL VERTE, 'quarkD' le devient...                             */ \
                                   Eblock                                                                                               \
                              ATes                                                                                                      \
                                   Bblock                                                                                               \
                                   Test(IFEQ(quarkD,quark_REEL_BLEUE))                                                                  \
                                        Bblock                                                                                          \
                                        CHANGEMENT_DE_QUARK_REEL(quark_REEL_BLEUE,quarkA);                                              \
                                        /* Si 'quarkD' etait le quark REEL BLEUE, 'quarkD' le devient...                             */ \
                                        Eblock                                                                                          \
                                   ATes                                                                                                 \
                                        Bblock                                                                                          \
                                        PRINT_ERREUR("un quark REEL n'est ni ROUGE, ni VERTE, ni BLEUE");                               \
                                        Eblock                                                                                          \
                                   ETes                                                                                                 \
                                   Eblock                                                                                               \
                              ETes                                                                                                      \
                              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                                                                                                              \
                    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.