/* * DO NOT MANUALLY UPDATE THIS FILE. * If needed: make cpp_headers * * fortran2c.py - automatic conversion * chnglb.inc -> chnglb.h */ #ifndef __CHNGLB__ #define __CHNGLB__ #include "types.h" #ifdef __cplusplus extern "C" { #endif // * //=== chnglb ===========================================================* // * //----------------------------------------------------------------------* // * // Copyright (C) 2003-2019: CERN & INFN * // All Rights Reserved. * // * // CHaiN and GLauBer common: * // * // Created on 10 October 1996 by Alfredo Ferrari * // Infn - Milan * // * // Iglbfl = Glauber calculus flag * // = 0: valence-valence collisions are the first ones * // = 1: valence-valence collisions are the last ones * // Nhtprj = number of hit nucleons of the projectile * // Nhttrg = number of hit nucleons of the target * // Nseprj(i) = number of sea aq-q (or aqaq-qq) components of the * // i_th projectile nucleon * // Nsetrg(j) = number of sea aq-q (or aqaq-qq) components of the * // j_th target nucleon * // Khttrg(i) = number of target nucleons hit by the i_th projec- * // tile nucleon * // Khtprj(j) = number of projectile nucleons hit by the j_th tar- * // get nucleon * // Ihtprj(i) = id. (part scheme) of the i_th hit nucleon of the * // projectile (every id is possible, not only p or n * // in case the projectile is a single particle) * // Ihttrg(j) = id. (part scheme) of the j_th hit nucleon of the * // target (1=proton, 8=neutron) * // Mhtrpr(j,i) = number of collisions for the elementary j_th target* // nucleon - i_th projectile nucleon interaction * // ( 0 = no collision ) * // Nhtrpr(k,j,i) = initial (k=1) and final (k=2) index of hadrons pro-* // duced for the elementary j_th target nucleon - i_th* // projectile nucleon interaction * // ( 0 = no collision ) * // Ehtprj(i) = total energy of the i_th hit projectile nucleon * // in the given frame * // Phprjx(i) = momentum X component of the i_th hit projectile * // nucleon in the given frame * // Phprjy(i) = momentum Y component of the i_th hit projectile * // nucleon in the given frame * // Phprjz(i) = momentum Z component of the i_th hit projectile * // nucleon in the given frame * // Rhprjp(i) = local proton density (fm^-3) for the i_th hit * // projectile nucleon * // Rhprjn(i) = local neutron density (fm^-3) for the i_th hit * // projectile nucleon * // Ehttrg(j) = total energy of the j_th hit target nucleon * // in the given frame * // Phtrgx(j) = momentum X component of the j_th hit target * // nucleon in the given frame * // Phtrgy(j) = momentum Y component of the j_th hit target * // nucleon in the given frame * // Phtrgz(j) = momentum Z component of the j_th hit target * // nucleon in the given frame * // Rhtrgp(j) = local proton density (fm^-3) for the j_th hit * // target nucleon * // Rhtrgn(j) = local neutron density (fm^-3) for the j_th hit * // target nucleon * // Xqkprj(i) = (anti)quark X fraction for mesons and (anti)baryons* // for the i_th projectile component * // Xdqprj(i) = qbar/(anti)diquark X fraction for mesons/(anti)ba- * // ryons for the i_th projectile component * // Xseprj(k,i) = X fraction of the (di)quark of the k_th sea * // q(q)-aq(aq) couple for the i_th projectile nucleon * // Xasprj(k,i) = X fraction of the anti(di)quark of the k_th sea * // q(q)-aq(aq) couple for the i_th projectile nucleon * // Exfprj(i) = total energy to be considered for sea quark X's * // for the i_th projectile nucleon in the given frame * // Pxprjx(i) = momentum X component to be considered for sea * // quark X's for the i_th projectile nucleon in the * // given frame * // Pxprjy(i) = momentum Y component to be considered for sea * // quark X's for the i_th projectile nucleon in the * // given frame * // Pxprjz(i) = momentum Z component to be considered for sea * // quark X's for the i_th projectile nucleon in the * // given frame * // Xqktrg(j) = quark X fraction for the j_th target nucleon * // Xdqtrg(j) = diquark X fraction for the j_th target nucleon * // Xsetrg(k,j) = X fraction of the (di)quark of the k_th sea * // q(q)-aq(aq) couple for the j_th target nucleon * // Xastrg(k,j) = X fraction of the anti(di)quark of the k_th sea * // q(q)-aq(aq) couple for the j_th target nucleon * // Exftrg(j) = total energy to be considered for sea quark X's * // for the j_th target nucleon in the given frame * // Pxtrgx(j) = momentum X component to be considered for sea * // quark X's for the j_th target nucleon in the given * // frame * // Pxtrgy(j) = momentum Y component to be considered for sea * // quark X's for the j_th target nucleon in the given * // frame * // Pxtrgz(j) = momentum Z component to be considered for sea * // quark X's for the j_th target nucleon in the given * // frame * // Ehtcll(l) = energy of the l_th collision in the given frame * // l = j + (i-1) x mxhtnc, for a collision involving * // the i_th projectile nucleon and the j_th target * // nucleon * // Phtclx(l) = momentum X component of the l_th collision in the * // given frame * // Phtcly(l) = momentum Y component of the l_th collision in the * // given frame * // Phtclz(l) = momentum Z component of the l_th collision in the * // given frame * // Dscrcl(l) = distance to exit for the Cronin effect of the * // l_th collision in the given frame * // Pcrclx(l) = momentum X component due to Cronin effect of the * // l_th collision in the given frame * // Pcrcly(l) = momentum y component due to Cronin effect of the * // l_th collision in the given frame * // Pcrclz(l) = momentum Z component due to Cronin effect of the * // l_th collision in the given frame * // Shtcll(l) = s (squared invariant mass) of the l_th collision * // Smnhtc(l) = minimum s of the l_th collision * // Iqsprj(k,i) = quark id of the k_th sea q(q)-aq(aq) couple of the * // i_th projectile nucleon (diquark are recognized by * // the double index, i.e. uu=11, us=13 etc) * // Iqstrg(k,j) = quark id of the k_th sea q(q)-aq(aq) couple of the * // i_th target nucleon * // Kchain(m) = type of the m_th chain: * // Kchain = i0 + 100 * iqprj + 10000 * iqtrg * // Proj Target * // i0 = 0 <--> sea-q sea-q * // = 1 <--> sea-q sea-qq * // = 2 <--> sea-qq sea-q * // = 3 <--> sea-qq sea-qq * // = 10 <--> sea-q valence-q * // = 11 <--> sea-q valence-qq * // = 12 <--> sea-qq valence-q * // = 13 <--> sea-qq valence-qq * // = 20 <--> valence-q sea-q * // = 21 <--> valence-q sea-qq * // = 22 <--> valence-qq sea-q * // = 23 <--> valence-qq sea-qq * // = 30 <--> valence-q valence-q * // = 31 <--> valence-q valence-qq * // = 32 <--> valence-qq valence-q * // = 33 <--> valence-qq valence-qq * // iqprj = q(q) of the (di)quarks coming from the proje- * // ctile * // iqtrg = q(q) of the (di)quarks coming from the target * // Mchain(m) = type of the m_th chain: * // Mchain = ihtprj + 1000 * ihttrg * // ihtprj = index of hit projectile nucleon used to build * // this chain * // ihttrg = index of hit target nucleon used to build * // this chain * // Nchai0 = original number of chains * // Nchain = actual number of chains * // Nvvchn = actual number of valence-valence chains * // Nsvchn = actual number of sea(prj)-valence(trg) chains * // Nvschn = actual number of valence(prj)-sea(trg) chains * // Nsschn = actual number of sea-sea chains * // Nhtcll = actual number of "collisions" * // Nse0pr = theoretical number of collisions involving sea * // q(q)-aq(aq) couples from projectile hadrons * // Nseapr = actual number of collisions involving sea * // q(q)-aq(aq) couples from projectile hadrons * // Nse0tr = theoretical number of collisions involving sea * // q(q)-aq(aq) couples from target nucleons * // Nseatr = actual number of collisions involving sea * // q(q)-aq(aq) couples from target nucleons * // Ivvxfr = flag for which X fractions to be used for valence- * // -valence collisions: * // = 0: treat the collision as an ordinary proj-targ * // one, letting hdhdev or similar to do the X * // sampling * // = 1: use the X/(1-X) fractions sampled during the * // global X sampling, sea X's included. of cour- * // se it makes sense if and only if the number * // of sea collisions is different from 0 * // Issmnm = jss + kss x 10 + lss x 100 + mss x 1000 * // jss = if > 0 a reduction in the ssbar Glauber thre-* // shold (the larger, the larger jss) * // kss = if > 0 when a qqbar from sea is removed beca-* // use of threshold and the energy goes back to * // a sea interaction, the old/new flavours are * // swapped with 50% prob (kss=1) or the highest * // one is kept (kss=2). u=d for this purpose * // lss = if > 0 when a charm/strange qqbar from sea * // is not accepted removed because of threshold * // during flavour selection, the same flavour * // selection is kept for the next selection * // mss = a-priori flavour selection is performed, and * // X_min's are adapted to for mss > 0 * // mss = 1: asymptotic ssbar probability used a * // priori with no further correction * // mss = 2: asymptotic ssbar probability used a * // priori with threshold correction * // after X selection (uubar/ddbar as * // alternatives) * // mss = 3: asymptotic ssbar probability used a * // priori with threshold correction * // after X selection (suppressed as * // alternative) * // nss = nss > 0, if sea q-qbar's are killed during * // the X sampling procedure, the the surviving/ * // killed flavours are swapped with 50% prob * // (nss=1) or the highest one is kept (mss=3), * // if above threshold. If mss =< 0, nss is * // irrelevant (reset to 0 anyway) * // Icrnef = flag for Cronin effect * // 0 = no Cronin effect * // 1 = Cronin effect * // Crnpsc = Cronin effect parameter for parton scattering * // Crnscp = Cronin effect screening par. for parton scattering * // Crnthr = Cronin effect parameter for threshold behaviour * // Crnpth = Cronin effect moementum for threshold behaviour * // Lglaub = logical flag for activation of Glauber calculus * // Lglcur = logical flag for activation of Glauber calculus * // for the current particle * // Lglnow = logical flag true when the Glauber calculus for * // the current particle is still active * // Lcronn = logical flag true when the Cronin effect is active * // for the current particle * // * //----------------------------------------------------------------------* // const int MXHTRG = MXHTTR+1; const int MXHPRJ = 5; // Mxchan: maximum number of chains const int MXHTCL = MXHTNC*MXHPRJ; // const int MXCHAI = 200; // extern struct { double ehtprj[MXHPRJ]; double phprjx[MXHPRJ]; double phprjy[MXHPRJ]; double phprjz[MXHPRJ]; double rhprjp[MXHPRJ]; double rhprjn[MXHPRJ]; double ehttrg[MXHTRG]; double phtrgx[MXHTRG]; double phtrgy[MXHTRG]; double phtrgz[MXHTRG]; double rhtrgp[MXHTRG]; double rhtrgn[MXHTRG]; double xqkprj[MXHPRJ]; double xdqprj[MXHPRJ]; double xseprj[MXHPRJ][MXSEAX]; double xasprj[MXHPRJ][MXSEAX]; double exfprj[MXHPRJ]; double pxprjx[MXHPRJ]; double pxprjy[MXHPRJ]; double pxprjz[MXHPRJ]; double xqktrg[MXHTRG]; double xdqtrg[MXHTRG]; double xsetrg[MXHTRG][MXSEAX]; double xastrg[MXHTRG][MXSEAX]; double exftrg[MXHTRG]; double pxtrgx[MXHTRG]; double pxtrgy[MXHTRG]; double pxtrgz[MXHTRG]; double ehtcll[MXHTCL]; double phtclx[MXHTCL]; double phtcly[MXHTCL]; double phtclz[MXHTCL]; double dscrcl[MXHTCL]; double pcrclx[MXHTCL]; double pcrcly[MXHTCL]; double pcrclz[MXHTCL]; double shtcll[MXHTCL]; double smnhtc[MXHTCL]; double fcglau; double xcta00; double ycta00; double zcta00; double actadj; double bctadj; double cctadj; double dctadj; double ectadj; double assmnm; double crnpsc; double crnscp; double crnthr; double crnpth; int iglbfl; int ivvxfr; int isrdfl; int issmnm; int icrnef; int ihtprj[MXHPRJ]; int ihttrg[MXHTRG]; int khttrg[MXHPRJ]; int khtprj[MXHTRG]; int nseprj[MXHPRJ]; int nsetrg[MXHTRG]; int iqsprj[MXHPRJ][MXSEAX]; int iqstrg[MXHTRG][MXSEAX]; int mhtrpr[MXHTRG][MXHTRG]; int nhtrpr[MXHTRG][MXHTRG][2]; int kchain[MXCHAI]; int mchain[MXCHAI]; int nchai0; int nchain; int nvvchn; int nsvchn; int nvschn; int nsschn; int nhtprj; int nhttrg; int nhtcll; int nse0pr; int nseapr; int nse0tr; int nseatr; logical lglaub; logical lglcur; logical lglnow; logical lcronn; } chnglb_; #ifdef __cplusplus } #endif #endif