/*************************************************************************************************************************************/
/* */
/* D E F I N I T I O N S D E S C O L L I S I O N S E N T R E P A R T I C U L E S : */
/* */
/* */
/* Author of '$xrq/di_elec.LH$I' : */
/* */
/* Jean-Francois Colonna (LACTAMME, 1994??????????). */
/* */
/*************************************************************************************************************************************/
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* I N T E R A C T I O N E L E C T R O - M A G N E T I Q U E : */
/* */
/*************************************************************************************************************************************/
#define PROBABILITE_DE_ELECTROWEAK_ABSORBTION_ExP___E \
GRO9(FRA10(FU))
DEFV(Local,DEFV(Float,INIT(probabilite_de_ELECTROWEAK_ABSORBTION_ExP___E,PROBABILITE_DE_ELECTROWEAK_ABSORBTION_ExP___E)));
/* Probabilite du vertex : ExP --> E. */
#define PARTICIPATION_E_ELECTROWEAK_ABSORBTION_ExP___E \
GRO8(FRA8(FU))
DEFV(Local,DEFV(Float,INIT(participation_E_ELECTROWEAK_ABSORBTION_ExP___E
,PARTICIPATION_E_ELECTROWEAK_ABSORBTION_ExP___E
)
)
);
/* Participation de la vitesse de E dans le vertex : ExP --> E. */
#define PARTICIPATION_P_ELECTROWEAK_ABSORBTION_ExP___E \
GRO1(FRA16(FU))
DEFV(Local,DEFV(Float,INIT(participation_P_ELECTROWEAK_ABSORBTION_ExP___E
,PARTICIPATION_P_ELECTROWEAK_ABSORBTION_ExP___E
)
)
);
/* Participation de la vitesse de P dans le vertex : ExP --> E. */
DEFV(Local,DEFV(Positive,INIT(compteur_de_ELECTROWEAK_ABSORBTION_ExP___E,ZERO)));
/* Compteur des vertex : ExP --> E. */
#define ELECTROWEAK_ABSORBTION_ExP___E(electronD1,photonD1,electronA1) \
Bblock \
DEFINITION_DE_LA_VITESSE_ALEATOIRE; \
/* Structures necessaires a definir une vitesse en coordonnees spheriques et en coordonnees */ \
/* cartesiennes. */ \
ORIENTATION_ALEATOIRE_DE_L_AXE_OZ(ADRESSE(particule_indifferente)); \
DEFINITION_DE_LA_COMBINAISON_DE_2_POSITIONS(position_du_vertex \
,vitesse_resultante_virtuelle \
,participation_E_ELECTROWEAK_ABSORBTION_ExP___E,electronD1 \
,participation_P_ELECTROWEAK_ABSORBTION_ExP___E,photonD1 \
); \
/* Definition d'une position moyenne entre les 2 particules, ainsi que d'un vecteur */ \
/* resultante des deux vecteurs vitesse ; 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. On notera que 'vitesse_resultante_virtuelle' n'est */ \
/* pas utilisee... */ \
CONSERVATION_DU_MODULE_DE_LA_VITESSE_D_UN_ELECTRON_OU_D_UN_ANTI_ELECTRON(electronD1); \
/* On fixe a priori la conservation de la vitesse du electron... */ \
DEBUT_DE_ROTATION_D_ALIGNEMENT_DE_L_ESPACE_PHYSIQUE_EN_CONSERVANT_OZ(vitesse_resultante_virtuelle \
,orientation_de_l_axe_OZ \
); \
/* Alignement de l'axe 'OX2' le long de la resultante virtuelle des vitesses... */ \
DEBUT_DE_CHOIX_D_UNE_DIRECTION_D_ALIGNEMENT_DE_L_ESPACE_PHYSIQUE_EN_CONSERVANT_OZ; \
VITESSE_CARTESIENNE_POLAIRE(vitesse_courante \
,rho_de_la_vitesse \
,theta_polaire \
,PAS_DE_DEPHASAGE \
); \
CREATION_D_UN_ELECTRON_VIRTUEL(electronA1 \
,LEPTON_PAS_DE_SAVEUR \
,position_du_vertex \
,vitesse_courante \
); \
FLUCTUATION_ALEATOIRE_DES_POSITIONS_INITIALE_ET_COURANTE(electronA1,PERTURBER_UNE_POSITION); \
CHANGEMENT_EVENTUEL_D_ELECTRON_REEL(electronD1,electronA1); \
TRACE_D_UN_EVENEMENT(Prin3("ELECTROWEAK_ABSORBTION_ExP___E E(%d)xP(%d) --> E(%d)" \
,ETIQUETTE(electronD1) \
,ETIQUETTE(photonD1) \
,ETIQUETTE(electronA1) \
) \
); \
DESTRUCTION_D_UN_ELECTRON(electronD1); \
/* On n'utilise pas 'DESTRUCTION_D_UN_ELECTRON_VIRTUEL(electronD1)' car en effet, */ \
/* 'electronD1' peut etre un electron REEL... */ \
DESTRUCTION_D_UN_PHOTON_VIRTUEL(photonD1); \
FIN_DE_CHOIX_D_UNE_DIRECTION_D_ALIGNEMENT_DE_L_ESPACE_PHYSIQUE_EN_CONSERVANT_OZ; \
FIN_DE_ROTATION_D_ALIGNEMENT_DE_L_ESPACE_PHYSIQUE_EN_CONSERVANT_OZ; \
INCR(compteur_de_ELECTROWEAK_ABSORBTION_ExP___E,I); \
Eblock \
/* Vertex : ExP --> E. */
#define PROBABILITE_DE_ELECTROWEAK_ABSORBTION_AExP___AE \
PROBABILITE_DE_ELECTROWEAK_ABSORBTION_ExP___E
DEFV(Local,DEFV(Float,INIT(probabilite_de_ELECTROWEAK_ABSORBTION_AExP___AE,PROBABILITE_DE_ELECTROWEAK_ABSORBTION_AExP___AE)));
/* _ _ */
/* Probabilite du vertex : ExP --> E. */
#define PARTICIPATION_AE_ELECTROWEAK_ABSORBTION_AExP___AE \
PARTICIPATION_E_ELECTROWEAK_ABSORBTION_ExP___E
DEFV(Local,DEFV(Float,INIT(participation_AE_ELECTROWEAK_ABSORBTION_AExP___AE
,PARTICIPATION_AE_ELECTROWEAK_ABSORBTION_AExP___AE
)
)
);
/* _ _ */
/* Participation de la vitesse de E dans le vertex : ExP --> E. */
#define PARTICIPATION_P_ELECTROWEAK_ABSORBTION_AExP___AE \
PARTICIPATION_P_ELECTROWEAK_ABSORBTION_ExP___E
DEFV(Local,DEFV(Float,INIT(participation_P_ELECTROWEAK_ABSORBTION_AExP___AE
,PARTICIPATION_P_ELECTROWEAK_ABSORBTION_AExP___AE
)
)
);
/* _ _ */
/* Participation de la vitesse de P dans le vertex : ExP --> E. */
DEFV(Local,DEFV(Positive,INIT(compteur_de_ELECTROWEAK_ABSORBTION_AExP___AE,ZERO)));
/* _ _ */
/* Compteur des vertex : ExP --> E. */
#define ELECTROWEAK_ABSORBTION_AExP___AE(anti_electronD1,photonD1,anti_electronA1) \
Bblock \
DEFINITION_DE_LA_VITESSE_ALEATOIRE; \
/* Structures necessaires a definir une vitesse en coordonnees spheriques et en coordonnees */ \
/* cartesiennes. */ \
ORIENTATION_ALEATOIRE_DE_L_AXE_OZ(ADRESSE(particule_indifferente)); \
DEFINITION_DE_LA_COMBINAISON_DE_2_POSITIONS(position_du_vertex \
,vitesse_resultante_virtuelle \
,participation_AE_ELECTROWEAK_ABSORBTION_AExP___AE,anti_electronD1 \
,participation_P_ELECTROWEAK_ABSORBTION_AExP___AE,photonD1 \
); \
/* Definition d'une position moyenne entre les 2 particules, ainsi que d'un vecteur */ \
/* resultante des deux vecteurs vitesse ; 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. On notera que 'vitesse_resultante_virtuelle' n'est */ \
/* pas utilisee... */ \
CONSERVATION_DU_MODULE_DE_LA_VITESSE_D_UN_ELECTRON_OU_D_UN_ANTI_ELECTRON(anti_electronD1); \
/* On fixe a priori la conservation de la vitesse de l'anti-electron... */ \
DEBUT_DE_ROTATION_D_ALIGNEMENT_DE_L_ESPACE_PHYSIQUE_EN_CONSERVANT_OZ(vitesse_resultante_virtuelle \
,orientation_de_l_axe_OZ \
); \
/* Alignement de l'axe 'OX2' le long de la resultante virtuelle des vitesses... */ \
DEBUT_DE_CHOIX_D_UNE_DIRECTION_D_ALIGNEMENT_DE_L_ESPACE_PHYSIQUE_EN_CONSERVANT_OZ; \
VITESSE_CARTESIENNE_POLAIRE(vitesse_courante \
,rho_de_la_vitesse \
,theta_polaire \
,PAS_DE_DEPHASAGE \
); \
CREATION_D_UN_ANTI_ELECTRON_VIRTUEL(anti_electronA1 \
,LEPTON_PAS_DE_SAVEUR \
,position_du_vertex \
,vitesse_courante \
); \
FLUCTUATION_ALEATOIRE_DES_POSITIONS_INITIALE_ET_COURANTE(anti_electronA1,PERTURBER_UNE_POSITION); \
CHANGEMENT_EVENTUEL_D_ANTI_ELECTRON_REEL(anti_electronD1,anti_electronA1); \
TRACE_D_UN_EVENEMENT(Prin3("ELECTROWEAK_ABSORBTION_AExP___AE AE(%d)xP(%d) --> AE(%d)" \
,ETIQUETTE(anti_electronD1) \
,ETIQUETTE(photonD1) \
,ETIQUETTE(anti_electronA1) \
) \
); \
DESTRUCTION_D_UN_ANTI_ELECTRON(anti_electronD1); \
/* On n'utilise pas 'DESTRUCTION_D_UN_ANTI_ELECTRON_VIRTUEL(anti_electronD1)' car en effet, */ \
/* 'anti_electronD1' peut etre un electron REEL... */ \
DESTRUCTION_D_UN_PHOTON_VIRTUEL(photonD1); \
FIN_DE_CHOIX_D_UNE_DIRECTION_D_ALIGNEMENT_DE_L_ESPACE_PHYSIQUE_EN_CONSERVANT_OZ; \
FIN_DE_ROTATION_D_ALIGNEMENT_DE_L_ESPACE_PHYSIQUE_EN_CONSERVANT_OZ; \
INCR(compteur_de_ELECTROWEAK_ABSORBTION_AExP___AE,I); \
Eblock \
/* _ _ */ \
/* Vertex : ExP --> E. */
#define PROBABILITE_DE_ELECTROWEAK_TRANSFORMATION_ExAE___P \
GRO5(FRA10(FU))
DEFV(Local,DEFV(Float,INIT(probabilite_de_ELECTROWEAK_TRANSFORMATION_ExAE___P,PROBABILITE_DE_ELECTROWEAK_TRANSFORMATION_ExAE___P)));
/* _ */
/* Probabilite du vertex : ExE --> P. */
DEFV(Local,DEFV(Positive,INIT(compteur_de_ELECTROWEAK_TRANSFORMATION_ExAE___P,ZERO)));
/* _ */
/* Compteur des vertex : ExE --> P. */
#define ELECTROWEAK_TRANSFORMATION_ExAE___P(electronD1,anti_electronD1,photonA1) \
Bblock \
DEFINITION_DE_LA_VITESSE_ALEATOIRE; \
/* Structures necessaires a definir une vitesse en coordonnees spheriques et en coordonnees */ \
/* cartesiennes. */ \
ORIENTATION_ALEATOIRE_DE_L_AXE_OZ(ADRESSE(particule_indifferente)); \
DEFINITION_DE_LA_RESULTANTE_DE_2_POSITIONS(position_du_vertex \
,vitesse_resultante_virtuelle \
,electronD1 \
,anti_electronD1 \
); \
/* Definition d'une position moyenne entre les 2 particules, ainsi que d'un vecteur */ \
/* resultante des deux vecteurs vitesse ; 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. On notera que 'vitesse_resultante_virtuelle' n'est */ \
/* pas utilisee... */ \
INITIALISATION_DU_MODULE_DE_LA_VITESSE_ALEATOIRE_D_UN_PHOTON; \
/* Les photons se deplacent a la vitesse de la lumiere... */ \
DEBUT_DE_ROTATION_D_ALIGNEMENT_DE_L_ESPACE_PHYSIQUE_EN_CONSERVANT_OZ(vitesse_resultante_virtuelle \
,orientation_de_l_axe_OZ \
); \
/* Alignement de l'axe 'OX2' le long de la resultante virtuelle des vitesses... */ \
DEBUT_DE_CHOIX_D_UNE_DIRECTION_D_ALIGNEMENT_DE_L_ESPACE_PHYSIQUE_EN_CONSERVANT_OZ; \
VITESSE_CARTESIENNE_POLAIRE(vitesse_courante \
,rho_de_la_vitesse \
,theta_polaire \
,PAS_DE_DEPHASAGE \
); \
CREATION_D_UN_PHOTON_VIRTUEL(photonA1 \
,position_du_vertex \
,vitesse_courante \
); \
FLUCTUATION_ALEATOIRE_DES_POSITIONS_INITIALE_ET_COURANTE(photonA1,PERTURBER_UNE_POSITION); \
TRACE_D_UN_EVENEMENT(Prin3("ELECTROWEAK_TRANSFORMATION_ExAE___P E(%d)xAE(%d) --> P(%d)" \
,ETIQUETTE(electronD1) \
,ETIQUETTE(anti_electronD1) \
,ETIQUETTE(photonA1) \
) \
); \
DESTRUCTION_D_UN_ELECTRON(electronD1); \
DESTRUCTION_D_UN_ANTI_ELECTRON(anti_electronD1); \
/* On n'utilise pas 'DESTRUCTION_D_UN_ELECTRON_VIRTUEL(electronD1)' car en effet, */ \
/* 'electronD1' peut etre un electron REEL... */ \
FIN_DE_CHOIX_D_UNE_DIRECTION_D_ALIGNEMENT_DE_L_ESPACE_PHYSIQUE_EN_CONSERVANT_OZ; \
FIN_DE_ROTATION_D_ALIGNEMENT_DE_L_ESPACE_PHYSIQUE_EN_CONSERVANT_OZ; \
INCR(compteur_de_ELECTROWEAK_TRANSFORMATION_ExAE___P,I); \
Eblock \
/* _ */ \
/* Vertex : ExE --> P. */
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* I N T E R A C T I O N F A I B L E : */
/* */
/*************************************************************************************************************************************/
#define PROBABILITE_DE_ELECTROWEAK_ABSORBTION_ExZ___E \
GRO9(FRA10(FU))
DEFV(Local,DEFV(Float,INIT(probabilite_de_ELECTROWEAK_ABSORBTION_ExZ___E,PROBABILITE_DE_ELECTROWEAK_ABSORBTION_ExZ___E)));
/* Probabilite du vertex : ExZ --> E. */
#define PARTICIPATION_E_ELECTROWEAK_ABSORBTION_ExZ___E \
GRO8(FRA8(FU))
DEFV(Local,DEFV(Float,INIT(participation_E_ELECTROWEAK_ABSORBTION_ExZ___E
,PARTICIPATION_E_ELECTROWEAK_ABSORBTION_ExZ___E
)
)
);
/* Participation de la vitesse de E dans le vertex : ExZ --> E. */
#define PARTICIPATION_Z_ELECTROWEAK_ABSORBTION_ExZ___E \
GRO1(FRA16(FU))
DEFV(Local,DEFV(Float,INIT(participation_Z_ELECTROWEAK_ABSORBTION_ExZ___E
,PARTICIPATION_Z_ELECTROWEAK_ABSORBTION_ExZ___E
)
)
);
/* Participation de la vitesse de Z dans le vertex : ExZ --> E. */
DEFV(Local,DEFV(Positive,INIT(compteur_de_ELECTROWEAK_ABSORBTION_ExZ___E,ZERO)));
/* Compteur des vertex : ExZ --> E. */
#define ELECTROWEAK_ABSORBTION_ExZ___E(electronD1,z0D1,electronA1) \
Bblock \
DEFINITION_DE_LA_VITESSE_ALEATOIRE; \
/* Structures necessaires a definir une vitesse en coordonnees spheriques et en coordonnees */ \
/* cartesiennes. */ \
ORIENTATION_ALEATOIRE_DE_L_AXE_OZ(ADRESSE(particule_indifferente)); \
DEFINITION_DE_LA_COMBINAISON_DE_2_POSITIONS(position_du_vertex \
,vitesse_resultante_virtuelle \
,participation_E_ELECTROWEAK_ABSORBTION_ExZ___E,electronD1 \
,participation_Z_ELECTROWEAK_ABSORBTION_ExZ___E,z0D1 \
); \
/* Definition d'une position moyenne entre les 2 particules, ainsi que d'un vecteur */ \
/* resultante des deux vecteurs vitesse ; 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. On notera que 'vitesse_resultante_virtuelle' n'est */ \
/* pas utilisee... */ \
CONSERVATION_DU_MODULE_DE_LA_VITESSE_D_UN_ELECTRON_OU_D_UN_ANTI_ELECTRON(electronD1); \
/* On fixe a priori la conservation de la vitesse du electron... */ \
DEBUT_DE_ROTATION_D_ALIGNEMENT_DE_L_ESPACE_PHYSIQUE_EN_CONSERVANT_OZ(vitesse_resultante_virtuelle \
,orientation_de_l_axe_OZ \
); \
/* Alignement de l'axe 'OX2' le long de la resultante virtuelle des vitesses... */ \
DEBUT_DE_CHOIX_D_UNE_DIRECTION_D_ALIGNEMENT_DE_L_ESPACE_PHYSIQUE_EN_CONSERVANT_OZ; \
VITESSE_CARTESIENNE_POLAIRE(vitesse_courante \
,rho_de_la_vitesse \
,theta_polaire \
,PAS_DE_DEPHASAGE \
); \
CREATION_D_UN_ELECTRON_VIRTUEL(electronA1 \
,LEPTON_PAS_DE_SAVEUR \
,position_du_vertex \
,vitesse_courante \
); \
FLUCTUATION_ALEATOIRE_DES_POSITIONS_INITIALE_ET_COURANTE(electronA1,PERTURBER_UNE_POSITION); \
CHANGEMENT_EVENTUEL_D_ELECTRON_REEL(electronD1,electronA1); \
TRACE_D_UN_EVENEMENT(Prin3("ELECTROWEAK_ABSORBTION_ExZ___E E(%d)xZ(%d) --> E(%d)" \
,ETIQUETTE(electronD1) \
,ETIQUETTE(z0D1) \
,ETIQUETTE(electronA1) \
) \
); \
DESTRUCTION_D_UN_ELECTRON(electronD1); \
/* On n'utilise pas 'DESTRUCTION_D_UN_ELECTRON_VIRTUEL(electronD1)' car en effet, */ \
/* 'electronD1' peut etre un electron REEL... */ \
DESTRUCTION_D_UN_Z0_VIRTUEL(z0D1); \
FIN_DE_CHOIX_D_UNE_DIRECTION_D_ALIGNEMENT_DE_L_ESPACE_PHYSIQUE_EN_CONSERVANT_OZ; \
FIN_DE_ROTATION_D_ALIGNEMENT_DE_L_ESPACE_PHYSIQUE_EN_CONSERVANT_OZ; \
INCR(compteur_de_ELECTROWEAK_ABSORBTION_ExZ___E,I); \
Eblock \
/* Vertex : ExZ --> E. */
#define PROBABILITE_DE_ELECTROWEAK_ABSORBTION_AExZ___AE \
PROBABILITE_DE_ELECTROWEAK_ABSORBTION_ExZ___E
DEFV(Local,DEFV(Float,INIT(probabilite_de_ELECTROWEAK_ABSORBTION_AExZ___AE,PROBABILITE_DE_ELECTROWEAK_ABSORBTION_AExZ___AE)));
/* _ _ */
/* Probabilite du vertex : ExZ --> E. */
#define PARTICIPATION_AE_ELECTROWEAK_ABSORBTION_AExZ___AE \
PARTICIPATION_E_ELECTROWEAK_ABSORBTION_ExZ___E
DEFV(Local,DEFV(Float,INIT(participation_AE_ELECTROWEAK_ABSORBTION_AExZ___AE
,PARTICIPATION_AE_ELECTROWEAK_ABSORBTION_AExZ___AE
)
)
);
/* _ _ */
/* Participation de la vitesse de E dans le vertex : ExZ --> E. */
#define PARTICIPATION_Z_ELECTROWEAK_ABSORBTION_AExZ___AE \
PARTICIPATION_Z_ELECTROWEAK_ABSORBTION_ExZ___E
DEFV(Local,DEFV(Float,INIT(participation_Z_ELECTROWEAK_ABSORBTION_AExZ___AE
,PARTICIPATION_Z_ELECTROWEAK_ABSORBTION_AExZ___AE
)
)
);
/* _ _ */
/* Participation de la vitesse de Z dans le vertex : ExZ --> E. */
DEFV(Local,DEFV(Positive,INIT(compteur_de_ELECTROWEAK_ABSORBTION_AExZ___AE,ZERO)));
/* _ _ */
/* Compteur des vertex : ExZ --> E. */
#define ELECTROWEAK_ABSORBTION_AExZ___AE(anti_electronD1,z0D1,anti_electronA1) \
Bblock \
DEFINITION_DE_LA_VITESSE_ALEATOIRE; \
/* Structures necessaires a definir une vitesse en coordonnees spheriques et en coordonnees */ \
/* cartesiennes. */ \
ORIENTATION_ALEATOIRE_DE_L_AXE_OZ(ADRESSE(particule_indifferente)); \
DEFINITION_DE_LA_COMBINAISON_DE_2_POSITIONS(position_du_vertex \
,vitesse_resultante_virtuelle \
,participation_AE_ELECTROWEAK_ABSORBTION_AExZ___AE,anti_electronD1 \
,participation_Z_ELECTROWEAK_ABSORBTION_AExZ___AE,z0D1 \
); \
/* Definition d'une position moyenne entre les 2 particules, ainsi que d'un vecteur */ \
/* resultante des deux vecteurs vitesse ; 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. On notera que 'vitesse_resultante_virtuelle' n'est */ \
/* pas utilisee... */ \
CONSERVATION_DU_MODULE_DE_LA_VITESSE_D_UN_ELECTRON_OU_D_UN_ANTI_ELECTRON(anti_electronD1); \
/* On fixe a priori la conservation de la vitesse de l'anti-electron... */ \
DEBUT_DE_ROTATION_D_ALIGNEMENT_DE_L_ESPACE_PHYSIQUE_EN_CONSERVANT_OZ(vitesse_resultante_virtuelle \
,orientation_de_l_axe_OZ \
); \
/* Alignement de l'axe 'OX2' le long de la resultante virtuelle des vitesses... */ \
DEBUT_DE_CHOIX_D_UNE_DIRECTION_D_ALIGNEMENT_DE_L_ESPACE_PHYSIQUE_EN_CONSERVANT_OZ; \
VITESSE_CARTESIENNE_POLAIRE(vitesse_courante \
,rho_de_la_vitesse \
,theta_polaire \
,PAS_DE_DEPHASAGE \
); \
CREATION_D_UN_ANTI_ELECTRON_VIRTUEL(anti_electronA1 \
,LEPTON_PAS_DE_SAVEUR \
,position_du_vertex \
,vitesse_courante \
); \
FLUCTUATION_ALEATOIRE_DES_POSITIONS_INITIALE_ET_COURANTE(anti_electronA1,PERTURBER_UNE_POSITION); \
CHANGEMENT_EVENTUEL_D_ANTI_ELECTRON_REEL(anti_electronD1,anti_electronA1); \
TRACE_D_UN_EVENEMENT(Prin3("ELECTROWEAK_ABSORBTION_AExZ___AE AE(%d)xZ(%d) --> AE(%d)" \
,ETIQUETTE(anti_electronD1) \
,ETIQUETTE(z0D1) \
,ETIQUETTE(anti_electronA1) \
) \
); \
DESTRUCTION_D_UN_ANTI_ELECTRON(anti_electronD1); \
/* On n'utilise pas 'DESTRUCTION_D_UN_ANTI_ELECTRON_VIRTUEL(anti_electronD1)' car en effet, */ \
/* 'anti_electronD1' peut etre un electron REEL... */ \
DESTRUCTION_D_UN_Z0_VIRTUEL(z0D1); \
FIN_DE_CHOIX_D_UNE_DIRECTION_D_ALIGNEMENT_DE_L_ESPACE_PHYSIQUE_EN_CONSERVANT_OZ; \
FIN_DE_ROTATION_D_ALIGNEMENT_DE_L_ESPACE_PHYSIQUE_EN_CONSERVANT_OZ; \
INCR(compteur_de_ELECTROWEAK_ABSORBTION_AExZ___AE,I); \
Eblock \
/* _ _ */ \
/* Vertex : ExZ --> E. */
#define PROBABILITE_DE_ELECTROWEAK_TRANSFORMATION_ExAE___Z \
GRO9(FRA10(FU))
DEFV(Local,DEFV(Float,INIT(probabilite_de_ELECTROWEAK_TRANSFORMATION_ExAE___Z,PROBABILITE_DE_ELECTROWEAK_TRANSFORMATION_ExAE___Z)));
/* _ */
/* Probabilite du vertex : ExE --> Z. */
DEFV(Local,DEFV(Positive,INIT(compteur_de_ELECTROWEAK_TRANSFORMATION_ExAE___Z,ZERO)));
/* _ */
/* Compteur des vertex : ExE --> Z. */
#define ELECTROWEAK_TRANSFORMATION_ExAE___Z(electronD1,anti_electronD1,z0A1) \
Bblock \
DEFINITION_DE_LA_VITESSE_ALEATOIRE; \
/* Structures necessaires a definir une vitesse en coordonnees spheriques et en coordonnees */ \
/* cartesiennes. */ \
ORIENTATION_ALEATOIRE_DE_L_AXE_OZ(ADRESSE(particule_indifferente)); \
DEFINITION_DE_LA_RESULTANTE_DE_2_POSITIONS(position_du_vertex \
,vitesse_resultante_virtuelle \
,electronD1 \
,anti_electronD1 \
); \
/* Definition d'une position moyenne entre les 2 particules, ainsi que d'un vecteur */ \
/* resultante des deux vecteurs vitesse ; 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. On notera que 'vitesse_resultante_virtuelle' n'est */ \
/* pas utilisee... */ \
INITIALISATION_DU_MODULE_DE_LA_VITESSE_ALEATOIRE_D_UN_Z0; \
/* Les photons se deplacent a la vitesse de la lumiere... */ \
DEBUT_DE_ROTATION_D_ALIGNEMENT_DE_L_ESPACE_PHYSIQUE_EN_CONSERVANT_OZ(vitesse_resultante_virtuelle \
,orientation_de_l_axe_OZ \
); \
/* Alignement de l'axe 'OX2' le long de la resultante virtuelle des vitesses... */ \
DEBUT_DE_CHOIX_D_UNE_DIRECTION_D_ALIGNEMENT_DE_L_ESPACE_PHYSIQUE_EN_CONSERVANT_OZ; \
VITESSE_CARTESIENNE_POLAIRE(vitesse_courante \
,rho_de_la_vitesse \
,theta_polaire \
,PAS_DE_DEPHASAGE \
); \
CREATION_D_UN_Z0_VIRTUEL(z0A1 \
,position_du_vertex \
,vitesse_courante \
); \
FLUCTUATION_ALEATOIRE_DES_POSITIONS_INITIALE_ET_COURANTE(z0A1,PERTURBER_UNE_POSITION); \
TRACE_D_UN_EVENEMENT(Prin3("ELECTROWEAK_TRANSFORMATION_ExAE___Z E(%d)xAE(%d) --> Z(%d)" \
,ETIQUETTE(electronD1) \
,ETIQUETTE(anti_electronD1) \
,ETIQUETTE(z0A1) \
) \
); \
DESTRUCTION_D_UN_ELECTRON(electronD1); \
DESTRUCTION_D_UN_ANTI_ELECTRON(anti_electronD1); \
/* On n'utilise pas 'DESTRUCTION_D_UN_ELECTRON_VIRTUEL(electronD1)' car en effet, */ \
/* 'electronD1' peut etre un electron REEL... */ \
FIN_DE_CHOIX_D_UNE_DIRECTION_D_ALIGNEMENT_DE_L_ESPACE_PHYSIQUE_EN_CONSERVANT_OZ; \
FIN_DE_ROTATION_D_ALIGNEMENT_DE_L_ESPACE_PHYSIQUE_EN_CONSERVANT_OZ; \
INCR(compteur_de_ELECTROWEAK_TRANSFORMATION_ExAE___Z,I); \
Eblock \
/* _ */ \
/* Vertex : ExE --> Z. */
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* I N T E R A C T I O N E L E C T R O - F A I B L E */
/* */
/* C O L L I S I O N S E N T R E P A R T I C U L E S : */
/* */
/*************************************************************************************************************************************/
DEFV(Local,DEFV(Float,INIT(voisinage_1_D1_D2,VOISINAGE_D_INTERACTION_1_POUR_2_PARTICULES)));
/* Distance en-dessous de laquelle 2 particules peuvent interagir dans tous les evenements */
/* de type 'COLLISION(...)' : */
/* */
/* ELECTROWEAK_ABSORBTION_ExP___E(...), */
/* ELECTROWEAK_ABSORBTION_AExP___AE(...), */
/* ELECTROWEAK_ABSORBTION_ExZ___E(...), */
/* ELECTROWEAK_ABSORBTION_AExZ___AE(...), */
/* ELECTROWEAK_TRANSFORMATION_ExAE___P(...), */
/* ELECTROWEAK_TRANSFORMATION_ExAE___Z(...). */
/* */
#define ADOLESCENCE_D_UNE_PARTICULE \
GRO2(FRA2(DIVI(VOISINAGE_D_INTERACTION_1_POUR_2_PARTICULES \
,MIN4(VITESSE_MOYENNE_DES_ELECTRONS_ET_DES_ANTI_ELECTRONS \
,VITESSE_MOYENNE_DES_NEUTRINOS \
,VITESSE_DES_PHOTONS \
,VITESSE_DES_Z0S \
) \
) \
) \
) \
/* Duree de l'adolescence d'une particule qui correspond a une periode au cours de laquelle */ \
/* elle ne peut rentrer en collision. La valeur implicite est choisie de facon telle qu'elle */ \
/* corresponde a une duree superieure a celle necessaire a s'echapper du voisinage d'une */ \
/* particule ; ceci permet d'eviter que des particules emises soient immediatement */ \
/* reabsorbee. */ \
/* */ \
/* ATTENTION : la valeur de 'ADOLESCENCE_D_UNE_PARTICULE' est plus grande dans le fichier */ \
/* '$xrq/di_elec.LH$I' que dans le fichier '$xrq/nucleon.LH$I', et ce afin de limiter au */ \
/* mieux l'absorbtion, par des electrons, des photons qu'ils viennent d'emettre... */ \
/* */ \
/* ATTENTION : la valeur de 'ADOLESCENCE_D_UNE_PARTICULE' est liee a la valeur du parametre */ \
/* 'VITESSE_MOYENNE_DES_ELECTRONS_ET_DES_ANTI_ELECTRONS'... */ \
/* */ \
/* ATTENTION, on est oblige d'utiliser ici : */ \
/* */ \
/* VITESSE_MOYENNE_DES_ELECTRONS_ET_DES_ANTI_ELECTRONS */ \
/* */ \
/* et non pas : */ \
/* */ \
/* vitesse_moyenne_des_electrons_et_des_anti_electrons */ \
/* */ \
/* a cause du fait que 'adolescence_d_une_particule' est initialisee avant l'entree des */ \
/* parametres, donc avant de redefinir 'vitesse_moyenne_des_electrons_et_des_anti_electrons' */ \
/* eventuellement... */
DEFV(Local,DEFV(Float,INIT(adolescence_d_une_particule,FLOT__UNDEF)));
/* Duree de l'adolescence d'une particule qui correspond a une periode au cours de laquelle */
/* elle ne peut rentrer en collision. La valeur implicite est choisie de facon telle qu'elle */
/* corresponde a une duree superieure a celle necessaire a s'echapper du voisinage d'une */
/* particule ; ceci permet d'eviter que des particules emises soient immediatement */
/* reabsorbee. L'initialisation a lieu dans 'DEBUT_DE_L_INITIALISATION_DE_L_UNIVERS' a */
/* cause du compilateur de 'SYSTEME_SG4D..._IRIX_CC' qui refuse d'initialiser cette */
/* variable avec l'expression 'ADOLESCENCE_D_UNE_PARTICULE' qui contient un 'MIN2(...)'... */
#define COLLISION(condition,probabilite_de_la_collision,evenement,l_evenement_a_eu_lieu) \
Bblock \
Test(condition) \
Bblock \
DEFV(Float,INIT(probabilite_d_evenement_collisionnel,FLOT__UNDEF)); \
GENERATION_D_UNE_PROBABILITE_01(probabilite_d_evenement_collisionnel); \
/* Probabilite pour que la collision courante ait lieu... */ \
Test(IFLE(probabilite_d_evenement_collisionnel \
,REGUL9(probabilite_de_la_collision) \
) \
) \
Bblock \
BLOC(evenement); \
/* Lorsque toutes les conditions sont remplies, il y a interaction... */ \
EGAL(l_evenement_a_eu_lieu,VRAI); \
/* Et on le signale au cas ou il y aurait plusieurs evenements possibles pour un meme */ \
/* ensemble de particules... */ \
Eblock \
ATes \
Bblock \
/* Lorsque toutes les conditions ('probabilite') ne sont pas remplies, rien ne se passe... */ \
Eblock \
ETes \
Eblock \
ATes \
Bblock \
/* Lorsque toutes les conditions ('condition') ne sont pas remplies, rien ne se passe... */ \
Eblock \
ETes \
Eblock \
/* Lorsqu'une collision a ete detectee, il faut verifier si les particules en cause */ \
/* remplissent un certain nombre de conditions pour pouvoir interagir... */
#define COLLISION_EVENTUELLE_ExP \
Bblock \
DEFV(Logical,INIT(l_evenement_a_eu_lieu,FAUX)); \
/* Ainsi on peut savoir si l'evenement a eu lieu... */ \
COLLISION(IFET(IFOU(IFEQ(NATURE(particuleD1) \
,ELECTRON_REEL \
) \
,IFEQ(NATURE(particuleD1) \
,ELECTRON_VIRTUEL \
) \
) \
,IFOU(IFEQ(NATURE(particuleD2) \
,PHOTON_REEL \
) \
,IFEQ(NATURE(particuleD2) \
,PHOTON_VIRTUEL \
) \
) \
) \
,probabilite_de_ELECTROWEAK_ABSORBTION_ExP___E \
,ELECTROWEAK_ABSORBTION_ExP___E(particuleD1,particuleD2,electronA1); \
,l_evenement_a_eu_lieu \
); \
Eblock \
/* Collision eventuelle du type : */ \
/* */ \
/* ExP --> E */ \
/* */
#define COLLISION_EVENTUELLE_AExP \
Bblock \
DEFV(Logical,INIT(l_evenement_a_eu_lieu,FAUX)); \
/* Ainsi on peut savoir si l'evenement a eu lieu... */ \
COLLISION(IFET(IFOU(IFEQ(NATURE(particuleD1) \
,ANTI_ELECTRON_REEL \
) \
,IFEQ(NATURE(particuleD1) \
,ANTI_ELECTRON_VIRTUEL \
) \
) \
,IFOU(IFEQ(NATURE(particuleD2) \
,PHOTON_REEL \
) \
,IFEQ(NATURE(particuleD2) \
,PHOTON_VIRTUEL \
) \
) \
) \
,probabilite_de_ELECTROWEAK_ABSORBTION_AExP___AE \
,ELECTROWEAK_ABSORBTION_AExP___AE(particuleD1,particuleD2,anti_electronA1); \
,l_evenement_a_eu_lieu \
); \
Eblock \
/* Collision eventuelle du type : */ \
/* */ \
/* AExP --> AE */ \
/* */
#define COLLISION_EVENTUELLE_ExZ \
Bblock \
DEFV(Logical,INIT(l_evenement_a_eu_lieu,FAUX)); \
/* Ainsi on peut savoir si l'evenement a eu lieu... */ \
COLLISION(IFET(IFOU(IFEQ(NATURE(particuleD1) \
,ELECTRON_REEL \
) \
,IFEQ(NATURE(particuleD1) \
,ELECTRON_VIRTUEL \
) \
) \
,IFOU(IFEQ(NATURE(particuleD2) \
,Z0_REEL \
) \
,IFEQ(NATURE(particuleD2) \
,Z0_VIRTUEL \
) \
) \
) \
,probabilite_de_ELECTROWEAK_ABSORBTION_ExZ___E \
,ELECTROWEAK_ABSORBTION_ExZ___E(particuleD1,particuleD2,electronA1); \
,l_evenement_a_eu_lieu \
); \
Eblock \
/* Collision eventuelle du type : */ \
/* */ \
/* ExZ --> E */ \
/* */
#define COLLISION_EVENTUELLE_AExZ \
Bblock \
DEFV(Logical,INIT(l_evenement_a_eu_lieu,FAUX)); \
/* Ainsi on peut savoir si l'evenement a eu lieu... */ \
COLLISION(IFET(IFOU(IFEQ(NATURE(particuleD1) \
,ANTI_ELECTRON_REEL \
) \
,IFEQ(NATURE(particuleD1) \
,ANTI_ELECTRON_VIRTUEL \
) \
) \
,IFOU(IFEQ(NATURE(particuleD2) \
,Z0_REEL \
) \
,IFEQ(NATURE(particuleD2) \
,Z0_VIRTUEL \
) \
) \
) \
,probabilite_de_ELECTROWEAK_ABSORBTION_AExZ___AE \
,ELECTROWEAK_ABSORBTION_AExZ___AE(particuleD1,particuleD2,anti_electronA1); \
,l_evenement_a_eu_lieu \
); \
Eblock \
/* Collision eventuelle du type : */ \
/* */ \
/* AExZ --> AE */ \
/* */
#define COLLISION_EVENTUELLE_ExAE \
Bblock \
DEFV(Logical,INIT(l_evenement_a_eu_lieu,FAUX)); \
/* Ainsi on peut savoir si l'evenement a eu lieu... */ \
COLLISION(I3ET(IFET(IFOU(IFEQ(NATURE(particuleD1) \
,ELECTRON_REEL \
) \
,IFEQ(NATURE(particuleD1) \
,ELECTRON_VIRTUEL \
) \
) \
,IFOU(IFEQ(NATURE(particuleD2) \
,ANTI_ELECTRON_REEL \
) \
,IFEQ(NATURE(particuleD2) \
,ANTI_ELECTRON_VIRTUEL \
) \
) \
) \
,IFLT(nombre_total_de_z0s_VIRTUELs,nombre_maximal_de_z0s_VIRTUELs_du_di_electron) \
,TOUJOURS_VRAI \
) \
,probabilite_de_ELECTROWEAK_TRANSFORMATION_ExAE___Z \
,ELECTROWEAK_TRANSFORMATION_ExAE___Z(particuleD1,particuleD2,z0A1); \
,l_evenement_a_eu_lieu \
); \
COLLISION(I3ET(IFET(IFOU(IFEQ(NATURE(particuleD1) \
,ELECTRON_REEL \
) \
,IFEQ(NATURE(particuleD1) \
,ELECTRON_VIRTUEL \
) \
) \
,IFOU(IFEQ(NATURE(particuleD2) \
,ANTI_ELECTRON_REEL \
) \
,IFEQ(NATURE(particuleD2) \
,ANTI_ELECTRON_VIRTUEL \
) \
) \
) \
,IFLT(nombre_total_de_photons_VIRTUELs,nombre_maximal_de_photons_VIRTUELs_du_di_electron) \
,EST_FAUX(l_evenement_a_eu_lieu) \
) \
,probabilite_de_ELECTROWEAK_TRANSFORMATION_ExAE___P \
,ELECTROWEAK_TRANSFORMATION_ExAE___P(particuleD1,particuleD2,photonA1); \
,l_evenement_a_eu_lieu \
); \
Eblock \
/* Collision eventuelle du type : */ \
/* */ \
/* _ */ \
/* ExE --> Z */ \
/* */ \
/* ou : */ \
/* _ */ \
/* ExE --> P */ \
/* */
#define ___EVENEMENTS_COLLISIONNELS_POUR_2_PARTICULES \
Bblock \
DEFV(particule,POINTERs(particuleD1)); \
DEFV(particule,POINTERs(particuleD2)); \
/* Definition d'un ensemble de 2 particules en interaction... */ \
DEFV(Float,INIT(distance_D1_D2,FLOT__UNDEF)); \
/* Distance entre les 2 particules (D1,D2), et on notera la propriete triviale, mais */ \
/* essentielle suivante : */ \
/* */ \
/* distance(D1,D2) == distance(D2,D1). */ \
/* */ \
/* De plus, il serait possible d'optimiser en manipulant le carre des distances, mais il */ \
/* est plus physique de manipuler les distances elle-memes, et de plus le temps perdu a */ \
/* extraire les racines carrees est minime... */ \
ENSEMBLE_DES_PARTICULES(BLOC(VOISINAGE_D_UNE_PARTICULE(PARTICULE_COURANTE); \
/* Initialisation du detecteur de collisions a 2 particules. */ \
) \
); \
ENSEMBLE_DES_PARTICULES(BLOC(EGAL(particuleD1,PARTICULE_COURANTE); \
Test(IFGE(AGE(particuleD1),adolescence_d_une_particule)) \
Bblock \
/* Cas d'une particule assez agee : */ \
ENSEMBLE_DES_PARTICULES(BLOC(EGAL(particuleD2,PARTICULE_COURANTE); \
Test(IFET(IFNE(particuleD1,particuleD2) \
,IFGE(AGE(particuleD2) \
,adolescence_d_une_particule \
) \
) \
) \
/* Cas ou les deux particules sont distinctes et suffisamment agees : */ \
Bblock \
EGAL(distance_D1_D2 \
,pDISTANCE(particuleD1,particuleD2) \
); \
Test(IFLT(distance_D1_D2 \
,REGUL0(voisinage_1_D1_D2) \
) \
) \
/* Nota : a la place de 'REGUL0(...)', on pourrait utiliser 'REGUL9(...)'. */ \
Bblock \
/* Cas ou les deux particules sont suffisamment proches l'une de l'autre pour interagir : */ \
Test(IFLT(distance_D1_D2 \
,ASI2(particuleD1 \
,voisines \
,distance1 \
) \
) \
) \
Bblock \
EGAL(ASI2(particuleD1 \
,voisines \
,distance1 \
) \
,distance_D1_D2 \
); \
EGAL(ASI2(particuleD1 \
,voisines \
,voisine1 \
) \
,particuleD2 \
); \
EGAL(ASI2(particuleD1 \
,voisines \
,vide \
) \
,FAUX \
); \
/* Memorisation de la proximite D1 --> D2 (on notera que la relation D2 --> D1 ne sera */ \
/* memorisee que si D1 et D2 forment bien les 2 voisines les plus proches...). */ \
Eblock \
ATes \
Bblock \
Eblock \
ETes \
Eblock \
ATes \
Bblock \
/* Cas ou les deux particules sont trop eloignes, et ne peuvent interagir... */ \
Eblock \
ETes \
Eblock \
ATes \
Bblock \
/* Cas ou D1=D2... */ \
Eblock \
ETes \
) \
); \
Eblock \
ATes \
Bblock \
/* Cas d'une particule trop jeune, pas de collisions possibles pour elle... */ \
Eblock \
ETes \
) \
); \
ENSEMBLE_DES_PARTICULES(BLOC(EGAL(particuleD1,PARTICULE_COURANTE); \
Test(EST_FAUX(ASI2(particuleD1,voisines,vide))) \
/* Nota important : lors du processus qui va suivre, des particles vont etre crees, mais, */ \
/* pour elles, le test precedent est faux (voir 'VOISINAGE_D_UNE_PARTICULE(...)'). Donc */ \
/* ces particules ne seront pas manipulees en ce qui concerne les collisions... */ \
Bblock \
EGAL(particuleD2,ASI2(particuleD1,voisines,voisine1)); \
/* Recuperation d'un couple (D1,D2) de 2 particules voisines... */ \
\
COLLISION_EVENTUELLE_ExP; \
/* Vertex : ExP --> E. */ \
/* Nota : le vertex PxE --> E est obligatoirement present dans la liste (voir la symetrie */ \
/* de 'distance_D1_D2'...). */ \
COLLISION_EVENTUELLE_AExP; \
/* _ _ */ \
/* Vertex : ExP --> E. */ \
/* _ _ */ \
/* Nota : le vertex PxE --> E est obligatoirement present dans la liste (voir la symetrie */ \
/* de 'distance_D1_D2'...). */ \
\
COLLISION_EVENTUELLE_ExZ; \
/* Vertex : ExZ --> E. */ \
/* Nota : le vertex ZxE --> E est obligatoirement present dans la liste (voir la symetrie */ \
/* de 'distance_D1_D2'...). */ \
COLLISION_EVENTUELLE_AExZ; \
/* _ _ */ \
/* Vertex : ExZ --> E. */ \
/* _ _ */ \
/* Nota : le vertex ZxE --> E est obligatoirement present dans la liste (voir la symetrie */ \
/* de 'distance_D1_D2'...). */ \
COLLISION_EVENTUELLE_ExAE; \
/* _ */ \
/* Vertex : ExE --> P. */ \
/* _ */ \
/* Nota : le vertex ExE --> P est obligatoirement present dans la liste (voir la symetrie */ \
/* de 'distance_D1_D2'...). */ \
/* */ \
/* _ */ \
/* Vertex : ExE --> Z. */ \
/* _ */ \
/* Nota : le vertex ExE --> Z est obligatoirement present dans la liste (voir la symetrie */ \
/* de 'distance_D1_D2'...). */ \
\
Eblock \
ATes \
Bblock \
Eblock \
ETes \
) \
); \
Eblock \
/* Evenements collisionnels pour les ensembles de 2 particules voisines dans le proton. */
BFonctionI
DEFV(LoF,GENERE__Fonction__OPT(EVENEMENTS_COLLISIONNELS_POUR_2_PARTICULES,P2,___EVENEMENTS_COLLISIONNELS_POUR_2_PARTICULES))
EFonctionI
#define ___EVENEMENTS_COLLISIONNELS_POUR_3_PARTICULES \
Bblock \
PROCESSUS_INCOMPLET("evenements collisionnels pour les ensembles de 3 particules"); \
Eblock \
/* Evenements collisionnels pour les ensembles de 3 particules voisines dans le proton. */
BFonctionI
DEFV(LoF,GENERE__Fonction__OPT(EVENEMENTS_COLLISIONNELS_POUR_3_PARTICULES,P3,___EVENEMENTS_COLLISIONNELS_POUR_3_PARTICULES))
EFonctionI
#define ___EVENEMENTS_COLLISIONNELS_POUR_4_PARTICULES \
Bblock \
PROCESSUS_INCOMPLET("evenements collisionnels pour les ensembles de 4 particules"); \
Eblock \
/* Evenements collisionnels pour les ensembles de 4 particules voisines dans le proton. */
BFonctionI
DEFV(LoF,GENERE__Fonction__OPT(EVENEMENTS_COLLISIONNELS_POUR_4_PARTICULES,P4,___EVENEMENTS_COLLISIONNELS_POUR_4_PARTICULES))
EFonctionI
#define ___EVENEMENTS_COLLISIONNELS_POUR_LES_PARTICULES \
Bblock \
EVENEMENTS_COLLISIONNELS_POUR_4_PARTICULES; \
/* Les evenements a 4 particules etant les plus rares, ils sont testes en premier afin */ \
/* de ne pas etre masques par ceux a 3 et 2 particules... */ \
EVENEMENTS_COLLISIONNELS_POUR_3_PARTICULES; \
/* Evenements a 3 particules... */ \
EVENEMENTS_COLLISIONNELS_POUR_2_PARTICULES; \
/* Les evenements a 2 particules sont donc testes en dernier... */ \
Eblock \
/* Evenements collisionnels pour l'ensemble des particules presentes dans le proton, */ \
/* et correspondant, par exemple, a ce que j'appelerai, des collisions... */
BFonctionI
DEFV(LoF,GENERE__Fonction__OPT(EVENEMENTS_COLLISIONNELS_POUR_LES_PARTICULES,P,___EVENEMENTS_COLLISIONNELS_POUR_LES_PARTICULES))
EFonctionI