modcolorS_trip: resonanceWidth.C

File resonanceWidth.C, 2.9 KB (added by Elizabeth Druekeel, 9 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