Rivet analyses referenceCMS_2014_I1266056Photon + jets triple differential cross-sectionExperiment: CMS (LHC) Inspire ID: 1266056 Status: UNVALIDATED Authors:
Beam energies: (3500.0, 3500.0) GeV Run details:
A measurement of the triple differential cross section in photon+jets final states in $pp$ collisions at $\sqrt{s} = 7$ TeV. Photons with $|\eta|<2.5$ and $40$ GeV$<p_T<300$ GeV and jets with $|\eta|<2.5$ and $p_T>30$ GeV are selected. The measurement uses 2.14 fb$^{-1}$ of integrated luminosity collected with the CMS detector. Source code: CMS_2014_I1266056.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#include "Rivet/Projections/FastJets.hh"
7
8namespace Rivet {
9
10
11 /// @brief Measurement of gamma + jets + X triple differential cross-sections
12 ///
13 /// @author David Grellscheid
14 class CMS_2014_I1266056 : public Analysis {
15 public:
16
17 // Constructor
18 CMS_2014_I1266056()
19 : Analysis("CMS_2014_I1266056")
20 { }
21
22
23 // Book histograms and initialise projections before the run
24 void init() {
25 // Final state
26 FinalState fs((Cuts::etaIn(-3, 3)));
27 declare(fs, "FS");
28
29 // Leading photon
30 LeadingParticlesFinalState photonfs(FinalState((Cuts::etaIn(-2.5, 2.5) && Cuts::pT >= 40.0*GeV)));
31 photonfs.addParticleId(PID::PHOTON);
32 declare(photonfs, "LeadingPhoton");
33
34 // FS excluding the leading photon
35 VetoedFinalState vfs(fs);
36 vfs.addVetoOnThisFinalState(photonfs);
37 declare(vfs, "JetFS");
38
39 // Jets
40 FastJets jetpro(vfs, JetAlg::ANTIKT, 0.5);
41 //jetpro.useInvisibles();
42 declare(jetpro, "Jets");
43
44 book(_h_phverycentral_jetcentral, 1, 1, 1);
45 book(_h_phcentral_jetcentral , 2, 1, 1);
46 book(_h_phforward_jetcentral , 3, 1, 1);
47 book(_h_phveryforward_jetcentral, 4, 1, 1);
48
49 book(_h_phverycentral_jetforward, 1, 1, 2);
50 book(_h_phcentral_jetforward , 2, 1, 2);
51 book(_h_phforward_jetforward , 3, 1, 2);
52 book(_h_phveryforward_jetforward, 4, 1, 2);
53
54 }
55
56 // Perform the per-event analysis
57 void analyze(const Event& event) {
58
59 // Get the photon
60 const FinalState& photonfs = apply<FinalState>(event, "LeadingPhoton");
61 if (photonfs.particles().empty()) vetoEvent;
62 const FourMomentum photon = photonfs.particles().front().momentum();
63
64 // Get the jet
65 Jets jets = apply<FastJets>(event, "Jets").jetsByPt(Cuts::pT > 30*GeV);
66 if (jets.empty()) vetoEvent;
67 FourMomentum leadingJet;
68 for ( const Jet & j : jets ) {
69 leadingJet = j.momentum();
70 // keep the first separated jet
71 if (deltaR(photon, leadingJet) > 0.5)
72 break;
73 }
74 if (deltaR(photon, leadingJet) < 0.5)
75 vetoEvent;
76
77 // Veto if leading jet is outside plotted rapidity regions
78 if (leadingJet.abseta() > 2.5) vetoEvent;
79
80 // TODO: photon isolation 'IsoGamma' needed?
81
82 // Fill histos
83 const double abs_jet_eta = leadingJet.abseta();
84 const double photon_pt = photon.pT()/GeV;
85 const double abs_photon_eta = photon.abseta();
86
87 if (abs_jet_eta < 1.5) {
88 if (abs_photon_eta < 0.9) _h_phverycentral_jetcentral->fill(photon_pt);
89 else if (abs_photon_eta < 1.44) _h_phcentral_jetcentral->fill( photon_pt);
90 else if (abs_photon_eta < 1.57) {}
91 else if (abs_photon_eta < 2.1) _h_phforward_jetcentral->fill( photon_pt);
92 else if (abs_photon_eta < 2.5) _h_phveryforward_jetcentral->fill(photon_pt);
93 }
94 else if (abs_jet_eta < 2.5) {
95 if (abs_photon_eta < 0.9) _h_phverycentral_jetforward->fill(photon_pt);
96 else if (abs_photon_eta < 1.44) _h_phcentral_jetforward->fill( photon_pt);
97 else if (abs_photon_eta < 1.57) {}
98 else if (abs_photon_eta < 2.1) _h_phforward_jetforward->fill( photon_pt);
99 else if (abs_photon_eta < 2.5) _h_phveryforward_jetforward->fill(photon_pt);
100 }
101 }
102
103
104
105 /// Normalise histograms etc., after the run
106 void finalize() {
107 const double scale_jetcentral = crossSection()/picobarn/sumOfWeights(); // *3 (jet eta < 1.5)
108 scale(_h_phverycentral_jetcentral, scale_jetcentral); // * 1.8 (photon eta < 0.9)
109 scale(_h_phcentral_jetcentral , scale_jetcentral); // * 1.08 (0.9 .. 1.44)
110 scale(_h_phforward_jetcentral , scale_jetcentral); // * 1.06 (1.57 .. 2.1)
111 scale(_h_phveryforward_jetcentral, scale_jetcentral); // * 0.8 (2.1 .. 2.5)
112
113 const double scale_jetforward = crossSection()/picobarn/sumOfWeights(); // *2 (1.5 < eta < 2.5)
114 scale(_h_phverycentral_jetforward, scale_jetforward); // .. as above ..
115 scale(_h_phcentral_jetforward , scale_jetforward); // .. as above ..
116 scale(_h_phforward_jetforward , scale_jetforward); // .. as above ..
117 scale(_h_phveryforward_jetforward, scale_jetforward); // .. as above ..
118
119 }
120
121
122 private:
123
124 Histo1DPtr _h_phverycentral_jetcentral;
125 Histo1DPtr _h_phcentral_jetcentral ;
126 Histo1DPtr _h_phforward_jetcentral ;
127 Histo1DPtr _h_phveryforward_jetcentral;
128
129 Histo1DPtr _h_phverycentral_jetforward;
130 Histo1DPtr _h_phcentral_jetforward ;
131 Histo1DPtr _h_phforward_jetforward ;
132 Histo1DPtr _h_phveryforward_jetforward;
133
134 };
135
136
137 RIVET_DECLARE_PLUGIN(CMS_2014_I1266056);
138
139
140}
|