How to modify the matrix element in CalcHEP? 

Asked by Qiji Xin

Hi,

How to modify the matrix element in CalcHEP?
What I would like to do is below:
For a photon electron scattering, the xsec ~ g^\mu\nu L_\mu\nu where g^\mu\nu is the spin sum of the photon while L_\mu\nu is the lepton tensor. How could I, in CalcHEP, change g^\mu\nu to, say, (1,0,0,1)^\mu (1,0,0,1)^\nu?

Thanks!

Best

Question information

Language:
English Edit question
Status:
Solved
For:
CalcHEP Edit question
Assignee:
No assignee Edit question
Solved by:
Qiji Xin
Solved:
Last query:
Last reply:
Revision history for this message
Qiji Xin (xinqijisuper) said :
#1

Any comments/answers on this question?
Thanks!

Revision history for this message
Alexander Belyaev (alexander.belyaev) said :
#2

Dear Qiji Xin,
apologies for the delay with our reply.

You can not modify g^mu^nu in CalcHEP. Why exactly do you need to do this
what exactly you are trying to do? There are many ways around, but we need to know what exactly do you want.

There is, for example
c_source/num/usrFF_dummy.c
user routine which allows to modify total cross section via form factor FF which is being multiplied by matrix element squared

Regards,
Alexander

Revision history for this message
Qiji Xin (xinqijisuper) said :
#3

Dear Alexander,

Thanks for your help.

Actually I am doing the electron nucleus scattering (mediated by a photon). And I need to separate the hadronic and leptonic part.

For the leptonic part, the cross section between the virtual photon and electron can be broken down into σ_T(s, q^2) ~ g^\mu\nu L_\mu\nu part (related to transverse component) and σ_L(s, q^2) ~ pe^\mu pe^\nu L_\mu\nu part (related to longitudinal component, because it’s virtual photon).
(Here L_\mu\nu is the leptonic tensor of the electron part. p_e=(Ee,0,0,Ee) is the four momentum of the electron, Ee is electron energy.)
(So the total cross section between electron and nucleus can be written as σ_tot ~ σ_T*H_T + σ_L*H_L, where H_T, H_L are some hardonic current.)

So is there any way to calculate such cross section, σ_L, with CalcHEP?

Best regards

Revision history for this message
Alexander Belyaev (alexander.belyaev) said :
#4

Dear  Qiji Xin,

to calculate electron scattering on the nucleus

you can introduce nucleus form factor as a function of q^2

in the userFF.c subroutine and introduce photon-nucleus Feynman rule

with form facto as a constant and replace this form factor with the
actual one

in userFF.c

This is it.

Alexander

On 24/11/2018 16:13, Qiji Xin wrote:
> Question #676226 on CalcHEP changed:
> https://answers.launchpad.net/calchep/+question/676226
>
> Status: Answered => Open
>
> Qiji Xin is still having a problem:
> Dear Alexander,
>
> Thanks for your help.
>
> Actually I am doing the electron nucleus scattering (mediated by a
> photon). And I need to separate the hadronic and leptonic part.
>
> For the leptonic part, the cross section between the virtual photon and electron can be broken down into σ_T(s, q^2) ~ g^\mu\nu L_\mu\nu part (related to transverse component) and σ_L(s, q^2) ~ pe^\mu pe^\nu L_\mu\nu part (related to longitudinal component, because it’s virtual photon).
> (Here L_\mu\nu is the leptonic tensor of the electron part. p_e=(Ee,0,0,Ee) is the four momentum of the electron, Ee is electron energy.)
> (So the total cross section between electron and nucleus can be written as σ_tot ~ σ_T*H_T + σ_L*H_L, where H_T, H_L are some hardonic current.)
>
> So is there any way to calculate such cross section, σ_L, with CalcHEP?
>
> Best regards
>
--
______________________________________________________________________
Prof. Alexander S Belyaev (<email address hidden>)
https://www.hep.phys.soton.ac.uk/content/alexander-belyaev

School of Physics & Astronomy, University of Southampton
Office 5047, SO17 1BJ, TEL: +44 23805 98509, FAX: +44 23805 93910
.....................................................................
Particle Physics Department, Rutherford Appleton Laboratory
Didcot, OX11 0QX, TEL: +44 12354 45562, FAX: +44 12354 46733
.....................................................................
CERN, CH-1211 Geneva 23, Switzerland
Office 40/1-B20, Mailbox: E27910, TEL: +41 2276 71642
______________________________________________________________________

