Rivet analyses referenceD0_2006_I698784Inclusive isolated photon cross-section, differential in pT(gamma)Experiment: D0 (Tevatron Run 2) Inspire ID: 698784 Status: VALIDATED Authors:
Beam energies: (980.0, 980.0) GeV Run details:
Measurement of differential cross section for inclusive production of isolated photons in p pbar collisions at $\sqrt{s} = 1.96$ TeV with the D\O detector at the Fermilab Tevatron collider. The photons span transverse momenta 23--300 GeV and have pseudorapidity $|\eta| < 0.9$. Isolated direct photons are probes of pQCD via the annihilation ($q \bar{q} -> \gamma g$) and quark-gluon Compton scattering ($q g -> \gamma q$) processes, the latter of which is also sensitive to the gluon PDF. The initial state radiation / resummation formalisms are sensitive to the resulting photon pT spectrum Source code: D0_2006_I698784.cc 1// -*- C++ -*-
2#include "Rivet/Analysis.hh"
3#include "Rivet/Projections/FinalState.hh"
4#include "Rivet/Projections/LeadingParticlesFinalState.hh"
5#include "Rivet/Projections/VetoedFinalState.hh"
6
7namespace Rivet {
8
9
10 /// @brief D0 inclusive isolated photon cross-section vs. \f$ p_\perp(gamma) \f$.
11 ///
12 /// @author Andy Buckley
13 /// @author Gavin Hesketh
14 class D0_2006_I698784 : public Analysis {
15 public:
16
17 RIVET_DEFAULT_ANALYSIS_CTOR(D0_2006_I698784);
18
19
20 /// @name Analysis methods
21 /// @{
22
23 void init() {
24 // General FS for photon isolation
25 FinalState fs;
26 declare(fs, "AllFS");
27
28 // Get leading photon
29 LeadingParticlesFinalState photonfs(FinalState((Cuts::etaIn(-0.9, 0.9) && Cuts::pT >= 23.0*GeV)));
30 photonfs.addParticleId(PID::PHOTON);
31 declare(photonfs, "LeadingPhoton");
32
33 // Book histograms
34 book(_h_pTgamma ,1, 1, 1);
35 }
36
37
38 /// Do the analysis
39 void analyze(const Event& event) {
40
41 // Get the photon
42 const FinalState& photonfs = apply<FinalState>(event, "LeadingPhoton");
43 if (photonfs.particles().size() != 1) {
44 vetoEvent;
45 }
46 const FourMomentum photon = photonfs.particles().front().momentum();
47
48 // Isolate photon by ensuring that a 0.4 cone around it contains less than 10% of the photon's energy
49 double E_P = photon.E();
50 double eta_P = photon.eta();
51 double phi_P = photon.phi();
52 double econe = 0.0;
53 for (const Particle& p : apply<FinalState>(event, "AllFS").particles()) {
54 if (deltaR(eta_P, phi_P,
55 p.eta(), p.phi()) < 0.4) {
56 econe += p.E();
57 if (econe/E_P > 1.1) {
58 vetoEvent;
59 }
60 }
61 }
62
63 // Fill histo
64 _h_pTgamma->fill(photon.pT());
65 }
66
67
68 // Finalize
69 void finalize() {
70 const double lumi_gen = sumOfWeights()/crossSection()/picobarn;
71 // Divide by effective lumi, plus rapidity bin width of 1.8
72 scale(_h_pTgamma, 1/lumi_gen * 1/1.8);
73 }
74
75 /// @}
76
77
78 private:
79
80 /// @name Histograms
81 /// @{
82 Histo1DPtr _h_pTgamma;
83 /// @}
84
85 };
86
87
88
89 RIVET_DECLARE_ALIASED_PLUGIN(D0_2006_I698784, D0_2006_S6438750);
90
91}
|