ATLAS Offline Software
Loading...
Searching...
No Matches
Sigma2qqbar2emu.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
3*/
4
8
10
11// calls to fortran routines
12#include "CLHEP/Random/RandFlat.h"
13
14#include <iostream>
15#include <vector>
16
17namespace Pythia8{
18 class Sigma2qqbar2emu;
19}
20
21// This one line registers this process with the factory
22// An instance of this process can be created with
23// UserProcessFactory::create("qqbar2emu")
25
26namespace Pythia8 {
27
33
34 class Sigma2qqbar2emu : public Sigma2Process{
35
36 public:
37 //Constructor.
43
44
46 void initProc() {
47
48 // Store parameters.
49 m_lambdaCoup = 0.2;
50 m_Nc = 3;
51 m_stop = particleDataPtr->m0(1000006); //95.5;
52 m_lambdaSqddbar = 0.065;
53 m_lambdaSqdsbar = 3.8e-5;
54 m_lambdaSqsdbar = 3.8e-5;
55 m_lambdaSqssbar = 0.065;
56 m_myRand = new Rndm(1234567);
57
58 return;
59 }
60
61 //*********
62
64 void sigmaKin() {
65
66 // The 2 out front is for e- mu+ plus e+ mu -
67 m_sigmaTemp = 2./((float)m_Nc * 64. * M_PI);
68
69 return;
70 }
71
72 //*********
73
75 double sigmaHat() {
76
77 double lambdaSq = 0.;
78 if((id1 == 1 && id2 == -1) || (id1 == -1 && id2 == 1)) lambdaSq = m_lambdaSqddbar;
79 else if((id1 == 1 && id2 == -3) || (id1 == -3 && id2 == 1)) lambdaSq = m_lambdaSqdsbar;
80 else if((id1 == 3 && id2 == -1) || (id1 == -1 && id2 == 3)) lambdaSq = m_lambdaSqsdbar;
81 else if((id1 == 3 && id2 == -3) || (id1 == -3 && id2 == 3)) lambdaSq = m_lambdaSqssbar;
82 double sigma = pow2(lambdaSq)*m_sigmaTemp*tH2/(sH2*pow2(tH-pow2(m_stop)));
83 return sigma;
84 }
85
86 //*********
87
88 // Select identity, colour and anticolour.
89
90 void setIdColAcol() {
91
92 // Flavours.
93 double x = m_myRand->flat();
94 if(x < 0.5) setId( id1, id2, 11, -13);
95 else setId( id1, id2, -11, 13);
96
97 // tH defined between f and LQ: must swap tHat <-> uHat if qbar q in.
98 swapTU = (id1 < 0);
99
100 //cab I don't understand what's done here.
101 // Colour flow topologies.
102 if (id1 > 0) setColAcol( 1, 0, 0, 1, 0, 0, 0, 0);
103 else setColAcol( 0, 1, 1, 0, 0, 0, 0, 0);
104
105 return;
106 }
107
108 // Info on the subprocess.
109 std::string name() const {return "q qbar -> e mu (t:squark)";}
110 //cab Need Codes for q qbar -> e+- mu-+
111 int code() const {return 10001;}
112 std::string inFlux() const {return "qq";}
113 //cab It looks like here is where the final state is specified
114 //cab electrons are +-11, muons are +-13
115 int id3Mass() const {return 11;}
116 int id4Mass() const {return 13;}
117
118 private:
119
120 // Parameters set at initialization or for current kinematics.
123 int m_Nc;
124 Rndm* m_myRand;
125
126 };
127}
#define M_PI
HWIdentifier id2
Pythia8_UserProcess::UserProcessFactory::Creator< Pythia8::Sigma2qqbar2emu > qqbar2emuCreator("qqbar2emu")
static const std::map< unsigned int, unsigned int > pow2
#define x
void initProc()
Initialize process.
void sigmaKin()
Evaluate sigmaHat(sHat), part independent of incoming flavour.
std::string inFlux() const
double sigmaHat()
Evaluate sigmaHat(sHat), part dependent of incoming flavour.
Author: James Monk (jmonk@cern.ch)