Revision history for this message
Qiji Xin (xinqijisuper) said :
#5

Thanks for your suggestion on using userFF.c.

A related point about my initial question. Can I put the matrix element by hand and ask CalcHEP to do the phase space integral?
I already got the analytic form of the matrix element from FeynCalc, then I easily modified that analytically, though there were a few tens of terms. But FeynCalc doesn't do the phase space integral.
So is it possible that I put matrix element by hand and ask CalcHEP to do the phase space integral?

Thanks!

Revision history for this message
Alexander Pukhov (pukhov) said :
#6

I will try to find solution. In principle one has to simulate CalcHEP
interface for   external  matrix element. But this interface is cumbersome.

Best

    Alexander Pukhov

On 26/11/2018 21:13, Qiji Xin wrote:
> Question #676226 on CalcHEP changed:
> https://answers.launchpad.net/calchep/+question/676226
>
> Status: Answered => Open
>
> Qiji Xin is still having a problem:
> Thanks for your suggestion on using userFF.c.
>
> A related point about my initial question. Can I put the matrix element by hand and ask CalcHEP to do the phase space integral?
> I already got the analytic form of the matrix element from FeynCalc, then I easily modified that analytically, though there were a few tens of terms. But FeynCalc doesn't do the phase space integral.
> So is it possible that I put matrix element by hand and ask CalcHEP to do the phase space integral?
>
> Thanks!
>

Revision history for this message
Alexander Pukhov (pukhov) said :
#7

See theory.sinp.msu.ru/~pukhov/calchep_3.7.4.tgz

I am going to put it on WEB after some testing.

New points:

1) Form output : symb/out/form_out.c
2) Detection of duplicate names in var#.mdl and func#.mdl : symb/read_mdl.c
3) Decay branching is  sorted now.
4) aPrintF works correctly even "long double" or "_Quad" is chosen for
real numbers
    presentation. aPrintF routine is intended  to write input file for
spectrum  calculator from within
    func#.mld. It is similar to fprintf function and its first arguments
defines format of reading other arguments.
    For real argument one of  flags E,e,G,g,f,F has to  be used, which
corresponds to double numerical type.
    When CalCHEP performs numerical calculations with other types, earch
real argument of aPrintF is automatically
    converted to type double: X => (double)(X) : symb/out/reader_c.c

5) Polarization of incoming  photon  in case when second incoming
particle is massive. Bug is fixed:
     symb/symbolic.c

6) External matrix element.
    We have realized  a possibility to use  CalcHEP numerical integrator
for external matrix element.
    We assume that the uses have compiled  some processes in CalCHEP
but  would like to replace CalcHEP squared matrix
    element on his own one. Thus all routines and structures mentioned
in c_source/num/unclude/interface.h continue to work
    but
        double sqme_int(int nsub, double GG,REAL*pvect,REAL*cb_coeff,
int * err)  generated by CalcHEP  is replaced on
        double SQMEUSR(int nsub, double GG,REAL*pvect,REAL*cb_coeff, int
* err)    written by the user.

    Besides of SQMEUSR    user's  file has to contain flag
       int const SQMEUSRFLAG=1;
    which is an instruction to CalcHEP to use external matrix element.
    These flag and routine has to be passed to CalcHEP linker using
extlib model file in the way explained  for
    usrFF and usrfun functions.

    Arguments of SQMEUSR are
    nsub - serial number of subprocess. It changes  from 1 to nprc_int.
    To get names of particles and their masses for each subprocesses can
be obtained by
           char * (*pinf_int)(int nsub, int nprtcl,  REAL* pmass, int*pnum);
    where  nprtcl is a position  of particle in subprocess, the return
parameter pnum is its PDG code.
    momenta are defined in the same manner as for usrFF and usrfun. Type
REAL is defined in include/nType.h. It could be double, long double,
    or _QUAD.
   Parameter cb_coeff is arrray which return to CalcHEP contribution  of
different  element of color chain basis to squared matrix element.
    During integration of matrix element CalcHEP substitutes NULL value
for this parameters. Color basis needs only for  event generation.
    Number of elements in color basis  is defined by parameter cb_int.
Basis itself is presented by array cb_coeff_int, but explanation of
    its structure needs special consideration.

Best

    Alexander Pukhov

Revision history for this message
Qiji Xin (xinqijisuper) said :
#8

Thanks so much Alexander!! I will have a try!