Belle II Software light-2406-ragdoll
Bundle.cc
1/**************************************************************************
2 * basf2 (Belle II Analysis Software Framework) *
3 * Author: The Belle II Collaboration *
4 * *
5 * See git log for contributors and copyright holders. *
6 * This file is licensed under LGPL-3.0, see LICENSE.md. *
7 **************************************************************************/
8#include <analysis/modules/CurlTagger/Bundle.h>
9
10#include <analysis/variables/VertexVariables.h>
11
12#include <TMath.h>
13
14using namespace Belle2;
15using namespace CurlTagger;
16
17Bundle::Bundle(bool isTruthBundle)
18{
19 m_IsTruthBundle = isTruthBundle;
20 m_Gamma = 5; //From BN1079 - TODO check this gives best selection (what defines best?)
21
22 if (m_IsTruthBundle) {
23 m_CurlLabel = "isTruthCurl";
24 m_SizeLabel = "truthBundleSize";
25 } else {
26 m_CurlLabel = "isCurl";
27 m_SizeLabel = "bundleSize";
28 }
29}
30
31Bundle::~Bundle() = default;
32
34{
35 m_Particles.push_back(particle);
36}
37
39{
40 return m_Particles[i];
41}
42
43unsigned int Bundle::size()
44{
45 return m_Particles.size();
46}
47
49{
50 return TMath::Power(m_Gamma * Variable::particleDRho(particle), 2) + TMath::Power(Variable::particleDZ(particle), 2);
51}
52
54{
55 return scaledImpactParam(iPart) < scaledImpactParam(jPart);
56}
57
59{
60 //somewhat slow but should only be comparing 2-3 particles so shouldn't be a problem.
61 //std::sort (m_Particles.begin(), m_Particles.end(), compareParticles);
62 unsigned int bundleSize = size();
63 float lowestVal = 1e10;
64 unsigned int posLowestVal = 0;
65 for (unsigned int i = 0; i < bundleSize; i++) {
66 if (scaledImpactParam(m_Particles[i]) < lowestVal) {
67 lowestVal = scaledImpactParam(m_Particles[i]);
68 posLowestVal = i;
69 }
70 }
71
72 for (unsigned int i = 0; i < bundleSize; i++) {
73 Particle* particle = m_Particles[i];
74 //std::cout << trackDist(particle) << std::endl;
75 if (i == posLowestVal) {continue;}
76 particle ->setExtraInfo(m_CurlLabel, 1);
77 }
78}
79
81{
82 unsigned int bundleSize = size();
83 for (Particle* particle : m_Particles) {
84 particle -> setExtraInfo(m_SizeLabel, bundleSize);
85 }
86}
87
Bundle(bool isTruthBundle)
Constructor.
Definition: Bundle.cc:17
float scaledImpactParam(Particle *particle)
scaled impact parameter for selecting best track
Definition: Bundle.cc:48
void tagSizeInfo()
sets extraInfo with size of Bundle for particles in Bundle
Definition: Bundle.cc:80
std::string m_CurlLabel
label used to tag particles with curl info
Definition: Bundle.h:64
unsigned int size()
gets Bundle size
Definition: Bundle.cc:43
bool m_IsTruthBundle
flag for if the bundle is based on truth info, changes which labels are used
Definition: Bundle.h:61
bool compareParticles(Particle *iPart, Particle *jPart)
used to rank particles by scaledImpactParam - currently unused
Definition: Bundle.cc:53
Particle * getParticle(unsigned int i)
gets Particle from Bundle
Definition: Bundle.cc:38
std::vector< Particle * > m_Particles
particles in bundle
Definition: Bundle.h:70
std::string m_SizeLabel
label used to tag particles with Bundle size
Definition: Bundle.h:67
void addParticle(Particle *particle)
adds Particle to Bundle
Definition: Bundle.cc:33
double m_Gamma
dr scale factor
Definition: Bundle.h:55
void tagCurlInfo()
sets curl extra info for particles in Bundle
Definition: Bundle.cc:58
Class to store reconstructed particles.
Definition: Particle.h:75
void setExtraInfo(const std::string &name, double value)
Sets the user-defined data of given name to the given value.
Definition: Particle.cc:1317
Abstract base class for different kinds of events.
Definition: ClusterUtils.h:24