Belle II Software  release-05-01-25
Bundle.cc
1 /**************************************************************************
2  * BASF2 (Belle Analysis Framework 2) *
3  * Copyright(C) 2018 - Belle II Collaboration *
4  * *
5  * Author: The Belle II Collaboration *
6  * Contributors: Marcel Hohmann *
7  * *
8  * This software is provided "as is" without any warranty. *
9  **************************************************************************/
10 #include <analysis/modules/CurlTagger/Bundle.h>
11 
12 #include <analysis/variables/VertexVariables.h>
13 
14 using namespace Belle2;
15 using namespace CurlTagger;
16 
17 Bundle::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 
31 Bundle::~Bundle() = default;
32 
34 {
35  m_Particles.push_back(particle);
36 }
37 
38 Particle* Bundle::getParticle(unsigned int i)
39 {
40  return m_Particles[i];
41 }
42 
43 unsigned 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 shouldnt 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 
Belle2::CurlTagger::Bundle::getParticle
Particle * getParticle(unsigned int i)
gets Particle from Bundle
Definition: Bundle.cc:38
Belle2::CurlTagger::Bundle::addParticle
void addParticle(Particle *particle)
adds Particle to Bundle
Definition: Bundle.cc:33
Belle2::CurlTagger::Bundle::Bundle
Bundle(bool isTruthBundle)
Constructor.
Definition: Bundle.cc:17
Belle2::CurlTagger::Bundle::scaledImpactParam
float scaledImpactParam(Particle *particle)
scaled impact parameter for selecting best track
Definition: Bundle.cc:48
Belle2::CurlTagger::Bundle::m_SizeLabel
std::string m_SizeLabel
label used to tag particles with Bundle size
Definition: Bundle.h:77
Belle2::CurlTagger::Bundle::m_Gamma
double m_Gamma
dr scale factor
Definition: Bundle.h:65
Belle2::CurlTagger::Bundle::compareParticles
bool compareParticles(Particle *iPart, Particle *jPart)
used to rank particles by scaledImpactParam - currently unused
Definition: Bundle.cc:53
Belle2::CurlTagger::Bundle::tagSizeInfo
void tagSizeInfo()
sets extraInfo with size of Bundle for particles in Bundle
Definition: Bundle.cc:80
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19
Belle2::CurlTagger::Bundle::size
unsigned int size()
gets Bundle size
Definition: Bundle.cc:43
Belle2::Particle
Class to store reconstructed particles.
Definition: Particle.h:77
Belle2::CurlTagger::Bundle::m_CurlLabel
std::string m_CurlLabel
label used to tag particles with curl info
Definition: Bundle.h:74
Belle2::CurlTagger::Bundle::m_IsTruthBundle
bool m_IsTruthBundle
flag for if the bundle is based on truth info, changes which labels are used
Definition: Bundle.h:71
Belle2::CurlTagger::Bundle::tagCurlInfo
void tagCurlInfo()
sets curl extra info for particles in Bundle
Definition: Bundle.cc:58
Belle2::CurlTagger::Bundle::m_Particles
std::vector< Particle * > m_Particles
particles in bundle
Definition: Bundle.h:80
Belle2::CurlTagger::Bundle::~Bundle
~Bundle()
Destructor.