Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file added offline/packages/tpc/.TpcClusterizer.cc.swo
Binary file not shown.
Binary file not shown.
Binary file not shown.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

remove the binary, it must not go into our repo

Binary file not shown.
3 changes: 3 additions & 0 deletions offline/packages/trackbase/Makefile.am
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,7 @@ pkginclude_HEADERS = \
TrkrClusterv3.h \
TrkrClusterv4.h \
TrkrClusterv5.h \
TrkrClusterv6.h \
TrkrDefs.h \
TrkrHit.h \
TrkrHitSet.h \
Expand Down Expand Up @@ -187,6 +188,7 @@ ROOTDICTS = \
TrkrClusterv3_Dict.cc \
TrkrClusterv4_Dict.cc \
TrkrClusterv5_Dict.cc \
TrkrClusterv6_Dict.cc \
TrkrHitSetContMvtxHelper_Dict.cc \
TrkrHitSetContMvtxHelperv1_Dict.cc \
TrkrHitSetContainer_Dict.cc \
Expand Down Expand Up @@ -273,6 +275,7 @@ libtrack_io_la_SOURCES = \
TrkrClusterv3.cc \
TrkrClusterv4.cc \
TrkrClusterv5.cc \
TrkrClusterv6.cc \
TrkrDefs.cc \
TrkrHitSet.cc \
TrkrHitSetContMvtxHelper.cc \
Expand Down
71 changes: 48 additions & 23 deletions offline/packages/trackbase/TrkrCluster.h
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@

#include <climits>
#include <cmath>
#include <cstdint>
#include <iostream>
#include <memory>

Expand Down Expand Up @@ -51,57 +52,81 @@ class TrkrCluster : public PHObject
//
// cluster position
//
virtual float getLocalX() const { return NAN; }
virtual float getLocalX() const { return std::numeric_limits<float>::quiet_NaN(); }
virtual void setLocalX(float) {}
virtual float getLocalY() const { return NAN; }
virtual float getLocalY() const { return std::numeric_limits<float>::quiet_NaN(); }
virtual void setLocalY(float) {}

//
// cluster info
//
virtual void setAdc(unsigned int) {}
virtual unsigned int getAdc() const { return UINT_MAX; }
virtual void setAdc(uint16_t) {}
virtual uint16_t getAdc() const { return UINT16_MAX; }
virtual void setMaxAdc(uint16_t) {}
virtual unsigned int getMaxAdc() const { return UINT_MAX; }
virtual char getOverlap() const { return std::numeric_limits<char>::max(); }
virtual void setOverlap(char) {}
virtual char getEdge() const { return std::numeric_limits<char>::max(); }
virtual void setEdge(char) {}
virtual uint16_t getMaxAdc() const { return UINT16_MAX; }
Comment on lines +63 to +66

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major | 🏗️ Heavy lift

Narrowing total cluster ADC to 16 bits will truncate valid TPC charge.

TpcClusterizer::calc_cluster_parameter accumulates adc_sum across the full cluster and passes it into setAdc(...). That total can exceed 65535 even when each individual sample fits in 16 bits, so this API change silently wraps real charge and can even collide with the UINT16_MAX invalid sentinel used by TrkrClusterv6::isValid(). The total cluster ADC needs to stay wider than the per-bin ADC fields.

virtual uint8_t getOverlap() const { return std::numeric_limits<uint8_t>::max(); }
virtual void setOverlap(uint8_t) {}
virtual uint8_t getEdge() const { return std::numeric_limits<uint8_t>::max(); }
virtual void setEdge(uint8_t) {}
virtual void setTime(const float) {}
virtual float getTime() const { return NAN; }
virtual char getSize() const { return std::numeric_limits<char>::max(); }
virtual float getTime() const { return std::numeric_limits<float>::quiet_NaN(); }
virtual uint8_t getSize() const { return std::numeric_limits<uint8_t>::max(); }

