/*************************************************************************************************************************************/ /* */ /* D E F I N I T I O N S D U D E P L A C E M E N T D E S P A R T I C U L E S : */ /* */ /* */ /* Author of '$xrq/nucleon.L9$I' : */ /* */ /* Jean-Francois Colonna (LACTAMME, 1991??????????). */ /* */ /*************************************************************************************************************************************/ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* D E F I N I T I O N G E N E R A L E D E S C A R A C T E R I S T I Q U E S */ /* G E O M E T R I Q U E S D U D E P L A C E M E N T D E S P A R T I C U L E S ( D E B U T ) : */ /* */ /*************************************************************************************************************************************/ #define DEFINITION_DE_LA_MATRICE_DE_ROTATION \ DEFV(matrixF_3D,matrice_de_rotation); \ /* Definition de la matrice de rotation de l'espace physique. */ #define DEFINITION_DE_LA_VITESSE_ALEATOIRE \ DEFINITION_DE_LA_MATRICE_DE_ROTATION; \ /* Definition de la matrice de rotation de l'espace physique. Cette definition est faite */ \ /* ici afin que l'on puisse imbriquer 'DEBUT_DE_ROTATION_ALEATOIRE_DE_L_ESPACE_PHYSIQUE' */ \ /* dans 'DEBUT_DE_ROTATION_D_ALIGNEMENT_DE_L_ESPACE_PHYSIQUE_SUR_UNE_PARTICULE' au cas ou */ \ /* l'on rencontre une particule immobile... */ \ DEFINITION_D_UNE_DIRECTION_EN_COORDONNEES_SPHERIQUES(rho_de_la_vitesse,theta_spherique,phi_spherique); \ /* Definition d'une direction en coordonnees spheriques. Mais on notera avec attention que */ \ /* 'rho_de_la_vitesse' est utilise aussi bien en coordonnees spheriques (3D) qu'en */ \ /* coordonnees polaires (2D)... */ \ DEFV(deltaF_3D,vitesse_courante); \ /* Pour memoriser la vitesse (aleatoire) du quark virtuel courant, sous la forme d'un */ \ /* vecteur (vx,vy,vz) en coordonnees cartesiennes, mais aussi en coordonnees */ \ /* spheriques {rho,theta,phi}. */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* D E F I N I T I O N D U D E P L A C E M E N T D E S P A R T I C U L E S : */ /* */ /*************************************************************************************************************************************/ #define INITIALISATION_DU_MODULE_DE_LA_VITESSE_ALEATOIRE_D_UN_QUARK_OU_D_UN_ANTI_QUARK \ Bblock \ GENERATION_D_UNE_VALEUR(rho_de_la_vitesse \ ,COMPOSITION_RELATIVISTE_DES_VITESSES(VITESSE_MOYENNE_DES_QUARKS_ET_DES_ANTI_QUARKS \ ,NEGA(DISPERSION_VITESSE_DES_QUARKS_ET_DES_ANTI_QUARKS) \ ) \ ,COMPOSITION_RELATIVISTE_DES_VITESSES(VITESSE_MOYENNE_DES_QUARKS_ET_DES_ANTI_QUARKS \ ,NEUT(DISPERSION_VITESSE_DES_QUARKS_ET_DES_ANTI_QUARKS) \ ) \ ); \ Eblock \ /* Initialisation aleatoire du module de la vitesse d'un quark. */ #define CONSERVATION_DU_MODULE_DE_LA_VITESSE_D_UN_QUARK_OU_D_UN_ANTI_QUARK(quark) \ Bblock \ EGAL(rho_de_la_vitesse,longF3D(ASI2(quark,espace_temps,vitesse))); \ Eblock \ /* Conservation du module de la vitesse d'un quark. */ #define INITIALISATION_DE_LA_VITESSE_ALEATOIRE_D_UN_QUARK_OU_D_UN_ANTI_QUARK \ Bblock \ INITIALISATION_DU_MODULE_DE_LA_VITESSE_ALEATOIRE_D_UN_QUARK_OU_D_UN_ANTI_QUARK; \ /* Initialisation aleatoire du module de la vitesse d'un quark. */ \ GENERATION_D_UNE_DIRECTION_3D(theta_spherique,phi_spherique); \ /* La vitesse est choisie aleatoirement (en coordonnees spheriques), */ \ Eblock \ /* Initialisation aleatoire de la vitesse d'un quark. */ #define INITIALISATION_DU_MODULE_DE_LA_VITESSE_ALEATOIRE_D_UN_GLUON \ Bblock \ EGAL(rho_de_la_vitesse,VITESSE_DES_GLUONS); \ /* Le module de la vitesse des gluons est figees, puisque ces particules se deplacent a la */ \ /* vitesse de la lumiere... */ \ Eblock \ /* Initialisation du module de la vitesse d'un gluon, mais en respectant le fait qu'ils */ \ /* se deplacent tous a la vitesse de la lumiere... */ #define INITIALISATION_DE_LA_VITESSE_ALEATOIRE_D_UN_GLUON \ Bblock \ INITIALISATION_DU_MODULE_DE_LA_VITESSE_ALEATOIRE_D_UN_GLUON; \ /* Le module de la vitesse des gluons est figees, puisque ces particules se deplacent a la */ \ /* vitesse de la lumiere... */ \ GENERATION_D_UNE_DIRECTION_3D(theta_spherique,phi_spherique); \ /* La vitesse est choisie aleatoirement (en coordonnees spheriques), */ \ Eblock \ /* Initialisation aleatoire de la vitesse d'un gluon, mais en respectant le fait qu'ils */ \ /* se deplacent tous a la vitesse de la lumiere... */ #define INITIALISATION_DU_MODULE_DE_LA_VITESSE_ALEATOIRE_D_UN_ELECTRON_OU_D_UN_ANTI_ELECTRON \ Bblock \ GENERATION_D_UNE_VALEUR(rho_de_la_vitesse \ ,COMPOSITION_RELATIVISTE_DES_VITESSES \ (vitesse_moyenne_des_electrons_et_des_anti_electrons \ ,NEGA(DISPERSION_VITESSE_DES_ELECTRONS_ET_DES_ANTI_ELECTRONS) \ ) \ ,COMPOSITION_RELATIVISTE_DES_VITESSES \ (vitesse_moyenne_des_electrons_et_des_anti_electrons \ ,NEUT(DISPERSION_VITESSE_DES_ELECTRONS_ET_DES_ANTI_ELECTRONS) \ ) \ ); \ Eblock \ /* Initialisation aleatoire du module de la vitesse d'un electron. */ #define CONSERVATION_DU_MODULE_DE_LA_VITESSE_D_UN_ELECTRON_OU_D_UN_ANTI_ELECTRON(electron) \ Bblock \ EGAL(rho_de_la_vitesse,longF3D(ASI2(electron,espace_temps,vitesse))); \ Eblock \ /* Conservation du module de la vitesse d'un electron. */ #define INITIALISATION_DE_LA_VITESSE_ALEATOIRE_D_UN_ELECTRON_OU_D_UN_ANTI_ELECTRON \ Bblock \ INITIALISATION_DU_MODULE_DE_LA_VITESSE_ALEATOIRE_D_UN_ELECTRON_OU_D_UN_ANTI_ELECTRON; \ /* Initialisation aleatoire du module de la vitesse d'un electron. */ \ GENERATION_D_UNE_DIRECTION_3D(theta_spherique,phi_spherique); \ /* La vitesse est choisie aleatoirement (en coordonnees spheriques), */ \ Eblock \ /* Initialisation aleatoire de la vitesse d'un electron. */ #define INITIALISATION_DU_MODULE_DE_LA_VITESSE_ALEATOIRE_D_UN_NEUTRINO \ Bblock \ GENERATION_D_UNE_VALEUR(rho_de_la_vitesse \ ,COMPOSITION_RELATIVISTE_DES_VITESSES \ (VITESSE_MOYENNE_DES_NEUTRINOS \ ,NEGA(DISPERSION_VITESSE_DES_NEUTRINOS) \ ) \ ,COMPOSITION_RELATIVISTE_DES_VITESSES \ (VITESSE_MOYENNE_DES_NEUTRINOS \ ,NEUT(DISPERSION_VITESSE_DES_NEUTRINOS) \ ) \ ); \ Eblock \ /* Initialisation aleatoire du module de la vitesse d'un neutrino. */ #define CONSERVATION_DU_MODULE_DE_LA_VITESSE_D_UN_NEUTRINO(neutrino) \ Bblock \ EGAL(rho_de_la_vitesse,longF3D(ASI2(neutrino,espace_temps,vitesse))); \ Eblock \ /* Conservation du module de la vitesse d'un neutrino. */ #define INITIALISATION_DE_LA_VITESSE_ALEATOIRE_D_UN_NEUTRINO \ Bblock \ INITIALISATION_DU_MODULE_DE_LA_VITESSE_ALEATOIRE_D_UN_NEUTRINO; \ /* Initialisation aleatoire du module de la vitesse d'un neutrino. */ \ GENERATION_D_UNE_DIRECTION_3D(theta_spherique,phi_spherique); \ /* La vitesse est choisie aleatoirement (en coordonnees spheriques), */ \ Eblock \ /* Initialisation aleatoire de la vitesse d'un neutrino. */ #define INITIALISATION_DU_MODULE_DE_LA_VITESSE_ALEATOIRE_D_UN_PHOTON \ Bblock \ EGAL(rho_de_la_vitesse,VITESSE_DES_PHOTONS); \ /* Le module de la vitesse des photons est figees, puisque ces particules se deplacent a la */ \ /* vitesse de la lumiere... */ \ Eblock \ /* Initialisation du module de la vitesse d'un photon, mais en respectant le fait qu'ils */ \ /* se deplacent tous a la vitesse de la lumiere... */ #define INITIALISATION_DE_LA_VITESSE_ALEATOIRE_D_UN_PHOTON \ Bblock \ INITIALISATION_DU_MODULE_DE_LA_VITESSE_ALEATOIRE_D_UN_PHOTON; \ /* Le module de la vitesse des photons est figees, puisque ces particules se deplacent a la */ \ /* vitesse de la lumiere... */ \ GENERATION_D_UNE_DIRECTION_3D(theta_spherique,phi_spherique); \ /* La vitesse est choisie aleatoirement (en coordonnees spheriques), */ \ Eblock \ /* Initialisation aleatoire de la vitesse d'un photon, mais en respectant le fait qu'ils */ \ /* se deplacent tous a la vitesse de la lumiere... */ #define INITIALISATION_DU_MODULE_DE_LA_VITESSE_ALEATOIRE_D_UN_Z0 \ Bblock \ EGAL(rho_de_la_vitesse,VITESSE_DES_Z0S); \ /* Le module de la vitesse des z0s est figees, puisque ces particules se deplacent a la */ \ /* vitesse de la lumiere... */ \ Eblock \ /* Initialisation du module de la vitesse d'un z0, mais en respectant le fait qu'ils */ \ /* se deplacent tous a la vitesse de la lumiere... */ #define INITIALISATION_DE_LA_VITESSE_ALEATOIRE_D_UN_Z0 \ Bblock \ INITIALISATION_DU_MODULE_DE_LA_VITESSE_ALEATOIRE_D_UN_Z0; \ /* Le module de la vitesse des z0s est figees, puisque ces particules se deplacent a la */ \ /* vitesse de la lumiere... */ \ GENERATION_D_UNE_DIRECTION_3D(theta_spherique,phi_spherique); \ /* La vitesse est choisie aleatoirement (en coordonnees spheriques), */ \ Eblock \ /* Initialisation aleatoire de la vitesse d'un z0, mais en respectant le fait qu'ils */ \ /* se deplacent tous a la vitesse de la lumiere... */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* D E F I N I T I O N G E N E R A L E D E S C A R A C T E R I S T I Q U E S */ /* G E O M E T R I Q U E S D U D E P L A C E M E N T D E S P A R T I C U L E S ( S U I T E ) : */ /* */ /*************************************************************************************************************************************/ #define COMBINAISON_DE_TYPE_RESULTANTE \ FU \ /* Ponderation destinee a calculer la resultante de deux vitesses... */ #define DEFINITION_DE_LA_COMBINAISON_DE_2_POSITIONS(resultante_des_2_positions,resultante_des_2_vitesses,k1,part1,k2,part2) \ /* ATTENTION : il n'y a pas de (Bblock,Eblock) afin que 'resultante_des_2_vitesses' et */ \ /* 'resultante_des_2_positions' soient connus a l'exterieur... */ \ DEFV(pointF_3D,resultante_des_2_positions); \ /* Definition d'une position moyenne entre les 2 particules... */ \ DEFV(deltaF_3D,resultante_des_2_vitesses); \ /* Definition d'un vecteur resultante des deux vecteurs vitesse des particules incidentes ; */ \ /* il est dit "virtuel" parce que son module peut tres bien etre superieur a la vitesse de */ \ /* la lumiere, ce qui n'a aucune importance, puisque seule sa direction importe... */ \ INITIALISATION_POINT_3D(resultante_des_2_positions \ ,LRZ2(k1,COORDONNEES(part1,x) \ ,k2,COORDONNEES(part2,x) \ ) \ ,LRZ2(k1,COORDONNEES(part1,y) \ ,k2,COORDONNEES(part2,y) \ ) \ ,LRZ2(k1,COORDONNEES(part1,z) \ ,k2,COORDONNEES(part2,z) \ ) \ ); \ /* La position resultante est choisie a mi-chemin de 'part1' et 'part2'. */ \ INITIALISATION_ACCROISSEMENT_3D(resultante_des_2_vitesses \ ,LIZ2(k1,ASI3(part1,espace_temps,vitesse,dx) \ ,k2,ASI3(part2,espace_temps,vitesse,dx) \ ) \ ,LIZ2(k1,ASI3(part1,espace_temps,vitesse,dy) \ ,k2,ASI3(part2,espace_temps,vitesse,dy) \ ) \ ,LIZ2(k1,ASI3(part1,espace_temps,vitesse,dz) \ ,k2,ASI3(part2,espace_temps,vitesse,dz) \ ) \ ); \ /* La vitesse resultante est choisie comme la somme arithmetique des 2 vitesses, mais */ \ /* ceci est tout a fait arbitraire, puisqu'en fait seule nous interesse une direction. */ \ /* On notera de plus que l'on utilise 'ADD2(v1,v2)' et non pas la fonction relativiste */ \ /* 'COMPOSITION_RELATIVISTE_DES_VITESSES(v1,v2)' car d'une part cette operation est */ \ /* arbitraire, et que d'autre part, dans le cas v2=-v1, on arriverait au rapport 0/0... */ \ /* */ \ /* calcul de la resultante de 2 positions (scalaire et vectorielle) avec ponderation. */ #define DEFINITION_DE_LA_RESULTANTE_DE_2_POSITIONS(resultante_des_2_positions,resultante_des_2_vitesses,part1,part2) \ /* ATTENTION : il n'y a pas de (Bblock,Eblock) afin que 'resultante_des_2_vitesses' et */ \ /* 'resultante_des_2_positions' soient connus a l'exterieur... */ \ DEFINITION_DE_LA_COMBINAISON_DE_2_POSITIONS(resultante_des_2_positions \ ,resultante_des_2_vitesses \ ,COMBINAISON_DE_TYPE_RESULTANTE,part1 \ ,COMBINAISON_DE_TYPE_RESULTANTE,part2 \ ); \ /* Calcul de la resultante de 2 positions (scalaire et vectorielle) sans ponderation. */ #define DEFINITION_DE_LA_COMBINAISON_DE_3_POSITIONS(resultante_des_3_positions,resultante_des_3_vitesses,k1,part1,k2,part2,k3,part3) \ /* ATTENTION : il n'y a pas de (Bblock,Eblock) afin que 'resultante_des_3_vitesses' et */ \ /* 'resultante_des_3_positions' soient connus a l'exterieur... */ \ DEFV(pointF_3D,resultante_des_3_positions); \ /* Definition d'une position moyenne entre les 3 particules... */ \ DEFV(deltaF_3D,resultante_des_3_vitesses); \ /* Definition d'un vecteur resultante des deux vecteurs vitesse des particules incidentes ; */ \ /* il est dit "virtuel" parce que son module peut tres bien etre superieur a la vitesse de */ \ /* la lumiere, ce qui n'a aucune importance, puisque seule sa direction importe... */ \ INITIALISATION_POINT_3D(resultante_des_3_positions \ ,LRZ3(k1,COORDONNEES(part1,x) \ ,k2,COORDONNEES(part2,x) \ ,k3,COORDONNEES(part3,x) \ ) \ ,LRZ3(k1,COORDONNEES(part1,y) \ ,k2,COORDONNEES(part2,y) \ ,k3,COORDONNEES(part3,y) \ ) \ ,LRZ3(k1,COORDONNEES(part1,z) \ ,k2,COORDONNEES(part2,z) \ ,k3,COORDONNEES(part3,z) \ ) \ ); \ /* La position resultante est choisie a mi-chemin de 'part1', 'part2' et 'part3'. */ \ INITIALISATION_ACCROISSEMENT_3D(resultante_des_3_vitesses \ ,LIZ3(k1,ASI3(part1,espace_temps,vitesse,dx) \ ,k2,ASI3(part2,espace_temps,vitesse,dx) \ ,k3,ASI3(part3,espace_temps,vitesse,dx) \ ) \ ,LIZ3(k1,ASI3(part1,espace_temps,vitesse,dy) \ ,k2,ASI3(part2,espace_temps,vitesse,dy) \ ,k3,ASI3(part3,espace_temps,vitesse,dy) \ ) \ ,LIZ3(k1,ASI3(part1,espace_temps,vitesse,dz) \ ,k2,ASI3(part2,espace_temps,vitesse,dz) \ ,k3,ASI3(part3,espace_temps,vitesse,dz) \ ) \ ); \ /* La vitesse resultante est choisie comme la somme arithmetique des 3 vitesses, mais */ \ /* ceci est tout a fait arbitraire, puisqu'en fait seule nous interesse une direction. */ \ /* On notera de plus que l'on utilise 'ADD3(v1,v2,v3)' et non pas la fonction relativiste */ \ /* qui n'existe pas pour 3 vitesses... */ \ /* */ \ /* calcul de la resultante de 3 positions (scalaire et vectorielle) avec ponderation. */ #define DEFINITION_DE_LA_RESULTANTE_DE_3_POSITIONS(resultante_des_3_positions,resultante_des_3_vitesses,part1,part2,part3) \ /* ATTENTION : il n'y a pas de (Bblock,Eblock) afin que 'resultante_des_2_vitesses' et */ \ /* 'resultante_des_2_positions' soient connus a l'exterieur... */ \ DEFINITION_DE_LA_COMBINAISON_DE_3_POSITIONS(resultante_des_3_positions \ ,resultante_des_3_vitesses \ ,COMBINAISON_DE_TYPE_RESULTANTE,part1 \ ,COMBINAISON_DE_TYPE_RESULTANTE,part2 \ ,COMBINAISON_DE_TYPE_RESULTANTE,part3 \ ); \ /* Calcul de la resultante de 3 positions (scalaire et vectorielle) sans ponderation. */