Rivet analyses referenceZEUS_1995_I395196Neutral strange particle production in deep inelastic scattering at HERA (ZEUS)Experiment: ZEUS (HERA) Inspire ID: 395196 Status: VALIDATED Authors:
Beam energies: (26.7, 820.0); (820.0, 26.7) GeV Run details:
Measurements of $K^0$ and $\Lambda$ production in neutral current, deep inelastic scattering of 26.7 GeV electrons and 820 GeV protons in the kinematic range $10<Q^2<640$, $0.0003<x<0.01$, and $y>0.04$. Average multiplicities for $K^0$ and $\Lambda$ production are determined for transverse momenta $p_T >0.5> $ GeV and pseudorapidities $|\eta| < 1.3 $. The production properties of $K^0$ in events with and without a large rapidity gap with respect to the proton direction are compared. The ratio of neutral $K^0$ to charged particles per event in the measured kinematic range is, within the present statistics, the same in both samples. Source code: ZEUS_1995_I395196.cc 1// -*- C++ -*-
2#include "Rivet/Analysis.hh"
3#include "Rivet/Projections/FinalState.hh"
4#include "Rivet/Projections/UnstableParticles.hh"
5#include "Rivet/Projections/FastJets.hh"
6#include "Rivet/Projections/DISKinematics.hh"
7#include "Rivet/Projections/DISLepton.hh"
8#include "Rivet/Projections/ChargedFinalState.hh"
9#include "Rivet/Projections/DISRapidityGap.hh"
10namespace Rivet {
11
12
13 /// @brief Neutral strange particle production in deep inelastic scattering at HERA (ZEUS)
14 class ZEUS_1995_I395196 : public Analysis {
15 public:
16
17 /// Constructor
18 RIVET_DEFAULT_ANALYSIS_CTOR(ZEUS_1995_I395196);
19
20
21 void init() {
22
23 declare(DISLepton(), "Lepton");
24 declare(DISKinematics(), "Kinematics");
25 declare(DISRapidityGap(), "Rapidity Gap");
26
27 const Cut cut = Cuts::abseta < 1.3;
28
29 const FinalState fs(cut);
30 declare(fs, "FS");
31 const UnstableParticles ufs(cut);
32 declare(ufs, "UFS");
33
34 const ChargedFinalState cfs(cut);
35 declare(cfs, "CFS");
36
37 // take binning from reference data using HEPData ID (digits in "d01-x01-y01" etc.)
38 book(_h["pT_kaon"], 1, 1, 1);
39 book(_h["eta_kaon"], 2, 1, 1);
40 book(_h["pT_lambda"], 3, 1, 1);
41 book(_h["eta_lambda"], 4, 1, 1);
42 book(_h_multK0_0,"TMP/mult_0", refData<YODA::BinnedEstimate<string> >(5,1,1));
43 book(_h_multK0_1,"TMP/mult_1", refData<YODA::BinnedEstimate<string> >(5,1,1));
44 book(_h_multK0_2,"TMP/mult_2", refData<YODA::BinnedEstimate<string> >(6,1,1));
45 book(_h_multK0_3,"TMP/mult_3", refData<YODA::BinnedEstimate<string> >(6,1,1));
46 book(_h_scatratio, 6, 1, 1);
47 book(_h["K0_NRG_data_pT"], 7, 1, 1);
48 book(_h["K0_LRG_data_pT"], 8, 1, 1);
49 book(_h["K0_NRG_data_eta"], 9, 1, 1);
50 book(_h["K0_LRG_data_eta"], 10, 1, 1);
51 book(_h_scat,5,1,1);
52 book(_c["dis"],"TMP/Nevt_after_cuts");
53
54
55 }
56
57
58 /// Perform the per-event analysis
59 void analyze(const Event& event) {
60 if(_edges.empty()) _edges = _h_multK0_0->xEdges();;
61
62 const FinalState& fs = apply<FinalState>(event, "FS");
63 const UnstableParticles & ufs = apply<UnstableParticles>(event, "UFS");
64 const DISKinematics& dk = apply<DISKinematics>(event, "Kinematics");
65
66 const DISRapidityGap& g = apply<DISRapidityGap>(event, "Rapidity Gap");
67
68 const ChargedFinalState& charged = apply<ChargedFinalState>(event, "CFS");
69 const size_t numPartcharged = charged.particles().size();
70 //const size_t numPart = fs.particles().size();
71 //_c["charged"] -> fill(numPartcharged);
72 //_c["all"] -> fill(numPart);
73 const size_t numParticles = fs.particles().size();
74 if (numParticles < 2) {
75 MSG_DEBUG("Failed leptonic event cut");
76 vetoEvent;
77 }
78
79 double rgap = g.gap();
80 // Get the DIS kinematics
81 double xbj = dk.x();
82 double ybj = dk.y();
83 double Q2 = dk.Q2()/GeV;
84 double W = sqrt(dk.W2()/GeV);
85 bool cut = Q2 >10 && Q2<640 && xbj>0.0003 && xbj<0.01 && ybj>0.04 && ybj<1.0;
86 if (!cut) vetoEvent;
87
88
89 size_t idx = _axis.index(Q2);
90 string edge = "OTHER";
91 if(idx && idx <= _edges.size()) edge=_edges[idx-1];
92
93
94 _h_multK0_1 -> fill(edge);
95 _h_multK0_2 -> fill(edge,numPartcharged);
96
97 _c["dis"] -> fill();
98
99 for(const Particle& p : ufs.particles()){
100 const double eta= p.eta();
101 const double pT = p.pT()/GeV;
102 const int pid = abs(p.pid());
103 //const double ybj= (p.E()-p.pz())/(2*27.5);
104 if (pid == 310 || pid == 130) { //K0S
105 //cout << " pid " << pid << " eta " << eta << endl;
106 if (pT>0.5 && pT<4.0){
107 //fill histograms related to the kaons in here.
108 _h["pT_kaon"] -> fill(pT,0.5/pT);
109 _h["eta_kaon"] -> fill(eta);
110 _h_multK0_0 -> fill(edge);
111 _h_multK0_3 -> fill(edge);
112 if(rgap<1.5 && W>140.0 ) {
113 _h["K0_LRG_data_pT"] -> fill(pT,0.5/pT);
114 _h["K0_LRG_data_eta"] -> fill(eta);
115 //cout<< abs(eta) <<endl;
116 }
117 else if(rgap>1.5 && W>140.0) {
118 _h["K0_NRG_data_pT"] -> fill(pT,0.5/pT);
119 _h["K0_NRG_data_eta"] -> fill(eta);
120 }
121 }
122 }
123 else if (pid==3122){ // Lambda
124 if (pT>0.5 && pT<3.5){
125 //fill histograms related to the lambdas in here.
126 _h["pT_lambda"] -> fill(pT,0.5/pT);
127 _h["eta_lambda"] -> fill(eta);
128 }
129 }
130 }
131
132 }
133
134
135 /// Normalise histograms etc., after the run
136 void finalize() {
137 divide(_h_multK0_0, _h_multK0_1, _h_scat);
138 divide(_h_multK0_3, _h_multK0_2, _h_scatratio);
139
140
141 //cout<< "#of kaons per events"<< kaon/numEvents() <<endl;
142 //cout<< "Num mean charged p multiplicity"<< *_c["charged"]<< endl;
143 scale(_h["pT_kaon"],1./ *_c["dis"]);
144 scale(_h["eta_kaon"],1./ *_c["dis"]);
145 scale(_h["pT_lambda"],1./ *_c["dis"]);
146 scale(_h["eta_lambda"],1./ *_c["dis"]);
147 scale(_h["K0_LRG_data_pT"],1./ *_c["dis"]);
148 scale(_h["K0_NRG_data_pT"],1./ *_c["dis"]);
149 scale(_h["K0_LRG_data_eta"],1./ *_c["dis"]);
150 scale(_h["K0_NRG_data_eta"],1./ *_c["dis"]);
151
152 }
153
154 ///@}
155
156
157 private:
158
159 /// @name Histograms
160 ///@{
161 map<string, Histo1DPtr> _h;
162 map<string, Profile1DPtr> _p;
163 map<string, CounterPtr> _c;
164 BinnedEstimatePtr<string> _h_scat, _h_scatratio ;
165 BinnedHistoPtr<string> _h_multK0_0 , _h_multK0_1 ,_h_multK0_2 ,_h_multK0_3 ;
166 YODA::Axis<double> _axis = YODA::Axis<double>{8.98, 12.195, 15.41, 32.535,106.89, 240.31};
167 vector<string> _edges;
168 ///@}
169
170 };
171
172
173 RIVET_DECLARE_PLUGIN(ZEUS_1995_I395196);
174
175}
|