Comment thread
coderabbitai[bot] marked this conversation as resolved.
//
// convenience interface
//
virtual float getPhiSize() const { return NAN; }
virtual float getZSize() const { return NAN; }
virtual float getPhiError() const { return NAN; }
virtual float getRPhiError() const { return NAN; }
virtual float getZError() const { return NAN; }
virtual float getPhiSize() const { return std::numeric_limits<float>::quiet_NaN(); }
virtual float getZSize() const { return std::numeric_limits<float>::quiet_NaN(); }
virtual float getPhiError() const { return std::numeric_limits<float>::quiet_NaN(); }
virtual float getRPhiError() const { return std::numeric_limits<float>::quiet_NaN(); }
virtual float getZError() const { return std::numeric_limits<float>::quiet_NaN(); }
virtual uint16_t getCenAdc() const { return UINT16_MAX; }
virtual float getPadCen() const { return std::numeric_limits<float>::quiet_NaN(); }
virtual float getTBinCen() const { return std::numeric_limits<float>::quiet_NaN(); }
virtual float getPadMax() const { return std::numeric_limits<float>::quiet_NaN(); }
virtual float getTBinMax() const { return std::numeric_limits<float>::quiet_NaN(); }
virtual uint8_t getSLEdge() const { return std::numeric_limits<uint8_t>::max(); }
virtual uint8_t getSREdge() const { return std::numeric_limits<uint8_t>::max(); }
virtual uint8_t getTLEdge() const { return std::numeric_limits<uint8_t>::max(); }
virtual uint8_t getTREdge() const { return std::numeric_limits<uint8_t>::max(); }
virtual uint8_t getDLEdge() const { return std::numeric_limits<uint8_t>::max(); }
virtual uint8_t getDREdge() const { return std::numeric_limits<uint8_t>::max(); }
virtual uint8_t getHLEdge() const { return std::numeric_limits<uint8_t>::max(); }
virtual uint8_t getHREdge() const { return std::numeric_limits<uint8_t>::max(); }
virtual int getSLMix() const { return std::numeric_limits<int>::max(); }
virtual int getSRMix() const { return std::numeric_limits<int>::max(); }
virtual int getTLMix() const { return std::numeric_limits<int>::max(); }
virtual int getTRMix() const { return std::numeric_limits<int>::max(); }
virtual int getPhiBinLo() const { return std::numeric_limits<int>::max(); }
virtual int getPhiBinHi() const { return std::numeric_limits<int>::max(); }
virtual int getTBinLo() const { return std::numeric_limits<int>::max(); }
virtual int getTBinHi() const { return std::numeric_limits<int>::max(); }
virtual float getPadPhase() const { return std::numeric_limits<float>::quiet_NaN(); }
virtual float getTBinPhase() const { return std::numeric_limits<float>::quiet_NaN(); }
virtual float getRSize() const { return std::numeric_limits<float>::quiet_NaN(); }

/// Acts functions, for Acts modules use only
virtual void setActsLocalError(unsigned int /*i*/, unsigned int /*j*/, float /*value*/) {}
virtual float getActsLocalError(unsigned int /*i*/, unsigned int /*j*/) const { return NAN; }
virtual float getActsLocalError(unsigned int /*i*/, unsigned int /*j*/) const { return std::numeric_limits<float>::quiet_NaN(); }
virtual TrkrDefs::subsurfkey getSubSurfKey() const { return TrkrDefs::SUBSURFKEYMAX; }
virtual void setSubSurfKey(TrkrDefs::subsurfkey /*id*/) {}

