Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:13:30

0001 //-*-c++-*-
0002 //-*-GG.cpp-*-
0003 //   Written by James Monk and Andrew Pilkington
0004 //////////////////////////////////////////////////////////////////////////////
0005 
0006 #include "GeneratorInterface/ExhumeInterface/interface/GG.h"
0007 
0008 //////////////////////////////////////////////////////////////////////////////
0009 Exhume::GG::GG(const edm::ParameterSet& pset) : TwoSpace(pset) {
0010   std::cout << std::endl << "   =Glu Glu production selected=" << std::endl;
0011   SetThetaMin(acos(0.95));
0012   Partons[0].id = 21;
0013   Partons[1].id = 21;
0014   Partons[0].Colour = 101;
0015   Partons[0].AntiColour = 102;
0016   Partons[1].Colour = 102;
0017   Partons[1].AntiColour = 101;
0018 
0019   EighteenPI = 18.0 * M_PI;
0020 
0021   Name = "di-gluon";
0022 }
0023 //////////////////////////////////////////////////////////////////////////////
0024 double Exhume::GG::SubProcess() {
0025   //error ? 0.5 factor from integration over t -> cos theta?
0026   double AlphaS_ = AlphaS(0.5 * SqrtsHat);
0027   double InvSinTheta2 = InvSinTheta * InvSinTheta;
0028   return (EighteenPI * AlphaS_ * AlphaS_ * InvsHat * InvSinTheta2 * InvSinTheta2 * Gev2fb / (2 * M_PI));
0029 }
0030 void Exhume::GG::LIPS2Amp() {
0031   double Theta = acos(CosTheta);
0032   //SinTheta = sin(Theta);
0033   InvSinTheta = 1.0 / sin(Theta);
0034 
0035   return;
0036 }
0037 
0038 void Exhume::GG::Amp2LIPS() { return; }
0039 /*
0040 //////////////////////////////////////////////////////////////////////////////
0041 void Exhume::GG::SetSubParameters(){
0042   double ThetaRand = double(rand())/RAND_MAX;
0043   CosTheta = GetValue(ThetaRand);
0044   Theta = acos(CosTheta);
0045   SinTheta = sin(Theta);
0046   InvSinTheta = 1.0/sin(Theta);
0047 }
0048 //////////////////////////////////////////////////////////////////////////////
0049 double Exhume::GG::SubParameterRange(){
0050   return(TotalIntegral);
0051 }
0052 //////////////////////////////////////////////////////////////////////////////
0053 void Exhume::GG::MaximiseSubParameters(){
0054   WeightInit(CosThetaMin,CosThetaMax);
0055   Theta = ThetaMin;
0056   InvSinTheta = 1.0/SinThetaMin;
0057 }
0058 //////////////////////////////////////////////////////////////////////////////
0059 double Exhume::GG::SubParameterWeight(){
0060   SubWgt = GetFunc(CosTheta);
0061   return(SubWgt);
0062 }
0063 //////////////////////////////////////////////////////////////////////////////
0064 void Exhume::GG::SetPartons(){
0065   E = 0.5*SqrtsHat;
0066   Phi = 2*M_PI*double(rand())/RAND_MAX;
0067   Px = E*SinTheta*cos(Phi);
0068   Py = E*SinTheta*sin(Phi);
0069   Pz = E*CosTheta;
0070   
0071   Partons[0].p.setPx(Px);
0072   Partons[0].p.setPy(Py);
0073   Partons[0].p.setPz(Pz);
0074   Partons[0].p.setE(E);
0075 
0076   Partons[1].p.setPx(-Px);
0077   Partons[1].p.setPy(-Py);
0078   Partons[1].p.setPz(-Pz);
0079   Partons[1].p.setE(E);
0080 
0081   Partons[0].p.boost(CentralVector.boostVector());
0082   Partons[1].p.boost(CentralVector.boostVector());
0083   
0084   return;
0085 
0086 }
0087 
0088 ///////////////////////////////////////////////////////////////////////////// 
0089 void Exhume::GG::SetThetaMin(const double& ThetaMin_){
0090   ThetaMin = ThetaMin_;
0091   ThetaMax = M_PI - ThetaMin_;
0092   // SinThetaMin = sin(ThetaMin);
0093   CosThetaMin = cos(ThetaMax);
0094   CosThetaMax = cos(ThetaMin); 
0095   return;
0096 }
0097 
0098 
0099 //////////////////////////////////////////////////////////////////////////////
0100 double Exhume::GG::WeightFunc(const double& CosTheta_){
0101   InvSinTheta = 1.0/sin(acos(CosTheta_));
0102   return(SinThetaMin*SinThetaMin*SinThetaMin*SinThetaMin
0103      *InvSinTheta*InvSinTheta*InvSinTheta*InvSinTheta);
0104 }
0105 //////////////////////////////////////////////////////////////////////////////
0106 */