modcolorS_trip: resonanceWidth.C

File resonanceWidth.C, 2.9 KB (added by druekeel, 2 years ago)

macro to generate widths for triplet at different masses

Line 
1//
2// Macro to calculate the colored resonance width
3//
4// Set the coupling (qqtrip) and then the code loops over triplet particle
5// masses and prints them to the screen and into a text file and shell script
6// that is convenient to use for event generation.
7//
8// Author: Reinhard Schwienhorst, from the bprime one
9//
10// Date: July 2012
11//
12//
13#include "TMath.h"
14#include <iostream>
15ofstream fout, fout1,fshell;
16//
17// coupling parameters. You could change these if you wanted to
18double qqtrip = 0.3;    // default: 1
19
20// SM parameters
21double MT  = 172.5;
22double MW  = 80.267;
23double MB  = 4.2;
24double MH  = 125.0;
25double k_z = 1.;
26double gs = 1.2177158;
27double MZ = 91.545;
28
29double gwrs=0.65189214;
30double cwrs=0.876812409;
31double vrs=246.259632;
32
33oneMRes (const double& MRes=700, const double& qqt=0.3);
34
35resonanceWidth(){
36
37  fout.open("colored_resonance_masswidth.lst");
38  fout1.open("colored_resonance_widthdetails.lst");
39  fshell.open("masswidth.sh");
40  fout << " qqtrip = " << qqtrip <<endl;
41  fout << " M_T = " << MT << endl;
42  fout << "colored resonance Mass [GeV]  Width [GeV] " << endl;
43  fout1<< "colored res Mass [GeV]  Width [GeV]" << endl;
44  for(int i=0; i<60; i++){
45      double inMR = 300 + 50 * i ;
46      cout << inMR<<" qqtrip = " << qqtrip<<endl;
47      oneMRes(inMR,qqtrip);
48  }
49  fout.close();
50  fout1.close();
51  fshell.close();
52}
53
54// helper functions for the width calculation
55double lambda(const double& m0,const double& m1,const double& m2) {
56  return (pow(m0,4) + pow(m1,4) + pow(m2,4) 
57          - 2.*pow(m0,2)*pow(m1,2)
58          - 2.*pow(m0,2)*pow(m2,2)
59          - 2.*pow(m1,2)*pow(m2,2));
60}
61double lambda2(const double& xf,const double& xv) { return lambda(xf,xv,1.); }
62double FFV1(const double& g,const double& fL, const double& fR, const double& mB,const double& mv, const double& xf, const double& xv) {
63  return (pow(g,2)/(32.*TMath::Pi())
64          * pow(mB,3)/pow(mv,2)
65          * TMath::Sqrt(lambda2(xf,xv))
66          * ((pow(fL,2)+pow(fR,2))*(1.+pow(xv,2)-2.*pow(xf,2)-2.*pow(xv,4)
67                                    +pow(xv,2)*pow(xf,2)+pow(xf,4))
68             - 12.*fL*fR*pow(xv,2)*xf) );
69}
70
71
72//
73// function to compute the partial and total widths at one mass
74//
75oneMRes(const double& MRes, const double& qqt){
76  //
77  // RS implementing what Jianghao has:
78  double fL=qqt;
79  double fR=qqt;
80  double wtb = MRes/16./TMath::Pi()
81    * TMath::Sqrt(lambda2(MT/MRes,MB/MRes))
82    * ( (pow(fL,2)+pow(fR,2))*(1.-pow(MT/MRes,2)-pow(MB/MRes,2))
83        - 4.*fL*fR*MT/MRes*MB/MRes);
84 
85  // output to text file and script that updates the param_card.dat-bak file
86  fout << MRes << " \t\t " << wtb << endl;
87  fout1 << MRes << " \t " << wtb << endl;
88  //
89  // now for light quarks:
90  double wqq = MRes/16./TMath::Pi()
91    * 1.
92    * (pow(fL,2)+pow(fR,2));
93 
94  cout<<MRes<<", tb width "<<wtb<<", qq' width "<<wqq<<", total width "<<2.*wqq+wtb<<endl;
95  //cout << "Width of " << MRes << " GeV colored resonance is : " << wtb << endl;
96 
97}
98