diff --git a/Tracking/TrkFitter/TrkGaussianSumFilter/TrkGaussianSumFilter/BremFind.h b/Tracking/TrkFitter/TrkGaussianSumFilter/TrkGaussianSumFilter/BremFind.h index e3516175da00d5b1997461ab7ac2a2e2f5f117a3..95139fe6de4c9a2b45321f68069aa66d97c83111 100644 --- a/Tracking/TrkFitter/TrkGaussianSumFilter/TrkGaussianSumFilter/BremFind.h +++ b/Tracking/TrkFitter/TrkGaussianSumFilter/TrkGaussianSumFilter/BremFind.h @@ -51,15 +51,15 @@ class QoverPBremFit; struct GraphParameter { double constant; - std::vector<double> coefficient; - std::vector<double> value; - std::vector<double> width; + std::vector<double> coefficient{}; + std::vector<double> value{}; + std::vector<double> width{}; }; struct Element { - double value; - double width; - bool sign; + double value{}; + double width{}; + bool sign{}; }; diff --git a/Tracking/TrkFitter/TrkGaussianSumFilter/src/BremFind.cxx b/Tracking/TrkFitter/TrkGaussianSumFilter/src/BremFind.cxx index 2e9adc8a5654c563b5d05cf230109b4927bb39c7..76c74ef8eca94074300680bf48d512d9d9bee7ba 100644 --- a/Tracking/TrkFitter/TrkGaussianSumFilter/src/BremFind.cxx +++ b/Tracking/TrkFitter/TrkGaussianSumFilter/src/BremFind.cxx @@ -48,24 +48,69 @@ Trk::BremFind::BremFind(const std::string& type, const std::string& name, const AthAlgTool(type, name, parent), m_stateCombiner("Trk::MultiComponentStateCombiner"), m_propagator("Trk::IntersectorWrapper/IntersectorWrapper"), + //m_fieldProperties m_trackingGeometrySvc("TrackingGeometrySvc","AtlasTrackingGeometrySvc"), m_trackingGeometryName("AtlasTrackingGeometry"), - m_trackingGeometry(0), + m_trackingGeometry(nullptr), + //m_validationMode m_validationTreeName("BremInfo"), m_validationTreeName2("BremInfoZ"), m_validationTreeDescription("Brem Information"), m_validationTreeFolder("/valGSF2/BremInfo"), m_validationTreeFolder2("/valGSF2/BremInfoZ"), - m_validationTree(0), - m_validationTree2(0) + m_validationTree(nullptr), + m_validationTree2(nullptr), + //m_useCalibration{}, + //m_usePropagate{}, + m_forwardparameters{}, + m_smoothedparameters{}, + m_combinedparameters{}, + m_perigee_1overP{}, + m_perigee_Phi{}, + m_perigee_Theta{}, + m_perigee_d0{}, + m_perigee_z0{}, + m_brem_value{}, + m_brem_phi{}, + m_brem_theta{}, + m_brem_energy{}, + m_brem_UpperBound{}, + m_brem_LowerBound{}, + m_forward_kink{}, + m_smoothed_kink{}, + m_brem_significance{}, + m_brem_valueCalibrated{}, + m_surfaceX{}, + m_surfaceY{}, + m_surfaceZ{}, + m_nBrems{}, + m_Z_mode{}, + //vectors could be initialised here + m_event_ID{}, + m_forwardparameter_constant{}, + m_forwardparameter_coefficient{}, + m_forwardparameter_value{}, + m_forwardparameter_width{}, + m_smoothparameter_constant{}, + m_smoothparameter_coefficient{}, + m_smoothparameter_value{}, + m_smoothparameter_width{}, + m_forward_1overP{}, + m_forward_1overPerr{}, + m_forward_value{}, + m_smooth_1overP{}, + m_smooth_1overPerr{}, + m_smooth_value{}, + m_KinkSeparationScores{}, + m_KinkSeparationScoresErr{}, + m_forwardBremFit{}, + m_smoothedBremFit{} { - declareInterface<IBremsstrahlungFinder>(this); + declareInterface<IBremsstrahlungFinder>(this); + //jobOptions Variables declareProperty("StateCombiner", m_stateCombiner ); declareProperty("TrackingGeometrySvc", m_trackingGeometrySvc); declareProperty("Propagator", m_propagator); - - - //jobOptions Variables declareProperty("UseCalibration", m_useCalibration=true); declareProperty("ValidationMode", m_validationMode=false); declareProperty("UseSurfacePropagation", m_usePropagate=false); @@ -76,31 +121,19 @@ Trk::BremFind::BremFind(const std::string& type, const std::string& name, const StatusCode Trk::BremFind::initialize() { - - // The TrackingGeometrySvc ------------------------------------------------------ - if (m_trackingGeometrySvc.retrieve().isFailure()) { - msg(MSG::FATAL) << "Failed to load TrackingGeometrySvc " << m_trackingGeometrySvc << endmsg; - return StatusCode::FAILURE; - } - else { - msg(MSG::INFO) << "Retrieved service " << m_trackingGeometrySvc << endmsg; - m_trackingGeometryName = m_trackingGeometrySvc->trackingGeometryName(); - } + ATH_CHECK (m_trackingGeometrySvc.retrieve()); + + msg(MSG::DEBUG) << "Retrieved service " << m_trackingGeometrySvc << endmsg; + m_trackingGeometryName = m_trackingGeometrySvc->trackingGeometryName(); + // Request the state combiner - if ( m_stateCombiner.retrieve().isFailure() ){ - msg(MSG::FATAL) << "Request to retrieve the multi-component state combiner failed... Exiting!" << endmsg; - return StatusCode::FAILURE; - } + ATH_CHECK ( m_stateCombiner.retrieve() ); - //Retrieve the propagator - if (m_propagator.retrieve().isFailure()) { - msg(MSG::FATAL) << "Failed to retrieve tool " << m_propagator << endmsg; - return StatusCode::FAILURE; - } - + ATH_CHECK (m_propagator.retrieve()); + m_fieldProperties= Trk::MagneticFieldProperties(Trk::FullField); @@ -109,7 +142,7 @@ StatusCode Trk::BremFind::initialize() if (m_validationMode) { - if (m_validationTree == 0) { + if (not m_validationTree) { //Crate a new tree if there doesn't exist one already m_validationTree = new TTree( m_validationTreeName.c_str(), m_validationTreeDescription.c_str() ); @@ -151,7 +184,7 @@ StatusCode Trk::BremFind::initialize() - if (m_validationTree2 == 0) { + if (not m_validationTree2) { //Crate a new tree if there doesn't exist one already m_validationTree2 = new TTree( m_validationTreeName2.c_str(), m_validationTreeDescription.c_str() ); @@ -215,7 +248,7 @@ StatusCode Trk::BremFind::initialize() //---------------------------- end of validation mode ------------------------------------ - msg(MSG::INFO) << "Initialisation of " << name() << " was successful" << endmsg; + ATH_MSG_DEBUG( "Initialisation of " << name() << " was successful" ); return StatusCode::SUCCESS; @@ -224,7 +257,7 @@ StatusCode Trk::BremFind::initialize() StatusCode Trk::BremFind::finalize(){ - msg(MSG::INFO) << "Finalisation of " << name() << " was successful" << endmsg; + ATH_MSG_DEBUG( "Finalisation of " << name() << " was successful" ); return StatusCode::SUCCESS; diff --git a/Tracking/TrkFitter/TrkGaussianSumFilter/src/ForwardGsfFitter.cxx b/Tracking/TrkFitter/TrkGaussianSumFilter/src/ForwardGsfFitter.cxx index 8a32025858a0c1da779840af1a8382e0a13ca583..d4836cbbd5afc46bf3116061c0e0a7645813f438 100755 --- a/Tracking/TrkFitter/TrkGaussianSumFilter/src/ForwardGsfFitter.cxx +++ b/Tracking/TrkFitter/TrkGaussianSumFilter/src/ForwardGsfFitter.cxx @@ -34,7 +34,8 @@ Trk::ForwardGsfFitter::ForwardGsfFitter(const std::string& type, const std::stri m_stateCombiner("Trk::MultiComponentStateCombiner/ForwardsFitterCombiner"), m_cutChiSquaredPerNumberDOF(50.), m_overideMaterialEffectsSwitch(false), - m_overideMaterialEffects(4) + m_overideMaterialEffects(4), + m_overideParticleHypothesis(nonInteracting) { declareInterface<IForwardGsfFitter>(this); diff --git a/Tracking/TrkFitter/TrkGaussianSumFilter/src/GaussianSumFitter.cxx b/Tracking/TrkFitter/TrkGaussianSumFilter/src/GaussianSumFitter.cxx index 825aadf149215379a5c5880df1c0349befd6212e..c5a5f110212e6bf58ae63fc338db9227da66f011 100755 --- a/Tracking/TrkFitter/TrkGaussianSumFilter/src/GaussianSumFitter.cxx +++ b/Tracking/TrkFitter/TrkGaussianSumFilter/src/GaussianSumFitter.cxx @@ -73,13 +73,52 @@ Trk::GaussianSumFitter::GaussianSumFitter(const std::string& type, const std::st m_BremFind("Trk::BremFind"), m_BremFind2("Trk::BremFind"), m_chronoSvc("ChronoStatSvc", name), + m_inputPreparator(0), + m_FitPRD(0), + m_FitMeasuremnetBase(0), + m_FowardFailure(0), + m_SmootherFailure(0), + m_PerigeeFailure(0), + m_fitQualityFailure(0), m_validationMode(false), m_validationTreeName("GSFValidation"), m_validationTreeDescription("Surface MCSOS"), m_validationTreeFolder("/valGSF/GSFValidation"), m_validationTree(0), m_surfaceCounterF(0), - m_surfaceCounterS(0) + m_surfacesF(0), + m_surfaceXF{}, + m_surfaceYF{}, + m_surfaceRF{}, + m_surfaceZF{}, + m_surfaceTypeF{}, + m_surfaceNstatesF{}, + + m_surfaceThetaF{}, + m_surfacePhiF{}, + m_surfaceQoverPF{}, + m_surfaceWeightF{}, + m_surfaceErrThetaF{}, + m_surfaceErrPhiF{}, + m_surfaceErrQoverPF{}, + m_surfaceCounterS(0), + m_surfacesS(0), + m_surfaceXS{}, + m_surfaceYS{}, + m_surfaceRS{}, + m_surfaceZS{}, + m_surfaceTypeS{}, + m_surfaceNstatesS{}, + + m_surfaceThetaS{}, + m_surfacePhiS{}, + m_surfaceQoverPS{}, + m_surfaceWeightS{}, + m_surfaceErrThetaS{}, + m_surfaceErrPhiS{}, + m_surfaceErrQoverPS{}, + + m_event_ID(0) { @@ -114,50 +153,25 @@ StatusCode Trk::GaussianSumFitter::initialize() StatusCode sc; // Request the Chrono Service - if ( m_chronoSvc.retrieve().isFailure() ) { - msg(MSG::FATAL) << "Failed to retrieve service " << m_chronoSvc << endmsg; - return StatusCode::FAILURE; - } else - msg(MSG::INFO) << "Retrieved service " << m_chronoSvc << endmsg; - - + ATH_CHECK( m_chronoSvc.retrieve() ); // Request the GSF forward fitter - hardwired type and instanace name for the GSF - if ( m_forwardGsfFitter.retrieve().isFailure() ) { - msg(MSG::FATAL) << "Request to retrieve the forward GSF fitter failed... Exiting!" << endmsg; - return StatusCode::FAILURE; - } + ATH_CHECK( m_forwardGsfFitter.retrieve()); // Request the GSF smoother - hardwired type and instance name for the GSF - if ( m_gsfSmoother.retrieve().isFailure() ) { - msg(MSG::FATAL) << "Request to retrieve the GSF smoother failed... Exiting!" << endmsg; - return StatusCode::FAILURE; - } + ATH_CHECK( m_gsfSmoother.retrieve() ); // Request the GSF Outlier m_logic - hardwired type and instance name for the GSF - if ( m_outlierLogic.retrieve().isFailure() ) { - msg(MSG::FATAL) << "Request to retrieve the GSF outlier m_logic failed... Exiting!" << endmsg; - return StatusCode::FAILURE; - } + ATH_CHECK( m_outlierLogic.retrieve() ); // Request the GSF measurement updator - hardwired type and instance name for the GSF - if ( m_updator.retrieve().isFailure() ) { - msg(MSG::FATAL) << "Request to retrieve the GSF measurement updator failed... Exiting!" << endmsg; - return StatusCode::FAILURE; - } + ATH_CHECK ( m_updator.retrieve() ); // Request the GSF extrapolator - if ( m_extrapolator.retrieve().isFailure() ) { - msg(MSG::FATAL) << "Request to retrieve the GSF extrapolator failed... Exiting!" << endmsg; - return StatusCode::FAILURE; - } + ATH_CHECK ( m_extrapolator.retrieve() ); // Request the state combiner - if ( m_stateCombiner.retrieve().isFailure() ){ - msg(MSG::FATAL) << "Request to retrieve the multi-component state combiner failed... Exiting!" << endmsg; - return StatusCode::FAILURE; - } - + ATH_CHECK ( m_stateCombiner.retrieve() ); //Request the brem finder if (m_runBremFinder){ if ( m_BremFind.retrieve().isFailure() || m_BremFind2.retrieve().isFailure() ) { @@ -175,7 +189,7 @@ StatusCode Trk::GaussianSumFitter::initialize() } else - msg(MSG::INFO) << "Request to retrieve the RIO_OnTrack Creator failed but track is fit at the MeasurementBase level... Continuing!" << endmsg; + ATH_MSG_INFO( "Request to retrieve the RIO_OnTrack Creator failed but track is fit at the MeasurementBase level... Continuing!"); } @@ -259,7 +273,7 @@ StatusCode Trk::GaussianSumFitter::initialize() } // now register the Tree - ITHistSvc* tHistSvc = 0; + ITHistSvc* tHistSvc = nullptr; if (service("THistSvc",tHistSvc).isFailure()){ msg(MSG::ERROR)<<"initialize() Could not find Hist Service -> Switching ValidationMode Off !" << endmsg; delete m_validationTree; m_validationTree = 0; diff --git a/Tracking/TrkFitter/TrkGaussianSumFilter/src/GsfBetheHeitlerEffects.cxx b/Tracking/TrkFitter/TrkGaussianSumFilter/src/GsfBetheHeitlerEffects.cxx index 94e302360cfacdd78999554595c9868532acae3c..7dc14a729ec5df5fe4e31445eeeca6b49aad1f6d 100755 --- a/Tracking/TrkFitter/TrkGaussianSumFilter/src/GsfBetheHeitlerEffects.cxx +++ b/Tracking/TrkFitter/TrkGaussianSumFilter/src/GsfBetheHeitlerEffects.cxx @@ -33,9 +33,11 @@ Trk::GsfBetheHeitlerEffects::GsfBetheHeitlerEffects(const std::string& type, con MultiStateMaterialEffects(type, name, parent), m_parameterisationFileName("GeantSim_LT01_cdf_nC6_O5.par"), m_numberOfComponents(0), + m_transformationCode(0), m_correctionFlag(0), m_parameterisationFileNameHighX0("GeantSim_GT01_cdf_nC6_O5.par"), - m_numberOfComponentsHighX0(0) + m_numberOfComponentsHighX0(0), + m_transformationCodeHighX0(0) { declareInterface<IMultiStateMaterialEffects>(this); diff --git a/Tracking/TrkFitter/TrkGaussianSumFilter/src/GsfExtrapolator.cxx b/Tracking/TrkFitter/TrkGaussianSumFilter/src/GsfExtrapolator.cxx index 89f70a578bf5d5c801200b47c680e9c941206110..f87ce019820a33dd45824a8b7489d7f730afe740 100755 --- a/Tracking/TrkFitter/TrkGaussianSumFilter/src/GsfExtrapolator.cxx +++ b/Tracking/TrkFitter/TrkGaussianSumFilter/src/GsfExtrapolator.cxx @@ -326,8 +326,10 @@ const Trk::MultiComponentState* Trk::GsfExtrapolator::extrapolate( const Trk::IP // New reference parameters are the navigation parameters at the boundary surface referenceParameters = m_stateAtBoundarySurface.navigationParameters; - if (referenceParameters) printState("New Ref Parameters at next surface ", *referenceParameters); - + //coverity 111522: null check is redundant here since referenceParameters is dereferenced later anyway. + //if (referenceParameters) printState("New Ref Parameters at next surface ", *referenceParameters); + printState("New Ref Parameters at next surface ", *referenceParameters); + // The volume that the extrapolation is about to enter into is called the nextVolume const Trk::TrackingVolume* nextVolume = m_stateAtBoundarySurface.trackingVolume; diff --git a/Tracking/TrkFitter/TrkGaussianSumFilter/src/MultiComponentStateCombiner.cxx b/Tracking/TrkFitter/TrkGaussianSumFilter/src/MultiComponentStateCombiner.cxx index b705ca5dd83b63aabf0664918c1cab0edb717300..e90dd96148c117d44da835a9a95b1a7f180b52a5 100755 --- a/Tracking/TrkFitter/TrkGaussianSumFilter/src/MultiComponentStateCombiner.cxx +++ b/Tracking/TrkFitter/TrkGaussianSumFilter/src/MultiComponentStateCombiner.cxx @@ -26,6 +26,7 @@ Trk::MultiComponentStateCombiner::MultiComponentStateCombiner (const std::string m_useModePhi(true), m_useModeTheta(true), m_useModeqOverP(true), + m_NumberOfCalls(0), m_fractionPDFused(1.0) { diff --git a/Tracking/TrkFitter/TrkGaussianSumFilter/src/MultiComponentStateModeCalculator.cxx b/Tracking/TrkFitter/TrkGaussianSumFilter/src/MultiComponentStateModeCalculator.cxx index 8fecc236a7c41fdb6d36b56b0aae0198c1b28192..8646712a909a4f14117b6e2c7a33cbb4e11dc3c4 100755 --- a/Tracking/TrkFitter/TrkGaussianSumFilter/src/MultiComponentStateModeCalculator.cxx +++ b/Tracking/TrkFitter/TrkGaussianSumFilter/src/MultiComponentStateModeCalculator.cxx @@ -24,7 +24,11 @@ description : Implementation code for MultiComponentStateModeCalculator Trk::MultiComponentStateModeCalculator::MultiComponentStateModeCalculator( const std::string& type, const std::string& name, const IInterface* parent ) : AthAlgTool( type, name, parent ), - m_outputlevel(1) + m_outputlevel(1), + m_NumberOfCalls(0), + m_ConverganceFilures(0), + m_NoErrorMatrix(0), + m_MixtureSizeZero(0) { declareInterface<IMultiComponentStateModeCalculator>(this); diff --git a/Tracking/TrkFitter/TrkGaussianSumFilter/src/MultipleScatterUpdator.cxx b/Tracking/TrkFitter/TrkGaussianSumFilter/src/MultipleScatterUpdator.cxx index 5723981869e38aa343ef515153516628a5ea4f52..44bcac58ae2d130929e68af05384c53d742e68ce 100755 --- a/Tracking/TrkFitter/TrkGaussianSumFilter/src/MultipleScatterUpdator.cxx +++ b/Tracking/TrkFitter/TrkGaussianSumFilter/src/MultipleScatterUpdator.cxx @@ -20,6 +20,7 @@ decription : Implementation code for multiple scatter updator #include "TrkEventPrimitives/ParamDefs.h" #include "TrkExInterfaces/IMultipleScatteringUpdator.h" +#include <cmath> Trk::ParticleMasses Trk::MultipleScatterUpdator::s_particleMasses; double Trk::MultipleScatterUpdator::s_multipleScatterMainFactor = 13.6 * Gaudi::Units::MeV; @@ -50,27 +51,16 @@ Trk::MultipleScatterUpdator::~MultipleScatterUpdator() StatusCode Trk::MultipleScatterUpdator::initialize() { - m_outputlevel = msg().level()-MSG::DEBUG; // save the threshold for debug printout in private member - - if( m_msUpdator.retrieve().isFailure() ) { - ATH_MSG_FATAL("Failed to retrieve tool " << m_msUpdator << ". No energy loss effects will be taken into account." ); - return StatusCode::FAILURE; - } else - ATH_MSG_INFO( "Retrieved tool " << m_msUpdator ); - - - msg(MSG::INFO) << "Initialisation of " << name() << " was successful" << endmsg; + ATH_CHECK( m_msUpdator.retrieve()); + ATH_MSG_DEBUG( "Initialisation of " << name() << " was successful" ); return StatusCode::SUCCESS; - } StatusCode Trk::MultipleScatterUpdator::finalize() { - - msg(MSG::INFO) << "Finalisation of " << name() << " was successful" << endmsg; + ATH_MSG_DEBUG( "Finalisation of " << name() << " was successful" ); return StatusCode::SUCCESS; - } const Trk::TrackParameters* Trk::MultipleScatterUpdator::update( const Trk::TrackParameters* trackParameters, @@ -79,18 +69,11 @@ const Trk::TrackParameters* Trk::MultipleScatterUpdator::update( const Trk::Trac Trk::ParticleHypothesis particleHypothesis, Trk::MaterialUpdateMode) const { - - if (m_outputlevel < 0) - msg(MSG::VERBOSE) << "Performing multiple scatter update using layer information" << endmsg; - - - - + ATH_MSG_VERBOSE( "Performing multiple scatter update using layer information" ); // Extract the material properties from the layer const Trk::MaterialProperties* materialProperties(0); double pathCorrection(0.); - // Get the surface associated with the parameters const Trk::Surface& surface = trackParameters->associatedSurface(); @@ -104,7 +87,7 @@ const Trk::TrackParameters* Trk::MultipleScatterUpdator::update( const Trk::Trac materialProperties = layerMaterial ? layerMaterial->fullMaterial(trackParameters->position()) : 0; // Determine the pathCorrection if the material properties exist - pathCorrection = materialProperties ? 1. / fabs( surface.normal().dot( trackParameters->momentum().unit() ) ) : 0.; + pathCorrection = materialProperties ? 1. / std::fabs( surface.normal().dot( trackParameters->momentum().unit() ) ) : 0.; } @@ -113,14 +96,14 @@ const Trk::TrackParameters* Trk::MultipleScatterUpdator::update( const Trk::Trac materialProperties = materialProperties ? materialProperties : layer.fullUpdateMaterialProperties( *trackParameters ); if ( !materialProperties ) { - msg(MSG::DEBUG) << "No material properties associated with layer... returning original parameters" << endmsg; + ATH_MSG_DEBUG( "No material properties associated with layer... returning original parameters" ); return trackParameters->clone(); } const AmgSymMatrix(5)* measuredTrackCov = trackParameters->covariance(); if (!measuredTrackCov){ - msg(MSG::DEBUG) << "No measured track parameters for multiple scatter... returning original parameters" << endmsg; + ATH_MSG_DEBUG( "No measured track parameters for multiple scatter... returning original parameters" ); return trackParameters->clone(); } @@ -139,13 +122,12 @@ const Trk::TrackParameters* Trk::MultipleScatterUpdator::update( const Trk::TrackParameters& trackParameters, const Trk::MaterialProperties& materialProperties, double pathLength, - PropDirection direction, + PropDirection /*direction*/, ParticleHypothesis /*particleHypothesis*/, Trk::MaterialUpdateMode ) const { - if (m_outputlevel < 0) - msg(MSG::VERBOSE) << "Updating multiple scatter effects based on material properties and path length" << endmsg; + ATH_MSG_VERBOSE( "Updating multiple scatter effects based on material properties and path length" ); const AmgSymMatrix(5)* measuredTrackCov = trackParameters.covariance(); @@ -154,7 +136,6 @@ Trk::MultipleScatterUpdator::update( const Trk::TrackParameters& trackParameters return trackParameters.clone(); } - const Amg::Vector3D& globalMomentum = trackParameters.momentum(); double p = globalMomentum.mag(); @@ -164,21 +145,17 @@ Trk::MultipleScatterUpdator::update( const Trk::TrackParameters& trackParameters //and create a dummy materialProperties with the properties we are interested in MaterialProperties mprop(materialProperties.thicknessInX0(),1.,0.,0.,0.,0.); double angularVariation = m_msUpdator->sigmaSquare(mprop, p, pathcorrection, Trk::muon); - - - if (m_outputlevel <= 0) - msg(MSG::DEBUG) << "Sigma squared multiple scattering: " << angularVariation << endmsg; - + ATH_MSG_DEBUG( "Sigma squared multiple scattering: " << angularVariation ); AmgSymMatrix(5)* cov_out = new AmgSymMatrix(5)(*measuredTrackCov); + //double sign = (direction == Trk::oppositeMomentum) ? 1. : 1.; + double sinTheta = std::sin( trackParameters.parameters()[Trk::theta] ); - double sign = (direction == Trk::oppositeMomentum) ? 1. : 1.; - double sinTheta = sin( trackParameters.parameters()[Trk::theta] ); - - (*cov_out)(Trk::phi,Trk::phi) += sign * angularVariation / (sinTheta*sinTheta); - (*cov_out)(Trk::theta,Trk::theta) += sign * angularVariation; + //(*cov_out)(Trk::phi,Trk::phi) += sign * angularVariation / (sinTheta*sinTheta); + //(*cov_out)(Trk::theta,Trk::theta) += sign * angularVariation; //std::cout << "MSU DeltaPhi " << (*updatedCovarianceMatrix)[Trk::phi][Trk::phi] <<'\t' << angularVariation / (sinTheta * sinTheta) << std::endl; - + (*cov_out)(Trk::phi,Trk::phi) += angularVariation / (sinTheta*sinTheta); + (*cov_out)(Trk::theta,Trk::theta) += angularVariation; const AmgVector(5)& par = trackParameters.parameters(); //return trackParameters.cloneToNew( trackParameters.parameters(), measuredTrackCov ); return trackParameters.associatedSurface().createTrackParameters(par[Trk::loc1],par[Trk::loc2],par[Trk::phi],par[Trk::theta],par[Trk::qOverP],cov_out); diff --git a/Tracking/TrkFitter/TrkGaussianSumFilter/src/QoverPBremFit.cxx b/Tracking/TrkFitter/TrkGaussianSumFilter/src/QoverPBremFit.cxx index 73849dad055cda1df1eb8c220b8c7bae61e79bc2..af6df4cb5a43b0db0cde733317a51dd37f47b7dd 100644 --- a/Tracking/TrkFitter/TrkGaussianSumFilter/src/QoverPBremFit.cxx +++ b/Tracking/TrkFitter/TrkGaussianSumFilter/src/QoverPBremFit.cxx @@ -101,8 +101,9 @@ Trk::GraphParameter Trk::QoverPBremFit::GetParameters(const DataVector <const Tr } -void Trk::QoverPBremFit::FillVariables(const DataVector <const Trk::TrackStateOnSurface>& Trajectory) { - +void +Trk::QoverPBremFit::FillVariables(const DataVector <const Trk::TrackStateOnSurface>& Trajectory) { + //iterators will be constructed as NULL DataVector<const Trk::TrackStateOnSurface>::const_iterator trackStateOnSurface; DataVector<const Trk::TrackStateOnSurface>::const_iterator Trajectory_end; @@ -110,80 +111,76 @@ void Trk::QoverPBremFit::FillVariables(const DataVector <const Trk::TrackStateOn if (m_type==1) { trackStateOnSurface = Trajectory.begin(); Trajectory_end = Trajectory.end(); - } - else if (m_type==-1) { + } else if (m_type==-1) { trackStateOnSurface = Trajectory.end(); trackStateOnSurface--; Trajectory_end = Trajectory.begin(); Trajectory_end--; + } else { + //trackStateOnSurface and Trajectory_end will be NULL in this case, as constructed + return; } m_surfaceCounter=0; - for ( ; trackStateOnSurface != Trajectory_end; ) { - const Trk::MultiComponentState *TrajectoryMultiState=0; - const Trk::MultiComponentStateOnSurface *TrajectoryMultiStateOnSurface = dynamic_cast<const Trk::MultiComponentStateOnSurface*>(*trackStateOnSurface); + for ( ; trackStateOnSurface != Trajectory_end; ) { + const Trk::MultiComponentState *TrajectoryMultiState=0; + const Trk::MultiComponentStateOnSurface *TrajectoryMultiStateOnSurface = dynamic_cast<const Trk::MultiComponentStateOnSurface*>(*trackStateOnSurface); + if (m_surfaceCounter < TRKFGSF_VALSURFACES) { + if (!TrajectoryMultiStateOnSurface) { + // Create new multiComponentState from a single state + Trk::ComponentParameters componentParameters( (*trackStateOnSurface)->trackParameters(), 1.0); + TrajectoryMultiState = new Trk::MultiComponentState(componentParameters); + } else { + TrajectoryMultiState = TrajectoryMultiStateOnSurface->components(); + } - if (m_surfaceCounter < TRKFGSF_VALSURFACES) { + const Amg::Vector3D posOnSurf = TrajectoryMultiStateOnSurface->trackParameters()->position(); - if (!TrajectoryMultiStateOnSurface) { - // Create new multiComponentState from a single state - Trk::ComponentParameters componentParameters( (*trackStateOnSurface)->trackParameters(), 1.0); - TrajectoryMultiState = new Trk::MultiComponentState(componentParameters); - } - else - TrajectoryMultiState = TrajectoryMultiStateOnSurface->components(); - const Amg::Vector3D posOnSurf = TrajectoryMultiStateOnSurface->trackParameters()->position(); + //Fill the radius values + m_RadiusValue->push_back( posOnSurf.perp() ); + m_Zvalue->push_back( posOnSurf.z() ); + + //Specify in joboptions whether to use mode or mean + const Trk::TrackParameters* CombinedMultiState = m_stateCombiner->combine(*TrajectoryMultiState,true); + if (CombinedMultiState->parameters()[Trk::qOverP] > 0.0) m_charge = 1.0; + else m_charge = -1.0; - //Fill the radius values - m_RadiusValue->push_back( posOnSurf.perp() ); - m_Zvalue->push_back( posOnSurf.z() ); + //Fill the 1overPvalues in GeV + m_trackParameters->push_back( CombinedMultiState ); + m_1overPvalue->push_back( 1000.0*fabs(CombinedMultiState->parameters()[Trk::qOverP]) ); + m_PhiValue->push_back( CombinedMultiState->parameters()[Trk::phi] ); + m_ThetaValue->push_back( CombinedMultiState->parameters()[Trk::theta] ); - //Specify in joboptions whether to use mode or mean - const Trk::TrackParameters* CombinedMultiState = m_stateCombiner->combine(*TrajectoryMultiState,true); - - if (CombinedMultiState->parameters()[Trk::qOverP] > 0.0) - m_charge = 1.0; - else - m_charge = -1.0; - - //Fill the 1overPvalues in GeV - m_trackParameters->push_back( CombinedMultiState ); - m_1overPvalue->push_back( 1000.0*fabs(CombinedMultiState->parameters()[Trk::qOverP]) ); - m_PhiValue->push_back( CombinedMultiState->parameters()[Trk::phi] ); - m_ThetaValue->push_back( CombinedMultiState->parameters()[Trk::theta] ); - - const AmgSymMatrix(5)* measuredCov = CombinedMultiState->covariance(); - - if (measuredCov) { - m_1overPvalueerror->push_back( 1000.0*sqrt((*measuredCov)(Trk::qOverP,Trk::qOverP))); - m_PhiValueerror->push_back( sqrt((*measuredCov)(Trk::phi,Trk::phi))); - m_ThetaValueerror->push_back( sqrt((*measuredCov)(Trk::theta,Trk::theta))); - } - else { - m_1overPvalueerror->push_back( 1000.0*fabs(CombinedMultiState->parameters()[Trk::qOverP]) ); - m_PhiValueerror->push_back( fabs(CombinedMultiState->parameters()[Trk::phi]) ); - m_ThetaValueerror->push_back( fabs(CombinedMultiState->parameters()[Trk::theta]) ); + const AmgSymMatrix(5)* measuredCov = CombinedMultiState->covariance(); + + if (measuredCov) { + m_1overPvalueerror->push_back( 1000.0*sqrt((*measuredCov)(Trk::qOverP,Trk::qOverP))); + m_PhiValueerror->push_back( sqrt((*measuredCov)(Trk::phi,Trk::phi))); + m_ThetaValueerror->push_back( sqrt((*measuredCov)(Trk::theta,Trk::theta))); + } + else { + m_1overPvalueerror->push_back( 1000.0*fabs(CombinedMultiState->parameters()[Trk::qOverP]) ); + m_PhiValueerror->push_back( fabs(CombinedMultiState->parameters()[Trk::phi]) ); + m_ThetaValueerror->push_back( fabs(CombinedMultiState->parameters()[Trk::theta]) ); + } } - - } - if (!TrajectoryMultiStateOnSurface) { - delete TrajectoryMultiState; - } - m_surfaceCounter++; - if (m_type==1) { - trackStateOnSurface++; - } - else if (m_type==-1) { - trackStateOnSurface--; - } - } - + if (!TrajectoryMultiStateOnSurface) { + delete TrajectoryMultiState; + } + m_surfaceCounter++; + if (m_type==1) { + trackStateOnSurface++; + } + else if (m_type==-1) { + trackStateOnSurface--; + } + }//end of for loop } diff --git a/Tracking/TrkFitter/TrkGaussianSumFilter/src/QuickCloseComponentsMultiStateMerger.cxx b/Tracking/TrkFitter/TrkGaussianSumFilter/src/QuickCloseComponentsMultiStateMerger.cxx index fc7f8f6c0638cc43a5cc5772afbb241beed35081..d5020f483d591b5c17d19450e314b63738928143 100644 --- a/Tracking/TrkFitter/TrkGaussianSumFilter/src/QuickCloseComponentsMultiStateMerger.cxx +++ b/Tracking/TrkFitter/TrkGaussianSumFilter/src/QuickCloseComponentsMultiStateMerger.cxx @@ -50,7 +50,9 @@ Trk::QuickCloseComponentsMultiStateMerger::QuickCloseComponentsMultiStateMerger( m_stateAssembler("Trk::MultiComponentStateAssembler/CloseComponentsStateAssembler"), m_chronoSvc("ChronoStatSvc", name), m_useFullDistanceCalcArray(true), - m_useFullDistanceCalcVector(true) + m_useFullDistanceCalcVector(true), + m_useMap{} + { declareInterface<IMultiComponentStateMerger>(this);