# modcolorS_trip: resonanceWidth.C

File resonanceWidth.C, 2.9 KB (added by druekeel, 5 years ago) |
---|

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> |

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 |