Skip to content
Snippets Groups Projects
Commit 96af9c60 authored by Rosen Matev's avatar Rosen Matev :sunny:
Browse files

Merge branch 'mgiza-int-region-tests' into 'master'

Adding InteractionRegion information to PV reco algorithms

See merge request !3552
parents 6cc4141f d825e7ca
No related branches found
No related tags found
2 merge requests!3788Draft: Update SciFi cluster monitoring,!3552Adding InteractionRegion information to PV reco algorithms
Pipeline #6240890 passed
......@@ -27,7 +27,8 @@
#include "GaudiUtils/HistoStats.h"
#include "Kernel/STLExtensions.h"
#include "LHCbAlgs/Consumer.h"
#include "VPDet/DeVP.h"
#include "LHCbDet/InteractionRegion.h"
#include "fmt/format.h"
#include <string>
#include <tuple>
......@@ -220,10 +221,10 @@ struct fmt::formatter<recoAs> : fmt::formatter<std::underlying_type_t<recoAs>> {
};
class PrimaryVertexChecker
: public LHCb::Algorithm::Consumer<void( LHCb::Tracks const&, Vertices const&, LHCb::MCVertices const&,
LHCb::MCParticles const&, LHCb::MCHeader const&, LHCb::MCProperty const&,
DeVP const& ),
LHCb::DetDesc::usesBaseAndConditions<GaudiTupleAlg, DeVP>> {
: public LHCb::Algorithm::Consumer<
void( LHCb::Tracks const&, Vertices const&, LHCb::MCVertices const&, LHCb::MCParticles const&,
LHCb::MCHeader const&, LHCb::MCProperty const&, LHCb::Conditions::InteractionRegion const& ),
LHCb::DetDesc::usesBaseAndConditions<GaudiTupleAlg, LHCb::Conditions::InteractionRegion>> {
public:
/// Standard constructor
PrimaryVertexChecker( std::string const& name, ISvcLocator* pSvcLocator )
......@@ -235,13 +236,13 @@ public:
KeyValue{"MCParticleInput", LHCb::MCParticleLocation::Default},
KeyValue{"MCHeaderLocation", LHCb::MCHeaderLocation::Default},
KeyValue{"MCPropertyInput", LHCb::MCPropertyLocation::TrackInfo},
KeyValue{"DeVP", LHCb::Det::VP::det_path}}} {}
KeyValue{"InteractionRegionCache", "AlgorithmSpecific-" + name + "-InteractionRegion"}}} {}
StatusCode initialize() override; ///< Algorithm initialization
void operator()( LHCb::Tracks const& tracks, Vertices const& vertices, LHCb::MCVertices const& mcvtx,
LHCb::MCParticles const& mcps, LHCb::MCHeader const& mcheader, LHCb::MCProperty const& flags,
DeVP const& ) const override; ///< Algorithm execution
StatusCode finalize() override; ///< Algorithm finalization
LHCb::Conditions::InteractionRegion const& ) const override; ///< Algorithm execution
StatusCode finalize() override; ///< Algorithm finalization
using VertexType = Vertices::value_type;
......@@ -268,7 +269,12 @@ private:
// Declaration of the Algorithm Factory
DECLARE_COMPONENT_WITH_ID( PrimaryVertexChecker, "PrimaryVertexChecker" )
StatusCode PrimaryVertexChecker::initialize() { return Consumer::initialize(); }
StatusCode PrimaryVertexChecker::initialize() {
return Consumer::initialize().andThen( [&]() {
LHCb::Conditions::InteractionRegion::addConditionDerivation( this,
inputLocation<LHCb::Conditions::InteractionRegion>() );
} );
}
//=============================================================================
// Main execution
......@@ -276,10 +282,10 @@ StatusCode PrimaryVertexChecker::initialize() { return Consumer::initialize(); }
void PrimaryVertexChecker::operator()( LHCb::Tracks const& tracks, Vertices const& recoVtx,
LHCb::MCVertices const& mcvtx, LHCb::MCParticles const& mcps,
LHCb::MCHeader const& mcheader, LHCb::MCProperty const& flags,
DeVP const& vpdet ) const {
LHCb::Conditions::InteractionRegion const& region ) const {
++m_nevt;
const auto beamspot = vpdet.beamSpot();
const auto beamspot = region.avgPosition;
if ( msgLevel( MSG::DEBUG ) )
debug() << " # tracks: " << tracks.size() << " # vertices: " << recoVtx.size() << endmsg;
......
......@@ -14,7 +14,7 @@
#include "Event/State.h"
#include "Event/Track.h"
#include "LHCbAlgs/Transformer.h"
#include "VPDet/DeVP.h"
#include "LHCbDet/InteractionRegion.h"
#include "GaudiAlg/ISequencerTimerTool.h"
#include "GaudiKernel/SystemOfUnits.h"
......@@ -80,16 +80,20 @@ namespace {
* previously used by PatPV3D
*/
using TrackContainer = LHCb::Event::v1::Track::Range;
class PatPV3DFuture : public LHCb::Algorithm::Transformer<LHCb::RecVertices( const TrackContainer&, DeVP const& ),
LHCb::DetDesc::usesConditions<DeVP>> {
class PatPV3DFuture
: public LHCb::Algorithm::Transformer<LHCb::RecVertices( const TrackContainer&,
LHCb::Conditions::InteractionRegion const& ),
LHCb::DetDesc::usesConditions<LHCb::Conditions::InteractionRegion>> {
public:
using RecVertex = LHCb::RecVertex;
using RecVertices = LHCb::RecVertices;
using Track = LHCb::Event::v1::Track;
PatPV3DFuture( const std::string& name, ISvcLocator* pSvcLocator );
RecVertices operator()( const TrackContainer&, DeVP const& ) const override;
/// Initialization
StatusCode initialize() override;
RecVertices operator()( const TrackContainer&, LHCb::Conditions::InteractionRegion const& ) const override;
private:
//////// From PVOfflineTool
......@@ -207,9 +211,17 @@ DECLARE_COMPONENT( PatPV3DFuture )
PatPV3DFuture::PatPV3DFuture( const std::string& name, ISvcLocator* pSvcLocator )
: Transformer( name, pSvcLocator,
{KeyValue{"InputTracks", LHCb::TrackLocation::Default}, KeyValue{"DeVP", LHCb::Det::VP::det_path}},
{KeyValue{"InputTracks", LHCb::TrackLocation::Default},
KeyValue{"InteractionRegionCache", "AlgorithmSpecific-" + name + "-InteractionRegion"}},
KeyValue( "OutputVerticesName", LHCb::RecVertexLocation::Velo3D ) ) {}
StatusCode PatPV3DFuture::initialize() {
return Transformer::initialize().andThen( [&]() {
LHCb::Conditions::InteractionRegion::addConditionDerivation( this,
inputLocation<LHCb::Conditions::InteractionRegion>() );
} );
}
namespace {
using RecVertexSpan = LHCb::span<const PatPV3DFuture::RecVertex>;
......@@ -257,8 +269,9 @@ namespace {
} // namespace
PatPV3DFuture::RecVertices PatPV3DFuture::operator()( TrackContainer const& inputTracks, DeVP const& vpdet ) const {
auto rvts = reconstructMultiPV( inputTracks, vpdet.beamSpot() );
PatPV3DFuture::RecVertices PatPV3DFuture::operator()( TrackContainer const& inputTracks,
LHCb::Conditions::InteractionRegion const& region ) const {
auto rvts = reconstructMultiPV( inputTracks, region.avgPosition );
m_nbPVsCounter += rvts.size();
return rvts;
}
......
......@@ -17,7 +17,7 @@
#include "Kernel/EventLocalAllocator.h"
#include "Kernel/STLExtensions.h"
#include "LHCbAlgs/Transformer.h"
#include "VPDet/DeVP.h"
#include "LHCbDet/InteractionRegion.h"
#ifdef TIMINGHISTOGRAMMING
# include "AIDA/IProfile1D.h"
......@@ -83,8 +83,9 @@ using namespace LHCb::Event::PV;
class TrackBeamLineVertexFinderSoA
: public LHCb::Algorithm::Transformer<PrimaryVertexContainer( const EventContext&, const LHCb::Pr::Velo::Tracks&,
const LHCb::Pr::Velo::Tracks&, const DeVP& ),
LHCb::DetDesc::usesConditions<DeVP>> {
const LHCb::Pr::Velo::Tracks&,
const LHCb::Conditions::InteractionRegion& ),
LHCb::DetDesc::usesConditions<LHCb::Conditions::InteractionRegion>> {
public:
/// Standard constructor
TrackBeamLineVertexFinderSoA( const std::string& name, ISvcLocator* pSvcLocator );
......@@ -92,7 +93,7 @@ public:
StatusCode initialize() override;
/// Execution
PrimaryVertexContainer operator()( const EventContext&, const LHCb::Pr::Velo::Tracks&, const LHCb::Pr::Velo::Tracks&,
const DeVP& ) const override;
const LHCb::Conditions::InteractionRegion& ) const override;
private:
Gaudi::Property<uint32_t> m_minNumTracksPerVertex{this, "MinNumTracksPerVertex", 4};
......@@ -141,14 +142,18 @@ DECLARE_COMPONENT( TrackBeamLineVertexFinderSoA )
TrackBeamLineVertexFinderSoA::TrackBeamLineVertexFinderSoA( const std::string& name, ISvcLocator* pSvcLocator )
: Transformer( name, pSvcLocator,
{KeyValue{"TracksBackwardLocation", "Rec/Track/VeloBackward"},
KeyValue{"TracksLocation", "Rec/Track/Velo"}, KeyValue{"DeVP", LHCb::Det::VP::det_path}},
KeyValue{"TracksLocation", "Rec/Track/Velo"},
{KeyValue{"InteractionRegionCache", "AlgorithmSpecific-" + name + "-InteractionRegion"}}},
KeyValue{"OutputVertices", LHCb::Event::v2::RecVertexLocation::Primary} ) {}
//=============================================================================
// ::initialize()
//=============================================================================
StatusCode TrackBeamLineVertexFinderSoA::initialize() {
auto sc = Transformer::initialize();
auto sc = Transformer::initialize().andThen( [&]() {
LHCb::Conditions::InteractionRegion::addConditionDerivation( this,
inputLocation<LHCb::Conditions::InteractionRegion>() );
} );
// Fill the odd templates first
const double sqrthalf = std::sqrt( 0.5 );
......@@ -256,10 +261,9 @@ namespace LHCb::Event::PV {
} // namespace LHCb::Event::PV
PrimaryVertexContainer TrackBeamLineVertexFinderSoA::operator()( const EventContext& evtCtx,
const LHCb::Pr::Velo::Tracks& tracksBackward,
const LHCb::Pr::Velo::Tracks& tracksForward,
const DeVP& vpdet ) const {
PrimaryVertexContainer TrackBeamLineVertexFinderSoA::
operator()( const EventContext& evtCtx, const LHCb::Pr::Velo::Tracks& tracksBackward,
const LHCb::Pr::Velo::Tracks& tracksForward, const LHCb::Conditions::InteractionRegion& region ) const {
// Get the beamline. this only accounts for position, not
// rotation. that's something to improve! I have considered caching
// this (with a handle for changes in the geometry, but the
......@@ -281,7 +285,7 @@ PrimaryVertexContainer TrackBeamLineVertexFinderSoA::operator()( const EventCont
#endif
// Allow for correction for beamline position derived from conditions
const auto beamspot = vpdet.beamSpot();
const auto beamspot = region.avgPosition;
const auto beamlineX = beamspot.x() + m_beamLineOffsetX;
const auto beamlineY = beamspot.y() + m_beamLineOffsetY;
......
......@@ -16,7 +16,7 @@
#include "Kernel/EventLocalAllocator.h"
#include "Kernel/STLExtensions.h"
#include "LHCbAlgs/Transformer.h"
#include "VPDet/DeVP.h"
#include "LHCbDet/InteractionRegion.h"
#include "Event/TrackVertexUtils.h"
#include "LHCbMath/StateVertexUtils.h"
......@@ -58,20 +58,19 @@ namespace {
} // namespace
using namespace LHCb::Event::PV;
class TrackUnbiasedPVFinderSoA
: public LHCb::Algorithm::Transformer<PrimaryVertexContainer( const EventContext&, const LHCb::Pr::Velo::Tracks&,
const LHCb::Pr::Velo::Tracks&, const DeVP& ),
LHCb::DetDesc::usesConditions<DeVP>> {
const LHCb::Pr::Velo::Tracks&,
const LHCb::Conditions::InteractionRegion& ),
LHCb::DetDesc::usesConditions<LHCb::Conditions::InteractionRegion>> {
public:
/// Standard constructor
TrackUnbiasedPVFinderSoA( const std::string& name, ISvcLocator* pSvcLocator );
/// Initialization
StatusCode initialize() override;
/// Execution
/// Execution
PrimaryVertexContainer operator()( const EventContext&, const LHCb::Pr::Velo::Tracks&, const LHCb::Pr::Velo::Tracks&,
const DeVP& ) const override;
const LHCb::Conditions::InteractionRegion& ) const override;
private:
Gaudi::Property<uint32_t> m_minNumTracksPerVertex{this, "MinNumTracksPerVertex", 5};
......@@ -106,11 +105,13 @@ TrackUnbiasedPVFinderSoA::TrackUnbiasedPVFinderSoA( const std::string& name, ISv
: Transformer( name, pSvcLocator,
{KeyValue{"TracksBackwardLocation", "Rec/Track/VeloBackward"},
KeyValue{"TracksLocation", "Rec/Track/Velo"},
KeyValue{"BeamSpotLocation", "AlgorithmSpecific-" + name + "-beamspot"}},
KeyValue{"InteractionRegionCache", "AlgorithmSpecific-" + name + "-InteractionRegion"}},
KeyValue{"OutputVertices", LHCb::Event::v2::RecVertexLocation::Primary} ) {}
StatusCode TrackUnbiasedPVFinderSoA::initialize() {
return Transformer::initialize().andThen( [&] {
LHCb::Conditions::InteractionRegion::addConditionDerivation( this,
inputLocation<LHCb::Conditions::InteractionRegion>() );
#ifdef TIMINGHISTOGRAMMING
auto hsvc = service<IHistogramSvc>( "HistogramDataSvc", true );
m_timeperstepPr = hsvc->bookProf( name() + "/timeperstep", "time per step", 20, -0.5, 19.5 );
......@@ -224,10 +225,10 @@ namespace {
};
} // namespace
PrimaryVertexContainer TrackUnbiasedPVFinderSoA::operator()( const EventContext& evtCtx,
const LHCb::Pr::Velo::Tracks& tracksBackward,
const LHCb::Pr::Velo::Tracks& tracksForward,
const DeVP& deVP ) const {
PrimaryVertexContainer TrackUnbiasedPVFinderSoA::operator()( const EventContext& evtCtx,
const LHCb::Pr::Velo::Tracks& tracksBackward,
const LHCb::Pr::Velo::Tracks& tracksForward,
const LHCb::Conditions::InteractionRegion& region ) const {
/*
Some observations:
......@@ -286,7 +287,7 @@ PrimaryVertexContainer TrackUnbiasedPVFinderSoA::operator()( const EventContext&
auto memResource = LHCb::getMemResource( evtCtx );
// Allow for correction for beamline position derived from conditions
Gaudi::XYZPoint beamline = deVP.beamSpot();
Gaudi::XYZPoint beamline = region.avgPosition;
const auto beamlineX = beamline.x() + m_beamLineOffsetX;
const auto beamlineY = beamline.y() + m_beamLineOffsetY;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment