Rivet analyses referenceBABAR_2015_I1337783CP asymmetry in ˉB→Xs+Dγ decaysExperiment: BABAR (PEP-II) Inspire ID: 1337783 Status: VALIDATED NOHEPDATA Authors:
Beam energies: ANY Run details:
Measurement of the CP asymmetry in ˉB→Xs+Dγ 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 if(_edges.empty()) _edges=_p->xEdges();
31 // Loop over upslion(4s)
32 for (const Particle& p : apply<UnstableParticles>(event, "UFS").particles()) {
33 // boost to rest frame
34 LorentzTransform cms_boost;
35 if (p.p3().mod() > 1*MeV)
36 cms_boost = LorentzTransform::mkFrameTransformFromBeta(p.momentum().betaVec());
37 // loop over children
38 for(const Particle & p2 : p.children(Cuts::abspid==521 || Cuts::abspid==511)) {
39 Particle bottom=p2;
40 while(bottom.children()[0].abspid()==p2.abspid())
41 bottom = bottom.children()[0];
42 bool charm = false;
43 FourMomentum pgamma(0.,0.,0.,0.);
44 unsigned int ngamma = 0;
45 for (const Particle & child : bottom.children()) {
46 if (child.pid() == PID::PHOTON) {
47 ngamma += 1;
48 pgamma += child.momentum();
49 }
50 else if(PID::isCharmHadron(child.pid()))
51 charm = true;
52 }
53 if (ngamma != 1 || charm ) continue;
54 double Egamma = cms_boost.transform(pgamma).E();
55 double wgt = bottom.pid()<0 ? 100. : -100.;
56 double Emin=1.7;
57 for(unsigned int ix=0;ix<_edges.size();++ix) {
58 if(Egamma>Emin) _p->fill(_edges[ix],wgt);
59 Emin+=0.1;
60 }
61 }
62 }
63 }
64
65
66 /// Normalise histograms etc., after the run
67 void finalize() {
68 }
69
70 /// @}
71
72
73 /// @name Histograms
74 /// @{
75 BinnedProfilePtr<string> _p;
76 vector<string> _edges;
77 /// @}
78
79
80 };
81
82
83 RIVET_DECLARE_PLUGIN(BABAR_2015_I1337783);
84
85}
|