ATLAS Offline Software
Sigma2qqbar2lStarlBar.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 // Single excited lepton production - similar to original pythia8 code,
6 // but polarization of final state is reversed [to match Calchep distributions
7 
9 
10 #include <iostream>
11 #include <vector>
12 
13 namespace Pythia8 {
14  class Sigma2qqbar2lStarlBar;
15  class Sigma2qqbar2nueStarnueBar;
16  class Sigma2qqbar2numuStarnumuBar;
17  class Sigma2qqbar2nutauStarnutauBar;
18  class Sigma2qqbar2eStareBar;
19  class Sigma2qqbar2muStarmuBar;
20  class Sigma2qqbar2tauStartauBar;
21 }
22 
23 // This one line registers this process with the factory
24 // An instance of this process can be created with
25 // UserProcessFactory::create("qqbar2lStarlBar")
32 
33 namespace Pythia8 {
34 
35  //**************************************************************************
36 
37  // Sigma2qqbar2lStarlBar class.
38  // Cross section for q qbar -> lStar lBar
39 
40  class Sigma2qqbar2lStarlBar: public Sigma2Process {
41 
42  public:
43  //Constructor.
44  Sigma2qqbar2lStarlBar(int idlIn) : idl(idlIn),
45  idRes(0), codeSave(0),
46  Lambda(0.), preFac(0.), openFracPos(0.), openFracNeg(0.), sigma(0.), m2ResTimes4(0.){};
47 
48  //*********
49 
50  // Initialize process.
51 
52  void initProc() {
53 
54  // Set up process properties from the chosen lepton flavour.
55  idRes = 4000000 + idl;
56  codeSave = 4060 + idl;
57  if (idl == 11) nameSave = "q qbar -> e^*+- e^-+";
58  else if (idl == 12) nameSave = "q qbar -> nu_e^* nu_ebar";
59  else if (idl == 13) nameSave = "q qbar -> mu^*+- mu^-+";
60  else if (idl == 14) nameSave = "q qbar -> nu_mu^* nu_mubar";
61  else if (idl == 15) nameSave = "q qbar -> tau^*+- tau^-+";
62  else nameSave = "q qbar -> nu_tau^* nu_taubar";
63 
64  // Secondary open width fractions.
65  openFracPos = particleDataPtr->resOpenFrac( idRes);
66  openFracNeg = particleDataPtr->resOpenFrac(-idRes);
67 
68  // Locally stored properties and couplings.
69  Lambda = settingsPtr->parm("ExcitedFermion:Lambda");
70  preFac = (M_PI / pow4(Lambda)) * (openFracPos + openFracNeg) / 3.; // orig pythia
71  //preFac = (M_PI / pow4(Lambda)) * (openFracPos + openFracNeg) / 6.;
72 
73  }
74 
75  //*********
76  // Evaluate sigmaHat(sHat).
77  virtual double sigmaHat() {return sigma;}
78 
79 
80  // Evaluate sigmaHat(sHat), part independent of incoming flavour.
81 
82  void sigmaKin() {
83 
84  // later this gets multiplied further with sH*(1-s3/sH)
85 
86  sigma = preFac * (-uH) * (sH + tH) / sH2; // orig pythia
87  //sigma = preFac * (2. + s3/sH) *(1 - s3/sH) ;
88  //Baur sigma = preFac * ( 1 + 1./3.*(sH - s3)/(sH+s3) ) * (1 - s3/sH) * (1 + s3/sH);
89  }
90 
91  //*********
92 
93  // Select identity, colour and anticolour.
94 
95  void setIdColAcol() {
96 
97  // Flavours: either lepton or antilepton may be excited.
98  if (rndmPtr->flat() * (openFracPos + openFracNeg) < openFracPos) {
99  setId( id1, id2, idRes, -idl);
100  if (id1 < 0) swapTU = true;
101  } else {
102  setId( id1, id2, -idRes, idl);
103  if (id1 > 0) swapTU = true;
104  }
105 
106  // Colour flow trivial.
107  if (id1 > 0) setColAcol( 1, 0, 0, 1, 0, 0, 0, 0);
108  else setColAcol( 0, 1, 1, 0, 0, 0, 0, 0);
109 
110  }
111 
112  //**************************************************************************
113 
114  double weightDecay( Event& process, int iResBeg,
115  int iResEnd) {
116 
117  // l* should sit in entry 5. and 6 Sequential Z/W decay assumed isotropic.
118  if (iResBeg != 5 && iResEnd != 5 && iResBeg != 6 && iResEnd != 6 ) return 1.;
119 
120  // Phase space factors.
121  double mr1 = pow2(process[7].m() / process[5].m());
122  double mr2 = pow2(process[8].m() / process[5].m());
123 
124  // Reconstruct decay angle in l* CoM frame.
125  int idAbs3 = process[7].idAbs();
126  Vec4 pLStarCom = (idAbs3 < 20) ? process[8].p() : process[7].p();
127  //Vec4 pLStarCom = (idAbs3 < 20) ? process[7].p() : process[8].p(); // orig pythia
128  pLStarCom.bstback(process[5].p());
129  double cosThe = costheta(pLStarCom, process[5].p());
130  double wt = 1.;
131 
132  // Decay, l* -> l + gamma/Z^0/W^+-).
133  int idBoson = (idAbs3 < 20) ? process[8].idAbs() : process[7].idAbs();
134  if (idBoson == 22) {
135  wt = 0.5 * (1. + cosThe);
136  } else if (idBoson == 23 || idBoson == 24) {
137  double mrB = (idAbs3 < 20) ? mr2 : mr1;
138  double kTrm = 0.5 * (mrB * (1. - cosThe));
139  wt = (1. + cosThe + kTrm) / (2 + mrB);
140  }
141 
142  // Done.
143  return wt;
144  }
145 
146  // Info on the subprocess.
147  virtual std::string name() const {return nameSave;}
148  virtual int code() const {return codeSave;}
149  virtual std::string inFlux() const {return "qqbarSame";}
150  virtual int id3Mass() const {return std::abs(idRes);}
151 
152  //virtual bool convertM2() const {return false;} //true is only suitable for resonance production pp->A->ll
153  //virtual bool convert2mb() const {return true;}
154 
155  // Parameters set at initialization or for current kinematics.
157  std::string nameSave;
159  double m2ResTimes4;
160  };
161  //**************************************************************************
163  public:
165  };
167  public:
169  };
171  public:
173  };
175  public:
177  };
179  public:
181  };
183  public:
185  };
186 
187 }
Pythia8::Sigma2qqbar2lStarlBar::m2ResTimes4
double m2ResTimes4
Definition: Sigma2qqbar2lStarlBar.cxx:159
Pythia8::Sigma2qqbar2nueStarnueBar::Sigma2qqbar2nueStarnueBar
Sigma2qqbar2nueStarnueBar()
Definition: Sigma2qqbar2lStarlBar.cxx:164
Pythia8::Sigma2qqbar2lStarlBar::id3Mass
virtual int id3Mass() const
Definition: Sigma2qqbar2lStarlBar.cxx:150
python.SystemOfUnits.m
int m
Definition: SystemOfUnits.py:91
python.PerfMonSerializer.p
def p
Definition: PerfMonSerializer.py:743
Pythia8::Sigma2qqbar2nutauStarnutauBar
Definition: Sigma2qqbar2lStarlBar.cxx:170
Pythia8::Sigma2qqbar2lStarlBar::setIdColAcol
void setIdColAcol()
Definition: Sigma2qqbar2lStarlBar.cxx:95
Pythia8::Sigma2qqbar2tauStartauBar::Sigma2qqbar2tauStartauBar
Sigma2qqbar2tauStartauBar()
Definition: Sigma2qqbar2lStarlBar.cxx:184
Event
Definition: trigbs_orderedMerge.cxx:42
Pythia8::Sigma2qqbar2nutauStarnutauBar::Sigma2qqbar2nutauStarnutauBar
Sigma2qqbar2nutauStarnutauBar()
Definition: Sigma2qqbar2lStarlBar.cxx:172
Pythia8::Sigma2qqbar2lStarlBar::idRes
int idRes
Definition: Sigma2qqbar2lStarlBar.cxx:156
Pythia8::Sigma2qqbar2lStarlBar::openFracNeg
double openFracNeg
Definition: Sigma2qqbar2lStarlBar.cxx:158
qqbar2eStareBarCreator
Pythia8_UserProcess::UserProcessFactory::Creator< Pythia8::Sigma2qqbar2eStareBar > qqbar2eStareBarCreator("qqbar2eStareBar")
Pythia8::Sigma2qqbar2lStarlBar::initProc
void initProc()
Definition: Sigma2qqbar2lStarlBar.cxx:52
M_PI
#define M_PI
Definition: ActiveFraction.h:11
qqbar2numuStarnumuBarCreator
Pythia8_UserProcess::UserProcessFactory::Creator< Pythia8::Sigma2qqbar2numuStarnumuBar > qqbar2numuStarnumuBarCreator("qqbar2numuStarnumuBar")
qqbar2nueStarnueBarCreator
Pythia8_UserProcess::UserProcessFactory::Creator< Pythia8::Sigma2qqbar2nueStarnueBar > qqbar2nueStarnueBarCreator("qqbar2nueStarnueBar")
SUSY_SimplifiedModel_PostInclude.process
string process
Definition: SUSY_SimplifiedModel_PostInclude.py:42
Pythia8
Author: James Monk (jmonk@cern.ch)
Definition: IPythia8Custom.h:13
Pythia8::Sigma2qqbar2lStarlBar::name
virtual std::string name() const
Definition: Sigma2qqbar2lStarlBar.cxx:147
Pythia8::Sigma2qqbar2lStarlBar::codeSave
int codeSave
Definition: Sigma2qqbar2lStarlBar.cxx:156
qqbar2nutauStarnutauBarCreator
Pythia8_UserProcess::UserProcessFactory::Creator< Pythia8::Sigma2qqbar2nutauStarnutauBar > qqbar2nutauStarnutauBarCreator("qqbar2nutauStarnutauBar")
id2
HWIdentifier id2
Definition: LArRodBlockPhysicsV0.cxx:564
Pythia8::Sigma2qqbar2lStarlBar::openFracPos
double openFracPos
Definition: Sigma2qqbar2lStarlBar.cxx:158
Pythia8::Sigma2qqbar2nueStarnueBar
Definition: Sigma2qqbar2lStarlBar.cxx:162
Pythia8::Sigma2qqbar2lStarlBar::sigmaKin
void sigmaKin()
Definition: Sigma2qqbar2lStarlBar.cxx:82
UserProcessFactory.h
Pythia8::Sigma2qqbar2muStarmuBar::Sigma2qqbar2muStarmuBar
Sigma2qqbar2muStarmuBar()
Definition: Sigma2qqbar2lStarlBar.cxx:180
Pythia8::Sigma2qqbar2lStarlBar::Sigma2qqbar2lStarlBar
Sigma2qqbar2lStarlBar(int idlIn)
Definition: Sigma2qqbar2lStarlBar.cxx:44
Pythia8::Sigma2qqbar2lStarlBar
Definition: Sigma2qqbar2lStarlBar.cxx:40
Pythia8_UserProcess::UserProcessFactory::Creator
Definition: UserProcessFactory.h:38
Pythia8::Sigma2qqbar2lStarlBar::code
virtual int code() const
Definition: Sigma2qqbar2lStarlBar.cxx:148
Pythia8::Sigma2qqbar2lStarlBar::inFlux
virtual std::string inFlux() const
Definition: Sigma2qqbar2lStarlBar.cxx:149
Pythia8::Sigma2qqbar2numuStarnumuBar
Definition: Sigma2qqbar2lStarlBar.cxx:166
Pythia8::Sigma2qqbar2lStarlBar::nameSave
std::string nameSave
Definition: Sigma2qqbar2lStarlBar.cxx:157
qqbar2tauStartauBarCreator
Pythia8_UserProcess::UserProcessFactory::Creator< Pythia8::Sigma2qqbar2tauStartauBar > qqbar2tauStartauBarCreator("qqbar2tauStartauBar")
Pythia8::Sigma2qqbar2lStarlBar::idl
int idl
Definition: Sigma2qqbar2lStarlBar.cxx:156
Pythia8::Sigma2qqbar2eStareBar::Sigma2qqbar2eStareBar
Sigma2qqbar2eStareBar()
Definition: Sigma2qqbar2lStarlBar.cxx:176
Pythia8::Sigma2qqbar2eStareBar
Definition: Sigma2qqbar2lStarlBar.cxx:174
Pythia8::Sigma2qqbar2muStarmuBar
Definition: Sigma2qqbar2lStarlBar.cxx:178
Pythia8::Sigma2qqbar2tauStartauBar
Definition: Sigma2qqbar2lStarlBar.cxx:182
Pythia8::Sigma2qqbar2lStarlBar::Lambda
double Lambda
Definition: Sigma2qqbar2lStarlBar.cxx:158
Pythia8::Sigma2qqbar2numuStarnumuBar::Sigma2qqbar2numuStarnumuBar
Sigma2qqbar2numuStarnumuBar()
Definition: Sigma2qqbar2lStarlBar.cxx:168
Pythia8::Sigma2qqbar2lStarlBar::sigmaHat
virtual double sigmaHat()
Definition: Sigma2qqbar2lStarlBar.cxx:77
Pythia8::Sigma2qqbar2lStarlBar::weightDecay
double weightDecay(Event &process, int iResBeg, int iResEnd)
Definition: Sigma2qqbar2lStarlBar.cxx:114
qqbar2muStarmuBarCreator
Pythia8_UserProcess::UserProcessFactory::Creator< Pythia8::Sigma2qqbar2muStarmuBar > qqbar2muStarmuBarCreator("qqbar2muStarmuBar")
Pythia8::Sigma2qqbar2lStarlBar::preFac
double preFac
Definition: Sigma2qqbar2lStarlBar.cxx:158
Pythia8::Sigma2qqbar2lStarlBar::sigma
double sigma
Definition: Sigma2qqbar2lStarlBar.cxx:158