Belle II Software  release-05-02-19
VXDDedxTrack.h
1 /**************************************************************************
2  * BASF2 (Belle Analysis Framework 2) *
3  * Copyright(C) 2012 - Belle II Collaboration *
4  * *
5  * Author: The Belle II Collaboration *
6  * Contributors: Jake Bennett, Christian Pulvermacher
7  * *
8  * This software is provided "as is" without any warranty. *
9  **************************************************************************/
10 
11 #ifndef VXDDEDXTRACK_H
12 #define VXDDEDXTRACK_H
13 
14 #include <reconstruction/dataobjects/DedxConstants.h>
15 
16 #include <framework/datastore/RelationsObject.h>
17 #include <framework/gearbox/Const.h>
18 
19 #include <vector>
20 
21 namespace Belle2 {
30  class VXDDedxTrack : public RelationsObject {
31  friend class VXDDedxPIDModule;
32 
33  public:
34 
36  VXDDedxTrack() :
39  m_p(0), m_cosTheta(0), m_charge(0),
40  m_length(0.0), m_nHits(0), m_nHitsUsed(0),
41  m_pdg(0), m_motherPDG(0), m_pTrue(0)
42  {
43  // set default values for all detectors
44  for (int i = 0; i <= Dedx::c_SVD; i++)
46 
47  // set default values for all particles
48  for (unsigned int i = 0; i < Const::ChargedStable::c_SetSize; i++)
49  m_vxdLogl[i] = 0.0;
50  }
51 
53  void addHit(int sid, int layer, int adcCount, double dx, double dEdx)
54  {
55  m_sensorID.push_back(sid);
56  m_layer.push_back(layer);
57  m_adcCount.push_back(adcCount);
58  m_dx.push_back(dx);
59  m_dEdx.push_back(dEdx);
60  }
61 
63  void addDedx(int layer, double distance, double dedxValue)
64  {
65  dedxLayer.push_back(layer);
66  dist.push_back(distance);
67  dedx.push_back(dedxValue);
68  m_length += distance;
69  }
70 
72  double getDedx(Const::EDetector detector) const
73  {
74  int iDet = (int)(detector - Const::PXD);
75  if (iDet < 0 or iDet > Dedx::c_SVD)
76  return 0.0;
77  return m_dedxAvgTruncated[iDet];
78  }
79 
81  double getDedxError(Const::EDetector detector) const
82  {
83  int iDet = (int)(detector - Const::PXD);
84  if (iDet < 0 or iDet > Dedx::c_SVD)
85  return 0.0;
86  return m_dedxAvgTruncatedErr[iDet];
87  }
88 
90  double getDedxMean(Const::EDetector detector) const
91  {
92  int iDet = (int)(detector - Const::PXD);
93  if (iDet < 0 or iDet > Dedx::c_SVD)
94  return 0.0;
95  return m_dedxAvg[iDet];
96  }
97 
99  double eventID() const { return m_eventID; }
101  double trackID() const { return m_trackID; }
103  double getCosTheta() const { return m_cosTheta; }
104 
106  double getMomentum() const { return m_p; }
108  double getTrueMomentum() const { return m_pTrue; }
110  double size() const { return m_nHits; }
112  double getNHitsUsed() const { return m_nHitsUsed; }
113 
115  int getLayer(int i) const { return m_layer[i]; }
117  int getSensorID(int i) const { return m_sensorID[i]; }
119  int getADCCount(int i) const { return m_adcCount[i]; }
121  double getDx(int i) const { return m_dx[i]; }
123  double getDedx(int i) const { return m_dEdx[i]; }
124 
126  std::vector< double > getDedxList() const { return m_dEdx; }
127 
128  private:
129 
130  int m_eventID;
131  int m_trackID;
133  // hit level information
134  std::vector<int> m_layer;
135  std::vector<int> m_sensorID;
136  std::vector<int> m_adcCount;
137  std::vector<double> m_dx;
138  std::vector<double> m_dEdx;
140  // one entry per layer (just don't mix with the hit arrays)
141  std::vector<double> dedx;
142  std::vector<double> dist;
143  std::vector<double> dedxLayer;
145  // track level information
146  double m_p;
147  double m_cosTheta;
148  short m_charge;
150  double m_length;
151  short m_nHits;
152  short m_nHitsUsed;
154  double m_pdg;
155  double m_motherPDG;
156  double m_pTrue;
158  double m_dedxAvg[2];
159  double m_dedxAvgTruncated[2];
165  };
167 }
168 #endif
Belle2::VXDDedxTrack::m_cosTheta
double m_cosTheta
cos(theta) for the track
Definition: VXDDedxTrack.h:155
Belle2::VXDDedxTrack::getDedxList
std::vector< double > getDedxList() const
Return the vector of dE/dx values for this track.
Definition: VXDDedxTrack.h:134
Belle2::Const::ChargedStable::c_SetSize
static const unsigned int c_SetSize
Number of elements (for use in array bounds etc.)
Definition: Const.h:491
Belle2::VXDDedxTrack::getADCCount
int getADCCount(int i) const
Return the adcCount for this hit.
Definition: VXDDedxTrack.h:127
Belle2::VXDDedxTrack::getDx
double getDx(int i) const
Return the path length through the layer.
Definition: VXDDedxTrack.h:129
Belle2::VXDDedxTrack::getTrueMomentum
double getTrueMomentum() const
Return the MC truemomentum valid at the IP.
Definition: VXDDedxTrack.h:116
Belle2::VXDDedxTrack::ClassDef
ClassDef(VXDDedxTrack, 2)
Debug output for VXDDedxPID module.
Belle2::VXDDedxTrack::m_dEdx
std::vector< double > m_dEdx
charge per path length
Definition: VXDDedxTrack.h:146
Belle2::VXDDedxTrack::m_dx
std::vector< double > m_dx
path length in layer
Definition: VXDDedxTrack.h:145
Belle2::VXDDedxTrack::m_motherPDG
double m_motherPDG
MC PID of mother particle.
Definition: VXDDedxTrack.h:163
Belle2::VXDDedxTrack::m_p
double m_p
momentum at the IP
Definition: VXDDedxTrack.h:154
Belle2::VXDDedxTrack
Debug output for VXDDedxPID module.
Definition: VXDDedxTrack.h:38
Belle2::VXDDedxTrack::m_length
double m_length
total distance travelled by the track
Definition: VXDDedxTrack.h:158
Belle2::VXDDedxTrack::m_nHitsUsed
short m_nHitsUsed
number of hits on this track used in the truncated mean
Definition: VXDDedxTrack.h:160
Belle2::VXDDedxTrack::getSensorID
int getSensorID(int i) const
Return the sensor ID for this hit.
Definition: VXDDedxTrack.h:125
Belle2::VXDDedxTrack::getDedx
double getDedx(Const::EDetector detector) const
Get dE/dx truncated mean for given detector.
Definition: VXDDedxTrack.h:80
Belle2::VXDDedxTrack::m_vxdLogl
double m_vxdLogl[Const::ChargedStable::c_SetSize]
log likelihood for each particle, not including momentum prior
Definition: VXDDedxTrack.h:170
Belle2::Const::EDetector
EDetector
Enum for identifying the detector components (detector and subdetector).
Definition: Const.h:44
Belle2::VXDDedxTrack::m_dedxAvgTruncated
double m_dedxAvgTruncated[2]
dE/dx truncated mean per track
Definition: VXDDedxTrack.h:167
Belle2::VXDDedxTrack::m_dedxAvgTruncatedErr
double m_dedxAvgTruncatedErr[2]
standard deviation of m_dedxAvgTruncated
Definition: VXDDedxTrack.h:168
Belle2::VXDDedxTrack::dedxLayer
std::vector< double > dedxLayer
layer id corresponding to dE/dx measurement
Definition: VXDDedxTrack.h:151
Belle2::VXDDedxTrack::addHit
void addHit(int sid, int layer, int adcCount, double dx, double dEdx)
Add a single hit to the object.
Definition: VXDDedxTrack.h:61
Belle2::VXDDedxTrack::getMomentum
double getMomentum() const
Return the momentum valid at the IP.
Definition: VXDDedxTrack.h:114
Belle2::VXDDedxTrack::m_adcCount
std::vector< int > m_adcCount
adcCount per hit
Definition: VXDDedxTrack.h:144
Belle2::VXDDedxTrack::dist
std::vector< double > dist
distance flown through active medium in current segment
Definition: VXDDedxTrack.h:150
Belle2::VXDDedxTrack::m_nHits
short m_nHits
number of hits on this track
Definition: VXDDedxTrack.h:159
Belle2::VXDDedxTrack::VXDDedxTrack
VXDDedxTrack()
Default constructor.
Definition: VXDDedxTrack.h:44
Belle2::VXDDedxTrack::eventID
double eventID() const
Return the event ID.
Definition: VXDDedxTrack.h:107
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19
Belle2::VXDDedxTrack::size
double size() const
Return the number of hits for this track.
Definition: VXDDedxTrack.h:118
Belle2::VXDDedxTrack::getCosTheta
double getCosTheta() const
Return cos(theta) for this yrack.
Definition: VXDDedxTrack.h:111
Belle2::VXDDedxTrack::m_trackID
int m_trackID
ID number of the Track.
Definition: VXDDedxTrack.h:139
Belle2::VXDDedxTrack::getNHitsUsed
double getNHitsUsed() const
Return the number of hits used to determine the truncated mean.
Definition: VXDDedxTrack.h:120
Belle2::VXDDedxTrack::m_charge
short m_charge
particle charge from tracking (+1 or -1)
Definition: VXDDedxTrack.h:156
Belle2::VXDDedxTrack::addDedx
void addDedx(int layer, double distance, double dedxValue)
add dE/dx information for a VXD layer
Definition: VXDDedxTrack.h:71
Belle2::VXDDedxTrack::getLayer
int getLayer(int i) const
Return the (global) layer number.
Definition: VXDDedxTrack.h:123
Belle2::VXDDedxTrack::trackID
double trackID() const
Return the track ID.
Definition: VXDDedxTrack.h:109
Belle2::VXDDedxTrack::m_pdg
double m_pdg
MC PID.
Definition: VXDDedxTrack.h:162
Belle2::VXDDedxTrack::m_dedxAvg
double m_dedxAvg[2]
dE/dx mean value per track
Definition: VXDDedxTrack.h:166
Belle2::RelationsObject
RelationsInterface< TObject > RelationsObject
Provides interface for getting/adding relations to objects in StoreArrays.
Definition: RelationsObject.h:443
Belle2::VXDDedxTrack::m_pTrue
double m_pTrue
MC true momentum.
Definition: VXDDedxTrack.h:164
Belle2::VXDDedxTrack::getDedxMean
double getDedxMean(Const::EDetector detector) const
Get the dE/dx mean for given detector.
Definition: VXDDedxTrack.h:98
Belle2::VXDDedxTrack::m_sensorID
std::vector< int > m_sensorID
unique sensor ID
Definition: VXDDedxTrack.h:143
Belle2::VXDDedxTrack::dedx
std::vector< double > dedx
extracted dE/dx (arb.
Definition: VXDDedxTrack.h:149
Belle2::VXDDedxTrack::m_eventID
int m_eventID
event in which this Track was found
Definition: VXDDedxTrack.h:138
Belle2::VXDDedxTrack::m_layer
std::vector< int > m_layer
VXD layer number.
Definition: VXDDedxTrack.h:142
Belle2::VXDDedxTrack::getDedxError
double getDedxError(Const::EDetector detector) const
Get the error on the dE/dx truncated mean for given detector.
Definition: VXDDedxTrack.h:89