Rivet analyses referenceBABAR_2015_I1337783CP asymmetry in $\bar{B}\to X_{s+D}\gamma$ decaysExperiment: BABAR (PEP-II) Inspire ID: 1337783 Status: VALIDATED NOHEPDATA Authors:
Beam energies: ANY Run details:
Measurement of the CP asymmetry in $\bar{B}\to X_{s+D}\gamma$ decays Source code: BABAR_2015_I1337783.cc 1// -*- C++ -*-
2#include "Rivet/Analysis.hh"
3#include "Rivet/Projections/UnstableParticles.hh"
4
5namespace Rivet {
6
7
8 /// @brief CP asymetry in B -> X gamma
9 class BABAR_2015_I1337783 : public Analysis {
10 public:
11
12 /// Constructor
13 RIVET_DEFAULT_ANALYSIS_CTOR(BABAR_2015_I1337783);
14
15
16 /// @name Analysis methods
17 /// @{
18
19 /// Book histograms and initialise projections before the run
20 void init() {
21 // Initialise and register projections
22 declare(UnstableParticles(Cuts::pid==300553), "UFS");
23 // profile hist for asymmetry
24 book(_p,1,1,1);
25 }
26
27
28 /// Perform the per-event analysis
29 void analyze(const Event& event) {
30 // Loop over upslion(4s)
31 for (const Particle& p : apply<UnstableParticles>(event, "UFS").particles()) {
32 // boost to rest frame
33 LorentzTransform cms_boost;
34 if (p.p3().mod() > 1*MeV)
35 cms_boost = LorentzTransform::mkFrameTransformFromBeta(p.momentum().betaVec());
36 // loop over children
37 for(const Particle & p2 : p.children(Cuts::abspid==521 || Cuts::abspid==511)) {
38 Particle bottom=p2;
39 while(bottom.children()[0].abspid()==p2.abspid())
40 bottom = bottom.children()[0];
41 bool charm = false;
42 FourMomentum pgamma(0.,0.,0.,0.);
43 unsigned int ngamma = 0;
44 for (const Particle & child : bottom.children()) {
45 if (child.pid() == PID::PHOTON) {
46 ngamma += 1;
47 pgamma += child.momentum();
48 }
49 else if(PID::isCharmHadron(child.pid()))
50 charm = true;
51 }
52 if (ngamma != 1 || charm ) continue;
53 double Egamma = cms_boost.transform(pgamma).E();
54 double wgt = bottom.pid()<0 ? 100. : -100.;
55 for(const auto & bin : _p->bins())
56 if(bin.xMin()<Egamma) _p->fill(bin.xMid(),wgt);
57 }
58 }
59 }
60
61
62 /// Normalise histograms etc., after the run
63 void finalize() {
64 }
65
66 /// @}
67
68
69 /// @name Histograms
70 /// @{
71 Profile1DPtr _p;
72 /// @}
73
74
75 };
76
77
78 RIVET_DECLARE_PLUGIN(BABAR_2015_I1337783);
79
80}
|