diff --git a/Alignment/AlignTrTools/src/WriteAlignmentConditions.cpp b/Alignment/AlignTrTools/src/WriteAlignmentConditions.cpp index eb32aad1cb9036de09c3e268dd256a8d789e84f9..36dc81a1ca1aabd2acca9241bac4c594716351ca 100755 --- a/Alignment/AlignTrTools/src/WriteAlignmentConditions.cpp +++ b/Alignment/AlignTrTools/src/WriteAlignmentConditions.cpp @@ -24,52 +24,16 @@ class WriteAlignmentConditions : public GaudiAlgorithm { public: - /// constructer - WriteAlignmentConditions( const std::string& name, ISvcLocator* svcloc ); - - /// destructer - ~WriteAlignmentConditions(); - - /// initialize - StatusCode initialize() override; - - // finalize + using GaudiAlgorithm::GaudiAlgorithm; StatusCode finalize() override; - - /// empty execute StatusCode execute() override { return StatusCode::SUCCESS; } private: - ToolHandle<IWriteAlignmentConditionsTool> m_tool; + ToolHandle<IWriteAlignmentConditionsTool> m_tool{this, "Tool", "WriteAlignmentConditionsTool"}; }; DECLARE_COMPONENT( WriteAlignmentConditions ) -//-------------------------------------------------------------------- -// -// WriteAlignmentConditions : Prints out the full geometry tree -// -//-------------------------------------------------------------------- - -WriteAlignmentConditions::WriteAlignmentConditions( const std::string& name, ISvcLocator* pSvcLocator ) - : GaudiAlgorithm( name, pSvcLocator ), m_tool( "WriteAlignmentConditionsTool", this ) { - // constructer - declareProperty( "Tool", m_tool ); -} - -WriteAlignmentConditions::~WriteAlignmentConditions() { - // destructer -} - -StatusCode WriteAlignmentConditions::initialize() { - StatusCode sc = GaudiAlgorithm::initialize(); - sc = m_tool.retrieve(); - return sc; -} - StatusCode WriteAlignmentConditions::finalize() { - StatusCode sc = m_tool->write(); - m_tool.release().ignore(); - if ( sc.isSuccess() ) sc = GaudiAlgorithm::finalize(); - return sc; + return m_tool->write().andThen( [&] { return GaudiAlgorithm::finalize(); } ); } diff --git a/Alignment/TAlignment/CMakeLists.txt b/Alignment/TAlignment/CMakeLists.txt index d5822c766c4db6948416d5ea2157fa726c738552..23a50d183735457c48f25d261cad1fea86fd0404 100644 --- a/Alignment/TAlignment/CMakeLists.txt +++ b/Alignment/TAlignment/CMakeLists.txt @@ -54,10 +54,28 @@ else() set(clhep_link CLHEP::CLHEP) endif() +gaudi_add_library(TAlignmentLib + src/AlElementHistos.cpp + src/AlignAlgorithm.cpp + src/AlignmentElement.cpp + src/AlParameters.cpp + src/AlResiduals.cpp + src/TrackFilterAlg.cpp + PUBLIC_HEADERS TAlignment + INCLUDE_DIRS Boost GSL AIDA Alignment/AlignmentInterfaces Tr/TrackInterfaces ${clhep_inc} + LINK_LIBRARIES Boost GSL AlignEvent AlignKernel MuonDetLib STDetLib LinkerEvent PhysEvent RecEvent TrackEvent GaudiAlgLib GaudiKernel LHCbKernel LHCbMathLib LoKiCoreLib TrackFitEvent TrackKernel ${clhep_link}) + gaudi_add_module(TAlignment - src/*.cpp - INCLUDE_DIRS Boost GSL AIDA Alignment/AlignmentInterfaces Tr/TrackInterfaces ${clhep_inc} - LINK_LIBRARIES Boost GSL AlignEvent AlignKernel MuonDetLib STDetLib LinkerEvent PhysEvent RecEvent TrackEvent GaudiAlgLib GaudiKernel LHCbKernel LHCbMathLib LoKiCoreLib TrackFitEvent TrackKernel ${clhep_link}) + src/AlignAlgorithmComponent.cpp + src/AlignChisqConstraintTool.cpp + src/AlignConstraintTool.cpp + src/AlignUpdateTool.cpp + src/CountingPrescaler.cpp + src/GetElementsToBeAligned.cpp + src/TrackResidualTool.cpp + src/VertexResidualTool.cpp + INCLUDE_DIRS Boost CLHEP GSL AIDA Alignment/AlignmentInterfaces Tr/TrackInterfaces ${clhep_inc} + LINK_LIBRARIES Boost CLHEP GSL TAlignmentLib AlignEvent AlignKernel MuonDetLib STDetLib LinkerEvent PhysEvent RecEvent TrackEvent GaudiAlgLib GaudiKernel LHCbKernel LHCbMathLib LoKiCoreLib TrackFitEvent TrackKernel ${clhep_link}) gaudi_add_dictionary(TAlignment dict/TAlignmentDict.h diff --git a/Alignment/TAlignment/src/AlDofMask.h b/Alignment/TAlignment/TAlignment/AlDofMask.h similarity index 100% rename from Alignment/TAlignment/src/AlDofMask.h rename to Alignment/TAlignment/TAlignment/AlDofMask.h diff --git a/Alignment/TAlignment/src/AlElementHistos.h b/Alignment/TAlignment/TAlignment/AlElementHistos.h similarity index 100% rename from Alignment/TAlignment/src/AlElementHistos.h rename to Alignment/TAlignment/TAlignment/AlElementHistos.h diff --git a/Alignment/TAlignment/src/AlParameters.h b/Alignment/TAlignment/TAlignment/AlParameters.h similarity index 99% rename from Alignment/TAlignment/src/AlParameters.h rename to Alignment/TAlignment/TAlignment/AlParameters.h index 384120dc7dc6d37316234522ec39915bbd098023..cd50b9a6319afb76fb4c298ce36c97dfa12e31ea 100755 --- a/Alignment/TAlignment/src/AlParameters.h +++ b/Alignment/TAlignment/TAlignment/AlParameters.h @@ -11,12 +11,12 @@ #ifndef TALIGNMENT_ALPARAMETERS_H #define TALIGNMENT_ALPARAMETERS_H -#include "AlDofMask.h" #include "AlignKernel/AlSymMat.h" #include "AlignKernel/AlVec.h" #include "GaudiKernel/SymmetricMatrixTypes.h" #include "Math/SMatrix.h" #include "Math/Transform3D.h" +#include "TAlignment/AlDofMask.h" #include "boost/array.hpp" #include <iostream> #include <string> diff --git a/Alignment/TAlignment/src/AlResiduals.h b/Alignment/TAlignment/TAlignment/AlResiduals.h similarity index 100% rename from Alignment/TAlignment/src/AlResiduals.h rename to Alignment/TAlignment/TAlignment/AlResiduals.h diff --git a/Alignment/TAlignment/src/AlignAlgorithm.h b/Alignment/TAlignment/TAlignment/AlignAlgorithm.h similarity index 100% rename from Alignment/TAlignment/src/AlignAlgorithm.h rename to Alignment/TAlignment/TAlignment/AlignAlgorithm.h diff --git a/Alignment/TAlignment/src/AlignmentElement.h b/Alignment/TAlignment/TAlignment/AlignmentElement.h similarity index 100% rename from Alignment/TAlignment/src/AlignmentElement.h rename to Alignment/TAlignment/TAlignment/AlignmentElement.h diff --git a/Alignment/TAlignment/src/IAlignChisqConstraintTool.h b/Alignment/TAlignment/TAlignment/IAlignChisqConstraintTool.h similarity index 100% rename from Alignment/TAlignment/src/IAlignChisqConstraintTool.h rename to Alignment/TAlignment/TAlignment/IAlignChisqConstraintTool.h diff --git a/Alignment/TAlignment/src/IAlignConstraintTool.h b/Alignment/TAlignment/TAlignment/IAlignConstraintTool.h similarity index 100% rename from Alignment/TAlignment/src/IAlignConstraintTool.h rename to Alignment/TAlignment/TAlignment/IAlignConstraintTool.h diff --git a/Alignment/TAlignment/src/IGetElementsToBeAligned.h b/Alignment/TAlignment/TAlignment/IGetElementsToBeAligned.h similarity index 100% rename from Alignment/TAlignment/src/IGetElementsToBeAligned.h rename to Alignment/TAlignment/TAlignment/IGetElementsToBeAligned.h diff --git a/Alignment/TAlignment/src/ITrackResidualTool.h b/Alignment/TAlignment/TAlignment/ITrackResidualTool.h similarity index 100% rename from Alignment/TAlignment/src/ITrackResidualTool.h rename to Alignment/TAlignment/TAlignment/ITrackResidualTool.h diff --git a/Alignment/TAlignment/src/IVertexResidualTool.h b/Alignment/TAlignment/TAlignment/IVertexResidualTool.h similarity index 100% rename from Alignment/TAlignment/src/IVertexResidualTool.h rename to Alignment/TAlignment/TAlignment/IVertexResidualTool.h diff --git a/Alignment/TAlignment/src/AlElementHistos.cpp b/Alignment/TAlignment/src/AlElementHistos.cpp index 54d93cce8370c8a7e262439f1ce22b071f0c3867..7b473cc27265f39553ae881e4dec61bc0dd9af11 100755 --- a/Alignment/TAlignment/src/AlElementHistos.cpp +++ b/Alignment/TAlignment/src/AlElementHistos.cpp @@ -9,10 +9,10 @@ * or submit itself to any jurisdiction. * \*****************************************************************************/ -#include "AlElementHistos.h" +#include "TAlignment/AlElementHistos.h" #include "AIDA/IHistogram1D.h" -#include "AlignmentElement.h" #include "GaudiAlg/GaudiHistoAlg.h" +#include "TAlignment/AlignmentElement.h" //#include "AIDA/IHistogram2D.h" #include "boost/lexical_cast.hpp" diff --git a/Alignment/TAlignment/src/AlParameters.cpp b/Alignment/TAlignment/src/AlParameters.cpp index 316af10b77b88f3654c802d80fdfa4d59ed3c3ef..2ac213871c1962bfff7c95dfc0d79d533f1cb6f6 100755 --- a/Alignment/TAlignment/src/AlParameters.cpp +++ b/Alignment/TAlignment/src/AlParameters.cpp @@ -8,7 +8,7 @@ * granted to it by virtue of its status as an Intergovernmental Organization * * or submit itself to any jurisdiction. * \*****************************************************************************/ -#include "AlParameters.h" +#include "TAlignment/AlParameters.h" #include <algorithm> #include <cmath> diff --git a/Alignment/TAlignment/src/AlResiduals.cpp b/Alignment/TAlignment/src/AlResiduals.cpp index 2a5f0a2f1fb428f00217387312a41264a4c558c7..93cb7f7485a70a3e2dfaf8554e6ea30e9aa8bc7a 100755 --- a/Alignment/TAlignment/src/AlResiduals.cpp +++ b/Alignment/TAlignment/src/AlResiduals.cpp @@ -8,9 +8,9 @@ * granted to it by virtue of its status as an Intergovernmental Organization * * or submit itself to any jurisdiction. * \*****************************************************************************/ -#include "AlResiduals.h" -#include "AlignmentElement.h" +#include "TAlignment/AlResiduals.h" #include "Event/FitNode.h" +#include "TAlignment/AlignmentElement.h" #include <set> #include <sstream> diff --git a/Alignment/TAlignment/src/AlignAlgorithm.cpp b/Alignment/TAlignment/src/AlignAlgorithm.cpp index 64bcf029c74372f72db69fc8fd7d297abeeb7a93..49bb5f10d741359764d5b64344760b656e338f6d 100755 --- a/Alignment/TAlignment/src/AlignAlgorithm.cpp +++ b/Alignment/TAlignment/src/AlignAlgorithm.cpp @@ -32,10 +32,10 @@ #include "TrackKernel/TrackFunctors.h" // local -#include "AlParameters.h" -#include "AlignAlgorithm.h" #include "AlignKernel/AlEquations.h" #include "Event/AlignSummaryData.h" +#include "TAlignment/AlParameters.h" +#include "TAlignment/AlignAlgorithm.h" #include "GaudiKernel/IMonitorSvc.h" #include "GaudiKernel/IUpdateable.h" @@ -61,27 +61,21 @@ namespace { using namespace LHCb; using namespace boost; -// Declaration of the Algorithm Factory -DECLARE_COMPONENT( AlignAlgorithm ) - StatusCode AlignAlgorithm::initialize() { StatusCode sc = GaudiHistoAlg::initialize(); // must be executed first if ( sc.isFailure() ) return sc; // error printed already by GaudiAlgorithm - /// Set histogram path - // if ("" == histoTopDir()) setHistoTopDir("Alignment/"); - /// Get range detector elements const Elements& elements = m_elementtool->elements(); if ( printDebug() ) { debug() << "==> Got " << elements.size() << " elements to align!" << endmsg; - for ( Elements::const_iterator i = elements.begin(); i != elements.end(); ++i ) { - const AlParameters::DofMask& ownDoFMask = ( *i )->dofMask(); - debug() << " " << ( **i ) << endmsg; + for ( auto& element : elements ) { + const AlParameters::DofMask& ownDoFMask = element->dofMask(); + debug() << " " << ( *element ) << endmsg; const std::vector<std::string> dofs = {"Tx", "Ty", "Tz", "Rx", "Ry", "Rz"}; debug() << "DOFs: "; - for ( AlParameters::DofMask::const_iterator j = ownDoFMask.begin(), jEnd = ownDoFMask.end(); j != jEnd; ++j ) { + for ( auto j = ownDoFMask.begin(), jEnd = ownDoFMask.end(); j != jEnd; ++j ) { if ( ( *j ) ) info() << dofs.at( std::distance( ownDoFMask.begin(), j ) ); } debug() << endmsg; @@ -104,16 +98,12 @@ StatusCode AlignAlgorithm::initialize() { /// @todo: this should go into a monitoring tool if ( m_fillHistos ) { info() << "booking histograms assuming " << m_nIterations << " iterations " << endmsg; - for ( Elements::const_iterator i = elements.begin(); i != elements.end(); ++i ) - m_elemHistos.emplace_back( *this, **i, m_nIterations ); + for ( auto& element : elements ) m_elemHistos.emplace_back( *this, *element, m_nIterations ); m_resetHistos = false; } info() << "Use correlations = " << m_correlation << endmsg; - // for( auto i : m_xmlWriterNames ) - // m_xmlWriters.push_back( tool<IWriteAlignmentConditionsTool>(i,this) ) ; - if ( m_Online ) { m_HistoUpdater.setMonitorService( monitorSvc() ); } return StatusCode::SUCCESS; } @@ -140,16 +130,6 @@ StatusCode AlignAlgorithm::start() { if ( m_Online ) { // reset contents of ASD reset(); - // std::vector<std::string> workers = toolSvc()->getInstances("IAlignWork"); - // if (workers.size()>0) - // { - // sc = toolSvc()->retrieveTool("IAlignWork",workers[0],m_IAlwork,0,false); - // if (!sc) - // { - // Error("Cannot retrieve IAlignWork tool"); - // return sc; - // } - // } } return StatusCode::SUCCESS; } diff --git a/Alignment/TAlignment/src/AlignAlgorithmComponent.cpp b/Alignment/TAlignment/src/AlignAlgorithmComponent.cpp new file mode 100644 index 0000000000000000000000000000000000000000..8b3ee48700a78a72a2a78e6308694074da7f1e4b --- /dev/null +++ b/Alignment/TAlignment/src/AlignAlgorithmComponent.cpp @@ -0,0 +1,19 @@ +/*****************************************************************************\ +* (c) Copyright 2000-2018 CERN for the benefit of the LHCb Collaboration * +* * +* This software is distributed under the terms of the GNU General Public * +* Licence version 3 (GPL Version 3), copied verbatim in the file "COPYING". * +* * +* In applying this licence, CERN does not waive the privileges and immunities * +* granted to it by virtue of its status as an Intergovernmental Organization * +* or submit itself to any jurisdiction. * +\*****************************************************************************/ + +#include "TAlignment/AlignAlgorithm.h" + +// Declaration of the Algorithm Factory in order to put it in a module +// and have it imported from python +// The implementation of the class leaves in AlignAlgorithm.cpp which +// is compiled into the main library so that the algorithm can be used +// with cppyy +DECLARE_COMPONENT( AlignAlgorithm ) diff --git a/Alignment/TAlignment/src/AlignChisqConstraintTool.cpp b/Alignment/TAlignment/src/AlignChisqConstraintTool.cpp index d8eb66394ac4c9c29b206cfeb0070c719657bb3e..5eb76e4c587ec6f3380c19795d4bd49f668d3350 100644 --- a/Alignment/TAlignment/src/AlignChisqConstraintTool.cpp +++ b/Alignment/TAlignment/src/AlignChisqConstraintTool.cpp @@ -14,8 +14,8 @@ #include "GaudiAlg/GaudiTool.h" #include "GaudiKernel/SystemOfUnits.h" -#include "IAlignChisqConstraintTool.h" -#include "IGetElementsToBeAligned.h" +#include "TAlignment/IAlignChisqConstraintTool.h" +#include "TAlignment/IGetElementsToBeAligned.h" #include <boost/assign/list_of.hpp> #include <boost/lexical_cast.hpp> diff --git a/Alignment/TAlignment/src/AlignConstraintTool.cpp b/Alignment/TAlignment/src/AlignConstraintTool.cpp index 6deedb76aa479d84c3574e31f2a848bdbc96a94c..dfb725e81c7329313d67871ad6da60244b2c363c 100755 --- a/Alignment/TAlignment/src/AlignConstraintTool.cpp +++ b/Alignment/TAlignment/src/AlignConstraintTool.cpp @@ -11,9 +11,9 @@ #include "AlignKernel/AlMat.h" #include "GaudiAlg/GaudiTool.h" #include "GaudiKernel/SystemOfUnits.h" -#include "IAlignConstraintTool.h" -#include "IGetElementsToBeAligned.h" #include "LHCbMath/LHCbMath.h" +#include "TAlignment/IAlignConstraintTool.h" +#include "TAlignment/IGetElementsToBeAligned.h" #include "boost/assign/list_of.hpp" #include "boost/tokenizer.hpp" diff --git a/Alignment/TAlignment/src/AlignUpdateTool.cpp b/Alignment/TAlignment/src/AlignUpdateTool.cpp index dbc09ae9ee11dd0f57a5fc6103db8127975280ce..d7f23fba5124c60eafe58405a183aca40d578f85 100755 --- a/Alignment/TAlignment/src/AlignUpdateTool.cpp +++ b/Alignment/TAlignment/src/AlignUpdateTool.cpp @@ -17,9 +17,9 @@ #include "AlignmentInterfaces/IAlignSolvTool.h" #include "AlignmentInterfaces/IAlignUpdateTool.h" -#include "IAlignChisqConstraintTool.h" -#include "IAlignConstraintTool.h" -#include "IGetElementsToBeAligned.h" +#include "TAlignment/IAlignChisqConstraintTool.h" +#include "TAlignment/IAlignConstraintTool.h" +#include "TAlignment/IGetElementsToBeAligned.h" #include "TH1D.h" #include "TMath.h" diff --git a/Alignment/TAlignment/src/AlignmentElement.cpp b/Alignment/TAlignment/src/AlignmentElement.cpp index 63d482a1f20e1a61759ef0025fdfbc93e20c998e..3e071242d60216f2399834695c253c0fb9c5290e 100755 --- a/Alignment/TAlignment/src/AlignmentElement.cpp +++ b/Alignment/TAlignment/src/AlignmentElement.cpp @@ -31,7 +31,7 @@ #include "boost/regex.hpp" // local -#include "AlignmentElement.h" +#include "TAlignment/AlignmentElement.h" namespace { void addToElementsInTree( const LHCb::Alignment::DetectorElement& element, diff --git a/Alignment/TAlignment/src/GetElementsToBeAligned.h b/Alignment/TAlignment/src/GetElementsToBeAligned.h index d04170655e5e8a16d578416eed9e954ab2f6cd36..9f442f17d6b1db6816ed72b1976bb521f52ce568 100755 --- a/Alignment/TAlignment/src/GetElementsToBeAligned.h +++ b/Alignment/TAlignment/src/GetElementsToBeAligned.h @@ -22,7 +22,7 @@ #include "GaudiAlg/GaudiTool.h" // Interface -#include "IGetElementsToBeAligned.h" +#include "TAlignment/IGetElementsToBeAligned.h" // from BOOST #include "boost/regex.hpp" diff --git a/Alignment/TAlignment/src/TrackFilterAlg.h b/Alignment/TAlignment/src/TrackFilterAlg.h index 83cbb0cb7e4662f641397541b4cc62f016acd13c..0a1703c65b922847a3dd560dd858e8949b5db06e 100755 --- a/Alignment/TAlignment/src/TrackFilterAlg.h +++ b/Alignment/TAlignment/src/TrackFilterAlg.h @@ -29,8 +29,8 @@ // from AlignmentInterfaces #include "TrackInterfaces/ITrackSelector.h" -#include "AlignmentElement.h" -#include "IGetElementsToBeAligned.h" +#include "TAlignment/AlignmentElement.h" +#include "TAlignment/IGetElementsToBeAligned.h" // from TrackInterfaces #include "TrackInterfaces/ITrackExtrapolator.h" diff --git a/Alignment/TAlignment/src/TrackResidualTool.cpp b/Alignment/TAlignment/src/TrackResidualTool.cpp index 81939639498f7193ed2c73dadc4b054a6576d2d9..7121e6d91f9c0a12dc0dca6401b6dd2aaa598c92 100755 --- a/Alignment/TAlignment/src/TrackResidualTool.cpp +++ b/Alignment/TAlignment/src/TrackResidualTool.cpp @@ -13,9 +13,9 @@ #include "GaudiAlg/GaudiTool.h" #include "GaudiKernel/IIncidentListener.h" #include "GaudiKernel/ToolHandle.h" -#include "IGetElementsToBeAligned.h" -#include "ITrackResidualTool.h" #include "LHCbMath/MatrixInversion.h" +#include "TAlignment/IGetElementsToBeAligned.h" +#include "TAlignment/ITrackResidualTool.h" #include "TrackInterfaces/ITrackKalmanFilter.h" #include "TrackKernel/TrackFunctors.h" #include <map> diff --git a/Alignment/TAlignment/src/VertexResidualTool.cpp b/Alignment/TAlignment/src/VertexResidualTool.cpp index 1e62237b525398852bfbb83cf7d7fe4e8b2e0824..cc8d91e05ffbabc456df19df7bfc40bc2c0a95c7 100755 --- a/Alignment/TAlignment/src/VertexResidualTool.cpp +++ b/Alignment/TAlignment/src/VertexResidualTool.cpp @@ -12,13 +12,12 @@ #include "GaudiAlg/GaudiTool.h" #include "GaudiKernel/ServiceHandle.h" #include "GaudiKernel/ToolHandle.h" -#include "IVertexResidualTool.h" #include "Kernel/IParticlePropertySvc.h" #include "Kernel/ParticleProperty.h" #include "LHCbMath/MatrixInversion.h" +#include "TAlignment/ITrackResidualTool.h" +#include "TAlignment/IVertexResidualTool.h" #include "TrackInterfaces/ITrackExtrapolator.h" -// TAlignment -#include "ITrackResidualTool.h" struct ITrackExtrapolator; namespace LHCb { @@ -76,8 +75,8 @@ namespace Al { #include "Event/Particle.h" #include "Event/TwoProngVertex.h" #include "GaudiKernel/ParticleProperty.h" -#include "ITrackResidualTool.h" #include "Kernel/ParticleID.h" +#include "TAlignment/ITrackResidualTool.h" #include "TrackInterfaces/ITrackExtrapolator.h" #include "TrackKernel/TrackStateVertex.h" #include <boost/assign/list_of.hpp>