ATLAS Offline Software
Loading...
Searching...
No Matches
SingleTopWideEta.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
3*/
5#include "Pythia8/PhaseSpace.h"
6
7namespace Pythia8{
9}
10
11
13
14namespace Pythia8 {
15
16 class SingleTopWideEta : public UserHooks {
17
18 public:
19
20 // Constructor.
22
23 // Destructor.
25
26 // Allow process cross section to be modified...
27 virtual bool canModifySigma() {return true;}
28
29 // ...which gives access to the event at the trial level, before selection.
30 virtual double multiplySigmaBy(const SigmaProcess* sigmaProcessPtr,
31 const PhaseSpace* phaseSpacePtr,
32 bool /* inEvent */) {
33 // Throw up on events that are not t-channel single top
34 if(sigmaProcessPtr->code() != 603){
35 throw std::runtime_error("SingleTopWideEta: Can only be run on qq -> tq (t-channel W) events, code 603. Event had code" + std::to_string(sigmaProcessPtr->code()) + ".");
36 }
37
38 double sHat = phaseSpacePtr->sHat();
39 double flatEta= 1.;
40 double rH = std::sqrt(sHat);
41
42 if(rH <= 160.){
43 double c = -5.55578e+01;
44 double slope= 2.88096e-01;
45 flatEta = exp(c+slope*rH);
46 }
47
48
49 if( 160. < rH && rH < 180. ){
50 double g1 = 8.07441e-1 ;
51 double g2 = 1.7313e2 ;
52 double g3 = 2.4357;
53 flatEta = g1*std::exp(-0.5*std::pow((g2-rH)/g3,2));
54 }
55
56
57 if(rH >= 180.){
58 double c1 = 8.84562;
59 double slope1 = -9.22426e-2;
60 flatEta = std::exp(c1+slope1*rH);
61 }
62
63 return flatEta;
64
65 }
66
67 };
68
69} // end namespace Pythia8
Pythia8_UserHooks::UserHooksFactory::Creator< Pythia8::SingleTopWideEta > singleTopWideEta("SingleTopWideEta")
virtual double multiplySigmaBy(const SigmaProcess *sigmaProcessPtr, const PhaseSpace *phaseSpacePtr, bool)
Author: James Monk (jmonk@cern.ch)