ATLAS Offline Software
ResonanceExcitedCI.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 // The ResonanceExcited class handles excited-fermion resonances.
6 // This is a copy of existing pythia ResonanceExcited class
7 // with extention to include decays going via contact interactions (4-fermion vertexes)
8 //
9 // author Olya Igonkina, modified by James Monk for Pythia8_i
10 
12 
13 namespace Pythia8{
14  class ResonanceExcitedCI;
15 }
16 
18 
19 namespace Pythia8{
20 
21  class ResonanceExcitedCI : public ResonanceWidths {
22 
23  public:
24 
25  // Constructor.
26  ResonanceExcitedCI(int idResIn):
27  m_lambda(0.), m_coupF(0.), m_coupFprime(0.), m_coupFcol(0.),
28  m_sin2tW(0.), m_cos2tW(0.){
29  initBasic(idResIn); std::cout << " ResonanceExcitedCI constructor\n";
30  }
31 
32  private:
33 
34  void initConstants() {
35 
36  // Locally stored properties and couplings.
37  m_lambda = settingsPtr->parm("ExcitedFermion:Lambda");
38  m_coupF = settingsPtr->parm("ExcitedFermion:coupF");
39  m_coupFprime = settingsPtr->parm("ExcitedFermion:coupFprime");
40  m_coupFcol = settingsPtr->parm("ExcitedFermion:coupFcol");
41 #ifdef PYTHIA_VERSION_INTEGER
42  #if PYTHIA_VERSION_INTEGER > 8300
43  CoupSM* couplingsPtr = infoPtr->coupSMPtr;
44  #endif
45 #endif
46  m_sin2tW = couplingsPtr->sin2thetaW();
47  m_cos2tW = 1. - m_sin2tW;
48 
49  return;
50  }
51 
52  //--------------------------------------------------------------------------
53 
54  // Calculate various common prefactors for the current mass.
55 
56  void calcPreFac(bool) {
57  // Common coupling factors.
58 #ifdef PYTHIA_VERSION_INTEGER
59  #if PYTHIA_VERSION_INTEGER > 8300
60  CoupSM* couplingsPtr = infoPtr->coupSMPtr;
61  #endif
62 #endif
63  alpEM = couplingsPtr->alphaEM(mHat * mHat);
64  alpS = couplingsPtr->alphaS(mHat * mHat);
65  preFac = pow3(mHat) / pow2(m_lambda);
66 
67  return;
68  }
69 
70  //--------------------------------------------------------------------------
71 
72  // Calculate width for currently considered channel.
73 
74  void calcWidth(bool) {
75 
76  // Check that above threshold.
77  if (ps == 0.) return;
78 
79  // f^* -> f g.
80  if (id1Abs == 21) widNow = preFac * alpS * pow2(m_coupFcol) / 3.;
81 
82  // f^* -> f gamma.
83  else if (id1Abs == 22) {
84  double chgI3 = (id2Abs%2 == 0) ? 0.5 : -0.5;
85  double chgY = (id2Abs < 9) ? 1. / 6. : -0.5;
86  double chg = chgI3 * m_coupF + chgY * m_coupFprime;
87  widNow = preFac * alpEM * pow2(chg) / 4.;
88  }
89  // f^* -> f Z^0.
90  else if (id1Abs == 23) {
91  double chgI3 = (id2Abs%2 == 0) ? 0.5 : -0.5;
92  double chgY = (id2Abs < 9) ? 1. / 6. : -0.5;
93  double chg = chgI3 * m_cos2tW * m_coupF - chgY * m_sin2tW * m_coupFprime;
94  widNow = preFac * (alpEM * pow2(chg) / (8. * m_sin2tW * m_cos2tW))
95  * ps*ps * (2. + mr1);
96  }
97 
98  // f^* -> f' W^+-.
99  else if (id1Abs == 24) widNow = preFac * (alpEM * pow2(m_coupF)
100  / (16. * m_sin2tW)) * ps*ps * (2. + mr1);
101  // idxAbs are sorted according to their abs value ; use idRes
102 
103  // f^* -> f f' \bar{f'}
104  else {
105  //std::cout << " hei! in ResonanceExcitedCI processing F* -> f f'f'bar decays "<< id1Abs <<" "<<id2Abs<<" "<<id3Abs<< "\n";
106 
107  if( id1Abs < 17 && id2Abs < 17 && id3Abs>0 && id3Abs < 17 ){ // f* -> f f'\bar(f'} decay
108  widNow = preFac * pow2(mHat) / pow2(m_lambda) / 96. / M_PI ;
109  if( id3Abs < 10 ) widNow *= 3.; // quarks in final state. id1 is highest pdgId of f, f'
110  if( id1Abs == id2Abs && id1Abs == id3Abs ){
111  if( std::abs(idRes)-4000000 < 10 ) widNow *= 4./3.;
112  else widNow *= 2.;
113  }
114  }
115  }
116 
117  return;
118  }
119 
120  // Locally stored properties and couplings.
122 
123  };
124 }
Pythia8::ResonanceExcitedCI::m_coupFprime
double m_coupFprime
Definition: ResonanceExcitedCI.cxx:121
Pythia8::ResonanceExcitedCI::m_coupFcol
double m_coupFcol
Definition: ResonanceExcitedCI.cxx:121
resonanceExcitedCreator
Pythia8_UserResonance::UserResonanceFactory::Creator< Pythia8::ResonanceExcitedCI > resonanceExcitedCreator("ExcitedCI")
Pythia8::ResonanceExcitedCI::m_lambda
double m_lambda
Definition: ResonanceExcitedCI.cxx:121
M_PI
#define M_PI
Definition: ActiveFraction.h:11
Pythia8::ResonanceExcitedCI
Definition: ResonanceExcitedCI.cxx:21
Pythia8::ResonanceExcitedCI::calcWidth
void calcWidth(bool)
Definition: ResonanceExcitedCI.cxx:74
Pythia8
Author: James Monk (jmonk@cern.ch)
Definition: IPythia8Custom.h:13
Pythia8::ResonanceExcitedCI::m_cos2tW
double m_cos2tW
Definition: ResonanceExcitedCI.cxx:121
UserResonanceFactory.h
Pythia8::ResonanceExcitedCI::initConstants
void initConstants()
Definition: ResonanceExcitedCI.cxx:34
Pythia8_UserResonance::UserResonanceFactory::Creator
Definition: UserResonanceFactory.h:42
Pythia8::ResonanceExcitedCI::calcPreFac
void calcPreFac(bool)
Definition: ResonanceExcitedCI.cxx:56
Pythia8::ResonanceExcitedCI::m_coupF
double m_coupF
Definition: ResonanceExcitedCI.cxx:121
Pythia8::ResonanceExcitedCI::m_sin2tW
double m_sin2tW
Definition: ResonanceExcitedCI.cxx:121
Pythia8::ResonanceExcitedCI::ResonanceExcitedCI
ResonanceExcitedCI(int idResIn)
Definition: ResonanceExcitedCI.cxx:26