9 #include <analysis/ContinuumSuppression/ContinuumSuppression.h>
10 #include <analysis/ContinuumSuppression/Thrust.h>
11 #include <analysis/ContinuumSuppression/KsfwMoments.h>
12 #include <analysis/ContinuumSuppression/FoxWolfram.h>
13 #include <analysis/ContinuumSuppression/CleoCones.h>
14 #include <analysis/dataobjects/RestOfEvent.h>
15 #include <analysis/dataobjects/ContinuumSuppression.h>
16 #include <analysis/utility/PCmsLabTransform.h>
17 #include <framework/datastore/StoreArray.h>
18 #include <framework/logging/Logger.h>
37 particle->addRelationTo(qqVars);
39 std::vector<TVector3> p3_cms_sigB, p3_cms_roe, p3_cms_all;
41 std::vector<std::pair<TVector3, int>> p3_cms_q_sigA;
42 std::vector<std::pair<TVector3, int>> p3_cms_q_sigB;
43 std::vector<std::pair<TVector3, int>> p3_cms_q_roe;
45 std::vector<float> ksfwFS0;
46 std::vector<float> ksfwFS1;
48 std::vector<float> cleoConesAll;
49 std::vector<float> cleoConesROE;
67 TLorentzVector p_cms_missA(0, 0, 0, 2 * BeamEnergy);
68 TLorentzVector p_cms_missB(0, 0, 0, 2 * BeamEnergy);
72 std::vector<Belle2::Particle*> signalDaughters = particle->getDaughters();
77 p3_cms_q_sigA.emplace_back(p_cms.Vect(), sigFS0->getCharge());
80 et[0] += p_cms.Perp();
84 std::vector<const Belle2::Particle*> signalFSParticles = particle->getFinalStateDaughters();
89 p3_cms_all.push_back(p_cms.Vect());
90 p3_cms_sigB.push_back(p_cms.Vect());
92 p3_cms_q_sigB.emplace_back(p_cms.Vect(), sigFS1->getCharge());
95 et[1] += p_cms.Perp();
107 for (
const Particle* chargedROEParticle : chargedROEParticles) {
112 TLorentzVector p_cms = T.
rotateLabToCms() * chargedROEParticle->get4Vector();
113 p3_cms_all.push_back(p_cms.Vect());
114 p3_cms_roe.push_back(p_cms.Vect());
115 p3_cms_q_roe.emplace_back(p_cms.Vect(), chargedROEParticle->getCharge());
116 p_cms_missA -= p_cms;
117 p_cms_missB -= p_cms;
118 et[0] += p_cms.Perp();
119 et[1] += p_cms.Perp();
125 std::vector<const Particle*> roePhotons = roe->
getPhotons(maskName);
127 for (
const Particle* photon : roePhotons) {
132 p3_cms_all.push_back(p_cms.Vect());
133 p3_cms_roe.push_back(p_cms.Vect());
135 p3_cms_q_roe.emplace_back(p_cms.Vect(), photon->getCharge());
137 p_cms_missA -= p_cms;
138 p_cms_missB -= p_cms;
139 et[0] += p_cms.Perp();
140 et[1] += p_cms.Perp();
147 thrustBm = thrustB.Mag();
148 thrustOm = thrustO.Mag();
149 cosTBTO = fabs(cos(thrustB.Angle(thrustO)));
150 cosTBz = fabs(thrustB.CosTheta());
153 CleoCones cc(p3_cms_all, p3_cms_roe, thrustB,
true,
true);
154 cleoConesAll = cc.cleo_cone_with_all();
155 cleoConesROE = cc.cleo_cone_with_roe();
163 TLorentzVector p_cms_B = T.
rotateLabToCms() * particle->get4Vector();
164 double Hso0_max(2 * (2 * BeamEnergy - p_cms_B.E()));
174 ksfwFS0.push_back(KsfwM.
mm2());
175 ksfwFS0.push_back(KsfwM.
et());
176 ksfwFS0.push_back(KsfwM.
Hso(0, 0));
177 ksfwFS0.push_back(KsfwM.
Hso(0, 1));
178 ksfwFS0.push_back(KsfwM.
Hso(0, 2));
179 ksfwFS0.push_back(KsfwM.
Hso(0, 3));
180 ksfwFS0.push_back(KsfwM.
Hso(0, 4));
181 ksfwFS0.push_back(KsfwM.
Hso(1, 0));
182 ksfwFS0.push_back(KsfwM.
Hso(1, 2));
183 ksfwFS0.push_back(KsfwM.
Hso(1, 4));
184 ksfwFS0.push_back(KsfwM.
Hso(2, 0));
185 ksfwFS0.push_back(KsfwM.
Hso(2, 2));
186 ksfwFS0.push_back(KsfwM.
Hso(2, 4));
187 ksfwFS0.push_back(KsfwM.
Hoo(0));
188 ksfwFS0.push_back(KsfwM.
Hoo(1));
189 ksfwFS0.push_back(KsfwM.
Hoo(2));
190 ksfwFS0.push_back(KsfwM.
Hoo(3));
191 ksfwFS0.push_back(KsfwM.
Hoo(4));
194 ksfwFS1.push_back(KsfwM.
mm2());
195 ksfwFS1.push_back(KsfwM.
et());
196 ksfwFS1.push_back(KsfwM.
Hso(0, 0));
197 ksfwFS1.push_back(KsfwM.
Hso(0, 1));
198 ksfwFS1.push_back(KsfwM.
Hso(0, 2));
199 ksfwFS1.push_back(KsfwM.
Hso(0, 3));
200 ksfwFS1.push_back(KsfwM.
Hso(0, 4));
201 ksfwFS1.push_back(KsfwM.
Hso(1, 0));
202 ksfwFS1.push_back(KsfwM.
Hso(1, 2));
203 ksfwFS1.push_back(KsfwM.
Hso(1, 4));
204 ksfwFS1.push_back(KsfwM.
Hso(2, 0));
205 ksfwFS1.push_back(KsfwM.
Hso(2, 2));
206 ksfwFS1.push_back(KsfwM.
Hso(2, 4));
207 ksfwFS1.push_back(KsfwM.
Hoo(0));
208 ksfwFS1.push_back(KsfwM.
Hoo(1));
209 ksfwFS1.push_back(KsfwM.
Hoo(2));
210 ksfwFS1.push_back(KsfwM.
Hoo(3));
211 ksfwFS1.push_back(KsfwM.
Hoo(4));
Class to calculate the Cleo clone variables.
This is a class for collecting variables used in continuum suppression.
void addR2(float R2)
Add reduced Fox-Wolfram moment R2.
void addThrustBm(float thrustBm)
Add magnitude of B thrust axis.
void addCleoConesALL(const std::vector< float > &cleoConesALL)
Add vector of Cleo Cones constructed of all final state particles.
void addCleoConesROE(const std::vector< float > &cleoConesROE)
Add vector of Cleo Cones constructed of only ROE particles.
void addCosTBz(float cosTBz)
Add cosine of the angle between the thrust axis of the B and the z-axis.
void addThrustO(const TVector3 &thrustO)
Add ROE thrust axis.
void addThrustOm(float thrustOm)
Add magnitude of ROE thrust axis.
void addKsfwFS0(const std::vector< float > &ksfwFS0)
Add vector of KSFW moments, Et, and mm2 for final state = 0.
void addKsfwFS1(const std::vector< float > &ksfwFS1)
Add vector of KSFW moments, Et, and mm2 for final state = 1.
void addCosTBTO(float cosTBTO)
Add cosine of the angle between the thrust axis of the B and the thrust axis of the ROE.
void addThrustB(const TVector3 &thrustB)
Add ROE thrust axis.
@ c_nPhotons
CR is split into n photons (N1)
Class to calculate the Fox-Wolfram moments up to order 8.
double getR(int i) const
Returns the i-th moment normalized to the 0th-order moment.
void calculateBasicMoments()
Method to perform the calculation of the moments up to order 4, which are the most relevant ones.
Moment-calculation of the k_sfw improved Super-Fox-Wolfram moments.
int usefinal(int uf)
Sets the flag that specifiies we are using the finalstate for signal.
double et(int uf=-1) const
Returns calculated transverse energy.
double Hso(int i, int j, int uf=-1) const
Returns calculated KSFW Moments.
double mm2(int uf=-1) const
Returns calculated missing mass squared.
double Hoo(int i, int uf=-1) const
Returns calculated KSFW Moments.
Class to store reconstructed particles.
This is a general purpose class for collecting reconstructed MDST data objects that are not used in r...
std::vector< const Particle * > getChargedParticles(const std::string &maskName="", unsigned int pdg=0, bool unpackComposite=true) const
Get charged particles from ROE mask.
std::vector< const Particle * > getPhotons(const std::string &maskName="", bool unpackComposite=true) const
Get photons from ROE mask.
Accessor to arrays stored in the data store.
T * appendNew()
Construct a new T object at the end of the array.
static TVector3 calculateThrust(const std::vector< TVector3 > &momenta)
calculates the thrust axis
void addContinuumSuppression(const Particle *particle, const std::string &maskName)
Adds continuum suppression variables.
Abstract base class for different kinds of events.