Code not using `ToolHandle` but `tool<ISomeToolInterface>(...)`
There is another category of the problem outlined in #557 (closed): code that avoids ToolHandle
altogether, and which uses the told tool<ISomeToolInterface>(...)
method. These entirely fall outside of the framework's awareness of tools, and they can not only be initialized at 'any' time, they also do not participate in the data dependency discovery...
in Rec, this pertains to the following bits of code:
CaloFuture/CaloFutureReco/src/SubClusterSelectorTool.cpp: Interfaces::ISubClusterTag* tE = tool<Interfaces::ISubClusterTag>( taggerE, areaName + "EnergyTagger", this );
CaloFuture/CaloFutureReco/src/SubClusterSelectorTool.cpp: tool<Interfaces::ISubClusterTag>( taggerE, id.areaName() + "EnergyTagger", this );
CaloFuture/CaloFutureReco/src/SubClusterSelectorTool.cpp: Interfaces::ISubClusterTag* tP = tool<Interfaces::ISubClusterTag>( taggerP, areaName + "PositionTagger", this );
CaloFuture/CaloFutureReco/src/SubClusterSelectorTool.cpp: tool<Interfaces::ISubClusterTag>( taggerP, id.areaName() + "PositionTagger", this );
MicroDST/MicroDSTAlgorithm/src/CopyProtoParticle2MCRelations.cpp: m_cloner = tool<ICloneMCParticle>( m_clonerType, this );
MicroDST/MicroDSTAlgorithm/src/MCParticleCloner.cpp: ( m_vertexClonerName.value() == "NONE" ? nullptr : tool<ICloneMCVertex>( m_vertexClonerName, parent() ) );
MicroDST/MicroDSTAlgorithm/src/MCVertexCloner.cpp: [&] { m_particleCloner = tool<ICloneMCParticle>( m_particleClonerName, this->parent() ); } );
Phys/DaVinciMCTools/src/Particle2BackgroundCategoryRelationsAlg.cpp: m_bkg = tool<IBackgroundCategory>( "BackgroundCategory", this );
Phys/DaVinciPVTools/src/GenericParticle2PVRelator.h: if ( sc.isSuccess() ) { m_distCalculator = tool<IDistanceCalculator>( DistCalcName::value, this ); }
Phys/DaVinciTransporter/src/ParticleTransporter.cpp: m_trackExtrapolator = tool<ITrackExtrapolator>( m_trackExtrapolatorName, this );
Phys/DaVinciTransporter/src/ParticleTransporter.cpp: m_particle2State = tool<IParticle2State>( "Particle2State" ); // not private
Phys/DaVinciTransporter/src/ParticleTransporterWithStateProvider.cpp: m_stateprovider = tool<ITrackStateProvider>( m_stateprovidername, this );
Phys/DaVinciTransporter/src/ParticleTransporterWithStateProvider.cpp: m_particle2state = tool<IParticle2State>( m_particle2statename, this );
Phys/DaVinciTransporter/src/ParticleTransporterWithStateProvider.cpp: m_extrapolator1 = tool<ITrackExtrapolator>( m_extrapolator1name, this );
Phys/DaVinciTransporter/src/ParticleTransporterWithStateProvider.cpp: if ( !m_extrapolator2name.empty() ) { m_extrapolator2 = tool<ITrackExtrapolator>( m_extrapolator2name, this ); }
Phys/LoKiArrayFunctors/include/LoKi/DictTransform.h: m_source = tool<IParticleDictTool>( m_sourcename, this );
Phys/LoKiArrayFunctors/src/Components/DictOfFunctors.cpp: IHybridFactory* factory = tool<IHybridFactory>( m_factory, this );
Phys/LoKiArrayFunctors/src/Components/HybridFilterCriterion.cpp: IHybridFactory* factory = tool<IHybridFactory>( m_factory, this );
Phys/LoKiArrayFunctors/src/Components/HybridFilterParticles.cpp: IHybridFactory* factory = tool<IHybridFactory>( m_factory, this );
Phys/LoKiArrayFunctors/src/Components/HybridParticleArrayFilter.cpp: IHybridFactory* factory = tool<IHybridFactory>( m_factory, this );
Phys/LoKiArrayFunctors/src/Components/PlotTool.cpp: IHybridFactory* factory = tool<IHybridFactory>( m_factory, this );
Phys/LoKiArrayFunctors/src/Components/PlotTool.cpp: IHybridFactory* factory = tool<IHybridFactory>( m_factory, this );
Phys/LoKiArrayFunctors/src/Components/PrintTool.cpp: IHybridFactory* factory = tool<IHybridFactory>( m_factory, this );
Phys/LoKiFitters/src/DecayTreeFit.cpp: m_extrapolator = tool<ITrackStateProvider>( m_extrapolatorName );
Phys/LoKiFitters/src/DirectionFitBase.h: if ( 0 == m_transporter ) { m_transporter = tool<IParticleTransporter>( m_transporterName ); }
Phys/LoKiFitters/src/DirectionFitBase.h: if ( 0 == m_transporter ) { m_transporter = tool<IParticleTransporter>( m_transporterName ); }
Phys/LoKiFitters/src/PVReFitter.cpp: if ( !m_stateProviderName.empty() ) { m_stateProvider = tool<ITrackStateProvider>( m_stateProviderName, this ); }
Phys/LoKiFitters/src/PVReFitter.cpp: if ( !m_extrapolatorName.empty() ) { m_extrapolator = tool<ITrackExtrapolator>( m_extrapolatorName, this ); }
Phys/LoKiFitters/src/PVReFitter.cpp: m_veloExtrapolator = tool<ITrackExtrapolator>( m_veloExtrapolatorName, this );
Phys/LoKiFitters/src/ParticleClassificator.cpp: Decays::IDecay* decay = tool<Decays::IDecay>( "LoKi::Decay/Decays" );
Phys/LoKiFitters/src/ParticleClassificator.cpp: Decays::IDecay* decay = tool<Decays::IDecay>( "LoKi::Decay/Decays" );
Phys/LoKiFitters/src/ParticleClassificator.cpp: Decays::IDecay* decay = tool<Decays::IDecay>( "LoKi::Decay/Decays" );
Phys/LoKiFitters/src/SmartParticleCombiner.cpp: m_adder = tool<IParticleCombiner>( m_adderName, this );
Phys/LoKiFitters/src/SmartParticleCombiner.cpp: m_fitter = tool<IParticleCombiner>( m_fitterName, this );
Phys/LoKiFitters/src/VertexFitter.h: m_transporter = tool<IParticleTransporter>( m_transporterName, this );
Phys/LoKiPhys/src/Particles15.cpp: m_filter = alg->tool<IParticleFilter>( filter, alg, true );
Phys/LoKiPhys/src/Particles44.cpp: m_function = alg->tool<IParticleValue>( function, alg, true );
Phys/LoKiPhys/src/Particles47.cpp: alg->tool<ANNGlobalPID::IChargedProtoANNPIDTool>( m_toolname, alg );
Phys/LoKiPhysMC/src/Components/MCTruthPhoton.cpp: IMCHybridFactory* factory = tool<IMCHybridFactory>( m_factory, this );
Phys/LoKiPhysMC/src/Components/PV2MC.cpp: if ( !m_mc2col ) { m_mc2col = tool<IMC2Collision>( m_mc2colName, this ); }
Phys/LoKiPhysMC/src/Components/PV2MCAlg.cpp: m_pv2mc = tool<IPV2MC>( m_pv2mcName, this );
Phys/LoKiUtils/src/GetTools.cpp: const IDistanceCalculator* geo = alg->tool<IDistanceCalculator>( nick, alg );
Phys/LoKiUtils/src/GetTools.cpp: const ILifetimeFitter* geo = alg->tool<ILifetimeFitter>( nick, alg );
Phys/LoKiUtils/src/GetTools.cpp: IParticleTransporter* transporter = alg->tool<IParticleTransporter>( nick, alg );
Phys/LoKiUtils/src/GetTools.cpp: const IParticleReFitter* geo = alg->tool<IParticleReFitter>( nick, alg );
Phys/LoKiUtils/src/GetTools.cpp: const IMassFit* geo = alg->tool<IMassFit>( nick, alg );
Phys/LoKiUtils/src/GetTools.cpp: const IDirectionFit* geo = alg->tool<IDirectionFit>( nick, alg );
Phys/LoKiUtils/src/GetTools.cpp: const IVertexFit* geo = alg->tool<IVertexFit>( nick, alg );
Phys/LoKiUtils/src/GetTools.cpp: const IProtoParticleFilter* geo = alg->tool<IProtoParticleFilter>( nick, alg );
Phys/LoKiUtils/src/GetTools.cpp: const IParticleFilter* geo = alg->tool<IParticleFilter>( nick, alg );
Phys/LoKiUtils/src/GetTools.cpp: IDecayTreeFit* geo = alg->tool<IDecayTreeFit>( nick, alg );
Phys/LoKiUtils/src/GetTools.cpp: return alg->tool<ITrackSelector>( nick, alg ); // RETURN
Phys/LoKiUtils/src/GetTools.cpp: return alg->tool<ITriggerTisTos>( nick, alg ); // RETURN
Phys/MCAssociation/src/MCMatchObjP2MCRelator.cpp: m_reporter = tool<LoKi::IReporter>( "LoKi::Reporter", this );
Phys/ProtoParticleFilter/src/ChargedProtoParticleDLLFilter.cpp: m_trSel = tool<ITrackSelector>( "TrackSelector", "TrackSelector", this );
Phys/VertexFit/src/AdaptivePVReFitter.cpp: m_fullExtrapolator = tool<ITrackExtrapolator>( m_fullExtrapolatorName );
Phys/VertexFit/src/AdaptivePVReFitter.cpp: m_veloExtrapolator = tool<ITrackExtrapolator>( m_veloExtrapolatorName );
Phys/VertexFit/src/MomentumCombiner.cpp: if ( !m_transporterName.empty() ) { m_transporter = tool<IParticleTransporter>( m_transporterName, this ); }
Phys/VertexFit/src/OfflineVertexFitter.cpp: m_transporter = tool<IParticleTransporter>( m_transporterName, this );
Phys/VertexFit/src/PVReFitter.cpp: m_fullExtrapolator = tool<ITrackExtrapolator>( m_fullExtrapolatorName );
Phys/VertexFit/src/PVReFitter.cpp: m_veloExtrapolator = tool<ITrackExtrapolator>( m_veloExtrapolatorName );
Phys/VertexFit/src/PVTrackRemover.cpp: m_pvTool = tool<IPVOfflineTool>( m_pvToolType );
Tr/TrackCheckers/src/TrackResChecker.cpp: IHistoTool* htool = tool<IHistoTool>( "HistoTool", name, this );
Tr/TrackMCTools/src/TrackGhostClassificationBase.cpp: m_linkTool = tool<ILHCbIDsToMCParticles>( "LHCbIDsToMCParticles" );
Tr/TrackProjectors/src/TrackProjector.cpp: return GaudiTool::initialize().andThen( [&] { m_poca = tool<ITrajPoca>( "TrajPoca" ); } );
Tr/TrackProjectors/src/TrackProjectorSelector.cpp: [&]( const auto& i ) { m_projectors.insert( i.first, this->tool<ITrackProjector>( i.second ) ); } );
Tr/TrackTools/src/DelegatingTrackSelector.cpp: return trSels[t] = tool<ITrackSelector>( "TrackSelector", name.str(), this );