rivet is hosted by Hepforge, IPPP Durham

Rivet analyses reference

CLEOII_1997_I439745

Measurement of the cross section for $\gamma\gamma\to\Lambda^0\bar{\Lambda^0}$
Experiment: CLEOII (CESR)
Inspire ID: 439745
Status: VALIDATED NOHEPDATA
Authors:
  • Peter Richardson
References:
  • Phys.Rev.D 56 (1997) R2485-R2489
Beams: e+ e-, 22 22
Beam energies: (5.3, 5.3); (1.2, 1.2); (1.2, 1.2); (1.3, 1.3); (1.4, 1.4); (1.6, 1.6) GeV
Run details:
  • Either gamma gamma collisions or e+e- with the gamma gamma process

Measurement of the cross section for $\gamma\gamma\to\Lambda^0\bar{\Lambda^0}$. The cross section for $\gamma\gamma$ collisions as a funmction of the $gamma\gamma$ centre-of-mass energy is provided, together with the total cross section for the production in $e^+e^-$ via the $\gamma\gamma$ process.

Source code: CLEOII_1997_I439745.cc
  1// -*- C++ -*-
  2#include "Rivet/Analysis.hh"
  3#include "Rivet/Projections/FinalState.hh"
  4#include "Rivet/Projections/UnstableParticles.hh"
  5#include "Rivet/Projections/Beam.hh"
  6
  7namespace Rivet {
  8
  9
 10  /// @brief gamma gamma -> Lambda0 Lambdabar0
 11  class CLEOII_1997_I439745 : public Analysis {
 12  public:
 13
 14    /// Constructor
 15    RIVET_DEFAULT_ANALYSIS_CTOR(CLEOII_1997_I439745);
 16
 17
 18    /// @name Analysis methods
 19    /// @{
 20
 21    /// Book histograms and initialise projections before the run
 22    void init() {
 23      // Initialise and register projections
 24      declare(Beam(), "Beams");
 25      declare(FinalState(),"FS");
 26      declare(UnstableParticles(Cuts::abspid==3122 || Cuts::abspid==3212), "UFS");
 27      // gamma gamma collision
 28      if (beamIDs().first==22 && beamIDs().second==22)  book(_c,"TMP/nLam",refData(1,1,1));
 29      else {
 30        for (unsigned int ix=0; ix<2; ++ix) {
 31          book(_h_sigma[ix], 2+ix, 1, 1);
 32        }
 33      }
 34    }
 35
 36    void findChildren(const Particle& p,map<long,int> & nRes, int &ncount) {
 37      for (const Particle &child : p.children()) {
 38        if (child.children().empty()) {
 39          --nRes[child.pid()];
 40          --ncount;
 41        } else {
 42          findChildren(child,nRes,ncount);
 43        }
 44      }
 45    }
 46
 47    bool findScattered(const Particle& beam, double& q2) {
 48      bool found = false;
 49      Particle scat = beam;
 50      while (!scat.children().empty()) {
 51        found = false;
 52        for (const Particle & p : scat.children()) {
 53          if (p.pid()==scat.pid()) {
 54            scat=p;
 55            found=true;
 56            break;
 57          }
 58        }
 59        if (!found) break;
 60      }
 61      if (!found) return false;
 62      q2 = -(beam.mom() - scat.mom()).mass2();
 63      return true;
 64    }
 65
 66
 67    /// Perform the per-event analysis
 68    void analyze(const Event& event) {
 69      // e+e- collision
 70      int ne=0;
 71      const Beam& beams = apply<Beam>(event, "Beams");
 72      if (_h_sigma[0]) {
 73        // find scattered leptons and calc Q2
 74        double q12 = -1, q22 = -1;
 75        if (!findScattered(beams.beams().first,  q12)) vetoEvent;
 76        if (!findScattered(beams.beams().second, q22)) vetoEvent;
 77        ne=1;
 78      }
 79      // check the final state
 80      const FinalState& fs = apply<FinalState>(event, "FS");
 81      map<long,int> nCount;
 82      int ntotal(0);
 83      for (const Particle& p : fs.particles()) {
 84        nCount[p.pid()] += 1;
 85        ++ntotal;
 86      }
 87      const FinalState& ufs = apply<FinalState>(event, "UFS");
 88      Particle Lambda,Lambar;
 89      // loop over baryon
 90      bool matched = false;
 91      for (const Particle& p : ufs.particles()) {
 92        if (p.children().empty() || p.pid()<0) continue;
 93        map<long,int> nRes = nCount;
 94        int ncount = ntotal;
 95        findChildren(p,nRes,ncount);
 96        // and antibaryons
 97        for (const Particle& p2 : ufs.particles()) {
 98          if (p2.children().empty() || p2.pid()>0) continue;
 99          map<long,int> nRes2 = nRes;
100          int ncount2 = ncount;
101          findChildren(p2,nRes2,ncount2);
102          if(ncount2!=2*ne) continue;
103          matched=2;
104          for (const auto& val : nRes2) {
105            if(abs(val.first)==11) {
106            if(val.second!=ne) {
107              matched = false;
108              break;
109              }
110            }
111            else if (val.second!=0) {
112              matched = false;
113              break;
114            }
115          }
116          if (matched) {
117            Lambda=p;
118            Lambar=p2;
119            break;
120          }
121        }
122      }
123      if (!matched) vetoEvent;
124      if (_h_sigma[0]) {
125        FourMomentum pCMS = Lambda.mom()+Lambar.mom();
126        Vector3 axis = pCMS.p3().unit();
127        LorentzTransform boost = LorentzTransform::mkFrameTransformFromBeta(pCMS.betaVec());
128        if (abs(boost.transform(Lambda.mom()).p3().unit().dot(axis))>0.6) vetoEvent;
129        if (abs(boost.transform(Lambar.mom()).p3().unit().dot(axis))>0.6) vetoEvent;
130        _h_sigma[0]->fill("10.6"s);
131        if (Lambda.pid()==3122 && Lambar.pid()==-3122) _h_sigma[1]->fill("10.6"s);
132      }
133      else {
134        Vector3 axis = beams.beams().first.mom().p3().unit();
135        if (abs(axis.dot(Lambda.mom().p3().unit()))>0.6) vetoEvent;
136        if (abs(axis.dot(Lambar.mom().p3().unit()))>0.6) vetoEvent;
137        if (Lambda.pid()==3122 && Lambar.pid()==-3122) _c->fill(sqrtS()/GeV);
138      }
139    }
140
141
142    /// Normalise histograms etc., after the run
143    void finalize() {
144      if (_h_sigma[0]) {
145        scale(_h_sigma, crossSection()/picobarn/sumOfWeights());
146      }
147      else {
148        scale(_c, crossSection()/nanobarn/sumOfWeights());
149        Estimate1DPtr tmp;
150        book(tmp,1,1,1);
151        barchart(_c,tmp);
152      }
153    }
154
155    /// @}
156
157
158    /// @name Histograms
159    /// @{
160    Histo1DPtr _c;
161    BinnedHistoPtr<string> _h_sigma[2];
162    /// @}
163
164
165  };
166
167
168  RIVET_DECLARE_PLUGIN(CLEOII_1997_I439745);
169
170}