Rivet analyses referenceCDF_1993_I354237Angular distribution of prompt photonExperiment: CDF (Tevatron Run 1) Inspire ID: 354237 Status: UNVALIDATED Authors:
Beam energies: (900.0, 900.0) GeV Run details:
Data taken with the Collider Detector at Fermilab (CDF) during the 1988-1989 run of the Tevatron are used to measure the distribution of the center-of-mass (rest frame of the initial state partons) angle between isolated prompt photons and the beam direction. WARNING --- Implemented is the simplified c.m. definition given in the paper. The rise of the data and the MC predictions presented in the latter could not be reproduced. Source code: CDF_1993_I354237.cc 1// -*- C++ -*-
2#include "Rivet/Analysis.hh"
3#include "Rivet/Projections/FinalState.hh"
4#include "Rivet/Projections/FastJets.hh"
5#include "Rivet/Projections/LeadingParticlesFinalState.hh"
6#include "Rivet/Projections/VetoedFinalState.hh"
7
8namespace Rivet {
9
10
11 /// @brief CDF angular distribution of prompt photon
12 class CDF_1993_I354237 : public Analysis {
13 public:
14
15 RIVET_DEFAULT_ANALYSIS_CTOR(CDF_1993_I354237);
16
17
18 void init() {
19
20 // The photon selection has been corrected to pTmin=22 GeV (vs. 23 in the trigger)
21 LeadingParticlesFinalState photonfs(FinalState(Cuts::abseta < 0.9 && Cuts::pT >= 22*GeV));
22 photonfs.addParticleId(PID::PHOTON);
23 declare(photonfs, "LeadingPhoton");
24
25 // FS excluding the leading photon
26 VetoedFinalState vfs(FinalState(Cuts::abseta < 4.2));
27 vfs.addVetoOnThisFinalState(photonfs);
28 declare(vfs, "VFS");
29
30 // Jets
31 declare(FastJets(vfs, JetAlg::CDFJETCLU, 0.7), "Jets");
32
33 book(_h_costheta ,1, 1, 1);
34
35 }
36
37
38 void analyze(const Event& event) {
39
40 Particles photons = apply<LeadingParticlesFinalState>(event, "LeadingPhoton").particles();
41 if (photons.size()!=1 || photons[0].pT() > 45.0*GeV) vetoEvent;
42 FourMomentum leadingPhoton = photons[0].momentum();
43 double eta_P = leadingPhoton.eta();
44 double phi_P = leadingPhoton.phi();
45
46 // photon isolation: less than 2 GeV EM E_T
47 double Etsum=0.0;
48 for (const Particle& p : apply<VetoedFinalState>(event, "VFS").particles()) {
49 if (p.charge() != 0 && deltaR(eta_P, phi_P, p.eta(), p.phi()) < 0.7) Etsum += p.Et();
50 }
51 if (Etsum > 2*GeV) vetoEvent;
52
53 FourMomentum jetsum;
54 Jets jets = apply<FastJets>(event, "Jets").jets(Cuts::pT > 10*GeV, cmpMomByPt);
55
56 // Require at least one jet with pT>10 GeV
57 if (jets.size()==0) vetoEvent;
58
59 // Require the leading jet to be in the opposite (phi) hemisphere w.r.t. the photon
60 if (jets[0].phi() - phi_P <= M_PI) vetoEvent;
61
62 // sum all jets in the opposite hemisphere in phi from the photon
63 for (const Jet& jet : jets) {
64 if (fabs(jet.phi()-phi_P) > M_PI) jetsum+=jet.momentum();
65 }
66
67 // c.m. cuts, see Table 1
68 double etaboost = (jetsum.eta()+eta_P)/2.;
69 if (!inRange(etaboost, -1.2, 1.2)) vetoEvent;
70
71 double etastar = (jetsum.eta()-eta_P)/2.;
72 if (!inRange(etastar, -1.1, 1.1)) vetoEvent;
73
74 double pstar = photons[0].pT()*cosh(etastar);
75 if (!inRange(pstar, 27.8, 47.0)) vetoEvent;
76
77 const double costheta = fabs(tanh((eta_P-jetsum.eta())/2.0));
78 if (!inRange(costheta, 0., 0.8)) vetoEvent;
79
80 // Fill histo
81 _h_costheta->fill(costheta);
82 }
83
84
85 void finalize() {
86 /// @todo Take fixed norm direct from ref histo
87 normalize(_h_costheta, 1.4271); // fixed norm ok
88 }
89
90
91 private:
92
93 Histo1DPtr _h_costheta;
94
95 };
96
97
98
99 RIVET_DECLARE_ALIASED_PLUGIN(CDF_1993_I354237, CDF_1993_S2742446);
100
101}
|