Rivet analyses referenceARGUS_1989_I282570Spectrum for $D^+_{s1}(2536)$ production at 10. GeVExperiment: ARGUS (DORIS) Inspire ID: 282570 Status: VALIDATED Authors:
Beam energies: (5.0, 5.0) GeV Run details:
Spectrum for $D^+_{s1}(2536)$ production at 10. GeV measured by ARGUS. Source code: ARGUS_1989_I282570.cc 1// -*- C++ -*-
2#include "Rivet/Analysis.hh"
3#include "Rivet/Projections/Beam.hh"
4#include "Rivet/Projections/UnstableParticles.hh"
5
6namespace Rivet {
7
8
9 /// @brief Spectrum for D_s1
10 class ARGUS_1989_I282570 : public Analysis {
11 public:
12
13 /// Constructor
14 RIVET_DEFAULT_ANALYSIS_CTOR(ARGUS_1989_I282570);
15
16
17 /// @name Analysis methods
18 /// @{
19
20 /// Book histograms and initialise projections before the run
21 void init() {
22 // projections
23 declare(Beam(), "Beams");
24 declare(UnstableParticles(), "UFS");
25 // book histos
26 book(_h_rate1 ,1,1,1);
27 book(_h_rate2 ,1,1,2);
28 book(_h_x ,2,1,1);
29 }
30
31 bool isK0(int id) {
32 return id==310 || id==130 || abs(id)==311;
33 }
34
35
36 /// Perform the per-event analysis
37 void analyze(const Event& event) {
38 static const int DsID = 10433;
39 // Get beams and average beam momentum
40 const ParticlePair& beams = apply<Beam>(event, "Beams").beams();
41 const double Emax = ( beams.first.p3().mod() + beams.second.p3().mod() ) / 2.0;
42 const double Pmax = sqrt(sqr(Emax)-sqr(2.535));
43 const UnstableParticles& ufs = apply<UnstableParticles>(event, "UFS");
44 for (const Particle& p : ufs.particles(Cuts::abspid==DsID)) {
45 double xp = p.momentum().p3().mod()/Pmax;
46 _h_x->fill(xp);
47 if(p.children().size()!=2) continue;
48 int sign = p.pid()/DsID;
49 if(p.children()[0].pid()==sign*413 &&
50 isK0(p.children()[1].pid())) {
51 _h_rate1->fill(10);
52 _h_rate2->fill(10);
53 }
54 else if (p.children()[1].pid()==sign*413 &&
55 isK0(p.children()[0].pid())) {
56 _h_rate1->fill(10);
57 _h_rate2->fill(10);
58 }
59 else if(p.children()[0].pid()==sign*423 &&
60 p.children()[1].pid()==sign*321) {
61 _h_rate2->fill(10);
62 }
63 else if(p.children()[1].pid()==sign*423 &&
64 p.children()[0].pid()==sign*321) {
65 _h_rate2->fill(10);
66 }
67 }
68 }
69
70
71 /// Normalise histograms etc., after the run
72 void finalize() {
73 normalize(_h_x);
74 scale(_h_rate1,crossSection()/sumOfWeights()/picobarn);
75 scale(_h_rate2,crossSection()/sumOfWeights()/picobarn);
76 }
77
78 /// @}
79
80
81 /// @name Histograms
82 /// @{
83 BinnedHistoPtr<int> _h_rate1,_h_rate2;
84 Histo1DPtr _h_x;
85 /// @}
86
87
88 };
89
90
91 RIVET_DECLARE_PLUGIN(ARGUS_1989_I282570);
92
93}
|