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