// Global coordinate functions are deprecated, use local
// coordinate functions only
virtual float getX() const { return NAN; }
virtual float getX() const { return std::numeric_limits<float>::quiet_NaN(); }
virtual void setX(float) {}
virtual float getY() const { return NAN; }
virtual float getY() const { return std::numeric_limits<float>::quiet_NaN(); }
virtual void setY(float) {}
virtual float getZ() const { return NAN; }
virtual float getZ() const { return std::numeric_limits<float>::quiet_NaN(); }
virtual void setZ(float) {}
virtual float getPosition(int /*coor*/) const { return NAN; }
virtual float getPosition(int /*coor*/) const { return std::numeric_limits<float>::quiet_NaN(); }
virtual void setPosition(int /*coor*/, float /*xi*/) {}
virtual void setGlobal() {}
virtual void setLocal() {}
virtual bool isGlobal() const { return true; }
virtual float getError(unsigned int /*i*/, unsigned int /*j*/) const { return NAN; }
virtual float getError(unsigned int /*i*/, unsigned int /*j*/) const { return std::numeric_limits<float>::quiet_NaN(); }
virtual void setError(unsigned int /*i*/, unsigned int /*j*/, float /*value*/) {}
virtual float getSize(unsigned int /*i*/, unsigned int /*j*/) const { return NAN; }
virtual float getSize(unsigned int /*i*/, unsigned int /*j*/) const { return std::numeric_limits<float>::quiet_NaN(); }
virtual void setSize(unsigned int /*i*/, unsigned int /*j*/, float /*value*/) {}

protected:
Expand Down
6 changes: 4 additions & 2 deletions offline/packages/trackbase/TrkrClusterv1.cc
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,9 @@
*/
#include "TrkrClusterv1.h"

#include <climits>
#include <cmath>
#include <cstdint>
#include <utility> // for swap

namespace
Expand Down Expand Up @@ -47,7 +49,7 @@ namespace
TrkrClusterv1::TrkrClusterv1()
: m_cluskey(TrkrDefs::CLUSKEYMAX)
, m_isGlobal(true)
, m_adc(0xFFFFFFFF)
, m_adc(std::numeric_limits<uint16_t>::max())
{
for (float& m_po : m_pos)
{
Expand Down Expand Up @@ -130,7 +132,7 @@ int TrkrClusterv1::isValid() const
return 0;
}
}
if (m_adc == 0xFFFFFFFF)
if (m_adc == std::numeric_limits<uint16_t>::max())
{
return 0;
}
Expand Down
8 changes: 4 additions & 4 deletions offline/packages/trackbase/TrkrClusterv1.h
Original file line number Diff line number Diff line change
Expand Up @@ -62,8 +62,8 @@ class TrkrClusterv1 : public TrkrCluster
//
// cluster info
//
unsigned int getAdc() const override { return m_adc; }
void setAdc(unsigned int adc) override { m_adc = adc; }
uint16_t getAdc() const override { return m_adc; }
void setAdc(uint16_t adc) override { m_adc = adc; }
float getSize(unsigned int i, unsigned int j) const override; //< get cluster dimension covar
void setSize(unsigned int i, unsigned int j, float value) override; //< set cluster dimension covar

Expand All @@ -84,11 +84,11 @@ class TrkrClusterv1 : public TrkrCluster
TrkrDefs::cluskey m_cluskey; //< unique identifier within container
float m_pos[3]{}; //< mean position x,y,z
bool m_isGlobal; //< flag for coord sys (true = global)
unsigned int m_adc; //< cluster sum adc (D. McGlinchey - Do we need this?)
uint16_t m_adc; //< cluster sum adc (D. McGlinchey - Do we need this?)
float m_size[6]{}; //< size covariance matrix (packed storage) (+/- cm^2)
float m_err[6]{}; //< covariance matrix: rad, arc and z

ClassDefOverride(TrkrClusterv1, 1)
ClassDefOverride(TrkrClusterv1, 2)
};

#endif // TRACKBASE_TRKRCLUSTERV1_H
6 changes: 4 additions & 2 deletions offline/packages/trackbase/TrkrClusterv2.cc
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,9 @@
*/
#include "TrkrClusterv2.h"

#include <climits>
#include <cmath>
#include <cstdint>
#include <utility> // for swap

