/*************************************************************************************************************************************/
/* */
/* D E F I N I T I O N S D E S P A R T I C U L E S : */
/* */
/* */
/* Author of '$xrq/particle.M5$I' : */
/* */
/* Jean-Francois COLONNA (LACTAMME, 1994??????????). */
/* */
/*************************************************************************************************************************************/
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* D E F I N I T I O N D ' U N E P A R T I C U L E D A N S L ' E S P A C E - T E M P S : */
/* */
/*************************************************************************************************************************************/
Dstruct07(_propietes_d_espace_temps
,DEFV(Float,date_de_naissance)
/* Date de naissance d'une particule (en seconde) a partir de l'origine du calcul. */
,DEFV(Float,duree_de_vie)
/* Duree de vie d'une particule (en seconde). */
,DEFV(pointF_3D,position_initiale)
/* Definition de la position initiale de la particule dans l'univers (en metres). */
,DEFV(pointF_3D,position_courante)
/* Definition de la position courante de la particule dans l'univers (en metres). */
,DEFV(deltaF_3D,vitesse_initiale)
/* Definition de la vitesse initiale de la particule (en metres par seconde). */
,DEFV(deltaF_3D,vitesse_courante)
,DEFV(Float,module_de_la_vitesse_courante)
/* Definition de la vitesse courante de la particule (en metres par seconde) et de son */
/* module. */
,NOM_VIDE
);
Typedef(propietes_d_espace_temps,STRU(_propietes_d_espace_temps))
/* Definition d'une particule dans l'espace-temps. */
#define DATE_DE_NAISSANCE(particule) \
ASD1(PROPRIETES_SPATIO_TEMPORELLES(particule),date_de_naissance)
#define AGE(particule) \
SOUS(temps,DATE_DE_NAISSANCE(particule))
#define DUREE_DE_VIE(particule) \
ASD1(PROPRIETES_SPATIO_TEMPORELLES(particule),duree_de_vie)
#define POSITION_INITIALE(particule) \
ASD1(PROPRIETES_SPATIO_TEMPORELLES(particule),position_initiale)
#define POSITION_INITIALE_X(particule) \
ASD1(POSITION_INITIALE(particule),x)
#define POSITION_INITIALE_Y(particule) \
ASD1(POSITION_INITIALE(particule),y)
#define POSITION_INITIALE_Z(particule) \
ASD1(POSITION_INITIALE(particule),z)
#define POSITION_COURANTE(particule) \
ASD1(PROPRIETES_SPATIO_TEMPORELLES(particule),position_courante)
#define POSITION_COURANTE_X(particule) \
ASD1(POSITION_COURANTE(particule),x)
#define POSITION_COURANTE_Y(particule) \
ASD1(POSITION_COURANTE(particule),y)
#define POSITION_COURANTE_Z(particule) \
ASD1(POSITION_COURANTE(particule),z)
#define VITESSE_INITIALE(particule) \
ASD1(PROPRIETES_SPATIO_TEMPORELLES(particule),vitesse_initiale)
#define VITESSE_INITIALE_X(particule) \
ASD1(VITESSE_INITIALE(particule),dx)
#define VITESSE_INITIALE_Y(particule) \
ASD1(VITESSE_INITIALE(particule),dy)
#define VITESSE_INITIALE_Z(particule) \
ASD1(VITESSE_INITIALE(particule),dz)
#define VITESSE_COURANTE(particule) \
ASD1(PROPRIETES_SPATIO_TEMPORELLES(particule),vitesse_courante)
#define VITESSE_COURANTE_X(particule) \
ASD1(VITESSE_COURANTE(particule),dx)
#define VITESSE_COURANTE_Y(particule) \
ASD1(VITESSE_COURANTE(particule),dy)
#define VITESSE_COURANTE_Z(particule) \
ASD1(VITESSE_COURANTE(particule),dz)
#define MODULE_DE_LA_VITESSE_COURANTE(particule) \
ASD1(PROPRIETES_SPATIO_TEMPORELLES(particule),module_de_la_vitesse_courante)
/* Procedures d'acces aux proprietes spation-temporelles d'une particule. */
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* D U R E E D E V I E D E S D I F F E R E N T E S P A R T I C U L E S : */
/* */
/*************************************************************************************************************************************/
#define DUREE_DE_VIE_UNDEF \
FLOT__UNDEF \
/* Duree de vie inconnue... */
#define DUREE_DE_VIE_INFINIE \
F_INFINI \
/* Duree de vie infinie... */
#define DUREE_DE_VIE_QUARK_u \
DUREE_DE_VIE_INFINIE
#define DUREE_DE_VIE_QUARK_d \
DUREE_DE_VIE_INFINIE
#define DUREE_DE_VIE_QUARK_c \
DUREE_DE_VIE_UNDEF
#define DUREE_DE_VIE_QUARK_s \
DUREE_DE_VIE_UNDEF
#define DUREE_DE_VIE_QUARK_t \
DUREE_DE_VIE_UNDEF
#define DUREE_DE_VIE_QUARK_b \
DUREE_DE_VIE_UNDEF
#define DUREE_DE_VIE_LEPTON_electron \
DUREE_DE_VIE_INFINIE
#define DUREE_DE_VIE_LEPTON_NEUTRINO_electron \
DUREE_DE_VIE_INFINIE
#define DUREE_DE_VIE_LEPTON_muon \
PARE(2.2e-6)
#define DUREE_DE_VIE_LEPTON_NEUTRINO_muon \
DUREE_DE_VIE_INFINIE
#define DUREE_DE_VIE_LEPTON_tau \
PARE(3.5e-12)
#define DUREE_DE_VIE_LEPTON_NEUTRINO_tau \
DUREE_DE_VIE_INFINIE
#define DUREE_DE_VIE_PHOTON \
DUREE_DE_VIE_INFINIE
#define DUREE_DE_VIE_Wm \
DUREE_DE_VIE_UNDEF
#define DUREE_DE_VIE_Z0 \
DUREE_DE_VIE_UNDEF
#define DUREE_DE_VIE_GLUON \
DUREE_DE_VIE_UNDEF
#define DUREE_DE_VIE_Y \
DUREE_DE_VIE_UNDEF
#define DUREE_DE_VIE_X \
DUREE_DE_VIE_UNDEF
#define DUREE_DE_VIE_GRAVITON \
DUREE_DE_VIE_UNDEF
#define DUREE_DE_VIE_HIGGS \
DUREE_DE_VIE_UNDEF
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* D E F I N I T I O N D ' U N E P A R T I C U L E D A N S L E D O M A I N E D E L ' E N E R G I E : */
/* */
/*************************************************************************************************************************************/
Dstruct08(_proprietes_energiques
,DEFV(Float,masse_au_repos)
/* Definition de la masse au repos de la particule sous la forme : */
/* */
/* m */
/* 0 */
/* */
/* (en kilogrammes). A noter la correspondance : */
/* */
/* 1 Mev -30 */
/* ------ = 1.783.10 Kg */
/* 2 */
/* c */
/* */
/* puisque, souvent, la masse est exprimee en electron-volts (ce qui correspond au produit */
/* de la masse au repos par le carre de la vitesse de la lumiere). */
,DEFV(Float,masse_relativiste)
/* Definition de la masse relativiste de la particule sous la forme : */
/* */
/* m */
/* 0 */
/* m = --------------- */
/* 1 */
/* | 2 |--- */
/* | v | 2 */
/* |1 - ----| */
/* | 2 | */
/* | c | */
/* */
,DEFV(Float,portee_de_l_interaction)
/* Definition de la portee de l'interaction dans le cas d'un boson... */
,DEFV(Float,longueur_d_onde)
/* Definition de la longueur d'onde 'lambda' de l'onde associe a la particule. */
,DEFV(deltaF_3D,quantite_de_mouvement)
/* Definition de la quantite de mouvement 'P' de la particule ("linear momentum"). En */
/* mecanique relativiste, on a pour une particule de masse au repos non nulle et donc de */
/* vitesse 'v' inferieure a la vitesse de la lumiere : */
/* */
/* m > 0 */
/* 0 */
/* */
/* v < c */
/* */
/* --> --> */
/* P = m. v */
/* */
/* En ce qui concerne une particule de masse nulle et se deplacant a la vitesse de la */
/* lumiere (photon par exemple), on definira la quantite de mouvement par la relation : */
/* */
/* m = 0 */
/* 0 */
/* */
/* v = c */
/* */
/* --> --> */
/* P = h_barre. k */
/* */
/* |-->| 2.pi */
/* | k | = -------- */
/* lambda */
/* */
/* --> --> */
/* k // v */
/* avec : */
/* */
/* h */
/* h_barre = ------ */
/* 2.pi */
/* */
/* --> --> */
/* Le vecteur k est le vecteur d'onde et est colineaire au vecteur vitesse v ; on peut */
/* donc ecrire : */
/* */
/* --> */
/* --> 2.pi v */
/* k = --------.------- */
/* lambda |-->| */
/* | v | */
/* */
/* d'ou : */
/* */
/* --> */
/* --> h v */
/* P = --------.------- */
/* lambda |-->| */
/* | v | */
/* */
/* puisque : */
/* */
/* h = 2.pi.h_barre */
/* */
/* */
/* A noter la correspondance : */
/* */
/* 1 Mev -22 -1 */
/* ------ = 5.344.10 Kg.m.s */
/* c */
/* */
/* Cette quantite est conservee lors d'un evenement (collision,...). */
,DEFV(deltaF_3D,moment_cinetique)
/* Definition du moment cinetique (ou "angulaire") de la particule ("angular momentum"). */
/* Cette quantite est conservee lors d'un evenement (collision,...) et est definie par : */
/* */
/* --> --> --> */
/* L = r /\ P */
/* */
/* ou 'r' designe le rayon vecteur de la particule par rapport a une origine 'O'. */
,DEFV(deltaF_3D,moment_magnetique)
/* Definition du moment magnetique 'M' par : */
/* */
/* --> charge --> */
/* M = ---------. L */
/* 2.masse */
/* */
,DEFV(Float,energie)
/* Definition de l'energie de la particule 'E'. Pour une particule 'REELLE', l'energie est */
/* definie par la relation d'Einstein (voir la relativite restreinte), dans un referentiel */
/* d'inertie, soit : */
/* */
/* 2 2 2 2 4 */
/* E = P .c + m .c */
/* 0 */
/* */
/* (en electron-volts), cette quantite etant conservee lors d'un evenement (collision,...). */
/* Pour une particule de masse au repos nulle, on a donc : */
/* */
/* --> h */
/* E = | P |.c = --------.c = h.frequence */
/* lambda */
/* */
/* puisque : */
/* */
/* v */
/* lambda = v.periode = ----------- */
/* frequence */
/* */
/* 'v' representant la vitesse. */
/* */
/* La relation d'incertitude d'Heisenberg autorisant pour un 'dt' fini une incertitude 'dE' */
/* sur l'energie telle que : */
/* */
/* h_barre */
/* dE.dt ~ --------- */
/* 2 */
/* */
/* la definition precedente de 'E' peut etre violee pour une particule a l'existence breve */
/* dite particule 'VIRTUELLE". Pour une particule 'REELLE' : */
/* */
/* dt = infini ==> dE = 0 */
/* */
,NOM_VIDE
);
Typedef(proprietes_energiques,STRU(_proprietes_energiques))
/* Definition d'une particule dans le domaine de l'energie. */
#define MASSE_AU_REPOS(particule) \
ASD1(PROPRIETES_ENERGETIQUES(particule),masse_au_repos)
#define MASSE_RELATIVISTE(particule) \
ASD1(PROPRIETES_ENERGETIQUES(particule),masse_relativiste)
#define PORTEE_DE_L_INTERACTION(particule) \
ASD1(PROPRIETES_ENERGETIQUES(particule),portee_de_l_interaction)
#define LONGUEUR_D_ONDE(particule) \
ASD1(PROPRIETES_ENERGETIQUES(particule),longueur_d_onde)
#define QUANTITE_DE_MOUVEMENT(particule) \
ASD1(PROPRIETES_ENERGETIQUES(particule),quantite_de_mouvement)
#define QUANTITE_DE_MOUVEMENT_X(particule) \
ASD1(QUANTITE_DE_MOUVEMENT(particule),dx)
#define QUANTITE_DE_MOUVEMENT_Y(particule) \
ASD1(QUANTITE_DE_MOUVEMENT(particule),dy)
#define QUANTITE_DE_MOUVEMENT_Z(particule) \
ASD1(QUANTITE_DE_MOUVEMENT(particule),dz)
#define MOMENT_CINETIQUE(particule) \
ASD1(PROPRIETES_ENERGETIQUES(particule),moment_cinetique)
#define MOMENT_CINETIQUE_X(particule) \
ASD1(MOMENT_CINETIQUE(particule),dx)
#define MOMENT_CINETIQUE_Y(particule) \
ASD1(MOMENT_CINETIQUE(particule),dy)
#define MOMENT_CINETIQUE_Z(particule) \
ASD1(MOMENT_CINETIQUE(particule),dz)
#define MOMENT_MAGNETIQUE(particule) \
ASD1(PROPRIETES_ENERGETIQUES(particule),moment_magnetique)
#define MOMENT_MAGNETIQUE_X(particule) \
ASD1(MOMENT_MAGNETIQUE(particule),dx)
#define MOMENT_MAGNETIQUE_Y(particule) \
ASD1(MOMENT_MAGNETIQUE(particule),dy)
#define MOMENT_MAGNETIQUE_Z(particule) \
ASD1(MOMENT_MAGNETIQUE(particule),dz)
#define ENERGIE(particule) \
ASD1(PROPRIETES_ENERGETIQUES(particule),energie)
/* Procedures d'acces aux proprietes energetiques d'une particule. */
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* M A S S E A U R E P O S D E S D I F F E R E N T E S P A R T I C U L E S : */
/* */
/*************************************************************************************************************************************/
#define MASSE_UNDEF \
FLOT__UNDEF \
/* Masse inconnue... */
#define MASSE_NULLE \
FZERO \
/* Masse nulle... */
#define MASSE_INFINIE \
F_INFINI \
/* Masse infinie... */
#define eV \
UN
#define KeV \
MILLE
#define MeV \
MILLION
#define GeV \
MILLIARD
#define CONVERSION_ev_EN_kg(nombre_d_electrons_volts,puissance_de_10) \
MUL3(1.783e-36,EXP2(VITESSE_DE_LA_LUMIERE),MUL2(nombre_d_electrons_volts,puissance_de_10))
/* Procedures de conversion d'electrons-volts en kilogrammes. */
#define MASSE_QUARK_u \
CONVERSION_ev_EN_kg(330.0,MeV)
#define MASSE_QUARK_d \
CONVERSION_ev_EN_kg(333.0,MeV)
#define MASSE_QUARK_c \
CONVERSION_ev_EN_kg(486.0,MeV)
#define MASSE_QUARK_s \
CONVERSION_ev_EN_kg(1650.0,MeV)
#define MASSE_QUARK_t \
CONVERSION_ev_EN_kg(4500.0,MeV)
#define MASSE_QUARK_b \
CONVERSION_ev_EN_kg(70000.0,MeV)
#define MASSE_LEPTON_electron \
CONVERSION_ev_EN_kg(0.5,MeV)
#define MASSE_LEPTON_NEUTRINO_electron \
MASSE_NULLE
#define MASSE_LEPTON_muon \
CONVERSION_ev_EN_kg(106.0,MeV)
#define MASSE_LEPTON_NEUTRINO_muon \
MASSE_NULLE
#define MASSE_LEPTON_tau \
CONVERSION_ev_EN_kg(1.9,GeV)
#define MASSE_LEPTON_NEUTRINO_tau \
MASSE_NULLE
#define MASSE_PHOTON \
MASSE_NULLE
#define MASSE_Wm \
CONVERSION_ev_EN_kg(100.0,GeV)
#define MASSE_Z0 \
CONVERSION_ev_EN_kg(100.0,GeV)
#define MASSE_GLUON \
MASSE_NULLE
#define MASSE_Y \
CONVERSION_ev_EN_kg(1.0e+15,GeV)
#define MASSE_X \
CONVERSION_ev_EN_kg(1.0e+15,GeV)
#define MASSE_GRAVITON \
MASSE_NULLE
#define MASSE_HIGGS \
MASSE_UNDEF
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* D E F I N I T I O N D E S N O M B R E S Q U A N T I Q U E S D ' U N E P A R T I C U L E : */
/* */
/*************************************************************************************************************************************/
#define GAUCHE \
UN
#define DROITE \
NEGA(GAUCHE)
/* Definition des deux valeurs possibles de l'helicite 'h' d'une particule. On notera les */
/* valeurs de 'DROITE' et 'GAUCHE' qui peuvent sembler non naturelles. Ce choix se justifie */
/* en examinant par exemple la particule 'LEPTON_electron' pour laquelle on fixe comme */
/* valeur de charge faible 'cfm1s2'. Comme cette particule est une 'PARTICULE' seul son */
/* etat d'helicite 'GAUCHE' a une charge faible, est justement -1/2 ; la constante */
/* multiplicative 'GAUCHE' ne peut donc valoir que +1. */
#define INVERSE_DE_L_UNITE_DE_SPIN \
DEUX \
/* Constante permettant de passer du spin 's' au spin 'J' d'une particule par division... */
#define INVERSE_DE_L_UNITE_D_ISOSPIN \
DEUX \
/* Inverse de l'unite d'isospin... */
#define PAIRE \
UN
#define IMPAIRE \
NEGA(PAIRE)
/* Definition des deux valeurs possibles de la parite 'P' d'une particule. */
Dstruct13(_nombres_quantiques
,DEFV(Int,helicite)
/* Definition de l'helicite 'h' d'une particule ; elle fixe l'orientation du moment */
/* angulaire de spin par rapport a la direction de mouvement. Elle peut prendre deux */
/* valeurs distinctes : */
/* */
/* DROITE */
/* GAUCHE */
/* */
/* la premiere correspondant a un spin dans le sens du mouvement, la rotation ayant lieu */
/* suivant la regle du tire-bouchon... */
/* */
/* L'helicite d'une particule peut changer au cours de sa "vie", sauf en ce qui concerne */
/* les particules de masse nulle car, en effet, il est impossible de les amener au repos... */
,DEFV(Int,spin_s)
,DEFV(Float,spin_J)
/* Definition du spin 's' d'une particule. C'est grace a 's' que pourra se faire la */
/* difference entre les bosons (vecteurs des interactions, leur 's' est pair) et les */
/* fermions (sources des champs d'interaction, leur 's' est impair). Le nombre quantique */
/* 's' multiplie par "h-barre sur 2" donne le module du moment cinetique intrinseque. On */
/* pose : */
/* */
/* s */
/* J = --- */
/* 2 */
/* */
/* Les bosons ont alors un 'J' entier, et les fermions, un 'J' demi-entier. */
,DEFV(Float,isospin_T)
/* Definition de l'isospin 'T' d'une particule. Le nombre 'T' est lie au nombre 'n' d'etats */
/* de charge d'un multiplet par la formule : */
/* */
/* 2.T + 1 = n */
/* */
/* Par exemple, pour le doublet {proton,neutron}, on a : */
/* */
/* n = 2 */
/* */
/* 1 */
/* T = --- */
/* 2 */
/* */
/* Les multiplets ont en commun {B,J,P,S}. L'isospin 'T' se conserve lors de l'interaction */
/* forte. */
,DEFV(Int,nombre_leptonique_l)
/* Definition du nombre leptonique 'l' d'une particule ; seuls les leptons ont un nombre */
/* leptonique 'l' non nul, alors que pour les hadrons, il est nul. C'est la la difference */
/* importante entre les leptons (insensibles a l'interaction forte) et les hadrons (qui eux */
/* sont sensibles a l'interaction forte). */
/* */
/* Il est sujet a 'ANTI_MATIERE(...)'. */
,DEFV(Float,nombre_baryonique_B)
/* Definition du nombre baryonique 'B' d'une particule ; seuls les baryons ont un nombre */
/* baryonique 'l' non nul, alors que pour les mesons, il est nul. */
/* */
/* Il est sujet a 'ANTI_MATIERE(...)'. */
,DEFV(Int,parite_P)
/* Definition de la parite 'P' {-,+} d'une particule. Elle est dite "paire" ou "positive" */
/* si la fonction d'onde ne change pas lors du "renversement" des coordonnees, et est dite */
/* "impaire" ou "negative" dans le cas contraire. Il y a conservation de la parite lors */
/* des interactions electro-magnetique et forte, alors qu'elle est parfois violee lors de */
/* l'interaction faible. L'operateur parite 'P' a l'effet suivant sur la fonction d'onde */
/* d'une particule : */
/* */
/* P(psi(...)) = p.psi(...) */
/* */
/* ou 'p' represente les valeurs propres de P ; elles valent '+1' ou -1'. Rappelons que */
/* si 'f' est une fonction paire, alors : */
/* */
/* f(-x) = f(x) */
/* */
/* alors que si elle est impaire, alors : */
/* */
/* f(-x) = -f(x) */
/* */
/* Elle est sujet a 'ANTI_MATIERE(...)'. */
,DEFV(Int,etrangete_S)
/* Definition de l'etrangete 'S' d'une particule. Il y a conservation de l'etrangete lors */
/* des interactions electro-magnetique et forte, contrairement a l'interaction faible. */
/* */
/* Elle est sujet a 'ANTI_MATIERE(...)'. */
,DEFV(Int,charme_c)
/* Definition du charme 'c' d'une particule. */
/* */
/* Il est sujet a 'ANTI_MATIERE(...)'. */
,DEFV(Int,beaute_b)
/* Definition de la beaute 'b' d'une particule. */
/* */
/* Elle est sujet a 'ANTI_MATIERE(...)'. */
,DEFV(Int,verite_t)
/* Definition de la verite 't' (ou "truth") d'une particule. */
/* */
/* Elle est sujet a 'ANTI_MATIERE(...)'. */
,DEFV(Int,hypercharge_Y)
/* Definition de l'hypercharge 'Y' d'une particule, qui est en fait la somme : */
/* */
/* Y = B + S */
/* */
,DEFV(Int,particule_ou_antiparticule)
/* Definition de la distinction entre une particule (+1) et une anti-particule (-1). Ce */
/* nombre est en fait un facteur multiplicatif a appliquer aux caracteristiques suivantes : */
/* */
/* charge electrique, */
/* charge de couleur (R-V,V-B,B-R), */
/* nombre leptonique 'l', */
/* nombre baryonique 'B', */
/* parite 'P', */
/* etrangete 'S', */
/* charme 'c', */
/* beaute 'b', */
/* verite 't'. */
/* */
/* On notera que la masse 'm', le spin 's', l'isospin 'T' ainsi que la duree de vie, eux, */
/* restent inchanges, et sont donc identiques pour une particule et son anti-particule. */
,NOM_VIDE
);
Typedef(nombres_quantiques,STRU(_nombres_quantiques))
/* Definition des charges d'une particule. */
#define HELICITE(particule) \
ASD1(NOMBRES_QUANTIQUES(particule),helicite)
#define SPINs(particule) \
ASD1(NOMBRES_QUANTIQUES(particule),spin_s)
#define SPIN(particule) \
ASD1(NOMBRES_QUANTIQUES(particule),spin_J) \
/* ATTENTION, le spin "utile" (soit 'J', car demi-entier) est appele 'SPIN(...)' et non */ \
/* pas 'SPINJ(...)' (par analogie avec 'SPINs(...)') afin d'eviter des confusions lors de */ \
/* l'usage qui en sera fait, puisque c'est celui-ci qui sera reellement utilise... */
#define ISOSPIN(particule) \
ASD1(NOMBRES_QUANTIQUES(particule),isospin_T)
#define aNOMBRE_LEPTONIQUE(particule) \
ASD1(NOMBRES_QUANTIQUES(particule),nombre_leptonique_l)
#define NOMBRE_LEPTONIQUE(particule) \
ANTI_MATIERE(particule,aNOMBRE_LEPTONIQUE(particule))
#define aNOMBRE_BARYONIQUE(particule) \
ASD1(NOMBRES_QUANTIQUES(particule),nombre_baryonique_B)
#define NOMBRE_BARYONIQUE(particule) \
ANTI_MATIERE(particule,aNOMBRE_BARYONIQUE(particule))
#define aPARITE(particule) \
ASD1(NOMBRES_QUANTIQUES(particule),parite_P)
#define PARITE(particule) \
ANTI_MATIERE(particule,aPARITE(particule))
#define aETRANGETE(particule) \
ASD1(NOMBRES_QUANTIQUES(particule),etrangete_S)
#define ETRANGETE(particule) \
ANTI_MATIERE(particule,aETRANGETE(particule))
#define aCHARME(particule) \
ASD1(NOMBRES_QUANTIQUES(particule),charme_c)
#define CHARME(particule) \
ANTI_MATIERE(particule,aCHARME(particule))
#define aBEAUTE(particule) \
ASD1(NOMBRES_QUANTIQUES(particule),beaute_b)
#define BEAUTE(particule) \
ANTI_MATIERE(particule,aBEAUTE(particule))
#define aVERITE(particule) \
ASD1(NOMBRES_QUANTIQUES(particule),verite_t)
#define VERITE(particule) \
ANTI_MATIERE(particule,aVERITE(particule))
#define HYPERCHARGE(particule) \
ASD1(NOMBRES_QUANTIQUES(particule),hypercharge_Y)
/* Procedures d'acces aux nombres quantiques d'une particule. */
#define PARTICULE \
NEUT(FU)
#define ANTIPARTICULE \
NEGA(FU)
#define PARTICULE_ET_ANTIPARTICULE \
PARTICULE
/* Distinction entre une particule et une anti-particule. On notera le cas ou une particule */
/* est sa propre anti-particule ('PARTICULE_ET_ANTIPARTICULE'). */
#define PARTICULE_OU_ANTIPARTICULE(particule) \
ASD1(NOMBRES_QUANTIQUES(particule),particule_ou_antiparticule)
#define ANTI_MATIERE(particule,quantite) \
MUL2(PARTICULE_OU_ANTIPARTICULE(particule),quantite)
/* ATTENTION, l'acces aux differentes informations relatives a une particule se fait en */
/* par des fonction du type : */
/* */
/* FONCTION(particule) */
/* */
/* sauf pour les informations sujettes a la notion d'anti-matiere, pour lesquelles ces */
/* fonctions existent en deux exemplaires : */
/* */
/* aFONCTION(particule) */
/* FONCTION(particule) */
/* */
/* la premiere etant une fonction generale d'acces, alors que la seconde modifie la valeur */
/* correspondante suivant qu'il s'agit ou pas d'anti-matiere... */
/* */
/* ATTENTION, afin de limiter les erreurs possibles de choix entre 'aFONCTION(...)' et */
/* 'FONCTION(...)', les fonctions 'FONCTION(...)' relatives aux proprietes insensibles a */
/* la notion d'anti-matiere ne sont pas elles-aussi dedoublees. Ainsi, on fera plus */
/* attention lors de l'acces aux donnees sujettes a la notion presente d'anti-matiere... */
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* S P I N ' s ' E N T I E R D E S D I F F E R E N T E S P A R T I C U L E S : */
/* */
/*************************************************************************************************************************************/
#define SPINs_UNDEF \
UNDEF \
/* Definition du spin 's' indefini... */
#define SPINJ_UNDEF \
UNDEF \
/* Definition du spin 'J' indefini... */
#define SPINs_QUARK_u \
UN
#define SPINs_QUARK_d \
UN
#define SPINs_QUARK_c \
UN
#define SPINs_QUARK_s \
UN
#define SPINs_QUARK_t \
UN
#define SPINs_QUARK_b \
UN
#define SPINs_LEPTON_electron \
UN
#define SPINs_LEPTON_NEUTRINO_electron \
UN
#define SPINs_LEPTON_muon \
UN
#define SPINs_LEPTON_NEUTRINO_muon \
UN
#define SPINs_LEPTON_tau \
UN
#define SPINs_LEPTON_NEUTRINO_tau \
UN
#define SPINs_PHOTON \
DEUX
#define SPINs_Wm \
DEUX
#define SPINs_Z0 \
DEUX
#define SPINs_GLUON \
DEUX
#define SPINs_Y \
SPINs_UNDEF
#define SPINs_X \
SPINs_UNDEF
#define SPINs_GRAVITON \
QUATRE
#define SPINs_HIGGS \
SPINs_UNDEF
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* I S O S P I N ' T ' D E S D I F F E R E N T E S P A R T I C U L E S : */
/* */
/*************************************************************************************************************************************/
#define PAS_D_ISOSPIN \
ZERO \
/* Definition du cas ou il n'y a pas d'isospin (cas en particulier des particules qui ne */ \
/* sont pas des hadrons). */
#define ISOSPIN_QUARK_u \
NEUT(INVE(INVERSE_DE_L_UNITE_D_ISOSPIN))
#define ISOSPIN_QUARK_d \
NEGA(INVE(INVERSE_DE_L_UNITE_D_ISOSPIN))
#define ISOSPIN_QUARK_c \
PAS_D_ISOSPIN
#define ISOSPIN_QUARK_s \
PAS_D_ISOSPIN
#define ISOSPIN_QUARK_t \
PAS_D_ISOSPIN
#define ISOSPIN_QUARK_b \
PAS_D_ISOSPIN
#define ISOSPIN_LEPTON_electron \
PAS_D_ISOSPIN
#define ISOSPIN_LEPTON_NEUTRINO_electron \
PAS_D_ISOSPIN
#define ISOSPIN_LEPTON_muon \
PAS_D_ISOSPIN
#define ISOSPIN_LEPTON_NEUTRINO_muon \
PAS_D_ISOSPIN
#define ISOSPIN_LEPTON_tau \
PAS_D_ISOSPIN
#define ISOSPIN_LEPTON_NEUTRINO_tau \
PAS_D_ISOSPIN
#define ISOSPIN_PHOTON \
PAS_D_ISOSPIN
#define ISOSPIN_Wm \
PAS_D_ISOSPIN
#define ISOSPIN_Z0 \
PAS_D_ISOSPIN
#define ISOSPIN_GLUON \
PAS_D_ISOSPIN
#define ISOSPIN_Y \
PAS_D_ISOSPIN
#define ISOSPIN_X \
PAS_D_ISOSPIN
#define ISOSPIN_GRAVITON \
PAS_D_ISOSPIN
#define ISOSPIN_HIGGS \
PAS_D_ISOSPIN
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* N O M B R E L E P T O N I Q U E D E S D I F F E R E N T E S P A R T I C U L E S : */
/* */
/*************************************************************************************************************************************/
#define PAS_DE_NOMBRE_LEPTONIQUE \
ZERO
#define NOMBRE_LEPTONIQUE_DES_LEPTONS \
NEUT(UN)
/* Definition de quelques nombres leptoniques... */
#define NOMBRE_LEPTONIQUE_QUARK_u \
PAS_DE_NOMBRE_LEPTONIQUE
#define NOMBRE_LEPTONIQUE_QUARK_d \
PAS_DE_NOMBRE_LEPTONIQUE
#define NOMBRE_LEPTONIQUE_QUARK_c \
PAS_DE_NOMBRE_LEPTONIQUE
#define NOMBRE_LEPTONIQUE_QUARK_s \
PAS_DE_NOMBRE_LEPTONIQUE
#define NOMBRE_LEPTONIQUE_QUARK_t \
PAS_DE_NOMBRE_LEPTONIQUE
#define NOMBRE_LEPTONIQUE_QUARK_b \
PAS_DE_NOMBRE_LEPTONIQUE
#define NOMBRE_LEPTONIQUE_LEPTON_electron \
NOMBRE_LEPTONIQUE_DES_LEPTONS
#define NOMBRE_LEPTONIQUE_LEPTON_NEUTRINO_electron \
PAS_DE_NOMBRE_LEPTONIQUE
#define NOMBRE_LEPTONIQUE_LEPTON_muon \
NOMBRE_LEPTONIQUE_DES_LEPTONS
#define NOMBRE_LEPTONIQUE_LEPTON_NEUTRINO_muon \
PAS_DE_NOMBRE_LEPTONIQUE
#define NOMBRE_LEPTONIQUE_LEPTON_tau \
NOMBRE_LEPTONIQUE_DES_LEPTONS
#define NOMBRE_LEPTONIQUE_LEPTON_NEUTRINO_tau \
PAS_DE_NOMBRE_LEPTONIQUE
#define NOMBRE_LEPTONIQUE_PHOTON \
PAS_DE_NOMBRE_LEPTONIQUE
#define NOMBRE_LEPTONIQUE_Wm \
PAS_DE_NOMBRE_LEPTONIQUE
#define NOMBRE_LEPTONIQUE_Z0 \
PAS_DE_NOMBRE_LEPTONIQUE
#define NOMBRE_LEPTONIQUE_GLUON \
PAS_DE_NOMBRE_LEPTONIQUE
#define NOMBRE_LEPTONIQUE_Y \
PAS_DE_NOMBRE_LEPTONIQUE
#define NOMBRE_LEPTONIQUE_X \
PAS_DE_NOMBRE_LEPTONIQUE
#define NOMBRE_LEPTONIQUE_GRAVITON \
PAS_DE_NOMBRE_LEPTONIQUE
#define NOMBRE_LEPTONIQUE_HIGGS \
PAS_DE_NOMBRE_LEPTONIQUE
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* N O M B R E B A R Y O N I Q U E D E S D I F F E R E N T E S P A R T I C U L E S : */
/* */
/*************************************************************************************************************************************/
#define NOMBRE_DE_QUARKS_DANS_UN_BARYON \
TROIS \
/* Nombre de quarks dans un baryon... */
#define PAS_DE_NOMBRE_BARYONIQUE \
ZERO
#define NOMBRE_BARYONIQUE_DES_QUARKS \
NEUT(GRO1(INVE(NOMBRE_DE_QUARKS_DANS_UN_BARYON)))
/* Definition de quelques nombres baryoniques... */
#define NOMBRE_BARYONIQUE_QUARK_u \
NOMBRE_BARYONIQUE_DES_QUARKS
#define NOMBRE_BARYONIQUE_QUARK_d \
NOMBRE_BARYONIQUE_DES_QUARKS
#define NOMBRE_BARYONIQUE_QUARK_c \
NOMBRE_BARYONIQUE_DES_QUARKS
#define NOMBRE_BARYONIQUE_QUARK_s \
NOMBRE_BARYONIQUE_DES_QUARKS
#define NOMBRE_BARYONIQUE_QUARK_t \
NOMBRE_BARYONIQUE_DES_QUARKS
#define NOMBRE_BARYONIQUE_QUARK_b \
NOMBRE_BARYONIQUE_DES_QUARKS
#define NOMBRE_BARYONIQUE_LEPTON_electron \
PAS_DE_NOMBRE_BARYONIQUE
#define NOMBRE_BARYONIQUE_LEPTON_NEUTRINO_electron \
PAS_DE_NOMBRE_BARYONIQUE
#define NOMBRE_BARYONIQUE_LEPTON_muon \
PAS_DE_NOMBRE_BARYONIQUE
#define NOMBRE_BARYONIQUE_LEPTON_NEUTRINO_muon \
PAS_DE_NOMBRE_BARYONIQUE
#define NOMBRE_BARYONIQUE_LEPTON_tau \
PAS_DE_NOMBRE_BARYONIQUE
#define NOMBRE_BARYONIQUE_LEPTON_NEUTRINO_tau \
PAS_DE_NOMBRE_BARYONIQUE
#define NOMBRE_BARYONIQUE_PHOTON \
PAS_DE_NOMBRE_BARYONIQUE
#define NOMBRE_BARYONIQUE_Wm \
PAS_DE_NOMBRE_BARYONIQUE
#define NOMBRE_BARYONIQUE_Z0 \
PAS_DE_NOMBRE_BARYONIQUE
#define NOMBRE_BARYONIQUE_GLUON \
PAS_DE_NOMBRE_BARYONIQUE
#define NOMBRE_BARYONIQUE_Y \
PAS_DE_NOMBRE_BARYONIQUE
#define NOMBRE_BARYONIQUE_X \
PAS_DE_NOMBRE_BARYONIQUE
#define NOMBRE_BARYONIQUE_GRAVITON \
PAS_DE_NOMBRE_BARYONIQUE
#define NOMBRE_BARYONIQUE_HIGGS \
PAS_DE_NOMBRE_BARYONIQUE
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* E T R A N G E T E D E S D I F F E R E N T E S P A R T I C U L E S : */
/* */
/*************************************************************************************************************************************/
#define PAS_D_ETRANGETE \
ZERO
#define ETRANGE \
NEGA(UN)
/* Definition des deux valeurs possibles de l'etrangete 'S'. */
#define ETRANGETE_QUARK_u \
PAS_D_ETRANGETE
#define ETRANGETE_QUARK_d \
PAS_D_ETRANGETE
#define ETRANGETE_QUARK_c \
PAS_D_ETRANGETE
#define ETRANGETE_QUARK_s \
ETRANGE
#define ETRANGETE_QUARK_t \
PAS_D_ETRANGETE
#define ETRANGETE_QUARK_b \
PAS_D_ETRANGETE
#define ETRANGETE_LEPTON_electron \
PAS_D_ETRANGETE
#define ETRANGETE_LEPTON_NEUTRINO_electron \
PAS_D_ETRANGETE
#define ETRANGETE_LEPTON_muon \
PAS_D_ETRANGETE
#define ETRANGETE_LEPTON_NEUTRINO_muon \
PAS_D_ETRANGETE
#define ETRANGETE_LEPTON_tau \
PAS_D_ETRANGETE
#define ETRANGETE_LEPTON_NEUTRINO_tau \
PAS_D_ETRANGETE
#define ETRANGETE_PHOTON \
PAS_D_ETRANGETE
#define ETRANGETE_Wm \
PAS_D_ETRANGETE
#define ETRANGETE_Z0 \
PAS_D_ETRANGETE
#define ETRANGETE_GLUON \
PAS_D_ETRANGETE
#define ETRANGETE_Y \
PAS_D_ETRANGETE
#define ETRANGETE_X \
PAS_D_ETRANGETE
#define ETRANGETE_GRAVITON \
PAS_D_ETRANGETE
#define ETRANGETE_HIGGS \
PAS_D_ETRANGETE
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* C H A R M E D E S D I F F E R E N T E S P A R T I C U L E S : */
/* */
/*************************************************************************************************************************************/
#define PAS_DE_CHARME \
ZERO
#define CHARMEE \
NEUT(UN)
/* Definition des deux valeurs possibles du charme 'c'. */
#define CHARME_QUARK_u \
PAS_DE_CHARME
#define CHARME_QUARK_d \
PAS_DE_CHARME
#define CHARME_QUARK_c \
CHARMEE
#define CHARME_QUARK_s \
PAS_DE_CHARME
#define CHARME_QUARK_t \
PAS_DE_CHARME
#define CHARME_QUARK_b \
PAS_DE_CHARME
#define CHARME_LEPTON_electron \
PAS_DE_CHARME
#define CHARME_LEPTON_NEUTRINO_electron \
PAS_DE_CHARME
#define CHARME_LEPTON_muon \
PAS_DE_CHARME
#define CHARME_LEPTON_NEUTRINO_muon \
PAS_DE_CHARME
#define CHARME_LEPTON_tau \
PAS_DE_CHARME
#define CHARME_LEPTON_NEUTRINO_tau \
PAS_DE_CHARME
#define CHARME_PHOTON \
PAS_DE_CHARME
#define CHARME_Wm \
PAS_DE_CHARME
#define CHARME_Z0 \
PAS_DE_CHARME
#define CHARME_GLUON \
PAS_DE_CHARME
#define CHARME_Y \
PAS_DE_CHARME
#define CHARME_X \
PAS_DE_CHARME
#define CHARME_GRAVITON \
PAS_DE_CHARME
#define CHARME_HIGGS \
PAS_DE_CHARME
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* B E A U T E D E S D I F F E R E N T E S P A R T I C U L E S : */
/* */
/*************************************************************************************************************************************/
#define PAS_DE_BEAUTE \
ZERO
#define BELLE \
NEUT(UN)
/* Definition des deux valeurs possibles de la beaute 'b'. */
#define BEAUTE_QUARK_u \
PAS_DE_BEAUTE
#define BEAUTE_QUARK_d \
PAS_DE_BEAUTE
#define BEAUTE_QUARK_c \
PAS_DE_BEAUTE
#define BEAUTE_QUARK_s \
PAS_DE_BEAUTE
#define BEAUTE_QUARK_t \
PAS_DE_BEAUTE
#define BEAUTE_QUARK_b \
BELLE
#define BEAUTE_LEPTON_electron \
PAS_DE_BEAUTE
#define BEAUTE_LEPTON_NEUTRINO_electron \
PAS_DE_BEAUTE
#define BEAUTE_LEPTON_muon \
PAS_DE_BEAUTE
#define BEAUTE_LEPTON_NEUTRINO_muon \
PAS_DE_BEAUTE
#define BEAUTE_LEPTON_tau \
PAS_DE_BEAUTE
#define BEAUTE_LEPTON_NEUTRINO_tau \
PAS_DE_BEAUTE
#define BEAUTE_PHOTON \
PAS_DE_BEAUTE
#define BEAUTE_Wm \
PAS_DE_BEAUTE
#define BEAUTE_Z0 \
PAS_DE_BEAUTE
#define BEAUTE_GLUON \
PAS_DE_BEAUTE
#define BEAUTE_Y \
PAS_DE_BEAUTE
#define BEAUTE_X \
PAS_DE_BEAUTE
#define BEAUTE_GRAVITON \
PAS_DE_BEAUTE
#define BEAUTE_HIGGS \
PAS_DE_BEAUTE
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* V E R I T E D E S D I F F E R E N T E S P A R T I C U L E S : */
/* */
/*************************************************************************************************************************************/
#define PAS_DE_VERITE \
ZERO
#define VRAIE \
NEUT(UN)
/* Definition des deux valeurs possibles de la verite 't'. */
#define VERITE_QUARK_u \
PAS_DE_VERITE
#define VERITE_QUARK_d \
PAS_DE_VERITE
#define VERITE_QUARK_c \
PAS_DE_VERITE
#define VERITE_QUARK_s \
PAS_DE_VERITE
#define VERITE_QUARK_t \
VRAIE
#define VERITE_QUARK_b \
PAS_DE_VERITE
#define VERITE_LEPTON_electron \
PAS_DE_VERITE
#define VERITE_LEPTON_NEUTRINO_electron \
PAS_DE_VERITE
#define VERITE_LEPTON_muon \
PAS_DE_VERITE
#define VERITE_LEPTON_NEUTRINO_muon \
PAS_DE_VERITE
#define VERITE_LEPTON_tau \
PAS_DE_VERITE
#define VERITE_LEPTON_NEUTRINO_tau \
PAS_DE_VERITE
#define VERITE_PHOTON \
PAS_DE_VERITE
#define VERITE_Wm \
PAS_DE_VERITE
#define VERITE_Z0 \
PAS_DE_VERITE
#define VERITE_GLUON \
PAS_DE_VERITE
#define VERITE_Y \
PAS_DE_VERITE
#define VERITE_X \
PAS_DE_VERITE
#define VERITE_GRAVITON \
PAS_DE_VERITE
#define VERITE_HIGGS \
PAS_DE_VERITE
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* 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 : */
/* */
/*************************************************************************************************************************************/
#define INVERSE_DE_L_UNITE_DE_CHARGE_ELECTRIQUE \
TROIS \
/* Inverse de l'unite de charge electrique... */
#define CHARGE_ELECTRIQUE_UNDEF \
FLOT__UNDEF \
/* Charge electrique inconnue... */
#define CHARGE_ELECTRIQUE_NEUTRE \
FZERO \
/* Charge electrique d'une particule neutre. */
#define CHARGE_ELECTRIQUE_1_SUR_3 \
NEUT(GRO1(INVE(INVERSE_DE_L_UNITE_DE_CHARGE_ELECTRIQUE)))
#define CHARGE_ELECTRIQUE_2_SUR_3 \
NEUT(ADD2(CHARGE_ELECTRIQUE_1_SUR_3,CHARGE_ELECTRIQUE_1_SUR_3))
#define CHARGE_ELECTRIQUE_3_SUR_3 \
NEUT(ADD3(CHARGE_ELECTRIQUE_1_SUR_3,CHARGE_ELECTRIQUE_1_SUR_3,CHARGE_ELECTRIQUE_1_SUR_3))
#define CHARGE_ELECTRIQUE_4_SUR_3 \
NEUT(ADD4(CHARGE_ELECTRIQUE_1_SUR_3,CHARGE_ELECTRIQUE_1_SUR_3,CHARGE_ELECTRIQUE_1_SUR_3,CHARGE_ELECTRIQUE_1_SUR_3))
/* Quelques charges electriques positives utiles. On notera qu'elles sont definies a l'aide */
/* des primitives 'ADDn(...)' et non pas de 'GROn(...)' afin de garantir un bon traitement */
/* de la conservation de la charge electrique qui se fera de toute evidence par addition */
/* de plusieurs charges electriques (et non pas a l'aide de multiplications...). */
#define cem4s3 \
NEGA(CHARGE_ELECTRIQUE_4_SUR_3)
#define cem1 \
NEGA(CHARGE_ELECTRIQUE_3_SUR_3)
#define cem1s3 \
NEGA(CHARGE_ELECTRIQUE_1_SUR_3)
#define ce0 \
CHARGE_ELECTRIQUE_NEUTRE
#define cep2s3 \
NEUT(CHARGE_ELECTRIQUE_2_SUR_3)
/* Quelques charges electriques utiles... */
Dstruct01(_charge_electrique
,DEFV(Float,electrique)
/* Definition de la charge electrique d'une particule. */
/* */
/* Elle est sujet a 'ANTI_MATIERE(...)'. */
,NOM_VIDE
);
Typedef(charge_electrique,STRU(_charge_electrique))
/* Definition de la charge electrique d'une particule (interaction electro-magnetique). */
#define aCHARGE_ELECTRIQUE(particule) \
ASD1(CHARGES_CHARGE_ELECTRIQUE(particule),electrique)
#define CHARGE_ELECTRIQUE(particule) \
ANTI_MATIERE(particule,aCHARGE_ELECTRIQUE(particule))
/* Procedures d'acces a la charge electrique d'une particule. */
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* C H A R G E E L E C T R I Q U E D E S D I F F E R E N T E S P A R T I C U L E S : */
/* */
/*************************************************************************************************************************************/
#define CHARGE_ELECTRIQUE_QUARK_u \
cep2s3
#define CHARGE_ELECTRIQUE_QUARK_d \
cem1s3
#define CHARGE_ELECTRIQUE_QUARK_c \
cep2s3
#define CHARGE_ELECTRIQUE_QUARK_s \
cem1s3
#define CHARGE_ELECTRIQUE_QUARK_t \
cep2s3
#define CHARGE_ELECTRIQUE_QUARK_b \
cem1s3
#define CHARGE_ELECTRIQUE_LEPTON_electron \
cem1
#define CHARGE_ELECTRIQUE_LEPTON_NEUTRINO_electron \
ce0
#define CHARGE_ELECTRIQUE_LEPTON_muon \
cem1
#define CHARGE_ELECTRIQUE_LEPTON_NEUTRINO_muon \
ce0
#define CHARGE_ELECTRIQUE_LEPTON_tau \
cem1
#define CHARGE_ELECTRIQUE_LEPTON_NEUTRINO_tau \
ce0
#define CHARGE_ELECTRIQUE_PHOTON \
ce0
#define CHARGE_ELECTRIQUE_Wm \
cem1
#define CHARGE_ELECTRIQUE_Z0 \
ce0
#define CHARGE_ELECTRIQUE_GLUON \
ce0
#define CHARGE_ELECTRIQUE_Y \
cem1s3
#define CHARGE_ELECTRIQUE_X \
cem4s3
#define CHARGE_ELECTRIQUE_GRAVITON \
ce0
#define CHARGE_ELECTRIQUE_HIGGS \
CHARGE_ELECTRIQUE_UNDEF
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* D E F I N I T I O N D E L A C H A R G E F A I B L E : */
/* */
/*************************************************************************************************************************************/
#define INVERSE_DE_L_UNITE_DE_CHARGE_FAIBLE \
DEUX \
/* Inverse de l'unite de charge faible... */
#define CHARGE_FAIBLE_UNDEF \
FLOT__UNDEF \
/* Charge faible inconnue... */
#define CHARGE_FAIBLE_NEUTRE \
FZERO
#define CHARGE_FAIBLE_1_SUR_2 \
NEUT(GRO1(INVE(INVERSE_DE_L_UNITE_DE_CHARGE_FAIBLE)))
#define CHARGE_FAIBLE_2_SUR_2 \
NEUT(ADD2(CHARGE_FAIBLE_1_SUR_2,CHARGE_FAIBLE_1_SUR_2))
/* Quelques charges faibles positives utiles. */
#define cfm2s2 \
NEGA(CHARGE_FAIBLE_2_SUR_2)
#define cfm1s2 \
NEGA(CHARGE_FAIBLE_1_SUR_2)
#define cf0 \
CHARGE_FAIBLE_NEUTRE
#define cfp1s2 \
NEUT(CHARGE_FAIBLE_1_SUR_2)
#define cfp2s2 \
NEUT(CHARGE_FAIBLE_2_SUR_2)
/* Quelques charges faibles utiles... */
Dstruct01(_charge_faible
,DEFV(Float,faible)
/* Definition de la charge faible d'une particule. Avec elle, on definit la charge U(1) */
/* telle que : */
/* */
/* charge electrique = charge faible + charge U(1) */
/* */
/* Seules les particules a helicite GAUCHE et les antiparticules a helicite DROITE ont une */
/* charge faible. Elles sont alors associees deux a deux en des doublets dont un membre */
/* peut se transformer en l'autre a l'aide des particules 'W+' et 'W-'. Ainsi, par exemple, */
/* on a les doublets : */
/* */
/* {neutrino GAUCHE,electron GAUCHE} */
/* {quark u GAUCHE,quark d GAUCHE} */
/* {anti-electron DROITE,anti-netrinon DROITE} */
/* {anti-quark d DROITE,anti-quark u DROITE} */
/* */
/* La charge U(1) a la meme valeur pour les deux elements d'un doublet, et est egale a la */
/* valeur moyenne des charges electriques de ces deux elements. */
/* */
/* Les particules a helicite DROITE et les antiparticules a helicite GAUCHE ont une charge */
/* faible nulle et se retrouvent alors dans des singulets (a un seul membre) de charge U(1) */
/* egale a la charge electrique de ce seul element... */
/* */
/* Elle est sujet a 'ANTI_MATIERE(...)' mais en prenant en plus l'helicite 'HELICITE(...)' */
/* en compte (voir a ce propos la procedure '_iPARTICULE(...)'. */
,NOM_VIDE
);
Typedef(charge_faible,STRU(_charge_faible))
/* Definition de la charge faible d'une particule (interaction faible). */
/* */
/* ATTENTION, la charge faible ne se conserve pas car, en effet : */
/* */
/* 1-seules les particules a helicite GAUCHE et les antiparticules a helicite DROITE */
/* portent une charge faible, */
/* 2-une particule (ou une antiparticule) peut changer d'helicite au cours de sa "vie" */
/* par modification de son sens de deplacement (sauf en ce qui concerne celles de masse */
/* nulle...). */
/* */
/* Donc en changeant d'helicite une particule (ou une antiparticule) change simultanement */
/* sa charge faible... */
#define CHARGE_FAIBLE(particule) \
ASD1(CHARGES_CHARGE_FAIBLE(particule),faible)
#define CHARGE_U_DE_1(particule) \
SOUS(CHARGE_ELECTRIQUE(particule),CHARGE_FAIBLE(particule))
/* Procedures d'acces a la charge faible d'une particule. */
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* C H A R G E F A I B L E D E S D I F F E R E N T E S P A R T I C U L E S : */
/* */
/* */
/* Nota important : */
/* */
/* Rappelons que seules les particules a */
/* helicite GAUCHE et les antiparticules a */
/* helicite DROITE portent une charge faible. */
/* La liste suivante donne doncla charge faible */
/* des particules connues lorsqu'elles ont une */
/* helicite GAUCHE, sachant que dans le cas de */
/* l'helicite DROITE elle sera nulle, et que pour */
/* l'antiparticule associee, il faut inverser */
/* tout cela... */
/* */
/* */
/*************************************************************************************************************************************/
#define CHARGE_FAIBLE_QUARK_u \
cfp1s2
#define CHARGE_FAIBLE_QUARK_d \
cfm1s2
#define CHARGE_FAIBLE_QUARK_c \
cfp1s2
#define CHARGE_FAIBLE_QUARK_s \
cfm1s2
#define CHARGE_FAIBLE_QUARK_t \
cfp1s2
#define CHARGE_FAIBLE_QUARK_b \
cfm1s2
#define CHARGE_FAIBLE_LEPTON_electron \
cfm1s2
#define CHARGE_FAIBLE_LEPTON_NEUTRINO_electron \
cfp1s2
#define CHARGE_FAIBLE_LEPTON_muon \
cfm1s2
#define CHARGE_FAIBLE_LEPTON_NEUTRINO_muon \
cfp1s2
#define CHARGE_FAIBLE_LEPTON_tau \
cfm1s2
#define CHARGE_FAIBLE_LEPTON_NEUTRINO_tau \
cfp1s2
#define CHARGE_FAIBLE_PHOTON \
CHARGE_FAIBLE_UNDEF
#define CHARGE_FAIBLE_Wm \
cfm2s2
#define CHARGE_FAIBLE_Z0 \
CHARGE_FAIBLE_UNDEF
#define CHARGE_FAIBLE_GLUON \
CHARGE_FAIBLE_UNDEF
#define CHARGE_FAIBLE_Y \
cfp1s2
#define CHARGE_FAIBLE_X \
cfm1s2
#define CHARGE_FAIBLE_GRAVITON \
CHARGE_FAIBLE_UNDEF
#define CHARGE_FAIBLE_HIGGS \
CHARGE_FAIBLE_UNDEF
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* 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 : */
/* */
/*************************************************************************************************************************************/
#define INVERSE_DE_L_UNITE_DE_CHARGE_DE_COULEUR \
DEUX \
/* Inverse de l'unite de charge de couleur... */
#define CHARGE_DE_COULEUR_NEUTRE \
FZERO
#define CHARGE_DE_COULEUR_1_SUR_2 \
NEUT(GRO1(INVE(INVERSE_DE_L_UNITE_DE_CHARGE_DE_COULEUR)))
#define CHARGE_DE_COULEUR_2_SUR_2 \
NEUT(ADD2(CHARGE_DE_COULEUR_1_SUR_2,CHARGE_DE_COULEUR_1_SUR_2))
/* Quelques charges electriques positives utiles. On notera qu'elles sont definies a l'aide */
/* quelques charges de couleur positives utiles. On notera qu'elles sont definies a l'aide */
/* des primitives 'ADDn(...)' et non pas de 'GROn(...)' afin de garantir un bon traitement */
/* de la conservation de la charge de couleur qui se fera de toute evidence par addition */
/* de plusieurs charges de couleur (et non pas a l'aide de multiplications...). */
#define ccm1 \
NEGA(CHARGE_DE_COULEUR_2_SUR_2)
#define ccm1s2 \
NEGA(CHARGE_DE_COULEUR_1_SUR_2)
#define cc0 \
CHARGE_DE_COULEUR_NEUTRE
#define ccp1s2 \
NEUT(CHARGE_DE_COULEUR_1_SUR_2)
#define ccp1 \
NEUT(CHARGE_DE_COULEUR_2_SUR_2)
/* Quelques charges de couleur utiles... */
Dstruct03(_charges_de_couleur
,DEFV(Float,couleur_R_V)
,DEFV(Float,couleur_V_B)
,DEFV(Float,couleur_B_R)
/* Definition de la charge de couleur d'une particule. Contrairement a la charge electrique, */
/* il s'agit d'un nombre quantique soumis au principe d'exclusion de Pauli. La somme de ces */
/* trois charges doit toujours etre nulle. On a les deux tableaux suivants : */
/* */
/* | | | */
/* | R-V | V-B | B-R */
/* | | | */
/* */
/* 1-quarks : | | | */
/* __________|_________|_________|_________ */
/* | | | */
/* ROUGE | + 1/2 | 0 | - 1/2 */
/* __________|_________|_________|_________ */
/* | | | */
/* VERTE | - 1/2 | + 1/2 | 0 */
/* __________|_________|_________|_________ */
/* | | | */
/* BLEUE | 0 | - 1/2 | + 1/2 */
/* __________|_________|_________|_________ */
/* | | | */
/* */
/* */
/* 2-gluons : | | | */
/* __________|_________|_________|_________ */
/* | | | */
/* G1 | 0 | 0 | 0 */
/* ..........|.........|.........|......... */
/* | | | */
/* G2 | 0 | 0 | 0 */
/* __________|_________|_________|_________ */
/* | | | */
/* G(R-->V) | + 1 | - 1/2 | - 1/2 */
/* ..........|.........|.........|......... */
/* | | | */
/* G(V-->R) | - 1 | + 1/2 | + 1/2 */
/* __________|_________|_________|_________ */
/* | | | */
/* G(V-->B) | - 1/2 | + 1 | - 1/2 */
/* ..........|.........|.........|......... */
/* | | | */
/* G(B-->V) | + 1/2 | - 1 | + 1/2 */
/* __________|_________|_________|_________ */
/* | | | */
/* G(R-->B) | + 1/2 | + 1/2 | - 1 */
/* ..........|.........|.........|......... */
/* | | | */
/* G(B-->R) | - 1/2 | - 1/2 | + 1 */
/* | | | */
/* */
/* ('G1' et 'G2' ne changeant pas la couleur...). */
/* */
/* */
/* Symetrie des charges de couleur dans SU(3) : */
/* */
/* */
/* \ ----- / */
/* V-B \ BLEUE / */
/* \ * / */
/* \ . . / */
/* \ . -1/2 / */
/* +1/2 *---------------* . */
/* . / \ / \ . */
/* VERTE * / \ / \ * ROUGE */
/* / \ / \ */
/* . / \ / \ . */
/* / \ / \ */
/* . / \ / \ . */
/* / \ / \ +1/2 R-V */
/* --------------*---------------O---------------*-------------- */
/* -1/2 .\ / \ /. */
/* \ / \ / */
/* . \ / \ / . */
/* ----- \ / \ / ----- */
/* ROUGE * \ / \ / * VERTE */
/* . \ / \ / . */
/* .\ / \ /. */
/* *---------------* -1/2 */
/* / +1/2 . \ */
/* / . . \ */
/* / * \ */
/* / B-R BLEUE \ */
/* / \ */
/* */
/* */
/* On notera que cet hexagone peut etre vu comme la projection d'un cube dont les 8 sommets */
/* se repartissent en quatre familles a quatre etages distincts correspondant aux quatre */
/* charges quantifiees {0,1/3,2/3,1} ; soit : */
/* */
/* | | */
/* etage 0 : charge=0 | neutrino | (1 sommet) */
/* | | */
/* ------------------------------------------------------------------------------------ */
/* | - ----- ----- ----- | */
/* etage 1 : charge=+1/3 | anti-quarks d (ROUGE,VERTE,BLEUE) | (3 sommets) */
/* | | */
/* ------------------------------------------------------------------------------------ */
/* | | */
/* etage 2 : charge=+2/3 | quarks u (ROUGE,VERTE,BLEUE) | (3 sommets) */
/* | | */
/* ------------------------------------------------------------------------------------ */
/* | - | */
/* etage 3 : charge=+1 | anti-electron e | (1 sommet) */
/* | | */
/* */
/* (la projection des sommets 'neutrino' et 'anti-electron' collapsant au point 'O'). */
/* */
/* */
/* On pourrait alors faire le meme schema pour les deux autres familles fondamentales, ce */
/* qui donnerait pour les trois familles : */
/* */
/* */
/* | | */
/* neutrino electronique | neutrino muonique | neutrino tauique */
/* | | */
/* ------------------------------------------------------------------------------------ */
/* - | - | - */
/* anti-quarks d | anti-quarks s | anti-quarks b */
/* | | */
/* ------------------------------------------------------------------------------------ */
/* | | */
/* quarks u | quarks c | quarks t */
/* | | */
/* ------------------------------------------------------------------------------------ */
/* - | - | - */
/* anti-electron e | anti-muon M | anti-tau T */
/* | | */
/* */
/* */
/* Elles sont sujet a 'ANTI_MATIERE(...)'. */
,NOM_VIDE
);
Typedef(charges_de_couleur,STRU(_charges_de_couleur))
/* Definition de la charge de couleur d'une particule (interaction forte). */
#define aCHARGE_DE_COULEUR_R_V(particule) \
ASD1(CHARGES_CHARGES_DE_COULEUR(particule),couleur_R_V)
#define CHARGE_DE_COULEUR_R_V(particule) \
ANTI_MATIERE(particule,aCHARGE_DE_COULEUR_R_V(particule))
#define aCHARGE_DE_COULEUR_V_B(particule) \
ASD1(CHARGES_CHARGES_DE_COULEUR(particule),couleur_V_B)
#define CHARGE_DE_COULEUR_V_B(particule) \
ANTI_MATIERE(particule,aCHARGE_DE_COULEUR_V_B(particule))
#define aCHARGE_DE_COULEUR_B_R(particule) \
ASD1(CHARGES_CHARGES_DE_COULEUR(particule),couleur_B_R)
#define CHARGE_DE_COULEUR_B_R(particule) \
ANTI_MATIERE(particule,aCHARGE_DE_COULEUR_B_R(particule))
/* Procedures d'acces a la charge de couleur d'une particule. */
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* D E F I N I T I O N D E S C H A R G E S D ' U N E P A R T I C U L E : */
/* */
/*************************************************************************************************************************************/
Dstruct03(_charges
,DEFV(charge_electrique,electrique)
/* Definition de la charge electrique d'une particule (interaction electro-magnetique). */
,DEFV(charge_faible,faible)
/* Definition de la charge faible d'une particule (interaction faible). */
,DEFV(charges_de_couleur,couleur_et_anti_couleur)
/* Definition de la charge de couleur d'une particule (interaction forte). */
,NOM_VIDE
);
Typedef(charges,STRU(_charges))
/* Definition des charges d'une particule. */
#define CHARGES_CHARGE_ELECTRIQUE(particule) \
ASD1(CHARGES(particule),electrique)
#define CHARGES_CHARGE_FAIBLE(particule) \
ASD1(CHARGES(particule),faible)
#define CHARGES_CHARGES_DE_COULEUR(particule) \
ASD1(CHARGES(particule),couleur_et_anti_couleur)
/* Procedures d'acces a la charge de couleur d'une particule. */
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* P O R T E E D E S Q U A T R E I N T E R A C T I O N S F O N D A M E N T A L E S : */
/* */
/*************************************************************************************************************************************/
#define PAS_DE_PORTEE_POUR_LES_FERMIONS \
FZERO \
/* La portee n'a de sens que pour les bosons. */
#define PORTEE_DE_HIGGS \
FLOT__UNDEF
#define PORTEE_DE_X_ET_Y \
DIAMETRE_D_UN_HADRON
#define PORTEE_DE_L_INTERACTION_FORTE \
DIAMETRE_D_UN_HADRON
#define PORTEE_DE_L_INTERACTION_ELECTROMAGNETIQUE \
F_INFINI
#define PORTEE_DE_L_INTERACTION_FAIBLE \
DIAMETRE_D_UN_HADRON
#define PORTEE_DE_L_INTERACTION_GRAVITATIONNELLE \
F_INFINI
/* Portee des quatre interactions fondamentales classees par intensite decroissante... */
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* D E F I N I T I O N D E S " T Y P E S " D ' U N E P A R T I C U L E : */
/* */
/*************************************************************************************************************************************/
DenumeT03(STATUT_INDETERMINE
,REELLE
,VIRTUELLE
,realite_des_particules
)
/* Distinction entre les particules 'REELLE's et 'VIRTUELLE's (voir a ce propos la */
/* definition du descripteur 'proprietes_energiques'). */
DenumeT03(STATISTIQUE_INDETERMINEE
,BOSON
,FERMION
,role_des_particules
)
/* Distinction entre les 'BOSON's et les 'FERMION's. */
#define STATISTIQUE(particule) \
COND(EST_PAIR(SPINs(particule)) \
,BOSON \
,COND(EST_IMPAIR(SPINs(particule)) \
,FERMION \
,STATISTIQUE_INDETERMINEE \
) \
) \
/* Determination de la statistique a laquelle est soumise 'particule'. */
DenumeT22(PARTICULE_INEXISTANTE
,PARTICULE_NAISSANTE
/* Types "non physiques" destines a la gestion des particules. */
,QUARK_u
,QUARK_d
,QUARK_c
,QUARK_s
,QUARK_t
,QUARK_b
/* Quarks. */
,LEPTON_electron
,LEPTON_NEUTRINO_electron
,LEPTON_muon
,LEPTON_NEUTRINO_muon
,LEPTON_tau
,LEPTON_NEUTRINO_tau
/* Leptons. */
,PHOTON
/* Boson de l'interaction electro-magnetique. */
,Wm
,Z0
/* Bosons de l'interaction faible ; il est possible de considerer qu'en fait ils sont au */
/* nombre de trois : {W-,Z0,W+} (le 'Wm' etant charge et existant en tant que particule que */
/* l'on choisit arbitrairement comme etant 'W-' -par analogie avec l'electron de meme charge */
/* electrique algebrique- et comme antiparticule qui est donc 'W+'). */
,GLUON
/* Boson de l'interaction forte ; il est possible de considerer qu'ils sont au nombre de */
/* 8 distingues par la charge de couleur et la charge d'anti-couleur qu'ils portent */
/* simultanement... */
,Y
,X
/* Bosons intermediaires entre les leptons et les quarks issus du groupe SU(5). On considere */
/* ici qu'il y en a deux appeles {Y,X} de charges electriques respectives -1/3 et -4/3. */
/* Elles portent chacune une charge de couleur, et existent sous forme de particule et */
/* d'antiparticule ; on peut alors considerer qu'elles forment une nouvelle famille */
/* constituee de : */
/* */
/* 12 = 2x3x2 (2={Y,X}, 3={R,V,B}, 2={particule,antiparticule}) particules. */
/* */
,GRAVITON
/* Boson de l'interaction gravitationnelle. */
,HIGGS
/* Boson de Higgs destine a donner la masse des autres particules... */
,types_de_particules
)
/* Nom (ou "saveur") des differentes particules... */
Dstruct03(_types
,DEFV(Int,nom)
/* Nom de la particule. */
,DEFV(Int,boson_ou_fermion)
/* Boson ou fermion ? On notera que cette information est redondante avec le spin 's'. */
/* */
/* Note sur la portee d'une interaction (vehiculee donc par un boson) : la relation */
/* d'incertitude d'Heisenberg autorisant pour un 'dt' fini une incertitude 'dE'sur */
/* 'energie telle que : */
/* */
/* h_barre */
/* dE.dt ~ --------- */
/* 2 */
/* */
/* soit 'v' la vitesse du boson ; on a donc : */
/* */
/* dx = v.dt */
/* */
/* d'ou : */
/* */
/* dx h_barre */
/* dE.---- ~ --------- */
/* v 2 */
/* */
/* Or pour l'emission d'un boson virtuel de masse au repos 'm0', il faut une violation */
/* de la conservation d'energie egale au produit de cette masse au repos par le carre de */
/* la vitesse de la lumiere, soit : */
/* */
/* 2 */
/* dE = m .c */
/* 0 */
/* */
/* d'ou : */
/* */
/* 1 v.h_barre */
/* dx ~ ----.----------- */
/* m 2 */
/* 0 2.c */
/* */
/* ce qui montre que la portee de l'interaction vehiculee par le boson virtuel est */
/* inversement proportionnelle a la masse au repos de ce dernier. Dans le cas particulier */
/* de boson de masse nulle (photon en particulier), la portee sera infinie, sauf exception */
/* (cas de l'interaction forte par exemple). */
,DEFV(Int,reelle_ou_virtuelle)
/* Reelle ou virtuelle ? */
,NOM_VIDE
);
Typedef(types,STRU(_types))
/* Definition des differents "types" caracterisant une particule. */
#define NOM(particule) \
ASD1(TYPES(particule),nom)
#define BOSON_OU_FERMION(particule) \
ASD1(TYPES(particule),boson_ou_fermion)
#define REELLE_OU_VIRTUELLE(particule) \
ASD1(TYPES(particule),reelle_ou_virtuelle)
/* Procedures d'acces aux composantes de type d'une particule. */
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* 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 : */
/* */
/*************************************************************************************************************************************/
Dstruct03(_voisinage
,DEFV(Logical,il_y_a_une_plus_proche_voisine)
/* Indicateur d'existence d'une plus proche voisine. */
,DEFV(Particule,POINTERs(voisine_la_plus_proche))
/* Plus proche voisine, si elle existe... */
,DEFV(Float,distance_a_la_plus_proche_voisine)
/* Et si elle existe distance separant alors ces deux particules... */
,NOM_VIDE
);
Typedef(voisinage,STRU(_voisinage))
/* Definition du voisinage d'une particule. */
#define UNE_VOISINE_LA_PLUS_PROCHE(particule) \
ASD1(VOISINAGE(particule),il_y_a_une_plus_proche_voisine)
#define VOISINE_LA_PLUS_PROCHE(particule) \
ASD1(VOISINAGE(particule),voisine_la_plus_proche)
#define DISTANCE_A_LA_LA_PLUS_PROCHE_VOISINE(particule) \
ASD1(VOISINAGE(particule),distance_a_la_plus_proche_voisine)
/* Procedures d'acces aux composantes de gestion du voisinage d'une particule. */
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* D E F I N I T I O N D U " C O L O R I A G E " D ' U N E P A R T I C U L E : */
/* */
/*************************************************************************************************************************************/
Dstruct03(_couleur
,DEFV(Float,ROUGE)
,DEFV(Float,VERTE)
,DEFV(Float,BLEUE)
/* Definition de la couleur d'une particule. */
,NOM_VIDE
);
Typedef(couleur,STRU(_couleur))
/* Definition de la couleur d'une particule. */
#define COULEUR_ROUGE(particule) \
ASD1(COULEUR(particule),ROUGE)
#define COULEUR_VERTE(particule) \
ASD1(COULEUR(particule),VERTE)
#define COULEUR_BLEUE(particule) \
ASD1(COULEUR(particule),BLEUE)
/* Procedures d'acces aux composantes de la couleur d'une particule. */
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* D E F I N I T I O N D E L A V I S U A L I S A T I O N D ' U N E P A R T I C U L E : */
/* */
/*************************************************************************************************************************************/
Dstruct03(_visualisation
,DEFV(Logical,visualiser)
/* Indique s'il faut visualiser ('VRAI') ou pas ('FAUX') cette particule. */
,DEFV(Float,rayon)
/* Rayon de la particule (en metre) ; ce parametre est en fait principalement destine a la */
/* visualisation... */
,DEFV(couleur,Couleur)
/* Couleur (au sens "coloriage" du terme) de la particule. */
,NOM_VIDE
);
Typedef(visualisation,STRU(_visualisation))
/* Definition des informations necessaires a la visualisation des particules. */
#define VISUALISER(particule) \
ASD1(VISUALISATION(particule),visualiser)
#define RAYON(particule) \
ASD1(VISUALISATION(particule),rayon)
#define COULEUR(particule) \
ASD1(VISUALISATION(particule),Couleur)
/* Procedures d'acces aux composantes de visualisation d'une particule. */
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* D E F I N I T I O N D E L A G E S T I O N D ' U N E P A R T I C U L E : */
/* */
/*************************************************************************************************************************************/
Dstruct04(_gestion
,DEFV(Positive,etiquette)
/* Etiquette unique permettant de suivre au cours du temps une particule. */
,DEFV(liste,ensemble)
/* Informations d'acces aux particules suivante et precedente dans la liste les contenant */
/* toutes... */
,DEFV(voisinage,Voisinage)
/* Definition du voisinage d'une particule. */
,DEFV(visualisation,Visualisation)
/* Definition des informations utiles a la visualisation d'une particule. */
,NOM_VIDE
);
Typedef(gestion,STRU(_gestion))
/* Definition des informations necessaires a la gestion des particules. */
#define ETIQUETTE(particule) \
ASD1(GESTION(particule),etiquette)
#define ENSEMBLE(particule) \
ASD1(GESTION(particule),ensemble)
#define PRECEDENTE(particule) \
PRECEDENT_DANS_UNE_LISTE(ASD1(GESTION(particule),ensemble))
#define SUIVANTE(particule) \
SUIVANT_DANS_UNE_LISTE(ASD1(GESTION(particule),ensemble))
#define VALIDATION(particule) \
VALIDATION_D_UN_ELEMENT_D_UNE_LISTE(ASD1(GESTION(particule),ensemble))
#define VOISINAGE(particule) \
ASD1(GESTION(particule),Voisinage)
#define VISUALISATION(particule) \
ASD1(GESTION(particule),Visualisation)
/* Procedures d'acces aux composantes de gestion d'une particule. La procedure */
/* 'VALIDATION(...)' a ete introduite le 20031103121258... */
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* 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 ( F I N ) : */
/* */
/*************************************************************************************************************************************/
Dstruct06(__Particule
,DEFV(types,Types)
/* Definition du type de particule. */
,DEFV(nombres_quantiques,Nombres_quantiques)
/* Definition des nombres quantiques utiles. */
,DEFV(charges,Charges)
/* Definition des differentes charges. */
,DEFV(propietes_d_espace_temps,Proprietes_d_espace_temps)
/* Definition des differents parametres dans l'espace-temps. */
,DEFV(proprietes_energiques,Proprietes_energiques)
/* Definition des differents parametres energetiques. */
,DEFV(gestion,Gestion)
/* Definition des informations utiles a la gestion d'une particule. */
,NOM_VIDE
);
#define TYPES(particule) \
ASI1(particule,Types)
#define NOMBRES_QUANTIQUES(particule) \
ASI1(particule,Nombres_quantiques)
#define CHARGES(particule) \
ASI1(particule,Charges)
#define PROPRIETES_SPATIO_TEMPORELLES(particule) \
ASI1(particule,Proprietes_d_espace_temps)
#define PROPRIETES_ENERGETIQUES(particule) \
ASI1(particule,Proprietes_energiques)
#define GESTION(particule) \
ASI1(particule,Gestion)
/* Procedures d'acces aux composantes principales d'une particule. */
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* V A L I D A T I O N D E L A C H A R G E F A I B L E : */
/* */
/*************************************************************************************************************************************/
#define PEUT_AVOIR_UNE_CHARGE_FAIBLE(particule) \
IFOU(IFET(IFEQ(PARTICULE_OU_ANTIPARTICULE(particule),PARTICULE) \
,IFEQ(HELICITE(particule),GAUCHE) \
) \
,IFET(IFEQ(PARTICULE_OU_ANTIPARTICULE(particule),ANTIPARTICULE) \
,IFEQ(HELICITE(particule),DROITE) \
) \
) \
/* Test pour savoir si la particule 'particule' peut avoir une charge faible... */
#define VALIDATION_DE_LA_CHARGE_FAIBLE(particule) \
Bblock \
Test(IFNE(ABSO(CHARGE_FAIBLE(particule)),CHARGE_FAIBLE_UNDEF)) \
/* Cas ou la charge faible est connue... */ \
Bblock \
Test(PEUT_AVOIR_UNE_CHARGE_FAIBLE(particule)) \
/* Cas des 'doublets' pour l'interaction faible (c'est-a-dire pour lesquels une transition */ \
/* est possible), la charge faible doit etre demi-entiere... */ \
Bblock \
Test(IFET(IFNE(ABSO(CHARGE_FAIBLE(particule)),ABSO(CHARGE_FAIBLE_1_SUR_2)) \
,IFNE(ABSO(CHARGE_FAIBLE(particule)),ABSO(CHARGE_FAIBLE_2_SUR_2)) \
) \
) \
Bblock \
PRINT_ERREUR("la charge faible particule GAUCHE ou anti-particule DROITE doit etre demi-entiere"); \
CAL1(Prer1("etiquette particule = %d\n",ETIQUETTE(particule))); \
Eblock \
ATes \
Bblock \
Eblock \
ETes \
Eblock \
ATes \
Bblock \
/* Cas des 'singulets' pour l'interaction faible (c'est-a-dire pour lesquels aucune */ \
/* transition n'est possible), la charge faible doit etre nulle... */ \
Test(IFNE(CHARGE_FAIBLE(particule),CHARGE_FAIBLE_NEUTRE)) \
Bblock \
PRINT_ERREUR("la charge faible particule DROITE ou anti-particule GAUCHE doit etre nulle"); \
CAL1(Prer1("etiquette particule = %d\n",ETIQUETTE(particule))); \
Eblock \
ATes \
Bblock \
Eblock \
ETes \
Eblock \
ETes \
Eblock \
ATes \
/* Cas ou la charge faible n'est pas connue... */ \
Bblock \
Eblock \
ETes \
Eblock \
/* Validation de la charge faible. */
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* V A L I D A T I O N D E S C H A R G E S D E C O U L E U R : */
/* */
/*************************************************************************************************************************************/
#define VALIDATION_DES_CHARGES_DE_COULEUR(particule) \
Bblock \
Test(IFNE(ADD3(CHARGE_DE_COULEUR_R_V(particule) \
,CHARGE_DE_COULEUR_V_B(particule) \
,CHARGE_DE_COULEUR_B_R(particule) \
) \
,CHARGE_DE_COULEUR_NEUTRE \
) \
) \
Bblock \
PRINT_ERREUR("la somme des charges de couleur d'une particule n'est pas nulle"); \
CAL1(Prer1("etiquette particule = %d\n",ETIQUETTE(particule))); \
Eblock \
ATes \
Bblock \
Eblock \
ETes \
Eblock \
/* Validation des charges de couleur. */
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* C A L C U L D U S P I N ' J ' : */
/* */
/*************************************************************************************************************************************/
#define iSPIN(particule) \
Bblock \
Test(IFNE(ABSO(SPINs(particule)),SPINs_UNDEF)) \
/* Cas ou la masse au repos est connue... */ \
Bblock \
EGAL(SPIN(particule),DIVI(FLOT(SPINs(particule)),FLOT(INVERSE_DE_L_UNITE_DE_SPIN))); \
Eblock \
ATes \
/* Cas ou la masse au repos n'est pas connue... */ \
Bblock \
EGAL(SPIN(particule),SPINJ_UNDEF); \
Eblock \
ETes \
Eblock \
/* Definition du spin 'J' de la particule. */
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* C A L C U L D U M O D U L E D E L A V I T E S S E : */
/* */
/*************************************************************************************************************************************/
#define iMODULE_DE_LA_VITESSE_COURANTE(particule) \
Bblock \
EGAL(MODULE_DE_LA_VITESSE_COURANTE(particule),longF3D(VITESSE_COURANTE(particule))); \
Eblock \
/* Definition du module de la vitesse de la particule. */
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* C A L C U L D E L A M A S S E R E L A T I V I S T E : */
/* */
/*************************************************************************************************************************************/
#define iMASSE_RELATIVISTE(particule) \
Bblock \
Test(IFNE(ABSO(MASSE_AU_REPOS(particule)),MASSE_UNDEF)) \
/* Cas ou la masse au repos est connue... */ \
Bblock \
Test(IFEQ_a_peu_pres_absolu(MODULE_DE_LA_VITESSE_COURANTE(particule) \
,VITESSE_DE_LA_LUMIERE \
,FRACTION_DE_LA_VITESSE_DE_LA_LUMIERE \
) \
) \
Bblock \
EGAL(MASSE_RELATIVISTE(particule) \
,COND(IFEQ(MASSE_AU_REPOS(particule),MASSE_NULLE) \
,MASSE_AU_REPOS(particule) \
,MASSE_INFINIE \
) \
); \
/* Definition de la masse relativiste de la particule sous la forme pour une particule */ \
/* se deplacant a la vitesse de la lumiere... */ \
Eblock \
ATes \
Bblock \
EGAL(MASSE_RELATIVISTE(particule) \
,DIVI(MASSE_AU_REPOS(particule) \
,RACX(SOUS(FU \
,DIVI(EXP2(MODULE_DE_LA_VITESSE_COURANTE(particule)) \
,EXP2(VITESSE_DE_LA_LUMIERE) \
) \
) \
) \
) \
); \
/* Definition de la masse relativiste de la particule sous la forme : */ \
/* */ \
/* m */ \
/* 0 */ \
/* m = --------------- */ \
/* 1 */ \
/* | 2 |--- */ \
/* | v | 2 */ \
/* |1 - ----| */ \
/* | 2 | */ \
/* | c | */ \
/* */ \
Eblock \
ETes \
Eblock \
ATes \
/* Cas ou la masse au repos n'est pas connue... */ \
Bblock \
EGAL(MASSE_RELATIVISTE(particule),MASSE_UNDEF); \
Eblock \
ETes \
Eblock \
/* Definition de la masse relativiste 'm' de la particule. */
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* C A L C U L D E L A Q U A N T I T E D E M O U V E M E N T : */
/* */
/*************************************************************************************************************************************/
#define QUANTITE_DE_MOUVEMENT_UNDEF \
FLOT__UNDEF \
/* Composante quelconque de la quantite de mouvement inconnue... */
#define FRACTION_DE_LA_VITESSE_DE_LA_LUMIERE \
FRA1(FRA10(FRA10(VITESSE_DE_LA_LUMIERE))) \
/* Fraction de la vitesse de la lumiere 'c' destinee a faire des tests d'egalite par */ \
/* rapport a 'c' en prenant en compte les erreurs d'arrondi lors du calcul du module */ \
/* d'un vecteur vitesse. */
#define iQUANTITE_DE_MOUVEMENT(particule) \
Bblock \
Test(IFNE(ABSO(MASSE_AU_REPOS(particule)),MASSE_UNDEF)) \
/* Cas ou la masse au repos est connue... */ \
Bblock \
Test(IZEQ(MASSE_AU_REPOS(particule))) \
Bblock \
DEFV(Float,INIT(module_de_la_quantite_de_mouvement_ramene_a_la_vitesse \
,DIVI(DIVI(CONSTANTE_DE_PLANCK,LONGUEUR_D_ONDE(particule)) \
,MODULE_DE_LA_VITESSE_COURANTE(particule) \
) \
) \
); \
/* Definition du module de la quantite de mouvement divise par le module de la vitesse. */ \
Test(IFNE_a_peu_pres_absolu(MODULE_DE_LA_VITESSE_COURANTE(particule) \
,VITESSE_DE_LA_LUMIERE \
,FRACTION_DE_LA_VITESSE_DE_LA_LUMIERE \
) \
) \
Bblock \
PRINT_ERREUR("une particule de masse au repos nulle ne se deplace pas a la vitesse de la lumiere"); \
CAL1(Prer1("etiquette particule = %d\n",ETIQUETTE(particule))); \
CAL1(Prer1("module de la vitesse particule = %f\n",MODULE_DE_LA_VITESSE_COURANTE(particule))); \
Eblock \
ATes \
Bblock \
Eblock \
ETes \
\
INITIALISATION_ACCROISSEMENT_3D(QUANTITE_DE_MOUVEMENT(particule) \
,MUL2(module_de_la_quantite_de_mouvement_ramene_a_la_vitesse \
,VITESSE_COURANTE_X(particule) \
) \
,MUL2(module_de_la_quantite_de_mouvement_ramene_a_la_vitesse \
,VITESSE_COURANTE_Y(particule) \
) \
,MUL2(module_de_la_quantite_de_mouvement_ramene_a_la_vitesse \
,VITESSE_COURANTE_Z(particule) \
) \
); \
/* Definition de la quantite de mouvement 'P' de la particule ("linear momentum") dans le */ \
/* cas d'une particule de masse au repos nulle : */ \
/* */ \
/* m = 0 */ \
/* 0 */ \
/* */ \
/* v = c */ \
/* */ \
/* --> --> */ \
/* P = h_barre. k */ \
/* */ \
/* |-->| 2.pi */ \
/* | k | = -------- */ \
/* lambda */ \
/* */ \
/* --> --> */ \
/* k // v */ \
/* */ \
/* --> --> */ \
/* Le vecteur k est le vecteur d'onde et est colineaire au vecteur vitesse v ; on peut */ \
/* donc ecrire : */ \
/* */ \
/* --> */ \
/* --> 2.pi v */ \
/* k = --------.------- */ \
/* lambda |-->| */ \
/* | v | */ \
/* */ \
/* d'ou : */ \
/* */ \
/* --> */ \
/* --> h v */ \
/* P = --------.------- */ \
/* lambda |-->| */ \
/* | v | */ \
/* */ \
/* puisque : */ \
/* */ \
/* h = 2.pi.h_barre */ \
/* */ \
Eblock \
ATes \
Bblock \
Test(IFEQ_a_peu_pres_absolu(MODULE_DE_LA_VITESSE_COURANTE(particule) \
,VITESSE_DE_LA_LUMIERE \
,FRACTION_DE_LA_VITESSE_DE_LA_LUMIERE \
) \
) \
Bblock \
PRINT_ERREUR("une particule de masse au repos non nulle se deplace a la vitesse de la lumiere"); \
CAL1(Prer1("etiquette particule = %d\n",ETIQUETTE(particule))); \
Eblock \
ATes \
Bblock \
Eblock \
ETes \
\
INITIALISATION_ACCROISSEMENT_3D(QUANTITE_DE_MOUVEMENT(particule) \
,MUL2(MASSE_RELATIVISTE(particule),VITESSE_COURANTE_X(particule)) \
,MUL2(MASSE_RELATIVISTE(particule),VITESSE_COURANTE_Y(particule)) \
,MUL2(MASSE_RELATIVISTE(particule),VITESSE_COURANTE_Z(particule)) \
); \
/* Definition de la quantite de mouvement 'P' de la particule ("linear momentum") dans le */ \
/* cas d'une particule de masse au repos non nulle : */ \
/* */ \
/* m > 0 */ \
/* 0 */ \
/* */ \
/* v < c */ \
/* */ \
/* --> --> */ \
/* P = m. v */ \
/* */ \
Eblock \
ETes \
Eblock \
ATes \
/* Cas ou la masse au repos n'est pas connue... */ \
Bblock \
INITIALISATION_ACCROISSEMENT_3D(QUANTITE_DE_MOUVEMENT(particule) \
,QUANTITE_DE_MOUVEMENT_UNDEF \
,QUANTITE_DE_MOUVEMENT_UNDEF \
,QUANTITE_DE_MOUVEMENT_UNDEF \
); \
Eblock \
ETes \
Eblock \
/* Definition de la quantite de mouvement 'P' de la particule ("linear momentum"). */
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* M I S E A J O U R D E S G R A N D E U R S R E L A T I V I S T E S : */
/* */
/*************************************************************************************************************************************/
#define iGRANDEURS_RELATIVISTES(particule) \
Bblock \
iMODULE_DE_LA_VITESSE_COURANTE(particule); \
iMASSE_RELATIVISTE(particule); \
iQUANTITE_DE_MOUVEMENT(particule); \
/* Definition des differentes grandeurs relativistes "derivees"... ATTENTION a l'ordre */ \
/* imperatif des procedures suivantes : */ \
/* */ \
/* iMODULE_DE_LA_VITESSE_COURANTE(particule); */ \
/* iMASSE_RELATIVISTE(particule); */ \
/* iQUANTITE_DE_MOUVEMENT(particule); */ \
/* */ \
/* puisque chacune d'entre-elles utilise ce qu'ont calcule les precedentes... */ \
Eblock \
/* Mise a jour des differentes grandeurs relativistes liees a la vitesse courante. */
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* C A L C U L D U M O M E N T M A G N E T I Q U E : */
/* */
/*************************************************************************************************************************************/
#define MOMENT_MAGNETIQUE_UNDEF \
FLOT__UNDEF \
/* Composante quelconque du moment magnetique inconnu... */
#define iMOMENT_MAGNETIQUE(particule) \
Bblock \
Test(IFNE(ABSO(MASSE_AU_REPOS(particule)),MASSE_UNDEF)) \
/* Cas ou la masse au repos est connue... */ \
Bblock \
Test(IZGT(MASSE_RELATIVISTE(particule))) \
Bblock \
DEFV(Float,INIT(charge_electrique_ramenee_a_la_masse_relativiste \
,DIVI(CHARGE_ELECTRIQUE(particule),DOUB(MASSE_RELATIVISTE(particule))) \
) \
); \
/* Definition de la charge electrique ramenee au double de la masse relativiste. */ \
INITIALISATION_ACCROISSEMENT_3D(MOMENT_MAGNETIQUE(particule) \
,MUL2(charge_electrique_ramenee_a_la_masse_relativiste \
,MOMENT_CINETIQUE_X(particule) \
) \
,MUL2(charge_electrique_ramenee_a_la_masse_relativiste \
,MOMENT_CINETIQUE_Y(particule) \
) \
,MUL2(charge_electrique_ramenee_a_la_masse_relativiste \
,MOMENT_CINETIQUE_Z(particule) \
) \
); \
/* Definition du moment magnetique 'M' par : */ \
/* */ \
/* --> charge --> */ \
/* M = ---------. L */ \
/* 2.masse */ \
/* */ \
/* pour une particule non relativiste... */ \
Eblock \
ATes \
Bblock \
INITIALISATION_ACCROISSEMENT_3D(MOMENT_MAGNETIQUE(particule) \
,FZERO \
,FZERO \
,FZERO \
); \
/* Definition du moment magnetique 'M' d'une particule relativiste... */ \
Eblock \
ETes \
Eblock \
ATes \
/* Cas ou la masse au repos n'est pas connue... */ \
Bblock \
INITIALISATION_ACCROISSEMENT_3D(MOMENT_MAGNETIQUE(particule) \
,MOMENT_MAGNETIQUE_UNDEF \
,MOMENT_MAGNETIQUE_UNDEF \
,MOMENT_MAGNETIQUE_UNDEF \
); \
Eblock \
ETes \
Eblock \
/* Definition du moment magnetique 'M' de la particule. */
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* C A L C U L D E L ' E N E R G I E : */
/* */
/*************************************************************************************************************************************/
#define ENERGIE_UNDEF \
FLOT__UNDEF \
/* Energie inconnue... */
#define iENERGIE(particule) \
Bblock \
Test(IFNE(ABSO(MASSE_AU_REPOS(particule)),MASSE_UNDEF)) \
/* Cas ou la masse au repos est connue... */ \
Bblock \
EGAL(ENERGIE(particule) \
,RACX(ADD2(MUL2(EXP2(longF3D(QUANTITE_DE_MOUVEMENT(particule))),EXP2(VITESSE_DE_LA_LUMIERE)) \
,MUL2(EXP2(MASSE_AU_REPOS(particule)),EXP4(VITESSE_DE_LA_LUMIERE)) \
) \
) \
); \
/* Definition de l'energie de la particule 'E'. Pour une particule 'REELLE', l'energie est */ \
/* definie par la relation d'Einstein (voir la relativite restreinte), dans un referentiel */ \
/* d'inertie, soit : */ \
/* */ \
/* 2 2 2 2 4 */ \
/* E = P .c + m .c */ \
/* 0 */ \
/* */ \
Eblock \
ATes \
/* Cas ou la masse au repos n'est pas connue... */ \
Bblock \
EGAL(ENERGIE(particule),ENERGIE_UNDEF); \
Eblock \
ETes \
Eblock \
/* Definition de l'energie 'E' de la particule. */
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* P R O C E D U R E D E C R E A T I O N E T I N I T I A L I S A T I O N D ' U N E P A R T I C U L E : */
/* */
/*************************************************************************************************************************************/
#define _iPARTICULE(particule,n,rv,pap,m0,p,lo,h,s,T,nl,nb,P,S,c,b,t,ce,cf,RV,VB,BR,x0,y0,z0,Vx0,Vy0,Vz0,Lx0,Ly0,Lz0,dv,v,r,R,V,B) \
Bblock \
CREATION_D_UNE_PARTICULE(particule); \
/* Creation de la structure necessaire a decrire la particule. */ \
\
EGAL(ETIQUETTE(particule),etiquette_de_la_prochaine_particule_a_creer); \
INCR(etiquette_de_la_prochaine_particule_a_creer,I); \
/* Identification "logique" de la particule. */ \
\
EGAL(NOM(particule),n); \
EGAL(REELLE_OU_VIRTUELLE(particule),rv); \
EGAL(PARTICULE_OU_ANTIPARTICULE(particule),pap); \
/* Identification "physique" de la particule. C'est 'pap' qui va permettre d'utiliser par */ \
/* la suite la procedure 'ANTI_MATIERE(...)'. */ \
\
EGAL(LONGUEUR_D_ONDE(particule),lo); \
/* Definition de la longueur d'onde de la particule (equivalence onde-corpuscule...). */ \
\
EGAL(HELICITE(particule),h); \
EGAL(SPINs(particule),s); \
iSPIN(particule); \
EGAL(BOSON_OU_FERMION(particule),STATISTIQUE(particule)); \
/* Definition de la statistique a laquelle est soumise la particule (quantite "derivee"...). */ \
/* */ \
/* ATTENTION il est preferable de calculer 'BOSON_OU_FERMION(particule)' avant les calculs */ \
/* des quantites "derivees" au cas ou ces dernieres utiliserait 'STATISTIQUE(particule)'... */ \
\
EGAL(ISOSPIN(particule),T); \
EGAL(aNOMBRE_LEPTONIQUE(particule),ANTI_MATIERE(particule,nl)); \
EGAL(aPARITE(particule),ANTI_MATIERE(particule,P)); \
\
EGAL(aNOMBRE_BARYONIQUE(particule),ANTI_MATIERE(particule,nb)); \
EGAL(aETRANGETE(particule),ANTI_MATIERE(particule,S)); \
EGAL(aCHARME(particule),ANTI_MATIERE(particule,c)); \
EGAL(aBEAUTE(particule),ANTI_MATIERE(particule,b)); \
EGAL(aVERITE(particule),ANTI_MATIERE(particule,t)); \
EGAL(HYPERCHARGE(particule),ADD2(NOMBRE_BARYONIQUE(particule),ETRANGETE(particule))); \
/* Definition des nombres quantiques principaux. */ \
\
EGAL(aCHARGE_ELECTRIQUE(particule),ANTI_MATIERE(particule,ce)); \
EGAL(CHARGE_FAIBLE(particule) \
,COND(PEUT_AVOIR_UNE_CHARGE_FAIBLE(particule) \
,ANTI_MATIERE(particule,cf) \
,CHARGE_FAIBLE_NEUTRE \
) \
); \
VALIDATION_DE_LA_CHARGE_FAIBLE(particule); \
EGAL(aCHARGE_DE_COULEUR_R_V(particule),ANTI_MATIERE(particule,RV)); \
EGAL(aCHARGE_DE_COULEUR_V_B(particule),ANTI_MATIERE(particule,VB)); \
EGAL(aCHARGE_DE_COULEUR_B_R(particule),ANTI_MATIERE(particule,BR)); \
VALIDATION_DES_CHARGES_DE_COULEUR(particule); \
/* Definition des differentes charges. */ \
\
EGAL(MASSE_AU_REPOS(particule),m0); \
/* Definition de la masse au repose de la particule. */ \
EGAL(PORTEE_DE_L_INTERACTION(particule),p); \
/* Definition de la portee de l'interaction (dans le cas d'un boson...). */ \
\
EGAL(DATE_DE_NAISSANCE(particule),temps); \
\
INITIALISATION_POINT_3D(POSITION_INITIALE(particule),x0,y0,z0); \
TRANSFERT_POINT_3D(POSITION_COURANTE(particule),POSITION_INITIALE(particule)); \
\
INITIALISATION_ACCROISSEMENT_3D(MOMENT_CINETIQUE(particule),Lx0,Ly0,Lz0); \
EGAL(DUREE_DE_VIE(particule),dv); \
/* Definition des coordonnees spatio-temporelles. */ \
\
INITIALISATION_ACCROISSEMENT_3D(VITESSE_INITIALE(particule),Vx0,Vy0,Vz0); \
TRANSFERT_ACCROISSEMENT_3D(VITESSE_COURANTE(particule),VITESSE_INITIALE(particule)); \
iGRANDEURS_RELATIVISTES(particule); \
/* Definition des coordonnees spatio-temporelles "derivees" et relativistes... */ \
\
iMOMENT_MAGNETIQUE(particule); \
iENERGIE(particule); \
/* Definition du moment magnetique et de l'energie (quantites "derivees"...). */ \
\
EGAL(UNE_VOISINE_LA_PLUS_PROCHE(particule),NEXIST); \
EGAL(VOISINE_LA_PLUS_PROCHE(particule),PARTICULE_NON_DEFINIE); \
EGAL(DISTANCE_A_LA_LA_PLUS_PROCHE_VOISINE(particule),FLOT__UNDEF); \
/* Initialisation du voisinage. */ \
\
EGAL(VISUALISER(particule),v); \
EGAL(RAYON(particule),r); \
EGAL(COULEUR_ROUGE(particule),R); \
EGAL(COULEUR_VERTE(particule),V); \
EGAL(COULEUR_BLEUE(particule),B); \
/* Definition de la visualisation de la particule. */ \
\
Eblock \
/* Procedure d'initialisation d'une particule quelconque... */
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* P R O C E D U R E D E C R E A T I O N E T I N I T I A L I S A T I O N D ' U N E P A R T I C U L E : */
/* A V E C R E D U C T I O N D U C O D E G E N E R E E N P A S S A N T P A R U N E F O N C T I O N : */
/* */
/*************************************************************************************************************************************/
#define __iPARTICULE(particule,n,rv,pap,m0,p,lo,h,s,T,nl,nb,P,S,c,b,t,ce,cf,RV,VB,BR,x0,y0,z0,Vx0,Vy0,Vz0,Lx0,Ly0,Lz0,dv,v,r,R,V,B) \
Bblock \
iPARTICULE(ADRESSE(particule) \
,INTE(n) \
,INTE(rv) \
,INTE(pap) \
,FLOT(m0) \
,FLOT(p) \
,FLOT(lo) \
,INTE(h) \
,INTE(s) \
,FLOT(T) \
,INTE(nl) \
,FLOT(nb) \
,INTE(P) \
,INTE(S) \
,INTE(c) \
,INTE(b) \
,INTE(t) \
,FLOT(ce) \
,FLOT(cf) \
,FLOT(RV),FLOT(VB),FLOT(BR) \
,FLOT(x0),FLOT(y0),FLOT(z0) \
,FLOT(Vx0),FLOT(Vy0),FLOT(Vz0) \
,FLOT(Lx0),FLOT(Ly0),FLOT(Lz0) \
,FLOT(dv) \
,LOGI(v) \
,FLOT(r) \
,FLOT(R) \
,FLOT(V) \
,FLOT(B) \
); \
Eblock \
/* Procedure d'initialisation d'une particule quelconque avec reduction du code genere. On */ \
/* notera les 'INTE(...)', 'LOGI(...)' et 'FLOT(...)' destines a eviter des confusions dans */ \
/* les types puisque 'iPARTICULE(...)' est une "vraie" fonction et non pas une procedure... */
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* C R E A T I O N E T D ' I N I T I A L I S A T I O N D ' U N F E R M I O N : */
/* */
/*************************************************************************************************************************************/
#define iFERMION(fermion,n,rv,pap,m0,lo,h,s,T,nl,nb,P,S,c,b,t,ce,cf,RV,VB,BR,x0,y0,z0,Vx0,Vy0,Vz0,Lx0,Ly0,Lz0,dv,v,r,R,V,B) \
Bblock \
__iPARTICULE(fermion \
,n \
,rv \
,pap \
,m0 \
,PAS_DE_PORTEE_POUR_LES_FERMIONS \
,lo \
,h \
,s \
,T \
,nl \
,nb \
,P \
,S \
,c \
,b \
,t \
,ce \
,cf \
,RV,VB,BR \
,x0,y0,z0 \
,Vx0,Vy0,Vz0 \
,Lx0,Ly0,Lz0 \
,dv \
,v \
,r \
,R,V,B \
); \
Eblock \
/* Procedure de creation et d'initialisation d'un fermion. */
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* C R E A T I O N E T D ' I N I T I A L I S A T I O N D ' U N L E P T O N : */
/* */
/*************************************************************************************************************************************/
#define iLEPTON(lepton,n,rv,pap,m0,lo,h,s,T,nl,nb,P,S,c,b,t,ce,cf,RV,VB,BR,x0,y0,z0,Vx0,Vy0,Vz0,Lx0,Ly0,Lz0,dv,v,r,R,V,B) \
Bblock \
iFERMION(lepton \
,n \
,rv \
,pap \
,m0 \
,lo \
,h \
,s \
,T \
,nl \
,nb \
,P \
,S \
,c \
,b \
,t \
,ce \
,cf \
,RV,VB,BR \
,x0,y0,z0 \
,Vx0,Vy0,Vz0 \
,Lx0,Ly0,Lz0 \
,dv \
,v \
,r \
,R,V,B \
); \
Eblock \
/* Procedure de creation et d'initialisation d'un lepton. */
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* C R E A T I O N E T D ' I N I T I A L I S A T I O N D ' U N E L E C T R O N : */
/* */
/*************************************************************************************************************************************/
#define iELECTRON(electron,rv,pap,lo,h,P,x0,y0,z0,Vx0,Vy0,Vz0,Lx0,Ly0,Lz0,v,r,R,V,B) \
Bblock \
iLEPTON(electron \
,LEPTON_electron \
,rv \
,pap \
,MASSE_LEPTON_electron \
,lo \
,h \
,SPINs_LEPTON_electron \
,ISOSPIN_LEPTON_electron \
,NOMBRE_LEPTONIQUE_LEPTON_electron \
,NOMBRE_BARYONIQUE_LEPTON_electron \
,P \
,ETRANGETE_LEPTON_electron \
,CHARME_LEPTON_electron \
,BEAUTE_LEPTON_electron \
,VERITE_LEPTON_electron \
,CHARGE_ELECTRIQUE_LEPTON_electron \
,CHARGE_FAIBLE_LEPTON_electron \
,cc0,cc0,cc0 \
,x0,y0,z0 \
,Vx0,Vy0,Vz0 \
,Lx0,Ly0,Lz0 \
,DUREE_DE_VIE_LEPTON_electron \
,v \
,r \
,R,V,B \
); \
Eblock \
/* Procedure de creation et d'initialisation d'un electron. */
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* C R E A T I O N E T D ' I N I T I A L I S A T I O N D ' U N N E U T R I N O E L E C T R O N I Q U E : */
/* */
/*************************************************************************************************************************************/
#define iNEUTRINO_ELECTRON(neutrino_electronique,rv,pap,lo,h,P,x0,y0,z0,Vx0,Vy0,Vz0,Lx0,Ly0,Lz0,v,r,R,V,B) \
Bblock \
iLEPTON(neutrino_electronique \
,LEPTON_NEUTRINO_electron \
,rv \
,pap \
,MASSE_LEPTON_NEUTRINO_electron \
,lo \
,h \
,SPINs_LEPTON_NEUTRINO_electron \
,ISOSPIN_LEPTON_NEUTRINO_electron \
,NOMBRE_LEPTONIQUE_LEPTON_NEUTRINO_electron \
,NOMBRE_BARYONIQUE_LEPTON_NEUTRINO_electron \
,P \
,ETRANGETE_LEPTON_NEUTRINO_electron \
,CHARME_LEPTON_NEUTRINO_electron \
,BEAUTE_LEPTON_NEUTRINO_electron \
,VERITE_LEPTON_NEUTRINO_electron \
,CHARGE_ELECTRIQUE_LEPTON_NEUTRINO_electron \
,CHARGE_FAIBLE_LEPTON_NEUTRINO_electron \
,cc0,cc0,cc0 \
,x0,y0,z0 \
,Vx0,Vy0,Vz0 \
,Lx0,Ly0,Lz0 \
,DUREE_DE_VIE_LEPTON_NEUTRINO_electron \
,v \
,r \
,R,V,B \
); \
Eblock \
/* Procedure de creation et d'initialisation d'un neutrino electronique. */
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* C R E A T I O N E T D ' I N I T I A L I S A T I O N D ' U N M U O N : */
/* */
/*************************************************************************************************************************************/
#define iMUON(muon,rv,pap,lo,h,P,x0,y0,z0,Vx0,Vy0,Vz0,Lx0,Ly0,Lz0,v,r,R,V,B) \
Bblock \
iLEPTON(muon \
,LEPTON_muon \
,rv \
,pap \
,MASSE_LEPTON_muon \
,lo \
,h \
,SPINs_LEPTON_muon \
,ISOSPIN_LEPTON_muon \
,NOMBRE_LEPTONIQUE_LEPTON_muon \
,NOMBRE_BARYONIQUE_LEPTON_muon \
,P \
,ETRANGETE_LEPTON_muon \
,CHARME_LEPTON_muon \
,BEAUTE_LEPTON_muon \
,VERITE_LEPTON_muon \
,CHARGE_ELECTRIQUE_LEPTON_muon \
,CHARGE_FAIBLE_LEPTON_muon \
,cc0,cc0,cc0 \
,x0,y0,z0 \
,Vx0,Vy0,Vz0 \
,Lx0,Ly0,Lz0 \
,DUREE_DE_VIE_LEPTON_muon \
,v \
,r \
,R,V,B \
); \
Eblock \
/* Procedure de creation et d'initialisation d'un muon. */
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* C R E A T I O N E T D ' I N I T I A L I S A T I O N D ' U N N E U T R I N O M U O N I Q U E : */
/* */
/*************************************************************************************************************************************/
#define iNEUTRINO_MUON(neutrino_muonique,rv,pap,lo,h,P,x0,y0,z0,Vx0,Vy0,Vz0,Lx0,Ly0,Lz0,v,r,R,V,B) \
Bblock \
iLEPTON(neutrino_muonique \
,LEPTON_NEUTRINO_muon \
,rv \
,pap \
,MASSE_LEPTON_NEUTRINO_muon \
,lo \
,h \
,SPINs_LEPTON_NEUTRINO_muon \
,ISOSPIN_LEPTON_NEUTRINO_muon \
,NOMBRE_LEPTONIQUE_LEPTON_NEUTRINO_muon \
,NOMBRE_BARYONIQUE_LEPTON_NEUTRINO_muon \
,P \
,ETRANGETE_LEPTON_NEUTRINO_muon \
,CHARME_LEPTON_NEUTRINO_muon \
,BEAUTE_LEPTON_NEUTRINO_muon \
,VERITE_LEPTON_NEUTRINO_muon \
,CHARGE_ELECTRIQUE_LEPTON_NEUTRINO_muon \
,CHARGE_FAIBLE_LEPTON_NEUTRINO_muon \
,cc0,cc0,cc0 \
,x0,y0,z0 \
,Vx0,Vy0,Vz0 \
,Lx0,Ly0,Lz0 \
,DUREE_DE_VIE_LEPTON_NEUTRINO_muon \
,v \
,r \
,R,V,B \
); \
Eblock \
/* Procedure de creation et d'initialisation d'un neutrino muonique. */
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* C R E A T I O N E T D ' I N I T I A L I S A T I O N D ' U N T A U : */
/* */
/*************************************************************************************************************************************/
#define iTAU(tau,rv,pap,lo,h,P,x0,y0,z0,Vx0,Vy0,Vz0,Lx0,Ly0,Lz0,v,r,R,V,B) \
Bblock \
iLEPTON(tau \
,LEPTON_tau \
,rv \
,pap \
,MASSE_LEPTON_tau \
,lo \
,h \
,SPINs_LEPTON_tau \
,ISOSPIN_LEPTON_tau \
,NOMBRE_LEPTONIQUE_LEPTON_tau \
,NOMBRE_BARYONIQUE_LEPTON_tau \
,P \
,ETRANGETE_LEPTON_tau \
,CHARME_LEPTON_tau \
,BEAUTE_LEPTON_tau \
,VERITE_LEPTON_tau \
,CHARGE_ELECTRIQUE_LEPTON_tau \
,CHARGE_FAIBLE_LEPTON_tau \
,cc0,cc0,cc0 \
,x0,y0,z0 \
,Vx0,Vy0,Vz0 \
,Lx0,Ly0,Lz0 \
,DUREE_DE_VIE_LEPTON_tau \
,v \
,r \
,R,V,B \
); \
Eblock \
/* Procedure de creation et d'initialisation d'un tau. */
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* C R E A T I O N E T D ' I N I T I A L I S A T I O N D ' U N N E U T R I N O T A U I Q U E : */
/* */
/*************************************************************************************************************************************/
#define iNEUTRINO_TAU(neutrino_tauique,rv,pap,lo,h,P,x0,y0,z0,Vx0,Vy0,Vz0,Lx0,Ly0,Lz0,v,r,R,V,B) \
Bblock \
iLEPTON(neutrino_tauique \
,LEPTON_NEUTRINO_tau \
,rv \
,pap \
,MASSE_LEPTON_NEUTRINO_tau \
,lo \
,h \
,SPINs_LEPTON_NEUTRINO_tau \
,ISOSPIN_LEPTON_NEUTRINO_tau \
,NOMBRE_LEPTONIQUE_LEPTON_NEUTRINO_tau \
,NOMBRE_BARYONIQUE_LEPTON_NEUTRINO_tau \
,P \
,ETRANGETE_LEPTON_NEUTRINO_tau \
,CHARME_LEPTON_NEUTRINO_tau \
,BEAUTE_LEPTON_NEUTRINO_tau \
,VERITE_LEPTON_NEUTRINO_tau \
,CHARGE_ELECTRIQUE_LEPTON_NEUTRINO_tau \
,CHARGE_FAIBLE_LEPTON_NEUTRINO_tau \
,cc0,cc0,cc0 \
,x0,y0,z0 \
,Vx0,Vy0,Vz0 \
,Lx0,Ly0,Lz0 \
,DUREE_DE_VIE_LEPTON_NEUTRINO_tau \
,v \
,r \
,R,V,B \
); \
Eblock \
/* Procedure de creation et d'initialisation d'un neutrino tauique. */
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* C R E A T I O N E T D ' I N I T I A L I S A T I O N D ' U N Q U A R K : */
/* */
/*************************************************************************************************************************************/
#define iQUARK(quark,n,rv,pap,m0,lo,h,s,T,nl,nb,P,S,c,b,t,ce,cf,RV,VB,BR,x0,y0,z0,Vx0,Vy0,Vz0,Lx0,Ly0,Lz0,dv,v,r,R,V,B) \
Bblock \
iFERMION(quark \
,n \
,rv \
,pap \
,m0 \
,lo \
,h \
,s \
,T \
,nl \
,nb \
,P \
,S \
,c \
,b \
,t \
,ce \
,cf \
,RV,VB,BR \
,x0,y0,z0 \
,Vx0,Vy0,Vz0 \
,Lx0,Ly0,Lz0 \
,dv \
,v \
,r \
,R,V,B \
); \
Eblock \
/* Procedure de creation et d'initialisation d'un quark. */
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* C R E A T I O N E T D ' I N I T I A L I S A T I O N D ' U N Q U A R K ' u ' : */
/* */
/*************************************************************************************************************************************/
#define iQUARK_u(quark_u,rv,pap,lo,h,P,RV,VB,BR,x0,y0,z0,Vx0,Vy0,Vz0,Lx0,Ly0,Lz0,v,r,R,V,B) \
Bblock \
iQUARK(quark_u \
,QUARK_u \
,rv \
,pap \
,MASSE_QUARK_u \
,lo \
,h \
,ETRANGETE_QUARK_u \
,ISOSPIN_QUARK_u \
,NOMBRE_LEPTONIQUE_QUARK_u \
,NOMBRE_BARYONIQUE_QUARK_u \
,P \
,ETRANGETE_QUARK_u \
,CHARME_QUARK_u \
,BEAUTE_QUARK_u \
,VERITE_QUARK_u \
,CHARGE_ELECTRIQUE_QUARK_u \
,CHARGE_FAIBLE_QUARK_u \
,RV,VB,BR \
,x0,y0,z0 \
,Vx0,Vy0,Vz0 \
,Lx0,Ly0,Lz0 \
,DUREE_DE_VIE_QUARK_u \
,v \
,r \
,R,V,B \
); \
Eblock \
/* Procedure de creation et d'initialisation d'un quark 'u'. */
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* C R E A T I O N E T D ' I N I T I A L I S A T I O N D ' U N Q U A R K ' d ' : */
/* */
/*************************************************************************************************************************************/
#define iQUARK_d(quark_d,rv,pap,lo,h,P,RV,VB,BR,x0,y0,z0,Vx0,Vy0,Vz0,Lx0,Ly0,Lz0,v,r,R,V,B) \
Bblock \
iQUARK(quark_d \
,QUARK_d \
,rv \
,pap \
,MASSE_QUARK_d \
,lo \
,h \
,ETRANGETE_QUARK_d \
,ISOSPIN_QUARK_d \
,NOMBRE_LEPTONIQUE_QUARK_d \
,NOMBRE_BARYONIQUE_QUARK_d \
,P \
,ETRANGETE_QUARK_d \
,CHARME_QUARK_d \
,BEAUTE_QUARK_d \
,VERITE_QUARK_d \
,CHARGE_ELECTRIQUE_QUARK_d \
,CHARGE_FAIBLE_QUARK_d \
,RV,VB,BR \
,x0,y0,z0 \
,Vx0,Vy0,Vz0 \
,Lx0,Ly0,Lz0 \
,DUREE_DE_VIE_QUARK_d \
,v \
,r \
,R,V,B \
); \
Eblock \
/* Procedure de creation et d'initialisation d'un quark 'd'. */
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* C R E A T I O N E T D ' I N I T I A L I S A T I O N D ' U N Q U A R K ' c ' : */
/* */
/*************************************************************************************************************************************/
#define iQUARK_c(quark_c,rv,pap,lo,h,P,RV,VB,BR,x0,y0,z0,Vx0,Vy0,Vz0,Lx0,Ly0,Lz0,v,r,R,V,B) \
Bblock \
iQUARK(quark_c \
,QUARK_c \
,rv \
,pap \
,MASSE_QUARK_c \
,lo \
,h \
,ETRANGETE_QUARK_c \
,ISOSPIN_QUARK_c \
,NOMBRE_LEPTONIQUE_QUARK_c \
,NOMBRE_BARYONIQUE_QUARK_c \
,P \
,ETRANGETE_QUARK_c \
,CHARME_QUARK_c \
,BEAUTE_QUARK_c \
,VERITE_QUARK_c \
,CHARGE_ELECTRIQUE_QUARK_c \
,CHARGE_FAIBLE_QUARK_c \
,RV,VB,BR \
,x0,y0,z0 \
,Vx0,Vy0,Vz0 \
,Lx0,Ly0,Lz0 \
,DUREE_DE_VIE_QUARK_c \
,v \
,r \
,R,V,B \
); \
Eblock \
/* Procedure de creation et d'initialisation d'un quark 'c'. */
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* C R E A T I O N E T D ' I N I T I A L I S A T I O N D ' U N Q U A R K ' s ' : */
/* */
/*************************************************************************************************************************************/
#define iQUARK_s(quark_s,rv,pap,lo,h,P,RV,VB,BR,x0,y0,z0,Vx0,Vy0,Vz0,Lx0,Ly0,Lz0,v,r,R,V,B) \
Bblock \
iQUARK(quark_s \
,QUARK_s \
,rv \
,pap \
,MASSE_QUARK_s \
,lo \
,h \
,ETRANGETE_QUARK_s \
,ISOSPIN_QUARK_s \
,NOMBRE_LEPTONIQUE_QUARK_s \
,NOMBRE_BARYONIQUE_QUARK_s \
,P \
,ETRANGETE_QUARK_s \
,CHARME_QUARK_s \
,BEAUTE_QUARK_s \
,VERITE_QUARK_s \
,CHARGE_ELECTRIQUE_QUARK_s \
,CHARGE_FAIBLE_QUARK_s \
,RV,VB,BR \
,x0,y0,z0 \
,Vx0,Vy0,Vz0 \
,Lx0,Ly0,Lz0 \
,DUREE_DE_VIE_QUARK_s \
,v \
,r \
,R,V,B \
); \
Eblock \
/* Procedure de creation et d'initialisation d'un quark 's'. */
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* C R E A T I O N E T D ' I N I T I A L I S A T I O N D ' U N Q U A R K ' t ' : */
/* */
/*************************************************************************************************************************************/
#define iQUARK_t(quark_t,rv,pap,lo,h,P,RV,VB,BR,x0,y0,z0,Vx0,Vy0,Vz0,Lx0,Ly0,Lz0,v,r,R,V,B) \
Bblock \
iQUARK(quark_t \
,QUARK_t \
,rv \
,pap \
,MASSE_QUARK_t \
,lo \
,h \
,ETRANGETE_QUARK_t \
,ISOSPIN_QUARK_t \
,NOMBRE_LEPTONIQUE_QUARK_t \
,NOMBRE_BARYONIQUE_QUARK_t \
,P \
,ETRANGETE_QUARK_t \
,CHARME_QUARK_t \
,BEAUTE_QUARK_t \
,VERITE_QUARK_t \
,CHARGE_ELECTRIQUE_QUARK_t \
,CHARGE_FAIBLE_QUARK_t \
,RV,VB,BR \
,x0,y0,z0 \
,Vx0,Vy0,Vz0 \
,Lx0,Ly0,Lz0 \
,DUREE_DE_VIE_QUARK_t \
,v \
,r \
,R,V,B \
); \
Eblock \
/* Procedure de creation et d'initialisation d'un quark 't'. */
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* C R E A T I O N E T D ' I N I T I A L I S A T I O N D ' U N Q U A R K ' b ' : */
/* */
/*************************************************************************************************************************************/
#define iQUARK_b(quark_b,rv,pap,lo,h,P,RV,VB,BR,x0,y0,z0,Vx0,Vy0,Vz0,Lx0,Ly0,Lz0,v,r,R,V,B) \
Bblock \
iQUARK(quark_b \
,QUARK_b \
,rv \
,pap \
,MASSE_QUARK_b \
,lo \
,h \
,ETRANGETE_QUARK_b \
,ISOSPIN_QUARK_b \
,NOMBRE_LEPTONIQUE_QUARK_b \
,NOMBRE_BARYONIQUE_QUARK_b \
,P \
,ETRANGETE_QUARK_b \
,CHARME_QUARK_b \
,BEAUTE_QUARK_b \
,VERITE_QUARK_b \
,CHARGE_ELECTRIQUE_QUARK_b \
,CHARGE_FAIBLE_QUARK_b \
,RV,VB,BR \
,x0,y0,z0 \
,Vx0,Vy0,Vz0 \
,Lx0,Ly0,Lz0 \
,DUREE_DE_VIE_QUARK_b \
,v \
,r \
,R,V,B \
); \
Eblock \
/* Procedure de creation et d'initialisation d'un quark 'b'. */
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* C R E A T I O N E T D ' I N I T I A L I S A T I O N D ' U N B O S O N : */
/* */
/*************************************************************************************************************************************/
#define iBOSON(boson,n,rv,pap,m0,p,lo,h,s,T,nl,nb,P,S,c,b,t,ce,cf,RV,VB,BR,x0,y0,z0,Vx0,Vy0,Vz0,Lx0,Ly0,Lz0,dv,v,r,R,V,B) \
Bblock \
__iPARTICULE(boson \
,n \
,rv \
,pap \
,m0 \
,p \
,lo \
,h \
,s \
,T \
,nl \
,nb \
,P \
,S \
,c \
,b \
,t \
,ce \
,cf \
,RV,VB,BR \
,x0,y0,z0 \
,Vx0,Vy0,Vz0 \
,Lx0,Ly0,Lz0 \
,dv \
,v \
,r \
,R,V,B \
); \
Eblock \
/* Procedure de creation et d'initialisation d'un boson. */
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* C R E A T I O N E T D ' I N I T I A L I S A T I O N D ' U N P H O T O N : */
/* */
/*************************************************************************************************************************************/
#define iPHOTON(photon,rv,lo,h,P,x0,y0,z0,Vx0,Vy0,Vz0,Lx0,Ly0,Lz0,v,r,R,V,B) \
Bblock \
iBOSON(photon \
,PHOTON \
,rv \
,PARTICULE_ET_ANTIPARTICULE \
,MASSE_PHOTON \
,PORTEE_DE_L_INTERACTION_ELECTROMAGNETIQUE \
,lo \
,h \
,SPINs_PHOTON \
,ISOSPIN_PHOTON \
,NOMBRE_LEPTONIQUE_PHOTON \
,NOMBRE_BARYONIQUE_PHOTON \
,P \
,ETRANGETE_PHOTON \
,CHARME_PHOTON \
,BEAUTE_PHOTON \
,VERITE_PHOTON \
,CHARGE_ELECTRIQUE_PHOTON \
,CHARGE_FAIBLE_PHOTON \
,cc0,cc0,cc0 \
,x0,y0,z0 \
,Vx0,Vy0,Vz0 \
,Lx0,Ly0,Lz0 \
,DUREE_DE_VIE_PHOTON \
,v \
,r \
,R,V,B \
); \
Eblock \
/* Procedure de creation et d'initialisation d'un photon. */
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* C R E A T I O N E T D ' I N I T I A L I S A T I O N D ' U N B O S O N ' W ' : */
/* */
/*************************************************************************************************************************************/
#define iWm(boson_Wm,rv,pap,lo,h,P,x0,y0,z0,Vx0,Vy0,Vz0,Lx0,Ly0,Lz0,v,r,R,V,B) \
Bblock \
iBOSON(boson_Wm \
,Wm \
,rv \
,pap \
,MASSE_Wm \
,PORTEE_DE_L_INTERACTION_FAIBLE \
,lo \
,h \
,SPINs_Wm \
,ISOSPIN_Wm \
,NOMBRE_LEPTONIQUE_Wm \
,NOMBRE_BARYONIQUE_Wm \
,P \
,ETRANGETE_Wm \
,CHARME_Wm \
,BEAUTE_Wm \
,VERITE_Wm \
,CHARGE_ELECTRIQUE_Wm \
,CHARGE_FAIBLE_Wm \
,cc0,cc0,cc0 \
,x0,y0,z0 \
,Vx0,Vy0,Vz0 \
,Lx0,Ly0,Lz0 \
,DUREE_DE_VIE_Wm \
,v \
,r \
,R,V,B \
); \
Eblock \
/* Procedure de creation et d'initialisation d'un boson 'W'. */
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* C R E A T I O N E T D ' I N I T I A L I S A T I O N D ' U N B O S O N ' Z 0 ' : */
/* */
/*************************************************************************************************************************************/
#define iZ0(boson_Z0,rv,pap,lo,h,P,x0,y0,z0,Vx0,Vy0,Vz0,Lx0,Ly0,Lz0,v,r,R,V,B) \
Bblock \
iBOSON(boson_Z0 \
,Z0 \
,rv \
,pap \
,MASSE_Z0 \
,PORTEE_DE_L_INTERACTION_FAIBLE \
,lo \
,h \
,SPINs_Z0 \
,ISOSPIN_Z0 \
,NOMBRE_LEPTONIQUE_Z0 \
,NOMBRE_BARYONIQUE_Z0 \
,P \
,ETRANGETE_Z0 \
,CHARME_Z0 \
,BEAUTE_Z0 \
,VERITE_Z0 \
,CHARGE_ELECTRIQUE_Z0 \
,CHARGE_FAIBLE_Z0 \
,cc0,cc0,cc0 \
,x0,y0,z0 \
,Vx0,Vy0,Vz0 \
,Lx0,Ly0,Lz0 \
,DUREE_DE_VIE_Z0 \
,v \
,r \
,R,V,B \
); \
Eblock \
/* Procedure de creation et d'initialisation d'un boson 'Z0'. */
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* C R E A T I O N E T D ' I N I T I A L I S A T I O N D ' U N G L U O N : */
/* */
/*************************************************************************************************************************************/
#define iGLUON(gluon,rv,pap,lo,h,P,RV,VB,BR,x0,y0,z0,Vx0,Vy0,Vz0,Lx0,Ly0,Lz0,v,r,R,V,B) \
Bblock \
iBOSON(gluon \
,GLUON \
,rv \
,pap \
,MASSE_GLUON \
,PORTEE_DE_L_INTERACTION_FORTE \
,lo \
,h \
,SPINs_GLUON \
,ISOSPIN_GLUON \
,NOMBRE_LEPTONIQUE_GLUON \
,NOMBRE_BARYONIQUE_GLUON \
,P \
,ETRANGETE_GLUON \
,CHARME_GLUON \
,BEAUTE_GLUON \
,VERITE_GLUON \
,CHARGE_ELECTRIQUE_GLUON \
,CHARGE_FAIBLE_GLUON \
,RV,VB,BR \
,x0,y0,z0 \
,Vx0,Vy0,Vz0 \
,Lx0,Ly0,Lz0 \
,DUREE_DE_VIE_GLUON \
,v \
,r \
,R,V,B \
); \
Eblock \
/* Procedure de creation et d'initialisation d'un gluon. */
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* C R E A T I O N E T D ' I N I T I A L I S A T I O N D ' U N B O S O N ' Y ' : */
/* */
/*************************************************************************************************************************************/
#define iY(boson_Y,rv,pap,lo,h,P,RV,VB,BR,x0,y0,z0,Vx0,Vy0,Vz0,Lx0,Ly0,Lz0,v,r,R,V,B) \
Bblock \
iBOSON(boson_Y \
,Y \
,rv \
,pap \
,MASSE_Y \
,PORTEE_DE_X_ET_Y \
,lo \
,h \
,SPINs_Y \
,ISOSPIN_Y \
,NOMBRE_LEPTONIQUE_Y \
,NOMBRE_BARYONIQUE_Y \
,P \
,ETRANGETE_Y \
,CHARME_Y \
,BEAUTE_Y \
,VERITE_Y \
,CHARGE_ELECTRIQUE_Y \
,CHARGE_FAIBLE_Y \
,RV,VB,BR \
,x0,y0,z0 \
,Vx0,Vy0,Vz0 \
,Lx0,Ly0,Lz0 \
,DUREE_DE_VIE_Y \
,v \
,r \
,R,V,B \
); \
Eblock \
/* Procedure de creation et d'initialisation d'un boson 'Y'. */
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* C R E A T I O N E T D ' I N I T I A L I S A T I O N D ' U N B O S O N ' X ' : */
/* */
/*************************************************************************************************************************************/
#define iX(boson_X,rv,pap,lo,h,P,RV,VB,BR,x0,y0,z0,Vx0,Vy0,Vz0,Lx0,Ly0,Lz0,v,r,R,V,B) \
Bblock \
iBOSON(boson_X \
,X \
,rv \
,pap \
,MASSE_X \
,PORTEE_DE_X_ET_Y \
,lo \
,h \
,SPINs_X \
,ISOSPIN_X \
,NOMBRE_LEPTONIQUE_X \
,NOMBRE_BARYONIQUE_X \
,P \
,ETRANGETE_X \
,CHARME_X \
,BEAUTE_X \
,VERITE_X \
,CHARGE_ELECTRIQUE_X \
,CHARGE_FAIBLE_X \
,RV,VB,BR \
,x0,y0,z0 \
,Vx0,Vy0,Vz0 \
,Lx0,Ly0,Lz0 \
,DUREE_DE_VIE_X \
,v \
,r \
,R,V,B \
); \
Eblock \
/* Procedure de creation et d'initialisation d'un boson 'X'. */
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* C R E A T I O N E T D ' I N I T I A L I S A T I O N D ' U N G R A V I T O N : */
/* */
/*************************************************************************************************************************************/
#define iGRAVITON(graviton,rv,pap,lo,h,P,x0,y0,z0,Vx0,Vy0,Vz0,Lx0,Ly0,Lz0,v,r,R,V,B) \
Bblock \
iBOSON(graviton \
,GRAVITON \
,rv \
,pap \
,MASSE_GRAVITON \
,PORTEE_DE_L_INTERACTION_GRAVITATIONNELLE \
,lo \
,h \
,SPINs_GRAVITON \
,ISOSPIN_GRAVITON \
,NOMBRE_LEPTONIQUE_GRAVITON \
,NOMBRE_BARYONIQUE_GRAVITON \
,P \
,ETRANGETE_GRAVITON \
,CHARME_GRAVITON \
,BEAUTE_GRAVITON \
,VERITE_GRAVITON \
,CHARGE_ELECTRIQUE_GRAVITON \
,CHARGE_FAIBLE_GRAVITON \
,cc0,cc0,cc0 \
,x0,y0,z0 \
,Vx0,Vy0,Vz0 \
,Lx0,Ly0,Lz0 \
,DUREE_DE_VIE_GRAVITON \
,v \
,r \
,R,V,B \
); \
Eblock \
/* Procedure de creation et d'initialisation d'un graviton. */
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* C R E A T I O N E T D ' I N I T I A L I S A T I O N D ' U N H I G G S : */
/* */
/*************************************************************************************************************************************/
#define iHIGGS(higgs,rv,pap,lo,h,P,x0,y0,z0,Vx0,Vy0,Vz0,Lx0,Ly0,Lz0,v,r,R,V,B) \
Bblock \
iBOSON(higgs \
,HIGGS \
,rv \
,pap \
,MASSE_HIGGS \
,PORTEE_DE_HIGGS \
,lo \
,h \
,SPINs_HIGGS \
,ISOSPIN_HIGGS \
,NOMBRE_LEPTONIQUE_HIGGS \
,NOMBRE_BARYONIQUE_HIGGS \
,P \
,ETRANGETE_HIGGS \
,CHARME_HIGGS \
,BEAUTE_HIGGS \
,VERITE_HIGGS \
,CHARGE_ELECTRIQUE_HIGGS \
,CHARGE_FAIBLE_HIGGS \
,cc0,cc0,cc0 \
,x0,y0,z0 \
,Vx0,Vy0,Vz0 \
,Lx0,Ly0,Lz0 \
,DUREE_DE_VIE_HIGGS \
,v \
,r \
,R,V,B \
); \
Eblock \
/* Procedure de creation et d'initialisation d'un Higgs. */
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* P R O C E D U R E S D ' E D I T I O N D ' U N E P A R T I C U L E : */
/* */
/*************************************************************************************************************************************/
#define pPARTICULE_TABULATION \
SOUS(SOIXANTE,UN) \
/* Tabulation d'edition du signe "=" des messages... */
#define pPARTICULE_ALIGNEMENT \
" ........................................................." \
/* Tabulation d'edition du signe "=" des messages... */
#define pPARTICULE_debut(message) \
Bblock \
CAL2(Prin3("%s%.*s = {" \
,message \
,SOUS(pPARTICULE_TABULATION,chain_Xtaille(message)) \
,pPARTICULE_ALIGNEMENT \
) \
); \
Eblock \
/* Debut de l'edition de quelque chose... */
#define pPARTICULE_separateur \
Bblock \
CAL2(Prin0(",")); \
Eblock \
/* Edition d'un separateur a l'interieur d'un vecteur. */
#define pPARTICULE_fin \
Bblock \
CAL2(Prin0("}\n")); \
Eblock \
/* Fin de l'edition de quelque chose... */
#define pPARTICULE_Int_base(valeur) \
Bblock \
Test(IZNE(valeur)) \
Bblock \
Test(IFEQ(ABSO(valeur),UNDEF)) \
Bblock \
pPARTICULE_CHAR_base(COND(IZGT(valeur),"+indefini","-indefini")); \
Eblock \
ATes \
Bblock \
Test(IFEQ(ABSO(valeur),INFINI)) \
Bblock \
pPARTICULE_CHAR_base(COND(IZGT(valeur),"+infini","-infini")); \
Eblock \
ATes \
Bblock \
CAL2(Prin1("%+d",valeur)); \
Eblock \
ETes \
Eblock \
ETes \
Eblock \
ATes \
Bblock \
CAL2(Prin1("%d",valeur)); \
Eblock \
ETes \
Eblock \
/* Edition inconditionnelle d'une valeur entiere signee. */
#define _pPARTICULE_Int(condition,message,valeur) \
Bblock \
Test(EST_VRAI(condition)) \
Bblock \
pPARTICULE_debut(message); \
pPARTICULE_Int_base(valeur); \
pPARTICULE_fin; \
Eblock \
ATes \
Bblock \
Eblock \
ETes \
Eblock \
/* Edition d'une valeur entiere. */
#define pPARTICULE_rationnel_base(valeur,denominator) \
Bblock \
Test(IFET(IZNE(valeur),IZNE(denominator))) \
Bblock \
Test(IFET(EST_ENTIER(valeur),DIVISIBLE(FRACTION(valeur,denominator),denominator))) \
Bblock \
pPARTICULE_Int_base(INTE(valeur)); \
Eblock \
ATes \
Bblock \
CAL2(Prin2("%+d/%d",FRACTION(valeur,denominator),INTE(denominator))); \
Eblock \
ETes \
Eblock \
ATes \
Bblock \
pPARTICULE_Int_base(INTE(valeur)); \
Eblock \
ETes \
Eblock \
/* Edition inconditionnelle d'une valeur rationnelle. */
#define _pPARTICULE_rationnel(condition,message,valeur,denominator) \
Bblock \
Test(EST_VRAI(condition)) \
Bblock \
pPARTICULE_debut(message); \
pPARTICULE_rationnel_base(valeur,denominator); \
pPARTICULE_fin; \
Eblock \
ATes \
Bblock \
Eblock \
ETes \
Eblock \
/* Edition d'une valeur rationnelle. */
#define pPARTICULE_Float_base(valeur) \
Bblock \
Test(IZNE(valeur)) \
Bblock \
Test(IFEQ(ABSO(valeur),FLOT__UNDEF)) \
Bblock \
pPARTICULE_CHAR_base(COND(IZGT(valeur),"+indefini","-indefini")); \
Eblock \
ATes \
Bblock \
Test(IFEQ(ABSO(valeur),F_INFINI)) \
Bblock \
pPARTICULE_CHAR_base(COND(IZGT(valeur),"+infini","-infini")); \
Eblock \
ATes \
Bblock \
CAL2(Prin1("%+g",valeur)); \
Eblock \
ETes \
Eblock \
ETes \
Eblock \
ATes \
Bblock \
CAL2(Prin1("%g",valeur)); \
Eblock \
ETes \
Eblock \
/* Edition inconditionnelle d'une valeur flottante. */
#define _pPARTICULE_Float(condition,message,valeur) \
Bblock \
Test(EST_VRAI(condition)) \
Bblock \
pPARTICULE_debut(message); \
pPARTICULE_Float_base(valeur); \
pPARTICULE_fin; \
Eblock \
ATes \
Bblock \
Eblock \
ETes \
Eblock \
/* Edition d'une valeur flottante. */
#define _pPARTICULE_rationnel_vecteur(condition,message,composante_1,composante_2,composante_3,denominator) \
Bblock \
Test(EST_VRAI(condition)) \
Bblock \
pPARTICULE_debut(message); \
pPARTICULE_rationnel_base(composante_1,denominator); \
pPARTICULE_separateur; \
pPARTICULE_rationnel_base(composante_2,denominator); \
pPARTICULE_separateur; \
pPARTICULE_rationnel_base(composante_3,denominator); \
pPARTICULE_fin; \
Eblock \
ATes \
Bblock \
Eblock \
ETes \
Eblock \
/* Edition d'un vecteur rationnel. */
#define _pPARTICULE_Float_vecteur(condition,message,composante_1,composante_2,composante_3) \
Bblock \
Test(EST_VRAI(condition)) \
Bblock \
pPARTICULE_debut(message); \
pPARTICULE_Float_base(composante_1); \
pPARTICULE_separateur; \
pPARTICULE_Float_base(composante_2); \
pPARTICULE_separateur; \
pPARTICULE_Float_base(composante_3); \
pPARTICULE_fin; \
Eblock \
ATes \
Bblock \
Eblock \
ETes \
Eblock \
/* Edition d'un vecteur flottant. */
#define pPARTICULE_CHAR_base(valeur) \
Bblock \
CAL2(Prin1("%s",valeur)); \
Eblock \
/* Edition inconditionnelle d'une valeur chaine de caractere. */
#define _pPARTICULE_CHAR(condition,message,valeur) \
Bblock \
Test(EST_VRAI(condition)) \
Bblock \
pPARTICULE_debut(message); \
pPARTICULE_CHAR_base(valeur); \
pPARTICULE_fin; \
Eblock \
ATes \
Bblock \
Eblock \
ETes \
Eblock \
/* Edition d'une valeur chaine de caractere. */
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* E D I T I O N D ' U N E P A R T I C U L E : */
/* */
/*************************************************************************************************************************************/
#define pPARTICULE(particule) \
Bblock \
CAL2(Prin0("\n")); \
\
pPARTICULE_Int(TOUJOURS_VRAI,"etiquette",ETIQUETTE(particule)); \
/* Identification "logique" de la particule. */ \
\
CAL2(Prin0("\n")); \
\
pPARTICULE_CHAR(IFEQ(NOM(particule),QUARK_u),"saveur","QUARK u"); \
pPARTICULE_CHAR(IFEQ(NOM(particule),QUARK_d),"saveur","QUARK d"); \
pPARTICULE_CHAR(IFEQ(NOM(particule),QUARK_c),"saveur","QUARK c"); \
pPARTICULE_CHAR(IFEQ(NOM(particule),QUARK_s),"saveur","QUARK s"); \
pPARTICULE_CHAR(IFEQ(NOM(particule),QUARK_t),"saveur","QUARK t"); \
pPARTICULE_CHAR(IFEQ(NOM(particule),QUARK_b),"saveur","QUARK b"); \
pPARTICULE_CHAR(IFEQ(NOM(particule),LEPTON_electron),"saveur","LEPTON electron"); \
pPARTICULE_CHAR(IFEQ(NOM(particule),LEPTON_NEUTRINO_electron),"saveur","LEPTON NEUTRINO electron"); \
pPARTICULE_CHAR(IFEQ(NOM(particule),LEPTON_muon),"saveur","LEPTON muon"); \
pPARTICULE_CHAR(IFEQ(NOM(particule),LEPTON_NEUTRINO_muon),"saveur","LEPTON NEUTRINO muon"); \
pPARTICULE_CHAR(IFEQ(NOM(particule),LEPTON_tau),"saveur","LEPTON tau"); \
pPARTICULE_CHAR(IFEQ(NOM(particule),LEPTON_NEUTRINO_tau),"saveur","LEPTON NEUTRINO tau"); \
pPARTICULE_CHAR(IFEQ(NOM(particule),PHOTON),"saveur","PHOTON"); \
pPARTICULE_CHAR(IFEQ(NOM(particule),Wm),"saveur","Wm"); \
pPARTICULE_CHAR(IFEQ(NOM(particule),Z0),"saveur","Z0"); \
pPARTICULE_CHAR(IFEQ(NOM(particule),GLUON),"saveur","GLUON"); \
pPARTICULE_CHAR(IFEQ(NOM(particule),Y),"saveur","Y"); \
pPARTICULE_CHAR(IFEQ(NOM(particule),X),"saveur","X"); \
pPARTICULE_CHAR(IFEQ(NOM(particule),GRAVITON),"saveur","GRAVITON"); \
pPARTICULE_CHAR(IFEQ(NOM(particule),HIGGS),"saveur","HIGGS"); \
\
CAL2(Prin0("\n")); \
\
pPARTICULE_CHAR(IFEQ(REELLE_OU_VIRTUELLE(particule),REELLE),"etat","Particule reelle"); \
pPARTICULE_CHAR(IFEQ(REELLE_OU_VIRTUELLE(particule),VIRTUELLE),"etat","Particule virtuelle"); \
/* Identification "physique" de la particule. ATTENTION au 'P' majuscule de 'Particule' */ \
/* destine a bloquer la substitution par le 'particule' argument de 'pPARTICULE(...). */ \
\
pPARTICULE_CHAR(IFEQ(BOSON_OU_FERMION(particule),BOSON),"statistique","boson"); \
pPARTICULE_CHAR(IFEQ(BOSON_OU_FERMION(particule),FERMION),"statistique","fermion"); \
/* Definition de la statistique a laquelle est soumise la particule (quantite "derivee"...). */ \
\
CAL2(Prin0("\n")); \
\
pPARTICULE_Int(TOUJOURS_VRAI,"nombre leptonique",NOMBRE_LEPTONIQUE(particule)); \
pPARTICULE_rationnel(TOUJOURS_VRAI \
,"nombre baryonique" \
,NOMBRE_BARYONIQUE(particule) \
,NOMBRE_DE_QUARKS_DANS_UN_BARYON \
); \
\
CAL2(Prin0("\n")); \
\
pPARTICULE_CHAR(IFEQ(HELICITE(particule),DROITE),"helicite 'h'","droite"); \
pPARTICULE_CHAR(IFEQ(HELICITE(particule),GAUCHE),"helicite 'h'","gauche"); \
pPARTICULE_CHAR(IFEQ(PARITE(particule),PAIRE),"parite 'P'","paire"); \
pPARTICULE_CHAR(IFEQ(PARITE(particule),IMPAIRE),"parite 'P'","impaire"); \
\
CAL2(Prin0("\n")); \
\
pPARTICULE_Int(TOUJOURS_VRAI,"spins 's' (entier)",SPINs(particule)); \
pPARTICULE_rationnel(TOUJOURS_VRAI \
,"spin 'J' (demi-entier)" \
,SPIN(particule) \
,INVERSE_DE_L_UNITE_DE_SPIN \
); \
pPARTICULE_rationnel(TOUJOURS_VRAI,"isospin 'T'",ISOSPIN(particule),INVERSE_DE_L_UNITE_D_ISOSPIN); \
pPARTICULE_Int(TOUJOURS_VRAI,"etrangete 'S'",ETRANGETE(particule)); \
pPARTICULE_Int(TOUJOURS_VRAI,"charme 'c'",CHARME(particule)); \
pPARTICULE_Int(TOUJOURS_VRAI,"beaute 'b'",BEAUTE(particule)); \
pPARTICULE_Int(TOUJOURS_VRAI,"verite 't'",VERITE(particule)); \
pPARTICULE_Int(TOUJOURS_VRAI,"hypercharge 'Y'",HYPERCHARGE(particule)); \
/* Definition des nombres quantiques principaux. */ \
\
CAL2(Prin0("\n")); \
\
pPARTICULE_rationnel(TOUJOURS_VRAI \
,"charge electrique 'ce'" \
,CHARGE_ELECTRIQUE(particule) \
,INVERSE_DE_L_UNITE_DE_CHARGE_ELECTRIQUE \
); \
pPARTICULE_rationnel(TOUJOURS_VRAI \
,"charge faible 'cf'" \
,CHARGE_FAIBLE(particule) \
,INVERSE_DE_L_UNITE_DE_CHARGE_FAIBLE \
); \
pPARTICULE_rationnel_vecteur(TOUJOURS_VRAI \
,"charge de couleur 'cc' [R-V,V-B,B-R]" \
,CHARGE_DE_COULEUR_R_V(particule) \
,CHARGE_DE_COULEUR_V_B(particule) \
,CHARGE_DE_COULEUR_B_R(particule) \
,INVERSE_DE_L_UNITE_DE_CHARGE_DE_COULEUR \
); \
/* Definition des differentes charges. */ \
\
CAL2(Prin0("\n")); \
\
pPARTICULE_Float(TOUJOURS_VRAI,"masse au repos 'm0' (kilogramme)",MASSE_AU_REPOS(particule)); \
pPARTICULE_Float(TOUJOURS_VRAI,"masse relativiste 'm' (kilogramme)",MASSE_RELATIVISTE(particule)); \
pPARTICULE_Float(TOUJOURS_VRAI,"energie 'E' (joule)",ENERGIE(particule)); \
pPARTICULE_Float(IFEQ(BOSON_OU_FERMION(particule),BOSON),"portee 'p'",PORTEE_DE_L_INTERACTION(particule)); \
/* Definition de la masse de la particule. */ \
\
pPARTICULE_Float(TOUJOURS_VRAI,"longueur d'onde 'lambda' (metre)",LONGUEUR_D_ONDE(particule)); \
/* Definition de la longueur d'onde de la particule (equivalence onde-corpuscule...). */ \
\
CAL2(Prin0("\n")); \
\
pPARTICULE_Float(TOUJOURS_VRAI,"date de naissance (seconde)",DATE_DE_NAISSANCE(particule)); \
pPARTICULE_Float(TOUJOURS_VRAI,"duree de vie (seconde)",DUREE_DE_VIE(particule)); \
\
CAL2(Prin0("\n")); \
\
pPARTICULE_Float_vecteur(TOUJOURS_VRAI \
,"position initiale (metre)" \
,POSITION_INITIALE_X(particule) \
,POSITION_INITIALE_Y(particule) \
,POSITION_INITIALE_Z(particule) \
); \
pPARTICULE_Float_vecteur(TOUJOURS_VRAI \
,"position courante (metre)" \
,POSITION_COURANTE_X(particule) \
,POSITION_COURANTE_Y(particule) \
,POSITION_COURANTE_Z(particule) \
); \
/* Definition des coordonnees spatio-temporelles. */ \
\
pPARTICULE_Float_vecteur(TOUJOURS_VRAI \
,"vitesse initiale 'V0' (metre par seconde)" \
,VITESSE_INITIALE_X(particule) \
,VITESSE_INITIALE_Y(particule) \
,VITESSE_INITIALE_Z(particule) \
); \
pPARTICULE_Float_vecteur(TOUJOURS_VRAI \
,"vitesse courante 'V' (metre par seconde)" \
,VITESSE_COURANTE_X(particule) \
,VITESSE_COURANTE_Y(particule) \
,VITESSE_COURANTE_Z(particule) \
); \
pPARTICULE_CHAR(IFEQ_a_peu_pres_absolu(MODULE_DE_LA_VITESSE_COURANTE(particule) \
,VITESSE_DE_LA_LUMIERE \
,FRACTION_DE_LA_VITESSE_DE_LA_LUMIERE \
) \
,"module de la vitesse 'v' (metre par seconde)" \
,"c" \
); \
pPARTICULE_Float(IFNE_a_peu_pres_absolu(MODULE_DE_LA_VITESSE_COURANTE(particule) \
,VITESSE_DE_LA_LUMIERE \
,FRACTION_DE_LA_VITESSE_DE_LA_LUMIERE \
) \
,"module de la vitesse 'v' (metre par seconde)" \
,MODULE_DE_LA_VITESSE_COURANTE(particule) \
); \
pPARTICULE_Float_vecteur(TOUJOURS_VRAI \
,"quantite de mouvement 'P' (kilogramme metre par seconde)" \
,QUANTITE_DE_MOUVEMENT_X(particule) \
,QUANTITE_DE_MOUVEMENT_Y(particule) \
,QUANTITE_DE_MOUVEMENT_Z(particule) \
); \
/* Definition des coordonnees spatio-temporelles "derivees" et relativistes... */ \
\
pPARTICULE_Float_vecteur(TOUJOURS_VRAI \
,"moment cinetique 'L' (kilogramme metre carre par seconde)" \
,MOMENT_CINETIQUE_X(particule) \
,MOMENT_CINETIQUE_Y(particule) \
,MOMENT_CINETIQUE_Z(particule) \
); \
\
pPARTICULE_Float_vecteur(TOUJOURS_VRAI \
,"moment magnetique 'M' (ampere metre carre)" \
,MOMENT_MAGNETIQUE_X(particule) \
,MOMENT_MAGNETIQUE_Y(particule) \
,MOMENT_MAGNETIQUE_Z(particule) \
); \
/* Definition des moments cinetique et magnetique. */ \
\
CAL2(Prin0("\n")); \
\
pPARTICULE_CHAR(IFEQ(VISUALISER(particule),VRAI),"visualiser","oui"); \
pPARTICULE_CHAR(IFEQ(VISUALISER(particule),FAUX),"visualiser","non"); \
pPARTICULE_Float(TOUJOURS_VRAI,"rayon 'r' (metre)",RAYON(particule)); \
pPARTICULE_Float_vecteur(IL_FAUT(VISUALISER(particule)) \
,"couleur de visualisation" \
,COULEUR_ROUGE(particule),COULEUR_VERTE(particule),COULEUR_BLEUE(particule) \
); \
/* Definition de la visualisation de la particule. */ \
\
CAL2(Prin0("\n")); \
Eblock \
/* Procedure d'edition d'une particule quelconque... */