![]() |
|
|||
File indexing completed on 2023-10-25 09:48:16
0001 //-*-c++-*- 0002 //-*-QQ.cpp-*- 0003 // Written by James Monk and Andrew Pilkington 0004 //////////////////////////////////////////////////////////////////////////////// 0005 0006 #include "GeneratorInterface/ExhumeInterface/interface/QQ.h" 0007 0008 //////////////////////////////////////////////////////////////////////////////// 0009 Exhume::QQ::QQ(const edm::ParameterSet& pset) : TwoSpace(pset) { 0010 std::cout << std::endl << " =QQ production selected=" << std::endl << std::endl; 0011 SetThetaMin(acos(0.95)); 0012 Partons[0].Colour = 101; 0013 Partons[0].AntiColour = 0; 0014 Partons[1].Colour = 0; 0015 Partons[1].AntiColour = 101; 0016 //set default to bb production 0017 SetQuarkType(5); 0018 0019 Name = "di-quark"; 0020 } 0021 //////////////////////////////////////////////////////////////////////////////// 0022 double Exhume::QQ::SubProcess() { 0023 double qMassSq = PartonMass * PartonMass; 0024 double sintheta = 1.0 / InvSinTheta; 0025 double etsq = qMassSq * CosTheta * CosTheta + sintheta * sintheta * sHat / 4.0; 0026 double _Sigma = AlphaS(0.5 * SqrtsHat) * AlphaS(0.5 * SqrtsHat) * qMassSq * pow((1 - 4 * qMassSq * InvsHat), 1.5) / 0027 (24.0 * etsq * etsq); 0028 0029 _Sigma = _Sigma * Gev2fb; 0030 //val / by 2Pi so that integrate over Phi later 0031 0032 return (_Sigma); 0033 } 0034 0035 void Exhume::QQ::LIPS2Amp() { 0036 double Theta = acos(CosTheta); 0037 InvSinTheta = 1.0 / sin(Theta); 0038 0039 return; 0040 } 0041 0042 void Exhume::QQ::Amp2LIPS() { return; } 0043 0044 /* 0045 //////////////////////////////////////////////////////////////////////////////// 0046 void Exhume::QQ::SetSubParameters(){ 0047 double ThetaRand = double(rand())/RAND_MAX; 0048 CosTheta = GetValue(ThetaRand); 0049 Theta = acos(CosTheta); 0050 SinTheta = sin(Theta); 0051 InvSinTheta = 1.0/sin(Theta); 0052 } 0053 //////////////////////////////////////////////////////////////////////////////// 0054 double Exhume::QQ::SubParameterRange(){ 0055 return(TotalIntegral); 0056 } 0057 //////////////////////////////////////////////////////////////////////////////// 0058 void Exhume::QQ::MaximiseSubParameters(){ 0059 WeightInit(CosThetaMin,CosThetaMax); 0060 Theta = ThetaMin; 0061 InvSinTheta = 1.0/SinThetaMin; 0062 } 0063 //////////////////////////////////////////////////////////////////////////////// 0064 double Exhume::QQ::SubParameterWeight(){ 0065 SubWgt = GetFunc(CosTheta); 0066 return(SubWgt); 0067 } 0068 //////////////////////////////////////////////////////////////////////////////// 0069 void Exhume::QQ::SetPartons(){ 0070 E = 0.5*SqrtsHat; 0071 Phi = 2*PI*double(rand())/RAND_MAX; 0072 P = sqrt(E*E-qMassSq); 0073 Px = P*SinTheta*cos(Phi); 0074 Py = P*SinTheta*sin(Phi); 0075 Pz = P*CosTheta; 0076 0077 Partons[0].p.setPx(Px); 0078 Partons[0].p.setPy(Py); 0079 Partons[0].p.setPz(Pz); 0080 Partons[0].p.setE(E); 0081 0082 Partons[1].p.setPx(-Px); 0083 Partons[1].p.setPy(-Py); 0084 Partons[1].p.setPz(-Pz); 0085 Partons[1].p.setE(E); 0086 0087 Partons[0].p.boost(CentralVector.boostVector()); 0088 Partons[1].p.boost(CentralVector.boostVector()); 0089 0090 return; 0091 0092 } 0093 /////////////////////////////////////////////////////////////////////////////// 0094 void Exhume::QQ::SetThetaMin(const double& ThetaMin_){ 0095 ThetaMin = ThetaMin_; 0096 ThetaMax = PI - ThetaMin_; 0097 SinThetaMin = sin(ThetaMin); 0098 CosThetaMin = cos(ThetaMax); 0099 CosThetaMax = cos(ThetaMin); 0100 return; 0101 } 0102 //////////////////////////////////////////////////////////////////////////////// 0103 double Exhume::QQ::WeightFunc(const double& CosTheta_){ 0104 InvSinTheta = 1.0/sin(acos(CosTheta_)); 0105 return(SinThetaMin*SinThetaMin*SinThetaMin*SinThetaMin 0106 *InvSinTheta*InvSinTheta*InvSinTheta*InvSinTheta); 0107 } 0108 0109 */ 0110 //////////////////////////////////////////////////////////////////////////////// 0111 void Exhume::QQ::SetQuarkType(const int& _id) { 0112 Partons[0].id = _id; 0113 Partons[1].id = -_id; 0114 switch (_id) { 0115 case 1: 0116 PartonMass = 0.0; 0117 break; 0118 case 2: 0119 PartonMass = 0.0; 0120 break; 0121 case 3: 0122 PartonMass = StrangeMass; 0123 break; 0124 case 4: 0125 PartonMass = CharmMass; 0126 break; 0127 case 5: 0128 PartonMass = BottomMass; 0129 break; 0130 case 6: 0131 PartonMass = TopMass; 0132 break; 0133 default: 0134 std::cout << "\tYou have not entered a quark KF code" << std::endl; 0135 std::cout << "\tBottom Production Chosen" << std::endl; 0136 PartonMass = BottomMass; 0137 Partons[0].id = 5; 0138 Partons[1].id = -5; 0139 break; 0140 } 0141 return; 0142 }
[ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
This page was automatically generated by the 2.2.1 LXR engine. The LXR team |
![]() ![]() |