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>
|
---|
15 | ofstream fout, fout1,fshell;
|
---|
16 | //
|
---|
17 | // coupling parameters. You could change these if you wanted to
|
---|
18 | double qqtrip = 0.3; // default: 1
|
---|
19 |
|
---|
20 | // SM parameters
|
---|
21 | double MT = 172.5;
|
---|
22 | double MW = 80.267;
|
---|
23 | double MB = 4.2;
|
---|
24 | double MH = 125.0;
|
---|
25 | double k_z = 1.;
|
---|
26 | double gs = 1.2177158;
|
---|
27 | double MZ = 91.545;
|
---|
28 |
|
---|
29 | double gwrs=0.65189214;
|
---|
30 | double cwrs=0.876812409;
|
---|
31 | double vrs=246.259632;
|
---|
32 |
|
---|
33 | oneMRes (const double& MRes=700, const double& qqt=0.3);
|
---|
34 |
|
---|
35 | resonanceWidth(){
|
---|
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
|
---|
55 | double 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 | }
|
---|
61 | double lambda2(const double& xf,const double& xv) { return lambda(xf,xv,1.); }
|
---|
62 | double 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 | //
|
---|
75 | oneMRes(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 |
|
---|