/*************************************************************************************************************************************/ /* */ /* D E F I N I T I O N S D E S E V E N E M E N T S C O N D I T I O N N E L S P O U R L E S P A R T I C U L E S : */ /* */ /* */ /* Author of '$xrq/nucleon.LJ$I' : */ /* */ /* Jean-Francois Colonna (LACTAMME, 1991??????????). */ /* */ /*************************************************************************************************************************************/ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* D E F I N I T I O N D U V O I S I N A G E D ' E C H A N G E : */ /* */ /*************************************************************************************************************************************/ #define VOISINAGE_D_INTERACTION_2_POUR_2_PARTICULES \ GRO4(FRA1(VOISINAGE_D_INTERACTION_1_POUR_2_PARTICULES)) DEFV(Local,DEFV(Float,INIT(voisinage_2_D1_D2,VOISINAGE_D_INTERACTION_2_POUR_2_PARTICULES))); /* Distance en-dessous de laquelle 2 quarks (ou deux anti-quarks) peuvent echanger un gluon */ /* dans des evenements du type : */ /* */ /* STRONG_EMISSION_Q___QxG(...), */ /* STRONG_EMISSION_AQ___AQxG(...). */ /* */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* E V E N E M E N T N E U T R E P O U R U N Q U A R K : */ /* */ /*************************************************************************************************************************************/ #define PROBABILITE_DE_INCHANGE_Q \ GRO1(FRA2(FU)) DEFV(Local,DEFV(Float,INIT(probabilite_de_INCHANGE_Q,PROBABILITE_DE_INCHANGE_Q))); /* Probabilite du vertex : Q --> Q. */ #define INCHANGE_Q(quarkD1) \ Bblock \ Eblock \ /* Vertex : Q --> Q. */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* I N T E R A C T I O N F O R T E ( " S T R O N G I N T E R A C T I O N " ) */ /* */ /* E V E N E M E N T S " C O N D I T I O N N E L S " P O U R U N Q U A R K : */ /* */ /*************************************************************************************************************************************/ #define PROBABILITE_DE_STRONG_EMISSION_Q___QxG \ GRO1(FRA12(PROBABILITE_DE_INCHANGE_Q)) DEFV(Local,DEFV(Float,INIT(probabilite_de_STRONG_EMISSION_Q___QxG,PROBABILITE_DE_STRONG_EMISSION_Q___QxG))); /* Probabilite du vertex : Q --> QxG. */ #define ANGLE_POLARISATION_DE_STRONG_EMISSION_Q___QxG \ NEGA(GRO5(FRA9(PI_SUR_2))) DEFV(Local,DEFV(Float,INIT(angle_polarisation_de_STRONG_EMISSION_Q___QxG ,ANGLE_POLARISATION_DE_STRONG_EMISSION_Q___QxG ) ) ); /* Dispersion de l'angle du vertex : Q --> QxG. */ #define INTERCEPTION_PAR_UN_GLUON_LORS_DE_STRONG_EMISSION_Q___QxG \ VRAI DEFV(Local,DEFV(Logical,INIT(interception_par_un_gluon_lors_de_STRONG_EMISSION_Q___QxG ,INTERCEPTION_PAR_UN_GLUON_LORS_DE_STRONG_EMISSION_Q___QxG ) ) ); /* Cet indicateur precise si l'echange d'un gluon se fait par une simple emission par un */ /* quark ('FAUX') ou par le processus d'interception ('VRAI'). */ DEFV(Local,DEFV(Positive,INIT(compteur_de_STRONG_EMISSION_Q___QxG,ZERO))); /* Compteur des vertex : Q --> QxG. */ #define STRONG_EMISSION_Q___QxG(quarkD1,quarkA1,gluonA1) \ Bblock \ DEFINITION_DE_LA_VITESSE_ALEATOIRE; \ /* Structures necessaires a definir une vitesse en coordonnees spheriques et en coordonnees */ \ /* cartesiennes. */ \ DEBUT_DE_ROTATION_D_ALIGNEMENT_DE_L_ESPACE_PHYSIQUE_SUR_UNE_PARTICULE(quarkD1); \ /* Alignement de l'axe 'OX2' le long de 'quarkD1'... */ \ DEBUT_DE_CHOIX_D_UNE_DIRECTION_D_ALIGNEMENT_DE_L_ESPACE_PHYSIQUE_SUR_UNE_PARTICULE; \ /* Rotation aleatoire de l'espace physique afin de placer le vertex 'Q --> QxG' dans */ \ /* le plan (OX2,OY2) du referentiel aleatoire (OX2,OY2,OZ2) et de facon a ce que le quark */ \ /* se deplace le long de l'axe 'OX2'. */ \ CONSERVATION_DU_MODULE_DE_LA_VITESSE_D_UN_QUARK_OU_D_UN_ANTI_QUARK(quarkD1); \ /* On fixe a priori la conservation de la vitesse du quark... */ \ VITESSE_CARTESIENNE_POLAIRE(vitesse_courante \ ,rho_de_la_vitesse \ ,theta_polaire \ ,NEUT(ADD2(MOIT(GRO1(FRA3(CERCLE_TRIGONOMETRIQUE))) \ ,EXAGERATION(angle_polarisation_de_STRONG_EMISSION_Q___QxG) \ ) \ ) \ ); \ CREATION_D_UN_QUARK_VIRTUEL(quarkA1 \ ,SAVEUR(quarkD1) \ ,ASI2(quarkD1,espace_temps,position_courante) \ ,vitesse_courante \ ,ROUGE_indefinie \ ,VERTE_indefinie \ ,BLEUE_indefinie \ ); \ INITIALISATION_DU_MODULE_DE_LA_VITESSE_ALEATOIRE_D_UN_GLUON; \ /* Le module de la vitesse des gluons est figees, puisque ces particules se deplacent a la */ \ /* vitesse de la lumiere, et la direction est aleatoire (en coordonnees spheriques). */ \ VITESSE_CARTESIENNE_POLAIRE(vitesse_courante \ ,rho_de_la_vitesse \ ,theta_polaire \ ,NEGA(ADD2(MOIT(GRO1(FRA3(CERCLE_TRIGONOMETRIQUE))) \ ,EXAGERATION(angle_polarisation_de_STRONG_EMISSION_Q___QxG) \ ) \ ) \ ); \ CREATION_D_UN_GLUON_VIRTUEL(gluonA1 \ ,ASI2(quarkD1,espace_temps,position_courante) \ ,vitesse_courante \ ,ROUGE_indefinie \ ,VERTE_indefinie \ ,BLEUE_indefinie \ ); \ /* ATTENTION : 'gluonA1' recoit a priori une vitesse courante 'vitesse_courante' qui pourra */ \ /* etre modifiee du tout au tout par 'INTERCEPTION_PARTICULE_PAR_UN_GLUON(...)' au cas ou */ \ /* ce gluon aurait la possibilite raisonnable d'intercepter un anti-quark... */ \ EGAL(quarkD2,quarkD1); \ /* ATTENTION : cette manipulation est due au fait qu'au niveau allocation memoire, 'quarkD1' */ \ /* est en fait 'PARTICULE_COURANTE', et qu'utiliser 'quarkD1' en tant que 'particuleA' dans */ \ /* 'RECHERCHE_D_UNE_PARTICULE(...)' aboutirait a une confusion terrible... */ \ RECHERCHE_D_UNE_PARTICULE(quarkA2 \ ,interception_par_un_gluon_lors_de_STRONG_EMISSION_Q___QxG \ ,EVENEMENT_CERTAIN \ ,quarkD2,quarkA1 \ ,I3ET(IFOU(IFEQ(NATURE(PARTICULE_COURANTE),QUARK_REEL) \ ,IFEQ(NATURE(PARTICULE_COURANTE),QUARK_VIRTUEL) \ ) \ ,PAS_ENCORE_VISE_PAR_UNE_AUTRE_PARTICULE(PARTICULE_COURANTE) \ ,IFLT(pDISTANCE(quarkD2,PARTICULE_COURANTE),REGUL0(voisinage_2_D1_D2)) \ ) \ ); \ /* Recherche d'un quark 'quarkA2' proche du quark 'quarkD1' (alias 'quarkD2'...) et qui ne */ \ /* soit pas encore vise par un gluon (d'ou le test sur la duree de vie moyenne). */ \ /* Nota : a la place de 'REGUL0(...)', on pourrait utiliser 'REGUL9(...)'. */ \ Test(IFNE(quarkA2,PARTICULE_NON_DEFINIE)) \ Bblock \ INTERCEPTION_PARTICULE_PAR_UN_GLUON(quarkA2 \ ,quarkD1 \ ,gluonA1,VITESSE_DES_GLUONS,DUREE_DE_VIE_MOYENNE_COURANTE(gluonA1) \ ); \ /* Lorsque l'on a trouve un quark 'quarkA2' suffisamment proche du quark 'quarkD1', on tente */ \ /* l'interception de 'quarkA2' par 'gluonA1' emis par le quark 'quarkD1'... */ \ Eblock \ ATes \ Bblock \ /* ATTENTION : a la decomposition en deux 'Test(...)' distincts due au fait que la procedure */ \ /* 'INTERCEPTION_PARTICULE_PAR_UN_GLUON(...)' peut changer l'etat de 'quarkA2' et lui donner */ \ /* la valeur 'PARTICULE_NON_DEFINIE'... */ \ Eblock \ ETes \ Test(IFEQ(quarkA2,PARTICULE_NON_DEFINIE)) \ Bblock \ FLUCTUATION_ALEATOIRE_DES_POSITIONS_INITIALE_ET_COURANTE(quarkA1,PERTURBER_UNE_POSITION); \ FLUCTUATION_ALEATOIRE_DES_POSITIONS_INITIALE_ET_COURANTE(gluonA1,PERTURBER_UNE_POSITION); \ /* Lorsque l'on n'a pas trouve un quark 'quarkA2' suffisamment proche du quark 'quarkD1', */ \ /* on conserve pour le gluon 'gluonA1' la vitesse 'vitesse_courante'... */ \ Eblock \ ATes \ Bblock \ ALLONGEMENT_DE_LA_DUREE_DE_VIE_MOYENNE(quarkA2); \ ALLONGEMENT_DE_LA_DUREE_DE_VIE_MOYENNE(gluonA1); \ /* Lorsque l'on a trouve un quark 'quarkA2' suffisamment proche du quark 'quarkD1', on */ \ /* allonge artificiellement la duree de vie moyenne de 'quarkA2' et de 'gluonA1' afin */ \ /* de reduire au maximum les chances que se produisent pour eux des evenements conditionnels */ \ /* du type : */ \ /* */ \ /* EVENEMENTS_CONDITIONNELS_POUR_CERTAINS_QUARKS, */ \ /* EVENEMENTS_CONDITIONNELS_POUR_CERTAINS_GLUONS. */ \ /* */ \ Eblock \ ETes \ CONSERVATION_DE_2_CHARGES_DE_COULEUR(quarkA1,gluonA1 \ ,quarkD1 \ ); \ PERTURBATION_ALEATOIRE_ADDITIVE_DE_LA_CHARGE_DE_COULEUR(quarkA1); \ MAJORATION_DE_LA_COMPOSANTE_PREPONDERANTE_DE_LA_CHARGE_DE_COULEURS(quarkA1); \ PERTURBATION_ALEATOIRE_ADDITIVE_DE_LA_CHARGE_DE_COULEUR(gluonA1); \ MAJORATION_DE_LA_COMPOSANTE_PREPONDERANTE_DE_LA_CHARGE_DE_COULEURS(gluonA1); \ CHANGEMENT_EVENTUEL_DE_QUARK_REEL(quarkD1,quarkA1); \ Test(IFEQ(quarkA2,PARTICULE_NON_DEFINIE)) \ Bblock \ /* Cas ou aucune particule ne peut etre "visee" : */ \ TRACE_D_UN_EVENEMENT(Prin3("STRONG_EMISSION_Q___QxG Q(%d) --> Q(%d)xG(%d)" \ ,ETIQUETTE(quarkD1) \ ,ETIQUETTE(quarkA1) \ ,ETIQUETTE(gluonA1) \ ) \ ); \ Eblock \ ATes \ Bblock \ /* Cas ou une particule est "visee" : */ \ TRACE_D_UN_EVENEMENT(Prin4("STRONG_EMISSION_Q___QxG Q(%d) --> Q(%d)xG(%d) =O=> Q(%d)" \ ,ETIQUETTE(quarkD1) \ ,ETIQUETTE(quarkA1) \ ,ETIQUETTE(gluonA1) \ ,ETIQUETTE(quarkA2) \ ) \ ); \ Eblock \ ETes \ DESTRUCTION_D_UN_QUARK(quarkD1); \ /* On n'utilise pas 'DESTRUCTION_D_UN_QUARK_VIRTUEL(quarkD1)' car en effet, 'quarkD1' peut */ \ /* etre un quark REEL... */ \ FIN_DE_CHOIX_D_UNE_DIRECTION_D_ALIGNEMENT_DE_L_ESPACE_PHYSIQUE_SUR_UNE_PARTICULE; \ FIN_DE_ROTATION_D_ALIGNEMENT_DE_L_ESPACE_PHYSIQUE_SUR_UNE_PARTICULE; \ INCR(compteur_de_STRONG_EMISSION_Q___QxG,I); \ Eblock \ /* Vertex : Q --> QxG. */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* E V E N E M E N T S " C O N D I T I O N N E L S " P O U R U N E N S E M B L E D E Q U A R K S : */ /* */ /*************************************************************************************************************************************/ #define PROBABILITE_D_EVENEMENT_CONDITIONNEL_POUR_UN_QUARK \ FRA1(FRA2(FU)) DEFV(Local,DEFV(Float,INIT(probabilite_d_evenement_conditionnel_pour_un_quark ,PROBABILITE_D_EVENEMENT_CONDITIONNEL_POUR_UN_QUARK ) ) ); /* Probabilite pour qu'un quark present dans le proton soit la "victime" d'un evenement */ /* conditionnel du type : */ /* */ /* INCHANGE_Q, */ /* STRONG_EMISSION_Q___QxG. */ /* */ #define ___EVENEMENTS_CONDITIONNELS_POUR_CERTAINS_QUARKS \ Bblock \ DEFV(Float,INIT(probabilite_d_evenement_conditionnel,FLOT__UNDEF)); \ /* Probabilite pour que le quark courant soit la "victime" d'un evenement conditionnel */ \ /* du type : */ \ /* */ \ /* INCHANGE_Q, */ \ /* STRONG_EMISSION_Q___QxG. */ \ /* */ \ TOTALITE_DES_QUARKS(BLOC(GENERATION_D_UNE_PROBABILITE_01(probabilite_d_evenement_conditionnel); \ Test(IFLE(aPROBABILITE(probabilite_d_evenement_conditionnel \ ,quarkD1 \ ,DUREE_DE_VIE_MOYENNE_COURANTE(quarkD1) \ ) \ ,REGUL0(probabilite_d_evenement_conditionnel_pour_un_quark) \ ) \ ) \ Bblock \ DEFV(Float,INIT(probabilite_de_choix,FLOT__UNDEF)); \ /* Probabilite de choix entre : */ \ /* */ \ /* INCHANGE_Q, */ \ /* STRONG_EMISSION_Q___QxG. */ \ /* */ \ GENERATION_D_UNE_VALEUR(probabilite_de_choix \ ,EVENEMENT_IMPOSSIBLE \ ,ADD2(REGUL0(probabilite_de_INCHANGE_Q) \ ,REGUL1(probabilite_de_STRONG_EMISSION_Q___QxG) \ ) \ ); \ /* ATTENTION : 'hPROBABILITE(...)' ne doit pas intervenir ici, car ici, dans */ \ /* 'CHOIX_D_UN_EVENEMENT_ENTRE_PLUSIEURS_EVENEMENTS_POSSIBLES(...)', le choix est */ \ /* instantane, contrairement a celui effectue par 'GENERATION_D_UNE_PROBABILITE_01(...)'. */ \ DEBUT_DU_CHOIX_ENTRE_PLUSIEURS_EVENEMENTS_POSSIBLES \ (probabilite_de_choix); \ CHOIX_D_UN_EVENEMENT_ENTRE_PLUSIEURS_EVENEMENTS_POSSIBLES \ (REGUL0(probabilite_de_INCHANGE_Q) \ ,INCHANGE_Q(quarkD1) \ ); \ CHOIX_D_UN_EVENEMENT_ENTRE_PLUSIEURS_EVENEMENTS_POSSIBLES \ (REGUL1(probabilite_de_STRONG_EMISSION_Q___QxG) \ ,STRONG_EMISSION_Q___QxG(quarkD1,quarkA1,gluonA1) \ ); \ FIN_DU_CHOIX_ENTRE_PLUSIEURS_EVENEMENTS_POSSIBLES; \ Eblock \ ATes \ Bblock \ Eblock \ ETes \ ); \ ); \ Eblock \ /* Evenements conditionnels pour quelques uns des quarks presents dans le proton */ \ /* (REELs ou VIRTUELs). */ BFonctionI DEFV(LoF,GENERE__Fonction__OPT(EVENEMENTS_CONDITIONNELS_POUR_CERTAINS_QUARKS,Q,___EVENEMENTS_CONDITIONNELS_POUR_CERTAINS_QUARKS)) EFonctionI /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* E V E N E M E N T N E U T R E P O U R U N A N T I - Q U A R K : */ /* */ /*************************************************************************************************************************************/ #define PROBABILITE_DE_INCHANGE_AQ \ PROBABILITE_DE_INCHANGE_Q DEFV(Local,DEFV(Float,INIT(probabilite_de_INCHANGE_AQ,PROBABILITE_DE_INCHANGE_AQ))); /* _ _ */ /* Probabilite du vertex : Q --> Q. */ #define INCHANGE_AQ(anti_quarkD1) \ Bblock \ Eblock \ /* _ _ */ \ /* Vertex : Q --> Q. */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* I N T E R A C T I O N F O R T E ( " S T R O N G I N T E R A C T I O N " ) */ /* */ /* E V E N E M E N T S " C O N D I T I O N N E L S " P O U R U N A N T I - Q U A R K : */ /* */ /*************************************************************************************************************************************/ #define PROBABILITE_DE_STRONG_EMISSION_AQ___AQxG \ PROBABILITE_DE_STRONG_EMISSION_Q___QxG DEFV(Local,DEFV(Float,INIT(probabilite_de_STRONG_EMISSION_AQ___AQxG,PROBABILITE_DE_STRONG_EMISSION_AQ___AQxG))); /* _ _ */ /* Probabilite du vertex : Q --> QxG. */ #define ANGLE_POLARISATION_DE_STRONG_EMISSION_AQ___AQxG \ NEGA(GRO5(FRA9(PI_SUR_2))) DEFV(Local,DEFV(Float,INIT(angle_polarisation_de_STRONG_EMISSION_AQ___AQxG ,ANGLE_POLARISATION_DE_STRONG_EMISSION_AQ___AQxG ) ) ); /* _ _ */ /* Dispersion de l'angle du vertex : Q --> QxG. */ #define INTERCEPTION_PAR_UN_GLUON_LORS_DE_STRONG_EMISSION_AQ___AQxG \ VRAI DEFV(Local,DEFV(Logical,INIT(interception_par_un_gluon_lors_de_STRONG_EMISSION_AQ___AQxG ,INTERCEPTION_PAR_UN_GLUON_LORS_DE_STRONG_EMISSION_AQ___AQxG ) ) ); /* Cet indicateur precise si l'echange d'un gluon se fait par une simple emission par un */ /* anti-quark ('FAUX') ou par le processus d'interception ('VRAI'). */ DEFV(Local,DEFV(Positive,INIT(compteur_de_STRONG_EMISSION_AQ___AQxG,ZERO))); /* _ _ */ /* Compteur des vertex : Q --> QxG. */ #define STRONG_EMISSION_AQ___AQxG(anti_quarkD1,anti_quarkA1,gluonA1) \ Bblock \ DEFINITION_DE_LA_VITESSE_ALEATOIRE; \ /* Structures necessaires a definir une vitesse en coordonnees spheriques et en coordonnees */ \ /* cartesiennes. */ \ DEBUT_DE_ROTATION_D_ALIGNEMENT_DE_L_ESPACE_PHYSIQUE_SUR_UNE_PARTICULE(anti_quarkD1); \ /* Alignement de l'axe 'OX2' le long de 'anti_quarkD1'... */ \ DEBUT_DE_CHOIX_D_UNE_DIRECTION_D_ALIGNEMENT_DE_L_ESPACE_PHYSIQUE_SUR_UNE_PARTICULE; \ /* _ _ */ \ /* Rotation aleatoire de l'espace physique afin de placer le vertex 'Q --> QxG' dans */ \ /* le plan (OX2,OY2) du referentiel aleatoire (OX2,OY2,OZ2) et de facon a ce que */ \ /* l'anti-quark se deplace le long de l'axe 'OX2'. */ \ CONSERVATION_DU_MODULE_DE_LA_VITESSE_D_UN_QUARK_OU_D_UN_ANTI_QUARK(anti_quarkD1); \ /* On fixe a priori la conservation de la vitesse de l'anti-quark... */ \ VITESSE_CARTESIENNE_POLAIRE(vitesse_courante \ ,rho_de_la_vitesse \ ,theta_polaire \ ,NEUT(ADD2(MOIT(GRO1(FRA3(CERCLE_TRIGONOMETRIQUE))) \ ,EXAGERATION(angle_polarisation_de_STRONG_EMISSION_AQ___AQxG) \ ) \ ) \ ); \ CREATION_D_UN_ANTI_QUARK_VIRTUEL(anti_quarkA1 \ ,SAVEUR(anti_quarkD1) \ ,ASI2(anti_quarkD1,espace_temps,position_courante) \ ,vitesse_courante \ ,ROUGE_indefinie \ ,VERTE_indefinie \ ,BLEUE_indefinie \ ); \ INITIALISATION_DU_MODULE_DE_LA_VITESSE_ALEATOIRE_D_UN_GLUON; \ /* Le module de la vitesse des gluons est figees, puisque ces particules se deplacent a la */ \ /* vitesse de la lumiere, et la direction est aleatoire (en coordonnees spheriques). */ \ VITESSE_CARTESIENNE_POLAIRE(vitesse_courante \ ,rho_de_la_vitesse \ ,theta_polaire \ ,NEGA(ADD2(MOIT(GRO1(FRA3(CERCLE_TRIGONOMETRIQUE))) \ ,EXAGERATION(angle_polarisation_de_STRONG_EMISSION_AQ___AQxG) \ ) \ ) \ ); \ CREATION_D_UN_GLUON_VIRTUEL(gluonA1 \ ,ASI2(anti_quarkD1,espace_temps,position_courante) \ ,vitesse_courante \ ,ROUGE_indefinie \ ,VERTE_indefinie \ ,BLEUE_indefinie \ ); \ /* ATTENTION : 'gluonA1' recoit a priori une vitesse courante 'vitesse_courante' qui pourra */ \ /* etre modifiee du tout au tout par 'INTERCEPTION_PARTICULE_PAR_UN_GLUON(...)' au cas ou */ \ /* ce gluon aurait la possibilite raisonnable d'intercepter un quark... */ \ EGAL(anti_quarkD2,anti_quarkD1); \ /* ATTENTION : cette manipulation est due au fait qu'au niveau allocation memoire, */ \ /* 'anti_quarkD1' est en fait 'PARTICULE_COURANTE', et qu'utiliser 'anti_quarkD1' en tant */ \ /* que 'particuleA' dans 'RECHERCHE_D_UNE_PARTICULE(...)' aboutirait a une confusion */ \ /* terrible... */ \ RECHERCHE_D_UNE_PARTICULE(anti_quarkA2 \ ,interception_par_un_gluon_lors_de_STRONG_EMISSION_AQ___AQxG \ ,EVENEMENT_CERTAIN \ ,anti_quarkD2,anti_quarkA1 \ ,I3ET(IFOU(IFEQ(NATURE(PARTICULE_COURANTE),ANTI_QUARK_REEL) \ ,IFEQ(NATURE(PARTICULE_COURANTE),ANTI_QUARK_VIRTUEL) \ ) \ ,PAS_ENCORE_VISE_PAR_UNE_AUTRE_PARTICULE(PARTICULE_COURANTE) \ ,IFLT(pDISTANCE(anti_quarkD2,PARTICULE_COURANTE),REGUL0(voisinage_2_D1_D2)) \ ) \ ); \ /* Recherche d'un anti-quark 'anti_quarkA2' proche de l'anti-quark 'anti_quarkD1' (alias */ \ /* 'anti_quarkD2') et qui ne soit pas encore vise par gluon (d'ou le test sur la duree de */ \ /* vie moyenne). */ \ /* Nota : a la place de 'REGUL0(...)', on pourrait utiliser 'REGUL9(...)'. */ \ Test(IFNE(anti_quarkA2,PARTICULE_NON_DEFINIE)) \ Bblock \ INTERCEPTION_PARTICULE_PAR_UN_GLUON(anti_quarkA2 \ ,anti_quarkD1 \ ,gluonA1,VITESSE_DES_GLUONS,DUREE_DE_VIE_MOYENNE_COURANTE(gluonA1) \ ); \ /* Lorsque l'on a trouve un anti-quark 'anti_quarkA2' suffisamment proche de l'anti-quark */ \ /* 'anti_quarkD1', on tente l'interception de 'anti_quarkA2' par 'gluonA1' emis par */ \ /* l'anti-quark 'anti_quarkD1'... */ \ Eblock \ ATes \ Bblock \ /* ATTENTION : a la decomposition en deux 'Test(...)' distincts due au fait que la procedure */ \ /* 'INTERCEPTION_PARTICULE_PAR_UN_GLUON(...)' peut changer l'etat de 'anti_quarkA2' et lui */ \ /* donner la valeur 'PARTICULE_NON_DEFINIE'... */ \ Eblock \ ETes \ Test(IFEQ(anti_quarkA2,PARTICULE_NON_DEFINIE)) \ Bblock \ FLUCTUATION_ALEATOIRE_DES_POSITIONS_INITIALE_ET_COURANTE(anti_quarkA1,PERTURBER_UNE_POSITION); \ FLUCTUATION_ALEATOIRE_DES_POSITIONS_INITIALE_ET_COURANTE(gluonA1,PERTURBER_UNE_POSITION); \ /* Lorsque l'on n'a pas trouve un anti-quark 'anti_quarkA2' suffisamment proche de */ \ /* l'anti-quark 'anti_quarkD1', on conserve pour le gluon 'gluonA1' la vitesse */ \ /* 'vitesse_courante'... */ \ Eblock \ ATes \ Bblock \ ALLONGEMENT_DE_LA_DUREE_DE_VIE_MOYENNE(anti_quarkA2); \ ALLONGEMENT_DE_LA_DUREE_DE_VIE_MOYENNE(gluonA1); \ /* Lorsque l'on a trouve un quark 'anti_quarkA2' suffisamment proche du quark 'quarkD1', on */ \ /* allonge artificiellement la duree de vie moyenne de 'anti_quarkA2' et de 'gluonA1' afin */ \ /* de reduire au maximum les chances que se produisent pour eux des evenements conditionnels */ \ /* du type : */ \ /* */ \ /* EVENEMENTS_CONDITIONNELS_POUR_CERTAINS_ANTI_QUARKS, */ \ /* EVENEMENTS_CONDITIONNELS_POUR_CERTAINS_GLUONS. */ \ /* */ \ Eblock \ ETes \ CONSERVATION_DE_2_CHARGES_DE_COULEUR(anti_quarkA1,gluonA1 \ ,anti_quarkD1 \ ); \ PERTURBATION_ALEATOIRE_ADDITIVE_DE_LA_CHARGE_DE_COULEUR(anti_quarkA1); \ MAJORATION_DE_LA_COMPOSANTE_PREPONDERANTE_DE_LA_CHARGE_DE_COULEURS(anti_quarkA1); \ PERTURBATION_ALEATOIRE_ADDITIVE_DE_LA_CHARGE_DE_COULEUR(gluonA1); \ MAJORATION_DE_LA_COMPOSANTE_PREPONDERANTE_DE_LA_CHARGE_DE_COULEURS(gluonA1); \ CHANGEMENT_EVENTUEL_D_ANTI_QUARK_REEL(anti_quarkD1,anti_quarkA1); \ Test(IFEQ(anti_quarkA2,PARTICULE_NON_DEFINIE)) \ Bblock \ /* Cas ou aucune particule ne peut etre "visee" : */ \ TRACE_D_UN_EVENEMENT(Prin3("STRONG_EMISSION_AQ___AQxG AQ(%d) --> AQ(%d)xG(%d)" \ ,ETIQUETTE(anti_quarkD1) \ ,ETIQUETTE(anti_quarkA1) \ ,ETIQUETTE(gluonA1) \ ) \ ); \ Eblock \ ATes \ Bblock \ /* Cas ou une particule est "visee" : */ \ TRACE_D_UN_EVENEMENT(Prin4("STRONG_EMISSION_AQ___AQxG AQ(%d) --> AQ(%d)xG(%d) =O=> AQ(%d)" \ ,ETIQUETTE(anti_quarkD1) \ ,ETIQUETTE(anti_quarkA1) \ ,ETIQUETTE(gluonA1) \ ,ETIQUETTE(anti_quarkA2) \ ) \ ); \ Eblock \ ETes \ DESTRUCTION_D_UN_ANTI_QUARK_VIRTUEL(anti_quarkD1); \ FIN_DE_CHOIX_D_UNE_DIRECTION_D_ALIGNEMENT_DE_L_ESPACE_PHYSIQUE_SUR_UNE_PARTICULE; \ FIN_DE_ROTATION_D_ALIGNEMENT_DE_L_ESPACE_PHYSIQUE_SUR_UNE_PARTICULE; \ INCR(compteur_de_STRONG_EMISSION_AQ___AQxG,I); \ Eblock \ /* _ _ */ \ /* Vertex : Q --> QxG. */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* E V E N E M E N T S " C O N D I T I O N N E L S " P O U R U N E N S E M B L E D ' A N T I - Q U A R K S : */ /* */ /*************************************************************************************************************************************/ #define PROBABILITE_D_EVENEMENT_CONDITIONNEL_POUR_UN_ANTI_QUARK \ FRA1(FRA2(FU)) DEFV(Local,DEFV(Float,INIT(probabilite_d_evenement_conditionnel_pour_un_anti_quark ,PROBABILITE_D_EVENEMENT_CONDITIONNEL_POUR_UN_ANTI_QUARK ) ) ); /* Probabilite pour qu'un anti-quark present dans le proton soit la "victime" d'un evenement */ /* conditionnel du type : */ /* */ /* INCHANGE_AQ, */ /* STRONG_EMISSION_AQ___AQxG. */ /* */ #define ___EVENEMENTS_CONDITIONNELS_POUR_CERTAINS_ANTI_QUARKS \ Bblock \ DEFV(Float,INIT(probabilite_d_evenement_conditionnel,FLOT__UNDEF)); \ /* Probabilite pour que le anti-quark courant soit la "victime" d'un evenement conditionnel */ \ /* du type : */ \ /* */ \ /* INCHANGE_AQ, */ \ /* STRONG_EMISSION_AQ___AQxG. */ \ /* */ \ TOTALITE_DES_ANTI_QUARKS(BLOC(GENERATION_D_UNE_PROBABILITE_01(probabilite_d_evenement_conditionnel); \ Test(IFLE(aPROBABILITE(probabilite_d_evenement_conditionnel \ ,anti_quarkD1 \ ,DUREE_DE_VIE_MOYENNE_COURANTE(anti_quarkD1) \ ) \ ,REGUL0(probabilite_d_evenement_conditionnel_pour_un_anti_quark) \ ) \ ) \ Bblock \ DEFV(Float,INIT(probabilite_de_choix,FLOT__UNDEF)); \ /* Probabilite de choix entre : */ \ /* */ \ /* INCHANGE_AQ, */ \ /* STRONG_EMISSION_AQ___AQxG. */ \ /* */ \ GENERATION_D_UNE_VALEUR(probabilite_de_choix \ ,EVENEMENT_IMPOSSIBLE \ ,ADD2(REGUL0(probabilite_de_INCHANGE_AQ) \ ,REGUL1(probabilite_de_STRONG_EMISSION_AQ___AQxG) \ ) \ ); \ /* ATTENTION : 'hPROBABILITE(...)' ne doit pas intervenir ici, car ici, dans */ \ /* 'CHOIX_D_UN_EVENEMENT_ENTRE_PLUSIEURS_EVENEMENTS_POSSIBLES(...)', le choix est */ \ /* instantane, contrairement a celui effectue par 'GENERATION_D_UNE_PROBABILITE_01(...)'. */ \ DEBUT_DU_CHOIX_ENTRE_PLUSIEURS_EVENEMENTS_POSSIBLES(probabilite_de_choix); \ CHOIX_D_UN_EVENEMENT_ENTRE_PLUSIEURS_EVENEMENTS_POSSIBLES \ (REGUL0(probabilite_de_INCHANGE_AQ) \ ,INCHANGE_AQ(anti_quarkD1) \ ); \ CHOIX_D_UN_EVENEMENT_ENTRE_PLUSIEURS_EVENEMENTS_POSSIBLES \ (REGUL1(probabilite_de_STRONG_EMISSION_AQ___AQxG) \ ,STRONG_EMISSION_AQ___AQxG(anti_quarkD1,anti_quarkA1,gluonA1) \ ); \ FIN_DU_CHOIX_ENTRE_PLUSIEURS_EVENEMENTS_POSSIBLES; \ Eblock \ ATes \ Bblock \ Eblock \ ETes \ ); \ ); \ Eblock \ /* Evenements conditionnels pour quelques uns des anti-quarks presents dans le proton */ \ /* (REELs ou VIRTUELs). */ BFonctionI #define ___EVENEMENTS_ANTI_QUARKS \ ___EVENEMENTS_CONDITIONNELS_POUR_CERTAINS_ANTI_QUARKS /* Afin de reduire la longueur de la ligne suivante... */ DEFV(LoF,GENERE__Fonction__OPT(EVENEMENTS_CONDITIONNELS_POUR_CERTAINS_ANTI_QUARKS,AQ,___EVENEMENTS_ANTI_QUARKS)) #undef ___EVENEMENTS_ANTI_QUARKS EFonctionI /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* E V E N E M E N T N E U T R E P O U R U N G L U O N : */ /* */ /*************************************************************************************************************************************/ #define PROBABILITE_DE_INCHANGE_G \ GRO1(FRA2(FU)) DEFV(Local,DEFV(Float,INIT(probabilite_de_INCHANGE_G,PROBABILITE_DE_INCHANGE_G))); /* Probabilite du vertex : G --> G. */ #define INCHANGE_G(gluonD1) \ Bblock \ Eblock \ /* Vertex : G --> G. */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* I N T E R A C T I O N F O R T E ( " S T R O N G I N T E R A C T I O N " ) */ /* */ /* E V E N E M E N T S " C O N D I T I O N N E L S " P O U R U N G L U O N : */ /* */ /*************************************************************************************************************************************/ #define PROBABILITE_DE_STRONG_TRANSFORMATION_G___QxAQ \ GRO1(FRA12(PROBABILITE_DE_INCHANGE_G)) DEFV(Local,DEFV(Float,INIT(probabilite_de_STRONG_TRANSFORMATION_G___QxAQ,PROBABILITE_DE_STRONG_TRANSFORMATION_G___QxAQ))); /* _ */ /* Probabilite du vertex : G --> QxQ. */ #define ANGLE_POLARISATION_DE_STRONG_TRANSFORMATION_G___QxAQ \ NEGA(GRO5(FRA9(PI_SUR_2))) DEFV(Local,DEFV(Float,INIT(angle_polarisation_de_STRONG_TRANSFORMATION_G___QxAQ ,ANGLE_POLARISATION_DE_STRONG_TRANSFORMATION_G___QxAQ ) ) ); /* _ */ /* Dispersion de l'angle du vertex : G --> QxQ. */ DEFV(Local,DEFV(Positive,INIT(compteur_de_STRONG_TRANSFORMATION_G___QxAQ,ZERO))); /* _ */ /* Compteur des vertex : G --> QxQ. */ #define STRONG_TRANSFORMATION_G___QxAQ(gluonD1,quarkA1,anti_quarkA1) \ Bblock \ DEFINITION_DE_LA_VITESSE_ALEATOIRE; \ /* Structures necessaires a definir une vitesse en coordonnees spheriques et en coordonnees */ \ /* cartesiennes. */ \ DEBUT_DE_ROTATION_D_ALIGNEMENT_DE_L_ESPACE_PHYSIQUE_SUR_UNE_PARTICULE(gluonD1); \ /* Alignement de l'axe 'OX2' le long de 'gluonD1'... */ \ DEBUT_DE_CHOIX_D_UNE_DIRECTION_D_ALIGNEMENT_DE_L_ESPACE_PHYSIQUE_SUR_UNE_PARTICULE; \ /* Rotation aleatoire de l'espace physique afin de placer le vertex 'G --> QxAQ' dans */ \ /* le plan (OX2,OY2) du referentiel aleatoire (OX2,OY2,OZ2). */ \ INITIALISATION_DU_MODULE_DE_LA_VITESSE_ALEATOIRE_D_UN_QUARK_OU_D_UN_ANTI_QUARK; \ /* Choix aleatoire du meme module de la vitesse pour 'Q' et 'AQ'... */ \ VITESSE_CARTESIENNE_POLAIRE(vitesse_courante \ ,rho_de_la_vitesse \ ,theta_polaire \ ,NEUT(ADD2(MOIT(GRO1(FRA3(CERCLE_TRIGONOMETRIQUE))) \ ,EXAGERATION(angle_polarisation_de_STRONG_TRANSFORMATION_G___QxAQ) \ ) \ ) \ ); \ CREATION_D_UN_QUARK_VIRTUEL(quarkA1 \ ,QUARK_SAVEUR_INDEFINIE \ ,ASI2(gluonD1,espace_temps,position_courante) \ ,vitesse_courante \ ,ROUGE_indefinie \ ,VERTE_indefinie \ ,BLEUE_indefinie \ ); \ FLUCTUATION_ALEATOIRE_DES_POSITIONS_INITIALE_ET_COURANTE(quarkA1,PERTURBER_UNE_POSITION); \ VITESSE_CARTESIENNE_POLAIRE(vitesse_courante \ ,rho_de_la_vitesse \ ,theta_polaire \ ,NEGA(ADD2(MOIT(GRO1(FRA3(CERCLE_TRIGONOMETRIQUE))) \ ,EXAGERATION(angle_polarisation_de_STRONG_TRANSFORMATION_G___QxAQ) \ ) \ ) \ ); \ CREATION_D_UN_ANTI_QUARK_VIRTUEL(anti_quarkA1 \ ,QUARK_SAVEUR_INDEFINIE \ ,ASI2(gluonD1,espace_temps,position_courante) \ ,vitesse_courante \ ,ROUGE_indefinie \ ,VERTE_indefinie \ ,BLEUE_indefinie \ ); \ FLUCTUATION_ALEATOIRE_DES_POSITIONS_INITIALE_ET_COURANTE(anti_quarkA1,PERTURBER_UNE_POSITION); \ CONSERVATION_DE_2_CHARGES_DE_COULEUR(quarkA1,anti_quarkA1 \ ,gluonD1 \ ); \ PERTURBATION_ALEATOIRE_ADDITIVE_DE_LA_CHARGE_DE_COULEUR(quarkA1); \ MAJORATION_DE_LA_COMPOSANTE_PREPONDERANTE_DE_LA_CHARGE_DE_COULEURS(quarkA1); \ PERTURBATION_ALEATOIRE_ADDITIVE_DE_LA_CHARGE_DE_COULEUR(anti_quarkA1); \ MAJORATION_DE_LA_COMPOSANTE_PREPONDERANTE_DE_LA_CHARGE_DE_COULEURS(anti_quarkA1); \ TRACE_D_UN_EVENEMENT(Prin3("STRONG_TRANSFORMATION_G___QxAQ G(%d) --> Q(%d)xAQ(%d)" \ ,ETIQUETTE(gluonD1) \ ,ETIQUETTE(quarkA1) \ ,ETIQUETTE(anti_quarkA1) \ ) \ ); \ DESTRUCTION_D_UN_GLUON_VIRTUEL(gluonD1); \ FIN_DE_CHOIX_D_UNE_DIRECTION_D_ALIGNEMENT_DE_L_ESPACE_PHYSIQUE_SUR_UNE_PARTICULE; \ FIN_DE_ROTATION_D_ALIGNEMENT_DE_L_ESPACE_PHYSIQUE_SUR_UNE_PARTICULE; \ INCR(compteur_de_STRONG_TRANSFORMATION_G___QxAQ,I); \ Eblock \ /* _ */ \ /* Vertex : G --> QxQ. */ #define PROBABILITE_DE_STRONG_TRANSFORMATION_G___GxG \ GRO4(FRA3(PROBABILITE_DE_STRONG_TRANSFORMATION_G___QxAQ)) DEFV(Local,DEFV(Float,INIT(probabilite_de_STRONG_TRANSFORMATION_G___GxG,PROBABILITE_DE_STRONG_TRANSFORMATION_G___GxG))); /* Probabilite du vertex : G --> GxG. */ #define ANGLE_POLARISATION_DE_STRONG_TRANSFORMATION_G___GxG \ NEGA(GRO5(FRA9(PI_SUR_2))) DEFV(Local,DEFV(Float,INIT(angle_polarisation_de_STRONG_TRANSFORMATION_G___GxG ,ANGLE_POLARISATION_DE_STRONG_TRANSFORMATION_G___GxG ) ) ); /* Dispersion de l'angle du vertex : G --> GxG. */ DEFV(Local,DEFV(Positive,INIT(compteur_de_STRONG_TRANSFORMATION_G___GxG,ZERO))); /* Compteur des vertex : G --> GxG. */ #define STRONG_TRANSFORMATION_G___GxG(gluonD1,gluonA1,gluonA2) \ Bblock \ DEFINITION_DE_LA_VITESSE_ALEATOIRE; \ /* Structures necessaires a definir une vitesse en coordonnees spheriques et en coordonnees */ \ /* cartesiennes. */ \ DEBUT_DE_ROTATION_D_ALIGNEMENT_DE_L_ESPACE_PHYSIQUE_SUR_UNE_PARTICULE(gluonD1); \ /* Alignement de l'axe 'OX2' le long de 'gluonD1'... */ \ DEBUT_DE_CHOIX_D_UNE_DIRECTION_D_ALIGNEMENT_DE_L_ESPACE_PHYSIQUE_SUR_UNE_PARTICULE; \ /* Rotation aleatoire de l'espace physique afin de placer le vertex 'G --> GxG' dans */ \ /* le plan (OX2,OY2) du referentiel aleatoire (OX2,OY2,OZ2). */ \ INITIALISATION_DU_MODULE_DE_LA_VITESSE_ALEATOIRE_D_UN_GLUON; \ /* Le module de la vitesse des gluons est figees, puisque ces particules se deplacent a la */ \ /* vitesse de la lumiere, et la direction est aleatoire (en coordonnees spheriques). */ \ VITESSE_CARTESIENNE_POLAIRE(vitesse_courante \ ,rho_de_la_vitesse \ ,theta_polaire \ ,NEUT(ADD2(MOIT(GRO1(FRA3(CERCLE_TRIGONOMETRIQUE))) \ ,EXAGERATION(angle_polarisation_de_STRONG_TRANSFORMATION_G___GxG) \ ) \ ) \ ); \ CREATION_D_UN_GLUON_VIRTUEL(gluonA1 \ ,ASI2(gluonD1,espace_temps,position_courante) \ ,vitesse_courante \ ,ROUGE_indefinie \ ,VERTE_indefinie \ ,BLEUE_indefinie \ ); \ FLUCTUATION_ALEATOIRE_DES_POSITIONS_INITIALE_ET_COURANTE(gluonA1,PERTURBER_UNE_POSITION); \ VITESSE_CARTESIENNE_POLAIRE(vitesse_courante \ ,rho_de_la_vitesse \ ,theta_polaire \ ,NEGA(ADD2(MOIT(GRO1(FRA3(CERCLE_TRIGONOMETRIQUE))) \ ,EXAGERATION(angle_polarisation_de_STRONG_TRANSFORMATION_G___GxG) \ ) \ ) \ ); \ CREATION_D_UN_GLUON_VIRTUEL(gluonA2 \ ,ASI2(gluonD1,espace_temps,position_courante) \ ,vitesse_courante \ ,ROUGE_indefinie \ ,VERTE_indefinie \ ,BLEUE_indefinie \ ); \ FLUCTUATION_ALEATOIRE_DES_POSITIONS_INITIALE_ET_COURANTE(gluonA2,PERTURBER_UNE_POSITION); \ CONSERVATION_DE_2_CHARGES_DE_COULEUR(gluonA1,gluonA2 \ ,gluonD1 \ ); \ PERTURBATION_ALEATOIRE_ADDITIVE_DE_LA_CHARGE_DE_COULEUR(gluonA1); \ MAJORATION_DE_LA_COMPOSANTE_PREPONDERANTE_DE_LA_CHARGE_DE_COULEURS(gluonA1); \ PERTURBATION_ALEATOIRE_ADDITIVE_DE_LA_CHARGE_DE_COULEUR(gluonA2); \ MAJORATION_DE_LA_COMPOSANTE_PREPONDERANTE_DE_LA_CHARGE_DE_COULEURS(gluonA2); \ TRACE_D_UN_EVENEMENT(Prin3("STRONG_TRANSFORMATION_G___GxG G(%d) --> G(%d)xG(%d)" \ ,ETIQUETTE(gluonD1) \ ,ETIQUETTE(gluonA1) \ ,ETIQUETTE(gluonA2) \ ) \ ); \ DESTRUCTION_D_UN_GLUON_VIRTUEL(gluonD1); \ FIN_DE_CHOIX_D_UNE_DIRECTION_D_ALIGNEMENT_DE_L_ESPACE_PHYSIQUE_SUR_UNE_PARTICULE; \ FIN_DE_ROTATION_D_ALIGNEMENT_DE_L_ESPACE_PHYSIQUE_SUR_UNE_PARTICULE; \ INCR(compteur_de_STRONG_TRANSFORMATION_G___GxG,I); \ Eblock \ /* Vertex : G --> GxG. */ #define PROBABILITE_DE_STRONG_TRANSFORMATION_G___GxGxG \ EXP2(PROBABILITE_DE_STRONG_TRANSFORMATION_G___GxG) DEFV(Local,DEFV(Float,INIT(probabilite_de_STRONG_TRANSFORMATION_G___GxGxG,PROBABILITE_DE_STRONG_TRANSFORMATION_G___GxGxG))); /* Probabilite du vertex : G --> GxGxG. */ #define ANGLE_POLARISATION_DE_STRONG_TRANSFORMATION_G___GxGxG \ NEUT(GRO5(FRA9(PI_SUR_2))) DEFV(Local,DEFV(Float,INIT(angle_polarisation_de_STRONG_TRANSFORMATION_G___GxGxG ,ANGLE_POLARISATION_DE_STRONG_TRANSFORMATION_G___GxGxG ) ) ); /* Dispersion de l'angle du vertex : G --> GxGxG. */ DEFV(Local,DEFV(Positive,INIT(compteur_de_STRONG_TRANSFORMATION_G___GxGxG,ZERO))); /* Compteur des vertex : G --> GxGxG. */ #define STRONG_TRANSFORMATION_G___GxGxG(gluonD1,gluonA1,gluonA2,gluonA3) \ Bblock \ DEFINITION_DE_LA_VITESSE_ALEATOIRE; \ /* Structures necessaires a definir une vitesse en coordonnees spheriques et en coordonnees */ \ /* cartesiennes. */ \ DEBUT_DE_ROTATION_D_ALIGNEMENT_DE_L_ESPACE_PHYSIQUE_SUR_UNE_PARTICULE(gluonD1); \ /* Alignement de l'axe 'OX2' le long de 'gluonD1'... */ \ DEBUT_DE_CHOIX_D_UNE_DIRECTION_D_ALIGNEMENT_DE_L_ESPACE_PHYSIQUE_SUR_UNE_PARTICULE; \ /* Rotation aleatoire de l'espace physique afin de placer le vertex 'G --> GxGxG' dans */ \ /* le plan (OX2,OY2) du referentiel aleatoire (OX2,OY2,OZ2). */ \ INITIALISATION_DU_MODULE_DE_LA_VITESSE_ALEATOIRE_D_UN_GLUON; \ /* Le module de la vitesse des gluons est figees, puisque ces particules se deplacent a la */ \ /* vitesse de la lumiere, et la direction est aleatoire (en coordonnees spheriques). */ \ VITESSE_CARTESIENNE_POLAIRE(vitesse_courante \ ,rho_de_la_vitesse \ ,theta_polaire \ ,PAS_DE_DEPHASAGE \ ); \ CREATION_D_UN_GLUON_VIRTUEL(gluonA1 \ ,ASI2(gluonD1,espace_temps,position_courante) \ ,vitesse_courante \ ,ROUGE_indefinie \ ,VERTE_indefinie \ ,BLEUE_indefinie \ ); \ FLUCTUATION_ALEATOIRE_DES_POSITIONS_INITIALE_ET_COURANTE(gluonA1,PERTURBER_UNE_POSITION); \ VITESSE_CARTESIENNE_POLAIRE(vitesse_courante \ ,rho_de_la_vitesse \ ,theta_polaire \ ,NEUT(ADD2(GRO1(FRA3(CERCLE_TRIGONOMETRIQUE)) \ ,EXAGERATION(angle_polarisation_de_STRONG_TRANSFORMATION_G___GxGxG) \ ) \ ) \ ); \ CREATION_D_UN_GLUON_VIRTUEL(gluonA2 \ ,ASI2(gluonD1,espace_temps,position_courante) \ ,vitesse_courante \ ,ROUGE_indefinie \ ,VERTE_indefinie \ ,BLEUE_indefinie \ ); \ FLUCTUATION_ALEATOIRE_DES_POSITIONS_INITIALE_ET_COURANTE(gluonA2,PERTURBER_UNE_POSITION); \ VITESSE_CARTESIENNE_POLAIRE(vitesse_courante \ ,rho_de_la_vitesse \ ,theta_polaire \ ,NEGA(ADD2(GRO1(FRA3(CERCLE_TRIGONOMETRIQUE)) \ ,EXAGERATION(angle_polarisation_de_STRONG_TRANSFORMATION_G___GxGxG) \ ) \ ) \ ); \ CREATION_D_UN_GLUON_VIRTUEL(gluonA3 \ ,ASI2(gluonD1,espace_temps,position_courante) \ ,vitesse_courante \ ,ROUGE_indefinie \ ,VERTE_indefinie \ ,BLEUE_indefinie \ ); \ FLUCTUATION_ALEATOIRE_DES_POSITIONS_INITIALE_ET_COURANTE(gluonA3,PERTURBER_UNE_POSITION); \ CONSERVATION_DE_3_CHARGES_DE_COULEUR(gluonA1,gluonA2,gluonA3 \ ,gluonD1 \ ); \ PERTURBATION_ALEATOIRE_ADDITIVE_DE_LA_CHARGE_DE_COULEUR(gluonA1); \ MAJORATION_DE_LA_COMPOSANTE_PREPONDERANTE_DE_LA_CHARGE_DE_COULEURS(gluonA1); \ PERTURBATION_ALEATOIRE_ADDITIVE_DE_LA_CHARGE_DE_COULEUR(gluonA2); \ MAJORATION_DE_LA_COMPOSANTE_PREPONDERANTE_DE_LA_CHARGE_DE_COULEURS(gluonA2); \ PERTURBATION_ALEATOIRE_ADDITIVE_DE_LA_CHARGE_DE_COULEUR(gluonA3); \ MAJORATION_DE_LA_COMPOSANTE_PREPONDERANTE_DE_LA_CHARGE_DE_COULEURS(gluonA3); \ TRACE_D_UN_EVENEMENT(Prin4("STRONG_TRANSFORMATION_G___GxGxG G(%d) --> G(%d)xG(%d)xG(%d)" \ ,ETIQUETTE(gluonD1) \ ,ETIQUETTE(gluonA1) \ ,ETIQUETTE(gluonA2) \ ,ETIQUETTE(gluonA3) \ ) \ ); \ DESTRUCTION_D_UN_GLUON_VIRTUEL(gluonD1); \ FIN_DE_CHOIX_D_UNE_DIRECTION_D_ALIGNEMENT_DE_L_ESPACE_PHYSIQUE_SUR_UNE_PARTICULE; \ FIN_DE_ROTATION_D_ALIGNEMENT_DE_L_ESPACE_PHYSIQUE_SUR_UNE_PARTICULE; \ INCR(compteur_de_STRONG_TRANSFORMATION_G___GxGxG,I); \ Eblock \ /* Vertex : G --> GxGxG. */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* E V E N E M E N T S " C O N D I T I O N N E L S " P O U R U N E N S E M B L E D E G L U O N S : */ /* */ /*************************************************************************************************************************************/ #define PROBABILITE_D_EVENEMENT_CONDITIONNEL_POUR_UN_GLUON \ FRA1(FRA2(FU)) DEFV(Local,DEFV(Float,INIT(probabilite_d_evenement_conditionnel_pour_un_gluon ,PROBABILITE_D_EVENEMENT_CONDITIONNEL_POUR_UN_GLUON ) ) ); /* Probabilite pour qu'un gluon present dans le proton soit la "victime" d'un evenement */ /* conditionnel du type : */ /* */ /* INCHANGE_G, */ /* STRONG_TRANSFORMATION_G___GxG, */ /* STRONG_TRANSFORMATION_G___QxAQ, */ /* STRONG_TRANSFORMATION_G___GxGxG. */ /* */ #define ___EVENEMENTS_CONDITIONNELS_POUR_CERTAINS_GLUONS \ Bblock \ DEFV(Float,INIT(probabilite_d_evenement_conditionnel,FLOT__UNDEF)); \ /* Probabilite pour que le gluon courant soit la "victime" d'un evenement conditionnel */ \ /* du type : */ \ /* */ \ /* INCHANGE_G, */ \ /* STRONG_TRANSFORMATION_G___GxG, */ \ /* STRONG_TRANSFORMATION_G___QxAQ, */ \ /* STRONG_TRANSFORMATION_G___GxGxG. */ \ /* */ \ ENSEMBLE_DES_GLUONS_EXISTANTS(BLOC(GENERATION_D_UNE_PROBABILITE_01(probabilite_d_evenement_conditionnel); \ Test(IFLE(aPROBABILITE(probabilite_d_evenement_conditionnel \ ,gluonD1 \ ,DUREE_DE_VIE_MOYENNE_COURANTE(gluonD1) \ ) \ ,REGUL0(probabilite_d_evenement_conditionnel_pour_un_gluon) \ ) \ ) \ Bblock \ DEFV(Float,INIT(probabilite_de_choix,FLOT__UNDEF)); \ /* Probabilite de choix entre : */ \ /* */ \ /* INCHANGE_Q, */ \ /* STRONG_EMISSION_Q___QxG, */ \ /* STRONG_TRANSFORMATION_G___QxAQ, */ \ /* STRONG_TRANSFORMATION_G___GxGxG. */ \ /* */ \ GENERATION_D_UNE_VALEUR \ (probabilite_de_choix \ ,EVENEMENT_IMPOSSIBLE \ ,ADD4(REGUL0(probabilite_de_INCHANGE_G) \ ,REGUL1(probabilite_de_STRONG_TRANSFORMATION_G___GxG) \ ,REGUL1(probabilite_de_STRONG_TRANSFORMATION_G___QxAQ) \ ,REGUL1(probabilite_de_STRONG_TRANSFORMATION_G___GxGxG) \ ) \ ); \ /* ATTENTION : 'hPROBABILITE(...)' ne doit pas intervenir ici, car ici, dans */ \ /* 'CHOIX_D_UN_EVENEMENT_ENTRE_PLUSIEURS_EVENEMENTS_POSSIBLES(...)', le choix est */ \ /* instantane, contrairement a celui effectue par 'GENERATION_D_UNE_PROBABILITE_01(...)'. */ \ DEBUT_DU_CHOIX_ENTRE_PLUSIEURS_EVENEMENTS_POSSIBLES(probabilite_de_choix); \ CHOIX_D_UN_EVENEMENT_ENTRE_PLUSIEURS_EVENEMENTS_POSSIBLES \ (REGUL0(probabilite_de_INCHANGE_G) \ ,INCHANGE_G(gluonD1) \ ); \ CHOIX_D_UN_EVENEMENT_ENTRE_PLUSIEURS_EVENEMENTS_POSSIBLES \ (REGUL1(probabilite_de_STRONG_TRANSFORMATION_G___GxG) \ ,STRONG_TRANSFORMATION_G___GxG(gluonD1,gluonA1,gluonA2) \ ); \ CHOIX_D_UN_EVENEMENT_ENTRE_PLUSIEURS_EVENEMENTS_POSSIBLES \ (REGUL1(probabilite_de_STRONG_TRANSFORMATION_G___QxAQ) \ ,STRONG_TRANSFORMATION_G___QxAQ(gluonD1,quarkA1,anti_quarkA1) \ ); \ CHOIX_D_UN_EVENEMENT_ENTRE_PLUSIEURS_EVENEMENTS_POSSIBLES \ (REGUL1(probabilite_de_STRONG_TRANSFORMATION_G___GxGxG) \ ,STRONG_TRANSFORMATION_G___GxGxG(gluonD1,gluonA1,gluonA2,gluonA3) \ ); \ FIN_DU_CHOIX_ENTRE_PLUSIEURS_EVENEMENTS_POSSIBLES; \ Eblock \ ATes \ Bblock \ Eblock \ ETes \ ); \ ); \ Eblock \ /* Evenements conditionnels pour quelques uns des gluons presents dans le proton. */ BFonctionI DEFV(LoF,GENERE__Fonction__OPT(EVENEMENTS_CONDITIONNELS_POUR_CERTAINS_GLUONS,G,___EVENEMENTS_CONDITIONNELS_POUR_CERTAINS_GLUONS)) EFonctionI