# Collinear mass implementation

I am trying to implement the collinear mass to reproduce graphs such as those shown in the reference arXiv:1612.01644v1 [hep-ph]

The equation is given by (Equation 4.2 of the reference):

mcol = m_eμ/Sqrt(x)

where m_eμ is the invariant mass of the electron and the muon and

x = |transverse_

I have a doubt in itself I have used the appropriate instructions:

const MAfloat32 m() const for m_eμ

const MAfloat32 pt() const for |transverse_

MCParticleFormat& MET() const for Missing_

const MAfloat32 p() const for transverse_

I started adding a new instruction "mcol" from const MAfloat32 m() in ParticleBaseFor

/// Accessor to the particle collinear mass

const MAfloat32 mcol(const MALorentzVector& MET) const

{

MAfloat32 x = pt() / ( pt() + MET()*p() );

MAfloat32 tmp = m()/sqrt(x);

return tmp;

}

When I plot mcol() the console throws the following:

note: candidate expects 1 argument, 0 provided

failed

Thanks in advance

## Question information

- Language:
- English Edit question

- Status:
- Answered

- Assignee:
- No assignee Edit question

- Last query:
- 2019-10-05

- Last reply:
- 2019-10-10

Benjamin Fuks (fuks) said : | #1 |

Dear Tomas,

First of all, there is no need to send me the question a second time to my direct address a dozen of hours later. This won't make me answering faster (on the contrary). You must understand that we do what we can to help our users as quickly as possible, but you can't expect a reaction within a day or so on a 24/7 basis. We have other duties and our own projects, so that there may be items on our agenda that require a more immediate attention than your specific madanalysis question.

This being said,

> x = |transverse_

What is the difference between transverse_

> const MAfloat32 p() const for transverse_

This is incorrect. p() is ghe magnitude of the three-momentum vector.

>

> I started adding a new instruction "mcol" from const MAfloat32 m() in ParticleBaseFor

>

> /// Accessor to the particle collinear mass

> const MAfloat32 mcol(const MALorentzVector& MET) const

> {

> MAfloat32 x = pt() / ( pt() + MET()*p() );

I am unsure about the line above. See the previous comments.

> When I plot mcol() the console throws the following:

>

> note: candidate expects 1 argument, 0 provided

> failed

mcol() is supposed to take the MET vector as an argument, following your implementation. Since you provided no argument to the method, this behavior is expected.

Regards,

Benjamin

Tomás Valencia (tvalencia) said : | #2 |

Dear Benjamin

I apologize for the mistake I made due to my lack of experience.

I have continued with the observations indicated and clarify some points of my doubt.

I use MadAnalisys5 in my work, unfortunately, I don't have experience and I found a way to implement an observable of my interest, namely, the colinear mass, which is defined as in eq (4.1) of arXiv:1612.01644:

where x = |p_T^e| / (|p_T^e|

with P_T^e the electron tranverse moment,

E_T^miss the missing transverse energy

and M_inv the invariant mass, M_inv(electron muon).

In order to obtain the collinear mass, I try to put it by hand as in the following code in the file ParticleBaseFor

const MAfloat32 mcol(const MALorentzVector& MET) const

{

MAfloat64 Equix = sqrt(pt())/( sqrt(pt()) + MET.Pt()*pt() );

MAfloat64 result = m()/sqrt(Equix);

if (result<0) return 0;

else return result;

}

and added the following lines in the file observable_list.py

MCOL = ObservableBase( name = 'MCOL',

)

Next, I execute via command line like plot MCOL(e-mu +).

The problem is if the following term was defined correctly:

E_T^{miss}\cdot p_T^e ---> MET.Pt()*pt()

With regards,

Tomás

Benjamin Fuks (fuks) said : | #3 |

Hi Tomas,

It thus seems that your problem is fixed. Thanks for the follow-up.

Cheers,

Benjamin

> On 5 Oct 2019, at 09:47 , Tomás Valencia <email address hidden> wrote:

>

> Question #684214 on MadAnalysis 5 changed:

> https:/

>

> Status: Answered => Open

>

> Tomás Valencia is still having a problem:

> Dear Benjamin

>

> I apologize for the mistake I made due to my lack of experience.

> I have continued with the observations indicated and clarify some points of my doubt.

>

> I use MadAnalisys5 in my work, unfortunately, I don't have experience

> and I found a way to implement an observable of my interest, namely, the

> colinear mass, which is defined as in eq (4.1) of arXiv:1612.01644:

>

> mcol=M_inv/sqrt(x)

>

> where x = |p_T^e| / (|p_T^e|

> with P_T^e the electron tranverse moment,

> E_T^miss the missing transverse energy

> and M_inv the invariant mass, M_inv(electron muon).

>

> In order to obtain the collinear mass, I try to put it by hand as in the

> following code in the file ParticleBaseFor

>

> const MAfloat32 mcol(const MALorentzVector& MET) const

> {

> MAfloat64 Equix = sqrt(pt())/( sqrt(pt()) + MET.Pt()*pt() );

> MAfloat64 result = m()/sqrt(Equix);

> if (result<0) return 0;

> else return result;

> }

>

> and added the following lines in the file observable_list.py

>

> MCOL = ObservableBase( name = 'MCOL',

> args = [ArgumentType.

> combination = CombinationType

> plot_auto = False,

> plot_nbins = 100,

> plot_xmin = 0.,

> plot_xmax = 1000.,

> plot_unitX_tlatex = 'GeV/c^{2}',

> plot_unitX_latex = 'GeV$^2$',

> code_parton = 'mcol(event.

> code_hadron = 'mcol(event.

> code_reco = 'mcol(event.

> cut_event = True,

> cut_candidate = True,

> tlatex = 'MCOL',

> latex = 'MCOL'

> )

>

>

> Next, I execute via command line like plot MCOL(e-mu +).

>

> The problem is if the following term was defined correctly:

> E_T^{miss}\cdot p_T^e ---> MET.Pt()*pt()

>

> With regards,

> Tomás

>

> --

> You received this question notification because you are an answer

> contact for MadAnalysis 5.

## Can you help with this problem?

Provide an answer of your own, or ask Tomás Valencia for more information if necessary.