Rivet analyses referenceARGUS_1990_I296522Spectrum for $\Xi_c^{0,+}$ production at 10.5 GeVExperiment: ARGUS (DORIS) Inspire ID: 296522 Status: VALIDATED Authors:
Beam energies: (5.2, 5.2) GeV Run details:
Spectrum for $\Xi_c^{0,+}$ production at 10.58 GeV measured by ARGUS. Source code: ARGUS_1990_I296522.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 Xi_c+ spectrum
10 class ARGUS_1990_I296522 : public Analysis {
11 public:
12
13 /// Constructor
14 RIVET_DEFAULT_ANALYSIS_CTOR(ARGUS_1990_I296522);
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_obs1,1,1,1);
27 book(_h_obs2,1,1,2);
28 book(_h_obs3,1,1,3);
29 book(_h_all1,2,1,1);
30 book(_h_all2,2,1,2);
31 book(_h_all3,2,1,3);
32 book(_h_x,3,1,1);
33 }
34
35 void findDecayProducts(Particle parent, Particles & Xi, Particles & pions,unsigned int & nstable) {
36 for(const Particle & p : parent.children()) {
37 if(p.abspid()==PID::XIMINUS) {
38 Xi.push_back(p);
39 ++nstable;
40 }
41 else if(p.abspid()==PID::PIPLUS) {
42 pions.push_back(p);
43 ++nstable;
44 }
45 else if(!p.children().empty())
46 findDecayProducts(p,Xi,pions,nstable);
47 else
48 ++nstable;
49 }
50 }
51
52 /// Perform the per-event analysis
53 void analyze(const Event& event) {
54 static const int idXip = 4232,idXi0 = 4132;
55 const ParticlePair& beams = apply<Beam>(event, "Beams").beams();
56 const double Emax = ( beams.first.p3().mod() + beams.second.p3().mod() ) / 2.0;
57 const double Pmax = sqrt(sqr(Emax)-sqr(2.468));
58 const UnstableParticles& ufs = apply<UnstableParticles>(event, "UFS");
59 for (const Particle& p : ufs.particles(Cuts::abspid==idXip or Cuts::abspid==idXi0)) {
60 double xp = p.momentum().p3().mod()/Pmax;
61 _h_x->fill(xp);
62 Particles Xi,pions;
63 unsigned int nstable(0);
64 findDecayProducts(p,Xi,pions,nstable);
65 if(nstable==2&&Xi.size()==1&&pions.size()==1) {
66 _h_obs1->fill(xp);
67 _h_all1->fill(xp);
68 }
69 else if(nstable==3&&Xi.size()==1&&pions.size()==2) {
70 _h_obs3->fill(xp);
71 _h_all3->fill(xp);
72 }
73 else if(nstable==4&&Xi.size()==1&&pions.size()==3) {
74 _h_obs2->fill(xp);
75 _h_all2->fill(xp);
76 }
77 }
78 }
79
80
81 /// Normalise histograms etc., after the run
82 void finalize() {
83 normalize(_h_x);
84 scale(_h_obs1,0.5*crossSection()/picobarn/sumOfWeights());
85 scale(_h_obs2,0.5*crossSection()/picobarn/sumOfWeights());
86 scale(_h_obs3,0.5*crossSection()/picobarn/sumOfWeights());
87 scale(_h_all1, crossSection()/picobarn/sumOfWeights());
88 scale(_h_all2, crossSection()/picobarn/sumOfWeights());
89 scale(_h_all3, crossSection()/picobarn/sumOfWeights());
90 }
91
92 /// @}
93
94
95 /// @name Histograms
96 /// @{
97 Histo1DPtr _h_obs1,_h_obs2,_h_obs3,_h_all1,_h_all2,_h_all3;
98 Histo1DPtr _h_x;
99 /// @}
100
101
102 };
103
104
105 RIVET_DECLARE_PLUGIN(ARGUS_1990_I296522);
106
107}
|