/*************************************************************************************************************************************/ /* */ /* D E F I N I T I O N S D E S D E S C R I P T I O N S D E S P A R T I C U L E S : */ /* */ /* */ /* Author of '$xrq/nucleon.L5$I' : */ /* */ /* Jean-Francois Colonna (LACTAMME, 1991??????????). */ /* */ /*************************************************************************************************************************************/ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* D E F I N I T I O N D E L A D I S T A N C E P A R C O U R U E : */ /* */ /*************************************************************************************************************************************/ #define DISTANCE_PARCOURUE(v,dt) \ MUL2(v,dt) \ /* Definition de la distance parcourue pendant un temps 'dt' par un mobile se deplacant a */ \ /* la vitesse 'v'. */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* A D D I T I O N R E L A T I V I S T E D E S V I T E S S E S : */ /* */ /*************************************************************************************************************************************/ #define COMPOSITION_RELATIVISTE_DES_VITESSES(v1,v2) \ DIVI(ADD2(v1,v2) \ ,ADD2(FU \ ,DIVI(MUL2(v1,v2) \ ,EXP2(VITESSE_DE_LA_LUMIERE) \ ) \ ) \ ) \ /* Loi de composition relativiste des vitesses : */ \ /* */ \ /* V + V */ \ /* 1 2 */ \ /* V + V --> --------------- */ \ /* 1 2 V x V */ \ /* 1 2 */ \ /* 1 + --------- */ \ /* 2 */ \ /* C */ \ /* */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* D E F I N I T I O N D ' U N E V E N T U E L C H A M P E L E C T R O M A G N E T I Q U E : */ /* */ /*************************************************************************************************************************************/ #define CHAMP_ELECTRIQUE_X \ FZERO #define CHAMP_ELECTRIQUE_Y \ FZERO #define CHAMP_ELECTRIQUE_Z \ FZERO DEFV(Local,DEFV(Float,INIT(champ_electrique_X,CHAMP_ELECTRIQUE_X))); DEFV(Local,DEFV(Float,INIT(champ_electrique_Y,CHAMP_ELECTRIQUE_Y))); DEFV(Local,DEFV(Float,INIT(champ_electrique_Z,CHAMP_ELECTRIQUE_Z))); DEFV(Local,DEFV(deltaF_3D,champ_electrique)); /* --> */ /* Champ electrique E implicite. */ #define CHAMP_MAGNETIQUE_X \ FZERO #define CHAMP_MAGNETIQUE_Y \ FZERO #define CHAMP_MAGNETIQUE_Z \ FZERO DEFV(Local,DEFV(Float,INIT(champ_magnetique_X,CHAMP_MAGNETIQUE_X))); DEFV(Local,DEFV(Float,INIT(champ_magnetique_Y,CHAMP_MAGNETIQUE_Y))); DEFV(Local,DEFV(Float,INIT(champ_magnetique_Z,CHAMP_MAGNETIQUE_Z))); DEFV(Local,DEFV(deltaF_3D,champ_magnetique)); /* --> */ /* Champ electrique B implicite. */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* D E F I N I T I O N D E S C O O R D O N N E S D ' E S P A C E - T E M P S D ' U N E P A R T I C U L E : */ /* */ /*************************************************************************************************************************************/ Dstruct07(_coordonnees ,DEFV(Float,date_de_naissance) /* Date de naissance d'un objet. */ ,DEFV(Float,duree_de_vie_moyenne_initiale) /* Valeur initiale de la duree de vie moyenne d'une particule ; il est necessaire de la */ /* memoriser pour chaque particule, car en effet, 'duree_de_vie_moyenne_courante' peut */ /* augmenter au cours du temps lorsque, par exemple une particule 'Q' ou 'AQ' est "visee" */ /* par un 'G'. Or rien empeche qu'un meme 'Q' ou 'AQ' soit "vise" par plusieurs 'G' ; si */ /* tel est le cas, il ne faut pas que 'duree_de_vie_moyenne_courante' augmente demesurement */ /* dans 'ALLONGEMENT_DE_LA_DUREE_DE_VIE_MOYENNE(...)', la comparaison relative des deux */ /* valeurs 'duree_de_vie_moyenne_initiale' et 'duree_de_vie_moyenne_courante' permet de */ /* savoir ou l'on en est... */ ,DEFV(Float,duree_de_vie_moyenne_courante) /* Duree de vie moyenne d'un objet ; celle-ci peut etre modifiee au cours de sa vie, et en */ /* particulier augmentee (c'est par exemple le cas des particules 'Q', 'AQ' ou 'G' qui sont */ /* en attente de collisions apres 'INTERCEPTION_PARTICULE_PAR_UN_GLUON(...)'). */ ,DEFV(pointF_3D,position_initiale) /* 3 */ /* Definition de la position initiale d'un objet dans R (si tant est que l'on */ /* puisse parler de "position absolue" pour un objet quantique...). */ ,DEFV(pointF_3D,position_courante) /* 3 */ /* definition de la position courante d'un objet dans R (si tant est que l'on */ /* puisse parler de "position absolue" pour un objet quantique...). */ ,DEFV(deltaF_3D,vitesse) /* Definition de la vitesse d'un objet (meme remarque que ci-dessus...). */ ,DEFV(deltaF_3D,moment_angulaire) /* Definition du moment angulaire d'un objet (meme remarque que ci-dessus...). */ ,NOM_VIDE ); Typedef(coordonnees,STRU(_coordonnees)) /* Definition d'un objet dans l'espace-temps. */ #define COORDONNEES(particule,xyz) \ ASI3(particule,espace_temps,position_courante,xyz) \ /* Acces a l'une des coordonnees courantes d'une particule... */ #define DEFINITION_D_UNE_POSITION(position,x,y,z) \ DEFV(pointF_3D,INIS(position,IstructL03(x,y,z))); \ /* Definition d'une position quelconque... */ #define DEFINITION_D_UNE_POSITION_INDEFINIE(position_indefinie) \ DEFINITION_D_UNE_POSITION(position_indefinie,Xcentre_ESPACE,Ycentre_ESPACE,Zcentre_ESPACE); \ /* Definition d'une position indefinie ; on choisit (Xcentre,Ycentre,Zcentre) afin d'eviter */ \ /* d'eventuels problemes arithmetiques avec (FLOT__UNDEF,FLOT__UNDEF,FLOT__UNDEF)... */ \ /* ATTENTION, il y avait autrefois : */ \ /* */ \ /* DEFINITION_D_UNE_POSITION(position_indefinie */ \ /* ,DOUB(Xmax_ESPACE) */ \ /* ,DOUB(Ymax_ESPACE) */ \ /* ,DOUB(Zmax_ESPACE) */ \ /* ); */ \ /* */ \ /* mais, il vaut mieux utiliser (Xcentre,Ycentre,Zcentre) qui sont des constantes absolues. */ \ /* En effet, si l'on se refere a ((Xmin,Xmax),(Ymin,Ymax)) (et non plus aux definitions */ \ /* relatives au 'pal'), la definition de l'espace n'est plus une constante, puisque son */ \ /* format 'FORMAT_DES_IMAGES' ne l'est plus... */ DEFINITION_D_UNE_POSITION_INDEFINIE(position_indefinie); /* Definition d'une position indefinie... */ #define DEFINITION_D_UNE_VITESSE(vitesse,vx,vy,vz) \ DEFV(deltaF_3D,INIS(vitesse,IstructL03(vx,vy,vz))); \ /* Definition d'une vitesse quelconque... */ #define DEFINITION_D_UNE_VITESSE_NULLE(vitesse_nulle) \ DEFINITION_D_UNE_VITESSE(vitesse_nulle,FZERO,FZERO,FZERO); \ /* Definition d'une vitesse nulle... */ DEFINITION_D_UNE_VITESSE_NULLE(vitesse_nulle); /* Definition d'une vitesse nulle pour les objets (dans le cas des gluons qui se deplacent */ /* toujours a la vitesse de la lumiere, ce n'est pas philosophiquement genant, car en effet, */ /* c'est seulement pour initialiser...). */ #define DEFINITION_D_UNE_VITESSE_INDEFINIE(vitesse_indefinie) \ DEFINITION_D_UNE_VITESSE(vitesse_indefinie,FZERO,FZERO,FZERO); \ /* Definition d'une vitesse indefinie ; on choisit (0,0,0) afin d'eviter d'eventuels */ \ /* problemes arithmetiques avec (FLOT__UNDEF,FLOT__UNDEF,FLOT__UNDEF)... */ DEFINITION_D_UNE_VITESSE_INDEFINIE(vitesse_indefinie); /* Definition d'une vitesse indefinie pour les objets ; celle-ci risque d'etre superieure */ /* a la vitesse de la lumiere, mais c'est juste un indicateur de l'etat indefini... */ #define DEFINITION_D_UN_MOMENT_ANGULAIRE(moment_angulaire,mx,my,mz) \ DEFV(deltaF_3D,INIS(moment_angulaire,IstructL03(mx,my,mz))); \ /* Definition d'un moment angulaire quelconque... */ #define DEFINITION_D_UN_MOMENT_ANGULAIRE_INDEFINI(moment_angulaire_indefini) \ DEFINITION_D_UN_MOMENT_ANGULAIRE(moment_angulaire_indefini,FZERO,FZERO,FZERO); \ /* Definition d'un moment angulaire indefini ; on choisit (0,0,0) afin d'eviter d'eventuels */ \ /* problemes arithmetiques avec (FLOT__UNDEF,FLOT__UNDEF,FLOT__UNDEF)... */ DEFINITION_D_UN_MOMENT_ANGULAIRE_INDEFINI(moment_angulaire_indefini); /* Definition d'un moment angulaire indefini pour les objets. */ #define DEFINITION_D_UNE_DIRECTION_EN_COORDONNEES_SPHERIQUES(rho,theta,phi) \ DEFV(Float,INIT(rho,FLOT__UNDEF)); \ DEFV(Float,INIT(theta,FLOT__UNDEF)); \ DEFV(Float,INIT(phi,FLOT__UNDEF)); \ /* Definition des composantes d'une direction en coordonnees spheriques {rho,theta,phi}. */ #define INITIALISATION_DE_LA_DUREE_DE_VIE_MOYENNE(objet,pd) \ Bblock \ EGAL(ASD1(objet,duree_de_vie_moyenne_initiale),pd); \ EGAL(ASD1(objet,duree_de_vie_moyenne_courante),pd); \ Eblock \ /* Initialisation de la duree de vie moyenne d'un objet. */ #define INITIALISATION_DE_LA_DATE_DE_NAISSANCE(objet,pt) \ Bblock \ EGAL(ASD1(objet,date_de_naissance),pt); \ Eblock \ /* Initialisation de la date de naissance d'un objet. */ #define INITIALISATION_D_UNE_POSITION_QUELCONQUE(position,px,py,pz) \ Bblock \ INITIALISATION_POINT_3D(position,px,py,pz); \ Eblock \ /* Initialisation d'une position quelconque ; cette procedure a ete introduite en partie a */ \ /* cause du probleme de l'initialisation de la position des trois quarks REELs constitutifs */ \ /* du proton, les compilateurs n'acceptant pas l'initialisation des structures utilisees */ \ /* pour les positions a l'aide d'expressions compliquees contenant des fonctions (en */ \ /* particulier, des lignes trigonometriques) car ces dernieres doivent etre evaluees */ \ /* des la compilation... */ #define INITIALISATION_DE_LA_POSITION_INITIALE(objet,position_initiale_de_l_objet) \ Bblock \ INITIALISATION_D_UNE_POSITION_QUELCONQUE(ASD1(objet,position_initiale) \ ,ASD1(position_initiale_de_l_objet,x) \ ,ASD1(position_initiale_de_l_objet,y) \ ,ASD1(position_initiale_de_l_objet,z) \ ); \ Eblock \ /* Initialisation de la position initiale d'un objet. */ #define INITIALISATION_DE_LA_POSITION_COURANTE(objet) \ Bblock \ TRANSFERT_POINT_3D(ASD1(objet,position_courante),ASD1(objet,position_initiale)); \ Eblock \ /* Initialisation de la position courante d'un objet a partir de sa position initiale. */ #define INITIALISATION_D_UNE_VITESSE_QUELCONQUE(vitesse,vx,vy,vz) \ Bblock \ INITIALISATION_ACCROISSEMENT_3D(vitesse,vx,vy,vz); \ Eblock \ /* Initialisation d'une vitesse quelconque ; cette procedure a ete introduite en partie a */ \ /* cause du probleme de l'initialisation de la position des trois quarks REELs constitutifs */ \ /* du proton, les compilateurs n'acceptant pas l'initialisation des structures utilisees */ \ /* pour les positions a l'aide d'expressions compliquees contenant des fonctions (en */ \ /* particulier, des lignes trigonometriques) car ces dernieres doivent etre evaluees */ \ /* des la compilation... */ #define INITIALISATION_DE_LA_VITESSE(objet,vitesse_de_la_particule) \ Bblock \ TRANSFERT_ACCROISSEMENT_3D(ASD1(objet,vitesse),vitesse_de_la_particule); \ Eblock \ /* Initialisation de la vitesse d'un objet. */ #define INITIALISATION_D_UN_MOMENT_ANGULAIRE_QUELCONQUE(moment_angulaire,mx,my,mz) \ Bblock \ INITIALISATION_ACCROISSEMENT_3D(moment_angulaire,mx,my,mz); \ Eblock \ /* Initialisation d'un moment angulaire ; cette procedure a ete introduite en partie a */ \ /* cause du probleme de l'initialisation de la position des trois quarks REELs constitutifs */ \ /* du proton, les compilateurs n'acceptant pas l'initialisation des structures utilisees */ \ /* pour les positions a l'aide d'expressions compliquees contenant des fonctions (en */ \ /* particulier, des lignes trigonometriques) car ces dernieres doivent etre evaluees */ \ /* des la compilation... */ #define INITIALISATION_DU_MOMENT_ANGULAIRE(objet,moment_angulaire_de_la_particule) \ Bblock \ TRANSFERT_ACCROISSEMENT_3D(ASD1(objet,moment_angulaire),moment_angulaire_de_la_particule); \ Eblock \ /* Initialisation du moment angulaire d'un objet. */ #define DEPLACEMENT(objet,masse_de_l_objet,charge_de_l_objet) \ /* ATTENTION, on notera la necessite de transmettre explicitement les parametres 'masse' */ \ /* et 'charge' de l'objet. On ne peut en effet utiliser a la place : */ \ /* */ \ /* cMASSE(objet) */ \ /* cCHARGE(objet) */ \ /* */ \ /* car, en effet, 'objet' n'est pas une particule mais 'ASI1(particule,espace_temps)', */ \ /* d'ou la difficulte... */ \ Bblock \ DEFV(deltaF_3D,produit_de_la_vitesse_et_du_champ_magnetique); \ /* Afin de calculer : */ \ /* */ \ /* --> --> */ \ /* V /\ B */ \ /* */ \ DEFV(deltaF_3D,acceleration_due_a_la_force_de_Lorentz); \ /* Afin de calculer la force de Lorentz. */ \ INCR(ASD2(objet,position_courante,x) \ ,DISTANCE_PARCOURUE(ASD2(objet,vitesse,dx) \ ,PERIODE_COURANTE_DE_L_HORLOGE \ ) \ ); \ INCR(ASD2(objet,position_courante,y) \ ,DISTANCE_PARCOURUE(ASD2(objet,vitesse,dy) \ ,PERIODE_COURANTE_DE_L_HORLOGE \ ) \ ); \ INCR(ASD2(objet,position_courante,z) \ ,DISTANCE_PARCOURUE(ASD2(objet,vitesse,dz) \ ,PERIODE_COURANTE_DE_L_HORLOGE \ ) \ ); \ /* Deplacement d'un objet au cours d'une periode d'horloge, suivant la formule */ \ /* prodigieuse : */ \ /* */ \ /* X <-- X + (Vx.dt), */ \ /* Y <-- Y + (Vy.dt), */ \ /* Z <-- Z + (Vz.dt). */ \ /* */ \ \ INITIALISATION_ACCROISSEMENT_3D(produit_de_la_vitesse_et_du_champ_magnetique \ ,PvectX(ASD2(objet,vitesse,dx) \ ,ASD2(objet,vitesse,dy) \ ,ASD2(objet,vitesse,dz) \ \ ,ASD1(champ_magnetique,dx) \ ,ASD1(champ_magnetique,dy) \ ,ASD1(champ_magnetique,dz) \ ) \ \ ,PvectY(ASD2(objet,vitesse,dx) \ ,ASD2(objet,vitesse,dy) \ ,ASD2(objet,vitesse,dz) \ \ ,ASD1(champ_magnetique,dx) \ ,ASD1(champ_magnetique,dy) \ ,ASD1(champ_magnetique,dz) \ ) \ \ ,PvectZ(ASD2(objet,vitesse,dx) \ ,ASD2(objet,vitesse,dy) \ ,ASD2(objet,vitesse,dz) \ \ ,ASD1(champ_magnetique,dx) \ ,ASD1(champ_magnetique,dy) \ ,ASD1(champ_magnetique,dz) \ ) \ ); \ /* Calcul du produit vectoriel : */ \ /* */ \ /* --> --> */ \ /* V /\ B */ \ /* */ \ INITIALISATION_ACCROISSEMENT_3D(acceleration_due_a_la_force_de_Lorentz \ ,MUL2(DIVI(charge_de_l_objet,masse_de_l_objet) \ ,ADD2(ASD1(champ_electrique,dx) \ ,ASD1(produit_de_la_vitesse_et_du_champ_magnetique,dx) \ ) \ ) \ ,MUL2(DIVI(charge_de_l_objet,masse_de_l_objet) \ ,ADD2(ASD1(champ_electrique,dy) \ ,ASD1(produit_de_la_vitesse_et_du_champ_magnetique,dy) \ ) \ ) \ ,MUL2(DIVI(charge_de_l_objet,masse_de_l_objet) \ ,ADD2(ASD1(champ_electrique,dz) \ ,ASD1(produit_de_la_vitesse_et_du_champ_magnetique,dz) \ ) \ ) \ ); \ /* Calcul de la force de Lorentz appliquee a l'objet courant et ramenee a l'unite de */ \ /* masse (c'est donc l'acceleration...) ; on a : */ \ /* */ \ /* --> --> --> --> */ \ /* F = q.( E + V /\ B ) */ \ /* */ \ /* or : */ \ /* */ \ /* ---> */ \ /* --> ------> dV */ \ /* F = m. gamma = m.---- */ \ /* dt */ \ /* */ \ /* d'ou : */ \ /* */ \ /* ---> */ \ /* q --> --> --> ------> dV */ \ /* ---.( E + V /\ B ) = gamma = ---- */ \ /* m dt */ \ /* */ \ INITIALISATION_ACCROISSEMENT_3D(ASD1(objet,vitesse) \ ,AXPB(ASD1(acceleration_due_a_la_force_de_Lorentz,dx) \ ,PERIODE_COURANTE_DE_L_HORLOGE \ ,ASD2(objet,vitesse,dx) \ ) \ ,AXPB(ASD1(acceleration_due_a_la_force_de_Lorentz,dy) \ ,PERIODE_COURANTE_DE_L_HORLOGE \ ,ASD2(objet,vitesse,dy) \ ) \ ,AXPB(ASD1(acceleration_due_a_la_force_de_Lorentz,dz) \ ,PERIODE_COURANTE_DE_L_HORLOGE \ ,ASD2(objet,vitesse,dz) \ ) \ ); \ /* Application de la force de Lorentz appliquee a l'objet courant, c'est-a-dire modification */ \ /* de la trajectoire suivant la regle : */ \ /* */ \ /* */ \ /* --> --> ---> --> ------> */ \ /* V <-- V + dV = V + gamma .dt */ \ /* */ \ Eblock \ /* Deplacement d'un objet au cours d'une periode d'horloge et prise en compte d'un */ \ /* eventuel champ electro-magnetique... */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* D I S T A N C E S E P A R A N T D E U X P A R T I C U L E S : */ /* */ /*************************************************************************************************************************************/ #define pDISTANCE(particule1,particule2) \ RdisF3D(COORDONNEES(particule1,x) \ ,COORDONNEES(particule1,y) \ ,COORDONNEES(particule1,z) \ ,COORDONNEES(particule2,x) \ ,COORDONNEES(particule2,y) \ ,COORDONNEES(particule2,z) \ ) \ /* Calcul de la distance euclidienne separant deux particules. */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* D E F I N I T I O N D E L A M A S S E : */ /* */ /*************************************************************************************************************************************/ Dstruct01(_masse_grave ,DEFV(Float,masse) /* Definition de la masse d'une particule. */ ,NOM_VIDE ); Typedef(masse_grave,STRU(_masse_grave)) /* Definition de la masse. */ #define cMASSE(particule) \ ASI2(particule,masse,masse) \ /* Acces a la masse... */ #define MASSE_D_UNE_PARTICULE(particule,pm) \ Bblock \ EGAL(cMASSE(particule),pm); \ Eblock \ /* Mise en place de la masse d'une particule. */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* D E F I N I T I O N D E L A V A L E U R D E L A M A S S E : */ /* */ /*************************************************************************************************************************************/ #define MASSE_indefinie \ FU \ /* Definition d'une masse indefinie ; on choisit (1) afin de l'utiliser comme si elle */ \ /* n'existait pas. En fait elle n'est actuellement utilisee que lors du calcul de la */ \ /* force de Lorenz qui concerne donc les particules chargees... */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* D E F I N I T I O N D E L A C H A R G E E L E C T R I Q U E : */ /* */ /*************************************************************************************************************************************/ Dstruct01(_charge_electrique ,DEFV(Float,electrique) /* Definition de la charge electrique d'une particule. */ ,NOM_VIDE ); Typedef(charge_electrique,STRU(_charge_electrique)) /* Definition de la charge electrique. */ #define cCHARGE(particule) \ ASI2(particule,charge,electrique) \ /* Acces a la charge electrique d'une particule... */ #define CHARGE_D_UNE_PARTICULE(particule,pe) \ Bblock \ EGAL(cCHARGE(particule),pe); \ Eblock \ /* Mise en place de la charge electrique d'une particule. */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* D E F I N I T I O N D E L A V A L E U R D E L A C H A R G E E L E C T R I Q U E : */ /* */ /*************************************************************************************************************************************/ #define EXAGERATION_DE_LA_CHARGE_DES_ELECTRONS_ET_DES_ANTI_ELECTRONS_VIRTUELS \ GRO2(GRO10(FU)) DEFV(Local,DEFV(Float,INIT(exageration_de_la_charge_des_electrons_et_des_anti_electrons_virtuels ,EXAGERATION_DE_LA_CHARGE_DES_ELECTRONS_ET_DES_ANTI_ELECTRONS_VIRTUELS ) ) ); /* La charge des electrons VIRTUELs sera en general tres superieure a celle des electrons */ /* REELs. Ainsi, ils seront plus sensibles a la force de Lorentz, et donc sans reduire trop */ /* leur vitesse, leurs trajectoires seront tres courbees... */ #define CHARGE_indefinie \ FZERO \ /* Definition d'une charge electrique indefinie ; on choisit (0) afin d'eviter d'eventuels */ \ /* problemes arithmetiques avec (FLOT__UNDEF)... */ #define CHARGE_NEUTRE \ FZERO #define CHARGE_DE_L_ELECTRON_REEL \ NEGA(FU) #define CHARGE_DE_L_ANTI_ELECTRON_REEL \ NEGA(CHARGE_DE_L_ELECTRON_REEL) #define CHARGE_DE_L_ELECTRON_VIRTUEL \ MUL2(exageration_de_la_charge_des_electrons_et_des_anti_electrons_virtuels,CHARGE_DE_L_ELECTRON_REEL) #define CHARGE_DE_L_ANTI_ELECTRON_VIRTUEL \ NEGA(CHARGE_DE_L_ELECTRON_VIRTUEL) /* Definition de quelques charges electriques utiles... */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* D E F I N I T I O N D E L A C H A R G E D E C O U L E U R : */ /* */ /*************************************************************************************************************************************/ Dstruct03(_charge_de_couleur ,DEFV(Float,ROUGE) ,DEFV(Float,VERTE) ,DEFV(Float,BLEUE) /* 3 */ /* Definition de la charge de couleur d'une particule dans R. */ ,NOM_VIDE ); Typedef(charge_de_couleur,STRU(_charge_de_couleur)) /* Definition de la charge de couleur ; on notera qu'elle est representee par un vecteur, */ /* ce qui est correct pour les quarks, mais ce qui est incorrect pour les gluons qui en */ /* fait demanderaient des matrices 3x3. Cette supercherie est mise en place afin de */ /* simplifier le probleme de la conservation de la charge de couleur qui s'ecrira donc */ /* sous la forme d'une egalite vectorielle et non d'un produit vecteur-matrice... */ #define cCOULEUR(particule,RVB) \ ASI2(particule,couleur,RVB) \ /* Acces a l'une des composantes de la charge de couleur d'une particule... */ #define COULEUR_D_UNE_PARTICULE(particule,pr,pv,pb) \ Bblock \ EGAL(cCOULEUR(particule,ROUGE),pr); \ EGAL(cCOULEUR(particule,VERTE),pv); \ EGAL(cCOULEUR(particule,BLEUE),pb); \ Eblock \ /* Mise en place de la couleur (pr,pv,pb) d'une particule. */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* D E F I N I T I O N D E L A V A L E U R D E L A C H A R G E D E C O U L E U R : */ /* */ /*************************************************************************************************************************************/ #define COULEUR_indefinie \ FZERO \ /* Definition d'une charge de couleur indefinie ; on choisit (0) afin d'eviter d'eventuels */ \ /* problemes arithmetiques avec (FLOT__UNDEF)... */ #include xrq/nucleon.L5.L6.I" /* Definition de la valeur absolue des valeurs minimales et maximales des charges de */ /* couleur des particules (introduit sous cette forme le 20170125050905). */ #define ROUGE_indefinie \ COULEUR_indefinie %define ROUGE_min \ COULEUR_min /* Definition de la composante ROUGE de la charge de couleur. */ #define VERTE_indefinie \ COULEUR_indefinie %define VERTE_min \ COULEUR_min /* Definition de la composante VERTE de la charge de couleur. */ #define BLEUE_indefinie \ COULEUR_indefinie %define BLEUE_min \ COULEUR_min /* Definition de la composante BLEUE de la charge de couleur. */ #define CHARGE_DE_COULEUR_ROUGE(champ_ROUGE) \ HOMO(champ_ROUGE,ROUGE_min,ROUGE_max,COULEUR_min,COULEUR_max) #define CHARGE_DE_COULEUR_VERTE(champ_VERTE) \ HOMO(champ_VERTE,VERTE_min,VERTE_max,COULEUR_min,COULEUR_max) #define CHARGE_DE_COULEUR_BLEUE(champ_BLEUE) \ HOMO(champ_BLEUE,BLEUE_min,BLEUE_max,COULEUR_min,COULEUR_max) /* Pour passer d'un champ de couleur a une charge de couleur... */ #define NORMALISATION_DU_ROUGE(charge_ROUGE) \ __DENORMALISE_NIVEAU(charge_ROUGE) #define NORMALISATION_DU_VERTE(charge_VERTE) \ __DENORMALISE_NIVEAU(charge_VERTE) #define NORMALISATION_DU_BLEUE(charge_BLEUE) \ __DENORMALISE_NIVEAU(charge_BLEUE) /* Pour passer d'une charge de couleur a un niveau dans [NOIR,BLANC]. */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* C H O I X D U M O D E D E G E S T I O N D E S P A R T I C U L E S : */ /* */ /*************************************************************************************************************************************/ #nodefine FACON_DE_GERER_LES_ENSEMBLES_DE_PARTICULES_VERSION_01 \ /* Cette facon de gerer les ensembles de particules consiste a les placer dans des tableaux */ \ /* de structures de type adequat ('quark' ou 'gluon'). */ #define FACON_DE_GERER_LES_ENSEMBLES_DE_PARTICULES_VERSION_02 \ /* Cette facon de gerer les ensembles de particules consiste a faire de l'allocation */ \ /* dynamique de structures de type adequat ('quark' ou 'gluon'). */ =define _particule \ STRU(__particule) TypedefP(particule,_particule) TypedefS(A___particule,particule) /* Definition d'une particule. On notera que cette definition figure ici et avant les */ /* definitions 'Dstruct04(__particule,...)' ou 'Dstruct05(__particule,...)' ; la raison */ /* en est que 'Dstruct05(__particule,...)' est une definition recursive (a cause des */ /* chainages)... */ #ifdef FACON_DE_GERER_LES_ENSEMBLES_DE_PARTICULES_VERSION_02 DEFINITION_D_UNE_STRUCTURE_DE_CHAINAGE(liste,particule) /* Definition d'une structure de liste avec chainage avant et arriere... */ #Aifdef FACON_DE_GERER_LES_ENSEMBLES_DE_PARTICULES_VERSION_02 #Eifdef FACON_DE_GERER_LES_ENSEMBLES_DE_PARTICULES_VERSION_02 /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* D E F I N I T I O N D U V O I S I N A G E D ' U N E P A R T I C U L E Q U E L C O N Q U E : */ /* */ /*************************************************************************************************************************************/ Dstruct03(_voisinage ,DEFV(Logical,vide) ,DEFV(particule,POINTERs(voisine1)) ,DEFV(Float,distance1) ,NOM_VIDE ); Typedef(voisinage,STRU(_voisinage)) /* Definition du voisinage d'une particule defini par une liste sequentielle de particules */ /* voisines, ainsi que le carre des distances associees. Enfin, l'indicateur 'vide' precise */ /* si la liste contient quelque chose ('FAUX') ou est vide ('VRAI')... */ #define VOISINAGE_D_UNE_PARTICULE(particule) \ Bblock \ EGAL(ASI2(particule,voisines,vide),VRAI); \ EGAL(ASI2(particule,voisines,voisine1),PARTICULE_NON_DEFINIE); \ EGAL(ASI2(particule,voisines,distance1),F_INFINI); \ Eblock \ /* Initialisation du voisinage d'une particule telle que lorsqu'on en cree une alors que */ \ /* l'on parcourt la liste des particules, on ne risque pas de tester cette nouvelle en */ \ /* ce qui concerne les collisions... */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* D E F I N I T I O N D ' U N E P A R T I C U L E Q U E L C O N Q U E : */ /* */ /* */ /* Nota : */ /* */ /* Il faut 2 definitions 'Dstruct05(...)' */ /* et 'Dstruct06(...)' car en effet les '#ifdef' */ /* ne peuvent etre mis entre les arguments d'appel */ /* d'une procedure, puisque le nombre d'arguments */ /* ne peut etre variable... */ /* */ /* */ /* */ /*************************************************************************************************************************************/ DEFV(Local,DEFV(Positive,INIT(etiquettage_des_particules,ZERO))); /* Etiquette unique de la prochaine particule a creer... */ #ifdef FACON_DE_GERER_LES_ENSEMBLES_DE_PARTICULES_VERSION_01 Dstruct08(__particule ,DEFV(Positive,etiquette) /* Etiquette unique permettant de suivre au cours du temps une particule (par exemple dans */ /* la base de donnees geometriques). */ ,DEFV(Int,nature) /* Type de la particule (voir la liste 'types_de_particules'). */ ,DEFV(Int,saveur) /* Saveur de la particule ; rappelons que celle-ci n'a de sens que pour les quarks, et */ /* est alors choisie dans ((u,c,t),(d,s,b)) ; pour les gluons, elle n'a aucun sens, mais */ /* est fixee 'PAS_DE_SAVEUR' afin de simplifier les choses... */ ,DEFV(coordonnees,espace_temps) /* Position dans l'espace-temps du quark (si tant est que l'on puisse parler de "position" */ /* absolue" pour un objet quantique...). */ ,DEFV(masse_grave,masse) /* Definition de la masse d'une particule. */ ,DEFV(charge_electrique,charge) /* Definition de la charge electrique d'une particule. */ ,DEFV(charge_de_couleur,couleur) /* 3 */ /* Definition de la charge de couleur d'un quark dans R. */ ,DEFV(voisinage,voisines) /* Definition de la liste sequentielle des particules voisines. */ ,NOM_VIDE ); #Aifdef FACON_DE_GERER_LES_ENSEMBLES_DE_PARTICULES_VERSION_01 #Eifdef FACON_DE_GERER_LES_ENSEMBLES_DE_PARTICULES_VERSION_01 #ifdef FACON_DE_GERER_LES_ENSEMBLES_DE_PARTICULES_VERSION_02 Dstruct09(__particule ,DEFV(Positive,etiquette) /* Etiquette unique permettant de suivre au cours du temps une particule (par exemple dans */ /* la base de donnees geometriques). */ ,DEFV(liste,ensemble) /* Informations d'acces aux particules suivante et precedente. */ ,DEFV(Int,nature) /* Type de la particule (voir la liste 'types_de_particules'). */ ,DEFV(Int,saveur) /* Saveur de la particule ; rappelons que celle-ci n'a de sens que pour les quarks, et */ /* est alors choisie dans ((u,c,t),(d,s,b)) ; pour les gluons, elle n'a aucun sens, mais */ /* est fixee 'PAS_DE_SAVEUR' afin de simplifier les choses... */ ,DEFV(coordonnees,espace_temps) /* Position dans l'espace-temps du quark (si tant est que l'on puisse parler de "position" */ /* absolue" pour un objet quantique...). */ ,DEFV(masse_grave,masse) /* Definition de la masse d'une particule. */ ,DEFV(charge_electrique,charge) /* Definition de la charge electrique d'une particule. */ ,DEFV(charge_de_couleur,couleur) /* 3 */ /* Definition de la charge de couleur d'un quark dans R. */ ,DEFV(voisinage,voisines) /* Definition de la liste sequentielle des particules voisines. */ ,NOM_VIDE ); #Aifdef FACON_DE_GERER_LES_ENSEMBLES_DE_PARTICULES_VERSION_02 #Eifdef FACON_DE_GERER_LES_ENSEMBLES_DE_PARTICULES_VERSION_02 DenumeT18(PARTICULE_INEXISTANTE ,PARTICULE_NAISSANTE ,QUARK_REEL ,ANTI_QUARK_REEL ,QUARK_VIRTUEL ,ANTI_QUARK_VIRTUEL ,GLUON_REEL ,GLUON_VIRTUEL ,ELECTRON_REEL ,ANTI_ELECTRON_REEL ,ELECTRON_VIRTUEL ,ANTI_ELECTRON_VIRTUEL ,NEUTRINO_REEL ,NEUTRINO_VIRTUEL ,PHOTON_REEL ,PHOTON_VIRTUEL ,Z0_REEL ,Z0_VIRTUEL ,types_de_particules ) /* Types possibles des particules. ATTENTION, on notera qu'il n'y a pas de ";" a la suite */ /* de cette directive, car sinon, il se trouverait colle a la derniere definition... */ #define ETIQUETTE(particule) \ ASI1(particule,etiquette) \ /* Acces a l'etiquette d'une particule. */ #define NATURE(particule) \ ASI1(particule,nature) \ /* Acces a la nature d'une particule. */ #define NATURE_D_UNE_PARTICULE(particule,pn) \ Bblock \ EGAL(NATURE(particule),pn); \ Eblock \ /* Mise en place de la nature (pn) d'une particule. */ #define SAVEUR(particule) \ ASI1(particule,saveur) \ /* Acces a la saveur d'une particule. */ #define SAVEUR_D_UNE_PARTICULE(particule,ps) \ Bblock \ EGAL(SAVEUR(particule),ps); \ Eblock \ /* Mise en place de la saveur (ps) d'une particule, ce qui rappelons-le n'a de sens que */ \ /* pour les quarks, et encore pour les VIRTUELs, elle est choisie INDEFINIE... */ #define INITIALISATION_DE_LA_DUREE_DE_VIE_MOYENNE_D_UNE_PARTICULE(particule,qd) \ Bblock \ INITIALISATION_DE_LA_DUREE_DE_VIE_MOYENNE(ASI1(particule,espace_temps),qd); \ Eblock \ /* Initialisation de la duree de vie moyenne d'une particule. */ #define INITIALISATION_DE_LA_DATE_DE_NAISSANCE_D_UNE_PARTICULE(particule,qt) \ Bblock \ INITIALISATION_DE_LA_DATE_DE_NAISSANCE(ASI1(particule,espace_temps),qt); \ Eblock \ /* Initialisation de la date de naissance d'une particule. */ #define CONSERVATION_DE_LA_DATE_DE_NAISSANCE_D_UNE_PARTICULE(particuleD,particuleA) \ Bblock \ INITIALISATION_DE_LA_DATE_DE_NAISSANCE_D_UNE_PARTICULE(particuleA \ ,ASI2(particuleD,espace_temps,date_de_naissance) \ ); \ Eblock \ /* Conservation par 'particuleA' de la date de naissance de 'particuleD'... */ #define INITIALISATION_DE_LA_POSITION_INITIALE_D_UNE_PARTICULE(particule,position_initiale) \ Bblock \ INITIALISATION_DE_LA_POSITION_INITIALE(ASI1(particule,espace_temps),position_initiale); \ Eblock \ /* Initialisation de la position initiale d'une particule. */ #define INITIALISATION_DE_LA_POSITION_COURANTE_D_UNE_PARTICULE(particule) \ Bblock \ INITIALISATION_DE_LA_POSITION_COURANTE(ASI1(particule,espace_temps)); \ Eblock \ /* Initialisation de la position courante d'une particule a partir de sa position initiale. */ #define INITIALISATION_DE_LA_VITESSE_D_UNE_PARTICULE(particule,vitesse) \ Bblock \ INITIALISATION_DE_LA_VITESSE(ASI1(particule,espace_temps),vitesse); \ Eblock \ /* Initialisation de la vitesse d'une particule. */ #define INITIALISATION_DU_MOMENT_ANGULAIRE_D_UNE_PARTICULE(particule,moment_angulaire) \ Bblock \ INITIALISATION_DU_MOMENT_ANGULAIRE(ASI1(particule,espace_temps),moment_angulaire); \ Eblock \ /* Initialisation du moment angulaire d'une particule. */ #define DEPLACEMENT_D_UNE_PARTICULE(particule) \ Bblock \ DEPLACEMENT(ASI1(particule,espace_temps),cMASSE(particule),cCHARGE(particule)); \ Eblock \ /* Deplacement d'une particule au cours d'une periode d'horloge. */ #define DEFINITION_D_UNE_PARTICULE_QUELCONQUE(particule,pn,ps,pd,position_init,vitesse_init,moment_angulaire_init,pe,pr,pv,pb) \ Bblock \ EGAL(ETIQUETTE(particule),etiquettage_des_particules); \ INCR(etiquettage_des_particules,I); \ /* Mise en place et gestion de l'etiquettage des particules... */ \ NATURE_D_UNE_PARTICULE(particule,pn); \ /* La nature de la particule est pn, */ \ SAVEUR_D_UNE_PARTICULE(particule,ps); \ /* La saveur de la particule est ps, */ \ INITIALISATION_DE_LA_DUREE_DE_VIE_MOYENNE_D_UNE_PARTICULE(particule,pd); \ /* Memorisation de sa duree de vie moyenne a priori ; rappelons que celle-ci peut etre */ \ /* modifiee au cours de sa vie, et en particulier augmentee (c'est par exemple le cas des */ \ /* particules 'Q', 'AQ' ou 'G' qui son en attente de collisions apres une reponse positive */ \ /* de 'INTERCEPTION_PARTICULE_PAR_UN_GLUON(...)'). */ \ INITIALISATION_DE_LA_DATE_DE_NAISSANCE_D_UNE_PARTICULE(particule,temps_courant); \ /* Memorisation de sa date de naissance, */ \ INITIALISATION_DE_LA_POSITION_INITIALE_D_UNE_PARTICULE(particule,position_init); \ INITIALISATION_DE_LA_POSITION_COURANTE_D_UNE_PARTICULE(particule); \ /* Sa position initiale est (position_init), */ \ INITIALISATION_DE_LA_VITESSE_D_UNE_PARTICULE(particule,vitesse_init); \ /* Sa vitesse initiale est (vitesse_init), */ \ INITIALISATION_DU_MOMENT_ANGULAIRE_D_UNE_PARTICULE(particule,moment_angulaire_init); \ /* Son moment angulaire initial est (moment_angulaire_init), */ \ MASSE_D_UNE_PARTICULE(particule,MASSE_indefinie); \ /* Sa masse n'est pas definie et prise de valeur unitaire... */ \ CHARGE_D_UNE_PARTICULE(particule,pe); \ /* Sa charge electrique initiale est (pe). */ \ COULEUR_D_UNE_PARTICULE(particule,pr,pv,pb); \ /* Et sa couleur initiale est (pr,pv,pb). */ \ VOISINAGE_D_UNE_PARTICULE(particule); \ /* Enfin, son voisinage est initialise tel qu'elle n'ait pas de voisines... */ \ Eblock \ /* Definition initiale d'un quark quelconque (REEL ou VIRTUEL) */ #define SAVEUR_INDEFINIE \ CHOI(QUARK_SAVEUR_INDEFINIE,LEPTON_SAVEUR_INDEFINIE) \ /* Valeur arbitraire pour une saveur (au sens large) indefinie... */ #define PAS_DE_SAVEUR \ CHOI(QUARK_PAS_DE_SAVEUR,LEPTON_PAS_DE_SAVEUR) \ /* Valeur arbitraire pour une saveur qui n'a pas de sens... */ #define DUREE_DE_VIE_MOYENNE_INDEFINIE \ FZERO \ /* Valeur arbitraire de la duree de vie moyenne d'une particule indefinie. */ #define INITIALISATION_D_UNE_PARTICULE_INEXISTANTE(particule) \ Bblock \ DEFINITION_D_UNE_PARTICULE_QUELCONQUE(particule \ ,PARTICULE_INEXISTANTE \ ,SAVEUR_INDEFINIE \ ,DUREE_DE_VIE_MOYENNE_INDEFINIE \ ,position_indefinie \ ,vitesse_indefinie \ ,moment_angulaire_indefini \ ,CHARGE_indefinie \ ,ROUGE_min,VERTE_min,BLEUE_min \ ); \ Eblock \ /* Definition initiale d'une particule INEXISTANTe. */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* D E F I N I T I O N D E L A S A V E U R D E S D I F F E R E N T E S */ /* F A M I L L E S D E P A R T I C U L E S : */ /* */ /*************************************************************************************************************************************/ DenumeT13(QUARK_u ,QUARK_d ,QUARK_c ,QUARK_s ,QUARK_t ,QUARK_b ,QUARK_SAVEUR_INDEFINIE ,QUARK_PAS_DE_SAVEUR /* Saveurs possibles des quarks. On se souviendra que les six saveurs de quarks se rangent */ /* de deux facons possibles : */ /* */ /* 1-en 2 familles de 3 : (u,c,t) de charge +2/3, */ /* (d,s,b) de charge -1/3. */ /* */ /* 2-en 3 familles de 2 : (u,d) associee a l'electron, */ /* (c,s) associee au muon, */ /* (t,b) associee au tau. */ /* */ /* On notera que la 'QUARK_SAVEUR_INDEFINIE' est utilisee pour les quarks VIRTUELs dont on */ /* n'a pas encore fixe la saveur, alors que la 'PAS_DE_SAVEUR' est utilisee pour les gluons */ /* qui eux ne possedent pas cette propriete. ATTENTION, on notera qu'il n'y a pas de ";" a */ /* la suite de cette directive, car sinon, il se trouverait colle a la derniere definition. */ ,LEPTON_e ,LEPTON_m ,LEPTON_t ,LEPTON_SAVEUR_INDEFINIE ,LEPTON_PAS_DE_SAVEUR /* Saveurs possibles des electrons. On notera que cette notion n'est pas tres 'physique", */ /* mais a ete ajoutee afin de ne pas multiplier inutilement les diagrammes de Feynman */ /* relatifs aux leptons charges. Ainsi, partout ou l'on trouvera 'electron', il faudra */ /* en fait comprendre 'lepton charge' d'une certaine saveur ; il sera de meme pour les */ /* neutrinos... */ ,saveurs_des_particules ) /* ATTENTION, toutes les saveurs sont mise a l'interieur du meme 'DenumeT1??(...)' afin de */ /* pas avoir de problemes avec 'SAVE(...)' lors de l'edition de la base de donnees par */ /* 'BASE_DE_DONNEES(...)'. En effet, on a ici des "saveurs" qui valent la meme valeur */ /* (celles qui auraient le mem rang dans deux 'DenumeT1??(...)' paralleles... */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* D E F I N I T I O N D E L A " S A V E U R " D E S L E P T O N S : */ /* */ /*************************************************************************************************************************************/ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* D E F I N I T I O N D ' U N Q U A R K Q U E L C O N Q U E : */ /* */ /*************************************************************************************************************************************/ Typedef(quark,_particule) TypedefS(A___quark,quark) /* Definition d'un quark. */ Typedef(anti_quark,_particule) TypedefS(A___anti_quark,anti_quark) /* Definition d'un anti-quark. */ #define DEFINITION_D_UN_QUARK_QUELCONQUE(quark,qn,qs,qd,position_initiale,vitesse_initiale,moment_angulaire_initial,qr,qv,qb) \ Bblock \ DEFINITION_D_UNE_PARTICULE_QUELCONQUE(quark \ ,qn \ ,qs \ ,qd \ ,position_initiale \ ,vitesse_initiale \ ,moment_angulaire_initial \ ,CHARGE_indefinie \ ,qr,qv,qb \ ); \ Eblock \ /* Definition initiale d'un quark quelconque (REEL ou VIRTUEL) */ #define INITIALISATION_D_UN_QUARK_INEXISTANT(quark) \ Bblock \ INITIALISATION_D_UNE_PARTICULE_INEXISTANTE(quark); \ Eblock \ /* Definition initiale d'un quark INEXISTANT. */ #define INITIALISATION_D_UN_QUARK_REEL(quark,qs) \ Bblock \ DEFINITION_D_UN_QUARK_QUELCONQUE(quark \ ,QUARK_REEL \ ,qs \ ,duree_de_vie_moyenne_des_quarks_reels \ ,position_indefinie \ ,vitesse_indefinie \ ,moment_angulaire_indefini \ ,ROUGE_indefinie,VERTE_indefinie,BLEUE_indefinie \ ); \ Eblock \ /* Definition initiale d'un quark REEL. */ #define INITIALISATION_D_UN_ANTI_QUARK_REEL(anti_quark,qs) \ Bblock \ DEFINITION_D_UN_QUARK_QUELCONQUE(anti_quark \ ,ANTI_QUARK_REEL \ ,qs \ ,duree_de_vie_moyenne_des_anti_quarks_reels \ ,position_indefinie \ ,vitesse_indefinie \ ,moment_angulaire_indefini \ ,ROUGE_indefinie,VERTE_indefinie,BLEUE_indefinie \ ); \ Eblock \ /* Definition initiale d'un anti-quark REEL. */ #define INITIALISATION_D_UN_QUARK_VIRTUEL(quark,qs) \ Bblock \ DEFINITION_D_UN_QUARK_QUELCONQUE(quark \ ,QUARK_VIRTUEL \ ,qs \ ,duree_de_vie_moyenne_des_quarks_virtuels \ ,position_indefinie \ ,vitesse_indefinie \ ,moment_angulaire_indefini \ ,ROUGE_indefinie,VERTE_indefinie,BLEUE_indefinie \ ); \ Eblock \ /* Definition initiale d'un quark VIRTUEL. */ #define INITIALISATION_D_UN_ANTI_QUARK_VIRTUEL(anti_quark,qs) \ Bblock \ DEFINITION_D_UN_QUARK_QUELCONQUE(anti_quark \ ,ANTI_QUARK_VIRTUEL \ ,qs \ ,duree_de_vie_moyenne_des_anti_quarks_virtuels \ ,position_indefinie \ ,vitesse_indefinie \ ,moment_angulaire_indefini \ ,ROUGE_indefinie,VERTE_indefinie,BLEUE_indefinie \ ); \ Eblock \ /* Definition initiale d'un anti-quark VIRTUEL. */ #define DEFINITION_D_UN_QUARK_REEL(quark,qs,position_initiale,vitesse_initiale,moment_angulaire_initial,qr,qv,qb) \ Bblock \ CREATION_D_UN_QUARK(quark,QUARK_REEL); \ /* Creation du quark REEL, */ \ DEFINITION_D_UN_QUARK_QUELCONQUE(quark \ ,QUARK_REEL \ ,qs \ ,duree_de_vie_moyenne_des_quarks_reels \ ,position_initiale \ ,vitesse_initiale \ ,moment_angulaire_initial \ ,qr,qv,qb \ ); \ /* Et initialisation... */ \ Eblock \ /* Creation et definition initiale d'un quark REEL. */ #define DEFINITION_D_UN_ANTI_QUARK_REEL(anti_quark,qs,position_initiale,vitesse_initiale,moment_angulaire_initial,qr,qv,qb) \ Bblock \ CREATION_D_UN_ANTI_QUARK(anti_quark,ANTI_QUARK_REEL); \ /* Creation de l'anti-quark REEL, */ \ DEFINITION_D_UN_QUARK_QUELCONQUE(anti_quark \ ,ANTI_QUARK_REEL \ ,qs \ ,duree_de_vie_moyenne_des_anti_quarks_reels \ ,position_initiale \ ,vitesse_initiale \ ,moment_angulaire_indefini \ ,qr,qv,qb \ ); \ /* Et initialisation... */ \ Eblock \ /* Creation et definition initiale d'un anti-quark REEL. */ #define DEFINITION_D_UN_QUARK_VIRTUEL(quark,qs,position_initiale,vitesse_initiale,qr,qv,qb) \ Bblock \ CREATION_D_UN_QUARK(quark,QUARK_VIRTUEL); \ /* Creation du quark VIRTUEL, */ \ DEFINITION_D_UN_QUARK_QUELCONQUE(quark \ ,QUARK_VIRTUEL \ ,qs \ ,duree_de_vie_moyenne_des_quarks_virtuels \ ,position_initiale \ ,vitesse_initiale \ ,moment_angulaire_indefini \ ,qr,qv,qb \ ); \ /* Et initialisation... */ \ Eblock \ /* Creation et definition initiale d'un quark VIRTUEL. */ #define DEFINITION_D_UN_ANTI_QUARK_VIRTUEL(anti_quark,qs,position_initiale,vitesse_initiale,qr,qv,qb) \ Bblock \ CREATION_D_UN_ANTI_QUARK(anti_quark,ANTI_QUARK_VIRTUEL); \ /* Creation de l'anti-quark VIRTUEL, */ \ DEFINITION_D_UN_QUARK_QUELCONQUE(anti_quark \ ,ANTI_QUARK_VIRTUEL \ ,qs \ ,duree_de_vie_moyenne_des_anti_quarks_virtuels \ ,position_initiale \ ,vitesse_initiale \ ,moment_angulaire_indefini \ ,qr,qv,qb \ ); \ /* Et initialisation... */ \ Eblock \ /* Creation et definition initiale d'un anti-quark VIRTUEL. */ #define COULEUR_D_UN_QUARK_REEL(quark,qr,qv,qb) \ Bblock \ COULEUR_D_UNE_PARTICULE(quark,qr,qv,qb); \ Eblock \ /* Mise en place de la couleur (qr,qv,qb) d'un quark REEL. En effet, lors de la mise en */ \ /* place des quarks REELs par 'DEFINITION_DU_QUARK_REEL_ROUGE/VERTE/BLEUE', on ne peut */ \ /* simultanement definir leur charge de couleurs, car cette derniere reference les extrema */ \ /* du champ, qui sont eux-memes calcules a partir de la position des quarks REELs. Ainsi, */ \ /* en definissant 'DEFINITION_DU_QUARK_REEL_ROUGE' (le premier defini), il serait necessaire */ \ /* de connaitre les quarks REELs VERTE et BLEUE, alors que leur position n'est pas encore */ \ /* definie. Donc, on attendra d'avoir defini la position des 3 quarks REELs avant de fixer */ \ /* leur charge de couleur... */ #define COULEUR_D_UN_ANTI_QUARK_REEL(anti_quark,qr,qv,qb) \ Bblock \ COULEUR_D_UNE_PARTICULE(anti_quark,qr,qv,qb); \ Eblock \ /* Mise en place de la couleur (qr,qv,qb) d'un anti-quark REEL. En effet, lors de la mise en */ \ /* place des anti-quarks REELs on ne peut simultanement definir leur charge de couleurs, car */ \ /* cette derniere reference les extrema du champ, qui sont eux-memes calcules a partir de la */ \ /* position des particules REELles. */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* D E P L A C E M E N T D ' U N Q U A R K Q U E L C O N Q U E : */ /* */ /*************************************************************************************************************************************/ #define DUREE_DE_VIE_MOYENNE_DES_QUARKS_REELS \ GRO1(GRO16(PERIODE_INITIALE_DE_L_HORLOGE)) DEFV(Local,DEFV(Float,INIT(duree_de_vie_moyenne_des_quarks_reels,DUREE_DE_VIE_MOYENNE_DES_QUARKS_REELS))); /* Duree de vie moyenne des quarks (REELs). */ #define DUREE_DE_VIE_MOYENNE_DES_ANTI_QUARKS_REELS \ DUREE_DE_VIE_MOYENNE_DES_QUARKS_REELS DEFV(Local,DEFV(Float,INIT(duree_de_vie_moyenne_des_anti_quarks_reels,DUREE_DE_VIE_MOYENNE_DES_ANTI_QUARKS_REELS))); /* Duree de vie moyenne des anti-quarks (REELs). */ #define DUREE_DE_VIE_MOYENNE_DES_QUARKS_VIRTUELS \ GRO1(GRO16(PERIODE_INITIALE_DE_L_HORLOGE)) DEFV(Local,DEFV(Float,INIT(duree_de_vie_moyenne_des_quarks_virtuels,DUREE_DE_VIE_MOYENNE_DES_QUARKS_VIRTUELS))); /* Duree de vie moyenne des quarks (VIRTUELs). */ #define DUREE_DE_VIE_MOYENNE_DES_ANTI_QUARKS_VIRTUELS \ DUREE_DE_VIE_MOYENNE_DES_QUARKS_VIRTUELS DEFV(Local,DEFV(Float,INIT(duree_de_vie_moyenne_des_anti_quarks_virtuels,DUREE_DE_VIE_MOYENNE_DES_ANTI_QUARKS_VIRTUELS))); /* Duree de vie moyenne des anti-quarks (VIRTUELs). */ #define VITESSE_MOYENNE_DES_QUARKS_ET_DES_ANTI_QUARKS \ GRO6(FRA10(VITESSE_DE_LA_LUMIERE)) \ /* Module de la vitesse moyenne des quarks. */ #define DISPERSION_VITESSE_DES_QUARKS_ET_DES_ANTI_QUARKS \ GRO1(FRA10(VITESSE_DE_LA_LUMIERE)) \ /* Le module de la vitesse aleatoire des quarks sera choisie dans le segment : */ \ /* */ \ /* [VITESSE_MOYENNE_DES_QUARKS-DISPERSION_DE_LA_VITESSE_DES_QUARKS */ \ /* ,VITESSE_MOYENNE_DES_QUARKS+DISPERSION_DE_LA_VITESSE_DES_QUARKS]. */ #define DEPLACEMENT_D_UN_QUARK(quark) \ Bblock \ DEPLACEMENT_D_UNE_PARTICULE(quark); \ Eblock \ /* Deplacement d'un quark au cours d'une periode d'horloge. */ #define DEPLACEMENT_D_UN_ANTI_QUARK(anti_quark) \ Bblock \ DEPLACEMENT_D_UNE_PARTICULE(anti_quark); \ Eblock \ /* Deplacement d'un anti-quark au cours d'une periode d'horloge. */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* D E F I N I T I O N D ' U N G L U O N Q U E L C O N Q U E : */ /* */ /*************************************************************************************************************************************/ Typedef(gluon,_particule) TypedefS(A___gluon,gluon) /* Definition d'un gluon. */ #define DEFINITION_D_UN_GLUON_QUELCONQUE(gluon,gn,gd,position_initiale,vitesse_initiale,moment_angulaire_initial,gr,gv,gb) \ Bblock \ DEFINITION_D_UNE_PARTICULE_QUELCONQUE(gluon \ ,gn \ ,PAS_DE_SAVEUR \ ,gd \ ,position_initiale \ ,vitesse_initiale \ ,moment_angulaire_initial \ ,CHARGE_indefinie \ ,gr,gv,gb \ ); \ Eblock \ /* Definition initiale d'un gluon quelconque (VIRTUEL). */ #define INITIALISATION_D_UN_GLUON_INEXISTANT(gluon) \ Bblock \ INITIALISATION_D_UNE_PARTICULE_INEXISTANTE(gluon); \ Eblock \ /* Definition initiale d'un gluon INEXISTANT. */ #define INITIALISATION_D_UN_GLUON_REEL(gluon) \ Bblock \ DEFINITION_D_UN_GLUON_QUELCONQUE(gluon \ ,GLUON_REEL \ ,duree_de_vie_moyenne_des_gluons_reels \ ,position_indefinie \ ,vitesse_indefinie \ ,moment_angulaire_indefini \ ,ROUGE_min,VERTE_min,BLEUE_min \ ); \ Eblock \ /* Definition initiale d'un gluon REEL. */ #define INITIALISATION_D_UN_GLUON_VIRTUEL(gluon) \ Bblock \ DEFINITION_D_UN_GLUON_QUELCONQUE(gluon \ ,GLUON_VIRTUEL \ ,duree_de_vie_moyenne_des_gluons_virtuels \ ,position_indefinie \ ,vitesse_indefinie \ ,moment_angulaire_indefini \ ,ROUGE_min,VERTE_min,BLEUE_min \ ); \ Eblock \ /* Definition initiale d'un gluon VIRTUEL. */ #define DEFINITION_D_UN_GLUON_REEL(gluon,position_initiale,vitesse_initiale,gr,gv,gb) \ Bblock \ CREATION_D_UN_GLUON(gluon,GLUON_REEL); \ /* Creation du gluon REEL, */ \ DEFINITION_D_UN_GLUON_QUELCONQUE(gluon \ ,GLUON_REEL \ ,duree_de_vie_moyenne_des_gluons_reels \ ,position_initiale \ ,vitesse_initiale \ ,moment_angulaire_indefini \ ,gr,gv,gb \ ); \ /* Et initialisation... */ \ Eblock \ /* Creation et definition initiale d'un gluon REEL. */ #define DEFINITION_D_UN_GLUON_VIRTUEL(gluon,position_initiale,vitesse_initiale,gr,gv,gb) \ Bblock \ CREATION_D_UN_GLUON(gluon,GLUON_VIRTUEL); \ /* Creation du gluon VIRTUEL, */ \ DEFINITION_D_UN_GLUON_QUELCONQUE(gluon \ ,GLUON_VIRTUEL \ ,duree_de_vie_moyenne_des_gluons_virtuels \ ,position_initiale \ ,vitesse_initiale \ ,moment_angulaire_indefini \ ,gr,gv,gb \ ); \ /* Et initialisation... */ \ Eblock \ /* Creation et definition initiale d'un gluon VIRTUEL. */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* D E P L A C E M E N T D ' U N G L U O N Q U E L C O N Q U E : */ /* */ /*************************************************************************************************************************************/ #define DUREE_DE_VIE_MOYENNE_DES_GLUONS_REELS \ GRO1(GRO16(PERIODE_INITIALE_DE_L_HORLOGE)) DEFV(Local,DEFV(Float,INIT(duree_de_vie_moyenne_des_gluons_reels,DUREE_DE_VIE_MOYENNE_DES_GLUONS_REELS))); /* Duree de vie moyenne des gluons REELs */ #define DUREE_DE_VIE_MOYENNE_DES_GLUONS_VIRTUELS \ GRO1(GRO16(PERIODE_INITIALE_DE_L_HORLOGE)) DEFV(Local,DEFV(Float,INIT(duree_de_vie_moyenne_des_gluons_virtuels,DUREE_DE_VIE_MOYENNE_DES_GLUONS_VIRTUELS))); /* Duree de vie moyenne des gluons VIRTUELs */ #define VITESSE_DES_GLUONS \ VITESSE_DE_LA_LUMIERE \ /* Module de la vitesse des gluons. */ #define DEPLACEMENT_D_UN_GLUON(gluon) \ Bblock \ DEPLACEMENT_D_UNE_PARTICULE(gluon); \ Eblock \ /* Deplacement d'un gluon au cours d'une periode d'horloge. */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* D E F I N I T I O N D ' U N E L E C T R O N Q U E L C O N Q U E : */ /* */ /*************************************************************************************************************************************/ Typedef(electron,_particule) TypedefS(A___electron,electron) /* Definition d'un electron. */ Typedef(anti_electron,_particule) TypedefS(A___anti_electron,anti_electron) /* Definition d'un anti-electron. */ Typedef(electron_ou_anti_electron,_particule) TypedefS(A___electron_ou_anti_electron,electron_ou_anti_electron) /* Definition d'un electron ou d'un anti-electron (utilise lors de recherche de particules */ /* pour une interception... */ #define DEFINITION_D_UN_ELECTRON_QUELCONQUE(electron,en,es,ed,position_initiale,vitesse_initiale,moment_angulaire_initial) \ Bblock \ DEFINITION_D_UNE_PARTICULE_QUELCONQUE(electron \ ,en \ ,es \ ,ed \ ,position_initiale \ ,vitesse_initiale \ ,moment_angulaire_initial \ ,CHARGE_indefinie \ ,ROUGE_indefinie,VERTE_indefinie,BLEUE_indefinie \ ); \ Eblock \ /* Definition initiale d'un electron quelconque (REEL ou VIRTUEL) */ #define INITIALISATION_D_UN_ELECTRON_INEXISTANT(electron) \ Bblock \ INITIALISATION_D_UNE_PARTICULE_INEXISTANTE(electron); \ Eblock \ /* Definition initiale d'un electron INEXISTANT. */ #define INITIALISATION_D_UN_ELECTRON_REEL(electron,es) \ Bblock \ DEFINITION_D_UN_ELECTRON_QUELCONQUE(electron \ ,ELECTRON_REEL \ ,es \ ,duree_de_vie_moyenne_des_electrons_reels \ ,position_indefinie \ ,vitesse_indefinie \ ,moment_angulaire_indefini \ ); \ CHARGE_D_UNE_PARTICULE(electron \ ,CHARGE_DE_L_ELECTRON_REEL \ ); \ COULEUR_D_UNE_PARTICULE(electron \ ,COMPOSANTE_ROUGE_D_UN_ELECTRON_REEL_OU_VIRTUEL \ ,COMPOSANTE_VERTE_D_UN_ELECTRON_REEL_OU_VIRTUEL \ ,COMPOSANTE_BLEUE_D_UN_ELECTRON_REEL_OU_VIRTUEL \ ); \ Eblock \ /* Definition initiale d'un electron REEL. */ #define INITIALISATION_D_UN_ANTI_ELECTRON_REEL(anti_electron,es) \ Bblock \ DEFINITION_D_UN_ELECTRON_QUELCONQUE(anti_electron \ ,ANTI_ELECTRON_REEL \ ,es \ ,duree_de_vie_moyenne_des_anti_electrons_reels \ ,position_indefinie \ ,vitesse_indefinie \ ,moment_angulaire_indefini \ ); \ CHARGE_D_UNE_PARTICULE(anti_electron \ ,CHARGE_DE_L_ANTI_ELECTRON_REEL \ ); \ COULEUR_D_UNE_PARTICULE(anti_electron \ ,COMPOSANTE_ROUGE_D_UN_ANTI_ELECTRON_REEL_OU_VIRTUEL \ ,COMPOSANTE_VERTE_D_UN_ANTI_ELECTRON_REEL_OU_VIRTUEL \ ,COMPOSANTE_BLEUE_D_UN_ANTI_ELECTRON_REEL_OU_VIRTUEL \ ); \ Eblock \ /* Definition initiale d'un anti-electron REEL. */ #define INITIALISATION_D_UN_ELECTRON_VIRTUEL(electron,es) \ Bblock \ DEFINITION_D_UN_ELECTRON_QUELCONQUE(electron \ ,ELECTRON_VIRTUEL \ ,es \ ,duree_de_vie_moyenne_des_electrons_virtuels \ ,position_indefinie \ ,vitesse_indefinie \ ,moment_angulaire_indefini \ ); \ CHARGE_D_UNE_PARTICULE(electron \ ,CHARGE_DE_L_ELECTRON_VIRTUEL \ ); \ COULEUR_D_UNE_PARTICULE(electron \ ,COMPOSANTE_ROUGE_D_UN_ELECTRON_REEL_OU_VIRTUEL \ ,COMPOSANTE_VERTE_D_UN_ELECTRON_REEL_OU_VIRTUEL \ ,COMPOSANTE_BLEUE_D_UN_ELECTRON_REEL_OU_VIRTUEL \ ); \ Eblock \ /* Definition initiale d'un electron VIRTUEL. */ #define INITIALISATION_D_UN_ANTI_ELECTRON_VIRTUEL(anti_electron,es) \ Bblock \ DEFINITION_D_UN_ELECTRON_QUELCONQUE(anti_electron \ ,ANTI_ELECTRON_VIRTUEL \ ,es \ ,duree_de_vie_moyenne_des_anti_electrons_virtuels \ ,position_indefinie \ ,vitesse_indefinie \ ,moment_angulaire_indefini \ ); \ CHARGE_D_UNE_PARTICULE(anti_electron \ ,CHARGE_DE_L_ANTI_ELECTRON_VIRTUEL \ ); \ COULEUR_D_UNE_PARTICULE(anti_electron \ ,COMPOSANTE_ROUGE_D_UN_ANTI_ELECTRON_REEL_OU_VIRTUEL \ ,COMPOSANTE_VERTE_D_UN_ANTI_ELECTRON_REEL_OU_VIRTUEL \ ,COMPOSANTE_BLEUE_D_UN_ANTI_ELECTRON_REEL_OU_VIRTUEL \ ); \ Eblock \ /* Definition initiale d'un anti-electron VIRTUEL. */ #define DEFINITION_D_UN_ELECTRON_REEL(electron,es,position_initiale,vitesse_initiale,moment_angulaire_initial) \ Bblock \ CREATION_D_UN_ELECTRON(electron,ELECTRON_REEL); \ /* Creation du electron REEL, */ \ DEFINITION_D_UN_ELECTRON_QUELCONQUE(electron \ ,ELECTRON_REEL \ ,es \ ,duree_de_vie_moyenne_des_electrons_reels \ ,position_initiale \ ,vitesse_initiale \ ,moment_angulaire_initial \ ); \ CHARGE_D_UNE_PARTICULE(electron \ ,CHARGE_DE_L_ELECTRON_REEL \ ); \ COULEUR_D_UNE_PARTICULE(electron \ ,COMPOSANTE_ROUGE_D_UN_ELECTRON_REEL_OU_VIRTUEL \ ,COMPOSANTE_VERTE_D_UN_ELECTRON_REEL_OU_VIRTUEL \ ,COMPOSANTE_BLEUE_D_UN_ELECTRON_REEL_OU_VIRTUEL \ ); \ /* Et initialisation... */ \ Eblock \ /* Creation et definition initiale d'un electron REEL. */ #define DEFINITION_D_UN_ANTI_ELECTRON_REEL(anti_electron,es,position_initiale,vitesse_initiale,moment_angulaire_initial) \ Bblock \ CREATION_D_UN_ANTI_ELECTRON(anti_electron,ANTI_ELECTRON_REEL); \ /* Creation de l'anti-electron REEL, */ \ DEFINITION_D_UN_ELECTRON_QUELCONQUE(anti_electron \ ,ANTI_ELECTRON_REEL \ ,es \ ,duree_de_vie_moyenne_des_anti_electrons_reels \ ,position_initiale \ ,vitesse_initiale \ ,moment_angulaire_initial \ ); \ CHARGE_D_UNE_PARTICULE(anti_electron \ ,CHARGE_DE_L_ANTI_ELECTRON_REEL \ ); \ COULEUR_D_UNE_PARTICULE(anti_electron \ ,COMPOSANTE_ROUGE_D_UN_ANTI_ELECTRON_REEL_OU_VIRTUEL \ ,COMPOSANTE_VERTE_D_UN_ANTI_ELECTRON_REEL_OU_VIRTUEL \ ,COMPOSANTE_BLEUE_D_UN_ANTI_ELECTRON_REEL_OU_VIRTUEL \ ); \ /* Et initialisation... */ \ Eblock \ /* Creation et definition initiale d'un anti-electron REEL. */ #define DEFINITION_D_UN_ELECTRON_VIRTUEL(electron,es,position_initiale,vitesse_initiale) \ Bblock \ CREATION_D_UN_ELECTRON(electron,ELECTRON_VIRTUEL); \ /* Creation du electron VIRTUEL, */ \ DEFINITION_D_UN_ELECTRON_QUELCONQUE(electron \ ,ELECTRON_VIRTUEL \ ,es \ ,duree_de_vie_moyenne_des_electrons_virtuels \ ,position_initiale \ ,vitesse_initiale \ ,moment_angulaire_indefini \ ); \ CHARGE_D_UNE_PARTICULE(electron \ ,CHARGE_DE_L_ELECTRON_VIRTUEL \ ); \ COULEUR_D_UNE_PARTICULE(electron \ ,COMPOSANTE_ROUGE_D_UN_ELECTRON_REEL_OU_VIRTUEL \ ,COMPOSANTE_VERTE_D_UN_ELECTRON_REEL_OU_VIRTUEL \ ,COMPOSANTE_BLEUE_D_UN_ELECTRON_REEL_OU_VIRTUEL \ ); \ /* Et initialisation... */ \ Eblock \ /* Creation et definition initiale d'un electron VIRTUEL. */ #define DEFINITION_D_UN_ANTI_ELECTRON_VIRTUEL(anti_electron,es,position_initiale,vitesse_initiale) \ Bblock \ CREATION_D_UN_ANTI_ELECTRON(anti_electron,ANTI_ELECTRON_VIRTUEL); \ /* Creation de l'anti-electron VIRTUEL, */ \ DEFINITION_D_UN_ELECTRON_QUELCONQUE(anti_electron \ ,ANTI_ELECTRON_VIRTUEL \ ,es \ ,duree_de_vie_moyenne_des_anti_electrons_virtuels \ ,position_initiale \ ,vitesse_initiale \ ,moment_angulaire_indefini \ ); \ CHARGE_D_UNE_PARTICULE(anti_electron \ ,CHARGE_DE_L_ANTI_ELECTRON_VIRTUEL \ ); \ COULEUR_D_UNE_PARTICULE(anti_electron \ ,COMPOSANTE_ROUGE_D_UN_ANTI_ELECTRON_REEL_OU_VIRTUEL \ ,COMPOSANTE_VERTE_D_UN_ANTI_ELECTRON_REEL_OU_VIRTUEL \ ,COMPOSANTE_BLEUE_D_UN_ANTI_ELECTRON_REEL_OU_VIRTUEL \ ); \ /* Et initialisation... */ \ Eblock \ /* Creation et definition initiale d'un anti-electron VIRTUEL. */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* D E P L A C E M E N T D ' U N E L E C T R O N Q U E L C O N Q U E : */ /* */ /*************************************************************************************************************************************/ #define DUREE_DE_VIE_MOYENNE_DES_ELECTRONS_REELS \ GRO10(GRO16(PERIODE_INITIALE_DE_L_HORLOGE)) DEFV(Local,DEFV(Float,INIT(duree_de_vie_moyenne_des_electrons_reels,DUREE_DE_VIE_MOYENNE_DES_ELECTRONS_REELS))); /* Duree de vie moyenne des electrons (REELs). On notera que la duree de vie moyenne des */ /* electrons reels ('DUREE_DE_VIE_MOYENNE_DES_ELECTRONS_REELS') est definie superieure a */ /* celle des electrons virtuels ('DUREE_DE_VIE_MOYENNE_DES_ELECTRONS_VIRTUELS') afin de */ /* limiter la production initiale de photons par les electrons reels... */ #define DUREE_DE_VIE_MOYENNE_DES_ANTI_ELECTRONS_REELS \ DUREE_DE_VIE_MOYENNE_DES_ELECTRONS_REELS DEFV(Local,DEFV(Float,INIT(duree_de_vie_moyenne_des_anti_electrons_reels,DUREE_DE_VIE_MOYENNE_DES_ANTI_ELECTRONS_REELS))); /* Duree de vie moyenne des anti-electrons (REELs). */ #define DUREE_DE_VIE_MOYENNE_DES_ELECTRONS_VIRTUELS \ GRO1(GRO16(PERIODE_INITIALE_DE_L_HORLOGE)) DEFV(Local,DEFV(Float,INIT(duree_de_vie_moyenne_des_electrons_virtuels,DUREE_DE_VIE_MOYENNE_DES_ELECTRONS_VIRTUELS))); /* Duree de vie moyenne des electrons (VIRTUELs). */ #define DUREE_DE_VIE_MOYENNE_DES_ANTI_ELECTRONS_VIRTUELS \ DUREE_DE_VIE_MOYENNE_DES_ELECTRONS_VIRTUELS DEFV(Local,DEFV(Float,INIT(duree_de_vie_moyenne_des_anti_electrons_virtuels,DUREE_DE_VIE_MOYENNE_DES_ANTI_ELECTRONS_VIRTUELS))); /* Duree de vie moyenne des anti-electrons (VIRTUELs). */ #define VITESSE_MOYENNE_DES_ELECTRONS_ET_DES_ANTI_ELECTRONS \ GRO2(FRA2(FRA15(VITESSE_DE_LA_LUMIERE))) DEFV(Local,DEFV(Float,INIT(vitesse_moyenne_des_electrons_et_des_anti_electrons,VITESSE_MOYENNE_DES_ELECTRONS_ET_DES_ANTI_ELECTRONS))); /* Module de la vitesse moyenne des electrons. ATTENTION, la valeur de ce parametre */ /* conditionne celle de 'ADOLESCENCE_D_UNE_PARTICULE' pour '$xrq/di_elec.L0$K' dans */ /* '$xrq/di_elec.LH$I'. On notera qu'exceptionnellement cette valeur est parametrable, et */ /* ce facon a "ajuster" les images aux diagrammes de Feynman... */ #define DISPERSION_VITESSE_DES_ELECTRONS_ET_DES_ANTI_ELECTRONS \ GRO1(FRA16(vitesse_moyenne_des_electrons_et_des_anti_electrons)) \ /* Le module de la vitesse aleatoire des electrons sera choisie dans le segment : */ \ /* */ \ /* [VITESSE_MOYENNE_DES_ELECTRONS-DISPERSION_DE_LA_VITESSE_DES_ELECTRONS */ \ /* ,VITESSE_MOYENNE_DES_ELECTRONS+DISPERSION_DE_LA_VITESSE_DES_ELECTRONS]. */ #define DEPLACEMENT_D_UN_ELECTRON(electron) \ Bblock \ DEPLACEMENT_D_UNE_PARTICULE(electron); \ Eblock \ /* Deplacement d'un electron au cours d'une periode d'horloge. */ #define DEPLACEMENT_D_UN_ANTI_ELECTRON(anti_electron) \ Bblock \ DEPLACEMENT_D_UNE_PARTICULE(anti_electron); \ Eblock \ /* Deplacement d'un anti-electron au cours d'une periode d'horloge. */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* D E F I N I T I O N D ' U N N E U T R I N O Q U E L C O N Q U E : */ /* */ /*************************************************************************************************************************************/ Typedef(neutrino,_particule) TypedefS(A___neutrino,neutrino) /* Definition d'un neutrino. */ #define DEFINITION_D_UN_NEUTRINO_QUELCONQUE(neutrino,nn,ns,nd,position_initiale,vitesse_initiale,moment_angulaire_initial) \ Bblock \ DEFINITION_D_UNE_PARTICULE_QUELCONQUE(neutrino \ ,nn \ ,ns \ ,nd \ ,position_initiale \ ,vitesse_initiale \ ,moment_angulaire_initial \ ,CHARGE_NEUTRE \ ,ROUGE_indefinie,VERTE_indefinie,BLEUE_indefinie \ ); \ Eblock \ /* Definition initiale d'un neutrino quelconque (VIRTUEL). */ #define INITIALISATION_D_UN_NEUTRINO_INEXISTANT(neutrino) \ Bblock \ INITIALISATION_D_UNE_PARTICULE_INEXISTANTE(neutrino); \ Eblock \ /* Definition initiale d'un neutrino INEXISTANT. */ #define INITIALISATION_D_UN_NEUTRINO_REEL(neutrino,ns) \ Bblock \ DEFINITION_D_UN_NEUTRINO_QUELCONQUE(neutrino \ ,NEUTRINO_REEL \ ,ns \ ,duree_de_vie_moyenne_des_neutrinos_reels \ ,position_indefinie \ ,vitesse_indefinie \ ,moment_angulaire_indefini \ ); \ COULEUR_D_UNE_PARTICULE(neutrino \ ,COMPOSANTE_ROUGE_D_UN_NEUTRINO_REEL_OU_VIRTUEL \ ,COMPOSANTE_VERTE_D_UN_NEUTRINO_REEL_OU_VIRTUEL \ ,COMPOSANTE_BLEUE_D_UN_NEUTRINO_REEL_OU_VIRTUEL \ ); \ Eblock \ /* Definition initiale d'un neutrino REEL. */ #define INITIALISATION_D_UN_NEUTRINO_VIRTUEL(neutrino,ns) \ Bblock \ DEFINITION_D_UN_NEUTRINO_QUELCONQUE(neutrino \ ,NEUTRINO_VIRTUEL \ ,ns \ ,duree_de_vie_moyenne_des_neutrinos_virtuels \ ,position_indefinie \ ,vitesse_indefinie \ ,moment_angulaire_indefini \ ); \ COULEUR_D_UNE_PARTICULE(neutrino \ ,COMPOSANTE_ROUGE_D_UN_NEUTRINO_REEL_OU_VIRTUEL \ ,COMPOSANTE_VERTE_D_UN_NEUTRINO_REEL_OU_VIRTUEL \ ,COMPOSANTE_BLEUE_D_UN_NEUTRINO_REEL_OU_VIRTUEL \ ); \ Eblock \ /* Definition initiale d'un neutrino VIRTUEL. */ #define DEFINITION_D_UN_NEUTRINO_REEL(neutrino,ns,position_initiale,vitesse_initiale) \ Bblock \ CREATION_D_UN_NEUTRINO(neutrino,NEUTRINO_REEL); \ /* Creation du neutrino REEL, */ \ DEFINITION_D_UN_NEUTRINO_QUELCONQUE(neutrino \ ,NEUTRINO_REEL \ ,ns \ ,duree_de_vie_moyenne_des_neutrinos_reels \ ,position_initiale \ ,vitesse_initiale \ ,moment_angulaire_indefini \ ); \ COULEUR_D_UNE_PARTICULE(neutrino \ ,COMPOSANTE_ROUGE_D_UN_NEUTRINO_REEL_OU_VIRTUEL \ ,COMPOSANTE_VERTE_D_UN_NEUTRINO_REEL_OU_VIRTUEL \ ,COMPOSANTE_BLEUE_D_UN_NEUTRINO_REEL_OU_VIRTUEL \ ); \ /* Et initialisation... */ \ Eblock \ /* Creation et definition initiale d'un neutrino REEL. */ #define DEFINITION_D_UN_NEUTRINO_VIRTUEL(neutrino,ns,position_initiale,vitesse_initiale) \ Bblock \ CREATION_D_UN_NEUTRINO(neutrino,NEUTRINO_VIRTUEL); \ /* Creation du neutrino VIRTUEL, */ \ DEFINITION_D_UN_NEUTRINO_QUELCONQUE(neutrino \ ,NEUTRINO_VIRTUEL \ ,ns \ ,duree_de_vie_moyenne_des_neutrinos_virtuels \ ,position_initiale \ ,vitesse_initiale \ ,moment_angulaire_indefini \ ); \ COULEUR_D_UNE_PARTICULE(neutrino \ ,COMPOSANTE_ROUGE_D_UN_NEUTRINO_REEL_OU_VIRTUEL \ ,COMPOSANTE_VERTE_D_UN_NEUTRINO_REEL_OU_VIRTUEL \ ,COMPOSANTE_BLEUE_D_UN_NEUTRINO_REEL_OU_VIRTUEL \ ); \ /* Et initialisation... */ \ Eblock \ /* Creation et definition initiale d'un neutrino VIRTUEL. */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* D E P L A C E M E N T D ' U N N E U T R I N O Q U E L C O N Q U E : */ /* */ /*************************************************************************************************************************************/ #define DUREE_DE_VIE_MOYENNE_DES_NEUTRINOS_REELS \ GRO2(GRO16(PERIODE_INITIALE_DE_L_HORLOGE)) DEFV(Local,DEFV(Float,INIT(duree_de_vie_moyenne_des_neutrinos_reels,DUREE_DE_VIE_MOYENNE_DES_NEUTRINOS_REELS))); /* Duree de vie moyenne des neutrinos REELs */ #define DUREE_DE_VIE_MOYENNE_DES_NEUTRINOS_VIRTUELS \ GRO1(GRO16(PERIODE_INITIALE_DE_L_HORLOGE)) DEFV(Local,DEFV(Float,INIT(duree_de_vie_moyenne_des_neutrinos_virtuels,DUREE_DE_VIE_MOYENNE_DES_NEUTRINOS_VIRTUELS))); /* Duree de vie moyenne des neutrinos VIRTUELs */ #define VITESSE_MOYENNE_DES_NEUTRINOS \ GRO8(FRA10(VITESSE_DE_LA_LUMIERE)) \ /* Module de la vitesse moyenne des neutrinos. ATTENTION, la valeur de ce parametre */ \ /* conditionne celle de 'ADOLESCENCE_D_UNE_PARTICULE' pour '$xrq/di_elec.L0$K'... */ #define DISPERSION_VITESSE_DES_NEUTRINOS \ GRO1(FRA4(VITESSE_MOYENNE_DES_NEUTRINOS)) \ /* Le module de la vitesse aleatoire des neutrinos sera choisie dans le segment : */ \ /* */ \ /* [VITESSE_MOYENNE_DES_NEUTRINOS-DISPERSION_VITESSE_DES_NEUTRINOS */ \ /* ,VITESSE_MOYENNE_DES_NEUTRINOS+DISPERSION_VITESSE_DES_NEUTRINOS]. */ #define DEPLACEMENT_D_UN_NEUTRINO(neutrino) \ Bblock \ DEPLACEMENT_D_UNE_PARTICULE(neutrino); \ Eblock \ /* Deplacement d'un neutrino au cours d'une periode d'horloge. */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* D E F I N I T I O N D ' U N P H O T O N Q U E L C O N Q U E : */ /* */ /*************************************************************************************************************************************/ Typedef(photon,_particule) TypedefS(A___photon,photon) /* Definition d'un photon. */ #define DEFINITION_D_UN_PHOTON_QUELCONQUE(photon,pn,pd,position_initiale,vitesse_initiale,moment_angulaire_initial) \ Bblock \ DEFINITION_D_UNE_PARTICULE_QUELCONQUE(photon \ ,pn \ ,PAS_DE_SAVEUR \ ,pd \ ,position_initiale \ ,vitesse_initiale \ ,moment_angulaire_initial \ ,CHARGE_NEUTRE \ ,ROUGE_indefinie,VERTE_indefinie,BLEUE_indefinie \ ); \ Eblock \ /* Definition initiale d'un photon quelconque (VIRTUEL). */ #define INITIALISATION_D_UN_PHOTON_INEXISTANT(photon) \ Bblock \ INITIALISATION_D_UNE_PARTICULE_INEXISTANTE(photon); \ Eblock \ /* Definition initiale d'un photon INEXISTANT. */ #define INITIALISATION_D_UN_PHOTON_REEL(photon) \ Bblock \ DEFINITION_D_UN_PHOTON_QUELCONQUE(photon \ ,PHOTON_REEL \ ,duree_de_vie_moyenne_des_photons_reels \ ,position_indefinie \ ,vitesse_indefinie \ ,moment_angulaire_indefini \ ); \ COULEUR_D_UNE_PARTICULE(photon \ ,COMPOSANTE_ROUGE_D_UN_PHOTON_REEL_OU_VIRTUEL \ ,COMPOSANTE_VERTE_D_UN_PHOTON_REEL_OU_VIRTUEL \ ,COMPOSANTE_BLEUE_D_UN_PHOTON_REEL_OU_VIRTUEL \ ); \ Eblock \ /* Definition initiale d'un photon REEL. */ #define INITIALISATION_D_UN_PHOTON_VIRTUEL(photon) \ Bblock \ DEFINITION_D_UN_PHOTON_QUELCONQUE(photon \ ,PHOTON_VIRTUEL \ ,duree_de_vie_moyenne_des_photons_virtuels \ ,position_indefinie \ ,vitesse_indefinie \ ,moment_angulaire_indefini \ ); \ COULEUR_D_UNE_PARTICULE(photon \ ,COMPOSANTE_ROUGE_D_UN_PHOTON_REEL_OU_VIRTUEL \ ,COMPOSANTE_VERTE_D_UN_PHOTON_REEL_OU_VIRTUEL \ ,COMPOSANTE_BLEUE_D_UN_PHOTON_REEL_OU_VIRTUEL \ ); \ Eblock \ /* Definition initiale d'un photon VIRTUEL. */ #define DEFINITION_D_UN_PHOTON_REEL(photon,position_initiale,vitesse_initiale) \ Bblock \ CREATION_D_UN_PHOTON(photon,PHOTON_REEL); \ /* Creation du photon REEL, */ \ DEFINITION_D_UN_PHOTON_QUELCONQUE(photon \ ,PHOTON_REEL \ ,duree_de_vie_moyenne_des_photons_reels \ ,position_initiale \ ,vitesse_initiale \ ,moment_angulaire_indefini \ ); \ COULEUR_D_UNE_PARTICULE(photon \ ,COMPOSANTE_ROUGE_D_UN_PHOTON_REEL_OU_VIRTUEL \ ,COMPOSANTE_VERTE_D_UN_PHOTON_REEL_OU_VIRTUEL \ ,COMPOSANTE_BLEUE_D_UN_PHOTON_REEL_OU_VIRTUEL \ ); \ /* Et initialisation... */ \ Eblock \ /* Creation et definition initiale d'un photon REEL. */ #define DEFINITION_D_UN_PHOTON_VIRTUEL(photon,position_initiale,vitesse_initiale) \ Bblock \ CREATION_D_UN_PHOTON(photon,PHOTON_VIRTUEL); \ /* Creation du photon VIRTUEL, */ \ DEFINITION_D_UN_PHOTON_QUELCONQUE(photon \ ,PHOTON_VIRTUEL \ ,duree_de_vie_moyenne_des_photons_virtuels \ ,position_initiale \ ,vitesse_initiale \ ,moment_angulaire_indefini \ ); \ COULEUR_D_UNE_PARTICULE(photon \ ,COMPOSANTE_ROUGE_D_UN_PHOTON_REEL_OU_VIRTUEL \ ,COMPOSANTE_VERTE_D_UN_PHOTON_REEL_OU_VIRTUEL \ ,COMPOSANTE_BLEUE_D_UN_PHOTON_REEL_OU_VIRTUEL \ ); \ /* Et initialisation... */ \ Eblock \ /* Creation et definition initiale d'un photon VIRTUEL. */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* D E P L A C E M E N T D ' U N P H O T O N Q U E L C O N Q U E : */ /* */ /*************************************************************************************************************************************/ #define DUREE_DE_VIE_MOYENNE_DES_PHOTONS_REELS \ GRO16(GRO16(PERIODE_INITIALE_DE_L_HORLOGE)) DEFV(Local,DEFV(Float,INIT(duree_de_vie_moyenne_des_photons_reels,DUREE_DE_VIE_MOYENNE_DES_PHOTONS_REELS))); /* Duree de vie moyenne des photons REELs */ #define DUREE_DE_VIE_MOYENNE_DES_PHOTONS_VIRTUELS \ GRO1(GRO16(PERIODE_INITIALE_DE_L_HORLOGE)) DEFV(Local,DEFV(Float,INIT(duree_de_vie_moyenne_des_photons_virtuels,DUREE_DE_VIE_MOYENNE_DES_PHOTONS_VIRTUELS))); /* Duree de vie moyenne des photons VIRTUELs */ #define VITESSE_DES_PHOTONS \ VITESSE_DE_LA_LUMIERE \ /* Module de la vitesse des photons. */ #define DEPLACEMENT_D_UN_PHOTON(photon) \ Bblock \ DEPLACEMENT_D_UNE_PARTICULE(photon); \ Eblock \ /* Deplacement d'un photon au cours d'une periode d'horloge. */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* D E F I N I T I O N D ' U N Z 0 Q U E L C O N Q U E : */ /* */ /*************************************************************************************************************************************/ Typedef(z0,_particule) TypedefS(A___z0,z0) /* Definition d'un z0. */ #define DEFINITION_D_UN_Z0_QUELCONQUE(z0,pn,pd,position_initiale,vitesse_initiale,moment_angulaire_initial) \ Bblock \ DEFINITION_D_UNE_PARTICULE_QUELCONQUE(z0 \ ,pn \ ,PAS_DE_SAVEUR \ ,pd \ ,position_initiale \ ,vitesse_initiale \ ,moment_angulaire_initial \ ,CHARGE_NEUTRE \ ,ROUGE_indefinie,VERTE_indefinie,BLEUE_indefinie \ ); \ Eblock \ /* Definition initiale d'un z0 quelconque (VIRTUEL). */ #define INITIALISATION_D_UN_Z0_INEXISTANT(z0) \ Bblock \ INITIALISATION_D_UNE_PARTICULE_INEXISTANTE(z0); \ Eblock \ /* Definition initiale d'un z0 INEXISTANT. */ #define INITIALISATION_D_UN_Z0_REEL(z0) \ Bblock \ DEFINITION_D_UN_Z0_QUELCONQUE(z0 \ ,Z0_REEL \ ,duree_de_vie_moyenne_des_z0s_reels \ ,position_indefinie \ ,vitesse_indefinie \ ,moment_angulaire_indefini \ ); \ COULEUR_D_UNE_PARTICULE(z0 \ ,COMPOSANTE_ROUGE_D_UN_Z0_REEL_OU_VIRTUEL \ ,COMPOSANTE_VERTE_D_UN_Z0_REEL_OU_VIRTUEL \ ,COMPOSANTE_BLEUE_D_UN_Z0_REEL_OU_VIRTUEL \ ); \ Eblock \ /* Definition initiale d'un z0 REEL. */ #define INITIALISATION_D_UN_Z0_VIRTUEL(z0) \ Bblock \ DEFINITION_D_UN_Z0_QUELCONQUE(z0 \ ,Z0_VIRTUEL \ ,duree_de_vie_moyenne_des_z0s_virtuels \ ,position_indefinie \ ,vitesse_indefinie \ ,moment_angulaire_indefini \ ); \ COULEUR_D_UNE_PARTICULE(z0 \ ,COMPOSANTE_ROUGE_D_UN_Z0_REEL_OU_VIRTUEL \ ,COMPOSANTE_VERTE_D_UN_Z0_REEL_OU_VIRTUEL \ ,COMPOSANTE_BLEUE_D_UN_Z0_REEL_OU_VIRTUEL \ ); \ Eblock \ /* Definition initiale d'un z0 VIRTUEL. */ #define DEFINITION_D_UN_Z0_REEL(z0,position_initiale,vitesse_initiale) \ Bblock \ CREATION_D_UN_Z0(z0,Z0_REEL); \ /* Creation du z0 REEL, */ \ DEFINITION_D_UN_Z0_QUELCONQUE(z0 \ ,Z0_REEL \ ,duree_de_vie_moyenne_des_z0s_reels \ ,position_initiale \ ,vitesse_initiale \ ,moment_angulaire_indefini \ ); \ COULEUR_D_UNE_PARTICULE(z0 \ ,COMPOSANTE_ROUGE_D_UN_Z0_REEL_OU_VIRTUEL \ ,COMPOSANTE_VERTE_D_UN_Z0_REEL_OU_VIRTUEL \ ,COMPOSANTE_BLEUE_D_UN_Z0_REEL_OU_VIRTUEL \ ); \ /* Et initialisation... */ \ Eblock \ /* Creation et definition initiale d'un z0 REEL. */ #define DEFINITION_D_UN_Z0_VIRTUEL(z0,position_initiale,vitesse_initiale) \ Bblock \ CREATION_D_UN_Z0(z0,Z0_VIRTUEL); \ /* Creation du z0 VIRTUEL, */ \ DEFINITION_D_UN_Z0_QUELCONQUE(z0 \ ,Z0_VIRTUEL \ ,duree_de_vie_moyenne_des_z0s_virtuels \ ,position_initiale \ ,vitesse_initiale \ ,moment_angulaire_indefini \ ); \ COULEUR_D_UNE_PARTICULE(z0 \ ,COMPOSANTE_ROUGE_D_UN_Z0_REEL_OU_VIRTUEL \ ,COMPOSANTE_VERTE_D_UN_Z0_REEL_OU_VIRTUEL \ ,COMPOSANTE_BLEUE_D_UN_Z0_REEL_OU_VIRTUEL \ ); \ /* Et initialisation... */ \ Eblock \ /* Creation et definition initiale d'un z0 VIRTUEL. */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* D E P L A C E M E N T D ' U N Z 0 Q U E L C O N Q U E : */ /* */ /*************************************************************************************************************************************/ #define DUREE_DE_VIE_MOYENNE_DES_Z0S_REELS \ GRO1(GRO8(PERIODE_INITIALE_DE_L_HORLOGE)) DEFV(Local,DEFV(Float,INIT(duree_de_vie_moyenne_des_z0s_reels,DUREE_DE_VIE_MOYENNE_DES_Z0S_REELS))); /* Duree de vie moyenne des z0s REELs. Cette valeur est choisie faible afin de garantir */ /* la presence d'un evenement entre le neutrino REEL et l'electron REEL (lorsque tel est */ /* l'etat initial du modele...). */ #define DUREE_DE_VIE_MOYENNE_DES_Z0S_VIRTUELS \ GRO1(GRO16(PERIODE_INITIALE_DE_L_HORLOGE)) DEFV(Local,DEFV(Float,INIT(duree_de_vie_moyenne_des_z0s_virtuels,DUREE_DE_VIE_MOYENNE_DES_Z0S_VIRTUELS))); /* Duree de vie moyenne des z0s VIRTUELs. */ #define VITESSE_DES_Z0S \ VITESSE_DE_LA_LUMIERE \ /* Module de la vitesse des z0s. */ #define DEPLACEMENT_D_UN_Z0(z0) \ Bblock \ DEPLACEMENT_D_UNE_PARTICULE(z0); \ Eblock \ /* Deplacement d'un z0 au cours d'une periode d'horloge. */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* Q U E L Q U E S P A R T I C U L E S V I R T U E L L E S D E M A N O E U V R E : */ /* */ /*************************************************************************************************************************************/ #define PARTICULE_NON_DEFINIE \ ADRESSE(particule_non_definie) \ /* Pour definir des particules non definies, des fins de listes,... */ DEFV(Local,DEFV(particule,particule_non_definie)); /* Au cas ou une particule non definie serait, par erreur, referencee... */ DEFV(Local,DEFV(particule,particule_indifferente)); /* Au cas ou une particule indifferente serait necessaire (voir 'v $xrq/di_elec.LH$I'). */ #define quarkD1 \ ACCES_QUARK(identite_du_quark_courant) DEFV(Local,DEFV(quark,INIT(POINTERs(quarkD2),PARTICULE_NON_DEFINIE))); DEFV(Local,DEFV(quark,INIT(POINTERs(quarkA1),PARTICULE_NON_DEFINIE))); DEFV(Local,DEFV(quark,INIT(POINTERs(quarkA2),PARTICULE_NON_DEFINIE))); DEFV(Local,DEFV(quark,INIT(POINTERs(quarkA3),PARTICULE_NON_DEFINIE))); /* Quelques quarks utiles... */ #define anti_quarkD1 \ ACCES_ANTI_QUARK(identite_de_l_anti_quark_courant) DEFV(Local,DEFV(anti_quark,INIT(POINTERs(anti_quarkD2),PARTICULE_NON_DEFINIE))); DEFV(Local,DEFV(anti_quark,INIT(POINTERs(anti_quarkA1),PARTICULE_NON_DEFINIE))); DEFV(Local,DEFV(anti_quark,INIT(POINTERs(anti_quarkA2),PARTICULE_NON_DEFINIE))); DEFV(Local,DEFV(anti_quark,INIT(POINTERs(anti_quarkA3),PARTICULE_NON_DEFINIE))); /* Quelques anti-quarks utiles... */ #define gluonD1 \ ACCES_GLUON(identite_du_gluon_courant) DEFV(Local,DEFV(gluon,INIT(POINTERs(gluonD2),PARTICULE_NON_DEFINIE))); DEFV(Local,DEFV(gluon,INIT(POINTERs(gluonA1),PARTICULE_NON_DEFINIE))); DEFV(Local,DEFV(gluon,INIT(POINTERs(gluonA2),PARTICULE_NON_DEFINIE))); DEFV(Local,DEFV(gluon,INIT(POINTERs(gluonA3),PARTICULE_NON_DEFINIE))); DEFV(Local,DEFV(gluon,INIT(POINTERs(gluonA4),PARTICULE_NON_DEFINIE))); /* Quelques gluons utiles... */ #define electronD1 \ ACCES_ELECTRON(identite_de_l_electron_courant) DEFV(Local,DEFV(electron,INIT(POINTERs(electronD2),PARTICULE_NON_DEFINIE))); DEFV(Local,DEFV(electron,INIT(POINTERs(electronA1),PARTICULE_NON_DEFINIE))); DEFV(Local,DEFV(electron,INIT(POINTERs(electronA2),PARTICULE_NON_DEFINIE))); DEFV(Local,DEFV(electron,INIT(POINTERs(electronA3),PARTICULE_NON_DEFINIE))); /* Quelques electrons utiles... */ #define anti_electronD1 \ ACCES_ANTI_ELECTRON(identite_de_l_anti_electron_courant) DEFV(Local,DEFV(anti_electron,INIT(POINTERs(anti_electronD2),PARTICULE_NON_DEFINIE))); DEFV(Local,DEFV(anti_electron,INIT(POINTERs(anti_electronA1),PARTICULE_NON_DEFINIE))); DEFV(Local,DEFV(anti_electron,INIT(POINTERs(anti_electronA2),PARTICULE_NON_DEFINIE))); DEFV(Local,DEFV(anti_electron,INIT(POINTERs(anti_electronA3),PARTICULE_NON_DEFINIE))); /* Quelques anti-electrons utiles... */ DEFV(Local,DEFV(electron_ou_anti_electron,INIT(POINTERs(electron_ou_anti_electronA2),PARTICULE_NON_DEFINIE))); /* Quelques electrons ou anti-electrons utiles... */ #define neutrinoD1 \ ACCES_ELECTRON(identite_du_neutrino_courant) DEFV(Local,DEFV(neutrino,INIT(POINTERs(neutrinoD2),PARTICULE_NON_DEFINIE))); DEFV(Local,DEFV(neutrino,INIT(POINTERs(neutrinoA1),PARTICULE_NON_DEFINIE))); DEFV(Local,DEFV(neutrino,INIT(POINTERs(neutrinoA2),PARTICULE_NON_DEFINIE))); DEFV(Local,DEFV(neutrino,INIT(POINTERs(neutrinoA3),PARTICULE_NON_DEFINIE))); /* Quelques neutrinos utiles... */ #define photonD1 \ ACCES_PHOTON(identite_du_photon_courant) DEFV(Local,DEFV(photon,INIT(POINTERs(photonD2),PARTICULE_NON_DEFINIE))); DEFV(Local,DEFV(photon,INIT(POINTERs(photonA1),PARTICULE_NON_DEFINIE))); DEFV(Local,DEFV(photon,INIT(POINTERs(photonA2),PARTICULE_NON_DEFINIE))); DEFV(Local,DEFV(photon,INIT(POINTERs(photonA3),PARTICULE_NON_DEFINIE))); DEFV(Local,DEFV(photon,INIT(POINTERs(photonA4),PARTICULE_NON_DEFINIE))); /* Quelques photons utiles... */ #define z0D1 \ ACCES_PHOTON(identite_du_z0_courant) DEFV(Local,DEFV(z0,INIT(POINTERs(z0D2),PARTICULE_NON_DEFINIE))); DEFV(Local,DEFV(z0,INIT(POINTERs(z0A1),PARTICULE_NON_DEFINIE))); DEFV(Local,DEFV(z0,INIT(POINTERs(z0A2),PARTICULE_NON_DEFINIE))); DEFV(Local,DEFV(z0,INIT(POINTERs(z0A3),PARTICULE_NON_DEFINIE))); DEFV(Local,DEFV(z0,INIT(POINTERs(z0A4),PARTICULE_NON_DEFINIE))); /* Quelques z0s utiles... */ DEFV(Local,DEFV(particule,INIT(POINTERs(particule_REELLE_dominante),PARTICULE_NON_DEFINIE))); /* Definition de la particule REELLE dominante par rapport au champ de couleur global et */ /* pour une position donnee dans l'espace physique. */