Skip to content
Snippets Groups Projects

Update to allow Alignment to run multithreaded

Merged Wouter Hulsbergen requested to merge updatemutexlockingstrategy_June2022 into master
8 files
+ 65
40
Compare changes
  • Side-by-side
  • Inline
Files
8
@@ -30,11 +30,10 @@ namespace LHCb::Alignment {
size_t m_numHits{0};
public:
OffDiagonalData() : m_matrix(), m_numTracks( 0 ), m_numHits( 0 ) {}
Gaudi::Matrix6x6& matrix() { return m_matrix; }
const Gaudi::Matrix6x6& matrix() const { return m_matrix; }
void addTrack() { ++m_numTracks; }
size_t numTracks() const { return m_numTracks; }
auto& numTracks() { return m_numTracks; }
size_t numHits() const { return m_numHits; }
template <class T>
void add( const T& m ) {
@@ -67,6 +66,7 @@ namespace LHCb::Alignment {
m_alpha = alpha;
m_alphaIsSet = true;
}
auto alphaIsSet() const { return m_alphaIsSet; }
void setAlignFrame( const Gaudi::Vector6& alignframe ) { m_alignframe = alignframe; }
const Gaudi::Vector6& alignFrame() const { return m_alignframe; }
@@ -88,7 +88,7 @@ namespace LHCb::Alignment {
return m_numHits > 0 ? Gaudi::XYZPoint( m_sumX / m_numHits, m_sumY / m_numHits, m_sumZ / m_numHits )
: Gaudi::XYZPoint();
}
void addTrack() { ++m_numTracks; }
auto& numTracks() { return m_numTracks; }
Gaudi::Vector6 m_alignframe; // parameters of the alignment frame
Gaudi::Vector6 m_alpha; // the set of parameters at which the derivatives are computed
@@ -157,13 +157,16 @@ namespace LHCb::Alignment {
size_t totalTrackNumDofs() const { return totalNumDofs() - m_totalVertexNumDofs; }
size_t numExternalHits() const { return m_numExternalHits; }
std::tuple<size_t, long> writeToFile( const char* filename ) const;
std::tuple<StatusCode, std::string> readFromFile( const char* filename );
void writeToBuffer( std::ofstream& buffer ) const;
void readFromBuffer( std::ifstream& buffer );
std::map<std::string, std::vector<std::string>> add( const Equations& );
std::tuple<size_t, long> writeToFile( const char* filename ) const;
std::tuple<StatusCode, std::string> readFromFile( const char* filename );
void writeToBuffer( std::ofstream& buffer ) const;
void readFromBuffer( std::ifstream& buffer );
std::ostream& fillStream( std::ostream& os ) const;
/// Add the data from another Equations object. If correctDeltaAlpha is true, it will check that the other
/// object was computed around the same parameter set, and if not, correct for the difference.
std::map<std::string, std::vector<std::string>> add( const Equations&, bool correctDeltaAlpha = false );
std::ostream& fillStream( std::ostream& os, int verbosity = 0 ) const;
const ElementContainer& elements() const { return m_elements; }
Loading