/*************************************************************************************************************************************/ /* */ /* D E F I N I T I O N S D U " D I - E L E C T R O N " : */ /* */ /* */ /* Author of '$xrq/di_elec.L6$I' : */ /* */ /* Jean-Francois Colonna (LACTAMME, 1994??????????). */ /* */ /*************************************************************************************************************************************/ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* D E F I N I T I O N D U " D I - E L E C T R O N " A P A R T I R */ /* D ' U N E P A I R E D ' E L E C T R O N S E T D ' U N N E U T R I N O : */ /* */ /*************************************************************************************************************************************/ #define INITIALISER_AVEC_L_ELECTRON_1_REEL \ FAUX DEFV(Local,DEFV(Logical,INIT(initialiser_avec_l_electron_1_REEL,INITIALISER_AVEC_L_ELECTRON_1_REEL))); /* Faut-il initialiser avec l'electron 1 REEL ('VRAI') ou un pas ('FAUX'). */ #define INITIALISER_AVEC_L_ELECTRON_2_REEL \ VRAI DEFV(Local,DEFV(Logical,INIT(initialiser_avec_l_electron_2_REEL,INITIALISER_AVEC_L_ELECTRON_2_REEL))); /* Faut-il initialiser avec l'electron 2 REEL ('VRAI') ou un pas ('FAUX'). */ #define INITIALISER_AVEC_L_ANTI_ELECTRON_REEL \ FAUX DEFV(Local,DEFV(Logical,INIT(initialiser_avec_l_anti_electron_REEL,INITIALISER_AVEC_L_ANTI_ELECTRON_REEL))); /* Faut-il initialiser avec l'anti-electron REEL ('VRAI') ou un pas ('FAUX'). */ #define INITIALISER_AVEC_LE_NEUTRINO_REEL \ VRAI DEFV(Local,DEFV(Logical,INIT(initialiser_avec_le_neutrino_REEL,INITIALISER_AVEC_LE_NEUTRINO_REEL))); /* Faut-il initialiser avec le neutrino REEL ('VRAI') ou un pas ('FAUX'). */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* D E F I N I T I O N D E L A P A I R E D ' E L E C T R O N S : */ /* */ /*************************************************************************************************************************************/ #define NOMBRE_D_ELECTRONS_DANS_LE_DI_ELECTRON \ DEUX \ /* Nombre d'electrons contenus dans le "di-electron"... */ #define _VX_electron_1_REEL \ GRO1(FRA1(FRA6(VITESSE_DE_LA_LUMIERE))) #define _VY_electron_1_REEL \ GRO1(FRA2(FRA16(VITESSE_DE_LA_LUMIERE))) #define _VZ_electron_1_REEL \ FZERO /* Definition de la vitesse des deux electrons. ATTENTION, on notera que cette valeur */ /* initiale est choisie de facon que l'electron 2 REEL et l'anti-electron REEL n'aient */ /* pas leurs vecteurs vitesse opposes. En effet, sinon, dans la mesure ou leur collision */ /* nous interesse, 'DEFINITION_DE_LA_RESULTANTE_DE_2_POSITIONS(...)' donnerait dans ce cas */ /* resultante nulle... */ #define _MX_electron_1_REEL \ FZERO #define _MY_electron_1_REEL \ FZERO #define _MZ_electron_1_REEL \ FU /* Definition du moment angulaire des deux electrons. */ #define DEMI_CERCLE \ DIVI(CERCLE_TRIGONOMETRIQUE,FLOT(NOMBRE_D_ELECTRONS_DANS_LE_DI_ELECTRON)) \ /* Une moitie du cercle trigonometrique puisqu'il y a deux electrons. */ #define phase_de_l_electron_1_REEL \ GRO1(FRA2(DEMI_CERCLE)) \ /* On fixe de facon absolue la position angulaire dans 'PLAN_DE_LA_PARTICULE' du premier */ \ /* electron, le second etant positionne par rapport a lui... */ \ /* */ \ /* e 1 */ \ /* */ \ /* * */ \ /* */ \ /* e 2 */ \ /* */ =define X_electron_1_REEL_INITIAL \ ADD2(X_DU_CENTRE_DE_LA_PARTICULE \ ,MUL2(RAYON_D_UN_HADRON \ ,COSX(ADD2(phase_de_l_electron_1_REEL \ ,GRO0(DEMI_CERCLE) \ ) \ ) \ ) \ ) =define Y_electron_1_REEL_INITIAL \ ADD2(Y_DU_CENTRE_DE_LA_PARTICULE \ ,MUL2(RAYON_D_UN_HADRON \ ,SINX(ADD2(phase_de_l_electron_1_REEL \ ,GRO0(DEMI_CERCLE) \ ) \ ) \ ) \ ) =define Z_electron_1_REEL_INITIAL \ PLAN_DE_LA_PARTICULE /* Definition de la position de l'electron 1. */ #define VX_electron_1_REEL_INITIALE \ _VX_electron_1_REEL #define VY_electron_1_REEL_INITIALE \ _VY_electron_1_REEL #define VZ_electron_1_REEL_INITIALE \ _VZ_electron_1_REEL /* Definition de la vitesse de l'electron 1. */ #define MX_electron_1_REEL_INITIAL \ NEUT(_MX_electron_1_REEL) #define MY_electron_1_REEL_INITIAL \ NEUT(_MY_electron_1_REEL) #define MZ_electron_1_REEL_INITIAL \ NEUT(_MZ_electron_1_REEL) /* Definition du moment angulaire de l'electron 1. */ DEFV(Local,DEFV(Float,INIT(X_electron_1_REEL,FLOT__UNDEF))); DEFV(Local,DEFV(Float,INIT(Y_electron_1_REEL,FLOT__UNDEF))); DEFV(Local,DEFV(Float,INIT(Z_electron_1_REEL,FLOT__UNDEF))); DEFINITION_D_UNE_POSITION_INDEFINIE(position_initiale_de_l_electron_1_REEL); DEFV(Local,DEFV(Float,INIT(VX_electron_1_REEL,VX_electron_1_REEL_INITIALE))); DEFV(Local,DEFV(Float,INIT(VY_electron_1_REEL,VY_electron_1_REEL_INITIALE))); DEFV(Local,DEFV(Float,INIT(VZ_electron_1_REEL,VZ_electron_1_REEL_INITIALE))); DEFINITION_D_UNE_VITESSE_INDEFINIE(vitesse_initiale_de_l_electron_1_REEL); DEFV(Local,DEFV(Float,INIT(MX_electron_1_REEL,MX_electron_1_REEL_INITIAL))); DEFV(Local,DEFV(Float,INIT(MY_electron_1_REEL,MY_electron_1_REEL_INITIAL))); DEFV(Local,DEFV(Float,INIT(MZ_electron_1_REEL,MZ_electron_1_REEL_INITIAL))); DEFINITION_D_UN_MOMENT_ANGULAIRE_INDEFINI(moment_angulaire_initial_de_l_electron_1_REEL); DEFV(Local,DEFV(electron,INIT(POINTERs(electron_1_REEL),PARTICULE_NON_DEFINIE))); #define DEFINITION_DE_L_ELECTRON_1_REEL \ Bblock \ INITIALISATION_D_UNE_POSITION_QUELCONQUE(position_initiale_de_l_electron_1_REEL \ ,X_electron_1_REEL \ ,Y_electron_1_REEL \ ,Z_electron_1_REEL \ ); \ INITIALISATION_D_UNE_VITESSE_QUELCONQUE(vitesse_initiale_de_l_electron_1_REEL \ ,VX_electron_1_REEL \ ,VY_electron_1_REEL \ ,VZ_electron_1_REEL \ ); \ INITIALISATION_D_UN_MOMENT_ANGULAIRE_QUELCONQUE(moment_angulaire_initial_de_l_electron_1_REEL \ ,MX_electron_1_REEL \ ,MY_electron_1_REEL \ ,MZ_electron_1_REEL \ ); \ DEFINITION_D_UN_ELECTRON_REEL(electron_1_REEL \ ,LEPTON_PAS_DE_SAVEUR \ ,position_initiale_de_l_electron_1_REEL \ ,vitesse_initiale_de_l_electron_1_REEL \ ,moment_angulaire_initial_de_l_electron_1_REEL \ ); \ Eblock #define COULEUR_DE_L_ELECTRON_1_REEL \ Bblock \ COULEUR_D_UNE_PARTICULE(electron_1_REEL \ ,COMPOSANTE_ROUGE_D_UN_ELECTRON_REEL_OU_VIRTUEL \ ,COMPOSANTE_VERTE_D_UN_ELECTRON_REEL_OU_VIRTUEL \ ,COMPOSANTE_BLEUE_D_UN_ELECTRON_REEL_OU_VIRTUEL \ ); \ TRACE_D_UN_EVENEMENT(Prin1("ELECTROWEAK_CREATION_DE_L_ELECTRON_1_REEL VIDE --> E(%d)" \ ,ETIQUETTE(electron_1_REEL) \ ) \ ); \ Eblock =define X_electron_2_REEL_INITIAL \ ADD2(X_DU_CENTRE_DE_LA_PARTICULE \ ,MUL2(RAYON_D_UN_HADRON \ ,COSX(ADD2(phase_de_l_electron_1_REEL \ ,GRO1(DEMI_CERCLE) \ ) \ ) \ ) \ ) =define Y_electron_2_REEL_INITIAL \ ADD2(Y_DU_CENTRE_DE_LA_PARTICULE \ ,MUL2(RAYON_D_UN_HADRON \ ,SINX(ADD2(phase_de_l_electron_1_REEL \ ,GRO1(DEMI_CERCLE) \ ) \ ) \ ) \ ) =define Z_electron_2_REEL_INITIAL \ PLAN_DE_LA_PARTICULE /* Definition de la position de l'electron 2. */ #define VX_electron_2_REEL_INITIALE \ _VX_electron_1_REEL #define VY_electron_2_REEL_INITIALE \ _VY_electron_1_REEL #define VZ_electron_2_REEL_INITIALE \ _VZ_electron_1_REEL /* Definition de la vitesse de l'electron 2. */ #define MX_electron_2_REEL_INITIAL \ NEUT(_MX_electron_1_REEL) #define MY_electron_2_REEL_INITIAL \ NEUT(_MY_electron_1_REEL) #define MZ_electron_2_REEL_INITIAL \ NEUT(_MZ_electron_1_REEL) /* Definition du moment angulaire de l'electron 2. */ DEFV(Local,DEFV(Float,INIT(X_electron_2_REEL,FLOT__UNDEF))); DEFV(Local,DEFV(Float,INIT(Y_electron_2_REEL,FLOT__UNDEF))); DEFV(Local,DEFV(Float,INIT(Z_electron_2_REEL,FLOT__UNDEF))); DEFINITION_D_UNE_POSITION_INDEFINIE(position_initiale_de_l_electron_2_REEL); DEFV(Local,DEFV(Float,INIT(VX_electron_2_REEL,VX_electron_2_REEL_INITIALE))); DEFV(Local,DEFV(Float,INIT(VY_electron_2_REEL,VY_electron_2_REEL_INITIALE))); DEFV(Local,DEFV(Float,INIT(VZ_electron_2_REEL,VZ_electron_2_REEL_INITIALE))); DEFINITION_D_UNE_VITESSE_INDEFINIE(vitesse_initiale_de_l_electron_2_REEL); DEFV(Local,DEFV(Float,INIT(MX_electron_2_REEL,MX_electron_2_REEL_INITIAL))); DEFV(Local,DEFV(Float,INIT(MY_electron_2_REEL,MY_electron_2_REEL_INITIAL))); DEFV(Local,DEFV(Float,INIT(MZ_electron_2_REEL,MZ_electron_2_REEL_INITIAL))); DEFINITION_D_UN_MOMENT_ANGULAIRE_INDEFINI(moment_angulaire_initial_de_l_electron_2_REEL); DEFV(Local,DEFV(electron,INIT(POINTERs(electron_2_REEL),PARTICULE_NON_DEFINIE))); #define DEFINITION_DE_L_ELECTRON_2_REEL \ Bblock \ INITIALISATION_D_UNE_POSITION_QUELCONQUE(position_initiale_de_l_electron_2_REEL \ ,X_electron_2_REEL \ ,Y_electron_2_REEL \ ,Z_electron_2_REEL \ ); \ INITIALISATION_D_UNE_VITESSE_QUELCONQUE(vitesse_initiale_de_l_electron_2_REEL \ ,VX_electron_2_REEL \ ,VY_electron_2_REEL \ ,VZ_electron_2_REEL \ ); \ INITIALISATION_D_UN_MOMENT_ANGULAIRE_QUELCONQUE(moment_angulaire_initial_de_l_electron_2_REEL \ ,MX_electron_2_REEL \ ,MY_electron_2_REEL \ ,MZ_electron_2_REEL \ ); \ DEFINITION_D_UN_ELECTRON_REEL(electron_2_REEL \ ,LEPTON_PAS_DE_SAVEUR \ ,position_initiale_de_l_electron_2_REEL \ ,vitesse_initiale_de_l_electron_2_REEL \ ,moment_angulaire_initial_de_l_electron_2_REEL \ ); \ Eblock #define COULEUR_DE_L_ELECTRON_2_REEL \ Bblock \ COULEUR_D_UNE_PARTICULE(electron_2_REEL \ ,COMPOSANTE_ROUGE_D_UN_ELECTRON_REEL_OU_VIRTUEL \ ,COMPOSANTE_VERTE_D_UN_ELECTRON_REEL_OU_VIRTUEL \ ,COMPOSANTE_BLEUE_D_UN_ELECTRON_REEL_OU_VIRTUEL \ ); \ TRACE_D_UN_EVENEMENT(Prin1("ELECTROWEAK_CREATION_DE_L_ELECTRON_2_REEL VIDE --> E(%d)" \ ,ETIQUETTE(electron_2_REEL) \ ) \ ); \ Eblock /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* D E F I N I T I O N D E L ' A N T I - E L E C T R O N : */ /* */ /*************************************************************************************************************************************/ =define X_anti_electron_REEL_INITIAL \ ADD2(X_electron_2_REEL_INITIAL \ ,GRO2(RAYON_D_UN_HADRON) \ ) =define Y_anti_electron_REEL_INITIAL \ Y_electron_2_REEL_INITIAL \ =define Z_anti_electron_REEL_INITIAL \ PLAN_DE_LA_PARTICULE /* Definition de la position de l'anti-electron. */ #define VX_anti_electron_REEL_INITIALE \ NEGA(VX_electron_2_REEL_INITIALE) #define VY_anti_electron_REEL_INITIALE \ NEUT(VY_electron_2_REEL_INITIALE) #define VZ_anti_electron_REEL_INITIALE \ NEUT(VZ_electron_2_REEL_INITIALE) /* Definition de la vitesse de l'anti-electron. ATTENTION, on notera que cette valeur */ /* initiale est choisie de facon a ce que l'electron 2 REEL et l'anti-electron REEL aillent */ /* a la rencontre l'un de l'autre... */ #define MX_anti_electron_REEL_INITIAL \ NEGA(_MX_electron_1_REEL) #define MY_anti_electron_REEL_INITIAL \ NEGA(_MY_electron_1_REEL) #define MZ_anti_electron_REEL_INITIAL \ NEGA(_MZ_electron_1_REEL) /* Definition du moment angulaire de l'anti-electron. */ DEFV(Local,DEFV(Float,INIT(X_anti_electron_REEL,FLOT__UNDEF))); DEFV(Local,DEFV(Float,INIT(Y_anti_electron_REEL,FLOT__UNDEF))); DEFV(Local,DEFV(Float,INIT(Z_anti_electron_REEL,FLOT__UNDEF))); DEFINITION_D_UNE_POSITION_INDEFINIE(position_initiale_de_l_anti_electron_REEL); DEFV(Local,DEFV(Float,INIT(VX_anti_electron_REEL,VX_anti_electron_REEL_INITIALE))); DEFV(Local,DEFV(Float,INIT(VY_anti_electron_REEL,VY_anti_electron_REEL_INITIALE))); DEFV(Local,DEFV(Float,INIT(VZ_anti_electron_REEL,VZ_anti_electron_REEL_INITIALE))); DEFINITION_D_UNE_VITESSE_INDEFINIE(vitesse_initiale_de_l_anti_electron_REEL); DEFV(Local,DEFV(Float,INIT(MX_anti_electron_REEL,MX_anti_electron_REEL_INITIAL))); DEFV(Local,DEFV(Float,INIT(MY_anti_electron_REEL,MY_anti_electron_REEL_INITIAL))); DEFV(Local,DEFV(Float,INIT(MZ_anti_electron_REEL,MZ_anti_electron_REEL_INITIAL))); DEFINITION_D_UN_MOMENT_ANGULAIRE_INDEFINI(moment_angulaire_initial_de_l_anti_electron_REEL); DEFV(Local,DEFV(electron,INIT(POINTERs(anti_electron_REEL),PARTICULE_NON_DEFINIE))); #define DEFINITION_DE_L_ANTI_ELECTRON_REEL \ Bblock \ INITIALISATION_D_UNE_POSITION_QUELCONQUE(position_initiale_de_l_anti_electron_REEL \ ,X_anti_electron_REEL \ ,Y_anti_electron_REEL \ ,Z_anti_electron_REEL \ ); \ INITIALISATION_D_UNE_VITESSE_QUELCONQUE(vitesse_initiale_de_l_anti_electron_REEL \ ,VX_anti_electron_REEL \ ,VY_anti_electron_REEL \ ,VZ_anti_electron_REEL \ ); \ INITIALISATION_D_UN_MOMENT_ANGULAIRE_QUELCONQUE(moment_angulaire_initial_de_l_anti_electron_REEL \ ,MX_anti_electron_REEL \ ,MY_anti_electron_REEL \ ,MZ_anti_electron_REEL \ ); \ DEFINITION_D_UN_ANTI_ELECTRON_REEL(anti_electron_REEL \ ,LEPTON_PAS_DE_SAVEUR \ ,position_initiale_de_l_anti_electron_REEL \ ,vitesse_initiale_de_l_anti_electron_REEL \ ,moment_angulaire_initial_de_l_anti_electron_REEL \ ); \ Eblock #define COULEUR_DE_L_ANTI_ELECTRON_REEL \ Bblock \ COULEUR_D_UNE_PARTICULE(anti_electron_REEL \ ,COMPOSANTE_ROUGE_D_UN_ANTI_ELECTRON_REEL_OU_VIRTUEL \ ,COMPOSANTE_VERTE_D_UN_ANTI_ELECTRON_REEL_OU_VIRTUEL \ ,COMPOSANTE_BLEUE_D_UN_ANTI_ELECTRON_REEL_OU_VIRTUEL \ ); \ TRACE_D_UN_EVENEMENT(Prin1("ELECTROWEAK_CREATION_DE_L_ANTI_ELECTRON_REEL VIDE --> AE(%d)" \ ,ETIQUETTE(anti_electron_REEL) \ ) \ ); \ Eblock /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* D E F I N I T I O N D U N E U T R I N O : */ /* */ /*************************************************************************************************************************************/ #define _VX_neutrino_REEL \ GRO1(FRA3(VITESSE_DE_LA_LUMIERE)) #define _VY_neutrino_REEL \ FZERO #define _VZ_neutrino_REEL \ FZERO /* Definition de la vitesse des deux neutrinos. */ #define _MX_neutrino_REEL \ FZERO #define _MY_neutrino_REEL \ FZERO #define _MZ_neutrino_REEL \ FU /* Definition du moment angulaire des deux neutrinos. */ #define phase_du_neutrino_REEL \ GRO1(FRA2(DEMI_CERCLE)) \ /* On fixe de facon absolue la position angulaire dans 'PLAN_DE_LA_PARTICULE' du neutrino. */ =define X_neutrino_REEL_INITIAL \ ADD2(X_DU_CENTRE_DE_LA_PARTICULE \ ,MUL2(RAYON_D_UN_HADRON \ ,COSX(ADD2(phase_du_neutrino_REEL \ ,GRO1(FRA2(DEMI_CERCLE)) \ ) \ ) \ ) \ ) =define Y_neutrino_REEL_INITIAL \ ADD2(Y_DU_CENTRE_DE_LA_PARTICULE \ ,MUL2(RAYON_D_UN_HADRON \ ,SINX(ADD2(phase_du_neutrino_REEL \ ,GRO0(DEMI_CERCLE) \ ) \ ) \ ) \ ) =define Z_neutrino_REEL_INITIAL \ PLAN_DE_LA_PARTICULE /* Definition de la position de l'neutrino 1. */ #define VX_neutrino_REEL_INITIALE \ _VX_neutrino_REEL #define VY_neutrino_REEL_INITIALE \ _VY_neutrino_REEL #define VZ_neutrino_REEL_INITIALE \ _VZ_neutrino_REEL /* Definition de la vitesse de l'neutrino 1. */ #define MX_neutrino_REEL_INITIAL \ NEUT(_MX_neutrino_REEL) #define MY_neutrino_REEL_INITIAL \ NEUT(_MY_neutrino_REEL) #define MZ_neutrino_REEL_INITIAL \ NEUT(_MZ_neutrino_REEL) /* Definition du moment angulaire de l'neutrino 1. */ DEFV(Local,DEFV(Float,INIT(X_neutrino_REEL,FLOT__UNDEF))); DEFV(Local,DEFV(Float,INIT(Y_neutrino_REEL,FLOT__UNDEF))); DEFV(Local,DEFV(Float,INIT(Z_neutrino_REEL,FLOT__UNDEF))); DEFINITION_D_UNE_POSITION_INDEFINIE(position_initiale_du_neutrino_REEL); DEFV(Local,DEFV(Float,INIT(VX_neutrino_REEL,VX_neutrino_REEL_INITIALE))); DEFV(Local,DEFV(Float,INIT(VY_neutrino_REEL,VY_neutrino_REEL_INITIALE))); DEFV(Local,DEFV(Float,INIT(VZ_neutrino_REEL,VZ_neutrino_REEL_INITIALE))); DEFINITION_D_UNE_VITESSE_INDEFINIE(vitesse_initiale_du_neutrino_REEL); DEFV(Local,DEFV(Float,INIT(MX_neutrino_REEL,MX_neutrino_REEL_INITIAL))); DEFV(Local,DEFV(Float,INIT(MY_neutrino_REEL,MY_neutrino_REEL_INITIAL))); DEFV(Local,DEFV(Float,INIT(MZ_neutrino_REEL,MZ_neutrino_REEL_INITIAL))); DEFINITION_D_UN_MOMENT_ANGULAIRE_INDEFINI(moment_angulaire_initial_du_neutrino_REEL); DEFV(Local,DEFV(neutrino,INIT(POINTERs(neutrino_REEL),PARTICULE_NON_DEFINIE))); #define DEFINITION_DU_NEUTRINO_REEL \ Bblock \ INITIALISATION_D_UNE_POSITION_QUELCONQUE(position_initiale_du_neutrino_REEL \ ,X_neutrino_REEL \ ,Y_neutrino_REEL \ ,Z_neutrino_REEL \ ); \ INITIALISATION_D_UNE_VITESSE_QUELCONQUE(vitesse_initiale_du_neutrino_REEL \ ,VX_neutrino_REEL \ ,VY_neutrino_REEL \ ,VZ_neutrino_REEL \ ); \ INITIALISATION_D_UN_MOMENT_ANGULAIRE_QUELCONQUE(moment_angulaire_initial_du_neutrino_REEL \ ,MX_neutrino_REEL \ ,MY_neutrino_REEL \ ,MZ_neutrino_REEL \ ); \ DEFINITION_D_UN_NEUTRINO_REEL(neutrino_REEL \ ,LEPTON_PAS_DE_SAVEUR \ ,position_initiale_du_neutrino_REEL \ ,vitesse_initiale_du_neutrino_REEL \ ); \ Eblock #define COULEUR_DU_NEUTRINO_REEL \ Bblock \ COULEUR_D_UNE_PARTICULE(neutrino_REEL \ ,COMPOSANTE_ROUGE_D_UN_NEUTRINO_REEL_OU_VIRTUEL \ ,COMPOSANTE_VERTE_D_UN_NEUTRINO_REEL_OU_VIRTUEL \ ,COMPOSANTE_BLEUE_D_UN_NEUTRINO_REEL_OU_VIRTUEL \ ); \ TRACE_D_UN_EVENEMENT(Prin1("ELECTROWEAK_CREATION_DU_NEUTRINO_REEL VIDE --> N(%d)" \ ,ETIQUETTE(neutrino_REEL) \ ) \ ); \ Eblock /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* D E F I N I T I O N D U V I D E P A R U N C H A M P U N I F O R M E : */ /* */ /*************************************************************************************************************************************/ #define PONDERATION_g0 \ FRA10(FRA10(FU)) DEFV(Local,DEFV(Float,INIT(ponderation_g0,PONDERATION_g0))); /* Definition l'amplitude du champ du vide. */ #define MAXIMUM_DU_CHAMP_GLOBAL \ FU \ /* Valeur maximale du champ global qui sera atteinte partout. ATTENTION : cette definition */ \ /* doit preceder cellede 'CHAMP_DU_VIDE(...)', car en effet, elles n'appartiennent pas a la */ \ /* meme passe... */ =define CHAMP_DU_VIDE(cX,cY,cZ) \ MUL2(ponderation_g0,MAXIMUM_DU_CHAMP_GLOBAL) /* Definition du champ du vide. */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* D E F I N I T I O N D E S V A L E U R S D E L A C H A R G E D E C O U L E U R : */ /* */ /* */ /* ATTENTION : */ /* */ /* Pour des raisons liees au pre-processing */ /* les definitions qui suivent doivent se trouver */ /* apres les definitions de 'CHAMP_DE_VALENCE_DE_L_ELECTRON_1_REEL(...)', */ /* et 'CHAMP_DE_VALENCE_DE_L_ELECTRON_2_REEL(...)'... */ /* */ /* */ /*************************************************************************************************************************************/ %define ROUGE_max \ COULEUR_max /* Definition du maximum de la composante ROUGE de la charge de couleur. */ %define VERTE_max \ COULEUR_max /* Definition du maximum de la composante VERTE de la charge de couleur. */ %define BLEUE_max \ COULEUR_max /* Definition du maximum de la composante BLEUE de la charge de couleur. */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* D E F I N I T I O N D E L A G E O M E T R I E D U C H A M P " D E F L U X " : */ /* L ' I N T E R A C T I O N F O R T E D A N S L E " D I - E L E C T R O N " : */ /* */ /* */ /* Definition du champ de flux : */ /* */ /* FLUX(x,y,z) = 0 */ /* */ /* il est donc inutile... */ /* */ /* */ /*************************************************************************************************************************************/ #define CALCULER_LE_CHAMP_DE_FLUX \ LUNDEF /* Par compatibilte avec '$xrq/nucleon.LI$I' et '$xrq/nucleon.LV$I'... */ #define DISTANCE_CARACTERISTIQUE_g1 \ FLOT__UNDEF DEFV(Local,DEFV(Float,INIT(distance_caracteristique_g1,FLOT__UNDEF))); /* Nota : cette definition est uniquement destinee a la compatibilite avec les deux fichiers */ /* '$xrq/nucleon.LW.1$I' et '$xrq/nucleon.LW.2$I'... */ DEFV(Local,DEFV(Float,INIT(cutoff_du_champ_global,FLOT__UNDEF))); /* Nota : cette definition est uniquement destinee a la compatibilite avec les deux fichiers */ /* '$xrq/nucleon.LI$I' et '$xrq/nucleon.LV$I'... */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* D E F I N I T I O N D E L A G E O M E T R I E D U C H A M P " D E C O N F I N E M E N T " */ /* D U " D I - E L E C T R O N " : */ /* */ /* */ /* Definition du champ de confinement : */ /* */ /* CONFINEMENT(x,y,z) = 0 */ /* */ /* il est donc inutile... */ /* */ /* */ /*************************************************************************************************************************************/ #define NE_PAS_CALCULER_LE_CHAMP_DE_CONFINEMENT \ LUNDEF /* Par compatibilte avec '$xrq/nucleon.LI$I' et '$xrq/nucleon.LV$I'... */ #define DISTANCE_CARACTERISTIQUE_g2 \ FLOT__UNDEF DEFV(Local,DEFV(Float,INIT(distance_caracteristique_g2,FLOT__UNDEF))); /* Nota : cette definition est uniquement destinee a la compatibilite avec les deux fichiers */ /* '$xrq/nucleon.LW.1$I' et '$xrq/nucleon.LW.2$I'... */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* D E F I N I T I O N D U C H A M P G L O B A L D ' I N T E R A C T I O N : */ /* */ /*************************************************************************************************************************************/ #define MINIMUM_DU_CHAMP_GLOBAL \ FZERO \ /* Valeur minimale (relativement arbitraire) du champ global... */ DEFV(Local,DEFV(Float,INIT(champ_global,FLOT__UNDEF))); /* Intensite du champ resultant (valence + flux + confinement). */ #define CALCUL_DU_CHAMP_GLOBAL(cX,cY,cZ,calculer_le_champ_de_flux,calculer_le_champ_de_confinement,cutoff) \ Bblock \ EGAL(champ_global \ ,CHAMP_DU_VIDE(cX,cY,cZ) \ ); \ /* Generation du champ du vide... */ \ Eblock \ /* Intensite du champ resultant... */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* G E S T I O N D E S P A R T I C U L E S R E E L L E S : */ /* */ /*************************************************************************************************************************************/ #define CHANGEMENT_EVENTUEL_D_ELECTRON_REEL(electronD,electronA) \ Bblock \ Test(IFEQ(NATURE(electronD),ELECTRON_REEL)) \ Bblock \ Choi(NATURE(electronA)) \ Bblock \ Ca1e(ELECTRON_VIRTUEL) \ Bblock \ DECR(nombre_instantane_d_electrons_VIRTUELs,I); \ /* Decomptage des electrons VIRTUELs. */ \ Eblock \ ECa1 \ \ Defo \ Bblock \ PRINT_ERREUR("la nature de l'electron a changer n'est pas reconnue"); \ Eblock \ EDef \ Eblock \ ECho \ \ NATURE_D_UNE_PARTICULE(electronA,ELECTRON_REEL); \ /* L'electron 'electronA' devient reel, puisque 'electronD' l'etait et qu'il va mourir... */ \ CHARGE_D_UNE_PARTICULE(electronA,CHARGE_DE_L_ELECTRON_REEL); \ /* L'electron 'electronA' recupere la charge d'un electron REEL (voir en effet ce qui est */ \ /* fait par 'exageration_de_la_charge_des_electrons_et_des_anti_electrons_virtuels' dans */ \ /* '$xrq/nucleon.L5$I' afin d'accentuer l'effet de la force de Lorentz...). */ \ \ INCR(nombre_instantane_d_electrons_REELs,I); \ INCR(nombre_total_d_electrons_REELs,I); \ /* Comptage des electrons REELs. */ \ \ INITIALISATION_DE_LA_POSITION_INITIALE_D_UNE_PARTICULE(electronA \ ,ASI2(electronD,espace_temps,position_courante) \ ); \ INITIALISATION_DE_LA_POSITION_COURANTE_D_UNE_PARTICULE(electronA); \ /* Et le 'electronA' se place la ou etait 'electronD'... */ \ \ Test(IFEQ(electronD,electron_1_REEL)) \ Bblock \ CHANGEMENT_D_ELECTRON_REEL(electron_1_REEL,electronA); \ /* Si 'electronD' etait l'electron 1 REEL, 'electronD' le devient... */ \ Eblock \ ATes \ Bblock \ Test(IFEQ(electronD,electron_2_REEL)) \ Bblock \ CHANGEMENT_D_ELECTRON_REEL(electron_2_REEL,electronA); \ /* Si 'electronD' etait l'electron 2 REEL, 'electronD' le devient... */ \ Eblock \ ATes \ Bblock \ PRINT_ERREUR("un electron a le type REEL, mais n'est pas l'electron REEL courant"); \ Eblock \ ETes \ Eblock \ ETes \ Eblock \ ATes \ Bblock \ Eblock \ ETes \ Eblock \ /* Passage de l'etat REEL d'un electron qui le possedait (et qui va etre detruit) a un qui */ \ /* va l'acquerir (et qui vient d'etre cree). */ #define CHANGEMENT_EVENTUEL_D_ANTI_ELECTRON_REEL(anti_electronD,anti_electronA) \ Bblock \ Test(IFEQ(NATURE(anti_electronD),ANTI_ELECTRON_REEL)) \ Bblock \ Choi(NATURE(anti_electronA)) \ Bblock \ Ca1e(ANTI_ELECTRON_VIRTUEL) \ Bblock \ DECR(nombre_instantane_d_anti_electrons_VIRTUELs,I); \ /* Decomptage des anti-electrons VIRTUELs. */ \ Eblock \ ECa1 \ \ Defo \ Bblock \ PRINT_ERREUR("la nature de l'anti-electron a changer n'est pas reconnue"); \ Eblock \ EDef \ Eblock \ ECho \ \ NATURE_D_UNE_PARTICULE(anti_electronA,ANTI_ELECTRON_REEL); \ /* L'anti-electron 'anti_electronA' devient reel, puisque 'anti_electronD' l'etait et */ \ /* qu'il va mourir... */ \ CHARGE_D_UNE_PARTICULE(anti_electronA,CHARGE_DE_L_ANTI_ELECTRON_REEL); \ /* L'anti-electron 'anti_electronA' recupere la charge d'un anti-electron REEL (voir en */ \ /* effet 'exageration_de_la_charge_des_electrons_et_des_anti_electrons_virtuels' dans */ \ /* '$xrq/nucleon.L5$I' afin d'accentuer l'effet de la force de Lorentz...). */ \ \ INCR(nombre_instantane_d_anti_electrons_REELs,I); \ INCR(nombre_total_d_anti_electrons_REELs,I); \ /* Comptage des anti-electrons REELs. */ \ \ INITIALISATION_DE_LA_POSITION_INITIALE_D_UNE_PARTICULE(anti_electronA \ ,ASI2(anti_electronD,espace_temps,position_courante) \ ); \ INITIALISATION_DE_LA_POSITION_COURANTE_D_UNE_PARTICULE(anti_electronA); \ /* Et le 'anti_electronA' se place la ou etait 'anti_electronD'... */ \ \ Test(IFEQ(anti_electronD,anti_electron_REEL)) \ Bblock \ CHANGEMENT_D_ANTI_ELECTRON_REEL(anti_electron_REEL,anti_electronA); \ /* Si 'anti_electronD' etait l'anti-electron REEL, 'anti_electronD' le devient... */ \ Eblock \ ATes \ Bblock \ PRINT_ERREUR("un anti_electron a le type REEL, mais n'est pas l'anti_electron REEL courant"); \ Eblock \ ETes \ Eblock \ ATes \ Bblock \ Eblock \ ETes \ Eblock \ /* Passage de l'etat REEL d'un anti-electron qui le possedait (et qui va etre detruit) a */ \ /* un qui va l'acquerir (et qui vient d'etre cree). */ #define CHANGEMENT_EVENTUEL_DE_NEUTRINO_REEL(neutrinoD,neutrinoA) \ Bblock \ Test(IFEQ(NATURE(neutrinoD),NEUTRINO_REEL)) \ Bblock \ Choi(NATURE(neutrinoA)) \ Bblock \ Ca1e(NEUTRINO_VIRTUEL) \ Bblock \ DECR(nombre_instantane_de_neutrinos_VIRTUELs,I); \ /* Decomptage des neutrinos VIRTUELs. */ \ Eblock \ ECa1 \ \ Defo \ Bblock \ PRINT_ERREUR("la nature du neutrino a changer n'est pas reconnue"); \ Eblock \ EDef \ Eblock \ ECho \ NATURE_D_UNE_PARTICULE(neutrinoA,NEUTRINO_REEL); \ /* Le neutrino 'neutrinoA' devient reel, puisque 'neutrinoD' l'etait et qu'il va mourir... */ \ INCR(nombre_instantane_de_neutrinos_REELs,I); \ INCR(nombre_total_de_neutrinos_REELs,I); \ /* Comptage des neutrinos REELs. */ \ INITIALISATION_DE_LA_POSITION_INITIALE_D_UNE_PARTICULE(neutrinoA \ ,ASI2(neutrinoD,espace_temps,position_courante) \ ); \ INITIALISATION_DE_LA_POSITION_COURANTE_D_UNE_PARTICULE(neutrinoA); \ /* Et le 'neutrinoA' se place la ou etait 'neutrinoD'... */ \ Test(IFEQ(neutrinoD,neutrino_REEL)) \ Bblock \ CHANGEMENT_DE_NEUTRINO_REEL(neutrino_REEL,neutrinoA); \ /* Si 'neutrinoD' etait le neutrino REEL, 'neutrinoD' le devient... */ \ Eblock \ ATes \ Bblock \ PRINT_ERREUR("un neutrino a le type REEL, mais n'est pas le neutrino REEL courant"); \ Eblock \ ETes \ Eblock \ ATes \ Bblock \ Eblock \ ETes \ Eblock \ /* Passage de l'etat REEL d'un neutrino qui le possedait (et qui va etre detruit) a un qui */ \ /* va l'acquerir (et qui vient d'etre cree). */