namespace
Expand Down Expand Up @@ -48,7 +50,7 @@ TrkrClusterv2::TrkrClusterv2()
: m_cluskey(TrkrDefs::CLUSKEYMAX)
, m_subsurfkey(TrkrDefs::SUBSURFKEYMAX)
, m_isGlobal(true)
, m_adc(0xFFFFFFFF)
, m_adc(std::numeric_limits<uint16_t>::max())
{
for (float& m_po : m_pos)
{
Expand Down Expand Up @@ -136,7 +138,7 @@ int TrkrClusterv2::isValid() const
return 0;
}
}
if (m_adc == 0xFFFFFFFF)
if (m_adc == std::numeric_limits<uint16_t>::max())
{
return 0;
}
Expand Down
8 changes: 4 additions & 4 deletions offline/packages/trackbase/TrkrClusterv2.h
Original file line number Diff line number Diff line change
Expand Up @@ -72,8 +72,8 @@ class TrkrClusterv2 : public TrkrCluster
//
// cluster info
//
unsigned int getAdc() const override { return m_adc; }
void setAdc(unsigned int adc) override { m_adc = adc; }
uint16_t getAdc() const override { return m_adc; }
void setAdc(uint16_t adc) override { m_adc = adc; }
float getSize(unsigned int i, unsigned int j) const override; //< get cluster dimension covar
void setSize(unsigned int i, unsigned int j, float value) override; //< set cluster dimension covar

Expand All @@ -95,14 +95,14 @@ class TrkrClusterv2 : public TrkrCluster
TrkrDefs::subsurfkey m_subsurfkey; //< unique identifier for hitsetkey-surface maps
float m_pos[3]{}; //< mean position x,y,z
bool m_isGlobal; //< flag for coord sys (true = global)
unsigned int m_adc; //< cluster sum adc (D. McGlinchey - Do we need this?)
uint16_t m_adc; //< cluster sum adc (D. McGlinchey - Do we need this?)
float m_size[6]{}; //< size covariance matrix (packed storage) (+/- cm^2)
float m_err[6]{}; //< covariance matrix: rad, arc and z

float m_local[2]{}; //< 2D local position [cm]
float m_actsLocalErr[2][2]{}; //< 2D local error for Acts [cm]

ClassDefOverride(TrkrClusterv2, 2)
ClassDefOverride(TrkrClusterv2, 3)
};

#endif // TRACKBASE_TRKRCLUSTERV2_H
6 changes: 4 additions & 2 deletions offline/packages/trackbase/TrkrClusterv3.cc
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,9 @@
*/
#include "TrkrClusterv3.h"

#include <climits>
#include <cmath>
#include <cstdint>
#include <utility> // for swap

namespace
Expand All @@ -22,7 +24,7 @@ namespace
TrkrClusterv3::TrkrClusterv3()
: m_cluskey(TrkrDefs::CLUSKEYMAX)
, m_subsurfkey(TrkrDefs::SUBSURFKEYMAX)
, m_adc(0xFFFFFFFF)
, m_adc(std::numeric_limits<uint16_t>::max())
{
for (int i = 0; i < 2; i++)
{
Expand Down Expand Up @@ -77,7 +79,7 @@ int TrkrClusterv3::isValid() const
}
}
}
if (m_adc == 0xFFFFFFFF)
if (m_adc == std::numeric_limits<uint16_t>::max())
{
return 0;
}
Expand Down
8 changes: 4 additions & 4 deletions offline/packages/trackbase/TrkrClusterv3.h
Original file line number Diff line number Diff line change
Expand Up @@ -62,8 +62,8 @@ class TrkrClusterv3 : public TrkrCluster
//
// cluster info
//
unsigned int getAdc() const override { return m_adc; }
void setAdc(unsigned int adc) override { m_adc = adc; }
uint16_t getAdc() const override { return m_adc; }
void setAdc(uint16_t adc) override { m_adc = adc; }
Comment thread
coderabbitai[bot] marked this conversation as resolved.

//
// convenience interface
Expand Down Expand Up @@ -137,12 +137,12 @@ class TrkrClusterv3 : public TrkrCluster
TrkrDefs::cluskey m_cluskey; //< unique identifier within container
TrkrDefs::subsurfkey m_subsurfkey; //< unique identifier for hitsetkey-surface maps

