/*************************************************************************************************************************************/
/* */
/* 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. */