unsigned int m_adc; //< cluster sum adc (D. McGlinchey - Do we need this?)
uint16_t m_adc; //< cluster sum adc (D. McGlinchey - Do we need this?)

float m_local[2]{}; //< 2D local position [cm]
float m_actsLocalErr[2][2]{}; //< 2D local error for Acts [cm]

ClassDefOverride(TrkrClusterv3, 2)
ClassDefOverride(TrkrClusterv3, 3)
};

#endif // TRACKBASE_TRKRCLUSTERV3_H
40 changes: 20 additions & 20 deletions offline/packages/trackbase/TrkrClusterv4.h
Original file line number Diff line number Diff line change
Expand Up @@ -63,13 +63,13 @@ class TrkrClusterv4 : public TrkrCluster
//
// cluster info
//
unsigned int getAdc() const override
uint16_t getAdc() const override
{
uint8_t tmp = m_adc;
uint16_t tmp = m_adc;
return tmp;
}

void setAdc(unsigned int adc) override
void setAdc(uint16_t adc) override
{
uint16_t tmp = 0;
if (adc > 0xff)
Expand All @@ -79,10 +79,10 @@ class TrkrClusterv4 : public TrkrCluster
m_adc |= tmp;
}

unsigned int getMaxAdc() const override
uint16_t getMaxAdc() const override
{
uint8_t tmp = (m_adc >> 8);
unsigned int out = 0;
uint16_t tmp = (m_adc >> 8);
uint16_t out = 0;
out |= tmp;
return out;
}
Expand Down Expand Up @@ -155,20 +155,20 @@ class TrkrClusterv4 : public TrkrCluster
std::cout << "Deprecated seterr trkrcluster function!" << std::endl;
}

char getSize() const override { return m_phisize * m_zsize; }
// void setSize(char size) { m_size = size; }
uint8_t getSize() const override { return m_phisize * m_zsize; }
// void setSize(uint8_t size) { m_size = size; }

float getPhiSize() const override { return (float) m_phisize; }
void setPhiSize(char phisize) { m_phisize = phisize; }
void setPhiSize(uint8_t phisize) { m_phisize = phisize; }

float getZSize() const override { return (float) m_zsize; }
void setZSize(char zsize) { m_zsize = zsize; }
void setZSize(uint8_t zsize) { m_zsize = zsize; }

char getOverlap() const override { return m_overlap; }
void setOverlap(char overlap) override { m_overlap = overlap; }
uint8_t getOverlap() const override { return m_overlap; }
void setOverlap(uint8_t overlap) override { m_overlap = overlap; }

char getEdge() const override { return m_edge; }
void setEdge(char edge) override { m_edge = edge; }
uint8_t getEdge() const override { return m_edge; }
void setEdge(uint8_t edge) override { m_edge = edge; }

// float getPhiSize() const override
//{ std::cout << "Deprecated size function"<< std::endl; return NAN;}
Expand All @@ -180,13 +180,13 @@ class TrkrClusterv4 : public TrkrCluster
protected:
float m_local[2]{}; //< 2D local position [cm] 2 * 32 64bit - cumul 1*64
TrkrDefs::subsurfkey m_subsurfkey; //< unique identifier for hitsetkey-surface maps 16 bit
unsigned short int m_adc; //< cluster sum adc 16
char m_phisize; // 8bit
char m_zsize; // 8bit
char m_overlap; // 8bit
char m_edge; // 8bit - cumul 2*64
uint16_t m_adc; //< cluster sum adc 16
uint8_t m_phisize; // 8bit
uint8_t m_zsize; // 8bit
uint8_t m_overlap; // 8bit
uint8_t m_edge; // 8bit - cumul 2*64

ClassDefOverride(TrkrClusterv4, 2)
ClassDefOverride(TrkrClusterv4, 3)
};

#endif // TRACKBASE_TRKRCLUSTERV4_H
Loading