ATLAS Offline Software
Namespaces | Classes | Typedefs | Enumerations | Functions | Variables
Trk Namespace Reference

Ensure that the ATLAS eigen extensions are properly loaded. More...

Namespaces

 Error
 
 GsfMeasurementUpdator
 
 InvalidParam
 
 MeasurementBaseType
 
 MultiComponentStateAssembler
 Helper struct representing a cache of the Multicomponent state under assembly.
 
 MultiComponentStateCombiner
 
 MultiComponentStateHelpers
 
 MultiComponentStateModeCalculator
 
 ParticleMasses
 
 ParticleSwitcher
 
 RIO_OnTrackType
 
 RungeKuttaUtils
 
 TrackFitInputPreparator
 Helpers to transform combinations of tracking input (for example, existing tracks plus additional measurements) into a digestable fitter input: either tracks, measurement-sets or proto-state vectors.
 
 TrackState
 
 TruthClassification
 

Classes

class  AbstractVolume
 
class  AdaptiveMultiVertexFitter
 
class  AdaptiveMultiVertexFitterTestAlg
 
class  AdaptiveVertexFitter
 
class  AdaptiveVertexFitterTestAlg
 
class  AlignableTrackingVolume
 
class  AlignAlg
 
class  AlignmentDeviation
 An object decorating a track and holding degrees of freedom reflecting alignment accuracy. More...
 
class  AlignmentEffectsOnTrack
 Class to represent misalignments or 'discontinuities' on tracks These have a surface where the z axis is aligned with the direction of the translation, and the angle of the rotation is with respect to this. More...
 
class  AlignModule
 
class  AlignModuleTool
 
class  AlignPar
 
class  AlignResidualCalculator
 
class  AlignTrack
 
class  AlignTrackCollSplitter
 
class  AlignTrackCreator
 
class  AlignTrackDresser
 
class  AlignTrackPreProcessor
 
class  AlignTSOS
 
class  AlignVertex
 
class  AlMat
 
class  AlSpaMat
 
class  AlSymMat
 
class  AlSymMatBase
 
class  AlVec
 
class  AmbiguityProcessorBase
 
class  AnalyticalDerivCalcTool
 
class  AnnulusBounds
 
class  AnnulusBoundsPC
 Class that implements the asymmetric shape of the ITk strip endcap modules. More...
 
class  ApproachDescriptor
 
class  ApproachSurfaces
 
class  AreaExcluder
 
class  AssociatedMaterial
 
class  AtaSurface_p1
 
class  baseMagFld
 
class  basePropagator
 
class  BasicTruthCollectionFilter
 BasicTruthCollectionFilter accepts all valid map entries, as determined by the isValid() call on the HepMcParticleLink. More...
 
class  BasicValTrkParticleNtupleTool
 This validation tool writes basic information about Trk::TrackParticleBase into an ntuple;. More...
 
class  BeamspotVertexPreProcessor
 
struct  BevelledBoundaryIntersector
 
class  BevelledCylinderVolumeBoundaryAccessors
 
class  BevelledCylinderVolumeBounds
 
class  BinnedArray
 
class  BinnedArray1D
 
class  BinnedArray1D1D
 
class  BinnedArray1D1D1D
 
class  BinnedArray2D
 
class  BinnedArrayArray
 
class  BinnedLayerMaterial
 
class  BinnedLayerMaterial_p1
 
class  BinnedLayerMaterialCreator
 
class  BinnedMaterial
 
class  BinningData
 
class  BinUtility
 
class  BinUtility_p1
 
class  BinUtilityTest
 
class  BitField
 A class managing bits belonging to a range of bits. More...
 
class  BoundaryCheck
 
class  BoundaryCylinderSurface
 
class  BoundaryDiscSurface
 
class  BoundaryPlaneSurface
 
class  BoundarySubtractedCylinderSurface
 
class  BoundarySubtractedPlaneSurface
 
class  BoundarySurface
 
struct  BoundaryTrackParameters
 
class  BoundSurface_p1
 
class  BoundSurface_p2
 
class  BremPositionNtupleHelper
 Helper tool as module for the Trk::BasicValidationNtupleTool, writing information about track state with brem-like material effects. More...
 
struct  Cache
 
class  CaloCellSelectorLayerdR
 
class  CaloCellSelectorMinPerp
 
class  CaloCellSelectorNearestdR
 
class  CaloCellSelectorRoughdR
 
class  CaloCluster_OnTrack
 
class  CaloExtension
 Tracking class to hold the extrapolation from a particle from the ID to the muon system (or the other way around) Both the caloEntryLayerIntersection and the muonEntryLayerIntersection can return NULL if the particle failed to reach the layer. More...
 
class  CaloExtensionBuilderAlg
 This algorithm creates a calo extension collection and stores it in a Gaudi Gate named "ParticleCaloExtension" to be read by other algorithms. More...
 
class  CascadeEvent
 
struct  cascadeV
 
class  CETmaterial
 
class  Charged
 
class  Chi2TrackCompatibilityEstimator
 
struct  ClusterSplitProbability_p1
 
class  ClusterSplitProbabilityContainer
 Container to associate Cluster with cluster splitting probabilities. More...
 
class  ClusterSplitProbabilityContainer_p1
 
class  ClusterSplitProbabilityContainerCnv_p1
 
class  CollinearityConstraint
 
class  CombinedExtrapolatorTest
 
class  CombinedVolumeBounds
 
class  CommonTruthMatchWeights
 
class  CompactBinnedArray
 
class  CompactBinnedArray1D
 
class  CompactBinnedArray2D
 
class  CompareTwoTracks
 
class  ComparisonFunction
 
class  CompetingRIOsOnTrack
 Base class for all CompetingRIOsOnTack implementations, extends the common MeasurementBase. More...
 
class  CompetingRIOsOnTrack_p1
 
struct  ComponentParameters
 
class  CompoundLayer
 A class to represent complex geometries requiring a description using multiple surfaces. More...
 
class  CompoundLayerMaterial
 
class  CompoundLayerMaterial_p1
 
class  CompoundLayerMaterialCreator
 
class  CompressedLayerMaterial
 
class  CompressedLayerMaterial_p1
 
class  CompressedLayerMaterialCreator
 
class  ConeBounds
 
class  ConeBounds_p1
 
class  ConeLayer
 
class  ConeSurface
 
class  ConstrainedTrackProvider
 
class  ConstSharedPtrSpan
 
struct  CovarianceMatrix
 
class  CrossDistancesSeedFinder
 
class  CuboidVolumeBounds
 
class  CurvilinearParametersT
 
class  CurvilinearUVT
 
class  CylinderBounds
 
class  CylinderBounds_p1
 
struct  CylinderIntersector
 
class  CylinderLayer
 
class  CylinderLayerAttemptsCalculator
 
class  CylinderLayerSorterR
 
class  CylinderSurface
 
class  CylinderVolumeBoundaryAccessors
 
class  CylinderVolumeBounds
 
class  CylinderVolumeCreator
 
class  DAF_ValidationNtupleHelper
 
class  DecayInFlyTruthTrajectoryBuilder
 
class  DefParamPullPlots
 
class  DenseEnvironmentsAmbiguityProcessorTool
 
class  DenseEnvironmentsAmbiguityScoreProcessorTool
 
struct  DestBound
 
class  DetachedTrackingVolume
 
class  DetailedHitInfo
 
class  DetailedMuonPatternTruthBuilder
 
struct  DetailedTrackTruth_p0
 
class  DetailedTrackTruth_p1
 
class  DetailedTrackTruth_p2
 
class  DetailedTrackTruth_p3
 
class  DetailedTrackTruth_p4
 
class  DetailedTrackTruthBuilder
 
class  DetailedTrackTruthCollection_p0
 
class  DetailedTrackTruthCollection_p1
 
class  DetailedTrackTruthCollection_p2
 
class  DetailedTrackTruthCollection_p3
 
class  DetailedTrackTruthCollection_p4
 
class  DetAnnealingMaker
 
class  DetElementSurface
 
class  DetElementSurface_p1
 
class  DiamondBounds
 
class  DiamondBounds_p1
 
class  DigitizationModule
 
struct  DigitizationStep
 
class  DirectTrackNtupleWriterTool
 This validation tool writes basic information about Trk::Track into an ntuple; it is also the steering tool for all Trk::IValidationNtupleTool. More...
 
class  DiscBounds
 
class  DiscBounds_p1
 
class  DiscLayer
 
class  DiscLayerAttemptsCalculator
 
class  DiscLayerSorterZ
 
class  DiscSurface
 
class  DiscTrapezoidalBounds
 
class  DistanceSolution
 
class  DistortedSurface
 
class  DistortionDescriptor
 
class  DistributedKalmanFilter
 
class  DoubleTrapezoidVolumeBounds
 
class  DummyAnnealingMaker
 
class  DummySeedFinder
 
class  DummyVertexSelectionTool
 
class  DummyVertexSmoother
 
struct  EdgeCross
 
class  EfficiencyPlots
 
class  ElasticTruthTrajectoryBuilder
 
class  ElectronCombinedMaterialEffects
 
class  ElectronMaterialMixtureConvolution
 
class  ElementFraction
 
class  ElementTable
 
class  ElementTable_p1
 
class  EllipseBounds
 
class  EllipseBounds_p1
 Persistent representation of the transient Trk::EllipseBounds_p1 class. More...
 
class  EnergyLoss
 This class describes energy loss material effects in the ATLAS tracking EDM. More...
 
class  EnergyLoss_p1
 Persistent representation of class EnergyLoss.h. More...
 
class  EnergyLossExtrapolationValidation
 
class  EnergyLossMonitor
 
class  EnergyLossUpdator
 
class  ErrorMatrix
 
class  EstimatedBremOnTrack
 class holding information about momentum reduction and an additional noise term due to significant energy loss (bremsstrahlung) More...
 
class  EstimatedBremOnTrack_p1
 persistent representation of EstimatedBremOnTrack More...
 
class  EventCnvSuperTool
 Tool to handle TP conversions for Tracking EDM. More...
 
class  EventDataBase
 Base for a helper class to pass mutable storage to tools. More...
 
class  EventDataModelMonitor
 
class  EventPropertyNtupleTool
 
class  EventToTrackLinkNtupleTool
 
class  ExtendedVxCandidate
 
class  ExtendedVxCandidate_p1
 
class  ExtrapolationCache
 
class  ExtrapolationCell
 
class  ExtrapolationCode
 
class  ExtrapolationConfig
 
class  ExtrapolationEngine
 
class  ExtrapolationEngineTest
 
class  ExtrapolationMode
 enumeration to decode - for Extrapolation steering More...
 
class  ExtrapolationStep
 
class  ExtrapolationValidation
 
class  Extrapolator
 Extrapolation of track parameters and their associated covariances to destination surfaces. More...
 
class  ExtrapolatorComparisonTest
 
class  ExtrapolatorTest
 
class  ExtrLayerPlots
 
class  ExtrRegionPlots
 
class  FastVertexFitter
 This class implements a fast vertex fitting algorithm as proposed by P. More...
 
class  FitMatrices
 
struct  fitMatrix
 
class  FitMeasurement
 
class  FitParameters
 
class  FitProcedure
 
class  FitProcedureQuality
 
class  FitQuality
 Class to represent and store fit qualities from track reconstruction in terms of \(\chi^2\) and number of degrees of freedom. More...
 
class  FitQuality_p1
 
class  FitQualityImpl
 simple/trivial Implemenation class for fit the fit quality. It holds the same payload as FitQuality_p1. More...
 
class  FitQualityOnSurface
 
class  FitterStatusCode
 Status codes for track fitters. More...
 
struct  ForCFT
 
struct  ForVrtClose
 
class  FsmwMode1dFinder
 
class  FullIntersection
 Class extension to return the object, a represenation & the result. More...
 
class  FullLinearizedTrackFactory
 
class  FullVertexFitter
 This class implements a full vertex fitting algorithm as proposed by P. More...
 
class  GaussianDensityTestAlg
 
class  GaussianSumFitter
 
class  GaussianTrackDensity
 
class  GeantFollowerHelper
 
class  GeantFollowerMSHelper
 
class  GenParticleJet
 short class to organise MC generated particles as a jet. More...
 
class  GenParticleJetFinder
 Durham jet clustering algorithm for MC-truth tracks. More...
 
class  GeoMaterialConverter
 
class  GeometryAsciiDumper
 
class  GeometryBuilder
 
class  GeometryBuilderCond
 
class  GeometryJsonDumper
 
class  GeometryTTreeDumper
 
class  GeoShapeConverter
 
class  GlobalChi2AlignTool
 
class  GlobalChi2Fitter
 
class  GlueVolumesDescriptor
 
class  GMTreeBrowser
 
class  GsfExtrapolator
 
class  GXFMaterialEffects
 class that is similar to MaterialEffectsOnTrack, but has 'set' methods for more flexibility during track fitting More...
 
class  GXFTrackState
 
class  GXFTrajectory
 Internal representation of the track, used in the track fit. More...
 
class  HepSymMatrix_p1
 
struct  HitInfo
 
class  HitPositionNtupleHelper
 
class  HitResidualPlots
 
class  HitTypePlots
 
class  HomogeneousLayerMaterial
 
class  HomogeneousLayerMaterial_p1
 
class  IAlignableSurfaceProvider
 
class  IAlignModuleTool
 
class  IAlignResidualCalculator
 
class  IAlignTool
 
class  IAlignTrackCreator
 
class  IAlignTrackDresser
 
class  IAlignTrackPreProcessor
 
class  IAmbiTrackSelectionTool
 Interface for building new tracks using information about shared and already associated hits. More...
 
class  IApproachDescriptor
 
class  IBoundaryCheckTool
 
class  ICaloCellSelector
 abstract class that judge if a calo cell is to be included in a collection More...
 
class  ICaloTrackingVolumeBuilder
 
struct  IdentifiedIntersection
 
class  IdentifierExtractor
 Small utility to get hit Identifiers out of MeasurementBase (either in a vector or single). More...
 
class  IDerivCalcTool
 
class  IDetachedTrackingVolumeBuilder
 
class  IDetachedTrackingVolumeBuilderCond
 
class  IDetailedMuonPatternTruthBuilder
 Provides interface for tool to return a "detailed" track truth map. More...
 
class  IDetailedTrackTruthBuilder
 Provides interface for tool to return a "detailed" track truth map. More...
 
class  IDetailedTrackTruthSimilarity
 Interface for track-truth match quality estimator tools. More...
 
class  IDHitPlots
 
class  IDirectTrackNtupleWriter
 Interface to set up and write a TrkValidation ntuple so that it can be called for validation action 'inside' any tracking tool. More...
 
class  IDynamicLayerCreator
 
class  IEnergyLossMonitor
 
class  IEnergyLossUpdator
 
class  IEventCnvSuperTool
 
class  IEventPropertyNtupleTool
 
class  IExtendedTrackSummaryHelperTool
 
class  IExtendedTrackSummaryTool
 Interface for condensing Trk::Track properties and associated hits to a (non-fittable) foot print, the Trk::TrackSummary object. More...
 
class  IExtrapolationEngine
 
class  IExtrapolator
 
class  IFillNtupleTool
 
class  IGeantFollowerHelper
 
class  IGeantFollowerMSHelper
 
class  IGenParticleJetFinder
 provides the interface for determining truth jets (inside Tracking validation framework) More...
 
class  IGenParticleSelector
 provides the interface for tools to select generated particles More...
 
class  IGeometryBuilder
 
class  IGeometryBuilderCond
 
class  IGeometryManagerTool
 
class  IGeometryProcessor
 
class  IGlobalTrackFitter
 
class  IImpactPoint3dEstimator
 
class  IIntersector
 
class  IIsoTrackSelectorTool
 The abstract interface base class for track selector tools targeted at isoloation. More...
 
class  IJacobianManagerTool
 
class  IJetTruthNtupleTool
 
class  IKinematicConstraint
 
class  ILayerArrayCreator
 
class  ILayerBuilder
 
class  ILayerBuilderCond
 
class  ILayerMaterialAnalyser
 
class  ILayerMaterialCreator
 
class  ILayerMaterialManipulator
 
class  ILayerProvider
 
class  ILayerProviderCond
 
class  IMaterialAllocator
 
class  IMaterialEffectsEngine
 
class  IMaterialEffectsOnTrackProvider
 
class  IMaterialEffectsUpdator
 
class  IMaterialMapper
 
class  IMaterialMixtureConvolution
 
class  IMatrixTool
 
class  IMode1dFinder
 
class  IMode3dFinder
 
class  IMode3dInfo
 Auxillary interface for getting back additional data. More...
 
class  IModuleStepper
 
struct  ImpactParametersAndSigma
 
class  ImpactPlots
 
class  ImpactPoint3dEstimator
 
class  IMultipleScatteringUpdator
 
class  IMultiStateExtrapolator
 
class  INavigationEngine
 
class  INavigator
 
class  InDetHaloSelector
 
class  InDetPrimaryConversionSelector
 Modular concept to select truth particles for the truth tree filling and efficiency calculation, this one selects detectable tracks in the ID. More...
 
class  InDetReconstructableSelector
 Modular concept to select truth particles for the truth tree filling and efficiency calculation, this one selects detectable tracks in the ID. More...
 
class  InDetTrackSummary_p1
 
class  IndexedCrossDistancesSeedFinder
 
struct  IndexedMaterial
 
class  INeutralParticleParameterCalculator
 
class  InputLayerMaterialProvider
 
struct  Intersection
 
class  IntersectorWrapper
 
class  IntVec
 
class  InvalidBounds
 
class  InverseMultiMap
 
class  IParticleCaloExtensionTool
 Interface for extending Particles with calo intersections. More...
 
class  iPatFitter
 Main Fitter tool providing the implementation for the different fitting, extension and refitting use cases. More...
 
class  iPatGlobalFitter
 GlobalTrackFitter tool providing methods used during alignment. More...
 
class  IPatternParametersPropagator
 interface for track parameter propagation through the magnetic field, using the Trk::PatternTrackParameters data model for fast, internal use. More...
 
class  IPatternParametersUpdator
 Interface for updating Trk::PatternTrackParameters, the fast internal representation of track parameters in the (inner detector) pattern recognition tools, with a measurement. More...
 
class  IPCMat
 
class  IPCMatrixTool
 
class  IPixelToTPIDTool
 abstract interface for identification of particles based on More...
 
class  IPositionMomentumWriter
 
class  IPRD_AssociationTool
 Interface for handling the mapping between Trk::Track and Trk::PrepRawData. More...
 
class  IPRD_Provider
 Simple interface that takes an identifier and find the associated PRD from an Identifyable container. More...
 
class  IPRD_TruthTrajectoryBuilder
 The interface for the truth PRD trajectory finder. More...
 
class  IPRD_TruthTrajectoryManipulator
 The interface for the truth PRD trajectory manipulator. More...
 
class  IPRD_TruthTrajectorySelector
 The interface for the truth PRD trajectory selector. More...
 
class  IPRDtoTrackMapTool
 Interface for handling the mapping between Trk::Track and Trk::PrepRawData. More...
 
class  IPropagationEngine
 
class  IPropagator
 
class  IPVTrackCompatibilityEstimator
 
class  IResidualPullCalculator
 provides the interface for tools which calculate residuals and pulls. More...
 
class  IRIO_OnTrackCreator
 Interface class for transforming Trk::PrepRawData to Trk::RIO_OnTrack using a local track hypothesis. More...
 
class  ISegmentConverterTool
 Interface for tool to convert a Trk::Segment object into a Trk::Track. More...
 
class  ISurfaceBuilder
 
class  ITimedExtrapolator
 
class  ITimedMatEffUpdator
 
class  ITrackAmbiguityProcessorTool
 Interface for resolving hit assoication ambiguities in a given track collection. More...
 
class  ITrackAmbiguityScoreProcessorTool
 Interface for resolving hit association ambiguities in a given track collection. More...
 
class  ITrackCollectionProvider
 
class  ITrackDiff
 
class  ITrackFitter
 
class  ITrackHoleSearchTool
 interface for searching, counting and adding holes on tracks anywhere in ATLAS. More...
 
class  ITrackingGeometrySvc
 
class  ITrackingVolumeArrayCreator
 
class  ITrackingVolumeBuilder
 
class  ITrackingVolumeCreator
 
class  ITrackingVolumeHelper
 
class  ITrackingVolumesSvc
 
class  ITrackLink
 
class  ITrackMatchingTool
 The abstract interface base class for Track matching tools. More...
 
class  ITrackParticleCreatorTool
 Interface for constructing TrackParticles from complete tracks. More...
 
class  ITrackScoringTool
 Interface for tool to return a score from a given track. More...
 
class  ITrackSelectorTool
 The abstract interface base class for track selector tools. More...
 
class  ITrackSlimmingTool
 Interface for constructing 'slimmed' Tracks from complete tracks. More...
 
class  ITrackSummaryHelperTool
 Interface for structuring the summary creation into sub-detector specific tools. More...
 
class  ITrackSummaryTool
 Interface for condensing Trk::Track properties and associated hits to a (non-fittable) foot print, the Trk::TrackSummary object. More...
 
class  ITrackTimingTool
 Interface for providing time information for a track or track particle. More...
 
class  ITrackToVertexIPEstimator
 
class  ITrackTruthClassifier
 provides the interface for tools which classify gen particles More...
 
class  ITrackValidationNtupleTool
 
class  ITrkAlignDBTool
 
class  ITrkAlignmentDeviationTool
 Interface for tool to add alignmenties to a global chi2 fit. More...
 
class  ITrkDistanceFinder
 
class  ITrkEventCnvTool
 
class  ITrkMaterialProviderTool
 Interface for tool to add alignmenties to a global chi2 fit. More...
 
class  ITrkObserverTool
 
class  ITrkVKalVrtFitter
 
class  ITRT_ElectronPidTool
 abstract interface for identification of electrons based on information from the inner detector track (mainly TRT) More...
 
class  ITruthNtupleTool
 
class  ITruthToTrack
 ITruthToTrack is an interface to create Trk::TrackParameters from a HepMC::GenParticle. More...
 
class  ITruthTrackBuilder
 The interface for the truth track finder. More...
 
class  ITruthTrajectoryBuilder
 
class  IUpdator
 Set of interfaces for methods operating on track states, mainly for Kalman filtering. More...
 
class  IValidationNtupleHelperTool
 provides the interface for validation helper tools which write special information about generated tracks. More...
 
class  IValidationNtupleTool
 
class  IVertexAnalyticSeedFinder
 
class  IVertexAnnealingMaker
 
class  IVertexCascadeFitter
 
class  IVertexCollectionSortingTool
 Interface class for vertex Container Sorting. More...
 
class  IVertexFitter
 
class  IVertexLinearizedTrackFactory
 
class  IVertexMapper
 
class  IVertexMergingTool
 Interface class for merging compatible vertices in a single collection. More...
 
class  IVertexSeedFinder
 
class  IVertexSelectionTool
 Interface class for vertex Container Sorting. More...
 
class  IVertexSmoother
 
class  IVertexTrackCompatibilityEstimator
 
class  IVertexTrackDensityEstimator
 
class  IVertexTrackUpdator
 
class  IVertexUpdator
 
class  IVertexWeightCalculator
 
class  IVKalState
 
class  JacobianCartesianToPerigee
 Jacobian from cartesian parameters \( (p_x, p_y, p_z, E, x, y, z) \) to perigee parameters \( (d_0, z_0, \phi_0, \theta, q/p) \). More...
 
class  JacobianCartesianToPolar
 
class  JacobianCotThetaPtToThetaP
 
class  JacobianCurvilinearToLocal
 
class  JacobianLocalAnglesPhiTheta
 
class  JacobianLocalToCurvilinear
 
class  JacobianPerigeeToCartesian
 Jacobian for transforming perigee track parameters \((d_0, z_0, \phi_0, \theta, q/p)\) to the cartesian frame \((p_x,p_y,p_z,E,x,y,z)\). More...
 
class  JacobianPhiThetaLocalAngles
 
class  JacobianPhiThetaQoverPToPxyz
 
class  JacobianPolarToCartesian
 
class  JacobianPxyzToPhiThetaQoverPcartesian
 Jacobian in cartesian coordinates for the transformation of momentum in Cartesian coordinates \( (px,py,pz,charge)\) to momentum in polar cordinates \((\phi,\theta,QoverP)\). More...
 
class  JacobianPxyzToPhiThetaQoverPspherical
 Jacobian in spherical coordinates for the transformation of momentum in Cartesian coordinates \( (px,py,pz,charge)\) to momentum in spherical cordinates \((\phi,\theta,QoverP)\). More...
 
class  JacobianThetaPToCotThetaPt
 
class  JetFitterHelper
 Februar 2007 (c) Atlas Detector Reconstruction Software. More...
 
class  JetFitterInitializationHelper
 Februar 2007 (c) Atlas Detector Reconstruction Software. More...
 
class  JetFitterRoutines
 Februar 2007 (c) Atlas Detector Reconstruction Software. More...
 
class  JetTruthNtupleTool
 Tool to fill basic information about truth jets, establishing track-to-jet association indices with the truth ntuple tree. More...
 
struct  JetVtxParamDefsAccessor
 
struct  JetVtxParamDefsStrings
 
class  KalmanUpdator
 Implementation of Trk::IUpdator based on gain formalism and Eigen. More...
 
class  KalmanUpdator_xk
 
class  KalmanUpdatorAmg
 Implementation of Trk::IUpdator based on gain formalism and Eigen mathlib. More...
 
class  KalmanUpdatorSMatrix
 Implementation of Trk::IUpdator based on gain formalism and SMatrix mathlib. More...
 
class  KalmanVertexOnJetAxisSmoother
 ATLAS Reconstruction Software - (C) 2005 - 2007. More...
 
class  KalmanVertexOnJetAxisUpdator
 ATLAS Reconstruction Software - (C) 2005 - 2007. More...
 
class  KalmanVertexTrackUpdator
 
class  KalmanVertexUpdator
 
class  KalmanWeightUpdator
 Implementation of Trk::IUpdator using the weight formalism. More...
 
struct  KDOP
 
class  Layer
 
class  LayerArrayCreator
 
class  LayerAttemptsCalculator
 
class  LayerIndex
 
class  LayerMaterialAnalyser
 
class  LayerMaterialConverter
 
class  LayerMaterialInspector
 
class  LayerMaterialMap
 
class  LayerMaterialMap_p1
 
class  LayerMaterialMap_tlp1
 
class  LayerMaterialProperties
 
class  LayerMaterialProvider
 
class  LayerMaterialRecord
 
class  LayerProvider
 
class  LayerProviderCond
 
class  LayerProviderImpl
 
struct  LayerTreeObject
 
class  LinearizedTrack
 
struct  LineIntersection2D
 
class  LineSaggingDescriptor
 
class  LinkToTrack
 AUTO - An Undocumented Tracking Object. More...
 
class  LinkToTrackParticleBase
 
class  LinkToXAODNeutralParticle
 Element link to XAOD NeutralParticle. More...
 
class  LinkToXAODTrackParticle
 Element link to XAOD TrackParticle. More...
 
class  LocalDirection
 represents the three-dimensional global direction with respect to a planar surface frame. More...
 
class  LocalDirection_p1
 
class  LocalParameters
 
class  LocalParameters_p1
 
class  LocalPosition_p1
 
class  MagneticFieldProperties
 
struct  MappedVertex
 
class  MappingTest
 
class  MassConstraint
 Concrete implementation of Trk::IKinematicConstraint to formulate a mass constraint in kinematic vertex fits. More...
 
struct  MatchCompareByProbability
 This functor, used with TruthInverters, selects rec->mc truth map matches with higher associated probabilities. More...
 
class  Material
 
class  Material_p1
 
class  MaterialAllocator
 Main Fitter tool providing the implementation for the different fitting, extension and refitting use cases. More...
 
struct  MaterialComposition
 
class  MaterialEffectsBase
 base class to integrate material effects on Trk::Track in a flexible way. More...
 
class  MaterialEffectsBase_p1
 
class  MaterialEffectsEngine
 
class  MaterialEffectsOnTrack
 represents the full description of deflection and e-loss of a track in material. More...
 
class  MaterialEffectsOnTrack_p1
 
class  MaterialEffectsOnTrack_p2
 persistent representation v2 of MaterialEffectsOnTrack More...
 
class  MaterialEffectsUpdator
 
class  MaterialInteraction
 
class  MaterialLayer
 
class  MaterialManipulation
 
class  MaterialMapper
 
class  MaterialMapping
 
class  MaterialOnTrackValidation
 
class  MaterialProperties
 
class  MaterialProperties_p1
 
class  MaterialStep
 
class  MaterialStep_p1
 
class  MaterialStepCollection_p1
 
class  MaterialValidation
 
struct  MatrixNtupleBranch
 This class provides a simple interface to write Matricis to a root tree The size of the Matrix cannot exceed COLMAX x ROWMAX. More...
 
class  MatrixTool
 
class  MCTrueSeedFinder
 
class  MeasuredAtaSurface_p1
 
class  MeasuredPerigee_p1
 
class  MeasurementBase
 
class  MeasurementBaseComparisonFunction
 Class implementing a comparison function for sorting MeasurementBase objects. More...
 
class  MeasurementProcessor
 
class  MeasurementTypeID
 classifies a MeasurementBase into one of the known inherited flavours or one of the detector types for ROT/CompROT. More...
 
class  MeasurementVectorNtupleTool
 This validation tool writes basic information about Trk::Track into an ntuple; it is also the steering tool for all Trk::IValidationNtupleHelperTool. More...
 
class  MemoryLogger
 
class  Mode3dFromFsmw1dFinder
 
class  Mode3dTo1dFinder
 
class  MSConstraintTracksProvider
 
class  MSHitDiffPlots
 
class  MSHitPlots
 
class  MultiComponentStateOnSurface
 
class  MultipleScatteringUpdator
 
class  MuonTrackSummary
 Detailed track summary for the muon system Give access to hit counts per chamber. More...
 
class  MuonTrackSummary_p1
 
class  MuonTrackSummary_p2
 
class  MvfFitInfo
 
class  MVFVxCandidate
 
class  MVFVxCandidate_p1
 
class  MVFVxContainer_p1
 
class  MVFVxContainer_tlp1
 
class  MVFVxTrackAtVertex
 
class  MVFVxTrackAtVertex_p1
 
class  NavBinnedArray1D
 
struct  NavigationCell
 useful struct for a single navigation cell More...
 
class  NavigationLayer
 
class  Navigator
 
class  NeuralNetworkToHistoTool
 
class  Neutral
 
class  NeutralParticleParameterCalculator
 
class  NeutralTrack
 
class  NewtonTrkDistanceFinder
 
class  NIMatEffUpdator
 
class  NoBounds
 
class  NoiseOnSurface
 
class  ObjectAccessor
 
class  ObjectCounter
 Helper to enable counting number of instantiations in debug builds. More...
 
class  ObjectIntersection
 class extensions to return also the object More...
 
class  OverlapDescriptor
 
class  PairOfVxVertexOnJetAxis
 
struct  ParamDefsAccessor
 
struct  ParamDefsStrings
 
class  ParametersBase
 
class  ParametersCommon
 
struct  ParametersNextVolume
 
class  ParametersT
 Dummy class used to allow special convertors to be called for surfaces owned by a detector element. More...
 
class  ParamPlots
 
struct  ParamsNextVolume
 
struct  PartialMassConstraint
 
class  ParticleCaloExtensionTool
 
struct  PathLimit
 
class  PatternTrackParameters
 
class  PCutTruthCollectionFilter
 This functor accepts valid entries that have associated probability>=probabilityCut. More...
 
class  PdgToParticleHypothesis
 
class  Perigee_p1
 
class  Perigee_p2
 
class  PerigeeParametersNtupleTool
 Explain... More...
 
class  PerigeeSurface
 
class  PGraph
 
class  PlanarModuleStepper
 
class  PlaneLayer
 
class  PlaneLayerSorterX
 
class  PlaneLayerSorterY
 
class  PlaneLayerSorterZ
 
class  PlaneSurface
 
class  PointOnTrack
 
struct  PolygonCache
 
class  PositionMomentumWriter
 
class  PRD_AssociationTool
 Concrete Implementation of the IPRD_AssociationTool interface. More...
 
class  PRD_MultiTruthCollection_p1
 
class  PRD_MultiTruthCollection_p2
 
class  PRD_MultiTruthCollection_p3
 
class  PRD_MultiTruthCollection_p4
 
class  PRD_TruthTrajectory
 
class  PRD_TruthTrajectoryBuilder
 
class  PRDtoTrackMap
 
class  PRDtoTrackMapTool
 Concrete Implementation of the IPRD_AssociationTool interface. More...
 
class  PrepRawData
 
class  PrepRawData_p1
 
class  PrepRawDataCollection
 
class  PrepRawDataCollectionCopyConstructorCalled
 
class  PrepRawDataComparisonFunction
 Class providing comparison function, or relational definition, for PrepRawData. More...
 
class  PrepRawDataContainer
 
class  PrepRawDataUndefinedVariable
 class thrown in the event of an variable not being defined. More...
 
class  PreselCaloExtensionBuilderAlg
 Build the calo extensions for a preselected collection of tracks. More...
 
class  PrimaryTruthClassifier
 modular concept to define certain categories of truth particles, this one labels primary, secondary and truncated tracks. More...
 
class  PrismVolumeBounds
 
class  ProjectionMatricesSet
 the matrices to access the variably-dimensioned local parameters and map them to the defined five track parameters. More...
 
class  PropagationEngine
 
class  PropResultRootWriterSvc
 
class  PseudoMeasurementOnTrack
 Class to handle pseudo-measurements in fitters and on track objects. More...
 
class  PseudoMeasurementOnTrack_p1
 
class  PseudoMeasurementOnTrack_p2
 
class  RandomSurfaceBuilder
 
struct  RealLinearEquation
 
struct  RealQuadraticEquation
 
class  RecMomentumQualityValidation
 
class  RecoInfoPlots
 
class  RectangleBounds
 
class  RectangleBounds_p1
 
class  RectangularSegmentation
 
class  RecursiveGeometryProcessor
 
class  RecVertex
 Trk::RecVertex inherits from Trk::Vertex. More...
 
class  RecVertex_p1
 
class  RecVertex_p2
 
class  RecVertexPositions
 
class  ReFitTrack
 Algorithm using an instance of a ITrackFitter to refit the tracks of a given track collection. More...
 
class  ReFitTrackWithTruth
 Algorithm using an instance of a ITrackFitter to refit the tracks of a given pseudotrack collection after changing the cluster position to the truth particle position. More...
 
class  Residual
 
class  ResidualPull
 This class containes residual and pull information. More...
 
class  ResidualPullCalculator
 AlgTool to calculate the residual and pull of a measurement and the related track state independently of the detector type. More...
 
class  ResidualValidationNtupleHelper
 
class  ResolutionPlots
 
class  RiddersAlgorithm
 
class  RIO_OnTrack
 
class  RIO_OnTrack_p1
 
class  RIO_OnTrack_p2
 
class  RIO_OnTrackCreator
 general tool to converts clusters or driftcircles (Trk::PrepRawData) to fully calibrated hits (Trk::RIO_OnTrack) further use in track fits. More...
 
class  RoT_Extractor
 Small utility to cast MeasurementBase (either in a vector or single) into RIO_OnTrack. More...
 
class  RotatedDiamondBounds
 
class  RotatedDiamondBounds_p1
 
class  RotatedTrapezoidBounds
 
class  RotatedTrapezoidBounds_p1
 
class  RungeKuttaIntersector
 
class  RungeKuttaPropagator
 
class  SaggedLineSurface
 
class  ScatteringAngleOnTrack_p1
 
class  ScatteringAngles
 represents a deflection of the track caused through multiple scattering in material. More...
 
class  SecVertexMergingTool
 
class  SeedNewtonTrkDistanceFinder
 
class  Segment
 
class  Segment_p1
 
class  Segmentation
 
class  SegmentCollection_p1
 
class  SegmentCollection_tlp1
 
class  SegmentCollection_tlp2
 
class  SegmentCollection_tlp3
 
class  SegmentCollection_tlp4
 
class  SelectedTracksInJet
 
class  SelectEventNumber
 
class  SequentialVertexFitter
 
class  SequentialVertexSmoother
 
class  ShiftingDerivCalcTool
 
class  SimpleAmbiguityProcessorTool
 
class  SimplePolygonBrepVolumeBounds
 
struct  sincosCache
 
class  SingleTrackDiffAlg
 
class  SlidingCylinderSurface
 
class  SlidingDiscSurface
 
class  SolenoidalIntersector
 
class  SolenoidParametrization
 
class  SolenoidParametrizationCondAlg
 
class  SpacePoint
 
class  SpaceTimePoint
 SpaceTimePoint. More...
 
class  SpaceTimePointBase
 SpaceTimePointBase. More...
 
class  StaticEngine
 
class  StaticNavigationEngine
 
class  StatTruthCollectionFilter
 Works like PCutTruthCollectionFilter, but also gathers some stats about the collections. More...
 
class  STEP_Propagator
 
class  StepEngine
 
class  StraightLineIntersector
 
class  StraightLineSurface
 
class  SubDetHitStatistics_p0
 
class  SubtractedCylinderLayer
 
class  SubtractedCylinderSurface
 
class  SubtractedDiscSurface
 
class  SubtractedPlaneLayer
 
class  SubtractedPlaneSurface
 
class  SubtractedVolumeBounds
 
class  SumPtVertexWeightCalculator
 
class  Surface
 
class  Surface_p1
 
class  Surface_p2
 
class  SurfaceBounds
 
class  SurfaceDeleter
 
class  SurfaceIntersectionTest
 
struct  SurfaceNtupleBranch
 This class provides a simple interface to write Surfaces to a root tree. More...
 
class  SurfacePtrHolderImpl
 
class  SurfacePtrHolderImplBase
 
class  SurfacePtrHolderImplDetEl
 
struct  SurfaceTreeObject
 
class  SurfaceUniqHolderImpl
 
struct  TargetSurface
 target surface info ( navigation ) More...
 
class  TargetSurfaces
 
class  temp
 
class  TimedExtrapolator
 
struct  TimeLimit
 
class  Track
 The ATLAS Track class. More...
 
class  Track_p1
 
class  Track_p12
 
class  Track_p2
 
class  Track_p4
 
class  TrackCollection_p1
 
class  TrackCollection_tlp1
 
class  TrackCollection_tlp2
 
class  TrackCollection_tlp3
 
class  TrackCollection_tlp4
 
class  TrackCollection_tlp5
 
class  TrackCollection_tlp6
 
class  TrackCollection_tlp7
 
class  TrackCollectionMerger
 Class-algorithm for track collection merging and removalof potential duplicate tracks. More...
 
class  TrackCollectionProvider
 
class  TrackDensitySeedFinder
 
class  TrackDiff
 
class  TrackError
 class returned (by exception) in case of an error in Track More...
 
class  TrackInfo
 Contains information about the 'fitter' of this track. More...
 
class  TrackInfo_p1
 
class  TrackInformationNtupleTool
 
class  TrackingGeometry
 
class  TrackingGeometryCondAlg
 
class  TrackingGeometryCondAlgTest
 
class  TrackingGeometrySvc
 
class  TrackingGeometryTest
 
class  TrackingVolume
 
class  TrackingVolumeArrayCreator
 
class  TrackingVolumeDisplayer
 
class  TrackingVolumeHelper
 
class  TrackingVolumeManipulator
 
class  TrackingVolumesSvc
 
class  TrackJet
 short class to organise reconstructed Trk::Track objects as a jet. More...
 
struct  TrackMatchingProperties
 
class  TrackParameters_p1
 
class  TrackParameters_p2
 
class  TrackParametersIdentificationHelper
 helper class to get the TrackParametersIdentifier from a TrackParameters More...
 
class  TrackParametersIdHelper
 helper class to encode and decode a TrackParametersIdentifier More...
 
class  TrackParticleBase
 
class  TrackParticleBase_p1
 
class  TrackParticleCreatorTool
 
class  TrackPositionNtupleHelper
 This validation tool writes information about track positions. More...
 
class  TrackPtr
 
class  TrackRoad
 Encapsulates the information required by the find() method of the muon segment makers. More...
 
class  TrackScoringTool
 Concrete implementation of the ITrackScoringTool pABC. More...
 
class  TrackSegment
 
class  TrackSegment_p1
 
class  TrackSelectionProcessorTool
 
class  TrackSlimmer
 
class  TrackSlimmingTool
 
class  TrackStateData
 
class  TrackStateOnSurface
 represents the track state (measurement, material, fit parameters and quality) at a surface. More...
 
class  TrackStateOnSurface_p1
 
class  TrackStateOnSurface_p2
 
class  TrackStateOnSurface_p3
 
class  TrackStateOnSurfaceComparisonFunction
 Class providing comparison function, or relational definition, for sorting MeasurementBase objects. More...
 
class  TrackSummary
 A summary of the information contained by a track. More...
 
class  TrackSummary_p1
 
class  TrackSummary_p2
 
class  TrackSummaryTool
 
class  TrackSurfaceIntersection
 
class  TrackToVertexIPEstimator
 A class estimating the transverse impact parameter d0 and its error of a given track wrt to the reconstructed vertex. More...
 
class  TrackToVtxLink
 
class  TrackTruthCollection_p1
 
class  TrackTruthCollection_p2
 
class  TrackTruthCollection_p3
 
class  TrackTruthKey
 
struct  TrackTruthKey_p0
 
class  TrackValidationNtupleWriter
 
struct  TransformNtupleBranch
 This class provides a simple interface to write Transforms to a root tree. More...
 
class  TransportJacobian
 
class  TrapezoidBounds
 
class  TrapezoidBounds_p1
 
class  TrapezoidSegmentation
 
class  TrapezoidVolumeBounds
 
class  TriangleBounds
 
class  TriangleBounds_p1
 Persisent representation of the transient TriangleBounds class. More...
 
class  Trk2DDistanceFinder
 
class  Trk2dDistanceSeeder
 
class  TrkAlignDBTool
 
class  TrkAmbiguityScore
 
class  TrkAmbiguitySolver
 Algorithm does ambiguity processing This algorithm uses the TrkAmbiguityProcessorTool AlgTool to resolve ambiguities in the passed tracks. More...
 
class  TrkBaseNode
 
class  TrkClusterNode
 
class  TrkCollectionAliasAlg
 
class  TrkDetDescrTPCnvTest
 
class  TrkDetDescrUnitTestBase
 
class  TrkDetElementBase
 
class  TrkDistanceFinderNeutralCharged
 
class  TrkDistanceFinderNeutralNeutral
 
class  TrkEndCapClusterNode
 
class  TrkExUnitTestBase
 
class  TrkFilteringNode1D
 
class  TrkFilteringNode2D
 
class  TrkMaterialProviderTool
 
class  TrkObserverTool
 
class  TrkPixelNode
 
class  TrkPlanarSurface
 
class  TrkPriVxPurity
 
class  TrkPriVxPurityTool
 
class  TrkTrackDict_Dummy
 
class  TrkTrackState
 
class  TrkTrtNode
 
class  TrkV0VertexFitter
 This class implements a vertex fitting algorithm optimised for V0 finding. More...
 
class  TrkVKalVrtFitter
 
class  TrkVKalVrtFitterTestAlg
 
class  TrueVertexDistanceWeightCalculator
 
class  TruthInfoPlots
 
class  TruthMatchRatio
 
class  TruthMatchTanimoto
 
class  TruthNtupleTool
 Tool to fill basic information about the truth record. More...
 
class  TruthToTrack
 
class  TruthTrackBuilder
 
class  TruthTrackCreation
 Algorithm to convert PRD multi truth maps into a track collection. More...
 
class  TruthTrackRecordToTrack
 
struct  TruthTrajectory_p0
 
class  TruthTrajectory_p1
 
class  TruthTrajectory_p2
 
class  TruthTrajectory_p3
 
class  TruthTrkExtrapolationPlots
 
class  TruthVertexSelectionTool
 
class  TwoTracks
 
class  TwoTrackVerticesInJet
 
class  TWRK
 
class  V0Candidate
 
class  V0Candidate_p1
 
class  V0Container_p1
 
class  V0Container_tlp1
 
class  V0Container_tlp2
 
class  V0Hypothesis
 
class  V0Hypothesis_p1
 
class  V0Tools
 
class  ValidationTrackTruthData
 
struct  ValueStore
 
struct  Vect3DF
 
struct  VectMOM
 
struct  VectorNtupleBranch
 This class provides a simple interface to write Vectors to a root tree The size of the vectors cannot exceed ROWMAX. More...
 
class  Vertex
 
class  Vertex_p1
 
class  VertexCollectionSortingTool
 
class  VertexMapper
 
class  VertexMergingTool
 
class  VertexOnTrack
 
class  VertexOnTrack_p1
 
class  VertexPositions
 VertexPositions class to represent and store a vertex. More...
 
class  VertexSeedFinderTestAlg
 
class  VKalAtlasMagFld
 
class  VKalExtPropagator
 
class  vkalMagFld
 
class  vkalPropagator
 
class  VKalVrtControl
 
class  VKalVrtControlBase
 
class  VKConstraintBase
 
class  VKMassConstraint
 
class  VKPhiConstraint
 
class  VKPlaneConstraint
 
class  VKPointConstraint
 
class  VKThetaConstraint
 
class  VKTrack
 
class  VKVertex
 
class  Volume
 
class  VolumeBounds
 
class  VolumeConverter
 
class  VolumeExcluder
 
struct  VolumeExit
 
class  VolumeIntersection
 
class  VolumeLink
 
struct  VolumePart
 
struct  VolumeSpan
 
struct  VolumeTreeObject
 
class  VxCandidate
 
class  VxCandidate_p1
 
class  VxCascadeInfo
 
class  VxClusteringTable
 
class  VxContainer_p1
 
class  VxContainer_tlp1
 
class  VxContainer_tlp2
 
class  VxJetCandidate
 
class  VxJetFitterDebugInfo
 
class  VxJetFitterVertexInfo
 
class  VxSecVertexInfo
 
class  VxSecVKalVertexInfo
 
class  VxTrackAtVertex
 The VxTrackAtVertex is a common class for all present TrkVertexFitters The VxTrackAtVertex is designed to store the information about the trajectory fitted to the VxCandidate. More...
 
class  VxTrackAtVertex_p1
 
class  VxTrackAtVertex_p2
 
class  VxVertexOnJetAxis
 VxVertexOnJetAxis inherits from Vertex. More...
 
class  WeightMatrix_p1
 
class  Z0PVTrackCompatibilityEstimator
 Z0PVTrackCompatibilityEstimator.h. More...
 
class  ZScanSeedFinder
 

Typedefs

typedef std::pair< SharedObject< Surface >, Amg::Vector3DSurfaceOrderPosition
 
using TrackingVolumeOrderPosition = std::pair< std::shared_ptr< TrackingVolume >, Amg::Vector3D >
 
typedef std::pair< long int, long int > indices
 
typedef std::map< indices, double > datamap
 
typedef datamap::iterator mapiterator
 
typedef datamap::const_iterator const_mapiterator
 
typedef std::vector< AlignModule * > AlignModuleList
 
typedef boost::multi_array< AlignPar *, 2 > AlignParList
 
typedef boost::array< boost::multi_array_types::index, 2 > AlignParListDims
 
typedef DataVector< AlignTSOSAlignTSOSCollection
 
typedef DataVector< AlignTSOS >::const_iterator AlignTSOSIt
 
typedef std::pair< AlignModule *, std::vector< Amg::VectorX > > AlignModuleDerivatives
 
typedef std::vector< AlignTrack ** > AlignTrackCollection
 
typedef std::vector< AlignTrack ** >::const_iterator AlignTrackIt
 
typedef std::pair< const AlignModule *, std::vector< Amg::VectorX > > AlignModuleVertexDerivatives
 
typedef std::pair< Amg::Vector3D, const Trk::TrackingVolume * > PositionAtBoundary
 
using MaterialComponent = std::pair< Material, double >
 
using VolumePartVec = std::vector< VolumePart >
 
typedef BinnedArray< LayerLayerArray
 
typedef std::vector< std::vector< const MaterialProperties * > > MaterialPropertiesMatrix
 
using TrackingVolumeArray = BinnedArray< TrackingVolume >
 
typedef std::pair< SharedObject< const Layer >, Amg::Vector3DLayerOrderPosition
 
template<class T >
using BinnedArraySpan = std::span< T >
 
typedef std::map< Trk::LayerIndex, int > LayerIndexSampleMap
 
using ThreeObjectsAccessor = std::array< ObjectAccessor::value_type, 3 >
 
using FourObjectsAccessor = std::pair< std::array< ObjectAccessor::value_type, 4 >, bool >
 
using FiveObjectsAccessor = std::array< ObjectAccessor::value_type, 5 >
 
using SixObjectsAccessor = std::array< ObjectAccessor::value_type, 6 >
 
using EightObjectsAccessor = std::array< ObjectAccessor::value_type, 8 >
 
template<class T >
using SharedObject = std::shared_ptr< T >
 
typedef std::pair< const Material *, int > IdentifiedMaterial
 
typedef std::vector< unsigned char > ValueVector
 
typedef std::vector< ValueVectorValueMatrix
 
template<class T >
using ArraySpan = std::span< T >
 
typedef std::map< BoundarySurfaceFace, std::vector< TrackingVolume * > >::iterator GlueVolumeIterator
 
typedef std::map< BoundarySurfaceFace, std::vector< TrackingVolume * > >::const_iterator GlueVolumeConstIterator
 
typedef ObjectIntersection< SurfaceSurfaceIntersection
 
typedef BinnedArray< SurfaceSurfaceArray
 
typedef DataVector< Trk::LayerMaterialPropertiesLayerMaterialCollection
 
typedef std::vector< const MaterialProperties * > MaterialPropertiesVector
 Useful typedefs. More...
 
typedef DataVector< Trk::MaterialStepMaterialStepCollection
 
template<class T >
using LayerIntersection = FullIntersection< Layer, Surface, T >
 
template<class T >
using BoundaryIntersection = FullIntersection< BoundarySurface< TrackingVolume >, Surface, T >
 
typedef SurfaceUniquePtrT< Trk::SurfaceSurfaceUniquePtr
 
typedef SurfaceUniquePtrT< const Trk::SurfaceConstSurfaceUniquePtr
 
using ConeSurfacePtrHolder = SurfacePtrHolderImpl< ConeSurface >
 
using CylinderSurfacePtrHolder = SurfacePtrHolderImpl< CylinderSurface >
 
using DiscSurfacePtrHolder = SurfacePtrHolderImpl< DiscSurface >
 
using PerigeeSurfacePtrHolder = SurfacePtrHolderImpl< PerigeeSurface >
 
using PlaneSurfacePtrHolder = SurfacePtrHolderImpl< PlaneSurface >
 
using StraightLineSurfacePtrHolder = SurfacePtrHolderImpl< StraightLineSurface >
 
using SurfacePtrHolder = SurfacePtrHolderImpl< Surface >
 
using ConeSurfaceUniqHolder = SurfaceUniqHolderImpl< ConeSurface >
 
using CylinderSurfaceUniqHolder = SurfaceUniqHolderImpl< CylinderSurface >
 
using DiscSurfaceUniqHolder = SurfaceUniqHolderImpl< DiscSurface >
 
using PerigeeSurfaceUniqHolder = SurfaceUniqHolderImpl< PerigeeSurface >
 
using PlaneSurfaceUniqHolder = SurfaceUniqHolderImpl< PlaneSurface >
 
using StraightLineSurfaceUniqHolder = SurfaceUniqHolderImpl< StraightLineSurface >
 
using SurfaceUniqHolder = SurfaceUniqHolderImpl< Surface >
 
using SurfacePtrHolderDetEl = Trk::SurfacePtrHolderImplDetEl< Surface >
 
typedef std::pair< size_t, size_t > DigitizationCell
 
typedef std::pair< double, ParamDefsDefinedParameter
 
template<class S >
using SurfaceUniquePtrT = std::unique_ptr< S, SurfaceDeleter< S > >
 
typedef float TrackScore
 
typedef std::multimap< const Trk::Track *, std::pair< const Trk::Track *, Trk::TrackMatchingProperties > > TrackMatchMultiMap
 
typedef ComparisonFunction< TrackParametersTrkParametersComparisonFunction
 
using NeutralParameters = ParametersBase< 5, Neutral >
 
using NeutralCurvilinearParameters = CurvilinearParametersT< 5, Neutral, PlaneSurface >
 
using NeutralAtaCone = ParametersT< 5, Neutral, ConeSurface >
 
using NeutralAtaCylinder = ParametersT< 5, Neutral, CylinderSurface >
 
using NeutralAtaDisc = ParametersT< 5, Neutral, DiscSurface >
 
using NeutralPerigee = ParametersT< 5, Neutral, PerigeeSurface >
 
using NeutralAtaPlane = ParametersT< 5, Neutral, PlaneSurface >
 
using NeutralAtaStraightLine = ParametersT< 5, Neutral, StraightLineSurface >
 
using MultiComponentState = std::vector< ComponentParameters >
 
using TrackParameters = ParametersBase< 5, Charged >
 
using CurvilinearParameters = CurvilinearParametersT< 5, Charged, PlaneSurface >
 
using AtaCone = ParametersT< 5, Charged, ConeSurface >
 
using AtaCylinder = ParametersT< 5, Charged, CylinderSurface >
 
using AtaDisc = ParametersT< 5, Charged, DiscSurface >
 
using Perigee = ParametersT< 5, Charged, PerigeeSurface >
 
using AtaPlane = ParametersT< 5, Charged, PlaneSurface >
 
using AtaStraightLine = ParametersT< 5, Charged, StraightLineSurface >
 
typedef VertexType TrackParticleOrigin
 
typedef DataVector< TrackParticleBaseTrackParticleBaseCollection
 
typedef std::multimap< Trk::PrepRawData *, RIO_OnTrack * > RIOtoROT_Multimap
 
typedef DataVector< Trk::TrackRoadTrackRoadCollection
 
typedef DataVector< Trk::SegmentSegmentCollection
 
using TrackStates = DataVector< const Trk::TrackStateOnSurface >
 
typedef std::multimap< const Trk::Track *, int > TrackSeedMap
 
typedef DataVector< Trk::VxSecVertexInfoVxSecVertexInfoContainer
 
typedef FitQuality_p1 FitQualityOnSurface_p1
 
using MeasuredPerigee = Perigee
 
typedef Surface_p1 PerigeeSurface_p1
 
typedef TrackTruthVector TrackTruthCollection_p0
 
typedef ExtrapolationCell< TrackParametersExCellCharged
 
typedef ExtrapolationCell< NeutralParametersExCellNeutral
 
typedef std::pair< int, const NavigationCell * > IdNavigationCell
 
typedef std::pair< const TrackParameters *, double > TrackParametersWithPath
 typedef for return type TrackParameters, pathlength More...
 
typedef std::pair< const Surface *, BoundaryCheckDestSurf
 typedef for input surfaces, boundary check More...
 
typedef std::vector< std::unique_ptr< Trk::TrackParameters > > TrackParametersUVector
 
using TrackParmContainer = ObjContainer< Trk::TrackParameters >
 
using TrackParmPtr = ObjRef
 
using ManagedTrackParmPtr = ObjPtr< Trk::TrackParameters >
 
typedef std::pair< const NavigationCell *, const NavigationCell * > NavigationPair
 
typedef std::vector< const Trk::TrackParameters * > TrackParametersVector
 
typedef std::vector< TargetSurfaceTargetSurfaceVector
 
typedef bool RunOutlierRemoval
 switch to toggle quality processing after fit More...
 
using PrepRawDataSet = std::vector< const PrepRawData * >
 vector of clusters and drift circles More...
 
using MeasurementSet = std::vector< const MeasurementBase * >
 vector of fittable measurements More...
 
using RIO_OnTrackSet = std::vector< const RIO_OnTrack * >
 vector of detector hits on a track More...
 
using SpacePointSet = std::vector< const SpacePoint * >
 vector of space points More...
 
typedef bool SortInputFlag
 switch to toggle sorting More...
 
typedef DataVector< const TrackStateOnSurface >::const_iterator TS_iterator
 
typedef std::vector< std::pair< const Trk::MeasurementBase *, int > > MB_IndexVector
 
typedef std::vector< std::pair< const Track *, float > > TracksScores
 
typedef Eigen::Matrix< double, 3, Eigen::Dynamic > AmgMatrix3X
 
typedef std::pair< Amg::Vector3D, double > PositionAndWeight
 
typedef std::pair< double, double > DoubleAndWeight
 
typedef std::pair< PointOnTrack, PointOnTrackTwoPointOnTrack
 
typedef std::pair< Amg::Vector3D, Amg::Vector3DTwoPoints
 
typedef void(* addrPropagator) (long int, long int, double *, double *, double *, double *, double *, double *)
 
template<class T >
using noinit_vector = std::vector< T, boost::noinit_adaptor< std::allocator< T > > >
 A variant on std::vector which leaves its contents uninitialized by default. More...
 
typedef void(* addrMagHandler) (double, double, double, double &, double &, double &)
 
typedef int VertexID
 
typedef std::vector< double > dvect
 

Enumerations

enum  ExtraLocalPosParam { distDepth = 2 }
 
enum  AlignModuleListType {
  L0 =0, L1, L2, L3,
  L1_5, L2_5, ModulesOnTrack
}
 Type of AlignModuleList (see description above). More...
 
enum  AlignResidualType { HitOnly, Unbiased }
 
enum  AlignMesType { Measurement, Scatterer, EnergyDeposit }
 
enum  LayerOrder { previous = -1, next = 1 }
 
enum  BinningType { equidistant, biequidistant, arbitrary }
 
enum  BinningOption { open, closed }
 enum BinValue More...
 
enum  BinningValue {
  binX, binY, binZ, binR,
  binPhi, binRPhi, binH, binEta
}
 how to take the global / local position More...
 
enum  GeometrySignature {
  Global = 0, ID = 1, BeamPipe = 2, Calo = 3,
  MS = 4, Cavern = 5, HGTD = 6, NumberOfSignatures = 7,
  Unsigned = 99
}
 
enum  GeometryType {
  Static = 0, Dense = 1, DenseWithLayers = 1, Detached = 2,
  Master = 3, NumberOfGeometryTypes = 3
}
 
enum  MaterialAssociationType { EffectiveNumSteps = 0, EffectiveNumAtoms = 1, RadiationLength = 2, StepLength = 4 }
 
enum  DetectorElemType {
  DetectorElemType::SolidState = 0, DetectorElemType::Silicon = 1, DetectorElemType::TRT = 2, DetectorElemType::Csc = 3,
  DetectorElemType::Mdt = 4, DetectorElemType::Rpc = 5, DetectorElemType::Tgc = 6, DetectorElemType::sTgc = 7,
  DetectorElemType::MM = 8
}
 
enum  LayerType { passive = 0, active = 1 }
 
enum  MaterialConcentration { alongPre = 1, split = 0, oppositePre = -1 }
 
enum  MagneticFieldMode { NoField = 0, ConstantField = 1, FastField = 2, FullField = 3 }
 
enum  NavigationLevel { noNavigation = 0, globalSearch = 1, association = 2 }
 
enum  RQESolutionType {
  none = 0, one = 1, two = 2, none = 0,
  one = 1, two = 2
}
 
enum  SurfaceOwner { noOwn = 0, TGOwn = 1, DetElOwn = 2, userOwn = 3 }
 
enum  BevelledCylinderAccessorType { BevelledCylinderZincrease = 0, BevelledCylinderZdecrease = 1, BevelledCylinderPositiveFace = 2, BevelledCylinderNegativeFace = 3 }
 
enum  BevelledTubeAccessorType {
  BevelledTubeRincreaseZincrease = 0, BevelledTubeRincreaseZdecrease = 1, BevelledTubeZincreaseRincrease = 2, BevelledTubeZdecreaseRincrease = 3,
  BevelledTubeRdecreaseZincrease = 4, BevelledTubeRdecreaseZdecrease = 5, BevelledTubeZincreaseRdecrease = 6, BevelledTubeZdecreaseRdecrease = 7,
  BevelledTubeOutsideRminRdecrease = 8, BevelledTubeOutsideRmaxRincrease = 9, BevelledTubeOutsideZminZdecrease = 10, BevelledTubeOutsideZmaxZincrease = 11
}
 
enum  SectoralBevelledCylinderAccessorType { StandardSectoralBevelledCylinder = 0 }
 
enum  SectoralBevelledTubeAccessorType { StandardSectoralBevelledTube = 0 }
 
enum  BoundarySurfaceFace {
  negativeFaceXY = 0, positiveFaceXY = 1, negativeFaceYZ = 2, positiveFaceYZ = 3,
  negativeFaceZX = 4, positiveFaceZX = 5, cylinderCover = 2, tubeInnerCover = 3,
  tubeOuterCover = 2, tubeSectorNegativePhi = 4, tubeSectorPositivePhi = 5, tubeSectorInnerCover = 3,
  tubeSectorOuterCover = 2, trapezoidFaceAlpha = 2, trapezoidFaceBeta = 3, index0 = 0,
  index1 = 1, index2 = 2, index3 = 3, index4 = 4,
  index5 = 5, index6 = 6, index7 = 7, index8 = 8,
  index9 = 9, index10 = 10, index11 = 11, undefinedFace = 99
}
 
enum  CylinderAccessorType { CylinderZincrease = 0, CylinderZdecrease = 1, CylinderPositiveFace = 2, CylinderNegativeFace = 3 }
 
enum  TubeAccessorType {
  TubeRincreaseZincrease = 0, TubeRincreaseZdecrease = 1, TubeZincreaseRincrease = 2, TubeZdecreaseRincrease = 3,
  TubeRdecreaseZincrease = 4, TubeRdecreaseZdecrease = 5, TubeZincreaseRdecrease = 6, TubeZdecreaseRdecrease = 7,
  TubeOutsideRminRdecrease = 8, TubeOutsideRmaxRincrease = 9, TubeOutsideZminZdecrease = 10, TubeOutsideZmaxZincrease = 11
}
 
enum  SectoralCylinderAccessorType { StandardSectoralCylinder = 0 }
 
enum  SectoralTubeAccessorType { StandardSectoralTube = 0 }
 
enum  DriftCircleSide { NONE, LEFT, RIGHT }
 Enumerates the 'side' of the wire on which the tracks passed (i.e. More...
 
enum  DriftCircleStatus { DECIDED, UNDECIDED, CORRUPT, NODRIFTTIME }
 Enumerates the 'status' of the wire on which the tracks passed (based on the TRT_Side enum, from InDet::TRT_DriftCircleOnTrack, which this should eventually replace) More...
 
enum  ParamDefs {
  loc1 = 0, loc2 = 1, locX = 0, locY = 1,
  locRPhi = 0, locPhiR = 0, locZ = 1, locR = 0,
  locPhi = 1, iPhi = 0, iEta = 1, distPhi = 0,
  distEta = 1, driftRadius = 0, x = 0, y = 1,
  z = 2, px = 0, py = 1, pz = 2,
  d0 = 0, z0 = 1, phi0 = 2, theta = 3,
  qOverP = 4, phi = 2, u = 0, v = 1,
  trkMass = 5
}
 
enum  ParticleHypothesis {
  nonInteracting = 0, geantino = 0, electron = 1, muon = 2,
  pion = 3, kaon = 4, proton = 5, photon = 6,
  neutron = 7, pi0 = 8, k0 = 9, nonInteractingMuon = 10,
  noHypothesis = 99, undefined = 99
}
 
enum  PropDirection { alongMomentum = 1, oppositeMomentum =-1, anyDirection = 0, mappingMode = 2 }
 
enum  SearchDirection { outside =1, inside =-1, bothway =0, undefinedDirection =0 }
 
enum  MaterialUpdateStage { preUpdate = -1, fullUpdate = 0, postUpdate = 1 }
 This is a steering enum to tell which material update stage: More...
 
enum  SurfaceType {
  SurfaceType::Cone = 0, SurfaceType::Cylinder = 1, SurfaceType::Disc = 2, SurfaceType::Perigee = 3,
  SurfaceType::Plane = 4, SurfaceType::Line = 5, Curvilinear = 6, SurfaceType::Other = 7
}
 
enum  VertexType {
  NoVtx = 0, PriVtx = 1, SecVtx = 2, PileUp = 3,
  ConvVtx = 4, V0Vtx = 5, KinkVtx = 6, V0Lambda = 7,
  V0LambdaBar = 8, V0KShort = 9, NotSpecified = -99
}
 
enum  ParametersType { AtaSurface = 0, Curvilinear = 1, Curvilinear = 6, Pattern = 2 }
 
enum  PrepRawDataType {
  PrepRawDataType::SiCluster, PrepRawDataType::PixelCluster, PrepRawDataType::SCT_Cluster, PrepRawDataType::TRT_DriftCircle,
  PrepRawDataType::HGTD_Cluster, PrepRawDataType::PlanarCluster, PrepRawDataType::MdtPrepData, PrepRawDataType::CscStripPrepData,
  PrepRawDataType::CscPrepData, PrepRawDataType::MMPrepData, PrepRawDataType::RpcPrepData, PrepRawDataType::TgcPrepData,
  PrepRawDataType::sTgcPrepData
}
 
enum  SummaryType {
  numberOfContribPixelLayers = 29, numberOfBLayerHits = 0, numberOfInnermostPixelLayerHits = 53, numberOfNextToInnermostPixelLayerHits = 58,
  numberOfPixelHits = 2, numberOfPixelHoles = 1, numberOfGangedPixels = 14, numberOfGangedFlaggedFakes = 32,
  numberOfPixelDeadSensors = 33, numberOfPixelSpoiltHits = 35, numberOfDBMHits = 63, numberOfSCTHits = 3,
  numberOfSCTHoles = 4, numberOfSCTDoubleHoles = 28, numberOfSCTDeadSensors = 34, numberOfSCTSpoiltHits = 36,
  numberOfTRTHits = 5, numberOfTRTOutliers = 19, numberOfTRTHoles = 40, numberOfTRTHighThresholdHits = 6,
  numberOfTRTHighThresholdHitsTotal = 64, numberOfTRTHitsUsedFordEdx = 65, numberOfTRTHighThresholdOutliers = 20, numberOfTRTDeadStraws = 37,
  numberOfTRTTubeHits = 38, numberOfTRTXenonHits = 46, numberOfMdtHits = 7, numberOfTgcPhiHits = 8,
  numberOfTgcEtaHits = 9, numberOfCscPhiHits = 10, numberOfCscEtaHits = 11, numberOfRpcPhiHits = 12,
  numberOfRpcEtaHits = 13, numberOfCscEtaHoles = 21, numberOfCscPhiHoles = 22, numberOfRpcEtaHoles = 23,
  numberOfRpcPhiHoles = 24, numberOfMdtHoles = 25, numberOfTgcEtaHoles = 26, numberOfTgcPhiHoles = 27,
  numberOfStgcEtaHits = 67, numberOfStgcPhiHits = 68, numberOfMmHits = 69, numberOfStgcEtaHoles = 70,
  numberOfStgcPhiHoles = 71, numberOfMmHoles = 72, numberOfCscUnspoiltEtaHits = 45, numberOfGoodMdtHits = 66,
  numberOfOutliersOnTrack = 15, standardDeviationOfChi2OS = 30, legacy_eProbabilityComb_res = 47, legacy_eProbabilityHT_res = 48,
  legacy_eProbabilityToT_res = 49, legacy_eProbabilityBrem_res = 50, legacy_pixeldEdx_res = 51, legacy_eProbabilityNN_res = 73,
  legacy_TRTTrackOccupancy_res = 74, legacy_TRTdEdx_res = 75, legacy_expectBLayerHit = 42, legacy_expectInnermostPixelLayerHit = 52,
  legacy_expectNextToInnermostPixelLayerHit = 57, legacy_numberOfBLayerSharedHits = 16, legacy_numberOfPixelSharedHits = 17, legacy_numberOfSCTSharedHits = 18,
  legacy_numberOfBLayerSplitHits = 43, legacy_numberOfPixelSplitHits = 44, legacy_numberOfInnermostPixelLayerSharedHits = 55, legacy_numberOfInnermostLayerSplitHits = 56,
  legacy_numberOfNextToInnermostPixelLayerSharedHits = 60, legacy_numberOfNextToInnermostLayerSplitHits = 61, legacy_numberOfTRTSharedHits = 62, legacy_numberOfBLayerOutliers = 31,
  legacy_numberOfInnermostPixelLayerOutliers = 54, legacy_numberOfNextToInnermostPixelLayerOutliers = 59, legacy_numberOfPixelOutliers = 41, legacy_numberOfSCTOutliers = 39,
  numberOfTrackSummaryTypes = 76
}
 enumerates the different types of information stored in Summary. More...
 
enum  eProbabilityType {
  eProbabilityComb, eProbabilityHT, eProbabilityToT, eProbabilityBrem = 3,
  eProbabilityNN = 4, TRTTrackOccupancy = 5, TRTdEdx = 6, eProbabilityNumberOfTRTHitsUsedFordEdx,
  numberOfeProbabilityTypes = 8
}
 
enum  DetectorType {
  pixelBarrel0 = 0, pixelBarrel1 = 1, pixelBarrel2 = 2, pixelBarrel3 = 3,
  pixelEndCap0 = 4, pixelEndCap1 = 5, pixelEndCap2 = 6, sctBarrel0 = 7,
  sctBarrel1 = 8, sctBarrel2 = 9, sctBarrel3 = 10, sctEndCap0 = 11,
  sctEndCap1 = 12, sctEndCap2 = 13, sctEndCap3 = 14, sctEndCap4 = 15,
  sctEndCap5 = 16, sctEndCap6 = 17, sctEndCap7 = 18, sctEndCap8 = 19,
  trtBarrel = 20, trtEndCap = 21, DBM0 = 22, DBM1 = 23,
  DBM2 = 24, numberOfDetectorTypes = 25
}
 enumerates the various detector types currently accessible from the isHit() method. More...
 
enum  JetVtxParamDefs {
  jet_xv =0, jet_yv =1, jet_zv =2, jet_phi =3,
  jet_theta =4, jet_dist =5
}
 
enum  MaterialUpdateMode { addNoise = 1, removeNoise = -1 }
 This is a steering enum to force the material update it can be: (1) addNoise (-1) removeNoise Second is mainly for vertex reconstruction, but potentially dangeraous. More...
 
enum  RQESolutionType {
  none = 0, one = 1, two = 2, none = 0,
  one = 1, two = 2
}
 
enum  SurfNavigType {
  Target = 0, BoundaryFrame = 1, BoundaryDetached = 2, SensitiveLayer = 3,
  MaterialLayer = 4
}
 typedef for surface and volume navigation types More...
 
enum  TVNavigType { Unknown = 0, Frame = 1, AlignableVolume = 2, DenseVolume = 3 }
 
enum  ExtrapolationType {
  FittedTrajectory, DeltaD0, DeltaZ0, DeltaPhi0,
  DeltaTheta0, DeltaQOverP0, DeltaQOverP1, ExtrapolationTypes
}
 
enum  MeasurementType {
  perigeeParameters, transverseVertex, vertex, pixelCluster,
  stripCluster, trapezoidCluster, driftCircle, pseudoMeasurement,
  barrelScatterer, endcapScatterer, calorimeterScatterer, barrelInert,
  endcapInert, energyDeposit, alignment, discontinuity,
  bremPoint, hole, materialDelimiter
}
 
enum  ParameterType {
  D0, Z0, Phi0, Theta0,
  QOverP0, QOverP1, ParameterTypes
}
 
enum  RangeCheckDef { absoluteCheck = 0, differentialCheck = 1 }
 
enum  DetectorRegion {
  pixelBarrelFlat = 0, pixelBarrelInclined = 1, pixelEndcap = 2, stripBarrel = 3,
  stripEndcap = 4
}
 
enum  BoundaryCheckResult {
  BoundaryCheckResult::Candidate, BoundaryCheckResult::OnEdge, BoundaryCheckResult::Insensitive, BoundaryCheckResult::Outside,
  BoundaryCheckResult::DeadElement, BoundaryCheckResult::Error
}
 
enum  TRT_ElectronPidProbability { Combined = 0, HighThreshold = 1, TimeOverThreshold = 2, Bremsstrahlung = 3 }
 
enum  VKContraintType {
  VKContraintType::Mass, VKContraintType::Phi, VKContraintType::Theta, VKContraintType::Point,
  VKContraintType::Plane
}
 
enum  { NTrMaxVFit =200 }
 

Functions

void decomposeTransform (const Amg::Transform3D &transform, double *values)
 
std::string detTypeStr (AlignModule::DetectorType detType)
 returns the detector type More...
 
MsgStream & operator<< (MsgStream &sl, const AlignModule &alignModule)
 overload of << operator for MsgStream for debug output More...
 
MsgStream & operator<< (MsgStream &sl, const AlignPar &alignPar)
 overload of << operator for MsgStream for debug output More...
 
MsgStream & operator<< (MsgStream &log, Trk::AlignMesType type)
 
MsgStream & operator<< (MsgStream &log, Trk::AlignResidualType type)
 
ResidualPull::ResidualType ResidualPullType (AlignResidualType type)
 
MsgStream & operator<< (MsgStream &sl, const AlignTrack::AlignTrackType type)
 
std::ostream & operator<< (std::ostream &sl, const AlignTrack::AlignTrackType type)
 
std::string dumpAlignTrackType (const AlignTrack::AlignTrackType type)
 
MsgStream & operator<< (MsgStream &sl, const AlignTSOS &atsos)
 Overload of << operator for MsgStream for debug output. More...
 
MsgStream & operator<< (MsgStream &log, AlignResidualType type)
 
MsgStream & operator<< (MsgStream &sl, AlignModuleTool &alignModTool)
 
MsgStream & operator<< (MsgStream &sl, const BinUtility &bgen)
 Overload of << operator for both, MsgStream and std::ostream for debug output. More...
 
std::ostream & operator<< (std::ostream &sl, const BinUtility &bgen)
 
bool operator< (const LayerIndex &one, const LayerIndex &two)
 Overload of operator< | <= | > | >= for the usage in a map. More...
 
bool operator<= (const LayerIndex &one, const LayerIndex &two)
 
bool operator> (const LayerIndex &one, const LayerIndex &two)
 
bool operator>= (const LayerIndex &one, const LayerIndex &two)
 
MsgStream & operator<< (MsgStream &sl, const LayerIndex &layx)
 Overload of << operator for both, MsgStream and std::ostream for debug output. More...
 
std::ostream & operator<< (std::ostream &sl, const LayerIndex &layx)
 
MsgStream & operator<< (MsgStream &sl, const MemoryLogger &oac)
 Overload of << operator for both, MsgStream and std::ostream for debug output. More...
 
std::ostream & operator<< (std::ostream &sl, const MemoryLogger &oac)
 
MsgStream & operator<< (MsgStream &sl, const ObjectAccessor &oac)
 Overload of << operator for both, MsgStream and std::ostream for debug output. More...
 
std::ostream & operator<< (std::ostream &sl, const ObjectAccessor &oac)
 
MsgStream & operator<< (MsgStream &sl, const DistortionDescriptor &sb)
 Overload of << operator for both, MsgStream and std::ostream for debug output. More...
 
std::ostream & operator<< (std::ostream &sl, const DistortionDescriptor &sb)
 
MsgStream & operator<< (MsgStream &sl, const AssociatedMaterial &mstep)
 Overload of << operator for both, MsgStream and std::ostream for debug output. More...
 
std::ostream & operator<< (std::ostream &sl, const AssociatedMaterial &mstep)
 
MsgStream & operator<< (MsgStream &sl, const ElementTable &etab)
 Overload of << operator for both, MsgStream and std::ostream for debug output. More...
 
std::ostream & operator<< (std::ostream &sl, const ElementTable &etab)
 
MsgStream & operator<< (MsgStream &sl, GlueVolumesDescriptor &mprop)
 Overload of << operator for both, MsgStream and std::ostream for debug output. More...
 
std::ostream & operator<< (std::ostream &sl, GlueVolumesDescriptor &mprop)
 
MsgStream & operator<< (MsgStream &sl, const LayerMaterialProperties &mprop)
 Overload of << operator for both, MsgStream and std::ostream for debug output. More...
 
std::ostream & operator<< (std::ostream &sl, const LayerMaterialProperties &mprop)
 
MsgStream & operator<< (MsgStream &sl, const MagneticFieldProperties &mprop)
 Overload of << operator for both, MsgStream and std::ostream for debug output. More...
 
std::ostream & operator<< (std::ostream &sl, const MagneticFieldProperties &mprop)
 
MsgStream & operator<< (MsgStream &sl, const MaterialProperties &mprop)
 Overload of << operator for both, MsgStream and std::ostream for debug output. More...
 
std::ostream & operator<< (std::ostream &sl, const MaterialProperties &mprop)
 
MsgStream & operator<< (MsgStream &sl, const MaterialStep &mstep)
 Overload of << operator for both, MsgStream and std::ostream for debug output. More...
 
std::ostream & operator<< (std::ostream &sl, const MaterialStep &mstep)
 
MsgStream & operator<< (MsgStream &sl, const Surface &sf)
 Overload of << operator for both, MsgStream and std::ostream for debug output. More...
 
std::ostream & operator<< (std::ostream &sl, const Surface &sf)
 
MsgStream & operator<< (MsgStream &sl, const SurfaceBounds &sb)
 Overload of << operator for both, MsgStream and std::ostream for debug output. More...
 
std::ostream & operator<< (std::ostream &sl, const SurfaceBounds &sb)
 
MsgStream & operator<< (MsgStream &sl, const Volume &vol)
 Overload of << operator for both, MsgStream and std::ostream for debug output. More...
 
std::ostream & operator<< (std::ostream &sl, const Volume &vol)
 
MsgStream & operator<< (MsgStream &sl, const VolumeBounds &vb)
 Overload of << operator for both, MsgStream and std::ostream for debug output. More...
 
std::ostream & operator<< (std::ostream &sl, const VolumeBounds &vb)
 
MsgStream & operator<< (MsgStream &sl, const Trk::LocalParameters &lp)
 Overload of << operator for both, MsgStream and std::ostream for debug output. More...
 
std::ostream & operator<< (std::ostream &sl, const Trk::LocalParameters &lp)
 
MsgStream & operator<< (MsgStream &sl, const CurvilinearUVT &uvt)
 Overload of << operator for both, MsgStream and std::ostream for debug output. More...
 
std::ostream & operator<< (std::ostream &sl, const CurvilinearUVT &uvt)
 
MsgStream & operator<< (MsgStream &sl, const FitQualityImpl &fq)
 Overload of << operator for MsgStream for debug output. More...
 
std::ostream & operator<< (std::ostream &sl, const FitQualityImpl &fq)
 Overload of << operator for std::ostream for debug output. More...
 
MsgStream & operator<< (MsgStream &sl, const JacobianCurvilinearToLocal &jac)
 Overload of << operator for both, MsgStream and std::ostream for debug output. More...
 
std::ostream & operator<< (std::ostream &sl, const JacobianCurvilinearToLocal &jac)
 
MsgStream & operator<< (MsgStream &sl, const JacobianLocalToCurvilinear &jac)
 Overload of << operator for both, MsgStream and std::ostream for debug output. More...
 
std::ostream & operator<< (std::ostream &sl, const JacobianLocalToCurvilinear &jac)
 
MsgStream & operator<< (MsgStream &sl, const LocalDirection &lomo)
 Overload of << operator for both, MsgStream and std::ostream for debug output. More...
 
std::ostream & operator<< (std::ostream &sl, const LocalDirection &lomo)
 
template<typename U >
bool consistentSurfaces (U)
 
template<typename U , typename ... T>
bool consistentSurfaces (U a, T...b)
 
MsgStream & operator<< (MsgStream &sl, const TransportJacobian &jac)
 Overload of << operator for both, MsgStream and std::ostream for debug output. More...
 
std::ostream & operator<< (std::ostream &sl, const TransportJacobian &jac)
 
template<typename T >
std::unique_ptr< T > unique_clone (const T *v)
 
template<typename T >
std::unique_ptr< T > unique_clone (const std::unique_ptr< T > &v)
 
template<class OrigMap , class CmpT >
void addToInverseMultiMap (InverseMultiMap< OrigMap, CmpT > *result, const OrigMap &rec2truth)
 
template<class OStream , class TruthCollection >
OStream & operator<< (OStream &os, const BasicTruthCollectionFilter< TruthCollection > &f)
 
template<class OStream , class TruthCollection >
OStream & operator<< (OStream &os, const PCutTruthCollectionFilter< TruthCollection > &f)
 
template<class OStream , class TruthCollection >
OStream & operator<< (OStream &os, const StatTruthCollectionFilter< TruthCollection > &f)
 
MsgStream & operator<< (MsgStream &sl, const EnergyLoss &eloss)
 Overload of << operator for MsgStream for debug output. More...
 
std::ostream & operator<< (std::ostream &sl, const EnergyLoss &eloss)
 Overload of << operator for std::ostream for debug outputstd::ostream&. More...
 
MsgStream & operator<< (MsgStream &sl, const MaterialEffectsBase &meb)
 Overload of << operator for MsgStream for debug output. More...
 
std::ostream & operator<< (std::ostream &sl, const MaterialEffectsBase &meb)
 Overload of << operator for std::ostream for debug output. More...
 
MsgStream & operator<< (MsgStream &sl, const Trk::ScatteringAngles &saos)
 Overload of << operator for MsgStream for debug output. More...
 
std::ostream & operator<< (std::ostream &sl, const Trk::ScatteringAngles &saos)
 Overload of << operator for std::ostream for debug output. More...
 
MsgStream & operator<< (MsgStream &sl, const Trk::MeasurementBase &mbase)
 Overload of << operator for MsgStream for debug output. More...
 
std::ostream & operator<< (std::ostream &sl, const Trk::MeasurementBase &mbase)
 Overload of << operator for std::ostream for debug output. More...
 
template<int DIM, class T >
MsgStream & operator<< (MsgStream &sl, const Trk::ParametersBase< DIM, T > &tp)
 Overload of << operator for both, MsgStream and std::ostream for debug output. More...
 
template<int DIM, class T >
std::ostream & operator<< (std::ostream &sl, const Trk::ParametersBase< DIM, T > &tp)
 
MsgStream & operator<< (MsgStream &sl, const TrackParticleBase &trackParticleBase)
 Overload of << operator for MsgStream for debug output. More...
 
std::ostream & operator<< (std::ostream &sl, const TrackParticleBase &trackParticleBase)
 Overload of << operator for std::ostream for debug output. More...
 
std::ostream & operator<< (std::ostream &, const NoiseOnSurface &)
 
MsgStream & operator<< (MsgStream &, const NoiseOnSurface &)
 
std::ostream & operator<< (std::ostream &, const PatternTrackParameters &)
 
MsgStream & operator<< (MsgStream &, const PatternTrackParameters &)
 
MsgStream & operator<< (MsgStream &stream, const PrepRawData &prd)
 
std::ostream & operator<< (std::ostream &stream, const PrepRawData &prd)
 
template<typename T_res , typename T_src >
const T_res * ErrorScalingCast (const T_src *src)
 
MsgStream & operator<< (MsgStream &stream, const TrackRoad &tr)
 Dump the road into a message stream. More...
 
std::ostream & operator<< (std::ostream &stream, const TrackRoad &tr)
 Dump the road into a standard output stream. More...
 
MsgStream & operator<< (MsgStream &sl, const Trk::SpacePoint &spacePoint)
 Overload of << operator for both, MsgStream and std::ostream for debug output. More...
 
std::ostream & operator<< (std::ostream &sl, const SpacePoint &spacePoint)
 Overload of << operator for std::ostream for debug output. More...
 
MsgStream & operator<< (MsgStream &sl, const TrackStateOnSurface &tsos)
 Overload of << operator for both, MsgStream and std::ostream for debug output. More...
 
std::ostream & operator<< (std::ostream &sl, const TrackStateOnSurface &tsos)
 Overload of << operator for std::ostream for debug output. More...
 
MsgStream & operator<< (MsgStream &sl, const AlignmentEffectsOnTrack &tsos)
 Overload of << operator for MsgStream for debug output. More...
 
std::ostream & operator<< (std::ostream &sl, const AlignmentEffectsOnTrack &tsos)
 Overload of << operator for std::ostream for debug output. More...
 
 AmgSymMatrix (5) &GXFTrackState
 
MsgStream & operator<< (MsgStream &, const MultiComponentStateOnSurface &)
 Overload of << operator for MsgStream for debug output. More...
 
std::ostream & operator<< (std::ostream &, const MultiComponentStateOnSurface &)
 Overload of << operator for std::ostream for debug output. More...
 
MsgStream & operator<< (MsgStream &sl, const Track &track)
 Overload of << operator for MsgStream for debug output. More...
 
std::ostream & operator<< (std::ostream &sl, const Track &track)
 Overload of << operator for std::ostream for debug output. More...
 
MsgStream & operator<< (MsgStream &sl, const TrackInfo &track)
 Overload of << operator for MsgStream for debug output. More...
 
std::ostream & operator<< (std::ostream &sl, const TrackInfo &track)
 Overload of << operator for std::ostream for debug output. More...
 
MsgStream & operator<< (MsgStream &out, const MuonTrackSummary &trackSum)
 output. More...
 
std::ostream & operator<< (std::ostream &out, const MuonTrackSummary &trackSum)
 output. More...
 
MsgStream & operator<< (MsgStream &out, const TrackSummary &trackSum)
 output. More...
 
std::ostream & operator<< (std::ostream &out, const TrackSummary &trackSum)
 output. More...
 
bool operator< (const TrackTruthKey &a, const TrackTruthKey &b)
 
MsgStream & operator<< (MsgStream &sl, const VertexPositions &sf)
 Overload of << operator for both, MsgStream and std::ostream for debug output. More...
 
std::ostream & operator<< (std::ostream &sl, const VertexPositions &sf)
 
MsgStream & operator<< (MsgStream &sl, const VxClusteringTable &sf)
 
std::ostream & operator<< (std::ostream &sl, const VxClusteringTable &sf)
 
std::ostream & operator<< (std::ostream &sl, const LinearizedTrack &sf)
 
const AmgSymMatrix (3) &RecVertex
 
MsgStream & operator<< (MsgStream &sl, const Vertex &sf)
 Overload of << operator for both, MsgStream and std::ostream for debug output. More...
 
std::ostream & operator<< (std::ostream &sl, const Vertex &sf)
 
MsgStream & operator<< (MsgStream &sl, const VxCandidate &sf)
 Overload of << operator for both, MsgStream and std::ostream for debug output; only needed in base class? More...
 
std::ostream & operator<< (std::ostream &sl, const VxCandidate &sf)
 
MsgStream & operator<< (MsgStream &sl, const VxTrackAtVertex &sf)
 Overload of << operator for both, MsgStream and std::ostream for debug output; only needed in base class? More...
 
std::ostream & operator<< (std::ostream &sl, const VxTrackAtVertex &sf)
 
MsgStream & operator<< (MsgStream &sl, const LinearizedTrack &sf)
 Overload of << operator for both, MsgStream and std::ostream for debug output. More...
 
bool operator< (const TrackTruthKey_p0 &a, const TrackTruthKey_p0 &b)
 
ATH_ALWAYS_INLINE void propJacobian (double *ATH_RESTRICT P, const double *ATH_RESTRICT H0, const double *ATH_RESTRICT H1, const double *ATH_RESTRICT H2, const double *ATH_RESTRICT A, const double *ATH_RESTRICT A0, const double *ATH_RESTRICT A3, const double *ATH_RESTRICT A4, const double *ATH_RESTRICT A6, const double S3)
 This provides an inline helper function for updating the jacobian during Runge-Kutta propagation. More...
 
MsgStream & operator<< (MsgStream &sl, const TrackSurfaceIntersection &tsfi)
 Overload of << operator for both, MsgStream and std::ostream for debug output. More...
 
std::ostream & operator<< (std::ostream &sl, const TrackSurfaceIntersection &tsfi)
 
MsgStream & operator<< (MsgStream &log, ExtrapolationType type)
 
MsgStream & operator<< (MsgStream &log, MeasurementType type)
 
MsgStream & operator<< (MsgStream &log, ParameterType type)
 
 AmgMatrix (3, 3) NeutralParticleParameterCalculator
 
int makeCascade (VKalVrtControl &FitCONTROL, long int NTRK, const long int *ich, double *wm, double *inp_Trk5, double *inp_CovTrk5, const std::vector< std::vector< int > > &vertexDefinition, const std::vector< std::vector< int > > &cascadeDefinition, double definedCnstAccuracy)
 
int setCascadeMassConstraint (CascadeEvent &cascadeEvent_, long int IV, double Mass)
 
int setCascadeMassConstraint (CascadeEvent &cascadeEvent_, long int IV, std::vector< int > &trkInVrt, std::vector< int > &pseudoInVrt, double Mass)
 
int fixPseudoTrackPt (long int NPar, double *fullMtx, double *LSide, CascadeEvent &cascadeEvent_)
 
VKTrackgetCombinedVTrack (VKVertex *vk)
 
int getCascadeNPar (CascadeEvent &cascadeEvent_, int Type)
 
void setFittedParameters (const double *result, std::vector< int > &matrixPnt, CascadeEvent &cascadeEvent_)
 
void setFittedMatrices (const double *COVFIT, long int MATRIXSIZE, std::vector< int > &matrixPnt, std::vector< std::vector< double > > &covarCascade, CascadeEvent &cascadeEvent_)
 
std::vector< double > transformCovar (int NPar, double **Deriv, const std::vector< double > &covarI)
 
void addCrossVertexDeriv (CascadeEvent &cascadeEvent_, double *ader, long int MATRIXSIZE, const std::vector< int > &matrixPnt)
 
void copyFullMtx (const double *Input, long int IPar, long int IDIM, double *Target, long int TStart, long int TDIM)
 
void getNewCov (const double *OldCov, const double *Der, double *Cov, long int DIM) noexcept
 
void cferpr (const long int ich, double *par, double *ref, const double s0, double *errold, double *errnew)
 
void cfimp (long int TrkID, long int ich, int IFL, double *par, const double *err, double *vrt, double *vcov, double *rimp, double *rcov, double *sign, VKalVrtControlBase *FitCONTROL)
 
void cfimpc (long int TrkID, long int ich, int IFL, double *par, const double *err, double *vrt, double *vcov, double *rimp, double *rcov, double *sign, VKalVrtControlBase *FitCONTROL)
 
int CFit (VKalVrtControl *FitCONTROL, int ifCovV0, int NTRK, long int *ich, double xyz0[3], double(*par0)[3], double(*inp_Trk5)[5], double(*inp_CovTrk5)[15], double xyzfit[3], double(*parfs)[3], double ptot[4], double covf[21], double &chi2, double *chi2tr)
 
int setVTrackMass (VKVertex *vk)
 
long int getVertexCharge (VKVertex *vk)
 
double cascadeCnstRemnants (CascadeEvent &cascadeEvent_)
 
int fitVertexCascade (VKVertex *vk, int Pointing)
 
int processCascade (CascadeEvent &cascadeEvent_)
 
int processCascadePV (CascadeEvent &cascadeEvent_, const double *primVrt, const double *primVrtCov)
 
int processCascade (CascadeEvent &cascadeEvent_, const double *primVrt, const double *primVrtCov)
 
int processCascade (CascadeEvent &cascadeEvent_, double *primVrt)
 
int translateToFittedPos (CascadeEvent &cascadeEvent_, double Step)
 
int restorePreviousPos (CascadeEvent &cascadeEvent_, std::vector< VKVertex > &SV)
 
void getFittedCascade (CascadeEvent &cascadeEvent_, std::vector< Vect3DF > &cVertices, std::vector< std::vector< double > > &covVertices, std::vector< std::vector< VectMOM > > &fittedParticles, std::vector< std::vector< double > > &cascadeCovar, std::vector< double > &particleChi2, std::vector< double > &fullCovar)
 
void rescaleVrtErrForPointing (double Div, CascadeEvent &cascadeEvent_)
 
int fitVertexCascadeScale (VKVertex *vk, double &distToVertex)
 
int processCascadeScale (CascadeEvent &cascadeEvent_)
 
void cfmasserr (VKVertex *vk, const int *list, double BMAG, double *MASS, double *sigM)
 
void cfmasserrold_ (const long int ntrk, long int *list, double *parfs, double *ams, double *deriv, double BMAG, double *dm, double *sigm)
 
void vkPerigeeToP (const double *perig3, double *pp, double BMAG)
 
std::array< double, 4 > getFitParticleMom (const VKTrack *trk, const VKVertex *vk)
 
std::array< double, 4 > getFitParticleMom (const VKTrack *trk, double BMAG)
 
std::array< double, 4 > getIniParticleMom (const VKTrack *trk, const VKVertex *vk)
 
std::array< double, 4 > getIniParticleMom (const VKTrack *trk, double BMAG)
 
std::array< double, 4 > getCnstParticleMom (const VKTrack *trk, const VKVertex *vk)
 
std::array< double, 4 > getCnstParticleMom (const VKTrack *trk, double BMAG)
 
void cfnewp (const long int ich, double *parold, double *ref, double *s, double *parnew, double *per)
 
void cfnewpm (double *par, const double *xyzStart, double *xyzEnd, const double ustep, double *parn, double *closePoint, VKalVrtControlBase *CONTROL)
 
void cfpest (int ntrk, double *xyz, long int *ich, double(*parst)[5], double(*parf)[3])
 
int afterFit (VKVertex *vk, double *ader, double *dcv, double *ptot, double *VrtMomCov, const VKalVrtControlBase *CONTROL)
 
int afterFitWithIniPar (VKVertex *vk, double *ader, double *dcv, double *ptot, double *VrtMomCov, const VKalVrtControlBase *CONTROL)
 
double cfVrtDstSig (VKVertex *vk, bool UseTrkErr)
 
void calcMassConstraint (VKMassConstraint *cnst)
 
void calcPointConstraint (VKPointConstraint *cnst)
 
void calcPhiConstraint (VKPhiConstraint *cnst)
 
void calcThetaConstraint (VKThetaConstraint *cnst)
 
void calcPlaneConstraint (VKPlaneConstraint *cnst)
 
std::ostream & operator<< (std::ostream &out, const VKConstraintBase &cnst)
 
std::ostream & operator<< (std::ostream &out, const VKMassConstraint &cnst)
 
std::ostream & operator<< (std::ostream &out, const VKPhiConstraint &cnst)
 
std::ostream & operator<< (std::ostream &out, const VKThetaConstraint &cnst)
 
std::ostream & operator<< (std::ostream &out, const VKPointConstraint &cnst)
 
std::ostream & operator<< (std::ostream &out, const VKPlaneConstraint &cnst)
 
void FullMTXfill (VKVertex *vk, double *ader)
 
int FullMCNSTfill (VKVertex *vk, double *ader, double *LSide)
 
double cfSmallEigenvalue (double *cov, long int n)
 
int cfInv5 (double *cov, double *wgt)
 
int cfdinv (double *cov, double *wgt, long int NI)
 
void dsinv (long int n, double *a, long int DIM, long int *ifail) noexcept
 
int vkMSolve (double *a, double *b, long int n, double *ainv)
 
void vkSVDCmp (double **a, int m, int n, double w[], double **v)
 
void vkGetEigVal (const double ci[], double d[], int n)
 
void vkGetEigVect (const double ci[], double d[], double vect[], int n)
 
void robtest (VKVertex *vk, int ifl, int nIteration)
 
void applyConstraints (VKVertex *vk)
 
std::ostream & operator<< (std::ostream &out, const VKTrack &track)
 
double cfchi2 (double *xyzt, const long int ich, double *part, const double *par0, double *wgt, double *rmnd)
 
double cfchi2 (const double *vrtt, const double *part, VKTrack *trk)
 
double finter (double y0, double y1, double y2, double x0, double x1, double x2)
 
void tdasatVK (const double *Der, const double *CovI, double *CovF, long int M, long int N)
 
void cfsetdiag (long int n, double *matr, double value) noexcept
 
void abcCoef (double g1, double g2, double g3, double &a, double &b, double &c)
 
void efdCoef (double Ga0, double Gamb, double Gab, double Gw0, double Gwb, double alf, double bet, double w, double &d, double &e, double &f)
 
void ParaMin (double b, double c, double d, double e, double f, double &xmin, double &ymin)
 
void cfTrkCovarCorr (double *cov)
 
void vkgrkuta_ (const double charge, const double step, double *vect, double *vout, VKalVrtControlBase *CONTROL)
 
double vkvFastV (double *p1, double *p2, const double *vRef, double dbmag, double *out)
 
int vtcfit (VKVertex *vk)
 
int vtcfitc (VKVertex *vk)
 
double getCnstValues2 (VKVertex *vk) noexcept
 
int getFullVrtCov (VKVertex *vk, double *ader, const double *dcv, double verr[6][6])
 
void vpderiv (bool UseTrackErr, long int Charge, const double *pari0, double *covi, double *vrtref, double *covvrtref, double *drdpar, double *dwgt, double *rv0, VKalVrtControl *FitCONTROL)
 
void xyztrp (const long int ich, double *vrt0, double *pv0, double *covi, double BMAG, double *paro, double *errt)
 
void combinedTrack (long int ICH, double *pv0, double *covi, double BMAG, double *par, double *covo)
 
void cfdcopy (double *source, double *target, int n)
 
double cfddist3D (double *V1, double *V2)
 
double d_sign (double value, double sign)
 
int SymIndex (int it, int i, int j)
 

Variables

constexpr int MAXNCHAMBERS =50
 
constexpr int MAXNINDICES =50*6
 
template<typename T >
const auto do_not_delete = [](T*) {}
 

Detailed Description

Ensure that the ATLAS eigen extensions are properly loaded.

Author: V.Kostyukhin.

An abstract base class for algorithms estimating the transverse impact parameter d0 and its error of a given track wrt to the reconstructed vertex.

IPVTrackCompatibilityEstimator.h.

A first concrete implementation of the IV0VertexFitter for the purposes of V0 fitting.

A track-truth match quality estimator tool.

Code that is common to several track-truth matching tools.

These headers, as well as other headers in the TrkGlobalChi2Fitter package use modern C++11 memory ownership semantics expressed through smart pointers.

Cache for the extrapolator to keep track of the total X0 traversed and the total extended energy loss (Eloss (error) ,Ionization (error), Radiation (error))

Persistent representation of class VxVertex/VxTrackAtVertex.

Persistent representation of the VxVertex/Vertex class.

Persistent representation of the VxVertex/RecVertex class.

Persistent representation of the VxVertex/ExtendedVxCandidate class.

Persistent representation of class VxMultiVertex/MVFVxTrackAtVertex.

Persistent representation of class VxMultiVertex/MVFVxCandidate.

Persistent representation of the TrkV0Vertex/V0Hypothesis class.

Persistent representation of the TrkV0Vertex/V0Candidate class.

The standard namespace for VxVertexPositions.

< include headers from the base class

multimap to be used for TrackAmbiguity/Seed validation

This typedef represents a multimap that holds the matching chi2 of two tracks from different track collections together with a boolean that indicatges if the matching was succesful.

Convenience Helper classes SurfacePtrHolder SurfaceUniqHolder also see SurfaceUniquePtrT.h.

standard namespace for Tracking

LayerIndexSampleMap.

Define statics for Geometry in Tracking.

ConstrainedTrackProvider.

Tool used to create a collection of AlignTracks from Tracks while the tracks are being refitted with a vertex/beam-spot constraint.

forward declarations

DATABASE INCLUDES.

Name : Neutrino.h Package : offline/PhysicsAnalysis/AnalysisCommon/ParticleEvent Author : Ketevi A.

An example algorithm that reads and writes objects from the event store using handles.

A tool to be used for track preselection in conversion vertex finding.

An abstract base class for implementation of primary vertex seed finders.

Forward declarations.

A tool to sort tracks according to their Z0 impact parameter with respoect to the coordinate origin.

A tool for cleaning of the PV candidate clusters.

A multi seed finder for primary vertexing.

The InDetV0FinderTool reads in the TrackParticle container from StoreGate, if useorigin = True only tracks not associated to a primary vertex are used.

There are options to use silicon tracks only (default) or include Si+TRT and TRT+TRT.

Pairs of tracks passing pre-selection (using InDetTrackSelectorTool) are fitted to a common vertex using TrkV0Fitter or TrkVKalVrtFitter (useV0Fitter = False).

InDetV0FinderTool can take as input a vertex (or a collection of vertices) w.r.t which the V0s can be selected to minimise combinatorics.

The unconstrained vertex fit is attempted if the radius of the starting point is < maxsxy (= 1000 mm) and at least one invariant mass at the starting point is in the allowed range: uksmin < m(pipi) < uksmax or ulamin < m(ppi) < ulamax or ulamin < m(pip) < ulamax

V0s are kept if the cumulative chi2 probability of the unconstrained fit is > minVertProb (= 0.0001)

If doSimpleV0 = True all vertices that pass these cuts are stored in V0UnconstrVertices.

If doSimpleV0 = False (default) mass constrained fits are attempted if

Mass constrainedV0s are kept if the cumulative chi2 probability of the fit is > minVertProb (= 0.0001)

For successful mass constrained fits a conversion fit is also attempted and if successful, the corresponding unconstrained V0 is decorated with the invariant mass, its error and the vertex probability of the conversion fit.

The links between the unconstrained V0 and the successful mass constrained V0s are stored.

Uses a histogramming method. Operates in a fixed range +/-15cm along z-axis.

Configurables: number of histogram bins and maximal separation distance between bins to be merged. in a cluster.

Kirill Prokodiev Kiril.nosp@m.l.Pr.nosp@m.okofi.nosp@m.ev@c.nosp@m.ern.c.nosp@m.h

Mai 2007

Rejects tracks which are further away than several standard deviations from the center of the cluster. The cleaning is done on the basis of the extrapolated perigee. If the empty extrapolation poit is passed, the cleaning is done on the basis of the usual perigee.

Kirill Prokofiev Kiril.nosp@m.l.Pr.nosp@m.okofi.nosp@m.ev@c.nosp@m.ern.c.nosp@m.h Mai 2007

The tracks are extrapolated to a given point before the the sorting is done. If no point is provided, the sorting is performed on the basis of perigee from Track or TrackParticle.

Kirill Prokofiev Kiril.nosp@m.l.Pr.nosp@m.okofi.nosp@m.ev@c.nosp@m.ern.c.nosp@m.h Mai 2007

Concrete implementations scan provided tracks and form track clusters in z0.

Kirill Prokofiev Kiril.nosp@m.l.Pr.nosp@m.okofi.nosp@m.ev@c.nosp@m.ern.c.nosp@m.h

Thomas Koffas Thoma.nosp@m.s.Ko.nosp@m.ffas@.nosp@m.cern.nosp@m..ch June 2008

Assamagan Created : August 2004

DESCRIPTION: neutrino class for t -> bW -> b l nu construction the neutrino after solving the for the neutrino pz using the W mass constraint. There is a quadratic ambiguity leading to up to 2 solutions This class inherits from IParticle, I4Momentum and NavigableTerminalNode.

GEOMODEL INCLUDES CALORIMETER INCLUDES

namespace for general tracking tools and interfaces

The AlignTracks are filled into a collection of Tracks. The default control flow is like this: firstly do vertex constraint, if can't, then do beamspot again; if can't again, then do normal refit. if want to do vertex constraint only, set: doVertexConstraint = True and doBeamspotConstraint = False if want to do beamspot constraint only, set: doVertexConstraint = False and doBeamspotConstraint = True

Author
Jike Wang jwang.nosp@m.@cer.nosp@m.n.ch
Daniel Kollar danie.nosp@m.l.ko.nosp@m.llar@.nosp@m.cern.nosp@m..ch -> updated 2015 Matthias Danninger

Will provide a track coolection with momentum conatraint applied. A 2d histogram read and corrections (delta) are extracted as function of eta and phi. The momentum is scaled as corrected QoverP = original QoverP * (1.+ charge *pt *delta );

The strength of eth constraint can be varied as well.

instead of the CaloCell_ID (enum) a simple int is taken, so, implicit conversion is needed.

pos/neg endcap are distinguished by +/-

In the case of surfaces we do not want to take onwership when they are owned by the Tracking Geometry or a detector element.

In the other hand we want to take ownership if they are free.

As a result when we have classes with a m_associatedSurface member we need to repeat some boiler plate code.

These helpers try to make writing such code a bit easier and more uniform.

In reality one should prefer the code based on SurfaceUniquePtr But : We get this kind of warning when creating dictionaries: Error in <CloseStreamerInfoROOTFile>: I/O is supported only for unique_ptrs with a default deleter. Trk::SurfaceUniqHolder::m_associatedSurface appears to have a custom one Which can be problematic for some cases. So we provide also the plain ptr one

Under TrkDetDescr/TrkSurfaces :

The test : SurfaceHolder_test has a mock code on how we could use these for classes where we want to hold a ptr to a const Surface and manage it, based on if its free or owned.

The header : SurfaceHolder.h provides typedefs for most commom cases used by client code so as to hide some details of the implementation

A namespace to enclose the Tracking classes.

A namespace to enclose the new Track class, and related tools.

Kirill Prokofiev Kiril.nosp@m.l.Pr.nosp@m.okofi.nosp@m.ev@c.nosp@m.ern.c.nosp@m.h

March 2007

Kirill Prokofiev Kiril.nosp@m.l.Pr.nosp@m.okofi.nosp@m.ev@c.nosp@m.ern.c.nosp@m.h

January 2006 Modified for the TP split version 2

Kirill Prokofiev Kiril.nosp@m.l.Pr.nosp@m.okofi.nosp@m.ev@c.nosp@m.ern.c.nosp@m.h

July 2006 January 2007 corrected for the new TP split schema

Kirill Prokofiev Kiril.nosp@m.l.Pr.nosp@m.okofi.nosp@m.ev@c.nosp@m.ern.c.nosp@m.h

July 2006

Kirill Prokofiev Kiril.nosp@m.l.Pr.nosp@m.okofi.nosp@m.ev@c.nosp@m.ern.c.nosp@m.h

July 2006 January 2006 Modified for the TP split version 2

See GlobalChi2Fitter.h for more information.

Author
Andrei Gaponenko agapo.nosp@m.nenk.nosp@m.o@lbl.nosp@m..gov
Authors
: E. Bouhova-Thacker e.bou.nosp@m.hova.nosp@m.@cern.nosp@m..ch, R. Henderson Rob.H.nosp@m.ende.nosp@m.rson@.nosp@m.cern.nosp@m..ch
Date
: 14 December 2006

A namespace for all vertexing packages and related stuff.

Abstract interface for tools estimating whether a given track originated from the primary vertex.

ruwie.nosp@m.del@.nosp@m.physi.nosp@m.k.un.nosp@m.i-bon.nosp@m.n.de Kiril.nosp@m.l.Pr.nosp@m.okofi.nosp@m.ev@c.nosp@m.ern.c.nosp@m.h

June 2009


Changes:

David Shope david.nosp@m..ric.nosp@m.hard..nosp@m.shop.nosp@m.e@cer.nosp@m.n.ch (2016-04-19)

EDM Migration to xAOD - Replace Trk::VxContainer with xAOD::VertexContainer

K.Prokofiev, C.Ruwiedel, June 2009.

Changes: G. Piacquadio, July 2009, add lifetime signs for b-tagging

David Shope david.nosp@m..ric.nosp@m.hard..nosp@m.shop.nosp@m.e@cer.nosp@m.n.ch (2016-04-19) EDM Migration to xAOD - Remove methods involving Trk::VxCandidate and Trk::RecVertex

Typedef Documentation

◆ addrMagHandler

typedef void(* Trk::addrMagHandler) (double, double, double, double &, double &, double &)

Definition at line 22 of file VKalVrtBMag.h.

◆ addrPropagator

typedef void(* Trk::addrPropagator) (long int, long int, double *, double *, double *, double *, double *, double *)

Definition at line 23 of file Propagator.h.

◆ AlignModuleDerivatives

typedef std::pair<AlignModule*, std::vector<Amg::VectorX> > Trk::AlignModuleDerivatives

Definition at line 39 of file AlignTrack.h.

◆ AlignModuleList

typedef std::vector<AlignModule*> Trk::AlignModuleList

Definition at line 37 of file AlignModuleList.h.

◆ AlignModuleVertexDerivatives

Definition at line 37 of file AlignVertex.h.

◆ AlignParList

typedef boost::multi_array<AlignPar*,2> Trk::AlignParList

Definition at line 12 of file AlignParList.h.

◆ AlignParListDims

typedef boost::array<boost::multi_array_types::index, 2> Trk::AlignParListDims

Definition at line 13 of file AlignParList.h.

◆ AlignTrackCollection

typedef std::vector<AlignTrack**> Trk::AlignTrackCollection

Definition at line 35 of file AlignVertex.h.

◆ AlignTrackIt

typedef std::vector<AlignTrack**>::const_iterator Trk::AlignTrackIt

Definition at line 36 of file AlignVertex.h.

◆ AlignTSOSCollection

Definition at line 37 of file AlignTrack.h.

◆ AlignTSOSIt

typedef DataVector<AlignTSOS>::const_iterator Trk::AlignTSOSIt

Definition at line 38 of file AlignTrack.h.

◆ AmgMatrix3X

typedef Eigen::Matrix<double, 3, Eigen::Dynamic> Trk::AmgMatrix3X

Definition at line 49 of file KalmanVertexOnJetAxisUpdator.h.

◆ ArraySpan

template<class T >
using Trk::ArraySpan = typedef std::span<T>

Definition at line 34 of file DetachedTrackingVolume.h.

◆ AtaCone

◆ AtaCylinder

◆ AtaDisc

◆ AtaPlane

◆ AtaStraightLine

◆ BinnedArraySpan

template<class T >
using Trk::BinnedArraySpan = typedef std::span<T>

Definition at line 34 of file BinnedArray.h.

◆ BoundaryIntersection

Definition at line 86 of file TrackingVolume.h.

◆ ConeSurfacePtrHolder

Definition at line 19 of file SurfaceHolders.h.

◆ ConeSurfaceUniqHolder

Definition at line 27 of file SurfaceHolders.h.

◆ const_mapiterator

typedef datamap::const_iterator Trk::const_mapiterator

Definition at line 30 of file AlSymMatBase.h.

◆ ConstSurfaceUniquePtr

◆ CurvilinearParameters

◆ CylinderSurfacePtrHolder

Definition at line 20 of file SurfaceHolders.h.

◆ CylinderSurfaceUniqHolder

Definition at line 28 of file SurfaceHolders.h.

◆ datamap

typedef std::map<indices, double> Trk::datamap

Definition at line 28 of file AlSymMatBase.h.

◆ DefinedParameter

Typedef to of a std::pair<double, ParamDefs> to identify a passed-through double as a specific type of parameter

Author
Andre.nosp@m.as.S.nosp@m.alzbu.nosp@m.rger.nosp@m.@cern.nosp@m..ch

Definition at line 27 of file DefinedParameter.h.

◆ DestSurf

typedef std::pair< const Surface *, BoundaryCheck > Trk::DestSurf

typedef for input surfaces, boundary check

Definition at line 45 of file IPropagator.h.

◆ DigitizationCell

typedef std::pair<size_t,size_t> Trk::DigitizationCell

Definition at line 18 of file DigitizationCell.h.

◆ DiscSurfacePtrHolder

Definition at line 21 of file SurfaceHolders.h.

◆ DiscSurfaceUniqHolder

Definition at line 29 of file SurfaceHolders.h.

◆ DoubleAndWeight

typedef std::pair<double,double> Trk::DoubleAndWeight

Definition at line 18 of file SeedFinderParamDefs.h.

◆ dvect

typedef std::vector<double> Trk::dvect

Definition at line 36 of file TrkVKalVrtFitter.h.

◆ EightObjectsAccessor

using Trk::EightObjectsAccessor = typedef std::array<ObjectAccessor::value_type, 8>

Definition at line 18 of file ObjectsAccessor.h.

◆ ExCellCharged

Definition at line 24 of file IExtrapolationEngine.h.

◆ ExCellNeutral

Definition at line 25 of file IExtrapolationEngine.h.

◆ FitQualityOnSurface_p1

Definition at line 19 of file FitQualityOnSurface_p1.h.

◆ FiveObjectsAccessor

using Trk::FiveObjectsAccessor = typedef std::array<ObjectAccessor::value_type, 5>

Definition at line 16 of file ObjectsAccessor.h.

◆ FourObjectsAccessor

using Trk::FourObjectsAccessor = typedef std::pair<std::array<ObjectAccessor::value_type, 4>, bool>

Definition at line 14 of file ObjectsAccessor.h.

◆ GlueVolumeConstIterator

typedef std::map<BoundarySurfaceFace, std::vector<TrackingVolume*> >::const_iterator Trk::GlueVolumeConstIterator

Definition at line 30 of file GlueVolumesDescriptor.h.

◆ GlueVolumeIterator

typedef std::map<BoundarySurfaceFace, std::vector<TrackingVolume*> >::iterator Trk::GlueVolumeIterator

Definition at line 27 of file GlueVolumesDescriptor.h.

◆ IdentifiedMaterial

typedef std::pair<const Material*, int> Trk::IdentifiedMaterial

Definition at line 28 of file BinnedMaterial.h.

◆ IdNavigationCell

typedef std::pair<int, const NavigationCell*> Trk::IdNavigationCell

Definition at line 54 of file INavigator.h.

◆ indices

typedef std::pair<long int, long int> Trk::indices

Definition at line 27 of file AlSymMatBase.h.

◆ LayerArray

simply for the eye

Definition at line 30 of file ILayerArrayCreator.h.

◆ LayerIndexSampleMap

typedef std::map<Trk::LayerIndex, int> Trk::LayerIndexSampleMap

Definition at line 29 of file LayerIndexSampleMap.h.

◆ LayerIntersection

template<class T >
using Trk::LayerIntersection = typedef FullIntersection<Layer, Surface, T>

Definition at line 84 of file TrackingVolume.h.

◆ LayerMaterialCollection

Definition at line 19 of file LayerMaterialCollection.h.

◆ LayerOrderPosition

Definition at line 37 of file LayerArrayCreator.h.

◆ ManagedTrackParmPtr

Definition at line 66 of file Extrapolator.h.

◆ mapiterator

typedef datamap::iterator Trk::mapiterator

Definition at line 29 of file AlSymMatBase.h.

◆ MaterialComponent

using Trk::MaterialComponent = typedef std::pair<Material, double>

Definition at line 31 of file VolumeConverter.h.

◆ MaterialPropertiesMatrix

Definition at line 25 of file ILayerMaterialAnalyser.h.

◆ MaterialPropertiesVector

Useful typedefs.

Definition at line 133 of file MaterialProperties.h.

◆ MaterialStepCollection

Definition at line 17 of file MaterialStepCollection.h.

◆ MB_IndexVector

typedef std::vector<std::pair<const Trk::MeasurementBase *, int> > Trk::MB_IndexVector

Definition at line 24 of file TrackFitInputPreparator.h.

◆ MeasuredPerigee

Definition at line 23 of file MeasuredPerigeeCnv_p1.h.

◆ MeasurementSet

using Trk::MeasurementSet = typedef std::vector<const MeasurementBase*>

vector of fittable measurements

Definition at line 30 of file FitterTypes.h.

◆ MultiComponentState

using Trk::MultiComponentState = typedef std::vector<ComponentParameters>

Definition at line 27 of file ComponentParameters.h.

◆ NavigationPair

Definition at line 36 of file Navigator.h.

◆ NeutralAtaCone

Definition at line 27 of file NeutralParameters.h.

◆ NeutralAtaCylinder

Definition at line 28 of file NeutralParameters.h.

◆ NeutralAtaDisc

Definition at line 29 of file NeutralParameters.h.

◆ NeutralAtaPlane

Definition at line 31 of file NeutralParameters.h.

◆ NeutralAtaStraightLine

Definition at line 32 of file NeutralParameters.h.

◆ NeutralCurvilinearParameters

Definition at line 26 of file NeutralParameters.h.

◆ NeutralParameters

Definition at line 25 of file NeutralParameters.h.

◆ NeutralPerigee

Definition at line 30 of file NeutralParameters.h.

◆ noinit_vector

template<class T >
using Trk::noinit_vector = typedef std::vector<T, boost::noinit_adaptor<std::allocator<T> > >

A variant on std::vector which leaves its contents uninitialized by default.

Definition at line 50 of file TrkVKalUtils.h.

◆ Perigee

◆ PerigeeSurface_p1

Definition at line 22 of file PerigeeSurfaceCnv_p1.h.

◆ PerigeeSurfacePtrHolder

Definition at line 22 of file SurfaceHolders.h.

◆ PerigeeSurfaceUniqHolder

Definition at line 30 of file SurfaceHolders.h.

◆ PlaneSurfacePtrHolder

Definition at line 23 of file SurfaceHolders.h.

◆ PlaneSurfaceUniqHolder

Definition at line 31 of file SurfaceHolders.h.

◆ PositionAndWeight

typedef std::pair< Amg::Vector3D , double > Trk::PositionAndWeight

Definition at line 17 of file SeedFinderParamDefs.h.

◆ PositionAtBoundary

Definition at line 28 of file MaterialValidation.h.

◆ PrepRawDataSet

using Trk::PrepRawDataSet = typedef std::vector<const PrepRawData*>

vector of clusters and drift circles

Definition at line 26 of file FitterTypes.h.

◆ RIO_OnTrackSet

using Trk::RIO_OnTrackSet = typedef std::vector<const RIO_OnTrack*>

vector of detector hits on a track

Definition at line 34 of file FitterTypes.h.

◆ RIOtoROT_Multimap

Definition at line 19 of file RIO_OnTrackMap.h.

◆ RunOutlierRemoval

typedef bool Trk::RunOutlierRemoval

switch to toggle quality processing after fit

Definition at line 22 of file FitterTypes.h.

◆ SegmentCollection

Definition at line 13 of file SegmentCollection.h.

◆ SharedObject

template<class T >
using Trk::SharedObject = typedef std::shared_ptr<T>

Definition at line 24 of file SharedObject.h.

◆ SixObjectsAccessor

using Trk::SixObjectsAccessor = typedef std::array<ObjectAccessor::value_type, 6>

Definition at line 17 of file ObjectsAccessor.h.

◆ SortInputFlag

typedef bool Trk::SortInputFlag

switch to toggle sorting

Definition at line 21 of file TrackFitInputPreparator.h.

◆ SpacePointSet

using Trk::SpacePointSet = typedef std::vector<const SpacePoint*>

vector of space points

Definition at line 38 of file FitterTypes.h.

◆ StraightLineSurfacePtrHolder

Definition at line 24 of file SurfaceHolders.h.

◆ StraightLineSurfaceUniqHolder

Definition at line 32 of file SurfaceHolders.h.

◆ SurfaceArray

Definition at line 41 of file Layer.h.

◆ SurfaceIntersection

Definition at line 40 of file Layer.h.

◆ SurfaceOrderPosition

Definition at line 37 of file HGTD_LayerBuilderCond.h.

◆ SurfacePtrHolder

Definition at line 25 of file SurfaceHolders.h.

◆ SurfacePtrHolderDetEl

Definition at line 36 of file SurfaceHolders.h.

◆ SurfaceUniqHolder

Definition at line 34 of file SurfaceHolders.h.

◆ SurfaceUniquePtr

◆ SurfaceUniquePtrT

template<class S >
using Trk::SurfaceUniquePtrT = typedef std::unique_ptr<S, SurfaceDeleter<S> >

Definition at line 32 of file SurfaceUniquePtrT.h.

◆ TargetSurfaceVector

Definition at line 121 of file TargetSurfaces.h.

◆ ThreeObjectsAccessor

using Trk::ThreeObjectsAccessor = typedef std::array<ObjectAccessor::value_type, 3>

Definition at line 13 of file ObjectsAccessor.h.

◆ TrackingVolumeArray

simply for the eye

Definition at line 29 of file ITrackingVolumeArrayCreator.h.

◆ TrackingVolumeOrderPosition

using Trk::TrackingVolumeOrderPosition = typedef std::pair<std::shared_ptr<TrackingVolume>, Amg::Vector3D>

Definition at line 34 of file MuonTrackingGeometryBuilderImpl.h.

◆ TrackMatchMultiMap

Definition at line 25 of file TrackMatchingMultiMap.h.

◆ TrackParameters

◆ TrackParametersUVector

typedef std::vector<std::unique_ptr<Trk::TrackParameters> > Trk::TrackParametersUVector

Definition at line 61 of file Extrapolator.h.

◆ TrackParametersVector

Definition at line 55 of file TimedExtrapolator.h.

◆ TrackParametersWithPath

typedef std::pair<const TrackParameters*, double> Trk::TrackParametersWithPath

typedef for return type TrackParameters, pathlength

Definition at line 42 of file IPropagator.h.

◆ TrackParmContainer

Definition at line 64 of file Extrapolator.h.

◆ TrackParmPtr

using Trk::TrackParmPtr = typedef ObjRef

Definition at line 65 of file Extrapolator.h.

◆ TrackParticleBaseCollection

Definition at line 14 of file TrackParticleBaseCollection.h.

◆ TrackParticleOrigin

Definition at line 34 of file TrackParticleBase.h.

◆ TrackRoadCollection

Definition at line 14 of file TrackRoadCollection.h.

◆ TrackScore

typedef float Trk::TrackScore

Definition at line 10 of file TrackScore.h.

◆ TrackSeedMap

typedef std::multimap<const Trk::Track* , int> Trk::TrackSeedMap

Definition at line 14 of file TrackSeedMap.h.

◆ TracksScores

typedef std::vector<std::pair<const Track*, float> > Trk::TracksScores

Definition at line 20 of file ITrackAmbiguityProcessorTool.h.

◆ TrackStates

Definition at line 30 of file Tracking/TrkEvent/TrkTrack/TrkTrack/Track.h.

◆ TrackTruthCollection_p0

Definition at line 22 of file TrackTruthCollectionCnv_p0.h.

◆ TrkParametersComparisonFunction

Definition at line 26 of file TrkParametersComparisonFunction.h.

◆ TS_iterator

Definition at line 22 of file TrackFitInputPreparator.h.

◆ TwoPointOnTrack

Definition at line 19 of file SeedFinderParamDefs.h.

◆ TwoPoints

Definition at line 20 of file SeedFinderParamDefs.h.

◆ ValueMatrix

typedef std::vector<ValueVector> Trk::ValueMatrix

Definition at line 30 of file CompoundLayerMaterial.h.

◆ ValueVector

typedef std::vector<unsigned char> Trk::ValueVector

Definition at line 29 of file CompoundLayerMaterial.h.

◆ VertexID

typedef int Trk::VertexID

Definition at line 25 of file IVertexCascadeFitter.h.

◆ VolumePartVec

using Trk::VolumePartVec = typedef std::vector<VolumePart>

Definition at line 50 of file VolumeConverter.h.

◆ VxSecVertexInfoContainer

Definition at line 97 of file VxSecVertexInfo.h.

Enumeration Type Documentation

◆ anonymous enum

anonymous enum
Enumerator
NTrMaxVFit 

Definition at line 35 of file TrkVKalVrtFitter.h.

35 { NTrMaxVFit=200 };

◆ AlignMesType

Enumerator
Measurement 
Scatterer 
EnergyDeposit 

Definition at line 32 of file AlignResidualType.h.

32  {
34  Scatterer,
36  };

◆ AlignModuleListType

Type of AlignModuleList (see description above).

Enumerator
L0 
L1 
L2 
L3 
L1_5 
L2_5 
ModulesOnTrack 

Definition at line 32 of file AlignModuleList.h.

32  { L0=0,L1,L2,L3,
33  L1_5,L2_5,
35  };

◆ AlignResidualType

Enumerator
HitOnly 
Unbiased 

Definition at line 26 of file AlignResidualType.h.

26  {
27  HitOnly,
28  Unbiased
29 // DCA
30  };

◆ BevelledCylinderAccessorType

Enumerator
BevelledCylinderZincrease 

Cylinder hit, then pos.

Z face

BevelledCylinderZdecrease 

Cylinder hit, the neg.

Z face

BevelledCylinderPositiveFace 

Pos.

Z face, Cylinder, neg. Z face

BevelledCylinderNegativeFace 

Neg.

Z face, Cylinder, pos. Z face

Definition at line 18 of file BevelledCylinderVolumeBoundaryAccessors.h.

◆ BevelledTubeAccessorType

Enumerator
BevelledTubeRincreaseZincrease 

Accessor type [ 2,1,0,3 ].

BevelledTubeRincreaseZdecrease 

Accessor type [ 2,0,1,3 ].

BevelledTubeZincreaseRincrease 

Accessor type [ 1,2,0,3 ].

BevelledTubeZdecreaseRincrease 

Accessor type [ 0,2,1,3 ].

BevelledTubeRdecreaseZincrease 

Accessor type [ 3,1,0,2 ].

BevelledTubeRdecreaseZdecrease 

Accessor type [ 3,0,1,2 ].

BevelledTubeZincreaseRdecrease 

Accessor type [ 1,3,0,2 ].

BevelledTubeZdecreaseRdecrease 

Accessor type [ 0,3,1,2 ].

BevelledTubeOutsideRminRdecrease 

Accessor type [ 3,1,0,2] - inverse case.

BevelledTubeOutsideRmaxRincrease 

Accessor type [ 2,1,0,3 ] - inverse case.

BevelledTubeOutsideZminZdecrease 

Accessor type [ 0,3,2,1 ] - inverse case.

BevelledTubeOutsideZmaxZincrease 

Accessor type [ 1,3,2,0 ] - inverse case.

Definition at line 27 of file BevelledCylinderVolumeBoundaryAccessors.h.

◆ BinningOption

enum BinValue

Enumerator
open 
closed 

Definition at line 38 of file BinningType.h.

39 {
40  open,
41  closed
42 };

◆ BinningType

, BinningOption & BinningAccess

Enumerator
equidistant 
biequidistant 
arbitrary 

Definition at line 30 of file BinningType.h.

31 {
34  arbitrary
35 };

◆ BinningValue

how to take the global / local position

Enumerator
binX 
binY 
binZ 
binR 
binPhi 
binRPhi 
binH 
binEta 

Definition at line 45 of file BinningType.h.

46 {
47  binX,
48  binY,
49  binZ,
50  binR,
51  binPhi,
52  binRPhi,
53  binH,
54  binEta
55 };

◆ BoundaryCheckResult

Enumerator
Candidate 
OnEdge 

within the sensitive area of an active element

Insensitive 

close to the edge of an active element

Outside 

with the insensitive area of an active element

DeadElement 

outside the element

Error 

within the nominally active area of a dead element

error-state

Definition at line 14 of file IBoundaryCheckTool.h.

14  {
15  Candidate,
16  OnEdge,
17  Insensitive,
18  Outside,
19  DeadElement,
20  Error
21  };

◆ BoundarySurfaceFace

Enum to describe the position of the BoundarySurface respectively to the frame orientatin of the volume, this is mainly ment for code readability.

The different numeration sequences can be found in the documentation of the actual VolumeBounds implementations.

The order of faces is chosen to follow - as much as possible - a cycular structure.

Author
Andre.nosp@m.as.S.nosp@m.alzbu.nosp@m.rger.nosp@m.@cern.nosp@m..ch
Enumerator
negativeFaceXY 
positiveFaceXY 
negativeFaceYZ 
positiveFaceYZ 
negativeFaceZX 
positiveFaceZX 
cylinderCover 
tubeInnerCover 
tubeOuterCover 
tubeSectorNegativePhi 
tubeSectorPositivePhi 
tubeSectorInnerCover 
tubeSectorOuterCover 
trapezoidFaceAlpha 
trapezoidFaceBeta 
index0 
index1 
index2 
index3 
index4 
index5 
index6 
index7 
index8 
index9 
index10 
index11 
undefinedFace 

Definition at line 31 of file BoundarySurfaceFace.h.

31  {
32  negativeFaceXY = 0,
33  positiveFaceXY = 1,
34  negativeFaceYZ = 2,
35  positiveFaceYZ = 3,
36  negativeFaceZX = 4,
37  positiveFaceZX = 5,
38  cylinderCover = 2,
39  tubeInnerCover = 3,
40  tubeOuterCover = 2,
47  index0 = 0,
48  index1 = 1,
49  index2 = 2,
50  index3 = 3,
51  index4 = 4,
52  index5 = 5,
53  index6 = 6,
54  index7 = 7,
55  index8 = 8,
56  index9 = 9,
57  index10 = 10,
58  index11 = 11,
59  undefinedFace = 99
60 
61 };

◆ CylinderAccessorType

Enumerator
CylinderZincrease 

Cylinder hit, then pos.

Z face

CylinderZdecrease 

Cylinder hit, the neg.

Z face

CylinderPositiveFace 

Pos.

Z face, Cylinder, neg. Z face

CylinderNegativeFace 

Neg.

Z face, Cylinder, pos. Z face

Definition at line 17 of file CylinderVolumeBoundaryAccessors.h.

17  {
18  CylinderZincrease = 0,
19  CylinderZdecrease = 1,
22 
23 };

◆ DetectorElemType

enum Trk::DetectorElemType
strong
Enumerator
SolidState 
Silicon 
TRT 
Csc 
Mdt 
Rpc 
Tgc 
sTgc 
MM 

Definition at line 38 of file TrkDetElementBase.h.

39 {
40  SolidState = 0,
41  Silicon = 1,
42  TRT = 2,
43  Csc = 3,
44  Mdt = 4,
45  Rpc = 5,
46  Tgc = 6,
47  sTgc = 7,
48  MM = 8
49 };

◆ DetectorRegion

Enumerator
pixelBarrelFlat 
pixelBarrelInclined 
pixelEndcap 
stripBarrel 
stripEndcap 

Definition at line 13 of file DetailedHitInfo.h.

13  {
14  pixelBarrelFlat = 0,
16  pixelEndcap = 2,
17  stripBarrel = 3,
18  stripEndcap = 4
19  };

◆ DetectorType

enumerates the various detector types currently accessible from the isHit() method.

Todo:
work out how to add muons to this
Enumerator
pixelBarrel0 

there are three or four pixel barrel layers (R1/R2)

pixelBarrel1 
pixelBarrel2 
pixelBarrel3 
pixelEndCap0 

three pixel discs (on each side)

pixelEndCap1 
pixelEndCap2 
sctBarrel0 

four sct barrel layers

sctBarrel1 
sctBarrel2 
sctBarrel3 
sctEndCap0 

and 9 sct discs (on each side)

sctEndCap1 
sctEndCap2 
sctEndCap3 
sctEndCap4 
sctEndCap5 
sctEndCap6 
sctEndCap7 
sctEndCap8 
trtBarrel 
trtEndCap 
DBM0 
DBM1 
DBM2 
numberOfDetectorTypes 

Definition at line 230 of file Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h.

231 {
232  pixelBarrel0 = 0,
233  pixelBarrel1 = 1,
234  pixelBarrel2 = 2,
235  pixelBarrel3 = 3,
236 
237  pixelEndCap0 = 4,
238  pixelEndCap1 = 5,
239  pixelEndCap2 = 6,
240 
241  sctBarrel0 = 7,
242  sctBarrel1 = 8,
243  sctBarrel2 = 9,
244  sctBarrel3 = 10,
245 
246  sctEndCap0 = 11,
247  sctEndCap1 = 12,
248  sctEndCap2 = 13,
249  sctEndCap3 = 14,
250  sctEndCap4 = 15,
251  sctEndCap5 = 16,
252  sctEndCap6 = 17,
253  sctEndCap7 = 18,
254  sctEndCap8 = 19,
255 
256  trtBarrel = 20,
257  trtEndCap = 21,
258 
259  DBM0 = 22,
260  DBM1 = 23,
261  DBM2 = 24,
262 
264 
265 }; // not complete yet

◆ DriftCircleSide

Enumerates the 'side' of the wire on which the tracks passed (i.e.

resolves the amibiguity) (based on the TRT_Side enum, from InDet::TRT_DriftCircleOnTrack, which this should eventually replace)

Author
edwar.nosp@m.d.mo.nosp@m.yse@c.nosp@m.ern..nosp@m.ch
Enumerator
NONE 

it was not possible to determine the which side of the straw the track passed;

LEFT 

the drift radius is negative (see Trk::AtaStraightLine)

RIGHT 

the drift radius is positive (see Trk::AtaStraightLine)

Definition at line 15 of file DriftCircleSide.h.

16  {
18  NONE,
20  LEFT,
22  RIGHT
23  };

◆ DriftCircleStatus

Enumerates the 'status' of the wire on which the tracks passed (based on the TRT_Side enum, from InDet::TRT_DriftCircleOnTrack, which this should eventually replace)

Author
edwar.nosp@m.d.mo.nosp@m.yse@c.nosp@m.ern..nosp@m.ch
Enumerator
DECIDED 

sign of drift radius has been determined

UNDECIDED 

sign of drift radius has not been determined

CORRUPT 

the measurement is corrupt, but for some reason has been left on a track.

NODRIFTTIME 

drift time was not used - drift radius is 0.

Definition at line 15 of file DriftCircleStatus.h.

16  {
18  DECIDED,
20  UNDECIDED,
22  CORRUPT,
25  };

◆ eProbabilityType

Enumerator
eProbabilityComb 

Electron probability from combining the below probabilities.

eProbabilityHT 

Electron probability from High Threshold (HT) information.

eProbabilityToT 

Electron probability from Time-Over-Threshold (ToT) information.

eProbabilityBrem 

Electron probability from Brem fitting (DNA).

eProbabilityNN 

Electron probability from NN.

TRTTrackOccupancy 

TRT track occupancy.

TRTdEdx 

dEdx from TRT ToT measurement.

eProbabilityNumberOfTRTHitsUsedFordEdx 

Number of TRT hits used for dEdx measurement.

numberOfeProbabilityTypes 

Definition at line 208 of file Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h.

209 {
211  0,
213  1,
215  2,
216  eProbabilityBrem = 3,
217  eProbabilityNN = 4,
218  TRTTrackOccupancy = 5,
219  TRTdEdx = 6,
221  7,
223 };

◆ ExtraLocalPosParam

Enumerator
distDepth 

Definition at line 19 of file SiLocalPosition.h.

19 {distDepth = 2}; // These will be defined in Trk soon.

◆ ExtrapolationType

Enumerator
FittedTrajectory 
DeltaD0 
DeltaZ0 
DeltaPhi0 
DeltaTheta0 
DeltaQOverP0 
DeltaQOverP1 
ExtrapolationTypes 

Definition at line 18 of file ExtrapolationType.h.

18  {
20  DeltaD0,
21  DeltaZ0,
22  DeltaPhi0,
27 };

◆ GeometrySignature

Enumerator
Global 
ID 
BeamPipe 
Calo 
MS 
Cavern 
HGTD 
NumberOfSignatures 
Unsigned 

Definition at line 23 of file GeometrySignature.h.

24 {
25  Global = 0,
26  ID = 1,
27  BeamPipe = 2,
28  Calo = 3,
29  MS = 4,
30  Cavern = 5,
31  HGTD = 6,
33  Unsigned = 99
34 };

◆ GeometryType

Enumerator
Static 
Dense 
DenseWithLayers 
Detached 
Master 
NumberOfGeometryTypes 

Definition at line 36 of file GeometrySignature.h.

37 {
38  Static = 0,
39  Dense = 1,
40  DenseWithLayers = 1,
41  Detached = 2,
42  Master = 3,
44 };

◆ JetVtxParamDefs

Author
Nicol.nosp@m.a.Gi.nosp@m.acint.nosp@m.o.Pi.nosp@m.acqua.nosp@m.dio@.nosp@m.cern..nosp@m.ch
Chris.nosp@m.tian.nosp@m..Weis.nosp@m.er@c.nosp@m.ern.c.nosp@m.h
Enumerator
jet_xv 
jet_yv 
jet_zv 

position x,y,z of primary vertex

jet_phi 
jet_theta 
jet_dist 

Definition at line 25 of file JetVtxParamDefs.h.

25  {
26  // Enums for vertex position on the jet axis starting from the primary vertex
27  jet_xv=0, jet_yv=1, jet_zv=2,
28  jet_phi=3,jet_theta=4, //direction of the jet axis (flight direction of B hadron),
29  jet_dist=5 //distance of vertex on jet axis from primary vertex
30  };

◆ LayerOrder

This enum is used to declare Layers as previous/next in respect of a 1-dimensional binned array

Enumerator
previous 
next 

Definition at line 30 of file BinningData.h.

31 {
32  previous = -1,
33  next = 1
34 };

◆ LayerType

For readability

Enumerator
passive 
active 

Definition at line 48 of file Layer.h.

48 { passive = 0, active = 1 };

◆ MagneticFieldMode

MagneticFieldMode describing the field setup within a volume

Author
Andre.nosp@m.as.S.nosp@m.alzbu.nosp@m.rger.nosp@m.@cern.nosp@m..ch
Enumerator
NoField 

Field is set to 0., 0., 0.,.

ConstantField 

Field is set to be constant.

FastField 

call the fast field access method of the FieldSvc

FullField 

Field is set to be realistic, but within a given Volume.

Definition at line 17 of file MagneticFieldMode.h.

17  {
18  NoField = 0,
19  ConstantField = 1,
20  FastField = 2,
21  FullField = 3
22 };

◆ MaterialAssociationType

Enumerator
EffectiveNumSteps 
EffectiveNumAtoms 
RadiationLength 
StepLength 

Definition at line 12 of file MaterialAssociationType.h.

13 {
14  EffectiveNumSteps = 0, // cout the number of steps per layer
15  EffectiveNumAtoms = 1, // compute the effective number of atoms
16  RadiationLength = 2, // weight by radiation length
17  StepLength = 4
18 };

◆ MaterialConcentration

Simple enum to identify when a material update on a non-structured layer should be done, options are alongPre and oppositePre.

Enumerator
alongPre 
split 
oppositePre 

Definition at line 38 of file LayerMaterialProperties.h.

38 { alongPre = 1, split = 0, oppositePre = -1 };

◆ MaterialUpdateMode

This is a steering enum to force the material update it can be: (1) addNoise (-1) removeNoise Second is mainly for vertex reconstruction, but potentially dangeraous.

Enumerator
addNoise 
removeNoise 

Definition at line 17 of file MaterialUpdateMode.h.

18 {
19  addNoise = 1,
20  removeNoise = -1
21 };

◆ MaterialUpdateStage

This is a steering enum to tell which material update stage:

  • preUpdate : when reaching a layer before layer is resolved
  • fullUpdate : just pass through the layer
  • postUpdate : when leaving the layer
Enumerator
preUpdate 
fullUpdate 
postUpdate 

Definition at line 39 of file PropDirection.h.

40  {
41 
42  preUpdate = -1,
43  fullUpdate = 0,
44  postUpdate = 1
45  };

◆ MeasurementType

Enumerator
perigeeParameters 
transverseVertex 
vertex 
pixelCluster 
stripCluster 
trapezoidCluster 
driftCircle 
pseudoMeasurement 
barrelScatterer 
endcapScatterer 
calorimeterScatterer 
barrelInert 
endcapInert 
energyDeposit 
alignment 
discontinuity 
bremPoint 
hole 
materialDelimiter 

Definition at line 18 of file MeasurementType.h.

◆ NavigationLevel

destinguishes an association TrackingGeometry with one for global search

Enumerator
noNavigation 
globalSearch 
association 

Definition at line 42 of file TrackingGeometry.h.

43 {
44  noNavigation = 0,
45  globalSearch = 1,
46  association = 2
47 };

◆ ParamDefs

Enumerator
loc1 
loc2 

generic first and second local coordinate

locX 
locY 

local cartesian

locRPhi 
locPhiR 
locZ 

local cylindrical

locR 
locPhi 

local polar

iPhi 
iEta 

(old readout) will be skipped

distPhi 
distEta 

readout for silicon

driftRadius 

trt, straws

global position (cartesian)

px 
py 
pz 

global momentum (cartesian)

d0 
z0 
phi0 
theta 
qOverP 

perigee

phi 

Enums for curvilinear frames.

trkMass 

Extended perigee: mass.

Definition at line 38 of file ParamDefs.h.

38  {
39  // Enums for LocalParameters - LocalPosition/
40  loc1 = 0,
41  loc2 = 1,
42 
43  locX = 0,
44  locY = 1,
45 
46  locRPhi = 0,
47  locPhiR = 0,
48  locZ = 1,
49 
50  locR = 0,
51  locPhi = 1,
52 
53  iPhi = 0,
54  iEta = 1,
55 
56  distPhi = 0,
57  distEta = 1,
58 
59  driftRadius = 0,
60  // Enums for const Amg::Vector3D & GlobalMomentum /
61  x = 0,
62  y = 1,
63  z = 2,
64 
65  px = 0,
66  py = 1,
67  pz = 2,
68  // Enums for PerigParamDefsee //
69  d0 = 0,
70  z0 = 1,
71  phi0 = 2,
72  theta = 3,
73  qOverP = 4,
74  /* Enums for TrackState on Surfaces
75  The first two enums in the TrackParameters refer to the local Frame, i.e.
76  - LocalCartesian for AtanArbitraryPlane
77  - LocalCylindrical for AtaCylinder (includes line)
78  - LocalPolar for AtaDisc
79  The other three enums are standard \f$(\phi, \eta, \frac{q}{p_{T}})\f$
80  */
81  phi = 2,
83  u = 0,
84  v = 1,
85 
87  trkMass = 5
88 };

◆ ParametersType

Enum to avoid dynamic cast for different parameter types.

Enumerator
AtaSurface 
Curvilinear 
Curvilinear 
Pattern 

Definition at line 29 of file ParametersCommon.h.

29 { AtaSurface = 0, Curvilinear = 1, Pattern = 2 };

◆ ParameterType

Enumerator
D0 
Z0 
Phi0 
Theta0 
QOverP0 
QOverP1 
ParameterTypes 

Definition at line 18 of file ParameterType.h.

◆ ParticleHypothesis

Enumerator
nonInteracting 
geantino 
electron 
muon 
pion 
kaon 
proton 
photon 
neutron 
pi0 
k0 
nonInteractingMuon 
noHypothesis 
undefined 

Definition at line 25 of file ParticleHypothesis.h.

25  { nonInteracting = 0,
26  geantino = 0,
27  electron = 1,
28  muon = 2,
29  pion = 3,
30  kaon = 4,
31  proton = 5,
32  photon = 6, // for Fatras usage
33  neutron = 7, // for Fatras usage
34  pi0 = 8, // for Fatras usage
35  k0 = 9, // for Fatras usage
36  nonInteractingMuon = 10, // For material collection
37  noHypothesis = 99,
38  undefined = 99};

◆ PrepRawDataType

enum Trk::PrepRawDataType
strong
Enumerator
SiCluster 
PixelCluster 
SCT_Cluster 
TRT_DriftCircle 
HGTD_Cluster 
PlanarCluster 
MdtPrepData 
CscStripPrepData 
CscPrepData 
MMPrepData 
RpcPrepData 
TgcPrepData 
sTgcPrepData 

Definition at line 38 of file PrepRawData.h.

39 {
40  SiCluster,
49  MMPrepData,
53 };

◆ PropDirection

PropDirection, enum for direction of the propagation.

Author
Andre.nosp@m.as.S.nosp@m.alzbu.nosp@m.rger.nosp@m.@cern.nosp@m..ch
Enumerator
alongMomentum 
oppositeMomentum 
anyDirection 
mappingMode 

Definition at line 19 of file PropDirection.h.

19  {
20  alongMomentum = 1,
21  oppositeMomentum =-1,
22  anyDirection = 0,
23  mappingMode = 2
24  };

◆ RangeCheckDef

Enumerator
absoluteCheck 
differentialCheck 

Definition at line 55 of file KalmanUpdatorSMatrix.h.

56 {
57  absoluteCheck = 0,
59 };

◆ RQESolutionType [1/2]

Enumerator
none 
one 
two 
none 
one 
two 

Definition at line 19 of file TrkDetDescr/TrkSurfaces/TrkSurfaces/RealQuadraticEquation.h.

20 {
21  none = 0,
22  one = 1,
23  two = 2
24 };

◆ RQESolutionType [2/2]

Enumerator
none 
one 
two 
none 
one 
two 

Definition at line 19 of file TrkExtrapolation/TrkExUtils/TrkExUtils/RealQuadraticEquation.h.

20 {
21  none = 0,
22  one = 1,
23  two = 2
24 };

◆ SearchDirection

Enumerator
outside 
inside 
bothway 
undefinedDirection 

Definition at line 29 of file PropDirection.h.

29  { outside=1, inside=-1,

◆ SectoralBevelledCylinderAccessorType

Todo:
implement correcly when needed
Enumerator
StandardSectoralBevelledCylinder 

Definition at line 47 of file BevelledCylinderVolumeBoundaryAccessors.h.

47  {
49  };

◆ SectoralBevelledTubeAccessorType

Enumerator
StandardSectoralBevelledTube 

Definition at line 54 of file BevelledCylinderVolumeBoundaryAccessors.h.

54  {
56  };

◆ SectoralCylinderAccessorType

Todo:
implement correcly when needed
Enumerator
StandardSectoralCylinder 

Definition at line 46 of file CylinderVolumeBoundaryAccessors.h.

◆ SectoralTubeAccessorType

Todo:
implement correcly when needed
Todo:
implement correcly when needed
Enumerator
StandardSectoralTube 

Definition at line 51 of file CylinderVolumeBoundaryAccessors.h.

51 { StandardSectoralTube = 0 };

◆ SummaryType

enumerates the different types of information stored in Summary.

Use in get(const SummaryType type), for for example, summary.get(numOfPixelHits) When adding a new transient information type, please make sure to increase numberOfTrackSummaryTypes.

Enumerator
numberOfContribPixelLayers 

number of contributing layers of the pixel detector

these are the hits in the first pixel layer, i.e. b-layer

numberOfBLayerHits 

these are the hits in the 0th pixel layer?

numberOfInnermostPixelLayerHits 

these are the hits in the 1st pixel layer

numberOfNextToInnermostPixelLayerHits 

these are the pixel hits, including the b-layer

numberOfPixelHits 

number of pixel layers on track with absence of hits

numberOfPixelHoles 

number of pixels which have a ganged ambiguity.

numberOfGangedPixels 

number of Ganged Pixels flagged as fakes

numberOfGangedFlaggedFakes 

number of dead pixel sensors crossed

numberOfPixelDeadSensors 

number of pixel hits with broad errors (width/sqrt(12))

numberOfPixelSpoiltHits 

number of DBM Hits

numberOfDBMHits 

number of hits in SCT

numberOfSCTHits 

number of SCT holes

numberOfSCTHoles 

number of Holes in both sides of a SCT module

numberOfSCTDoubleHoles 
numberOfSCTDeadSensors 

number of TRT hits

numberOfSCTSpoiltHits 
numberOfTRTHits 

number of TRT outliers

numberOfTRTOutliers 

number of TRT holes

numberOfTRTHoles 

number of TRT hits which pass the high threshold (only xenon counted) total number of TRT hits which pass the high threshold

numberOfTRTHighThresholdHits 

total number of TRT hits which pass the high threshold

numberOfTRTHighThresholdHitsTotal 

number of TRT hits used for dE/dx computation

numberOfTRTHitsUsedFordEdx 

number of TRT high threshold outliers (only xenon counted)

numberOfTRTHighThresholdOutliers 

number of dead TRT straws crossed

numberOfTRTDeadStraws 

number of TRT tube hits

numberOfTRTTubeHits 

number of TRT hits on track in straws with xenon

numberOfTRTXenonHits 
numberOfMdtHits 

number of mdt hits

tgc, rpc and csc measure both phi and eta coordinate

numberOfTgcPhiHits 
numberOfTgcEtaHits 
numberOfCscPhiHits 
numberOfCscEtaHits 
numberOfRpcPhiHits 
numberOfRpcEtaHits 
numberOfCscEtaHoles 

number of CSC Eta measurements missing from the track

numberOfCscPhiHoles 

number of CSC Phi measurements missing from the track

numberOfRpcEtaHoles 

number of RPC Eta measurements missing from the track

numberOfRpcPhiHoles 

number of RPC Phi measurements missing from the track

numberOfMdtHoles 

number of MDT measurements missing from the track

numberOfTgcEtaHoles 

number of TGC Eta measurements missing from the track

numberOfTgcPhiHoles 

number of TGC Phi measurements missing from the track

numberOfStgcEtaHits 

number of TGC Eta measurements missing from the track

numberOfStgcPhiHits 

number of TGC Phi measurements missing from the track

numberOfMmHits 

number of TGC Eta measurements missing from the track

numberOfStgcEtaHoles 

number of TGC Eta measurements missing from the track

numberOfStgcPhiHoles 

number of TGC Phi measurements missing from the track

numberOfMmHoles 

number of TGC Eta measurements missing from the track

numberOfCscUnspoiltEtaHits 

number of unspoilt CSC eta measurements (all CSC phi measurements are by definition spoilt).

See Muon::CscClusterStatus for definitions of 'spoiled' hits.

numberOfGoodMdtHits 

number of non-deweighted MDT hits.

Only here as a placeholder, will be filled only on xAOD::Muon number of measurements flaged as outliers in TSOS

numberOfOutliersOnTrack 

100 times the standard deviation of the chi2 from the surfaces

standardDeviationOfChi2OS 
legacy_eProbabilityComb_res 
legacy_eProbabilityHT_res 
legacy_eProbabilityToT_res 
legacy_eProbabilityBrem_res 
legacy_pixeldEdx_res 
legacy_eProbabilityNN_res 
legacy_TRTTrackOccupancy_res 
legacy_TRTdEdx_res 
legacy_expectBLayerHit 
legacy_expectInnermostPixelLayerHit 
legacy_expectNextToInnermostPixelLayerHit 
legacy_numberOfBLayerSharedHits 
legacy_numberOfPixelSharedHits 
legacy_numberOfSCTSharedHits 
legacy_numberOfBLayerSplitHits 
legacy_numberOfPixelSplitHits 
legacy_numberOfInnermostPixelLayerSharedHits 
legacy_numberOfInnermostLayerSplitHits 
legacy_numberOfNextToInnermostPixelLayerSharedHits 
legacy_numberOfNextToInnermostLayerSplitHits 
legacy_numberOfTRTSharedHits 
legacy_numberOfBLayerOutliers 
legacy_numberOfInnermostPixelLayerOutliers 
legacy_numberOfNextToInnermostPixelLayerOutliers 
legacy_numberOfPixelOutliers 
legacy_numberOfSCTOutliers 
numberOfTrackSummaryTypes 

Definition at line 44 of file Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h.

45 {
46  // --- Inner Detector
48 
69  numberOfDBMHits = 63,
71  numberOfSCTHits = 3,
73  numberOfSCTHoles = 4,
79  numberOfTRTHits = 5,
83  numberOfTRTHoles = 40,
100 
101  // --- Muon Spectrometer
103  numberOfMdtHits = 7,
105  numberOfTgcPhiHits = 8,
106  numberOfTgcEtaHits = 9,
107  numberOfCscPhiHits = 10,
108  numberOfCscEtaHits = 11,
109  numberOfRpcPhiHits = 12,
110  numberOfRpcEtaHits = 13,
112  numberOfCscEtaHoles = 21,
114  numberOfCscPhiHoles = 22,
116  numberOfRpcEtaHoles = 23,
118  numberOfRpcPhiHoles = 24,
120  numberOfMdtHoles = 25,
122  numberOfTgcEtaHoles = 26,
124  numberOfTgcPhiHoles = 27,
125 
126  // New Small Wheel
128  numberOfStgcEtaHits = 67,
130  numberOfStgcPhiHits = 68,
132  numberOfMmHits = 69,
138  numberOfMmHoles = 72,
145  // --- all
146  numberOfGoodMdtHits = 66,
151 
152  // reserved: added to keep synchronisation with xAOD::TrackSummary in
153  // anticipation of the two being merged
154  // in the past used to store pixel and TRT PID information:
162  legacy_TRTdEdx_res = 75,
163 
164  // in the past used to store expected inner layer hits
168 
169  // in the past used to store shared hits
180 
181  // in the past used to store pixel and SCT outliers
187 
188  // -- numbers...
190 };

◆ SurfaceOwner

Enumerator
noOwn 
TGOwn 
DetElOwn 
userOwn 

Definition at line 52 of file Tracking/TrkDetDescr/TrkSurfaces/TrkSurfaces/Surface.h.

53 {
54  noOwn = 0,
55  TGOwn = 1,
56  DetElOwn = 2,
57  userOwn = 3
58 };

◆ SurfaceType

enum Trk::SurfaceType
strong
Enumerator
Cone 
Cylinder 
Disc 
Perigee 
Plane 
Line 
Curvilinear 
Other 

Definition at line 16 of file SurfaceTypes.h.

17 {
18  Cone = 0,
19  Cylinder = 1,
20  Disc = 2,
21  Perigee = 3,
22  Plane = 4,
23  Line = 5,
24  Curvilinear = 6,
25  Other = 7
26 };

◆ SurfNavigType

typedef for surface and volume navigation types

Enumerator
Target 
BoundaryFrame 
BoundaryDetached 
SensitiveLayer 
MaterialLayer 

Definition at line 38 of file TargetSurfaces.h.

39 {
40  Target = 0,
41  BoundaryFrame = 1,
42  BoundaryDetached = 2,
43  SensitiveLayer = 3, // sensitive layer
44  MaterialLayer = 4 // material layer
45 };

◆ TRT_ElectronPidProbability

Enumerator
Combined 
HighThreshold 
TimeOverThreshold 
Bremsstrahlung 

Definition at line 30 of file TrackSummaryTool.h.

31 {
32  Combined = 0,
33  HighThreshold = 1,
35  Bremsstrahlung = 3
36 };

◆ TubeAccessorType

Enumerator
TubeRincreaseZincrease 

Accessor type [ 2,1,0,3 ].

TubeRincreaseZdecrease 

Accessor type [ 2,0,1,3 ].

TubeZincreaseRincrease 

Accessor type [ 1,2,0,3 ].

TubeZdecreaseRincrease 

Accessor type [ 0,2,1,3 ].

TubeRdecreaseZincrease 

Accessor type [ 3,1,0,2 ].

TubeRdecreaseZdecrease 

Accessor type [ 3,0,1,2 ].

TubeZincreaseRdecrease 

Accessor type [ 1,3,0,2 ].

TubeZdecreaseRdecrease 

Accessor type [ 0,3,1,2 ].

TubeOutsideRminRdecrease 

Accessor type [ 3,1,0,2] - inverse case.

TubeOutsideRmaxRincrease 

Accessor type [ 2,1,0,3 ] - inverse case.

TubeOutsideZminZdecrease 

Accessor type [ 0,3,2,1 ] - inverse case.

TubeOutsideZmaxZincrease 

Accessor type [ 1,3,2,0 ] - inverse case.

Definition at line 26 of file CylinderVolumeBoundaryAccessors.h.

◆ TVNavigType

Enumerator
Unknown 
Frame 
AlignableVolume 
DenseVolume 

Definition at line 46 of file TargetSurfaces.h.

47 {
48  Unknown = 0,
49  Frame = 1, // static volume
50  AlignableVolume = 2, // alignable volume
51  DenseVolume = 3 // dense alignable volume
52 };

◆ VertexType

Enumerator
NoVtx 

Dummy vertex, TrackParticle was not used in vertex fit.

PriVtx 

Primary Vertex.

SecVtx 

Secondary Vertex.

PileUp 

Pile Up Vertex.

ConvVtx 

Converstion Vertex.

V0Vtx 

Vertex from V0 Decay.

KinkVtx 

Kink Vertex.

V0Lambda 

Temporary addition for V0 Lambda.

V0LambdaBar 

Temporary addition for V0 LambdaBar.

V0KShort 

Temporary addition for KShort.

NotSpecified 

this is the default

Definition at line 24 of file VertexType.h.

25 {
26  NoVtx = 0,
27  PriVtx = 1,
28  SecVtx = 2,
29  PileUp = 3,
30  ConvVtx = 4,
31  V0Vtx = 5,
32  KinkVtx = 6,
33  V0Lambda = 7,
34  V0LambdaBar = 8,
35  V0KShort = 9,
36  NotSpecified = -99
37 };

◆ VKContraintType

enum Trk::VKContraintType
strong
Enumerator
Mass 
Phi 
Theta 
Point 
Plane 

Definition at line 23 of file Derivt.h.

23 { Mass, Phi, Theta, Point, Plane };

Function Documentation

◆ abcCoef()

void Trk::abcCoef ( double  g1,
double  g2,
double  g3,
double &  a,
double &  b,
double &  c 
)

Definition at line 260 of file Tracking/TrkVertexFitter/TrkVKalVrtCore/src/Utilities.cxx.

263 {
264  a=g1;
265  c=2.*(g3-g1) - 4.*(g2-g1);
266  b=(g3-g1) - c;
267 }

◆ addCrossVertexDeriv()

void Trk::addCrossVertexDeriv ( CascadeEvent cascadeEvent_,
double *  ader,
long int  MATRIXSIZE,
const std::vector< int > &  matrixPnt 
)

Definition at line 207 of file CascadeUtils.cxx.

208 {
209  int iv,ivn;
210  //for( iv=0; iv<cascadeEvent_.cascadeNV; iv++)std::cout<<matrixPnt[iv]<<", ";std::cout<<'\n';
211 
212  for( iv=0; iv<cascadeEvent_.cascadeNV; iv++){
213  VKVertex *vk = cascadeEvent_.cascadeVertexList[iv].get();
214  if(!vk->nextCascadeVrt)continue; //no pointing
215  for( ivn=iv; ivn<cascadeEvent_.cascadeNV; ivn++){
216  if(vk->nextCascadeVrt == cascadeEvent_.cascadeVertexList[ivn].get()) break; //vertex found
217  }
218  if( ivn == cascadeEvent_.cascadeNV ) continue; // no found vertex
219 //
220 // Now we have vertex pair "from"(iv) "to"(ivn)
221  int From=matrixPnt[iv]; // start of "from" information
222  int Next=matrixPnt[iv+1]; // start of "next vertex" information. Pnt.constraints are 2 prevous param.!!!
223  int Into=matrixPnt[ivn]; // start of "to" information
224 //
225 // The same constraints, but derivatives are with respect to other ("to") vertex
226  ader[(0+Into) + (Next-1)*MATRIXSIZE] = - ader[(0+From) + (Next-1)*MATRIXSIZE];
227  ader[(1+Into) + (Next-1)*MATRIXSIZE] = - ader[(1+From) + (Next-1)*MATRIXSIZE];
228  ader[(2+Into) + (Next-1)*MATRIXSIZE] = - ader[(2+From) + (Next-1)*MATRIXSIZE];
229  ader[(0+Into) + (Next-2)*MATRIXSIZE] = - ader[(0+From) + (Next-2)*MATRIXSIZE];
230  ader[(1+Into) + (Next-2)*MATRIXSIZE] = - ader[(1+From) + (Next-2)*MATRIXSIZE];
231  ader[(2+Into) + (Next-2)*MATRIXSIZE] = - ader[(2+From) + (Next-2)*MATRIXSIZE];
232  ader[(0+Into)*MATRIXSIZE + (Next-1)] = - ader[(0+From) + (Next-1)*MATRIXSIZE];
233  ader[(1+Into)*MATRIXSIZE + (Next-1)] = - ader[(1+From) + (Next-1)*MATRIXSIZE];
234  ader[(2+Into)*MATRIXSIZE + (Next-1)] = - ader[(2+From) + (Next-1)*MATRIXSIZE];
235  ader[(0+Into)*MATRIXSIZE + (Next-2)] = - ader[(0+From) + (Next-2)*MATRIXSIZE];
236  ader[(1+Into)*MATRIXSIZE + (Next-2)] = - ader[(1+From) + (Next-2)*MATRIXSIZE];
237  ader[(2+Into)*MATRIXSIZE + (Next-2)] = - ader[(2+From) + (Next-2)*MATRIXSIZE];
238  }
239 }

◆ addToInverseMultiMap()

template<class OrigMap , class CmpT >
void Trk::addToInverseMultiMap ( InverseMultiMap< OrigMap, CmpT > *  result,
const OrigMap &  rec2truth 
)

Definition at line 50 of file InverseMultiMap.h.

51  {
52  for (const auto& p : rec2truth) {
53  result->insert(std::make_pair(p.second, p.first));
54  }
55 }

◆ afterFit()

int Trk::afterFit ( VKVertex vk,
double *  ader,
double *  dcv,
double *  ptot,
double *  VrtMomCov,
const VKalVrtControlBase CONTROL 
)

Definition at line 26 of file cfTotCov.cxx.

27 {
28  int i,j;
29  double px,py,pz,pt,invR,cth;
30  double verr[6][6]={{0.}}; //for (i=0; i<6*6; i++) verr[i]=0;
31 
32  int NTRK = vk->TrackList.size();
33  int NVar = NTRK*3+3;
34  for (i=1; i<=6; ++i) {
35  for (j=1; j<=NVar ; ++j) dcv[i + j*6 - 7] = 0.;
36  }
37  cfsetdiag( 6, VrtMomCov, 100.);
38  ptot[0] = 0.;
39  ptot[1] = 0.;
40  ptot[2] = 0.;
41  double constBF = Trk::vkalMagFld::getMagFld(vk->refIterV,CONTROL) * Trk::vkalMagFld::getCnvCst() ;
42 
43  for (i = 1; i <= NTRK; ++i) {
44  VKTrack *trk=vk->TrackList[i-1].get();
45  invR = trk->fitP[2];
46  cth = 1. / tan(trk->fitP[0]);
47  pt = constBF / std::abs(invR);
48  px = pt * cos(trk->fitP[1]);
49  py = pt * sin(trk->fitP[1]);
50  pz = pt * cth;
51  ptot[0] += px;
52  ptot[1] += py;
53  ptot[2] += pz;
54  dcv[ (i*3 + 0)*6 + 5] = -pt * (cth * cth + 1); /* dPz/d(theta) */
55  dcv[ (i*3 + 1)*6 + 3] = -py; /* dPx/d(phi) */
56  dcv[ (i*3 + 1)*6 + 4] = px; /* dPy/d(phi) */
57  dcv[ (i*3 + 2)*6 + 3] = -px / invR; /* dPx/d(rho) */
58  dcv[ (i*3 + 2)*6 + 4] = -py / invR; /* dPy/d(rho) */
59  dcv[ (i*3 + 2)*6 + 5] = -pz / invR; /* dPz/d(rho) */
60  }
61  dcv[0] = 1.;
62  dcv[7] = 1.;
63  dcv[14] = 1.;
64  if(!ader)return 0;
65  int IERR=getFullVrtCov(vk, ader, dcv, verr); if (IERR) return IERR;
66  int ijk = 0;
67  for ( i=0; i<6; ++i) {
68  for (j=0; j<=i; ++j) {
69  VrtMomCov[ijk++] = verr[i][j];
70  }
71  }
72  return 0;
73 }

◆ afterFitWithIniPar()

int Trk::afterFitWithIniPar ( VKVertex vk,
double *  ader,
double *  dcv,
double *  ptot,
double *  VrtMomCov,
const VKalVrtControlBase CONTROL 
)

Definition at line 80 of file cfTotCov.cxx.

81 {
82  int i,j;
83  double px,py,pz,pt,invR,cth;
84  double verr[6][6]={{0.}};
85 
86 
87  int NTRK = vk->TrackList.size();
88  int NVar = NTRK*3+3;
89  for (i=1; i<=6; ++i) {
90  for (j=1; j<=NVar ; ++j) dcv[i + j*6 - 7] = 0.;
91  }
92  cfsetdiag( 6, VrtMomCov, 10.);
93  ptot[0] = 0.;
94  ptot[1] = 0.;
95  ptot[2] = 0.;
96  double constBF = Trk::vkalMagFld::getMagFld(vk->refIterV,CONTROL) * Trk::vkalMagFld::getCnvCst() ;
97 
98  for (i = 1; i <= NTRK; ++i) {
99  VKTrack *trk=vk->TrackList[i-1].get();
100  invR = trk->iniP[2];
101  cth = 1. / tan(trk->iniP[0]);
102  pt = constBF / std::abs(invR);
103  px = pt * cos(trk->iniP[1]);
104  py = pt * sin(trk->iniP[1]);
105  pz = pt * cth;
106  ptot[0] += px;
107  ptot[1] += py;
108  ptot[2] += pz;
109  dcv[ (i*3 + 0)*6 + 5] = -pt * (cth * cth + 1); /* dPz/d(theta) */
110  dcv[ (i*3 + 1)*6 + 3] = -py; /* dPx/d(phi) */
111  dcv[ (i*3 + 1)*6 + 4] = px; /* dPy/d(phi) */
112  dcv[ (i*3 + 2)*6 + 3] = -px / invR; /* dPx/d(rho) */
113  dcv[ (i*3 + 2)*6 + 4] = -py / invR; /* dPy/d(rho) */
114  dcv[ (i*3 + 2)*6 + 5] = -pz / invR; /* dPz/d(rho) */
115  }
116  dcv[0] = 1.;
117  dcv[7] = 1.;
118  dcv[14] = 1.;
119  if(!ader)return 0;
120  int IERR=getFullVrtCov(vk, ader, dcv, verr); if (IERR) return IERR;
121  int ijk = 0;
122  for ( i=0; i<6; ++i) {
123  for (j=0; j<=i; ++j) {
124  VrtMomCov[ijk++] = verr[i][j];
125  }
126  }
127  return 0;
128 }

◆ AmgMatrix()

Trk::AmgMatrix ( ,
 
)

Definition at line 233 of file NeutralParticleParameterCalculator.cxx.

◆ AmgSymMatrix() [1/2]

const Trk::AmgSymMatrix ( ) &

Definition at line 77 of file RecVertex.cxx.

◆ AmgSymMatrix() [2/2]

const Trk::AmgSymMatrix ( ) &
inline

Definition at line 156 of file GXFTrackState.h.

156  {
157  return m_covariancematrix;
158  }

◆ applyConstraints()

void Trk::applyConstraints ( VKVertex vk)

Definition at line 22 of file stCnst.cxx.

22  {
23  int NCEntries = vk->ConstraintList.size();
24  int NTRK = vk->TrackList.size();
25  for (int ic = 0; ic < NCEntries; ic++) {
26  vk->ConstraintList[ic]->applyConstraint();
27  }
28  //
29  // Effect of symmetrization
30  //
31  for (int ii = 0; ii < (int)vk->ConstraintList.size(); ii++) {
32  for (int ic = 0; ic < (int)vk->ConstraintList[ii]->NCDim; ic++) {
33  vk->ConstraintList[ii]->h0t[ic].X *= 0.5;
34  vk->ConstraintList[ii]->h0t[ic].Y *= 0.5;
35  vk->ConstraintList[ii]->h0t[ic].Z *= 0.5;
36  for (int it = 0; it < NTRK; it++) {
37  vk->ConstraintList[ii]->f0t.at(it)[ic].X *= 0.5;
38  vk->ConstraintList[ii]->f0t[it][ic].Y *= 0.5;
39  vk->ConstraintList[ii]->f0t[it][ic].Z *= 0.5;
40  }
41  }
42  }
43 }

◆ calcMassConstraint()

void Trk::calcMassConstraint ( VKMassConstraint cnst)

Definition at line 24 of file Derclc1.cxx.

25 {
26  int it,itc;
27  double ptot[4]={0.,0.,0.,0.};
28  double cth, invR, pp2, pt;
29  VKConstraintBase * base_cnst = (VKConstraintBase*) cnst;
30  const VKVertex * vk=cnst->getOriginVertex();
31  const std::vector<int> &usedParticles=cnst->getUsedParticles();
32  int usedNTRK = usedParticles.size();
33  VKTrack * trk;
34  noinit_vector< std::array<double, 4> > pp(usedNTRK);
35  for( itc=0; itc<usedNTRK; itc++){
36  it = usedParticles[itc];
37  trk = vk->TrackList.at(it).get();
38  pp[itc]=getCnstParticleMom( trk , vk);
39  ptot[0] += pp[itc][0];
40  ptot[1] += pp[itc][1];
41  ptot[2] += pp[itc][2];
42  ptot[3] += pp[itc][3];
43  }
44 
45  double temp = 1.e-10;
46  int ip=0; if( std::abs(ptot[1]) > std::abs(ptot[ip]) )ip=1; if( std::abs(ptot[2]) > std::abs(ptot[ip]) )ip=2;
47  int im=0; if( std::abs(ptot[1]) < std::abs(ptot[im]) )im=1; if( std::abs(ptot[2]) < std::abs(ptot[im]) )im=2;
48  int id=4; for(int i=0;i<3;i++) if(i!=ip && i!=im)id=i;
49  if(id==4){
50  std::cout<<"ERROR in mass constraint!!!"<<'\n';
51  temp=ptot[3]*ptot[3]-ptot[0]*ptot[0]-ptot[1]*ptot[1]-ptot[2]*ptot[2];
52  } else {
53  temp = sqrt( (ptot[3]-ptot[ip])*(ptot[3]+ptot[ip]) );
54  temp = sqrt( ( temp -ptot[id])*( temp +ptot[id]) );
55  temp = ( temp -ptot[im])*( temp +ptot[im]);
56  }
57  if(temp<1.e-10)temp=1.e-10; //protection
58  temp=sqrt(temp); //system mass
59 //
60 //
61  int numCNST=0; //constraint number. Single constraint in this case
62 //
63 //Difference
64  base_cnst->aa[numCNST] = ( temp - cnst->getTargetMass() ) * ( temp + cnst->getTargetMass() );
65 //
66 //Derivatives Here pp[][3] - particle energy, pp[][4] - squared particle mom
67  for( itc=0; itc<usedNTRK; itc++){
68  it = usedParticles[itc];
69  trk = vk->TrackList.at(it).get();
70  invR = trk->cnstP[2];
71  cth = 1. / tan( trk->cnstP[0] );
72  pt = sqrt(pp[itc][0]*pp[itc][0] + pp[itc][1]*pp[itc][1]);
73  pp2 = pp[itc][0]*pp[itc][0] + pp[itc][1]*pp[itc][1] + pp[itc][2]*pp[itc][2];
74  base_cnst->f0t[it][numCNST].X = ptot[3] * (-pp2* cth / pp[itc][3])
75  - ptot[2] * (-pt * (cth*cth + 1.));
76  base_cnst->f0t[it][numCNST].Y = -ptot[0] * (-pp[itc][1])
77  - ptot[1] * pp[itc][0];
78  base_cnst->f0t[it][numCNST].Z = ptot[3] * (-pp2/ (invR * pp[itc][3]))
79  - ptot[0] * (-pp[itc][0] / invR)
80  - ptot[1] * (-pp[itc][1] / invR)
81  - ptot[2] * (-pp[itc][2] / invR);
82 
83  }
84  base_cnst->h0t[numCNST].X = 0.;
85  base_cnst->h0t[numCNST].Y = 0.;
86  base_cnst->h0t[numCNST].Z = 0.;
87 /* -- Relative normalisation. Now it is target mass (squared?) to make performance uniform */
88  double Scale=0.025/(2.*cnst->getTargetMass()+1.); //28.03.2011 wrong idea for cascade. VK 06.05.2011 actually correct!
89  //Scale=0.01;
90  for (it = 0; it < (int)vk->TrackList.size(); ++it) {
91  base_cnst->f0t[it][numCNST].X *= Scale * 2;
92  base_cnst->f0t[it][numCNST].Y *= Scale * 2;
93  base_cnst->f0t[it][numCNST].Z *= Scale * 2;
94  }
95  base_cnst->aa[numCNST] *= Scale;
96 //std::cout.precision(11);
97 //std::cout<<" mass="<<temp<<", "<<cnst->getTargetMass()<<", "<<base_cnst->aa[numCNST]<<'\n';
98 //std::cout<<base_cnst->f0t[0][numCNST].X<<", "<<base_cnst->f0t[0][numCNST].Y<<", "
99 // <<base_cnst->f0t[0][numCNST].Z<<'\n';
100 //std::cout<<base_cnst->f0t[1][numCNST].X<<", "<<base_cnst->f0t[1][numCNST].Y<<", "
101 // <<base_cnst->f0t[1][numCNST].Z<<'\n';
102 }

◆ calcPhiConstraint()

void Trk::calcPhiConstraint ( VKPhiConstraint cnst)

Definition at line 22 of file DerclcAng.cxx.

23 {
24  VKConstraintBase * base_cnst = (VKConstraintBase*) cnst;
25  const VKVertex * vk=cnst->getOriginVertex();
26  int NTRK = vk->TrackList.size();
27  int i,j;
28  double Scale=1.; // Scaling for better precision VK 28.03.2011 Wrong for error matrix!!! Should always be 1.!!!
29 
30  double diff=0., aa=0;
31  std::vector<double> deriv(NTRK,0);
32  for(i=0; i<NTRK-1; i++){
33  for(j=i+1; j<NTRK; j++){
34  diff = vk->TrackList[i]->cnstP[1] - vk->TrackList[j]->cnstP[1];
35  while(diff > M_PI) diff -= 2.*M_PI;
36  while(diff < -M_PI) diff += 2.*M_PI;
37  aa += diff*Scale;
38  deriv[i] += Scale;
39  deriv[j] -= Scale;
40  }
41  }
42 
43  int numCNST=0; //constraint number. Single constraint in this case
44  base_cnst->h0t[numCNST].X = 0.;
45  base_cnst->h0t[numCNST].Y = 0.;
46  base_cnst->h0t[numCNST].Z = 0.;
47  for(i=0; i<NTRK; i++){
48  base_cnst->f0t[i][numCNST].X = 0.;
49  base_cnst->f0t[i][numCNST].Y = deriv[i];
50  base_cnst->f0t[i][numCNST].Z = 0.;
51  }
52  base_cnst->aa[numCNST]=aa;
53 //std::cout.precision(11);
54 //std::cout<<" new delta Phi="<<base_cnst->aa[numCNST]<<'\n';
55 //std::cout<<base_cnst->f0t[0][numCNST].X<<", "<<base_cnst->f0t[0][numCNST].Y<<", "
56 // <<base_cnst->f0t[0][numCNST].Z<<'\n';
57 //std::cout<<base_cnst->f0t[1][numCNST].X<<", "<<base_cnst->f0t[1][numCNST].Y<<", "
58 // <<base_cnst->f0t[1][numCNST].Z<<'\n';
59 }

◆ calcPlaneConstraint()

void Trk::calcPlaneConstraint ( VKPlaneConstraint cnst)

Definition at line 99 of file DerclcAng.cxx.

100 {
101  VKConstraintBase * base_cnst = (VKConstraintBase*) cnst;
102  const VKVertex * vk=cnst->getOriginVertex();
103  int NTRK = vk->TrackList.size();
104  double curV[3] = {vk->refIterV[0]+vk->cnstV[0], vk->refIterV[1]+vk->cnstV[1],vk->refIterV[2]+vk->cnstV[2]};
105 
106 
107  int numCNST=0; //constraint number. Single constraint in this case
108  base_cnst->h0t[numCNST].X = cnst->getA();
109  base_cnst->h0t[numCNST].Y = cnst->getB();
110  base_cnst->h0t[numCNST].Z = cnst->getC();
111  for(int i=0; i<NTRK; i++){
112  base_cnst->f0t[i][numCNST].X = 0.;
113  base_cnst->f0t[i][numCNST].Y = 0.;
114  base_cnst->f0t[i][numCNST].Z = 0.;
115  }
116  base_cnst->aa[numCNST]=cnst->getA()*curV[0]+cnst->getB()*curV[1]+cnst->getC()*curV[2] - cnst->getD() ;
117 //std::cout.precision(11);
118 //std::cout<<" new plane="<<base_cnst->aa[numCNST]<<'\n';
119 }

◆ calcPointConstraint()

void Trk::calcPointConstraint ( VKPointConstraint cnst)

Definition at line 20 of file Derclc2.cxx.

21 {
22  VKConstraintBase * base_cnst = (VKConstraintBase*) cnst;
23  const VKVertex * vk=cnst->getOriginVertex();
24  // Magnetic field in fitted vertex position
25  double cnstPos[3];
26  cnstPos[0]=vk->refIterV[0]+vk->cnstV[0];
27  cnstPos[1]=vk->refIterV[1]+vk->cnstV[1];
28  cnstPos[2]=vk->refIterV[2]+vk->cnstV[2];
29  double localField = Trk::vkalMagFld::getMagFld(cnstPos,(vk->vk_fitterControl).get());
30  double magConst = localField * vkalMagCnvCst;
31  //
32  int it,Charge=0;
33  double ptot[4]={0.,0.,0.,0.};
34  int NTRK = vk->TrackList.size();
35 
36  std::vector< std::array<double, 4> > pp(NTRK);
37  for( it=0; it<NTRK; it++){
38  VKTrack * trk = vk->TrackList[it].get();
39  pp[it]=getCnstParticleMom( trk, localField );
40  ptot[0] += pp[it][0];
41  ptot[1] += pp[it][1];
42  ptot[2] += pp[it][2];
43  ptot[3] += pp[it][3];
44  Charge += trk->Charge;
45  }
46  //Summary particle at fitted vertex
47  double Pt= sqrt(ptot[0]*ptot[0] + ptot[1]*ptot[1]) ;
48  double mom= sqrt(ptot[2]*ptot[2] + Pt*Pt) ;
49  double phi=atan2(ptot[1],ptot[0]);
50  double theta=acos( ptot[2]/mom );
51  if(theta<1.e-5) theta=1.e-5;
52  if(theta>M_PI-1.e-5) theta=M_PI-1.e-5;
53  double invR = magConst / Pt; if(Charge) invR *= Charge;
54  //
55  // Fitted vertex position in global reference frame
56  double curV[3] = {vk->refIterV[0]+vk->cnstV[0], vk->refIterV[1]+vk->cnstV[1],vk->refIterV[2]+vk->cnstV[2]};
57  double Px=ptot[0];
58  double Py=ptot[1];
59  double Pz=ptot[2];
60  double sinp = sin(phi);
61  double cosp = cos(phi);
62  double cott = 1./tan(theta);
63  //
64  //Derivatives
65  double dPhiDpx = -Py/Pt/Pt; //dPhi/dPx
66  double dPhiDpy = Px/Pt/Pt; //dPhi/dPy
67  //double dPhiDpz = 0; //dPhi/dPz
68  double dThetaDpx = Px*Pz/(Pt*mom*mom); //dTheta/dPx
69  double dThetaDpy = Py*Pz/(Pt*mom*mom); //dTheta/dPy
70  double dThetaDpz = -Pt/(mom*mom); //dTheta/dPz
71  double dRDpx = Px/(Pt*magConst); //dR/dPx
72  double dRDpy = Py/(Pt*magConst); //dR/dPy
73  //double dRDpz = 0; //dR/dPz
74  if(Charge){dRDpx /=Charge; dRDpy /=Charge;}
75 
76 // Main part
77 
78  double a0,t,z0;
79  double dA0dPhi,dZdPhi,dZdTheta,dA0dR;
80  if( Charge==0 ) {
81  a0 =-sinp * (cnst->getTargetVertex()[0] - curV[0]) + //Perigee with respect to targetVertex
82  cosp * (cnst->getTargetVertex()[1] - curV[1]);
83  t = cosp * (cnst->getTargetVertex()[0] - curV[0]) +
84  sinp * (cnst->getTargetVertex()[1] - curV[1]);
85  z0 = curV[2] + t*cott - cnst->getTargetVertex()[2];
86 //----------------------------------------------------------------------
87 // First constraint a0=0
88 //
89  dA0dPhi = -t;
90  for( it=0; it<NTRK; it++){
91  double invRi = vk->TrackList[it]->cnstP[2];
92  base_cnst->f0t[it][0].X = 0.; // dPx/dTheta==0, dPy/dTheta==0
93  base_cnst->f0t[it][0].Y = dA0dPhi * (dPhiDpx*(-pp[it][1]) + dPhiDpy*( pp[it][0])) ;
94  base_cnst->f0t[it][0].Z = dA0dPhi * (dPhiDpx*(-pp[it][0]) + dPhiDpy*(-pp[it][1]))/invRi ;
95  }
96  base_cnst->h0t[0].X = sinp; // dA0/dFitVertex==dA0/dCurV
97  base_cnst->h0t[0].Y = -cosp;
98  base_cnst->h0t[0].Z = 0.;
99 //----------------------------------------------------------------------
100 // Second constraint z=0
101 //
102  dZdPhi = a0*cott;
103  dZdTheta = -t/(sin(theta)*sin(theta));
104  for( it=0; it<NTRK; it++){
105  double invRi = vk->TrackList[it]->cnstP[2];
106  double p2i = pp[it][0]*pp[it][0]+pp[it][1]*pp[it][1]+pp[it][2]*pp[it][2];
107  double pti = sqrt(pp[it][0]*pp[it][0]+pp[it][1]*pp[it][1]);
108  base_cnst->f0t[it][1].X = 0.; // dPx/dTheta==0, dPy/dTheta==0 // ../dTheta_i
109  base_cnst->f0t[it][1].Y = dZdPhi * (dPhiDpx*(-pp[it][1]) + dPhiDpy*( pp[it][0])) ; // ../dPhi_i
110  base_cnst->f0t[it][1].Z = dZdPhi * (dPhiDpx*(-pp[it][0]) + dPhiDpy*(-pp[it][1]))/invRi; // ../dInvR_i
111  base_cnst->f0t[it][1].X += dZdTheta * ( dThetaDpz*(-p2i/pti)); // ../dTheta_i
112  base_cnst->f0t[it][1].Y += dZdTheta * (dThetaDpx*(-pp[it][1]) + dThetaDpy*( pp[it][0]) + 0.); // ../dPhi_; dPz/dPhi_i=0
113  base_cnst->f0t[it][1].Z += dZdTheta * (dThetaDpx*(-pp[it][0]) + dThetaDpy*(-pp[it][1]) + dThetaDpz*(-pp[it][2]))/invRi;// ../dInvR_i
114  }
115  base_cnst->h0t[1].X = -cosp*cott; // dZ/dCurV
116  base_cnst->h0t[1].Y = -sinp*cott;
117  base_cnst->h0t[1].Z = 1.;
118 //std::cout<<" test0="<<Charge<<", "<<a0<<", "<<z0<<", "<<t<<", "<<Px<<", "<<Py<<", "<<Pz<<'\n';
119 //
120 // The same for charged particle
121 //
122 
123  }else{
124  int Sign = 1; if(Charge<0)Sign=-1;
125  double R = 1./invR;
126  double xc = -R*sinp + curV[0]; // centre of circle
127  double yc = R*cosp + curV[1];
128  double diffx = cnst->getTargetVertex()[0] - xc;
129  double diffy = cnst->getTargetVertex()[1] - yc;
130  double diff = sqrt( diffx*diffx + diffy*diffy );
131  double sindphi = (curV[0]-xc)*diffy - (curV[1]-yc)*diffx;
132  sindphi = sindphi/std::abs(R)/diff;
133  double dphi = asin( sindphi );
134  double cosdphi=sqrt(std::abs(1.-sindphi*sindphi)); if(cosdphi<1.e-10)cosdphi=1.e-10;
135  a0 = R*(1.-diff/std::abs(R));
136  t = dphi*R;
137  z0 = curV[2] + t*cott - cnst->getTargetVertex()[2];
138  double dTdXcur = std::abs(R)/cosdphi * (cosp/diff-diffx*sindphi/(diff*diff)) * (-1.);
139  double dTdYcur = std::abs(R)/cosdphi * (sinp/diff-diffy*sindphi/(diff*diff)) * (-1.);
140 //----------------------------------------------------------------------
141 // First constraint a0=0
142 //
143  dA0dPhi = - (diffx*cosp + diffy*sinp)/diff*std::abs(R);
144  dA0dR = 1. - (diffx*sinp - diffy*cosp)/diff*R/std::abs(R);
145  for( it=0; it<NTRK; it++){
146  double invRi = vk->TrackList[it]->cnstP[2];
147  base_cnst->f0t[it][0].X = 0.; // dPx/dTheta==0, dPy/dTheta==0
148  base_cnst->f0t[it][0].Y = dA0dPhi * (dPhiDpx*(-pp[it][1]) + dPhiDpy*( pp[it][0])) ;
149  base_cnst->f0t[it][0].Z = dA0dPhi * (dPhiDpx*(-pp[it][0]) + dPhiDpy*(-pp[it][1]))/invRi ;
150  base_cnst->f0t[it][0].X += 0.;
151  base_cnst->f0t[it][0].Y += dA0dR * (dRDpx*(-pp[it][1]) + dRDpy*( pp[it][0]));
152  base_cnst->f0t[it][0].Z += dA0dR * (dRDpx*(-pp[it][0]) + dRDpy*(-pp[it][1]))/invRi ;
153  }
154  base_cnst->h0t[0].X = Sign*diffx/diff; // dA0/dFitVertex==dA0/dCurV
155  base_cnst->h0t[0].Y = Sign*diffy/diff;
156  base_cnst->h0t[0].Z = 0.;
157 //----------------------------------------------------------------------
158 // Second constraint z=0
159 //
160  dZdPhi = -a0*cott;
161  dZdTheta = -t/sin(theta)/sin(theta);
162  for( it=0; it<NTRK; it++){
163  double invRi = vk->TrackList[it]->cnstP[2];
164  double p2i = pp[it][0]*pp[it][0]+pp[it][1]*pp[it][1]+pp[it][2]*pp[it][2];
165  double pti = sqrt(pp[it][0]*pp[it][0]+pp[it][1]*pp[it][1]);
166  base_cnst->f0t[it][1].X = 0.; // dPx/dTheta==0, dPy/dTheta==0 // ../dTheta_i
167  base_cnst->f0t[it][1].Y = dZdPhi * (dPhiDpx*(-pp[it][1]) + dPhiDpy*( pp[it][0])) ; // ../dPhi_i
168  base_cnst->f0t[it][1].Z = dZdPhi * (dPhiDpx*(-pp[it][0]) + dPhiDpy*(-pp[it][1]))/invRi; // ../dInvR_i
169  base_cnst->f0t[it][1].X += dZdTheta * ( dThetaDpz*(-p2i/pti)); // ../dTheta_i
170  base_cnst->f0t[it][1].Y += dZdTheta * (dThetaDpx*(-pp[it][1]) + dThetaDpy*( pp[it][0]) + 0.); // ../dPhi_; dPz/dPhi_i=0
171  base_cnst->f0t[it][1].Z += dZdTheta * (dThetaDpx*(-pp[it][0]) + dThetaDpy*(-pp[it][1]) + dThetaDpz*(-pp[it][2]))/invRi;// ../dInvR_i
172  }
173  base_cnst->h0t[1].X = dTdXcur*cott; // dZ/dCurV
174  base_cnst->h0t[1].Y = dTdYcur*cott;
175  base_cnst->h0t[1].Z = 1.;
176 //std::cout<<" test1="<<Charge<<", "<<a0<<", "<<z0<<" dst="<<t<<" NTRK="<<NTRK<<'\n';
177  }
178  base_cnst->aa[0]=a0;
179  base_cnst->aa[1]=z0;
180 
181 
182 // -----------------------Check of propagation
183 // double paro[5],parn[5],s,ref[3],pere[3]; long int ichg=0;
184 // paro[0]=0.; paro[1]=0.; paro[2]=theta; paro[3]=phi; paro[4]=invR;
185 // ref[0]=cnst->getTargetVertex()[0]-curV[0]; ref[1]=cnst->getTargetVertex()[1]-curV[1]; ref[2]=cnst->getTargetVertex()[2]-curV[2];
186 // cfnewp(&ichg, paro, ref, &s, parn, pere);
187 // std::cout<<" testp="<<Charge<<", "<<parn[0]<<", "<<parn[1]<<", "<<s<<'\n';
188 // -----------------------Derivatives
189 //std::cout<<base_cnst->f0t[0][0].X<<", "<<base_cnst->f0t[0][0].Y<<", "<<base_cnst->f0t[0][0].Z<<'\n';
190 //std::cout<<base_cnst->f0t[0][1].X<<", "<<base_cnst->f0t[0][1].Y<<", "<<base_cnst->f0t[0][1].Z<<'\n';
191 //std::cout<<base_cnst->f0t[1][0].X<<", "<<base_cnst->f0t[1][0].Y<<", "<<base_cnst->f0t[1][0].Z<<'\n';
192 //std::cout<<base_cnst->f0t[1][1].X<<", "<<base_cnst->f0t[1][1].Y<<", "<<base_cnst->f0t[1][1].Z<<'\n';
193 //std::cout<<base_cnst->h0t[0].X<<", "<<base_cnst->h0t[0].Y<<", "<<base_cnst->h0t[0].Z<<'\n';
194 //std::cout<<base_cnst->h0t[1].X<<", "<<base_cnst->h0t[1].Y<<", "<<base_cnst->h0t[1].Z<<'\n';
195 //std::cout<<"-------"<<'\n';
196 //--------------------------------------------------------------------------------------------------
197  if( cnst->onlyZ() ) { //Z only constraint <= all Rphi ralated stuff is 0
198  for( it=0; it<NTRK; it++){
199  base_cnst->f0t[it][0].X = 0.001;
200  base_cnst->f0t[it][0].Y = 0.001;
201  base_cnst->f0t[it][0].Z = 0.001;
202  }
203  base_cnst->h0t[0].X=0.; base_cnst->h0t[0].Y=0.; base_cnst->h0t[0].Z=0.;
204  base_cnst->aa[0]=0.;
205  }
206 }

◆ calcThetaConstraint()

void Trk::calcThetaConstraint ( VKThetaConstraint cnst)

Definition at line 61 of file DerclcAng.cxx.

62 {
63  VKConstraintBase * base_cnst = (VKConstraintBase*) cnst;
64  const VKVertex * vk=cnst->getOriginVertex();
65  int NTRK = vk->TrackList.size();
66  int i,j;
67  double Scale=1.; // Scaling for better precision VK 28.03.2011 Wrong for error matrix!!! Should always be 1.!!!
68 
69  double diff=0., der=0., aa=0;
70  std::vector<double> deriv(NTRK,0);
71  for(i=0; i<NTRK-1; i++){
72  for(j=i+1; j<NTRK; j++){
73  diff = sin(vk->TrackList[i]->cnstP[0] - vk->TrackList[j]->cnstP[0])*Scale;
74  der = Scale;
75  aa += diff;
76  deriv[i] += der;
77  deriv[j] -= der;
78  }
79  }
80 
81  int numCNST=0; //constraint number. Single constraint in this case
82  base_cnst->h0t[numCNST].X = 0.;
83  base_cnst->h0t[numCNST].Y = 0.;
84  base_cnst->h0t[numCNST].Z = 0.;
85  for(i=0; i<NTRK; i++){
86  base_cnst->f0t[i][numCNST].X = deriv[i];
87  base_cnst->f0t[i][numCNST].Y = 0.;
88  base_cnst->f0t[i][numCNST].Z = 0.;
89  }
90  base_cnst->aa[numCNST]=aa;
91 //std::cout.precision(11);
92 //std::cout<<" new delta Theta="<<base_cnst->aa[numCNST]<<'\n';
93 //std::cout<<base_cnst->f0t[0][numCNST].X<<", "<<base_cnst->f0t[0][numCNST].Y<<", "
94 // <<base_cnst->f0t[0][numCNST].Z<<'\n';
95 //std::cout<<base_cnst->f0t[1][numCNST].X<<", "<<base_cnst->f0t[1][numCNST].Y<<", "
96 // <<base_cnst->f0t[1][numCNST].Z<<'\n';
97 }

◆ cascadeCnstRemnants()

double Trk::cascadeCnstRemnants ( CascadeEvent cascadeEvent_)

Definition at line 77 of file CFitCascade.cxx.

77  {
78  double cnstRemnants=0.;
79  for(int iv=0; iv<cascadeEvent_.cascadeNV; iv++){
80  VKVertex * vk = cascadeEvent_.cascadeVertexList[iv].get();
81  for(int ii=0; ii<(int)vk->ConstraintList.size();ii++){
82  for(int ic=0; ic<(int)vk->ConstraintList[ii]->NCDim; ic++){
83  cnstRemnants += std::abs( vk->ConstraintList[ii]->aa[ic] );
84  } }
85  }
86  return cnstRemnants;
87 }

◆ cfchi2() [1/2]

double Trk::cfchi2 ( const double *  vrtt,
const double *  part,
VKTrack trk 
)

Definition at line 80 of file Tracking/TrkVertexFitter/TrkVKalVrtCore/src/Utilities.cxx.

81 {
82 
83  double d1, d2, d3, d4, d5;
84  double theta_f = part[0];
85  double phi_f = part[1];
86  double invR_f = part[2];
87  double uu = vrtt[0] * cos(phi_f) + vrtt[1] * sin(phi_f );
88  double vv = vrtt[1] * cos(phi_f) - vrtt[0] * sin(phi_f);
89  double sr = invR_f * abs(trk->Charge); // Zero in case of zero charge
90  double epsf = -vv - (uu * uu + vv * vv) * sr / 2.;
91  double zpf = vrtt[2] - uu * (1. - vv * sr) / tan(theta_f);
92  double phif = phi_f - uu * sr;
93  d1 = epsf - trk->Perig[0];
94  d2 = zpf - trk->Perig[1];
95  d3 = theta_f - trk->Perig[2];
96  d4 = phif - trk->Perig[3];
97  d5 = invR_f - trk->Perig[4];
98  if(d4 > M_PI)d4-=2.*M_PI;
99  if(d4 < -M_PI)d4+=2.*M_PI;
100  double res = trk->WgtM[0] * (d1*d1)
101  + trk->WgtM[2] * (d2*d2)
102  + trk->WgtM[5] * (d3*d3)
103  + trk->WgtM[9] * (d4*d4)
104  + trk->WgtM[14]* (d5*d5)
105  +(d2 * d1*trk->WgtM[1]
106  + d3 * (d1*trk->WgtM[3] + d2*trk->WgtM[4])
107  + d4 * (d1*trk->WgtM[6] + d2*trk->WgtM[7] + d3*trk->WgtM[8])
108  + d5 * (d1*trk->WgtM[10] + d2*trk->WgtM[11] + d3*trk->WgtM[12] + d4*trk->WgtM[13])) * 2;
109  trk->rmnd[0] = d1;
110  trk->rmnd[1] = d2;
111  trk->rmnd[2] = d3;
112  trk->rmnd[3] = d4;
113  trk->rmnd[4] = d5;
114 //std::cout<<__func__<<":"<<d1<<", "<<d2<<", "<<d3<<", "<<d4<<", "<<d5<<'\n';
115 //std::cout<<trk->Perig[0]<<", "<<trk->Perig[1]<<", "<<trk->Perig[2]<<", "<<trk->Perig[3]<<", "<<trk->Perig[4]<<'\n';
116 //std::cout<<theta_f<<", "<<phi_f<<", "<<invR_f<<'\n';
117 //std::cout<<trk->WgtM[0]<<", "<<trk->WgtM[2]<<", "<<trk->WgtM[5]<<", "<<trk->WgtM[9]<<", "<<trk->WgtM[14]<<'\n';
118  return (std::abs(res) < 1.e12 ? std::abs(res) : 1.e12);
119 }

◆ cfchi2() [2/2]

double Trk::cfchi2 ( double *  xyzt,
const long int  ich,
double *  part,
const double *  par0,
double *  wgt,
double *  rmnd 
)

Definition at line 27 of file Tracking/TrkVertexFitter/TrkVKalVrtCore/src/Utilities.cxx.

29 {
30  double phif, epsf, d1, d2, d3, d4, d5, sr, uu, vv, res, zpf;
31 
32  /* Parameter adjustments */
33  --wgt;
34  --part;
35  --xyzt;
36 
37  uu = xyzt[1] * cos(part[2]) + xyzt[2] * sin(part[2]);
38  vv = xyzt[2] * cos(part[2]) - xyzt[1] * sin(part[2]);
39  sr = part[3] * std::abs(ich);
40  epsf = -vv - (uu * uu + vv * vv) * sr / 2.;
41  zpf = xyzt[3] - uu * (1. - vv * sr) / tan(part[1]);
42  phif = part[2] - uu * sr;
43  d1 = par0[0] - epsf;
44  d2 = par0[1] - zpf;
45  d3 = par0[2] - part[1];
46  d4 = par0[3] - phif;
47  d5 = par0[4] - part[3];
48  while(d4 > M_PI)d4-=2.*M_PI;
49  while(d4 < -M_PI)d4+=2.*M_PI;
50 // -----------------------Check of propagation
51 // double paro[5],parn[5],s,ref[3],peri[3];
52 // paro[0]=0.; paro[1]=0.; paro[2]=part[1]; paro[3]=part[2]; paro[4]=part[3];
53 // ref[0]=-xyzt[1]; ref[1]=-xyzt[2]; ref[2]=-xyzt[3];
54 // cfnewp(ich, paro, ref, &s, parn, peri);
55 // d1 = par0[0] - parn[0]; d2 = par0[1] - parn[1]; d3 = par0[2] - parn[2];
56 // d4 = par0[3] - parn[3]; d5 = par0[4] - parn[4];
57 // std::cout<<" testp0="<<parn[0]<<", "<<parn[1]<<", "<<parn[3]<<", "<<s<<'\n';
58 // std::cout<<" testp1="<<(*ich)<<", "<<epsf<<", "<<zpf<<", "<<phif<<", "<<res<<'\n';
59 //--------------------------------------------------------------------
60  res = wgt[1] * (d1 * d1) + wgt[3] * (d2 * d2) + wgt[6] * (d3 * d3)
61  + wgt[10] * (d4 * d4) + wgt[15] * (d5 * d5) + (d2 *
62  d1 * wgt[2] + d3 * (d1 * wgt[4] + d2 * wgt[5]) + d4 * (d1 * wgt[7]
63  + d2 * wgt[8] + d3 * wgt[9]) + d5 * (d1 * wgt[11] + d2 * wgt[12]
64  + d3 * wgt[13] + d4 * wgt[14])) * 2;
65  rmnd[0] = d1;
66  rmnd[1] = d2;
67  rmnd[2] = d3;
68  rmnd[3] = d4;
69  rmnd[4] = d5;
70  return (std::abs(res) < 1.e12 ? std::abs(res) : 1.e12);
71 }

◆ cfdcopy()

void Trk::cfdcopy ( double *  source,
double *  target,
int  n 
)
inline

Definition at line 23 of file TrkVKalUtils.h.

24  { std::copy(source, source + n, target); }

◆ cfddist3D()

double Trk::cfddist3D ( double *  V1,
double *  V2 
)
inline

Definition at line 26 of file TrkVKalUtils.h.

27  { return sqrt( (V2[0]-V1[0])*(V2[0]-V1[0]) + (V2[1]-V1[1])*(V2[1]-V1[1]) + (V2[2]-V1[2])*(V2[2]-V1[2]) ); }

◆ cfdinv()

int Trk::cfdinv ( double *  cov,
double *  wgt,
long int  NI 
)

Definition at line 497 of file Tracking/TrkVertexFitter/TrkVKalVrtCore/src/Matrix.cxx.

498 {
499  long int n = std::abs(NI);
500  if (n <= 1) return -1;
501  long int jerr=0;;
502 
503 //---Robust inversion if COV is suspected ill-defined
504  if (NI>0) {
505  jerr=vkSInvSVD(cov,NI,wgt, 1.e-18);
506  //--Check if inverted matrix is at approximately correct
507  if(!jerr){ if(checkMatrixInversion(cov, wgt, n)>0.1) jerr=-2; }
508  return jerr;
509  }
510 //---If COV is believed good
511  jerr=vkcholInv(cov, wgt, n);
512  if(!jerr){ if(checkMatrixInversion(cov, wgt, n)>0.1) jerr=-2; }
513  return jerr;
514 }

◆ cferpr()

void Trk::cferpr ( const long int  ich,
double *  par,
double *  ref,
const double  s0,
double *  errold,
double *  errnew 
)

Definition at line 12 of file cfErPr.cxx.

13 {
14 
15 
16  double r__, dsphi, dseps, dsrho, cs, sn, xp, yp;
17  double derivm[25]; /* was [5][5] */
18  double ctg, dsq, dyp, d__3;
19 /* ------------------------------------------ */
20 /* This routine propagates the trajectory error matrix */
21 /* originally evaluated at s=0 to the curved abcissa S */
22 /* assuming that the track travels into VACUUM */
23 /* INPUT: ICH Charge of track */
24 /* PAR(5) Track parameters */
25 /* REF(3) New reference point */
26 /* ERROLD error matrix at (0,0,0) */
27 /* S0 curved abcissa of propagation */
28 /* OUTPUT: ERRNEW New error matrix */
29 /* ------ */
30 /* derivm(i,j)=D(X'.j)/D(X.i) */
31 /* ----------------------------------------------------------- */
32 /* Author: V.Kostyukhin */
33 /* ------------------------------------------------------------ */
34  /* Parameter adjustments */
35  --par;
36  --ref;
37 
38 
39  /* --------------------------------------------------- */
40  for (int ii= 0; ii< 25; ++ii) derivm[ii] = 0.;
41 /* -- */
42  cs = cos(par[4]);
43  sn = sin(par[4]);
44  xp = ref[1] * cs + ref[2] * sn; //==(*s0) for neutral particles
45  yp = ref[1] * sn - ref[2] * cs;
46  double sinp3 = sin(par[3]);
47  ctg = cos(par[3]) / sinp3;
48  derivm[6] = 1.;
49  derivm[12] = 1.;
50  derivm[24] = 1.;
51  if (ich != 0) {
52  r__ = 1. / par[5];
53  dyp = r__ - par[1] + yp;
54  dsphi = -r__ * (yp * dyp + xp * xp) / (dyp * dyp + xp * xp);
55  dseps = r__ * xp / (dyp * dyp + xp * xp);
56  dsrho = -r__ * s0 + r__ * r__ * dseps;
57  derivm[5] = dseps * ctg;
58  derivm[7] = -s0 / (sinp3 * sinp3);
59  derivm[8] = dsphi * ctg;
60  derivm[9] = dsrho * ctg;
61  derivm[15] = par[5] * dseps;
62 /* Computing 2nd power */
63  d__3 = r__ - par[1];
64  dsq = sqrt(ref[1]*ref[1] + ref[2]*ref[2] + d__3*d__3 + 2.*d__3*yp);
65  derivm[4] = -(r__*r__) + d_sign(1., r__) * (r__*r__) * dyp / dsq;
66  derivm[3] = d_sign(1., r__) * (par[1] - r__) * xp / dsq;
67  derivm[19] = s0 + par[5] * dsrho;
68  derivm[0] = d_sign(1., r__) * dyp / dsq;
69  derivm[18] = par[5] * dsphi + 1.;
70  } else {
71  derivm[0] = 1.;
72  derivm[18] = 1.;
73  //derivm[3] = par[1] - xp; VK Error!!!
74  derivm[3] = - xp; //dEps/dPhi
75  derivm[7] = -xp / (sinp3 * sinp3); //dZ/dTheta
76  derivm[8] = -yp * ctg; //dZ/dPhi
77  }
78  tdasatVK(derivm, &errold[0], &errnew[0], 5, 5);
79 
80 }

◆ cfimp()

void Trk::cfimp ( long int  TrkID,
long int  ich,
int  IFL,
double *  par,
const double *  err,
double *  vrt,
double *  vcov,
double *  rimp,
double *  rcov,
double *  sign,
VKalVrtControlBase FitCONTROL 
)

Definition at line 43 of file cfImp.cxx.

46 {
47  double dcov[3], errd[15], paro[5];
48  double dwgt[3], errn[15];
49  int i__, j, ij;
50 
51  double cnv[6] /* was [2][3] */;
52 /* --------------------------------------------------------- */
53 /* Impact parameter calculation */
54 /* Input: */
55 /* ICH -charge(-1,0,1) */
56 /* IFL = 1 contribution from VRT is added */
57 /* IFL =-1 contribution from VRT is subtructed */
58 /* PAR(5),ERR(15) - peregee parameters and error matrix */
59 /* VRT(3),VCOV(6) - vertex and its error matrix */
60 /* */
61 /* SIGNIFICANCE IS CALCULATED FOR PERIGEE POINT BY DEF. */
62 /* (NOT FOR THE CLOSEST POINT!!!) */
63 /* */
64 /* Output: */
65 /* RIMP(1) - impact in XY */
66 /* RIMP(2) - impact in Z */
67 /* RIMP(3) - Theta at new vertex */
68 /* RIMP(4) - Phi at new vertex */
69 /* RIMP(5) - curvature at vertex */
70 /* RCOV(3) - error matrix for RIMP */
71 /* SIGN - impact significance */
72 /* Author: V.Kostyukhin */
73 /* --------------------------------------------------------- */
74  /* Parameter adjustments */
75  --vcov;
76 
77  /* Function Body */
78  for (int ii = 0; ii < 15; ++ii) {errd[ii] = err[ii];}
79 
80 
81  double Ref0[3]={0.,0.,0.}; //base reference point for standard perigee
82 
83  Trk::vkalPropagator::Propagate(TrkID, ich, par, errd, Ref0, vrt, paro, errn, FitCONTROL);
84 
85 //std::cout <<" CFImp new par R,Z="<<paro[0]<<", "<<paro[1]<<'\n';
86 /* ---------- */
87  rimp[0] = paro[0];
88  rimp[1] = paro[1];
89  rimp[2] = paro[2];
90  rimp[3] = paro[3];
91  rimp[4] = paro[4];
92 /* X=paro(1)*sn, Y=-paro(1)*cs */
93  double sn = sin(paro[3]);
94  double cs = cos(paro[3]);
95 /* -- New error version */
96  cnv[0] = -sn;
97  cnv[2] = cs;
98  cnv[4] = 0.;
99  cnv[1] = sn / tan(paro[2]);
100  cnv[3] = cs / tan(paro[2]);
101  cnv[5] = -1.;
102  dcov[0] = 0.;
103  dcov[1] = 0.;
104  dcov[2] = 0.;
105  for (i__ = 1; i__ <= 3; ++i__) {
106  for (j = 1; j <= 3; ++j) {
107  ij = max(i__, j);
108  ij = ij * (ij - 1) / 2 + min(i__, j);
109  dcov[0] += cnv[(i__ << 1) - 2] * cnv[(j << 1) - 2] * vcov[ij];
110  dcov[2] += cnv[(i__ << 1) - 1] * cnv[(j << 1) - 1] * vcov[ij];
111  dcov[1] += cnv[(i__ << 1) - 2] * cnv[(j << 1) - 1] * vcov[ij];
112  }
113  }
114  /* --------------------------------------------------------------- */
115  if (IFL == 1) {
116  rcov[0] = errn[0] + dcov[0];
117  rcov[1] = errn[1] + dcov[1];
118  rcov[2] = errn[2] + dcov[2];
119  } else if (IFL == -1) {
120  rcov[0] = errn[0] - dcov[0];
121  rcov[1] = errn[1] - dcov[1];
122  rcov[2] = errn[2] - dcov[2];
123  } else {
124  rcov[0] = errn[0];
125  rcov[1] = errn[1];
126  rcov[2] = errn[2];
127  }
128  int jerr = cfdinv(rcov, dwgt, -2);
129  if (jerr) {jerr=cfdinv(rcov, dwgt, 2); if(jerr){dwgt[0]=dwgt[2]=1.e6; dwgt[1]=0.;}}
130  (*sign) = sqrt(std::abs(dwgt[0] * rimp[0] * rimp[0] + dwgt[1] * 2. * rimp[0] * rimp[1] +
131  dwgt[2] * rimp[1] * rimp[1]));
132 }

◆ cfimpc()

void Trk::cfimpc ( long int  TrkID,
long int  ich,
int  IFL,
double *  par,
const double *  err,
double *  vrt,
double *  vcov,
double *  rimp,
double *  rcov,
double *  sign,
VKalVrtControlBase FitCONTROL 
)

Definition at line 135 of file cfImp.cxx.

138 {
139  double dcov[3], errd[15], paro[5];
140  double dwgt[3], errn[15], cnv[6]; /* was [2][3] */
141  int i__, j, ij;
142 
143 
144  double cs, sn;
145 /* --------------------------------------------------------- */
146 /* SIGNIFICANCE IS CALCULATED FOR THE CLOSEST POINT NOW!!!*/
147 /* Author: V.Kostyukhin */
148 /* --------------------------------------------------------- */
149  /* Parameter adjustments */
150  --vcov;
151  for (int ii = 0; ii < 15; ++ii) {errd[ii] = err[ii];}
152 
153  double Ref0[3]={0.,0.,0.}; //base reference point for standard perigee
154  Trk::vkalPropagator::Propagate(TrkID, ich, par, errd, Ref0, vrt, paro, errn, FitCONTROL);
155 
156  double tmpVrt[3]={0.,0.,0.}; double ClosestPnt[3];
157  cfClstPnt( paro, tmpVrt, ClosestPnt);
158  paro[0]=sqrt(ClosestPnt[0]*ClosestPnt[0] + ClosestPnt[1]*ClosestPnt[1]);
159  paro[1]=ClosestPnt[2];
160 /* ---------- */
161  rimp[0] = paro[0];
162  rimp[1] = paro[1];
163  rimp[2] = paro[2];
164  rimp[3] = paro[3];
165  rimp[4] = paro[4];
166  sn = sin(paro[3]);
167  cs = cos(paro[3]);
168 /* -- New error version */
169  cnv[0] = -sn;
170  cnv[2] = cs;
171  cnv[4] = 0.;
172  cnv[1] = sn / tan(paro[2]);
173  cnv[3] = cs / tan(paro[2]);
174  cnv[5] = -1.;
175  dcov[0] = 0.;
176  dcov[1] = 0.;
177  dcov[2] = 0.;
178  for (i__ = 1; i__ <= 3; ++i__) {
179  for (j = 1; j <= 3; ++j) {
180  ij = max(i__, j);
181  ij = ij * (ij - 1) / 2 + min(i__, j);
182  dcov[0] += cnv[(i__ << 1) - 2] * cnv[(j << 1) - 2] * vcov[ij];
183  dcov[2] += cnv[(i__ << 1) - 1] * cnv[(j << 1) - 1] * vcov[ij];
184  dcov[1] += cnv[(i__ << 1) - 2] * cnv[(j << 1) - 1] * vcov[ij];
185  }
186  }
187  /* --------------------------------------------------------------- */
188  if (IFL == 1) {
189  rcov[0] = errn[0] + dcov[0];
190  rcov[1] = errn[1] + dcov[1];
191  rcov[2] = errn[2] + dcov[2];
192  } else if (IFL == -1) {
193  rcov[0] = errn[0] - dcov[0];
194  rcov[1] = errn[1] - dcov[1];
195  rcov[2] = errn[2] - dcov[2];
196  } else {
197  rcov[0] = errn[0];
198  rcov[1] = errn[1];
199  rcov[2] = errn[2];
200  }
201  int jerr = cfdinv(rcov, dwgt, -2);
202  if (jerr) {
203  jerr = cfdinv(rcov, dwgt, 2);
204  if (jerr) {
205  dwgt[0] = dwgt[2] = 1.e6;
206  dwgt[1] = 0.;
207  }
208  }
209  (*sign) = sqrt(std::abs(dwgt[0] * rimp[0] * rimp[0] +
210  dwgt[1] * 2. * rimp[0] * rimp[1] +
211  dwgt[2] * rimp[1] * rimp[1]));
212  }

◆ cfInv5()

int Trk::cfInv5 ( double *  cov,
double *  wgt 
)

Definition at line 459 of file Tracking/TrkVertexFitter/TrkVKalVrtCore/src/Matrix.cxx.

460 {
461  double dest[25];
462  long int i, j, k, N;
463 /* -----------------------------------------*/
464 /* Track covariance matrix inversion */
465 /* stable to small value of mom. error */
466 /* Author: V.Kostyukhin */
467 /* -----------------------------------------*/
468 
469 /* -- RESTORE MATRIX 4x4 -- */
470  N = 4;
471  k = 0;
472  for (i=0; i<N; ++i) for (j=0; j<=i; ++j) {
473  dest[ i*N + j ] = dest[ j*N + i ] = cov[k]; wgt[k]=0.; k++; }
474 
475  double X[4]={cov[10], cov[11], cov[12], cov[13]};
476 
477  for (i = 0; i < N; ++i) {
478  for (j = 0; j < N; ++j) dest[i*N+j] -= X[i]*X[j]/cov[14];
479  }
480  long int jerr;
481  dsinv(N, dest, N, &jerr);
482  if(jerr) return jerr;
483 
484  double L[4]={0.,0.,0.,0.};
485  for (i = 0; i < N; ++i) {
486  for (j = 0; j < N; ++j) L[i] -= dest[i*N+j]*X[j]/cov[14];
487  }
488  double W=1.; for (i = 0; i < N; ++i) W -= X[i]*L[i];
489  wgt[10]=L[0]; wgt[11]=L[1]; wgt[12]=L[2]; wgt[13]=L[3]; wgt[14] = W/cov[14];
490 
491  k=0; for (i=0; i<N; i++) for (j=0; j<=i; j++) wgt[k++]=dest[i*N+j];
492 
493  return 0;
494 }

◆ CFit()

int Trk::CFit ( VKalVrtControl FitCONTROL,
int  ifCovV0,
int  NTRK,
long int *  ich,
double  xyz0[3],
double(*)  par0[3],
double(*)  inp_Trk5[5],
double(*)  inp_CovTrk5[15],
double  xyzfit[3],
double(*)  parfs[3],
double  ptot[4],
double  covf[21],
double &  chi2,
double *  chi2tr 
)

Definition at line 429 of file CFit.cxx.

434 {
435 
436  std::fill_n(ptot,4,0.);
437  std::fill_n(covf,21,0.);
438  cfdcopy(xyz0,xyzfit,3);
439  FitCONTROL->renewFullCovariance(nullptr);
440 
441 //
442 // Create vertex
443 //
444  std::unique_ptr<VKVertex> MainVRT(new VKVertex(*FitCONTROL));
445  fillVertex(MainVRT.get(), NTRK, ich, xyz0, par0, inp_Trk5, inp_CovTrk5);
446 //
447 // Fit vertex
448 //
449  int IERR = fitVertex( MainVRT.get());
450  if(IERR) return IERR;
451 //
452 // if successful - save results
453 //
454  for(int i=0; i<3; i++) xyzfit[i] = MainVRT->refIterV[i]+MainVRT->fitV[i]; // fitted vertex in global frame
455  MainVRT->vk_fitterControl->vk_forcft.localbmag = Trk::vkalMagFld::getMagFld(xyzfit,(MainVRT->vk_fitterControl).get());
456  chi2 = 0.;
457  for (int tk = 0; tk < NTRK; tk++) {
458  VKTrack * trk = MainVRT->TrackList[tk].get();
459  chi2 += trk->Chi2;
460  chi2tr[tk] = trk->Chi2;
461  cfdcopy( trk->fitP, &parfs[tk][0], 3);
462  std::array<double, 4> pp = getFitParticleMom( trk, MainVRT->vk_fitterControl->vk_forcft.localbmag );
463  ptot[0]+=pp[0]; ptot[1]+=pp[1]; ptot[2]+=pp[2]; ptot[3]+=pp[3];
464  }
465  cfdcopy(MainVRT->fitVcov, covf , 6); //fitted vertex covariance
466  double vM2=(ptot[3]-ptot[2])*(ptot[3]+ptot[2]) - ptot[1]*ptot[1] - ptot[0]*ptot[0];
467  FitCONTROL->setVertexMass(std::sqrt(vM2>0. ? vM2 : 0. ) );
468  FitCONTROL->setVrtMassError(0.);
469 //
470 // If required - get full covariance matrix
471 //
472  if(ifCovV0){
473  double dptot[5], VrtMomCov[21];
474  IERR = afterFit(MainVRT.get(), MainVRT->ader, MainVRT->FVC.dcv, dptot, VrtMomCov, (MainVRT->vk_fitterControl).get());
475  if (IERR) return -2; /* NONINVERTIBLE COV.MATRIX */
476  if(MainVRT->existFullCov){
477  FitCONTROL->renewFullCovariance(new double[ (3*NTRK+3)*(3*NTRK+3+1)/2 ]);
478  int out=0;
479  for(int ti=0; ti<3+3*NTRK; ti++){
480  for(int tj=0; tj<=ti; tj++){
481  FitCONTROL->getFullCovariance()[out] = ARR2D_FS(MainVRT->ader, 3*vkalNTrkM+3, ti, tj);
482  out++;
483  } }
484  int activeTrk[vkalNTrkM]={0}; std::fill_n(activeTrk,NTRK,1);
485  double vrtMass=0., vrtMassError=0.;
486  cfmasserr(MainVRT.get(), activeTrk,MainVRT->vk_fitterControl->vk_forcft.localbmag, &vrtMass, &vrtMassError);
487  FitCONTROL->setVertexMass(vrtMass);
488  FitCONTROL->setVrtMassError(vrtMassError);
489  }
490  cfdcopy( VrtMomCov, covf, 21); //XvYvZvPxPyPz covariance
491  cfdcopy( MainVRT->vk_fitterControl->vk_forcft.robres, FitCONTROL->vk_forcft.robres, NTRK); //Track weights from robust fit
492 
493  }
494 
495  return 0;
496 }

◆ cfmasserr()

void Trk::cfmasserr ( VKVertex vk,
const int *  list,
double  BMAG,
double *  MASS,
double *  sigM 
)

Definition at line 15 of file cfMassErr.cxx.

16 {
17  int NTRK=vk->TrackList.size();
18  //Deliberately not using make_unique
19  std::unique_ptr < double[] > deriv(new double[3*NTRK+3]);
20  double ptot[4]={0.};
21  std::vector< std::array<double,6> > pmom(NTRK);
22  double dm2dpx, dm2dpy, dm2dpz, ee, pt, px, py, pz, cth;
23 
24  double constBF = BMAG * vkalMagCnvCst ;
25 
26  for(int it=0; it<NTRK; it++){
27  if (list[it]) {
28  pmom[it][4] = pt = constBF / std::abs(vk->TrackList[it]->fitP[2]);
29  pmom[it][5] = cth = 1. /tan(vk->TrackList[it]->fitP[0]);
30  pmom[it][0] = px = pt * cos(vk->TrackList[it]->fitP[1]);
31  pmom[it][1] = py = pt * sin(vk->TrackList[it]->fitP[1]);
32  pmom[it][2] = pz = pt * cth;
33  double mmm=vk->TrackList[it]->getMass();
34  pmom[it][3] = sqrt(px*px + py*py + pz*pz + mmm*mmm);
35  ptot[0] += px;
36  ptot[1] += py;
37  ptot[2] += pz;
38  ptot[3] += pmom[it][3];
39  }
40  }
41 
42  for(int it = 0; it < NTRK; ++it) {
43  if (list[it]) {
44  pt = pmom[it][4];
45  cth= pmom[it][5];
46  px = pmom[it][0];
47  py = pmom[it][1];
48  pz = pmom[it][2];
49  ee = pmom[it][3];
50  dm2dpx = (ptot[3] / ee * px - ptot[0]) * 2.;
51  dm2dpy = (ptot[3] / ee * py - ptot[1]) * 2.;
52  dm2dpz = (ptot[3] / ee * pz - ptot[2]) * 2.;
53  deriv[it*3 + 0] = dm2dpz * ((-pt) * (cth * cth + 1.)); /* d(M2)/d(Theta) */
54  deriv[it*3 + 1] = -dm2dpx * py + dm2dpy * px; /* d(M2)/d(Phi) */
55  deriv[it*3 + 2] = (-dm2dpx * px - dm2dpy*py - dm2dpz*pz)/vk->TrackList[it]->fitP[2]; /* d(M2)/d(Rho) */
56  } else {
57  deriv[it*3 + 0] = deriv[it*3 + 1] = deriv[it*3 + 2] = 0.;
58  }
59  }
60 //----
61  double covM2=0;
62  for(int i=0; i<NTRK*3; i++){
63  for(int j=0; j<NTRK*3; j++){
64  covM2 += deriv[i] * ARR2D_FS(vk->ader, vkalNTrkM*3+3, i+3, j+3) *deriv[j];
65  }
66  }
67  if(covM2<1.e-10)covM2=1.e-10;
68 //----
69  (*MASS) = (ptot[3]-ptot[2])*(ptot[3]+ptot[2])-ptot[1]*ptot[1]-ptot[0]*ptot[0];
70  if((*MASS)<1.e-10) (*MASS) = 1.e-10;
71  (*MASS) = sqrt(*MASS);
72  (*sigM) = sqrt(covM2) / 2. / (*MASS);
73 }

◆ cfmasserrold_()

void Trk::cfmasserrold_ ( const long int  ntrk,
long int *  list,
double *  parfs,
double *  ams,
double *  deriv,
double  BMAG,
double *  dm,
double *  sigm 
)

Definition at line 76 of file cfMassErr.cxx.

78 {
79  int i__;
80  double ptot[4];
81  double constB, dm2dpx, dm2dpy, dm2dpz, ee, pt, px, py, pz, cth;
82 
83  --deriv;
84  --ams;
85  parfs -= 4;
86  --list;
87 
88  /* Function Body */
89  ptot[0] = 0.;
90  ptot[1] = 0.;
91  ptot[2] = 0.;
92  ptot[3] = 0.;
93 
94  constB = BMAG * vkalMagCnvCst ;
95 
96  int i3;
97  for (i__ = 1; i__ <= ntrk; ++i__) {
98  if (list[i__] == 1) {
99  i3 = i__ * 3;
100  pt = std::abs(parfs[i3 + 3]);
101  pt = constB / pt;
102  cth = 1. /tan(parfs[i3 + 1]);
103  px = pt * cos(parfs[i3 + 2]);
104  py = pt * sin(parfs[i3 + 2]);
105  pz = pt * cth;
106  ptot[0] += px;
107  ptot[1] += py;
108  ptot[2] += pz;
109  ptot[3] += sqrt(px*px + py*py + pz*pz + ams[i__]*ams[i__]);
110  }
111  }
112 
113 
114  for (i__ = 1; i__ <= ntrk; ++i__) {
115  i3 = i__ * 3;
116  if (list[i__] == 1) {
117  pt = std::abs(parfs[i3+3]);
118  pt = constB / pt;
119  cth = 1. / tan(parfs[i3+1]);
120  px = pt * cos(parfs[i3+2]);
121  py = pt * sin(parfs[i3+2]);
122  pz = pt * cth;
123  ee = sqrt(px*px + py*py + pz*pz + ams[i__]*ams[i__]);
124  dm2dpx = (ptot[3] / ee * px - ptot[0]) * 2.;
125  dm2dpy = (ptot[3] / ee * py - ptot[1]) * 2.;
126  dm2dpz = (ptot[3] / ee * pz - ptot[2]) * 2.;
127  deriv[i3 + 1] = dm2dpz * ((-pt) * (cth * cth + 1.)); /* d(M2)/d(Theta) */
128  deriv[i3 + 2] = -dm2dpx * py + dm2dpy * px; /* d(M2)/d(Phi) */
129  deriv[i3 + 3] = (-dm2dpx * px - dm2dpy*py - dm2dpz*pz)/ parfs[i3+3]; /* d(M2)/d(Rho) */
130 /* cc Std derivatives-------------------------------------------*/
131 /* DCV(6,I*3+1)=-PT*(1+CTH**2) ! dPz/d(theta)*/
132 /* DCV(4,I*3+2)=-PY ! dPx/d(phi) */
133 /* DCV(5,I*3+2)= PX ! dPy/d(phi) */
134 /* DCV(4,I*3+3)=-PX/PARFS(3,I) ! dPx/d(rho) */
135 /* DCV(5,I*3+3)=-PY/PARFS(3,I) ! dPy/d(rho) */
136 /* DCV(6,I*3+3)=-PZ/PARFS(3,I) ! dPz/d(rho) */
137 /* d(M2)/d(Rho) */
138  } else {
139  deriv[i3 + 1] = 0.;
140  deriv[i3 + 2] = 0.;
141  deriv[i3 + 3] = 0.;
142  }
143  }
144  deriv[1] = 0.;
145  deriv[2] = 0.;
146  deriv[3] = 0.;
147  double covarm2=ptot[3]; //To avoid compiler warning
148  //cferrany_(ntrk, &deriv[1], &covarm2);
149  (*dm) = (ptot[3]-ptot[2])*(ptot[3]+ptot[2])-ptot[1]*ptot[1]-ptot[0]*ptot[0];
150  if((*dm)<1.e-6) (*dm) = 1.e-6;
151  (*dm) = sqrt(*dm);
152  (*sigm) = sqrt(covarm2) / 2. / (*dm);
153 }

◆ cfnewp()

void Trk::cfnewp ( const long int  ich,
double *  parold,
double *  ref,
double *  s,
double *  parnew,
double *  per 
)

Definition at line 10 of file cfNewP.cxx.

11 {
12 
13  double dphi, coth, hper, zper, zeps, r__, cs, xc, yc, sn, sipart, eps;
14 
15 /* ------------------------------------------------------------*/
16 /* This routine propagates the trajectory parameters */
17 /* w.r.t to a new reference point. */
18 /* RETURNED POSITION IS NOT A POSITION OF CLOSEST APPROACH */
19 /* BUT PERIGEE ASSUMIMG THAT REF IS */
20 /* A CENTER OF COORDINATE SYSTEM */
21 /* */
22 /* INPUT: ICH Charge(-1,0,1) */
23 /* PAROLD Initial parameters(EPS,H,THE,PHI,1./R) */
24 /* REF Position of new reference point */
25 /* OUTPUT: S Curved abcissa of new perigee */
26 /* PARNEW Parameters evaluated at new perigee */
27 /* PER Position of new perigee */
28 /* Author: V.Kostyukhin */
29 /* ------------------------------------------------------------*/
30  /* Parameter adjustments */
31  --per;
32  --parnew;
33  --ref;
34  --parold;
35 
36  eps = parold[1];
37  sn = sin(parold[4]);
38  cs = cos(parold[4]);
39  coth = 1. / tan(parold[3]);
40  zeps = parold[2];
41 
42 /* Neutral track */
43  if ( ich == 0) {
44  hper = eps - ref[1] * sn + ref[2] * cs;
45  dphi = 0.;
46  (*s) = ref[1] * cs + ref[2] * sn;
47  zper = zeps + coth * (*s) - ref[3];
48  } else {
49  r__ = 1. / parold[5];
50  sipart = 1.;
51  if (r__ < 0.) sipart = -1.;
52 /* -- Centre of the circle and perigee */
53  xc = (eps - r__) * sn - ref[1];
54  yc = -(eps - r__) * cs- ref[2];
55  hper = r__ - sipart * sqrt(xc*xc + yc*yc);
56 /* -- Phi */
57  double tmp_prec= - eps - cs*ref[2] + sn*ref[1];
58  dphi = atan2(sipart * (ref[1]*cs + ref[2]*sn),
59  sipart * (r__ + tmp_prec) );
60  (*s) = r__*dphi;
61 /* -- Z at VXOLD */
62  zper = zeps + coth * (*s) - ref[3];
63  }
64  parnew[1] = hper;
65  parnew[2] = zper;
66  parnew[3] = parold[3];
67  parnew[4] = parold[4] + dphi;
68 
69 /* check 2*pi period in phi */
70  while (parnew[4] > 6.2831853071794) parnew[4] -= 6.2831853071794;
71  while (parnew[4] <-6.2831853071794) parnew[4] += 6.2831853071794;
72 
73 
74 
75  parnew[5] = parold[5];
76  per[1] = ref[1] + sin(parold[4] + dphi) * hper;
77  per[2] = ref[2] - cos(parold[4] + dphi) * hper;
78  per[3] = ref[3] + zper;
79 }

◆ cfnewpm()

void Trk::cfnewpm ( double *  par,
const double *  xyzStart,
double *  xyzEnd,
const double  ustep,
double *  parn,
double *  closePoint,
VKalVrtControlBase CONTROL 
)

Definition at line 16 of file cfNewPm.cxx.

17 {
18  double d__1, d__2,dist_left;
19  double vect[7], stmg, vout[7]={0.}, dpar0[5];
20  double perig[3], dstep, xyzst[3], charge;
21  double posold, poscur, totway, dp;
22  double dX, dY, dZ;
23  long int ich;
24 
25 /* --------------------------------------------------------- */
26 /* The same as CFNEWP but for the case on nonuniform */
27 /* magnetic field */
28 /* */
29 /* Propagation from xyzStart reference point to xyzEnd point*/
30 /* PAR - perigee parameters wrt xyzStart */
31 /* PARN - perigee parameters wrt xyzEnd */
32 /* Author: V.Kostyukhin */
33 /* --------------------------------------------------------- */
34  /* Parameter adjustments */
35  --par;
36 
37  d__1 = tan(par[3]);
38  totway = (ustep) * sqrt(1. / (d__1 * d__1) + 1.);
39 
40  if (fabs(ustep) < 10. && fabs(totway) < 20.) return; // Distance(mm) is small. Simplest propagation is used
41 
42  stmg = 40.; //Propagation step in mm for nonuniform field
43 
44  vect[0] = sin(par[4]) * par[1] +xyzStart[0];
45  vect[1] = -cos(par[4]) * par[1] +xyzStart[1];
46  vect[2] = par[2] +xyzStart[2];
47 
48  double constB = Trk::vkalMagFld::getMagFld(vect,CONTROL) * Trk::vkalMagFld::getCnvCst();
49 
50  double pt = constB / fabs(par[5]);
51  double px = pt * cos(par[4]);
52  double py = pt * sin(par[4]);
53  double pz = pt / tan(par[3]);
54  double p = sqrt(pt * pt + pz * pz);
55 
56  vect[3] = px / p;
57  vect[4] = py / p;
58  vect[5] = pz / p;
59  vect[6] = p;
60  charge = -d_sign( 1., par[5]);
61  poscur = 0.;
62 //std::cout <<"VkGrkuta vect="<<vect[0]<<", "<<vect[1]<<", "<<vect[2]<<", "<<vect[3]<<", "
63 // <<vect[4]<<", "<<vect[5]<<", "<<vect[6]<<'\n';
64  while(fabs(poscur) < fabs(totway)) {
65  posold = poscur;
66  d__1 = fabs(poscur) + stmg;
67  d__2 = fabs(totway);
68  poscur = d__1 < d__2 ? d__1 : d__2;
69  poscur = d_sign(poscur, totway);
70  dstep = poscur - posold;
71  vkgrkuta_(charge, dstep, vect, vout, CONTROL);
72  vect[0] = vout[0];
73  vect[1] = vout[1];
74  vect[2] = vout[2];
75  vect[3] = vout[3];
76  vect[4] = vout[4];
77  vect[5] = vout[5];
78 // safety for strongly nonuniform field
79  dX = vect[0]-xyzEnd[0];
80  dY = vect[1]-xyzEnd[1];
81  dZ = vect[2]-xyzEnd[2];
82  dist_left = sqrt( dX*dX + dY*dY + dZ*dZ);
83  if(dist_left < stmg) break; // arrived
84  }
85 
86 /* --- Now we are in the new point. Calculate track parameters */
87 /* at new point with new mag.field */
88 
89  constB = Trk::vkalMagFld::getMagFld(xyzEnd,CONTROL) * Trk::vkalMagFld::getCnvCst() ;
90  if(std::abs(constB)<0.001)constB=0.001; //Protection against zero field
91 
92  dpar0[0] = 0.;
93  dpar0[1] = 0.;
94  dpar0[2] = acos(vout[5]);
95  dpar0[3] = atan2(vout[4], vout[3]);
96 // if (dpar0[3] < 0.) dpar0[3] += 6.2831853071794;
97 
98  px = vect[3] * vect[6];
99  py = vect[4] * vect[6];
100  dpar0[4] = d_sign( (constB/sqrt(px*px+py*py)), par[5]); /* new value of curvature */
101  ich = (long int) charge;
102  xyzst[0] = xyzEnd[0] - vout[0];
103  xyzst[1] = xyzEnd[1] - vout[1];
104  xyzst[2] = xyzEnd[2] - vout[2];
105 
106  cfnewp(ich, dpar0, xyzst, &dp, parn, perig); // Last step of propagation
107  closePoint[0] = perig[0] + vout[0]; // with simple program
108  closePoint[1] = perig[1] + vout[1];
109  closePoint[2] = perig[2] + vout[2];
110 }

◆ cfpest()

void Trk::cfpest ( int  ntrk,
double *  xyz,
long int *  ich,
double(*)  parst[5],
double(*)  parf[3] 
)

Definition at line 10 of file cfPEst.cxx.

11  {
12  /* --------------------------------------------------- */
13  /* Subroutine for primary estimation of Theta,Phi */
14  /* and 1/R at point XYZ if they aren't known */
15  /* Author: V.Kostyukhin */
16  /* --------------------------------------------------- */
17 
18  double partmp[5];
19  double Ref0[3] = {0., 0., 0.};
20 
21  for (int i = 0; i < ntrk; ++i) {
22 
23  long int TrkID = i;
24  Trk::vkalPropagator::Propagate(TrkID, ich[i], &parst[i][0], nullptr, Ref0,
25  xyz, partmp, nullptr);
26 
27  parf[i][0] = partmp[2];
28  parf[i][1] = partmp[3];
29  parf[i][2] = partmp[4];
30  }
31 }

◆ cfsetdiag()

void Trk::cfsetdiag ( long int  n,
double *  matr,
double  value 
)
noexcept

Definition at line 236 of file Tracking/TrkVertexFitter/TrkVKalVrtCore/src/Utilities.cxx.

237 {
238  long int i, j, ij;
239  --matr;
240 
241  ij = 0;
242  for (i = 1; i <= n; ++i) {
243  for (j = 1; j <= i; ++j) {
244  ++ij;
245  matr[ij] = 0.;
246  if (i == j) {
247  matr[ij] = value;
248  }
249  }
250  }
251 }

◆ cfSmallEigenvalue()

double Trk::cfSmallEigenvalue ( double *  cov,
long int  n 
)

Definition at line 450 of file Tracking/TrkVertexFitter/TrkVKalVrtCore/src/Matrix.cxx.

451 {
452  if (n > 100 || n <= 1) return -1;
453  double eig[100];
454  vkGetEigVal(cov, eig, n);
455 
456  return eig[0];
457 }

◆ cfTrkCovarCorr()

void Trk::cfTrkCovarCorr ( double *  cov)

Definition at line 290 of file Tracking/TrkVertexFitter/TrkVKalVrtCore/src/Utilities.cxx.

290  {
291 // std::cout<<cov[1]*cov[1]/cov[0]/cov[2]<<'\n';
292 // std::cout<<cov[3]*cov[3]/cov[0]/cov[5]<<", "<<cov[4]*cov[4]/cov[2]/cov[5]<<'\n';
293 // std::cout<<cov[6]*cov[6]/cov[0]/cov[9]<<", "<<cov[7]*cov[7]/cov[2]/cov[9]<<", "<<cov[8]*cov[8]/cov[5]/cov[9]<<'\n';
294 // std::cout<<cov[10]*cov[10]/cov[0]/cov[14]<<", "<<cov[11]*cov[11]/cov[2]/cov[14]<<", "<<cov[12]*cov[12]/cov[5]/cov[14]<<
295 // ", "<<cov[13]*cov[13]/cov[9]/cov[14]<<'\n';
296  double Lim=0.99; double Lim2=Lim*Lim;
297  bool i0,i1,i2,i3,i4; i0=i1=i2=i3=i4=false;
298  if( std::abs(cov[1]*cov[1])/cov[0]/cov[2] > Lim2 ){ i0=true; i1=true;}
299  if( std::abs(cov[3]*cov[3])/cov[0]/cov[5] > Lim2 ){ i0=true; i2=true;}
300  if( std::abs(cov[4]*cov[4])/cov[2]/cov[5] > Lim2 ){ i1=true; i2=true;}
301  if( std::abs(cov[6]*cov[6])/cov[0]/cov[9] > Lim2 ){ i0=true; i3=true;}
302  if( std::abs(cov[7]*cov[7])/cov[2]/cov[9] > Lim2 ){ i1=true; i3=true;}
303  if( std::abs(cov[8]*cov[8])/cov[5]/cov[9] > Lim2 ){ i2=true; i3=true;}
304  if( std::abs(cov[10]*cov[10])/cov[0]/cov[14] > Lim2 ){ i0=true; i4=true;}
305  if( std::abs(cov[11]*cov[11])/cov[2]/cov[14] > Lim2 ){ i1=true; i4=true;}
306  if( std::abs(cov[12]*cov[12])/cov[5]/cov[14] > Lim2 ){ i2=true; i4=true;}
307  if( std::abs(cov[13]*cov[13])/cov[9]/cov[14] > Lim2 ){ i3=true; i4=true;}
308 
309  if(i0){ cov[1]*=Lim; cov[3]*=Lim; cov[6]*=Lim; cov[10]*=Lim; }
310  if(i1){ cov[1]*=Lim; cov[4]*=Lim; cov[7]*=Lim; cov[11]*=Lim; }
311  if(i2){ cov[3]*=Lim; cov[4]*=Lim; cov[8]*=Lim; cov[12]*=Lim; }
312  if(i3){ cov[6]*=Lim; cov[7]*=Lim; cov[8]*=Lim; cov[13]*=Lim; }
313  if(i4){ cov[10]*=Lim; cov[11]*=Lim; cov[12]*=Lim; cov[13]*=Lim; }
314 }

◆ cfVrtDstSig()

double Trk::cfVrtDstSig ( VKVertex vk,
bool  UseTrkErr 
)

Definition at line 33 of file cfVrtDst.cxx.

34 {
35  int i,j,ij,it;
36  double parV0[5], covParV0[15];
37  double Signif;
38  /* ------------------------------------------------------------------- */
39 
40  double ptot[3]= {0.,0.,0.};
41  int NTRK = vk->TrackList.size();
42  for ( it=0; it<NTRK; it++) {
43  std::array<double, 4> pp=getCnstParticleMom( vk->TrackList[it].get(), vk );
44  ptot[0] += pp[0];
45  ptot[1] += pp[1];
46  ptot[2] += pp[2];
47  }
48  double fittedVrt[3]={vk->refIterV[0] + vk->cnstV[0],
49  vk->refIterV[1] + vk->cnstV[1],
50  vk->refIterV[2] + vk->cnstV[2]};
51  long int Charge = 0; for ( it=0; it<NTRK; it++) Charge += vk->TrackList[it]->Charge;
52 //std::cout<<" cfVrtDst ntrk="<<NTRK<<" chg="<<Charge<<'\n';
53  double localField=Trk::vkalMagFld::getMagFld(fittedVrt,(vk->vk_fitterControl).get());
54  if ( UseTrkErr){
55  combinedTrack( Charge, ptot, vk->fitCovXYZMom, localField, parV0, covParV0);
56  }else{
57  double DummyErr[21] = { 1.e-20,
58  0., 1.e-20,
59  0., 0., 1.e-20,
60  0., 0., 0., 1.e-18,
61  0., 0., 0., 0., 1.e-18,
62  0., 0., 0., 0., 0., 1.e-18};
63  combinedTrack( Charge, ptot, DummyErr, localField, parV0, covParV0);
64  }
65 //
66 // Propagation to constraint vertex
67 //
68  double nPar[5],nCov[15];
69  long int TrkID = -999; // Abstract track propagation
70  Trk::vkalPropagator::Propagate( TrkID, Charge, parV0, covParV0, fittedVrt, vk->FVC.vrt, nPar, nCov, (vk->vk_fitterControl).get());
71 //
72 //
73  double cnv[2][3];
74  cnv[0][0] = -sin(nPar[3]);
75  cnv[0][1] = cos(nPar[3]);
76  cnv[0][2] = 0.;
77  cnv[1][0] = sin(nPar[3])/tan(nPar[2]);
78  cnv[1][1] = cos(nPar[3])/tan(nPar[2]);
79  cnv[1][2] = -1.;
80 //--
81  double covImp[3]={0.,0.,0.};
82  for( i=0; i<3; i++){
83  for( j=0; j<3; j++){
84  if(i>=j){ ij=i*(i+1)/2+j; }else{ ij=j*(j+1)/2+i;}
85  covImp[0] += cnv[0][i]*vk->FVC.covvrt[ij]*cnv[0][j];
86  covImp[1] += cnv[0][i]*vk->FVC.covvrt[ij]*cnv[1][j];
87  covImp[2] += cnv[1][i]*vk->FVC.covvrt[ij]*cnv[1][j];
88  }
89  }
90  if ( UseTrkErr){ covImp[0] += nCov[0]; covImp[1] += nCov[1]; covImp[2] += nCov[2];}
91 
92  double dwgt[3];
93  int IERR=cfdinv(covImp, dwgt, -2); if(IERR){ IERR=cfdinv(covImp, dwgt, 2); if(IERR){dwgt[0]=dwgt[2]=1.e6; dwgt[1]=0.;}}
94  Signif = sqrt(dwgt[0] * nPar[0] * nPar[0] + 2. * dwgt[1] * nPar[0] * nPar[1] +
95  dwgt[2] * nPar[1] * nPar[1]);
96 
97 //std::cout<<" fittedcov="<<nCov[0]<<", "<<nCov[2]<<'\n';
98 //std::cout<<" cfVrtDstSig="<<Signif<<", "<<nPar[0]<<", "<<nPar[1]<<'\n';
99  return Signif;
100 }

◆ combinedTrack()

void Trk::combinedTrack ( long int  ICH,
double *  pv0,
double *  covi,
double  BMAG,
double *  par,
double *  covo 
)

Definition at line 113 of file XYZtrp.cxx.

114 {
115 
116  double cnv[36]; /* was [6][6] */
117 /* ---------------------------------------------------------- */
118 /* Subroutine for convertion for VKalvrtCore */
119 /* Correct magnetic field BMAG at conversion point */
120 /* is provided externally. */
121 /* (X,Y,Z,PX,PY,PZ) --> (eps,z,theta,phi,1/r) */
122 /* Input: */
123 /* ICH - charge of track ( +1,0,-1 ) */
124 /* PV0(3) - Momentum of particle */
125 /* COVI(21) - simmetric covariance matrix */
126 /* Output: */
127 /* PARO(5) - (eps,z,theta,phi,1/r) */
128 /* ERRT(15) - simmetric error matrix */
129 /* NO PROPAGATION IS DONE!!!! */
130 /* For ICH=0 PARO(5) = const/pt */
131 /* Author: V.Kostyukhin */
132 /* ---------------------------------------------------------- */
133 
134  double constBF =BMAG * vkalMagCnvCst;
135 
136  double pt = sqrt(pv0[0]*pv0[0] + pv0[1]*pv0[1]);
137  double pp = pt*pt + pv0[2]*pv0[2];
138  double cs = pv0[0] / pt;
139  double sn = pv0[1] / pt;
140  double ctg = pv0[2] / pt;
141  double rho = ICH * constBF / pt;
142  if ( ICH==0 )rho = constBF / pt;
143 /* -- Output parameters */
144  par[0] = 0.; /* (-Yv*cos + Xv*sin) */
145  par[1] = 0.; /* Zv - cotth*(Xv*cos + Yv*sin) */
146  par[2] = acos(pv0[2] / sqrt(pp));
147  if(par[2]<1.e-5)par[2]=1.e-5;
148  if(par[2]>M_PI-1.e-5) par[2]=M_PI-1.e-5;
149  par[3] = atan2(pv0[1], pv0[0]);
150  par[4] = rho;
151  if ( ICH==0 )par[4] = constBF / pt;
152 //
153  double dTheta_dPx = pv0[0]*pv0[2]/(pt*pp); //dTheta/dPx
154  double dTheta_dPy = pv0[1]*pv0[2]/(pt*pp); //dTheta/dPy
155  double dTheta_dPz = -pt/pp; //dTheta/dPz
156  double dPhi_dPx = -pv0[1]/(pt*pt); //dPhi/dPx
157  double dPhi_dPy = pv0[0]/(pt*pt); //dPhi/dPy
158  double dPhi_dPz = 0; //dPhi/dPz
159  double dRho_dPx = -pv0[0]/(pt*pt) * rho; //dInvR/dPx
160  double dRho_dPy = -pv0[1]/(pt*pt) * rho; //dInvR/dPy
161  double dRho_dPz = 0.; //dInvR/dPz
162 //---
163  cnv_ref(1, 1) = sn;
164  cnv_ref(2, 1) = -cs;
165  cnv_ref(3, 1) = 0.;
166  cnv_ref(4, 1) = 0.;
167  cnv_ref(5, 1) = 0.;
168  cnv_ref(6, 1) = 0.;
169 
170  cnv_ref(1, 2) = -cs * ctg;
171  cnv_ref(2, 2) = -sn * ctg;
172  cnv_ref(3, 2) = 1.;
173  cnv_ref(4, 2) = 0.;
174  cnv_ref(5, 2) = 0.;
175  cnv_ref(6, 2) = 0.;
176 
177  cnv_ref(1, 3) = 0.;
178  cnv_ref(2, 3) = 0.;
179  cnv_ref(3, 3) = 0.;
180  cnv_ref(4, 3) = dTheta_dPx;
181  cnv_ref(5, 3) = dTheta_dPy;
182  cnv_ref(6, 3) = dTheta_dPz;
183 
184  cnv_ref(1, 4) = 0.;
185  cnv_ref(2, 4) = 0.;
186  if(ICH) cnv_ref(1, 4) = -cs * rho; //For charged tracks only
187  if(ICH) cnv_ref(2, 4) = -sn * rho; //
188  cnv_ref(3, 4) = 0.;
189  cnv_ref(4, 4) = dPhi_dPx;
190  cnv_ref(5, 4) = dPhi_dPy;
191  cnv_ref(6, 4) = dPhi_dPz;
192 
193  cnv_ref(1, 5) = 0.;
194  cnv_ref(2, 5) = 0.;
195  cnv_ref(3, 5) = 0.;
196  cnv_ref(4, 5) = dRho_dPx;
197  cnv_ref(5, 5) = dRho_dPy;
198  cnv_ref(6, 5) = dRho_dPz;
199  tdasatVK(cnv, covi , covo, 5, 6);
200 }

◆ consistentSurfaces() [1/2]

template<typename U , typename ... T>
bool Trk::consistentSurfaces ( a,
T...  b 
)

Definition at line 23 of file SurfaceConsistencyCheck.h.

23  {
24  if (a==nullptr) return (consistentSurfaces(b...));
25  return (((b!=nullptr)?(a->associatedSurface() == b->associatedSurface()):true) and ...);
26  }

◆ consistentSurfaces() [2/2]

template<typename U >
bool Trk::consistentSurfaces ( )

Definition at line 17 of file SurfaceConsistencyCheck.h.

17  {
18  return true;
19  }

◆ copyFullMtx()

void Trk::copyFullMtx ( const double *  Input,
long int  IPar,
long int  IDIM,
double *  Target,
long int  TStart,
long int  TDIM 
)

Definition at line 246 of file CascadeUtils.cxx.

248 {
249  int i,j,it,jt;
250  for( i=0; i<IPar; i++){
251  for( j=0; j<IPar; j++){
252  it=i+TStart; jt=j+TStart;
253  Target[it*TDIM+jt] = Input[i*IDIM+j];
254  }
255  }
256 }

◆ d_sign()

double Trk::d_sign ( double  value,
double  sign 
)
inline

Definition at line 33 of file TrkVKalUtils.h.

34  {
35  if( value >= 0){
36  if (sign >=0) return value;
37  if (sign < 0) return -value;
38  }
39  if( value < 0){
40  if (sign >=0) return -value;
41  if (sign < 0) return value;
42  }
43  return value;
44  }

◆ decomposeTransform()

void Trk::decomposeTransform ( const Amg::Transform3D transform,
double *  values 
)

Definition at line 57 of file AlignModule.cxx.

58  {
59  Amg::Vector3D translation = transform.translation();
60  values[0]=translation.x();
61  values[1]=translation.y();
62  values[2]=translation.z();
63 
65 
66  double sinbeta = rotation(2,0);
67  if(fabs(sinbeta) < 0.99999 ){
68 
69 // double invcosbeta = 1./std::sqrt(1.-sinbeta*sinbeta);
70 // double sinalpha = rotation(2,1)*invcosbeta;
71 // double singamma = rotation(1,0)*invcosbeta;
72 // std::cout << "Alpha " << -std::asin(sinalpha) << " " << -std::atan2( -rotation(2,1), rotation(2,2) )<< std::endl;
73 // std::cout << "Beta " << -std::asin(sinbeta) << " " << std::acos(1./invcosbeta) << std::endl;
74 // std::cout << "Gamma " << -std::asin(singamma) << " " << -std::atan2( -rotation(1,0), rotation(0,0 )) << std::endl;
75 
76  values[3]=-std::atan2( -rotation(2,1), rotation(2,2) );
77  values[4]=-std::asin(sinbeta);
78  values[5]=-std::atan2( -rotation(1,0), rotation(0,0) ) ;
79  if (values[3] == 0) values[3] = 0; // convert -0 to 0
80  if (values[5] == 0) values[5] = 0; // convert -0 to 0
81 
82  } else {
83  double alphaPlusGamma = std::asin( rotation(0,1) );
84  values[3] = alphaPlusGamma;
85  values[5] = 0;
86  if( sinbeta > 0 )
87  values[4] = M_PI * 0.5;
88  else
89  values[4] = -M_PI * 0.5;
90  }
91 
92  }

◆ detTypeStr()

std::string Trk::detTypeStr ( AlignModule::DetectorType  detType)

returns the detector type

Definition at line 177 of file AlignModule.cxx.

178  {
179  std::string typeStr;
180  switch (detType) {
182  typeStr="none"; break;
183  case AlignModule::Pixel:
184  typeStr="Pixel"; break;
185  case AlignModule::SCT:
186  typeStr="SCT"; break;
187  case AlignModule::TRT:
188  typeStr="TRT"; break;
189  case AlignModule::MDT:
190  typeStr="MDT"; break;
191  case AlignModule::CSC:
192  typeStr="CSC"; break;
193  case AlignModule::RPC:
194  typeStr="RPC"; break;
195  case AlignModule::TGC:
196  typeStr="TGC"; break;
197  case AlignModule::NDetectorTypes:
198  typeStr="NDetectorTypes"; break;
199  }
200  return typeStr;
201  }

◆ dsinv()

void Trk::dsinv ( long int  n,
double *  a,
long int  DIM,
long int *  ifail 
)
noexcept

Definition at line 517 of file Tracking/TrkVertexFitter/TrkVKalVrtCore/src/Matrix.cxx.

518 {
519  long int a_dim1, a_offset, i__1, i__2, i__3;
520  long int i__, j, k, l;
521  double s1, s31, s32, s33;
522  long int jm1, jm2, jp1;
523 
524 
525  /* Parameter adjustments */
526  a_dim1 = DIM;
527  a_offset = a_dim1 + 1;
528  a -= a_offset;
529 
530  /* Function Body */
531  jp1 = 0;
532  *ifail = 0;
533  i__1 = n;
534  for (j = 1; j <= i__1; ++j) {
535  if (a[j + j * a_dim1] <= 0.) {
536  goto L150;
537  }
538  a[j + j * a_dim1] = 1. / a[j + j * a_dim1];
539  if (j == n) {
540  goto L199;
541  }
542  jp1 = j + 1;
543  i__2 = n;
544  for (l = jp1; l <= i__2; ++l) {
545  a[j + l * a_dim1] = a[j + j * a_dim1] * a[l + j * a_dim1];
546  s1 = -a[l + (j + 1) * a_dim1];
547  i__3 = j;
548  for (i__ = 1; i__ <= i__3; ++i__) {
549  s1 = a[l + i__ * a_dim1] * a[i__ + (j + 1) * a_dim1] + s1;
550  }
551  a[l + (j + 1) * a_dim1] = -s1;
552  }
553  }
554 L150:
555  *ifail = -1;
556  return;
557 L199:
558 
559  if (n == 1) {
560  goto L399;
561  }
562  a[(a_dim1 << 1) + 1] = -a[(a_dim1 << 1) + 1];
563  a[a_dim1 + 2] = a[(a_dim1 << 1) + 1] * a[(a_dim1 << 1) + 2];
564  if (n == 2) {
565  goto L320;
566  }
567  i__1 = n;
568  for (j = 3; j <= i__1; ++j) {
569  jm2 = j - 2;
570  i__2 = jm2;
571  for (k = 1; k <= i__2; ++k) {
572  s31 = a[k + j * a_dim1];
573  i__3 = jm2;
574  for (i__ = k; i__ <= i__3; ++i__) {
575  s31 = a[k + (i__ + 1) * a_dim1] * a[i__ + 1 + j * a_dim1] +
576  s31;
577  }
578  a[k + j * a_dim1] = -s31;
579  a[j + k * a_dim1] = -s31 * a[j + j * a_dim1];
580  }
581  a[j - 1 + j * a_dim1] = -a[j - 1 + j * a_dim1];
582  a[j + (j - 1) * a_dim1] = a[j - 1 + j * a_dim1] * a[j + j * a_dim1];
583  }
584 L320:
585  j = 1;
586 L323:
587  s33 = a[j + j * a_dim1];
588  if (j == n) goto L325;
589  jp1 = j + 1;
590  i__1 = n;
591  for (i__ = jp1; i__ <= i__1; ++i__) {
592  s33 = a[j + i__ * a_dim1] * a[i__ + j * a_dim1] + s33;
593  }
594 L325:
595  a[j + j * a_dim1] = s33;
596  jm1 = j;
597  j = jp1;
598  i__1 = jm1;
599  for (k = 1; k <= i__1; ++k) {
600  s32 = 0.;
601  i__2 = n;
602  for (i__ = j; i__ <= i__2; ++i__) {
603  s32 = a[k + i__ * a_dim1] * a[i__ + j * a_dim1] + s32;
604  }
605  a[k + j * a_dim1] = s32;
606  a[j + k * a_dim1] = s32;
607  }
608  if (j < n) goto L323;
609 L399:
610  return;
611 }

◆ dumpAlignTrackType()

std::string Trk::dumpAlignTrackType ( const AlignTrack::AlignTrackType  type)

Definition at line 410 of file AlignTrack.cxx.

411  {
412  switch(type) {
413  case AlignTrack::Unknown: return "Unknown";
414  case AlignTrack::Original: return "Original";
415  case AlignTrack::NormalRefitted: return "NormalRefitted";
416  case AlignTrack::BeamspotConstrained: return "BeamspotConstrained";
417  case AlignTrack::VertexConstrained: return "VertexConstrained";
418  default: return "UNDEFINED";
419  }
420  }

◆ efdCoef()

void Trk::efdCoef ( double  Ga0,
double  Gamb,
double  Gab,
double  Gw0,
double  Gwb,
double  alf,
double  bet,
double  w,
double &  d,
double &  e,
double &  f 
)

Definition at line 269 of file Tracking/TrkVertexFitter/TrkVKalVrtCore/src/Utilities.cxx.

274 {
275 
276  e = (Gab + Gamb - 2.*Ga0)/bet/bet/2.;
277  f = (Gwb + Gamb - 2.*e*bet*bet - Gw0 - Ga0)/bet/(w-alf);
278  d = (Gab - Ga0 - e*bet*bet - f*alf*bet)/bet;
279 }

◆ ErrorScalingCast()

template<typename T_res , typename T_src >
const T_res* Trk::ErrorScalingCast ( const T_src *  src)

Definition at line 14 of file ErrorScalingCast.h.

14  {
15 
16  if (T_res::s_type != src->type()) {
17  std::stringstream message;
18  message << "Invalid RIO_OnTrackErrorScaling type. Expected "
19  << T_res::s_type << " But Received " << src->type();
20 
21  throw std::runtime_error(message.str());
22  }
23  return static_cast<const T_res*>(src);
24 }

◆ finter()

double Trk::finter ( double  y0,
double  y1,
double  y2,
double  x0,
double  x1,
double  x2 
)

Definition at line 128 of file Tracking/TrkVertexFitter/TrkVKalVrtCore/src/Utilities.cxx.

129 {
130  double ret_val;
131  volatile double b1,b2; // To guarantee AMD==Intel
132 
133 /* ------------------------*/
134 /* Function interpolation */
135 /* Author: V.Kostyukhin */
136 /* ------------------------*/
137  b1 = (y1 - y0) / (x1 - x0);
138  b2 = (y2 - y0 - b1 * (x2 - x0)) / (x2 - x0) / (x2 - x1);
139  if (std::abs(b2) < 1e-8) {
140  if (y2 <= y0 && y2 < y1) {
141  ret_val = x2;
142  } else if (y1 <= y0 && y1 < y2) {
143  ret_val = x1;
144  } else if (y0 < y1 && y0 < y2) {
145  ret_val = x0 + (x2 - x0) * .001;
146  } else {
147  ret_val = x2;
148  }
149  return ret_val;
150  }
151  ret_val = (x1 + x0) - ( b1 / b2 );
152 //VK 14.08.2007 Check now is after call of this subroutine
153 // double NegativeLim = x0 + (x2 - x0) * (-0.3);
154 // if (ret_val <= x0) {
155 // if (ret_val <= NegativeLim) ret_val = NegativeLim;
156 // }
157  return ret_val/2.;
158 }

◆ fitVertexCascade()

int Trk::fitVertexCascade ( VKVertex vk,
int  Pointing 
)

Definition at line 89 of file CFitCascade.cxx.

90 {
91 //-------------------------------------------------------------------------
92 // Fits single vertex in cascade (no iterations , just a single fit!!!)
93 // creates summary track after it and fills corresponding track parameters
94 // in next vertex in cascade
95 //
96 // Procedure assumes that "included tracks"(from vertices) are already
97 // recalculated in predecessor vertices fits.
98 //
99 // Pointing=0 (false) - for combined track FITTED at vertex parameters are used
100 // ^^^^^^ better convergence
101 // Pointing=1 (true) - for combined track GUESSED(ini) at GUESSED(ini) vertex
102 // parameters are used together with afterfit error matrix.
103 // It's needed for correct treatment of pointing
104 //-------------------------------------------------------------------------
105 //
106 // Fit itself. First get magnetic field at iteration reference point
107 //
108  vk->vk_fitterControl->vk_forcft.localbmag=Trk::vkalMagFld::getMagFld(vk->refIterV,(vk->vk_fitterControl).get());
109 
110 
111 //
112 //-------- Check if pointing constraint exists
113 //
114  bool existPointingCnst=false;
115  for(int ic=0; ic<(int)vk->ConstraintList.size(); ic++){
116  if(vk->ConstraintList[ic]->getType() == VKContraintType::Point) { existPointingCnst=true; break; }
117  }
118 //
119 //-------- Then fit
120 //
121  applyConstraints(vk); //apply all constraints in vertex
122  int IERR = vtcfit( vk );
123  if(IERR) return IERR;
124 //
125 //fit vertex once more with resolved constraints to prevent oscillations
126 // if(Pointing){
127 // double targVrt[3]={vk->refIterV[0] + vk->fitV[0],vk->refIterV[1] + vk->fitV[1],vk->refIterV[2] + vk->fitV[2]};
128 // vk->vk_fitterControl->vk_forcft.localbmag=myMagFld.getMagFld(vk->targVrt,(vk->vk_fitterControl).get());
129 // vk->setRefIterV(targVrt);
130 // vk->iniV[0]=vk->fitV[0]=vk->cnstV[0]=vk->iniV[1]=vk->fitV[1]=vk->cnstV[1]=vk->iniV[2]=vk->fitV[2]=vk->cnstV[2]=0.;
131 // for(int it=0; it<(int)vk->TrackList.size(); it++){
132 // VKTrack * trk = vk->TrackList[it];
133 // trk->cnstP[0] = trk->iniP[0] = trk->fitP[0]; // for constraint calculation on next step
134 // trk->cnstP[1] = trk->iniP[1] = trk->fitP[1];
135 // trk->cnstP[2] = trk->iniP[2] = trk->fitP[2];
136 // }
137 // applyConstraints(vk); //apply all constraints in vertex
138 // int IERR = vtcfit( vk );
139 // if(IERR) return IERR;
140 // }
141 //
142 // Fill fitted combined track in next vertex (if needed)
143 //
144  if(vk->nextCascadeVrt){
145  FullMTXfill(vk, vk->ader);
146  VKTrack * target_trk = getCombinedVTrack(vk); // get address of combined track
147  if( target_trk == nullptr ) return -12;
148 
149  long int Charge=getVertexCharge(vk);
150  if(Charge!=0) Charge=std::copysign(1,Charge);
151  target_trk->Charge=Charge;
152 
153  double dptot[4],VrtMomCov[21];
154  double parV0[5],covParV0[15],tmpCov[15],fittedVrt[3];
155  if(Pointing){
156  IERR = afterFitWithIniPar( vk, vk->ader, vk->FVC.dcv, dptot, VrtMomCov, (vk->vk_fitterControl).get());
157  fittedVrt[0]=vk->refIterV[0]+vk->iniV[0];
158  fittedVrt[1]=vk->refIterV[1]+vk->iniV[1];
159  fittedVrt[2]=vk->refIterV[2]+vk->iniV[2];
160  }
161  else{
162  IERR = afterFit( vk, vk->ader, vk->FVC.dcv, dptot, VrtMomCov, (vk->vk_fitterControl).get());
163  fittedVrt[0]=vk->refIterV[0]+vk->fitV[0];
164  fittedVrt[1]=vk->refIterV[1]+vk->fitV[1];
165  fittedVrt[2]=vk->refIterV[2]+vk->fitV[2];
166  }
167  if (IERR) return -13; /* NONINVERTIBLE COV.MATRIX */
168  cfdcopy( dptot, vk->fitMom, 3); //save Momentum
169  cfdcopy(VrtMomCov, vk->fitCovXYZMom, 21); //save XYZMom covariance
170 //
171 //-- Solution (not ideal!) of cascade covariance problem.
172 //-- Covariance of pseudo-particle must be calculated WITHOUT pointing constraint ALWAYS!.
173 //
174 // if(existPointingCnst){ // use saved matrix without pointing constraint
175 // cfdcopy( vk->savedVrtMomCov, VrtMomCov, 21);
176 // }else{ // save computed matrix for further use
177 // cfdcopy( VrtMomCov, vk->savedVrtMomCov, 21);
178 // }
179  if(existPointingCnst){ // add pointed vertex covariance to track
180  for(int km=0; km<6; km++) VrtMomCov[km] += vk->nextCascadeVrt->fitCovXYZMom[km];
181  if(vk->nextCascadeVrt->TrackList[0]->Id>0){ //There is at least one real track in this vertex
182  VrtMomCov[0] *= 1000.;
183  VrtMomCov[2] *= 1000.;
184  VrtMomCov[5] *= 1000.;
185  VrtMomCov[9] *= 1000.;
186  VrtMomCov[14] *= 1000.;
187  VrtMomCov[20] *= 1000.;
188  }
189  }
190 //
191 // Particle creation and propagation
192  double localField=Trk::vkalMagFld::getMagFld(fittedVrt,(vk->vk_fitterControl).get());
193  combinedTrack( Charge, dptot, VrtMomCov, localField, parV0, covParV0);
194  covParV0[0]=std::abs(covParV0[0]); covParV0[2]=std::abs(covParV0[2]); covParV0[5]=std::abs(covParV0[5]);
195  covParV0[9]=std::abs(covParV0[9]); covParV0[14]=std::abs(covParV0[14]); //VK protection against numerical problems
196  Trk::vkalPropagator::Propagate(-999, Charge, parV0, covParV0, fittedVrt,
197  vk->nextCascadeVrt->refIterV, target_trk->Perig, tmpCov, (vk->vk_fitterControl).get());
198 // IERR=cfInv5(tmpCov, target_trk->WgtM); if (IERR) IERR=cfdinv(tmpCov, target_trk->WgtM, 5);
199 // target_trk->iniP[0]=target_trk->cnstP[0]=target_trk->fitP[0]=target_trk->Perig[2]; //initial guess
200 // target_trk->iniP[1]=target_trk->cnstP[1]=target_trk->fitP[1]=target_trk->Perig[3];
201 // target_trk->iniP[2]=target_trk->cnstP[2]=target_trk->fitP[2]=target_trk->Perig[4];
202  if( target_trk->fitP[2] == 0.){
203  target_trk->iniP[0]=target_trk->cnstP[0]=target_trk->Perig[2]; //initial guess
204  target_trk->iniP[1]=target_trk->cnstP[1]=target_trk->Perig[3];
205  target_trk->iniP[2]=target_trk->cnstP[2]=target_trk->Perig[4];
206  }else if(Pointing){
207  target_trk->iniP[0]=target_trk->cnstP[0]=target_trk->fitP[0]; //initial guess
208  target_trk->iniP[1]=target_trk->cnstP[1]=target_trk->fitP[1];
209  target_trk->iniP[2]=target_trk->cnstP[2]=target_trk->fitP[2];
210  }else{
211  target_trk->iniP[0]=target_trk->cnstP[0]=(target_trk->fitP[0]+target_trk->Perig[2])/2.; //initial guess
212  target_trk->iniP[1]=target_trk->cnstP[1]=(target_trk->fitP[1]+target_trk->Perig[3])/2.;
213  target_trk->iniP[2]=target_trk->cnstP[2]=(target_trk->fitP[2]+target_trk->Perig[4])/2.;
214  }
215  if(tmpCov[0]>1.e12 || tmpCov[2]>1.e12) return -18; //Something is wrong in combined track creation
216  if(Pointing){tmpCov[0] += target_trk->Perig[0]*target_trk->Perig[0]; tmpCov[2] += target_trk->Perig[1]*target_trk->Perig[1];}
217  tmpCov[0] += 0.0001*0.0001; tmpCov[2] += 0.0002*0.0002; //numerical accuracy protection
218 
219  IERR=cfInv5(tmpCov, target_trk->WgtM); if (IERR) IERR=cfdinv(tmpCov, target_trk->WgtM, 5);
220  if (IERR) return -15; /* NONINVERTIBLE COV.MATRIX */
221  }
222 //
223 // For passing near vertex constraint. Normally first(mother) vertex of cascade
224 // Now used also for "close to vertex" mode for cascade
225 // For last in structure (mother in cascade...) always calculate it - needed for pointing
226 //
227  CascadeEvent & cascadeEvent_ = *(vk->vk_fitterControl->getCascadeEvent());
228  if( vk->passNearVertex || vk==cascadeEvent_.cascadeVertexList[cascadeEvent_.cascadeNV-1].get()){
229  double dptot[4],VrtMomCov[21];
230  IERR = afterFit( vk, vk->ader, vk->FVC.dcv, dptot, VrtMomCov, (vk->vk_fitterControl).get());
231  if (IERR) return -13; /* NONINVERTIBLE COV.MATRIX */
232  cfdcopy( dptot, vk->fitMom, 3); //save Momentum
233  cfdcopy(VrtMomCov, vk->fitCovXYZMom, 21); //save XYZMom covariance
234  }
235  return 0;
236 }

◆ fitVertexCascadeScale()

int Trk::fitVertexCascadeScale ( VKVertex vk,
double &  distToVertex 
)

Definition at line 44 of file CFitCascadeScale.cxx.

45 {
46 //-------------------------------------------------------------------------
47 // Fits single vertex in cascade (no iterations , just a single fit!!!)
48 // creates summary track after it and fills corresponding track parameters
49 // in next vertex in cascade
50 //
51 // "Near to vertex" pointing is used here with decreasing vertex errors
52 //
53 // Procedure assumes that "included tracks"(from vertices) are already
54 // recalculated in predecessor vertices fits.
55 //
56 // Fit itself. First get magnetic field at iteration reference point
57 //
58  distToVertex = 0.;
59  vk->vk_fitterControl->vk_forcft.localbmag=Trk::vkalMagFld::getMagFld(vk->refIterV,(vk->vk_fitterControl).get());
60 
61 
62 //
63 //-------- Then fit
64 //
65  applyConstraints(vk); //apply all constraints in vertex
66  int IERR = vtcfit( vk );
67  if(IERR) return IERR;
68 //
69 //
70 // Fill fitted combined track in next vertex (if needed)
71 //
72  double dptot[4],VrtMomCov[21];
73  IERR = afterFit( vk, vk->ader, vk->FVC.dcv, dptot, VrtMomCov, (vk->vk_fitterControl).get());
74  if (IERR) return -13; /* NONINVERTIBLE COV.MATRIX */
75  cfdcopy( dptot, vk->fitMom, 3); //save Momentum
76  cfdcopy(VrtMomCov, vk->fitCovXYZMom, 21); //save XYZMom covariance
77  vk->FVC.Charge=getVertexCharge(vk);
78  if(vk->FVC.Charge!=0)vk->FVC.Charge=std::copysign(1,vk->FVC.Charge);
79 //
80  if(vk->nextCascadeVrt){
81  FullMTXfill(vk, vk->ader);
82  VKTrack * target_trk = getCombinedVTrack(vk); // get address of combined track
83  if( target_trk == nullptr ) return -12;
84 
85  long int Charge=getVertexCharge(vk);
86  if(Charge!=0)Charge=std::copysign(1,Charge);
87  target_trk->Charge=Charge;
88 
89  double parV0[5],covParV0[15],tmpCov[15],fittedVrt[3];
90  fittedVrt[0]=vk->refIterV[0]+vk->fitV[0];
91  fittedVrt[1]=vk->refIterV[1]+vk->fitV[1];
92  fittedVrt[2]=vk->refIterV[2]+vk->fitV[2];
93 //
94 // Particle creation and propagation
95  double localField=Trk::vkalMagFld::getMagFld(fittedVrt,(vk->vk_fitterControl).get());
96  combinedTrack( Charge, dptot, VrtMomCov, localField, parV0, covParV0);
97  covParV0[0]=std::abs(covParV0[0]); covParV0[2]=std::abs(covParV0[2]); covParV0[5]=fabs(covParV0[5]);
98  covParV0[9]=std::abs(covParV0[9]); covParV0[14]=std::abs(covParV0[14]); //VK protection against numerical problems
99  Trk::vkalPropagator::Propagate(-999, Charge, parV0, covParV0, fittedVrt,
100  vk->nextCascadeVrt->refIterV, target_trk->Perig, tmpCov, (vk->vk_fitterControl).get());
101 //std::cout<<"testR,Z="<<target_trk->Perig[0]<<", "<<target_trk->Perig[1]<<'\n';
102  distToVertex = sqrt(target_trk->Perig[0]*target_trk->Perig[0]+target_trk->Perig[1]*target_trk->Perig[1]);
103  target_trk->iniP[0]=target_trk->cnstP[0]=target_trk->Perig[2]; //initial guess
104  target_trk->iniP[1]=target_trk->cnstP[1]=target_trk->Perig[3];
105  target_trk->iniP[2]=target_trk->cnstP[2]=target_trk->Perig[4];
106  IERR=cfInv5(tmpCov, target_trk->WgtM); if (IERR) IERR=cfdinv(tmpCov, target_trk->WgtM, 5);
107  if (IERR) return -15; /* NONINVERTIBLE COV.MATRIX */
108  for(int im=0; im<15; im++)target_trk->WgtM[im] /= vk->vk_fitterControl->getCascadeEvent()->getSCALE(); // Tighten pseudotrack errors
109  }
110 //
111 // Save refitted vertex position as target for predecessors
112  if(!vk->includedVrt.empty()){ // Save fitted vertex as target for "pass near" constraint in previous vertex
113  for(int pseu=0; pseu<(int)vk->includedVrt.size(); pseu++){
114 // vk->includedVrt[pseu]->FVC.vrt[0] = (vk->refIterV[0] + vk->fitV[0] + vk->includedVrt[pseu]->FVC.vrt[0])/2.;
115 // vk->includedVrt[pseu]->FVC.vrt[1] = (vk->refIterV[1] + vk->fitV[1] + vk->includedVrt[pseu]->FVC.vrt[1])/2.;
116 // vk->includedVrt[pseu]->FVC.vrt[2] = (vk->refIterV[2] + vk->fitV[2] + vk->includedVrt[pseu]->FVC.vrt[2])/2.;
117  vk->includedVrt[pseu]->FVC.vrt[0] = vk->refIterV[0] + vk->fitV[0];
118  vk->includedVrt[pseu]->FVC.vrt[1] = vk->refIterV[1] + vk->fitV[1];
119  vk->includedVrt[pseu]->FVC.vrt[2] = vk->refIterV[2] + vk->fitV[2];
120  }
121  }
122  return 0;
123 }

◆ fixPseudoTrackPt()

int Trk::fixPseudoTrackPt ( long int  NPar,
double *  fullMtx,
double *  LSide,
CascadeEvent cascadeEvent_ 
)

Definition at line 18 of file CascadeUtils.cxx.

19 {
20 
21  int iv,it,ivnext;
22  //Deliberately not make_unique to bypass inititalization
23  std::unique_ptr<double[]> DerivC( new double[NPar] );
24  std::unique_ptr<double[]> DerivP( new double[NPar] );
25  std::unique_ptr<double[]> DerivT( new double[NPar] );
26 //
27  std::vector<double> vMagFld; double vBx,vBy,vBz;
28  for( iv=0; iv<cascadeEvent_.cascadeNV; iv++){
29  VKVertex * vk = cascadeEvent_.cascadeVertexList[iv].get();
30  Trk::vkalMagFld::getMagFld(vk->refIterV[0]+vk->iniV[0], vk->refIterV[1]+vk->iniV[1], vk->refIterV[2]+vk->iniV[2],vBx,vBy,vBz,(vk->vk_fitterControl).get());
31  vMagFld.push_back(vBz); // fill mag.fields for all vertices
32  }
33 //
34  for( iv=0; iv<cascadeEvent_.cascadeNV; iv++){
35  int indCombTrk=-1;
36  int iniPosTrk=0; /* Start of track part of vertex in global matrix */
37  int posCombTrk=0; /* Conbined track position in global matrix */
38  VKVertex* vk = cascadeEvent_.cascadeVertexList[iv].get();
39  if(vk->nextCascadeVrt){ //next vertex exists
40  ivnext=-1; //index of next vertex in common structure
41  for(int ivt=0;ivt<cascadeEvent_.cascadeNV;ivt++)if(vk->nextCascadeVrt==cascadeEvent_.cascadeVertexList[ivt].get())ivnext=ivt;
42  if(ivnext<0){return -1;}; //error in cascade
43 //
44  int NV=vk->nextCascadeVrt->includedVrt.size();
45  if(NV>0){
46  for(it=0; it<NV; it++)
47  if(vk->nextCascadeVrt->includedVrt[it] == vk)
48  indCombTrk=vk->nextCascadeVrt->TrackList.size() - NV + it; // index of combined track in next vertex track list
49  }
50  if(indCombTrk>=0){
51  iniPosTrk =cascadeEvent_.matrixPnt[iv]+3; /*Start of track part of vertex in global matrix */
52  posCombTrk =cascadeEvent_.matrixPnt[ivnext]+3+3*indCombTrk; /*Get position in global matrix */
53  }
54  if(posCombTrk==0 || iniPosTrk==0) {return -1;} //ERROR in cascade structure somewhere....
55 //
56 // Momentum of pseudo track in next vertex
57  for(int ivt=0; ivt<NPar; ivt++)DerivC[ivt]=DerivP[ivt]=DerivT[ivt]=0.;
58  DerivC[posCombTrk+2]=-1.;
59  DerivT[posCombTrk+0]=-1.;
60  DerivP[posCombTrk+1]=-1.;
61  std::array<double, 4> ppsum = getIniParticleMom( vk->nextCascadeVrt->TrackList[indCombTrk].get(), vMagFld[ivnext] ); // INI for pseudo
62  double csum=vk->nextCascadeVrt->TrackList[indCombTrk]->iniP[2]; // INI for pseudo
63  double ptsum=sqrt(ppsum[0]*ppsum[0] + ppsum[1]*ppsum[1]);
64  double sinth2sum=(ppsum[0]*ppsum[0] + ppsum[1]*ppsum[1])/(ppsum[0]*ppsum[0] + ppsum[1]*ppsum[1] + ppsum[2]*ppsum[2]);
65 
66 //
67 // Momenta+Derivatives of tracks in vertex itself
68  for(it=0; it<(int)vk->TrackList.size(); it++){
69  std::array<double, 4> pp = getIniParticleMom( vk->TrackList[it].get(), vMagFld[iv]);
70  double curv=vk->TrackList[it]->iniP[2];
71  double pt=sqrt(pp[0]*pp[0] + pp[1]*pp[1]);
72  double cth=pp[2]/pt;
73  double sinth2=(pp[0]*pp[0] + pp[1]*pp[1])/(pp[0]*pp[0] + pp[1]*pp[1] + pp[2]*pp[2]);
74  DerivC[iniPosTrk+it*3+1] = csum/ptsum/ptsum*(ppsum[0]*pp[1]-ppsum[1]*pp[0]); // dC/dPhi_i
75  DerivC[iniPosTrk+it*3+2] = csum/ptsum/ptsum*(ppsum[0]*pp[0]+ppsum[1]*pp[1])/curv; // dC/dC_i
76  DerivP[iniPosTrk+it*3+1] = (ppsum[0]*pp[0]+ppsum[1]*pp[1])/ptsum/ptsum; // dPhi/dPhi_i
77  DerivP[iniPosTrk+it*3+2] = (ppsum[1]*pp[0]-ppsum[0]*pp[1])/ptsum/ptsum/curv; // dPhi/dC_i
78  DerivT[iniPosTrk+it*3+0] = (sinth2sum*pt)/(sinth2*ptsum); // dTheta/dTheta_i
79  DerivT[iniPosTrk+it*3+2] = (sinth2sum*pt*cth)/(curv*ptsum); // dTheta/dC_i
80  }
81 // double iniV0Curv=myMagFld.getCnvCst()*vMagFld[iv]/sqrt(tpx*tpx+tpy*tpy); //initial PseudoTrack Curvature
82 // if(csum<0)iniV0Curv *= -1.;
83 // iniV0Curv *= vMagFld[ivnext]/vMagFld[iv]; //magnetic field correction
84 //
85 //fill Full Matrix and left side vector
86 //
87 //---- Momentum only
88 // for(it=0; it<NPar; it++) fullMtx[ (NPar-1*(cascadeEvent_.cascadeNV-1)+1*iv )*NPar + it] = DerivC[it];
89 // for(it=0; it<NPar; it++) fullMtx[ (NPar-1*(cascadeEvent_.cascadeNV-1)+1*iv ) + it*NPar] = DerivC[it];
90 // LSide[ NPar-1*(cascadeEvent_.cascadeNV-1)+1*iv] = -iniV0Curv+csum;
91 //---- Momentum+phi+theta //VK seems overshooting because direction is fixed by vertex-vertex pointing. Returns wrong error matrix
92  for(it=0; it<NPar; it++) fullMtx[ (NPar-3*(cascadeEvent_.cascadeNV-1)+3*iv )*NPar + it] = DerivT[it];
93  for(it=0; it<NPar; it++) fullMtx[ (NPar-3*(cascadeEvent_.cascadeNV-1)+3*iv+1)*NPar + it] = DerivP[it];
94  for(it=0; it<NPar; it++) fullMtx[ (NPar-3*(cascadeEvent_.cascadeNV-1)+3*iv+2)*NPar + it] = DerivC[it];
95  for(it=0; it<NPar; it++) fullMtx[ (NPar-3*(cascadeEvent_.cascadeNV-1)+3*iv ) + it*NPar] = DerivT[it];
96  for(it=0; it<NPar; it++) fullMtx[ (NPar-3*(cascadeEvent_.cascadeNV-1)+3*iv+1) + it*NPar] = DerivP[it];
97  for(it=0; it<NPar; it++) fullMtx[ (NPar-3*(cascadeEvent_.cascadeNV-1)+3*iv+2) + it*NPar] = DerivC[it];
98  VKTrack* cmbt=vk->nextCascadeVrt->TrackList[indCombTrk].get();
99  LSide[ NPar-3*(cascadeEvent_.cascadeNV-1)+3*iv ] = cmbt->iniP[0]-cmbt->Perig[2];
100  LSide[ NPar-3*(cascadeEvent_.cascadeNV-1)+3*iv+1] = cmbt->iniP[1]-cmbt->Perig[3];
101  LSide[ NPar-3*(cascadeEvent_.cascadeNV-1)+3*iv+2] = cmbt->iniP[2]-cmbt->Perig[4];
102  }
103 
104  } //end of vertex cycle
105  return 0; //All ok
106 }

◆ FullMCNSTfill()

int Trk::FullMCNSTfill ( VKVertex vk,
double *  ader,
double *  LSide 
)

Definition at line 81 of file FullMtx.cxx.

82 {
83  int i,j,k,l,ii,ic,it,jt;
84 
85  int totNC=0; //total number of constraints
86  for(i=0; i<(int)vk->ConstraintList.size();i++)totNC += vk->ConstraintList[i]->NCDim;
87 
88  int NTRK = vk->TrackList.size();
89  int NPar = 3*NTRK+3+totNC;
90 // int NPar=3*NTrkM+3;
91 
92  for (i=0; i<NPar; i++) { for (j=0; j<NPar; j++) ader[i+j*NPar]=0.; }
93  std::vector<std::vector< const Vect3DF*> > tf0t; // derivative collectors
94  std::vector< const Vect3DF* > th0t; // derivative collectors
95  std::vector< double > taa; // derivative collectors
96  std::vector< const Vect3DF* > tmpVec;
97  for(ii=0; ii<(int)vk->ConstraintList.size();ii++){
98  for(ic=0; ic<(int)vk->ConstraintList[ii]->NCDim; ic++){
99  taa.push_back( vk->ConstraintList[ii]->aa[ic] );
100  th0t.push_back( &(vk->ConstraintList[ii]->h0t[ic]) );
101  tmpVec.clear();
102  tmpVec.reserve(vk->ConstraintList[ii]->f0t.size());
103  for(it=0; it<(int)vk->ConstraintList[ii]->f0t.size(); it++){
104  tmpVec.push_back( &(vk->ConstraintList[ii]->f0t[it][ic]) );
105  }
106  tf0t.push_back( std::move(tmpVec) );
107  }
108  }
109 //-----------------------------------------------------------------------------
110  ader[0*NPar+ 0] += vk->wa[0];
111  ader[0*NPar+ 1] += vk->wa[1];
112  ader[1*NPar+ 1] += vk->wa[2];
113  ader[0*NPar+ 2] += vk->wa[3];
114  ader[1*NPar+ 2] += vk->wa[4];
115  ader[2*NPar+ 2] += vk->wa[5];
116  ader[1*NPar+ 0] = ader[0*NPar+ 1];
117  ader[2*NPar+ 0] = ader[0*NPar+ 2];
118  ader[2*NPar+ 1] = ader[1*NPar+ 2];
119 
120 
121  for (it=0; it<NTRK; ++it) {
122  ader[0 + (it*3 + 3)*NPar] += vk->tmpArr[it]->wb[0];
123  ader[1 + (it*3 + 3)*NPar] += vk->tmpArr[it]->wb[1];
124  ader[2 + (it*3 + 3)*NPar] += vk->tmpArr[it]->wb[2];
125  ader[0 + (it*3 + 4)*NPar] += vk->tmpArr[it]->wb[3];
126  ader[1 + (it*3 + 4)*NPar] += vk->tmpArr[it]->wb[4];
127  ader[2 + (it*3 + 4)*NPar] += vk->tmpArr[it]->wb[5];
128  ader[0 + (it*3 + 5)*NPar] += vk->tmpArr[it]->wb[6];
129  ader[1 + (it*3 + 5)*NPar] += vk->tmpArr[it]->wb[7];
130  ader[2 + (it*3 + 5)*NPar] += vk->tmpArr[it]->wb[8];
131  }
132 
133  for (it=0; it<NTRK; ++it) {
134  ader[(it*3 + 3) + (it*3 + 3)*NPar] += vk->tmpArr[it]->wc[0];
135  ader[(it*3 + 3) + (it*3 + 4)*NPar] += vk->tmpArr[it]->wc[1];
136  ader[(it*3 + 4) + (it*3 + 4)*NPar] += vk->tmpArr[it]->wc[2];
137  ader[(it*3 + 3) + (it*3 + 5)*NPar] += vk->tmpArr[it]->wc[3];
138  ader[(it*3 + 4) + (it*3 + 5)*NPar] += vk->tmpArr[it]->wc[4];
139  ader[(it*3 + 5) + (it*3 + 5)*NPar] += vk->tmpArr[it]->wc[5];
140  ader[(it*3 + 4) + (it*3 + 3)*NPar] += vk->tmpArr[it]->wc[1];
141  ader[(it*3 + 5) + (it*3 + 3)*NPar] += vk->tmpArr[it]->wc[3];
142  ader[(it*3 + 5) + (it*3 + 4)*NPar] += vk->tmpArr[it]->wc[4];
143  }
144 /* symmetrisation */
145  for (i=0; i<NPar-1; i++) {
146  for (j=i+1; j<NPar; ++j) {
147  ader[j + i*NPar] = ader[i + j*NPar];
148  }
149  }
150 //
151 // For "passing near" constraint
152  if (vk->passNearVertex){
153  double drdpy[2][3],dpipj[3][3];
154  for (it = 0; it < NTRK; ++it) {
155  drdpy[0][0] = vk->tmpArr[it]->drdp[0][0] * vk->FVC.ywgt[0] + vk->tmpArr[it]->drdp[1][0] * vk->FVC.ywgt[1];
156  drdpy[1][0] = vk->tmpArr[it]->drdp[0][0] * vk->FVC.ywgt[1] + vk->tmpArr[it]->drdp[1][0] * vk->FVC.ywgt[2];
157  drdpy[0][1] = vk->tmpArr[it]->drdp[0][1] * vk->FVC.ywgt[0] + vk->tmpArr[it]->drdp[1][1] * vk->FVC.ywgt[1];
158  drdpy[1][1] = vk->tmpArr[it]->drdp[0][1] * vk->FVC.ywgt[1] + vk->tmpArr[it]->drdp[1][1] * vk->FVC.ywgt[2];
159  drdpy[0][2] = vk->tmpArr[it]->drdp[0][2] * vk->FVC.ywgt[0] + vk->tmpArr[it]->drdp[1][2] * vk->FVC.ywgt[1];
160  drdpy[1][2] = vk->tmpArr[it]->drdp[0][2] * vk->FVC.ywgt[1] + vk->tmpArr[it]->drdp[1][2] * vk->FVC.ywgt[2];
161  for (jt = 0; jt < NTRK; ++jt) { /* Matrix */
162  for (k=0; k<3; ++k) {
163  for (l=0; l<3; ++l) {
164  dpipj[k][l] = 0.;
165  for (j=0; j<2; ++j) {
166  dpipj[k][l] += vk->tmpArr[jt]->drdp[j][k] * drdpy[j][l];
167  }
168  }
169  }
170  for (k=0; k<3; ++k) {
171  for (l=0; l<3; ++l) {
172  ader[(it*3+3 +k) + (jt*3+3 +l)*NPar] += dpipj[l][k];
173  }
174  }
175  } // jt cycle
176  } // it cycle
177  }
178 //
179 // Part for lagrange multipliers
180 //
181  int NTrP=NTRK*3 + 3; // track part of matrix
182  for(ic=0; ic<totNC; ic++){
183  ader[(0) + (NTrP+ic)*NPar] = -2.*th0t[ic]->X;
184  ader[(1) + (NTrP+ic)*NPar] = -2.*th0t[ic]->Y;
185  ader[(2) + (NTrP+ic)*NPar] = -2.*th0t[ic]->Z;
186  ader[(0)*NPar + (NTrP+ic) ] = -2.*th0t[ic]->X;
187  ader[(1)*NPar + (NTrP+ic) ] = -2.*th0t[ic]->Y;
188  ader[(2)*NPar + (NTrP+ic) ] = -2.*th0t[ic]->Z;
189  for (it=0; it<NTRK; ++it) {
190  ader[(it*3+3+0) + (NTrP+ic)*NPar] = - 2.*tf0t[ic][it]->X;
191  ader[(it*3+3+1) + (NTrP+ic)*NPar] = - 2.*tf0t[ic][it]->Y;
192  ader[(it*3+3+2) + (NTrP+ic)*NPar] = - 2.*tf0t[ic][it]->Z;
193  ader[(it*3+3+0)*NPar + (NTrP+ic)] = - 2.*tf0t[ic][it]->X;
194  ader[(it*3+3+1)*NPar + (NTrP+ic)] = - 2.*tf0t[ic][it]->Y;
195  ader[(it*3+3+2)*NPar + (NTrP+ic)] = - 2.*tf0t[ic][it]->Z;
196  }
197  }
198 //
199 // Left part
200 //
201 // double *LSide = new double[NPar];
202  LSide[0]=vk->T[0];
203  LSide[1]=vk->T[1];
204  LSide[2]=vk->T[2];
205  for (it=0; it<NTRK; ++it) {
206  LSide[it*3+3+0]=vk->tmpArr[it]->tt[0];
207  LSide[it*3+3+1]=vk->tmpArr[it]->tt[1];
208  LSide[it*3+3+2]=vk->tmpArr[it]->tt[2];
209  }
210  for(ic=0; ic<totNC; ic++){
211  LSide[NTRK*3+3+ic]=taa[ic];
212  }
213 //--------------------------------------------------
214  //int IERR = vkMSolve(ader, LSide, NPar);
215  //std::cout<<"global="<<NPar<<" err="<<IERR<<'\n';
216  //std::cout<<" Vrt="<<LSide[0]<<", "<<LSide[1]<<", "<<LSide[2]<<'\n';
217  //for(it=0; it<NTRK; it++)std::cout<<" trk="<<LSide[it*3+3+0]<<", "
218  // <<LSide[it*3+3+1]<<", "<<LSide[it*3+3+2]<<'\n';
219  return NPar;
220 }

◆ FullMTXfill()

void Trk::FullMTXfill ( VKVertex vk,
double *  ader 
)

Definition at line 19 of file FullMtx.cxx.

20 {
21  int i,j,it;
22 
23  int NTRK = vk->TrackList.size();
24  int NPar=3*NTRK+3;
25 
26  for (i=0; i<NPar; i++) { for (j=0; j<NPar; j++) { ader_ref(i, j)=0.;} }
27 
28  ader_ref(0, 0) += vk->wa[0];
29  ader_ref(0, 1) += vk->wa[1];
30  ader_ref(1, 1) += vk->wa[2];
31  ader_ref(0, 2) += vk->wa[3];
32  ader_ref(1, 2) += vk->wa[4];
33  ader_ref(2, 2) += vk->wa[5];
34  ader_ref(1, 0) = ader_ref(0, 1);
35  ader_ref(2, 0) = ader_ref(0, 2);
36  ader_ref(2, 1) = ader_ref(1, 2);
37 
38 
39  for (it=0; it<NTRK; ++it) {
40  ader_ref(0, it*3 + 3) += vk->tmpArr[it]->wb[0];
41  ader_ref(1, it*3 + 3) += vk->tmpArr[it]->wb[1];
42  ader_ref(2, it*3 + 3) += vk->tmpArr[it]->wb[2];
43  ader_ref(0, it*3 + 4) += vk->tmpArr[it]->wb[3];
44  ader_ref(1, it*3 + 4) += vk->tmpArr[it]->wb[4];
45  ader_ref(2, it*3 + 4) += vk->tmpArr[it]->wb[5];
46  ader_ref(0, it*3 + 5) += vk->tmpArr[it]->wb[6];
47  ader_ref(1, it*3 + 5) += vk->tmpArr[it]->wb[7];
48  ader_ref(2, it*3 + 5) += vk->tmpArr[it]->wb[8];
49  }
50 
51  for (it=0; it<NTRK; ++it) {
52  ader_ref(it*3 + 3, it*3 + 3) += vk->tmpArr[it]->wc[0];
53  ader_ref(it*3 + 3, it*3 + 4) += vk->tmpArr[it]->wc[1];
54  ader_ref(it*3 + 4, it*3 + 4) += vk->tmpArr[it]->wc[2];
55  ader_ref(it*3 + 3, it*3 + 5) += vk->tmpArr[it]->wc[3];
56  ader_ref(it*3 + 4, it*3 + 5) += vk->tmpArr[it]->wc[4];
57  ader_ref(it*3 + 5, it*3 + 5) += vk->tmpArr[it]->wc[5];
58  ader_ref(it*3 + 4, it*3 + 3) += vk->tmpArr[it]->wc[1];
59  ader_ref(it*3 + 5, it*3 + 3) += vk->tmpArr[it]->wc[3];
60  ader_ref(it*3 + 5, it*3 + 4) += vk->tmpArr[it]->wc[4];
61  }
62 /* symmetrisation */
63  for (i=0; i<NPar-1; i++) {
64  for (j=i+1; j<NPar; ++j) {
65  ader_ref(j, i) = ader_ref(i, j);
66  }
67  }
68 //std::cout<<" FULLMTX NEW="<<ader_ref(0, 0)<<", "<<ader_ref(1, 1)<<", "<<ader_ref(2, 2)<<", "
69 // <<ader_ref(3, 3)<<", "<<ader_ref(4, 4)<<", "<<ader_ref(5, 5)<<", "
70 // <<ader_ref(0, 3)<<", "<<ader_ref(1, 4)<<", "<<ader_ref(3, 5)<<'\n';
71 }

◆ getCascadeNPar()

int Trk::getCascadeNPar ( CascadeEvent cascadeEvent_,
int  Type 
)

Definition at line 133 of file CascadeUtils.cxx.

134 {
135  int NV=cascadeEvent_.cascadeNV;
136  int NTrk=0;
137  int NCnst=0;
138  for( int iv=0; iv<cascadeEvent_.cascadeNV; iv++){
139  VKVertex *vk = cascadeEvent_.cascadeVertexList[iv].get();
140  NTrk += vk->TrackList.size();
141  for(int ic=0; ic<(int)vk->ConstraintList.size();ic++) NCnst += vk->ConstraintList[ic]->NCDim;
142  }
143  if(Type==1) return 3*(NV+NTrk); // Return amount of physics parameters
144  return 3*(NV+NTrk)+NCnst + 3*(cascadeEvent_.cascadeNV-1); //additional 3 momentum constraints
145  //return 3*(NV+NTrk)+NCnst + 1*(cascadeEvent_.cascadeNV-1); //additional 1 momentum constraints
146 }

◆ getCnstParticleMom() [1/2]

std::array< double, 4 > Trk::getCnstParticleMom ( const VKTrack trk,
const VKVertex vk 
)

Definition at line 92 of file cfMomentum.cxx.

93 {
94  std::array<double, 4> p{};
95  double cnstPos[3];
96  cnstPos[0]=vk->refIterV[0]+vk->cnstV[0];
97  cnstPos[1]=vk->refIterV[1]+vk->cnstV[1];
98  cnstPos[2]=vk->refIterV[2]+vk->cnstV[2];
99  double magConst = Trk::vkalMagFld::getMagFld(cnstPos,(vk->vk_fitterControl).get()) * Trk::vkalMagFld::getCnvCst();
100 
101  double cth = 1. / tan( trk->cnstP[0]);
102  double phi = trk->cnstP[1];
103  double pt = magConst/ std::abs( trk->cnstP[2] );
104  double m = trk->getMass();
105  p[0] = pt * cos(phi);
106  p[1] = pt * sin(phi);
107  p[2] = pt * cth;
108  p[3] = sqrt(p[0]*p[0]+p[1]*p[1]+p[2]*p[2] + m*m );
109  return p;
110 }

◆ getCnstParticleMom() [2/2]

std::array< double, 4 > Trk::getCnstParticleMom ( const VKTrack trk,
double  BMAG 
)

Definition at line 111 of file cfMomentum.cxx.

112 {
113  std::array<double, 4> p{};
114  double magConst =BMAG * vkalMagCnvCst;
115 
116  double cth = 1. / tan( trk->cnstP[0]);
117  double phi = trk->cnstP[1];
118  double pt = magConst/ std::abs( trk->cnstP[2] );
119  double m = trk->getMass();
120  p[0] = pt * cos(phi);
121  p[1] = pt * sin(phi);
122  p[2] = pt * cth;
123  p[3] = sqrt(p[0]*p[0]+p[1]*p[1]+p[2]*p[2] + m*m );
124  return p;
125 }

◆ getCnstValues2()

double Trk::getCnstValues2 ( VKVertex vk)
noexcept

Definition at line 244 of file VtCFitC.cxx.

245 {
246  if (vk->ConstraintList.empty()) return 0.;
247  double sumSQ=0.;
248  for(int ii=0; ii<(int)vk->ConstraintList.size();ii++){
249  for(int ic=0; ic<(int)vk->ConstraintList[ii]->NCDim; ic++){
250  sumSQ += (vk->ConstraintList[ii]->aa[ic])*(vk->ConstraintList[ii]->aa[ic]);
251  }
252  }
253  return sumSQ;
254 }

◆ getCombinedVTrack()

VKTrack * Trk::getCombinedVTrack ( VKVertex vk)

Definition at line 110 of file CascadeUtils.cxx.

111 {
112  if(!vk->nextCascadeVrt) return nullptr; //nonpointing vertex
113  int NV=vk->nextCascadeVrt->includedVrt.size();
114  if(NV==0) return nullptr; //Error in structure
115 
116  int itv=-1;
117  for(int it=0; it<NV; it++) if(vk->nextCascadeVrt->includedVrt[it] == vk) {itv=it; break;};
118  if(itv<0) return nullptr; // Not found in list
119 
120  int totNT = vk->nextCascadeVrt->TrackList.size();
121  return vk->nextCascadeVrt->TrackList[totNT - NV + itv].get(); // pointer to combined track in next vertex
122 }

◆ getFitParticleMom() [1/2]

std::array< double, 4 > Trk::getFitParticleMom ( const VKTrack trk,
const VKVertex vk 
)

Definition at line 25 of file cfMomentum.cxx.

26 {
27  std::array<double, 4> p{};
28  double fieldPos[3];
29  fieldPos[0]=vk->refIterV[0]+vk->fitV[0];
30  fieldPos[1]=vk->refIterV[1]+vk->fitV[1];
31  fieldPos[2]=vk->refIterV[2]+vk->fitV[2];
32  double magConst =Trk::vkalMagFld::getMagFld(fieldPos,(vk->vk_fitterControl).get()) * Trk::vkalMagFld::getCnvCst();
33 
34  double cth = 1. / tan( trk->fitP[0]);
35  double phi = trk->fitP[1];
36  double pt = magConst/ std::abs( trk->fitP[2] );
37  double m = trk->getMass();
38  p[0] = pt * cos(phi);
39  p[1] = pt * sin(phi);
40  p[2] = pt * cth;
41  p[3] = sqrt(p[0]*p[0]+p[1]*p[1]+p[2]*p[2] + m*m );
42  return p;
43 }

◆ getFitParticleMom() [2/2]

std::array< double, 4 > Trk::getFitParticleMom ( const VKTrack trk,
double  BMAG 
)

Definition at line 44 of file cfMomentum.cxx.

45 {
46  std::array<double, 4> p{};
47  double magConst =BMAG * vkalMagCnvCst;
48 
49  double cth = 1. / tan( trk->fitP[0]);
50  double phi = trk->fitP[1];
51  double pt = magConst/ std::abs( trk->fitP[2] );
52  double m = trk->getMass();
53  p[0] = pt * cos(phi);
54  p[1] = pt * sin(phi);
55  p[2] = pt * cth;
56  p[3] = sqrt(p[0]*p[0]+p[1]*p[1]+p[2]*p[2] + m*m );
57  return p;
58 }

◆ getFittedCascade()

void Trk::getFittedCascade ( CascadeEvent cascadeEvent_,
std::vector< Vect3DF > &  cVertices,
std::vector< std::vector< double > > &  covVertices,
std::vector< std::vector< VectMOM > > &  fittedParticles,
std::vector< std::vector< double > > &  cascadeCovar,
std::vector< double > &  particleChi2,
std::vector< double > &  fullCovar 
)

Definition at line 685 of file CFitCascade.cxx.

692 {
693  cVertices.clear();
694  covVertices.clear();
695  fittedParticles.clear();
696  particleChi2.clear();
697 //
698 // Split common covariance matrix into pieces
699 //
700  std::vector< std::vector<double> > cascadeCovarFit;
701  setFittedMatrices(cascadeEvent_.fullCovMatrix.get(), getCascadeNPar(cascadeEvent_), cascadeEvent_.matrixPnt, cascadeCovarFit, cascadeEvent_);
702 //
703  double vBx,vBy,vBz,pp2,pt,invR;
704  int iv,it,jt, NTRK, pnt;
705 //
706  int PDIM=getCascadeNPar(cascadeEvent_, 1); // number of physics parametrs
707  int ADIM=getCascadeNPar(cascadeEvent_, 0); // number of ALL parametrs
708  double **DPhys = new double*[PDIM]; for(it=0; it<PDIM; it++) DPhys[it] = new double[ADIM];
709  for(it=0;it<PDIM;it++) for(jt=0;jt<ADIM;jt++)DPhys[it][jt]=0.;
710 //
711 //
712  Vect3DF vrtPos;
713  VectMOM prtMom{};
714  VKVertex * vk;
715  std::vector<VectMOM> momCollector;
716  std::vector<double> tmpCov(6);
717 //
718  int pntPhys=0; // Counter for physics cascade parameters
719  for( iv=0; iv<cascadeEvent_.cascadeNV; iv++){
720  vk=cascadeEvent_.cascadeVertexList[iv].get();
721  vrtPos.X=vk->refIterV[0] + vk->fitV[0]; // target vertex for extrapolation
722  vrtPos.Y=vk->refIterV[1] + vk->fitV[1];
723  vrtPos.Z=vk->refIterV[2] + vk->fitV[2];
724  cVertices.push_back(vrtPos);
725  NTRK = vk->TrackList.size(); // Number of tracks at vertex
726  momCollector.clear();
727  int DIM=3*(NTRK+1);
728  double **Deriv = new double*[DIM]; for(it=0; it<DIM; it++) Deriv[it] = new double[DIM];
729  for(it=0;it<DIM;it++) for(jt=0;jt<DIM;jt++)Deriv[it][jt]=0.;
730  Deriv[0][0]=1.;Deriv[1][1]=1.;Deriv[2][2]=1.;
731  DPhys[pntPhys+0][cascadeEvent_.matrixPnt[iv]+0]=1.;
732  DPhys[pntPhys+1][cascadeEvent_.matrixPnt[iv]+1]=1.;
733  DPhys[pntPhys+2][cascadeEvent_.matrixPnt[iv]+2]=1.;
734  Trk::vkalMagFld::getMagFld(vk->refIterV[0]+vk->fitV[0], vk->refIterV[1]+vk->fitV[1], vk->refIterV[2]+vk->fitV[2],
735  vBx,vBy,vBz,(vk->vk_fitterControl).get());
736  for(it=0; it<NTRK; it++){
737  std::array<double, 4> pp = getFitParticleMom( vk->TrackList[it].get(), vBz );
738  prtMom.Px=pp[0]; prtMom.Py=pp[1]; prtMom.Pz=pp[2]; prtMom.E=pp[3];
739  momCollector.push_back( prtMom );
740  if(vk->TrackList[it]->Id >= 0) particleChi2.push_back( vk->TrackList[it]->Chi2 ); //Only real tracks
741  pp2 = pp[0]*pp[0] + pp[1]*pp[1] +pp[2]*pp[2];
742  pt = sqrt(pp[0]*pp[0] + pp[1]*pp[1]);
743  invR = vk->TrackList[it]->fitP[2];
744 
745  pnt = it*3+3;
746  DPhys[pntPhys+pnt+0][cascadeEvent_.matrixPnt[iv]+pnt+0]= Deriv[pnt+0][pnt+0]= 0 ; //dPx/dTheta
747  DPhys[pntPhys+pnt+0][cascadeEvent_.matrixPnt[iv]+pnt+1]= Deriv[pnt+0][pnt+1]= -pp[1]; //dPx/dPhi
748  DPhys[pntPhys+pnt+0][cascadeEvent_.matrixPnt[iv]+pnt+2]= Deriv[pnt+0][pnt+2]= -pp[0]/invR; //dPx/dinvR
749 
750  DPhys[pntPhys+pnt+1][cascadeEvent_.matrixPnt[iv]+pnt+0]= Deriv[pnt+1][pnt+0]= 0 ; //dPy/dTheta
751  DPhys[pntPhys+pnt+1][cascadeEvent_.matrixPnt[iv]+pnt+1]= Deriv[pnt+1][pnt+1]= pp[0]; //dPy/dPhi
752  DPhys[pntPhys+pnt+1][cascadeEvent_.matrixPnt[iv]+pnt+2]= Deriv[pnt+1][pnt+2]= -pp[1]/invR; //dPy/dinvR
753 
754  DPhys[pntPhys+pnt+2][cascadeEvent_.matrixPnt[iv]+pnt+0]= Deriv[pnt+2][pnt+0]= -pp2/pt; //dPz/dTheta
755  DPhys[pntPhys+pnt+2][cascadeEvent_.matrixPnt[iv]+pnt+1]= Deriv[pnt+2][pnt+1]= 0 ; //dPz/dPhi
756  DPhys[pntPhys+pnt+2][cascadeEvent_.matrixPnt[iv]+pnt+2]= Deriv[pnt+2][pnt+2]= -pp[2]/invR; //dPz/dinvR
757  }
758  pntPhys += DIM;
759  fittedParticles.push_back(momCollector);
760  cascadeCovar.push_back( transformCovar(DIM, Deriv, cascadeCovarFit[iv] ) ); //Transform covariance and save it
761  for(int kk=0; kk<6; kk++) tmpCov[kk]=cascadeCovar[iv][kk];
762  covVertices.push_back(tmpCov);
763  for(it=0; it<DIM; it++) delete[]Deriv[it];
764  delete[]Deriv;
765  }
766 //
767 // Get full physics covariance
768  int itn,jtn;
769  fullCovar.resize(PDIM*(PDIM+1)/2);
770  for(it=0; it<PDIM; it++){
771  for(jt=0; jt<=it; jt++){
772  double tmp=0.;
773  for(itn=0; itn<ADIM; itn++) for(jtn=0; jtn<ADIM; jtn++) tmp += DPhys[it][itn]*DPhys[jt][jtn]*cascadeEvent_.fullCovMatrix[itn*ADIM+jtn];
774  fullCovar[it*(it+1)/2+jt]=tmp; // symmetrical index formula works ONLY if it>=jt!!!
775  }
776  }
777  for(it=0; it<PDIM; it++) delete[]DPhys[it];
778  delete[]DPhys;
779 }

◆ getFullVrtCov()

int Trk::getFullVrtCov ( VKVertex vk,
double *  ader,
const double *  dcv,
double  verr[6][6] 
)

Definition at line 25 of file VtCFitE.cxx.

26 {
27 
28  int i,j,ic1,ic2;
29 
30  long int ic, jc, it, jt;
31  double cnt = 1e8;
32 
33  TWRK * t_trk=nullptr;
34  long int NTRK = vk->TrackList.size();
35  long int IERR=0;
36  long int NVar = (NTRK + 1) * 3;
37  if(vk->passNearVertex && vk->ConstraintList.empty()) {
38  /* Fit is with "pass near" constraint and then */
39  /* matrix is already present */
40  } else if ( !vk->ConstraintList.empty() && useWeightScheme ) {
41 /* Full matrix inversion i */
42 //
43  FullMTXfill( vk, ader);
44  if ( vk->passNearVertex ) {
45  double drdpy[2][3];
46  double dpipj[3][3];
47  for (it = 1; it <= NTRK; ++it) {
48  drdpy[0][0] = vk->tmpArr[it-1]->drdp[0][0] * vk->FVC.ywgt[0] + vk->tmpArr[it-1]->drdp[1][0] * vk->FVC.ywgt[1];
49  drdpy[1][0] = vk->tmpArr[it-1]->drdp[0][0] * vk->FVC.ywgt[1] + vk->tmpArr[it-1]->drdp[1][0] * vk->FVC.ywgt[2];
50  drdpy[0][1] = vk->tmpArr[it-1]->drdp[0][1] * vk->FVC.ywgt[0] + vk->tmpArr[it-1]->drdp[1][1] * vk->FVC.ywgt[1];
51  drdpy[1][1] = vk->tmpArr[it-1]->drdp[0][1] * vk->FVC.ywgt[1] + vk->tmpArr[it-1]->drdp[1][1] * vk->FVC.ywgt[2];
52  drdpy[0][2] = vk->tmpArr[it-1]->drdp[0][2] * vk->FVC.ywgt[0] + vk->tmpArr[it-1]->drdp[1][2] * vk->FVC.ywgt[1];
53  drdpy[1][2] = vk->tmpArr[it-1]->drdp[0][2] * vk->FVC.ywgt[1] + vk->tmpArr[it-1]->drdp[1][2] * vk->FVC.ywgt[2];
54  for (jt = 1; jt <= NTRK; ++jt) { /* Matrix */
55  for (int k = 0; k < 3; ++k) {
56  for (int l = 0; l < 3; ++l) {
57  dpipj[k][l] = 0.;
58  for (int j = 0; j < 2; ++j) {
59  dpipj[k][l] += vk->tmpArr[jt-1]->drdp[j][k] * drdpy[j][l];
60  }
61  }
62  }
63  for (int k = 1; k <= 3; ++k) {
64  for (int l = 1; l <= 3; ++l) {
65  ader_ref(it * 3 + k, jt * 3 + l) += dpipj[l-1][k-1];
66  }
67  }
68  }
69  }
70  }
71  Vect3DF th0t,tf0t;
72  for(ic1=0; ic1<(int)vk->ConstraintList.size();ic1++){
73  for(ic2=0; ic2<vk->ConstraintList[ic1]->NCDim; ic2++){
74  th0t = vk->ConstraintList[ic1]->h0t[ic2];
75  ader_ref(1, 1) += cnt * th0t.X * th0t.X;
76  ader_ref(2, 1) += cnt * th0t.Y * th0t.X;
77  ader_ref(3, 1) += cnt * th0t.Z * th0t.X;
78  ader_ref(1, 2) += cnt * th0t.X * th0t.Y;
79  ader_ref(2, 2) += cnt * th0t.Y * th0t.Y;
80  ader_ref(3, 2) += cnt * th0t.Z * th0t.Y;
81  ader_ref(1, 3) += cnt * th0t.X * th0t.Z;
82  ader_ref(2, 3) += cnt * th0t.Y * th0t.Z;
83  ader_ref(3, 3) += cnt * th0t.Z * th0t.Z;
84  for (it = 1; it <= NTRK; ++it) {
85  tf0t = vk->ConstraintList[ic1]->f0t[it-1][ic2];
86  ader_ref(1, it * 3 + 1) += cnt * th0t.X * tf0t.X;
87  ader_ref(2, it * 3 + 1) += cnt * th0t.Y * tf0t.X;
88  ader_ref(3, it * 3 + 1) += cnt * th0t.Z * tf0t.X;
89  ader_ref(1, it * 3 + 2) += cnt * th0t.X * tf0t.Y;
90  ader_ref(2, it * 3 + 2) += cnt * th0t.Y * tf0t.Y;
91  ader_ref(3, it * 3 + 2) += cnt * th0t.Z * tf0t.Y;
92  ader_ref(1, it * 3 + 3) += cnt * th0t.X * tf0t.Z;
93  ader_ref(2, it * 3 + 3) += cnt * th0t.Y * tf0t.Z;
94  ader_ref(3, it * 3 + 3) += cnt * th0t.Z * tf0t.Z;
95  }
96  }
97  }
98 
99 
100  for(ic1=0; ic1<(int)vk->ConstraintList.size();ic1++){
101  for(ic2=0; ic2<vk->ConstraintList[ic1]->NCDim; ic2++){
102  for (it = 1; it <= NTRK; ++it) {
103  for (jt = it; jt <= NTRK; ++jt) {
104  Vect3DF tf0ti = vk->ConstraintList[ic1]->f0t[it-1][ic2];
105  Vect3DF tf0tj = vk->ConstraintList[ic1]->f0t[jt-1][ic2];
106  ader_ref(it*3 + 1, jt*3 + 1) += cnt * tf0ti.X * tf0tj.X;
107  ader_ref(it*3 + 2, jt*3 + 1) += cnt * tf0ti.Y * tf0tj.X;
108  ader_ref(it*3 + 3, jt*3 + 1) += cnt * tf0ti.Z * tf0tj.X;
109  ader_ref(it*3 + 1, jt*3 + 2) += cnt * tf0ti.X * tf0tj.Y;
110  ader_ref(it*3 + 2, jt*3 + 2) += cnt * tf0ti.Y * tf0tj.Y;
111  ader_ref(it*3 + 3, jt*3 + 2) += cnt * tf0ti.Z * tf0tj.Y;
112  ader_ref(it*3 + 1, jt*3 + 3) += cnt * tf0ti.X * tf0tj.Z;
113  ader_ref(it*3 + 2, jt*3 + 3) += cnt * tf0ti.Y * tf0tj.Z;
114  ader_ref(it*3 + 3, jt*3 + 3) += cnt * tf0ti.Z * tf0tj.Z;
115  }
116  }
117  }
118  }
119 /* symmetrisation */
120  for (i=1; i<=NVar-1; ++i) {
121  for (j = i+1; j<=NVar; ++j) {
122  ader_ref(j,i) = ader_ref(i,j);
123  }
124  }
125 //-------------------------------------------------------------------------
126 /* several checks for debugging */
127 //std::cout.precision(12);
128 // for(ic1=0; ic1<(int)vk->ConstraintList.size();ic1++){
129 // for(ic2=0; ic2<vk->ConstraintList[ic1]->NCDim; ic2++){
130 // th0t = vk->ConstraintList[ic1]->h0t[ic2];
131 //std::cout<<"h0t="<<th0t.X<<", "<<th0t.Y<<", "<<th0t.Z<<'\n';
132 // for (it = 1; it <= NTRK; ++it) {
133 // tf0t = vk->ConstraintList[ic1]->f0t[it-1][ic2];
134 //std::cout<<"f0t="<<tf0t.X<<", "<<tf0t.Y<<", "<<tf0t.Z<<'\n';
135 // } } }
136 //if(NTRK==2){
137 // for(i=1; i<=NVar; i++){std::cout<<" newmtx=";
138 // for(j=1; j<=NVar; j++)std::cout<<ader_ref(j,i)<<", "; std::cout<<'\n';}
139 //}
140 //-------------------------------------------------------------------------
141 // Weight matrix ready. Invert. Beware - DSINV destroys initial matrix!
142  noinit_vector<double*> ta (NVar+1);
143  noinit_vector<double> tab ((NVar+1)*(NVar+1));
144  for(i=0; i<NVar+1; i++){ ta[i] = tab.data() + i*(NVar+1);}
145  for (i=1; i<=NVar; ++i) for (j = i; j<=NVar; ++j) ta[i][j] = ta[j][i] = ader_ref(i,j); //Make copy for failure treatment
146  dsinv(NVar, ader, vkalNTrkM*3+3, &IERR);
147  if ( IERR != 0) {
148  noinit_vector<double*> tv (NVar+1);
149  noinit_vector<double> tvb ((NVar+1)*(NVar+1));
150  noinit_vector<double*> tr (NVar+1);
151  noinit_vector<double> trb ((NVar+1)*(NVar+1));
152  noinit_vector<double> tw (NVar+1);
153  for(i=0; i<NVar+1; i++){ tv[i] = tvb.data() + i*(NVar+1); tr[i] = trb.data() + i*(NVar+1);}
154 
155  vkSVDCmp( ta.data(), NVar, NVar, tw.data(), tv.data());
156 
157  double tmax=0;
158  for(i=1; i<NVar+1; i++) if(fabs(tw[i])>tmax)tmax=fabs(tw[i]);
159  for(i=1; i<NVar+1; i++) if(fabs(tw[i])/tmax < 1.e-18) tw[i]=0.;
160  for(i=1; i<=NVar; i++){ for(j=1; j<=NVar; j++){
161  tr[i][j]=0.; for(int k=1; k<=NVar; k++) if(tw[k]!=0.) tr[i][j] += ta[i][k]*tv[j][k]/tw[k];
162  }}
163 
164  for (i=1; i<=NVar; ++i) for (j=1; j<=NVar; ++j) ader_ref(i,j)=tr[i][j];
165 
166  IERR=0; //return IERR;
167  }
168  //------ Check matrix inversion quality
169  double maxDiff=0.;
170  for( i=1; i<=NVar; i++){ for(j=i; j<=NVar; j++){
171  double mcheck=0.; for(int k=1; k<=NVar; k++) mcheck+=ta[i][k]*ader_ref(k,j);
172  if(i!=j) maxDiff = (maxDiff > std::abs(mcheck)) ? maxDiff : std::abs(mcheck);
173  if(i==j) maxDiff = (maxDiff > std::abs(1.-mcheck)) ? maxDiff : std::abs(1.-mcheck);
174  } }
175  //---------------------------------------------------------------------------------------
176  if(maxDiff>0.1)return -1;
177 /* ---------------------------------------- */
178  } else {
179 /* ---------------------------------------- */
180 /* Simple and fast without constraints */
181  for (i=1; i<=NVar; i++) {
182  for (j=1; j<=NVar; j++) {
183  ader_ref(i,j)=0.;
184  }
185  }
186  double vcov[6]={vk->fitVcov[0],vk->fitVcov[1],vk->fitVcov[2],vk->fitVcov[3],vk->fitVcov[4],vk->fitVcov[5]};
187  ader_ref(1,1) = vcov[0];
188  ader_ref(1,2) = vcov[1];
189  ader_ref(2,2) = vcov[2];
190  ader_ref(1,3) = vcov[3];
191  ader_ref(2,3) = vcov[4];
192  ader_ref(3,3) = vcov[5];
193  ader_ref(2,1) = ader_ref(1,2);
194  ader_ref(3,1) = ader_ref(1,3);
195  ader_ref(3,2) = ader_ref(2,3);
196 
197  for (it=1; it<=NTRK; it++) {
198  t_trk=vk->tmpArr[it-1].get();
199  ader_ref(1, it*3 + 1) = -vcov[0] * t_trk->wbci[0]
200  - vcov[1] * t_trk->wbci[1]
201  - vcov[3] * t_trk->wbci[2];
202  ader_ref(2, it*3 + 1) = -vcov[1] * t_trk->wbci[0]
203  - vcov[2] * t_trk->wbci[1]
204  - vcov[4] * t_trk->wbci[2];
205  ader_ref(3, it*3 + 1) = -vcov[3] * t_trk->wbci[0]
206  - vcov[4] * t_trk->wbci[1]
207  - vcov[5] * t_trk->wbci[2];
208  ader_ref(1, it*3 + 2) = -vcov[0] * t_trk->wbci[3]
209  - vcov[1] * t_trk->wbci[4]
210  - vcov[3] * t_trk->wbci[5];
211  ader_ref(2, it*3 + 2) = -vcov[1] * t_trk->wbci[3]
212  - vcov[2] * t_trk->wbci[4]
213  - vcov[4] * t_trk->wbci[5];
214  ader_ref(3, it*3 + 2) = -vcov[3] * t_trk->wbci[3]
215  - vcov[4] * t_trk->wbci[4]
216  - vcov[5] * t_trk->wbci[5];
217  ader_ref(1, it*3 + 3) = -vcov[0] * t_trk->wbci[6]
218  - vcov[1] * t_trk->wbci[7]
219  - vcov[3] * t_trk->wbci[8];
220  ader_ref(2, it*3 + 3) = -vcov[1] * t_trk->wbci[6]
221  - vcov[2] * t_trk->wbci[7]
222  - vcov[4] * t_trk->wbci[8];
223  ader_ref(3, it*3 + 3) = -vcov[3] * t_trk->wbci[6]
224  - vcov[4] * t_trk->wbci[7]
225  - vcov[5] * t_trk->wbci[8];
226  ader_ref(it*3 + 1, 1) = ader_ref(1, it*3 + 1);
227  ader_ref(it*3 + 1, 2) = ader_ref(2, it*3 + 1);
228  ader_ref(it*3 + 1, 3) = ader_ref(3, it*3 + 1);
229  ader_ref(it*3 + 2, 1) = ader_ref(1, it*3 + 2);
230  ader_ref(it*3 + 2, 2) = ader_ref(2, it*3 + 2);
231  ader_ref(it*3 + 2, 3) = ader_ref(3, it*3 + 2);
232  ader_ref(it*3 + 3, 1) = ader_ref(1, it*3 + 3);
233  ader_ref(it*3 + 3, 2) = ader_ref(2, it*3 + 3);
234  ader_ref(it*3 + 3, 3) = ader_ref(3, it*3 + 3);
235  }
236 
237 
238  for (it = 1; it<=NTRK; ++it) {
239  t_trk=vk->tmpArr[it-1].get();
240  for (jt=1; jt<=NTRK; ++jt) {
241  int j3 = jt*3;
242  int i3 = it*3;
243  ader_ref( i3+1, j3+1) = -t_trk->wbci[0]*ader_ref(1, j3+1) - t_trk->wbci[1]*ader_ref(2, j3+1) - t_trk->wbci[2]*ader_ref(3, j3+1);
244  ader_ref( i3+2, j3+1) = -t_trk->wbci[3]*ader_ref(1, j3+1) - t_trk->wbci[4]*ader_ref(2, j3+1) - t_trk->wbci[5]*ader_ref(3, j3+1);
245  ader_ref( i3+3, j3+1) = -t_trk->wbci[6]*ader_ref(1, j3+1) - t_trk->wbci[7]*ader_ref(2, j3+1) - t_trk->wbci[8]*ader_ref(3, j3+1);
246  ader_ref( i3+1, j3+2) = -t_trk->wbci[0]*ader_ref(1, j3+2) - t_trk->wbci[1]*ader_ref(2, j3+2) - t_trk->wbci[2]*ader_ref(3, j3+2);
247  ader_ref( i3+2, j3+2) = -t_trk->wbci[3]*ader_ref(1, j3+2) - t_trk->wbci[4]*ader_ref(2, j3+2) - t_trk->wbci[5]*ader_ref(3, j3+2);
248  ader_ref( i3+3, j3+2) = -t_trk->wbci[6]*ader_ref(1, j3+2) - t_trk->wbci[7]*ader_ref(2, j3+2) - t_trk->wbci[8]*ader_ref(3, j3+2);
249  ader_ref( i3+1, j3+3) = -t_trk->wbci[0]*ader_ref(1, j3+3) - t_trk->wbci[1]*ader_ref(2, j3+3) - t_trk->wbci[2]*ader_ref(3, j3+3);
250  ader_ref( i3+2, j3+3) = -t_trk->wbci[3]*ader_ref(1, j3+3) - t_trk->wbci[4]*ader_ref(2, j3+3) - t_trk->wbci[5]*ader_ref(3, j3+3);
251  ader_ref( i3+3, j3+3) = -t_trk->wbci[6]*ader_ref(1, j3+3) - t_trk->wbci[7]*ader_ref(2, j3+3) - t_trk->wbci[8]*ader_ref(3, j3+3);
252  if (it == jt) {
253  ader_ref( i3+1, i3+1) += t_trk->wci[0];
254  ader_ref( i3+1, i3+2) += t_trk->wci[1];
255  ader_ref( i3+2, i3+1) += t_trk->wci[1];
256  ader_ref( i3+2, i3+2) += t_trk->wci[2];
257  ader_ref( i3+1, i3+3) += t_trk->wci[3];
258  ader_ref( i3+3, i3+1) += t_trk->wci[3];
259  ader_ref( i3+2, i3+3) += t_trk->wci[4];
260  ader_ref( i3+3, i3+2) += t_trk->wci[4];
261  ader_ref( i3+3, i3+3) += t_trk->wci[5];
262  }
263  }
264  }
265 //for(int ii=1; ii<=9; ii++)std::cout<<ader_ref(ii,ii)<<", "; std::cout<<__func__<<" fast full m NEW"<<'\n';
266  if( !vk->ConstraintList.empty() && !useWeightScheme ){
267 //---------------------------------------------------------------------
268 // Covariance matrix with constraints a la Avery.
269 // ader_ref() should contain nonconstraint covariance matrix
270 //---------------------------------------------------------------------
271  long int totNC=0; //total number of constraints
272  std::vector<std::vector< Vect3DF> > tf0t; // derivative collectors
273  std::vector< Vect3DF > th0t; // derivative collectors
274  std::vector< double > taa; // derivative collectors
275  std::vector< Vect3DF > tmpVec;
276  for(int ii=0; ii<(int)vk->ConstraintList.size();ii++){
277  totNC += vk->ConstraintList[ii]->NCDim;
278  for(ic=0; ic<(int)vk->ConstraintList[ii]->NCDim; ic++){
279  taa.push_back( vk->ConstraintList[ii]->aa[ic] );
280  th0t.push_back( vk->ConstraintList[ii]->h0t[ic] );
281  tmpVec.clear();
282  for(it=0; it<(int)vk->ConstraintList[ii]->f0t.size(); it++){
283  tmpVec.push_back( vk->ConstraintList[ii]->f0t[it][ic] );
284  }
285  tf0t.push_back( tmpVec );
286  }
287  }
288 // R,RC[ic][i]
289  double **R =new double*[totNC]; for(ic=0; ic<totNC; ic++) R[ic]=new double[NVar];
290  double **RC=new double*[totNC]; for(ic=0; ic<totNC; ic++)RC[ic]=new double[NVar];
291  double *RCRt=new double[totNC*totNC];
292  for(ic=0; ic<totNC; ic++){
293  R[ic][0]=th0t[ic].X;
294  R[ic][1]=th0t[ic].Y;
295  R[ic][2]=th0t[ic].Z;
296  for(it=1; it<=NTRK; it++){
297  R[ic][it*3+0]=tf0t[ic][it-1].X;
298  R[ic][it*3+1]=tf0t[ic][it-1].Y;
299  R[ic][it*3+2]=tf0t[ic][it-1].Z;
300  }
301  }
302 // R*Cov matrix
303  for(ic=0; ic<totNC; ic++){
304  for(j=0; j<NVar; j++){ RC[ic][j]=0;
305  for(i=0; i<NVar; i++) RC[ic][j] += R[ic][i]*ader_ref(i+1,j+1);
306  }
307  }
308 // R*Cov*Rt matrix - Lagrange multiplyers errors
309  for(ic=0; ic<totNC; ic++){
310  for(jc=0; jc<totNC; jc++){ RCRt[ic*totNC + jc] =0.;
311  for(i=0; i<NVar; i++) RCRt[ic*totNC + jc] += RC[ic][i]*R[jc][i];
312  }
313  }
314  dsinv(totNC, RCRt, totNC, &IERR);
315  if ( IERR != 0) return IERR;
316 // Correction matrix
317  for(i=0; i<NVar; i++){
318  for(j=0; j<NVar; j++){ double COR=0.;
319  for(ic=0; ic<totNC; ic++){
320  for(jc=0; jc<totNC; jc++){
321  COR += RC[ic][i]*RC[jc][j]*RCRt[ic*totNC +jc];
322  }
323  }
324  ader_ref(i+1, j+1) -= COR;
325  }
326  }
327 // Delete temporary matrices
328  for(ic=0; ic<totNC; ic++) delete[] R[ic];
329  delete[] R;
330  for(ic=0; ic<totNC; ic++) delete[] RC[ic];
331  delete[] RC;
332  delete[] RCRt;
333 //for(int ii=1; ii<=9; ii++)std::cout<<ader_ref(ii,ii)<<", "; std::cout<<__func__<<" avery full m NEW"<<'\n';
334  } //end of Avery matrix
335 
336 
337 
338  } // End of global IF() for matrix type selection
339 
340 //if(NTRK==2){
341 // for(i=1; i<=NVar; i++){std::cout<<__func__" new covfull=";
342 // for(j=1; j<=NVar; j++)std::cout<<ader_ref(j,i)<<", "; std::cout<<'\n';}
343 //}
344 
345 /* --Conversion to (X,Y,Z,Px,Py,Pz) form */
346  for (i = 1; i <= 6; ++i) {
347  for (j = 1; j <= 6; ++j) {
348  verr[i-1][j-1] = 0.;
349  for (ic=1; ic<=NVar; ++ic) {
350  if(dcv_ref(i, ic)==0.) continue;
351  for (jc=1; jc<=NVar; ++jc) {
352  if(dcv_ref(j, jc)==0.) continue;
353  verr[i-1][j-1] += dcv_ref(i, ic) * ader_ref(ic, jc) * dcv_ref(j, jc);
354  }
355  }
356  }
357  }
358 //for(int ii=1; ii<=6; ii++)std::cout<<verr[ii-1][ii-1]<<", "; std::cout<<" final m NEW"<<'\n';
359  vk->existFullCov = 1;
360  return 0;
361 }

◆ getIniParticleMom() [1/2]

std::array< double, 4 > Trk::getIniParticleMom ( const VKTrack trk,
const VKVertex vk 
)

Definition at line 60 of file cfMomentum.cxx.

61 {
62  std::array<double, 4> p{};
63  double magConst = Trk::vkalMagFld::getMagFld(vk->refIterV,(vk->vk_fitterControl).get()) * Trk::vkalMagFld::getCnvCst();
64 
65  double cth = 1. / tan( trk->iniP[0]);
66  double phi = trk->iniP[1];
67  double pt = magConst/ std::abs( trk->iniP[2] );
68  double m = trk->getMass();
69  p[0] = pt * cos(phi);
70  p[1] = pt * sin(phi);
71  p[2] = pt * cth;
72  p[3] = sqrt(p[0]*p[0]+p[1]*p[1]+p[2]*p[2] + m*m );
73  return p;
74 }

◆ getIniParticleMom() [2/2]

std::array< double, 4 > Trk::getIniParticleMom ( const VKTrack trk,
double  BMAG 
)

Definition at line 75 of file cfMomentum.cxx.

76 {
77  std::array<double, 4> p{};
78  double magConst =BMAG * vkalMagCnvCst;
79 
80  double cth = 1. / tan( trk->iniP[0]);
81  double phi = trk->iniP[1];
82  double pt = magConst/ std::abs( trk->iniP[2] );
83  double m = trk->getMass();
84  p[0] = pt * cos(phi);
85  p[1] = pt * sin(phi);
86  p[2] = pt * cth;
87  p[3] = sqrt(p[0]*p[0]+p[1]*p[1]+p[2]*p[2] + m*m );
88  return p;
89 }

◆ getNewCov()

void Trk::getNewCov ( const double *  OldCov,
const double *  Der,
double *  Cov,
long int  DIM 
)
noexcept

Definition at line 261 of file CascadeUtils.cxx.

262 {
263  int i,j,it,jt;
264  for( i=0; i<DIM; i++){
265  for( j=0; j<DIM; j++){
266  Cov[i*DIM+j]=0.;
267  for( it=0; it<DIM; it++){
268  for( jt=0; jt<DIM; jt++){
269  Cov[i*DIM+j] += Der[i*DIM+it]*OldCov[it*DIM+jt]*Der[j*DIM+jt];
270  }
271  }
272  }
273  }
274 }

◆ getVertexCharge()

long int Trk::getVertexCharge ( VKVertex vk)

Definition at line 71 of file CFitCascade.cxx.

71  {
72  long int tCharge=0;
73  for(int it=0; it<(int)vk->TrackList.size(); it++) tCharge += vk->TrackList[it]->Charge;
74  return tCharge;
75 }

◆ makeCascade()

int Trk::makeCascade ( VKalVrtControl FitCONTROL,
long int  NTRK,
const long int *  ich,
double *  wm,
double *  inp_Trk5,
double *  inp_CovTrk5,
const std::vector< std::vector< int > > &  vertexDefinition,
const std::vector< std::vector< int > > &  cascadeDefinition,
double  definedCnstAccuracy 
)

Definition at line 116 of file CascadeDefinition.cxx.

120  {
121  long int tk;
122  int iv, it;
123  if (vertexDefinition.size() != cascadeDefinition.size()) {
124  std::cout << " WRONG INPUT!!!" << '\n';
125  return -1;
126  }
127 
128  long int IERR;
129  int NV = vertexDefinition.size();
130  double xyz[3] = {0.};
131  double tmp[15] = {0.};
132  double tmpWgt[15], out[3];
133  double vBx, vBy, vBz;
134  VKTrack *trk;
135  int vEstimDone = 0;
136 
137  for (iv = 0; iv < NV; iv++) {
138  auto VRT = std::make_unique<VKVertex>(FitCONTROL);
139  VRT->setRefV(xyz); // ref point
140  VRT->setRefIterV(xyz); // iteration ref. point
141  VRT->setIniV(xyz);
142  VRT->setCnstV(xyz); // initial guess. 0 of course.
143  auto arr = std::make_unique<double[]>(vertexDefinition[iv].size() * 5);
144  int NTv = vertexDefinition[iv].size();
145  for (it = 0; it < NTv; it++) {
146  tk = vertexDefinition[iv][it];
147  if (tk >= NTRK) {
148  return -1;
149  }
150  VRT->TrackList.emplace_back(new VKTrack(
151  tk, &inp_Trk5[tk * 5], &inp_CovTrk5[tk * 15], VRT.get(), wm[tk]));
152  VRT->tmpArr.emplace_back(new TWRK());
153  trk = VRT->TrackList[it].get();
154  trk->Charge = ich[tk];
155  trk->iniP[0] = trk->cnstP[0] = trk->fitP[0] =
156  inp_Trk5[tk * 5 + 2]; // initial guess
157  trk->iniP[1] = trk->cnstP[1] = trk->fitP[1] = inp_Trk5[tk * 5 + 3];
158  trk->iniP[2] = trk->cnstP[2] = trk->fitP[2] = inp_Trk5[tk * 5 + 4];
159  IERR = cfInv5(&inp_CovTrk5[tk * 15], tmpWgt);
160  if (IERR)
161  IERR = cfdinv(&inp_CovTrk5[tk * 15], tmpWgt, 5);
162  if (IERR) {
163  return -1;
164  }
165  trk->setCurrent(&inp_Trk5[tk * 5], tmpWgt);
166  arr[it * 5] = inp_Trk5[tk * 5];
167  arr[it * 5 + 1] = inp_Trk5[tk * 5 + 1];
168  arr[it * 5 + 2] = inp_Trk5[tk * 5 + 2];
169  arr[it * 5 + 3] = inp_Trk5[tk * 5 + 3];
170  arr[it * 5 + 4] = inp_Trk5[tk * 5 + 4];
171  }
172  if (NTv > 1) { // First estimation of vertex position if vertex has more
173  // than 2 tracks
174  vEstimDone = 1;
175  Trk::vkalMagFld::getMagFld(VRT->refIterV[0], VRT->refIterV[1],
176  VRT->refIterV[2], vBx, vBy, vBz,
177  (VRT->vk_fitterControl).get());
178  double aVrt[3] = {0., 0., 0.};
179  for (int i = 0; i < NTv - 1; i++)
180  for (int j = i + 1; j < NTv; j++) {
181  vkvFastV(&arr[i * 5], &arr[j * 5], xyz, vBz, out);
182  aVrt[0] += out[0];
183  aVrt[1] += out[1];
184  aVrt[2] += out[2];
185  }
186  aVrt[0] /= (NTv * (NTv - 1) / 2);
187  aVrt[1] /= (NTv * (NTv - 1) / 2);
188  aVrt[2] /= (NTv * (NTv - 1) / 2);
189  VRT->setRefIterV(aVrt); // iteration ref. point
190  }
191  if (iv == 0) { // start cascade creation
192  startCascade(std::move(VRT));
193  continue;
194  }
195  int includeNV = cascadeDefinition[iv].size();
196  if (!includeNV) { // no predecessors
197  addCascadeEntry(std::move(VRT));
198  } else {
199  auto *vrttemp = addCascadeEntry(std::move(VRT), cascadeDefinition[iv]);
200  for (it = 0; it < includeNV;
201  it++) { // tracks created out of predecessing vertices
202  vrttemp->TrackList.emplace_back(
203  new VKTrack(-999, tmp, tmp, vrttemp, 0.));
204  vrttemp->tmpArr.emplace_back(new TWRK());
205  }
206  }
207  }
208  //
209  // ---------------- If some vertex positions are different from (0,0,0) -
210  // move tracks there
211  if (vEstimDone) {
212  IERR = translateToFittedPos(*(FitCONTROL.getCascadeEvent()), 1.);
213  if (IERR)
214  return IERR;
215  for (iv = 0; iv < FitCONTROL.getCascadeEvent()->cascadeNV; iv++) {
216  auto *VRT = FitCONTROL.getCascadeEvent()->cascadeVertexList[iv].get();
217  int NTv = VRT->TrackList.size(); // Number of tracks at vertex
218  for (it = 0; it < NTv; it++) {
219  trk = VRT->TrackList[it].get();
220  if (trk->Id < 0)
221  continue; // pseudo-track from cascade vertex
222  trk->cnstP[0] = trk->iniP[0] = trk->fitP[0] = trk->Perig[2];
223  trk->cnstP[1] = trk->iniP[1] = trk->fitP[1] = trk->Perig[3];
224  trk->cnstP[2] = trk->iniP[2] = trk->fitP[2] = trk->Perig[4];
225  }
226  }
227  }
228  // ---------------- Init engine
229 
230  IERR = initCascadeEngine(*FitCONTROL.getCascadeEvent());
231  FitCONTROL.getCascadeEvent()->setAccuracyConstraint(definedCnstAccuracy);
232 
233  return IERR;
234 }

◆ operator<() [1/3]

bool Trk::operator< ( const LayerIndex one,
const LayerIndex two 
)

Overload of operator< | <= | > | >= for the usage in a map.

Definition at line 11 of file LayerIndex.cxx.

13 {
14  return (one.value() < two.value());
15 }

◆ operator<() [2/3]

bool Trk::operator< ( const TrackTruthKey a,
const TrackTruthKey b 
)
inline

Definition at line 45 of file TrackTruthKey.h.

45  {
46  return a.index() < b.index();
47  }

◆ operator<() [3/3]

bool Trk::operator< ( const TrackTruthKey_p0 a,
const TrackTruthKey_p0 b 
)
inline

Definition at line 29 of file TrackTruthKey_p0.h.

29  {
30  return a.m_index < b.m_index;
31  }

◆ operator<<() [1/115]

MsgStream & Trk::operator<< ( MsgStream &  log,
const MultiComponentStateOnSurface  
)

Overload of << operator for MsgStream for debug output.

Definition at line 85 of file MultiComponentStateOnSurface.cxx.

87 {
88  return log;
89 }

◆ operator<<() [2/115]

MsgStream & Trk::operator<< ( MsgStream &  sl,
const NoiseOnSurface se 
)

Definition at line 24 of file NoiseOnSurface.cxx.

26 {
27  return se.dump(sl);
28 }

◆ operator<<() [3/115]

MsgStream & Trk::operator<< ( MsgStream &  sl,
const PatternTrackParameters se 
)

Definition at line 94 of file PatternTrackParameters.cxx.

96 {
97  return se.dump(sl);
98 }

◆ operator<<() [4/115]

MsgStream& Trk::operator<< ( MsgStream &  log,
AlignResidualType  type 
)

◆ operator<<() [5/115]

MsgStream & Trk::operator<< ( MsgStream &  log,
ExtrapolationType  type 
)

Definition at line 16 of file ExtrapolationType.cxx.

16  :
17  return log << " FittedTrajectory";
18  case DeltaD0:
19  return log << " DeltaD0 ";
20  case DeltaZ0:
21  return log << " DeltaZ0 ";
22  case DeltaPhi0:
23  return log << " DeltaPhi0 ";
24  case DeltaTheta0:
25  return log << " DeltaTheta0 ";
26  case DeltaQOverP0:
27  return log << " DeltaQOverP0 ";
28  case DeltaQOverP1:
29  return log << " DeltaQOverP1 ";
30  case ExtrapolationTypes:
31  return log << static_cast<int>(ExtrapolationTypes);
32  default:
33  return log << " unknown type ";
34  }
35 }
36 } // namespace Trk

◆ operator<<() [6/115]

MsgStream & Trk::operator<< ( MsgStream &  log,
MeasurementType  type 
)

Definition at line 16 of file MeasurementType.cxx.

16  :
17  return log << " perigeeParameters";
18  case transverseVertex:
19  return log << " transverseVertex ";
20  case vertex:
21  return log << " vertex ";
22  case pixelCluster:
23  return log << " pixelCluster ";
24  case stripCluster:
25  return log << " stripCluster ";
26  case trapezoidCluster:
27  return log << " trapezoidCluster ";
28  case driftCircle:
29  return log << " driftCircle ";
30  case pseudoMeasurement:
31  return log << " pseudoMeas ";
32  case barrelScatterer:
33  return log << " barrelScatterer ";
34  case endcapScatterer:
35  return log << " endcapScatterer ";
37  return log << " calorimeterScat ";
38  case barrelInert:
39  return log << " barrelInert ";
40  case endcapInert:
41  return log << " endcapInert ";
42  case energyDeposit:
43  return log << " energyDeposit ";
44  case alignment:
45  return log << " alignment ";
46  case discontinuity:
47  return log << " discontinuity ";
48  case bremPoint:
49  return log << " bremPoint ";
50  case hole:
51  return log << " hole ";
52  case materialDelimiter:
53  return log << " materialDelimiter";
54 
55  default:
56  return log << " unknown type ";
57  }
58 }
59 } // namespace Trk

◆ operator<<() [7/115]

MsgStream & Trk::operator<< ( MsgStream &  log,
ParameterType  type 
)

Definition at line 16 of file ParameterType.cxx.

16  :
17  return log << " D0 ";
18  case Z0:
19  return log << " Z0 ";
20  case Phi0:
21  return log << " Phi0 ";
22  case Theta0:
23  return log << " Theta0 ";
24  case QOverP0:
25  return log << " QOverP0 ";
26  case QOverP1:
27  return log << " QOverP1 ";
28  case ParameterTypes:
29  return log << static_cast<int>(ParameterTypes);
30  default:
31  return log << " unknown type ";
32  }
33 }
34 } // namespace Trk

◆ operator<<() [8/115]

MsgStream & Trk::operator<< ( MsgStream &  log,
Trk::AlignMesType  type 
)

Definition at line 11 of file AlignResidualType.cxx.

12  {
13  switch (type)
14  {
15  case Measurement:
16  return log << " measurement ";
17  case Scatterer:
18  return log << " scatterer ";
19  case EnergyDeposit:
20  return log << " energy deposit ";
21  default:
22  return log << " unknown mes type ";
23  }
24  }

◆ operator<<() [9/115]

MsgStream& Trk::operator<< ( MsgStream &  log,
Trk::AlignResidualType  type 
)

Definition at line 26 of file AlignResidualType.cxx.

27  {
28  switch (type)
29  {
30  case HitOnly:
31  return log << " HitOnly ";
32  case Unbiased:
33  return log << " Unbiased ";
34 // case DCA:
35 // return log << " DCA ";
36  default:
37  return log << " unknown ";
38  }
39  }

◆ operator<<() [10/115]

MsgStream & Trk::operator<< ( MsgStream &  out,
const MuonTrackSummary trackSum 
)

output.

This dumps the values of each of the possible summary enums

Definition at line 112 of file MuonTrackSummary.cxx.

114 {
115  out << "MuonTrackSummary: Hits: eta " << trackSum.netaHits() << " phi "
116  << trackSum.nphiHits() << " holes " << trackSum.nholes() << " outliers "
117  << trackSum.noutliers() << " close hits " << trackSum.ncloseHits()
118  << endmsg;
119  if (out.level() <= MSG::VERBOSE) {
120  std::vector<MuonTrackSummary::ChamberHitSummary>::const_iterator it =
121  trackSum.chamberHitSummary().begin();
122  std::vector<MuonTrackSummary::ChamberHitSummary>::const_iterator it_end =
123  trackSum.chamberHitSummary().end();
124  for (; it != it_end; ++it) {
125  const MuonTrackSummary::ChamberHitSummary& chSum = *it;
126  const MuonTrackSummary::ChamberHitSummary::Projection& etaP =
127  chSum.etaProjection();
128  const MuonTrackSummary::ChamberHitSummary::Projection& phiP =
129  chSum.phiProjection();
130  out << " Chamber " << chSum.chamberId() << " isMdt " << chSum.isMdt()
131  << std::endl
132  << " First projection: Hits " << etaP.nhits << " holes "
133  << etaP.nholes << " outlier " << etaP.noutliers << " deltas "
134  << etaP.ndeltas << " close Hits " << etaP.ncloseHits << std::endl
135  << " Second projection: Hits " << phiP.nhits << " holes "
136  << phiP.nholes << " outlier " << phiP.noutliers << " deltas "
137  << phiP.ndeltas << " close Hits " << phiP.ncloseHits << std::endl;
138  }
139  }
140  return out;
141 }

◆ operator<<() [11/115]

MsgStream & Trk::operator<< ( MsgStream &  out,
const TrackSummary trackSum 
)

output.

This dumps the values of each of the possible summary enums

Definition at line 208 of file TrackSummary.cxx.

210 {
211  return dumpTrackSummary(out, trackSum);
212 }

◆ operator<<() [12/115]

MsgStream & Trk::operator<< ( MsgStream &  sl,
AlignModuleTool alignModTool 
)

Definition at line 323 of file AlignModuleTool.cxx.

324  {
325  const AlignModuleList* modules=alignModTool.alignModules1D();
326  for (int imod=0;imod<(int)modules->size(); imod++) {
327  sl << "AML: "<<*((*modules)[imod]);
328  }
329 
330  DataVector<AlignPar>* alignParList=alignModTool.alignParList1D();
331  for (int iap=0;iap<(int)alignParList->size();iap++) {
332  sl << *((*alignParList)[iap]);
333  }
334  return sl;
335  }

◆ operator<<() [13/115]

MsgStream & Trk::operator<< ( MsgStream &  sl,
const AlignmentEffectsOnTrack tsos 
)

Overload of << operator for MsgStream for debug output.

Overload of << operator for both, MsgStream and std::ostream for debug output.

Definition at line 26 of file AlignmentEffectsOnTrack.cxx.

28 {
29  if (sl.level() < MSG::INFO) {
30  sl << "AlignmentEffectsOnTrack:" << endmsg;
31  sl << "deltaTranslation = " << aeot.deltaTranslation() << endmsg;
32  sl << "sigmaDeltaTranslation = " << aeot.deltaTranslation() << endmsg;
33  sl << "deltaAngle = " << aeot.deltaAngle() << endmsg;
34  sl << "sigmaDeltaAngle = " << aeot.sigmaDeltaAngle() << endmsg;
35  sl << "surface = " << aeot.associatedSurface() << endmsg;
36  }
37  return sl;
38 }

◆ operator<<() [14/115]

MsgStream & Trk::operator<< ( MsgStream &  sl,
const AlignModule alignModule 
)

overload of << operator for MsgStream for debug output

Definition at line 204 of file AlignModule.cxx.

205  {
206  sl << "AlignModule \'"<<alignModule.name()<<"\' ID: "<<alignModule.identify()
207  <<" IDHash: "<<alignModule.identifyHash()<< endmsg;
208  return sl;
209  }

◆ operator<<() [15/115]

MsgStream & Trk::operator<< ( MsgStream &  sl,
const AlignPar ap 
)

overload of << operator for MsgStream for debug output

Definition at line 10 of file AlignPar.cxx.

11  {
12  sl << "alignPar type : " << std::setw(10) << ap.dumpType()
13  << "(" << ap.paramType() << " ) : " << &ap << endmsg;
14  sl << " init par: " << std::setw(6) << std::showpos << std::fixed
15  << ap.initPar()<<" +/- "<<std::noshowpos << ap.initErr()
16  << resetiosflags(std::ios::floatfield) << endmsg;
17  sl << " par: "<< std::showpos << ap.par() << " +/- "
18  << std::noshowpos << ap.err() << endmsg;
19  sl << " final par: "<< std::showpos << ap.finalPar() << " +/- "
20  << std::noshowpos << ap.finalErr() << endmsg;
21  sl << " sigma: "<< ap.sigma() << endmsg;
22  sl << " soft-cut: "<< ap.softCut() << endmsg;
23  sl << " first drv: "<< std::showpos << ap.firstDeriv()
24  << std::noshowpos << endmsg;
25  sl << " secnd drv: "<< std::showpos << ap.secndDeriv()
26  << std::noshowpos << endmsg;
27  return sl;
28  }

◆ operator<<() [16/115]

MsgStream & Trk::operator<< ( MsgStream &  sl,
const AlignTrack::AlignTrackType  type 
)

Definition at line 372 of file AlignTrack.cxx.

373  {
374  switch(type) {
375  case AlignTrack::Unknown:
376  return sl<<"Unknown ";
377  case AlignTrack::Original:
378  return sl<<"Original ";
379  case AlignTrack::NormalRefitted:
380  return sl<<"NormalRefitted ";
381  case AlignTrack::BeamspotConstrained:
382  return sl<<"BeamspotConstrained ";
383  case AlignTrack::VertexConstrained:
384  return sl<<"VertexConstrained ";
385  default:
386  return sl<<"UNDEFINED ";
387  }
388  }

◆ operator<<() [17/115]

MsgStream & Trk::operator<< ( MsgStream &  sl,
const AlignTSOS atsos 
)

Overload of << operator for MsgStream for debug output.

Definition at line 164 of file AlignTSOS.cxx.

165  {
166  //sl <<"\t"<<atsos.dumpType()
167  // << std::setw(11) << std::showpos<< std::scientific
168  // <<"\tres[0]="<<atsos.residual(0)<<", err[0]="<<atsos.residualErrorSq(0)
169  // <<", dchi2="<<std::noshowpos
170  // <<atsos.residual(0)*atsos.residual(0)/atsos.residualErrorSq(0)<<endmsg;
171  sl <<"\t"<<atsos.dumpType()<<" ("<<atsos.dumpMeasType()<<", direction "<<atsos.dumpMeasDir()<<")"<<endmsg;
172  sl << " --> ";
173 
174  int ires(0);
175  std::vector<Residual>::const_iterator itRes = atsos.firstResidual();
176  std::vector<Residual>::const_iterator itRes_end = atsos.lastResidual();
177  for( ; itRes != itRes_end ; ++itRes, ++ires) {
178  double resnorm = itRes->residualNorm();
179  if(ires){
180  std::ios_base::fmtflags f(sl.stream().flags());
181  sl << endmsg << " --> ";
182  sl << ires << ": res="
183  << std::setw(11) << std::showpos << std::scientific
184  << itRes->residual() <<" res/err="<<resnorm
185  << ", dchi2="<<std::noshowpos<<resnorm*resnorm
186  << resetiosflags(std::ios::floatfield);
187  sl.flags(f);
188  }
189  }
190  return sl;
191  }

◆ operator<<() [18/115]

MsgStream & Trk::operator<< ( MsgStream &  sl,
const AssociatedMaterial mstep 
)

Overload of << operator for both, MsgStream and std::ostream for debug output.

Definition at line 209 of file AssociatedMaterial.cxx.

210  {
211  return mstep.dump(sl);
212 }

◆ operator<<() [19/115]

MsgStream & Trk::operator<< ( MsgStream &  sl,
const BinUtility bgen 
)

Overload of << operator for both, MsgStream and std::ostream for debug output.

Definition at line 17 of file BinUtility.cxx.

19 {
20  return bgen.dump(sl);
21 }

◆ operator<<() [20/115]

MsgStream & Trk::operator<< ( MsgStream &  sl,
const CurvilinearUVT uvt 
)

Overload of << operator for both, MsgStream and std::ostream for debug output.

Definition at line 15 of file CurvilinearUVT.cxx.

16 {
17  sl << "Trk::CuvilinearUVT - curvilinear frame (u,v,t)" << std::endl;
18  sl << " u = " << uvt.curvU() << std::endl;
19  sl << " v = " << uvt.curvV() << std::endl;
20  sl << " t = " << uvt.curvT() << std::endl;
21 
22  return sl;
23 }

◆ operator<<() [21/115]

MsgStream & Trk::operator<< ( MsgStream &  sl,
const DistortionDescriptor sb 
)

Overload of << operator for both, MsgStream and std::ostream for debug output.

Definition at line 13 of file DistortionDescriptor.cxx.

14 { return dd.dump(sl); }

◆ operator<<() [22/115]

MsgStream & Trk::operator<< ( MsgStream &  sl,
const ElementTable etab 
)

Overload of << operator for both, MsgStream and std::ostream for debug output.

Definition at line 21 of file ElementTable.cxx.

21  {
22  std::string none = "None";
23  sl << " ------------------------- Trk::ElementTable "
24  "-------------------------- "
25  << std::endl;
26  sl << " - Listing " << etab.size() << " elements " << std::endl;
27  for (unsigned int iel = 0; iel < static_cast<unsigned int>(UCHAR_MAX); ++iel)
28  sl << " - Id : " << std::setw(3) << iel << " - Properties: "
29  << (etab.element(iel) ? etab.element(iel)->toString() : none)
30  << " - Name : " << etab.elementName(iel) << std::endl;
31  sl << " ---------------------------------------------------------------------"
32  "- "
33  << endmsg;
34  return sl;
35 }

◆ operator<<() [23/115]

MsgStream & Trk::operator<< ( MsgStream &  sl,
const EnergyLoss eloss 
)

Overload of << operator for MsgStream for debug output.

Definition at line 15 of file EnergyLoss.cxx.

17 {
18  return eloss.dump(sl);
19 }

◆ operator<<() [24/115]

MsgStream & Trk::operator<< ( MsgStream &  sl,
const FitQualityImpl fq 
)

Overload of << operator for MsgStream for debug output.

Overload of << operator for both, MsgStream and std::ostream for debug output.

Definition at line 15 of file FitQuality.cxx.

16 {
17  std::streamsize ss = sl.precision();
18  sl << std::setiosflags(std::ios::fixed)<< std::setprecision(3);
19  sl << "FitQuality: \t"
20  << "("<<fq.chiSquared()<<", \t"<<fq.numberDoF()<<")\t"
21  << "(chi^2, ndf)";
22  sl.precision (ss); sl<<std::resetiosflags(std::ios::fixed);
23  return sl;
24 }

◆ operator<<() [25/115]

MsgStream & Trk::operator<< ( MsgStream &  sl,
const JacobianCurvilinearToLocal jac 
)

Overload of << operator for both, MsgStream and std::ostream for debug output.

Definition at line 93 of file JacobianCurvilinearToLocal.cxx.

94 {
95  sl << std::setiosflags(std::ios::fixed);
96  sl << std::setprecision(6);
97  sl << MSG::DEBUG << "Trk::JacobianCurvilinearToLocal" << std::endl;
98  sl << "______________________________________________________________________" << std::endl;
99  for (int irow = 0; irow<5; irow++){
100  for (int icol =0; icol<5; icol++){
101  sl << (jac)(irow,icol);
102  if (irow < 4 || icol < 4 ) { sl << " "; }
103  }
104  sl << std::endl;
105  }
106  sl << "______________________________________________________________________";
107  return sl;
108 }

◆ operator<<() [26/115]

MsgStream & Trk::operator<< ( MsgStream &  sl,
const JacobianLocalToCurvilinear jac 
)

Overload of << operator for both, MsgStream and std::ostream for debug output.

Definition at line 82 of file JacobianLocalToCurvilinear.cxx.

83 {
84  sl << std::setiosflags(std::ios::fixed);
85  sl << std::setprecision(6);
86  sl << MSG::DEBUG << "Trk::JacobianLocalToCurvilinear" << std::endl;
87  sl << "______________________________________________________________________" << std::endl;
88  for (int irow = 0; irow<5; irow++){
89  for (int icol =0; icol<5; icol++){
90  sl << (jac)(irow,icol);
91  if (irow < 4 || icol < 4 ) { sl << " ";}
92  }
93  sl << std::endl;
94  }
95  sl << "______________________________________________________________________";
96  return sl;
97 }

◆ operator<<() [27/115]

MsgStream & Trk::operator<< ( MsgStream &  sl,
const LayerIndex layx 
)

Overload of << operator for both, MsgStream and std::ostream for debug output.

Definition at line 35 of file LayerIndex.cxx.

37 {
38  sl << layx.value();
39  return sl;
40 }

◆ operator<<() [28/115]

MsgStream & Trk::operator<< ( MsgStream &  sl,
const LayerMaterialProperties mprop 
)

Overload of << operator for both, MsgStream and std::ostream for debug output.

Definition at line 9 of file LayerMaterialProperties.cxx.

10  {
11  return lmp.dump(sl);
12 }

◆ operator<<() [29/115]

MsgStream& Trk::operator<< ( MsgStream &  sl,
const LinearizedTrack sf 
)

Overload of << operator for both, MsgStream and std::ostream for debug output.

◆ operator<<() [30/115]

MsgStream & Trk::operator<< ( MsgStream &  sl,
const LocalDirection lomo 
)

Overload of << operator for both, MsgStream and std::ostream for debug output.

Definition at line 15 of file LocalDirection.cxx.

16 {
17  ls << std::setiosflags(std::ios::fixed) << std::setprecision(3);
18 // ls << "(angleXZ, angleYZ, magnitude) = ";
19  ls << "(angleXZ, angleYZ) = ";
20  ls << "(" << lom.angleXZ();
21  ls << "," << lom.angleYZ() << ")";
22  ls << std::setprecision(-1);
23  return ls;
24 }

◆ operator<<() [31/115]

MsgStream & Trk::operator<< ( MsgStream &  sl,
const MagneticFieldProperties mprop 
)

Overload of << operator for both, MsgStream and std::ostream for debug output.

Definition at line 14 of file MagneticFieldProperties.cxx.

15  {
16  sl << "Trk::MagneticFieldProperties, configuration: "
17  << mprop.magneticFieldMode() << endmsg;
18  return sl;
19 }

◆ operator<<() [32/115]

MsgStream & Trk::operator<< ( MsgStream &  sl,
const MaterialEffectsBase meb 
)

Overload of << operator for MsgStream for debug output.

Definition at line 50 of file MaterialEffectsBase.cxx.

52 {
53  return meb.dump(sl);
54 }

◆ operator<<() [33/115]

MsgStream & Trk::operator<< ( MsgStream &  sl,
const MaterialProperties mprop 
)

Overload of << operator for both, MsgStream and std::ostream for debug output.

Definition at line 84 of file MaterialProperties.cxx.

85  {
86  sl << "Trk::MaterialProperties: " << endmsg;
87  sl << " - thickness/X0 = " << mprop.thicknessInX0()
88  << endmsg;
89  sl << " - thickness [mm] = " << mprop.thickness()
90  << endmsg;
91  sl << " - radiation length X0 [mm] = " << mprop.x0() << endmsg;
92  sl << " - nuclear interaction length L0 [mm] = " << mprop.l0() << endmsg;
93  sl << " - average material Z/A*rho [gram/mm^3] = "
94  << mprop.zOverAtimesRho() << endmsg;
95  return sl;
96 }

◆ operator<<() [34/115]

MsgStream & Trk::operator<< ( MsgStream &  sl,
const MaterialStep mstep 
)

Overload of << operator for both, MsgStream and std::ostream for debug output.

Definition at line 70 of file MaterialStep.cxx.

70  {
71  return mstep.dump(sl);
72 }

◆ operator<<() [35/115]

MsgStream & Trk::operator<< ( MsgStream &  sl,
const MemoryLogger oac 
)

Overload of << operator for both, MsgStream and std::ostream for debug output.

Definition at line 49 of file MemoryLogger.cxx.

51 {
52  sl << "[ memory usage ] in kB ( VmSize | VmRSS ) : " << mlg.vmSize() << '\t' << mlg.vmRss();
53  return sl;
54 }

◆ operator<<() [36/115]

MsgStream & Trk::operator<< ( MsgStream &  sl,
const ObjectAccessor oac 
)

Overload of << operator for both, MsgStream and std::ostream for debug output.

Definition at line 15 of file ObjectAccessor.cxx.

17 {
18  for (const ObjectAccessor::value_type& elm : oac) {
19  sl << (oac.end() - oac.begin()) << "-ObjectAccessor: | " << elm << " | ";
20  }
21  return sl;
22 }

◆ operator<<() [37/115]

MsgStream & Trk::operator<< ( MsgStream &  sl,
const Surface sf 
)

Overload of << operator for both, MsgStream and std::ostream for debug output.

Definition at line 192 of file Surface.cxx.

194 {
195  return sf.dump(sl);
196 }

◆ operator<<() [38/115]

MsgStream & Trk::operator<< ( MsgStream &  sl,
const SurfaceBounds sb 
)

Overload of << operator for both, MsgStream and std::ostream for debug output.

Definition at line 13 of file SurfaceBounds.cxx.

15 {
16  return sb.dump(sl);
17 }

◆ operator<<() [39/115]

MsgStream & Trk::operator<< ( MsgStream &  sl,
const Track track 
)

Overload of << operator for MsgStream for debug output.

Overload of << operator for both, MsgStream and std::ostream for debug output.

Definition at line 235 of file Tracking/TrkEvent/TrkTrack/src/Track.cxx.

235  {
236  std::string name("Track ");
237  sl << name << "Author = " << track.info().dumpInfo() << endmsg;
238  if (track.fitQuality() != nullptr) {
239  sl << *(track.fitQuality()) << endmsg;
240  }
241  if (track.trackSummary() != nullptr) {
242  sl << *(track.trackSummary()) << endmsg;
243  } else {
244  sl << "No TrackSummary available in this track." << endmsg;
245  }
246  if (track.trackStateOnSurfaces() != nullptr) {
247  sl << name << "has " << (track.trackStateOnSurfaces()->size())
248  << " trackStateOnSurface(s)" << endmsg;
249 
250  // level() shows the output level, currentLevel()
251  // shows what the stream is set to
252  if (sl.level() < MSG::INFO) {
253  // loop over TrackStateOnSurfaces if verbose turned on
255  track.trackStateOnSurfaces()->cbegin();
256  int num = 0;
257  for (; it != track.trackStateOnSurfaces()->cend(); ++it) {
258  sl << " --------- Start of TrackStateOnSurface \t" << num << "\t-------"
259  << endmsg;
260  sl << (**it);
261  sl << " --------- End of TrackStateOnSurface \t" << num++
262  << "\t-------" << endmsg;
263  }
264  }
265  }
266  return sl;
267 }

◆ operator<<() [40/115]

MsgStream & Trk::operator<< ( MsgStream &  sl,
const TrackInfo track 
)

Overload of << operator for MsgStream for debug output.

Definition at line 232 of file Tracking/TrkEvent/TrkTrack/src/TrackInfo.cxx.

234 {
235  sl << info.dumpInfo() << endmsg;
236  return sl;
237 }

◆ operator<<() [41/115]

MsgStream & Trk::operator<< ( MsgStream &  sl,
const TrackParticleBase trackParticleBase 
)

Overload of << operator for MsgStream for debug output.

Definition at line 247 of file TrackParticleBase.cxx.

248  {
249  trackParticleBase.dump(sl);
250  return sl;
251  }

◆ operator<<() [42/115]

MsgStream & Trk::operator<< ( MsgStream &  sl,
const TrackStateOnSurface tsos 
)

Overload of << operator for both, MsgStream and std::ostream for debug output.

Overload of << operator for MsgStream for debug output.

Definition at line 249 of file TrackStateOnSurface.cxx.

251 {
252  std::string name("TrackStateOnSurface: ");
253  sl << name << "\t of type : " << tsos.dumpType() << endmsg;
254 
255  if (sl.level() < MSG::INFO) {
256  sl << name << "Detailed dump of contained objects follows:" << endmsg;
257  sl << (tsos.fitQualityOnSurface()) << "\n (end of FitQualityOnSurface dump)"
258  << endmsg;
259 
260  if (tsos.trackParameters() != nullptr) {
261  sl << *(tsos.trackParameters()) << "\n (end of TrackParameters dump)"
262  << endmsg;
263  }
264 
265  if (tsos.measurementOnTrack() != nullptr) {
266  sl << *(tsos.measurementOnTrack()) << "\n (end of MeasurementBase dump"
267  << endmsg;
268  }
269 
270  if (tsos.materialEffectsOnTrack() != nullptr) {
271  sl << *(tsos.materialEffectsOnTrack())
272  << "\n (end of MaterialEffectsBase dump)" << endmsg;
273  }
274 
275  if (tsos.alignmentEffectsOnTrack() != nullptr) {
276  sl << *(tsos.alignmentEffectsOnTrack())
277  << "\n (end of AlignmentEffectsOnTrack dump)" << endmsg;
278  }
279  }
280  return sl;
281 }

◆ operator<<() [43/115]

MsgStream & Trk::operator<< ( MsgStream &  sl,
const TrackSurfaceIntersection tsfi 
)

Overload of << operator for both, MsgStream and std::ostream for debug output.

Definition at line 60 of file TrackSurfaceIntersection.cxx.

62 {
63  const std::streamsize ss = sl.precision();
64  sl << std::setiosflags(std::ios::fixed);
65  sl << std::setprecision(7);
66  sl << MSG::DEBUG << "Trk::TrackSurfaceIntersection " << std::endl;
67  sl << " position [mm] = (" << tsfi.position().x() << ", "
68  << tsfi.position().y() << ", " << tsfi.position().z() << ")" << std::endl;
69  sl << " direction [mm] = (" << tsfi.direction().x() << ", "
70  << tsfi.direction().y() << ", " << tsfi.direction().z() << ")"
71  << std::endl;
72  sl << " delta pathlength = " << tsfi.pathlength() << std::endl;
73  sl.precision(ss);
74  return sl;
75 }

◆ operator<<() [44/115]

MsgStream & Trk::operator<< ( MsgStream &  sl,
const TransportJacobian jac 
)

Overload of << operator for both, MsgStream and std::ostream for debug output.

Definition at line 62 of file TransportJacobian.cxx.

64 {
65  sl << "|-------------|-------------|-------------|-------------|-------------"
66  "|-------------|"
67  << std::endl;
68  sl << "| Jacobian(A) | Old /dL1 | /dL2 | /dPhi | /dThe "
69  "| /dCM |"
70  << std::endl;
71  sl << "|-------------|-------------|-------------|-------------|-------------"
72  "|-------------|"
73  << std::endl;
74 
75  sl << "| New dL1 / |" << std::setw(12) << std::setprecision(5) << J(0, 0)
76  << " |" << std::setw(12) << std::setprecision(5) << J(0, 1) << " |"
77  << std::setw(12) << std::setprecision(5) << J(0, 2) << " |"
78  << std::setw(12) << std::setprecision(5) << J(0, 3) << " |"
79  << std::setw(12) << std::setprecision(5) << J(0, 4) << " |" << std::endl;
80  sl << "| dL2 / |" << std::setw(12) << std::setprecision(5) << J(1, 0)
81  << " |" << std::setw(12) << std::setprecision(5) << J(1, 1) << " |"
82  << std::setw(12) << std::setprecision(5) << J(1, 2) << " |"
83  << std::setw(12) << std::setprecision(5) << J(1, 3) << " |"
84  << std::setw(12) << std::setprecision(5) << J(1, 4) << " |" << std::endl;
85  sl << "| dPhi/ |" << std::setw(12) << std::setprecision(5) << J(2, 0)
86  << " |" << std::setw(12) << std::setprecision(5) << J(2, 1) << " |"
87  << std::setw(12) << std::setprecision(5) << J(2, 2) << " |"
88  << std::setw(12) << std::setprecision(5) << J(2, 3) << " |"
89  << std::setw(12) << std::setprecision(5) << J(2, 4) << " |" << std::endl;
90  sl << "| dThe/ |" << std::setw(12) << std::setprecision(5) << J(3, 0)
91  << " |" << std::setw(12) << std::setprecision(5) << J(3, 1) << " |"
92  << std::setw(12) << std::setprecision(5) << J(3, 2) << " |"
93  << std::setw(12) << std::setprecision(5) << J(3, 3) << " |"
94  << std::setw(12) << std::setprecision(5) << J(3, 4) << " |" << std::endl;
95  sl << "| dCM / |"
96 
97  << std::setw(12) << std::setprecision(5) << J(4, 0) << " |"
98  << std::setw(12) << std::setprecision(5) << J(4, 1) << " |"
99  << std::setw(12) << std::setprecision(5) << J(4, 2) << " |"
100  << std::setw(12) << std::setprecision(5) << J(4, 3) << " |"
101  << std::setw(12) << std::setprecision(5) << J(4, 4) << " |" << std::endl;
102  sl << "|-------------|-------------|-------------|-------------|-------------"
103  "|-------------|"
104  << std::endl;
105  return sl;
106 }

◆ operator<<() [45/115]

MsgStream& Trk::operator<< ( MsgStream &  sl,
const Trk::LocalParameters lp 
)

Overload of << operator for both, MsgStream and std::ostream for debug output.

Definition at line 98 of file LocalParameters.cxx.

99 {
100  std::streamsize ss = sl.precision();
101  sl << std::setiosflags(std::ios::fixed)<< std::setprecision(3);
102  sl << "Trk::LocalParameters " <<": (";
103  for (int ipar=0; ipar<lp.dimension(); ++ipar)
104  { sl << lp(ipar);
105  if (ipar+1 < lp.dimension()) { sl << ", ";
106  } else { sl << ") - key: "<< lp.m_parameterkey << "(";}
107  }
108 
109  for (int itag = 0, ipos=1; itag<5; ++itag, ipos*=2)
110  { bool bit = (lp.m_parameterkey & ipos);
111  if (bit) { sl << "1";
112  } else { sl << "0";}
113  }
114  sl << ")";
115  sl.precision (ss); sl<<std::resetiosflags(std::ios::fixed);
116 
117  return sl;
118 }

◆ operator<<() [46/115]

MsgStream& Trk::operator<< ( MsgStream &  sl,
const Trk::MeasurementBase mbase 
)
inline

Overload of << operator for MsgStream for debug output.

Definition at line 116 of file MeasurementBase.h.

118 {
119  return mbase.dump(sl);
120 }

◆ operator<<() [47/115]

template<int DIM, class T >
MsgStream& Trk::operator<< ( MsgStream &  sl,
const Trk::ParametersBase< DIM, T > &  tp 
)

Overload of << operator for both, MsgStream and std::ostream for debug output.

◆ operator<<() [48/115]

MsgStream & Trk::operator<< ( MsgStream &  sl,
const Trk::ScatteringAngles saos 
)

Overload of << operator for MsgStream for debug output.

Definition at line 11 of file ScatteringAngles.cxx.

13 {
14  std::string name("ScatteringAngles: ");
15  sl << name << "deltaPhi : " << saos.deltaPhi() << endmsg;
16  sl << name << "deltaTheta : " << saos.deltaTheta() << endmsg;
17  sl << name << "sigmaDeltaPhi : " << saos.sigmaDeltaPhi() << endmsg;
18  sl << name << "sigmaDeltaTheta : " << saos.sigmaDeltaTheta() << endmsg;
19  return sl;
20 }

◆ operator<<() [49/115]

MsgStream & Trk::operator<< ( MsgStream &  sl,
const Trk::SpacePoint spacePoint 
)

Overload of << operator for both, MsgStream and std::ostream for debug output.

Overload of << operator for MsgStream for debug output.

Definition at line 43 of file SpacePoint.cxx.

44  {
45  return spacePoint.dump(sl);
46  }

◆ operator<<() [50/115]

MsgStream & Trk::operator<< ( MsgStream &  sl,
const Vertex sf 
)

Overload of << operator for both, MsgStream and std::ostream for debug output.

Definition at line 59 of file Vertex.cxx.

64 {

◆ operator<<() [51/115]

MsgStream & Trk::operator<< ( MsgStream &  sl,
const VertexPositions sf 
)

Overload of << operator for both, MsgStream and std::ostream for debug output.

Definition at line 82 of file VertexPositions.cxx.

87 {

◆ operator<<() [52/115]

MsgStream & Trk::operator<< ( MsgStream &  sl,
const Volume vol 
)

Overload of << operator for both, MsgStream and std::ostream for debug output.

Definition at line 115 of file Volume.cxx.

117 {
118  sl << "Trk::Volume with VolumeBounds :" << vol.volumeBounds() << endmsg;
119  return sl;
120 }

◆ operator<<() [53/115]

MsgStream & Trk::operator<< ( MsgStream &  sl,
const VolumeBounds vb 
)

Overload of << operator for both, MsgStream and std::ostream for debug output.

Definition at line 14 of file VolumeBounds.cxx.

16 {
17  return vb.dump(sl);
18 }

◆ operator<<() [54/115]

MsgStream & Trk::operator<< ( MsgStream &  sl,
const VxCandidate sf 
)

Overload of << operator for both, MsgStream and std::ostream for debug output; only needed in base class?

Definition at line 129 of file VxCandidate.cxx.

130 {
131  return sf.dump(sl);
132 }
133 

◆ operator<<() [55/115]

MsgStream & Trk::operator<< ( MsgStream &  sl,
const VxClusteringTable sf 
)

Definition at line 70 of file VxClusteringTable.cxx.

◆ operator<<() [56/115]

MsgStream & Trk::operator<< ( MsgStream &  sl,
const VxTrackAtVertex sf 
)

Overload of << operator for both, MsgStream and std::ostream for debug output; only needed in base class?

Definition at line 503 of file VxTrackAtVertex.cxx.

◆ operator<<() [57/115]

MsgStream & Trk::operator<< ( MsgStream &  sl,
Trk::GlueVolumesDescriptor gvd 
)

Overload of << operator for both, MsgStream and std::ostream for debug output.

Definition at line 49 of file GlueVolumesDescriptor.cxx.

50  {
51  sl << "Trk::GlueVolumesDescriptor: " << std::endl;
52  const std::vector<Trk::BoundarySurfaceFace>& glueFaceVector = gvd.glueFaces();
53  sl << " has Tracking Volumes registered for : " << glueFaceVector.size()
54  << " Volume faces." << std::endl;
55  std::vector<Trk::BoundarySurfaceFace>::const_iterator glueFaceIter =
56  glueFaceVector.begin();
57  std::vector<Trk::BoundarySurfaceFace>::const_iterator glueFaceIterEnd =
58  glueFaceVector.end();
59  // loop over the faces
60  for (; glueFaceIter != glueFaceIterEnd; ++glueFaceIter) {
61  const std::vector<Trk::TrackingVolume*>& glueVolumesVector =
62  gvd.glueVolumes(*glueFaceIter);
63  auto glueVolumeIter = glueVolumesVector.begin();
64  auto glueVolumeIterEnd = glueVolumesVector.end();
65  // loop over the TrackingVolumes
66  sl << " -----> Processing Face: " << int(*glueFaceIter) << " - has ";
67  sl << glueVolumesVector.size()
68  << " TrackingVolumes marked as 'GlueVolumes' " << std::endl;
69  for (; glueVolumeIter != glueVolumeIterEnd; ++glueVolumeIter)
70  sl << " - TrackingVolume: " << (*glueVolumeIter)->volumeName()
71  << std::endl;
72  }
73  return sl;
74 }

◆ operator<<() [58/115]

MsgStream & Trk::operator<< ( MsgStream &  stream,
const PrepRawData prd 
)

Definition at line 130 of file PrepRawData.cxx.

132 {
133  return prd.dump(stream);
134 }

◆ operator<<() [59/115]

MsgStream & Trk::operator<< ( MsgStream &  stream,
const TrackRoad tr 
)

Dump the road into a message stream.

Definition at line 41 of file TrackRoad.cxx.

43 {
44  return tr.dump(stream);
45 }

◆ operator<<() [60/115]

std::ostream & Trk::operator<< ( std::ostream &  log,
const MultiComponentStateOnSurface  
)

Overload of << operator for std::ostream for debug output.

Definition at line 91 of file MultiComponentStateOnSurface.cxx.

93 {
94  return log;
95 }

◆ operator<<() [61/115]

std::ostream & Trk::operator<< ( std::ostream &  sl,
const NoiseOnSurface se 
)

Definition at line 18 of file NoiseOnSurface.cxx.

20 {
21  return se.dump(sl);
22 }

◆ operator<<() [62/115]

std::ostream & Trk::operator<< ( std::ostream &  sl,
const PatternTrackParameters se 
)

Definition at line 88 of file PatternTrackParameters.cxx.

90 {
91  return se.dump(sl);
92 }

◆ operator<<() [63/115]

std::ostream & Trk::operator<< ( std::ostream &  out,
const MuonTrackSummary trackSum 
)

output.

This dumps the values of each of the possible summary enums

Definition at line 83 of file MuonTrackSummary.cxx.

85 {
86  out << "MuonTrackSummary: npseudo " << trackSum.npseudoMeasurements()
87  << " nscat " << trackSum.nscatterers() << " number of chambers "
88  << trackSum.chamberHitSummary().size() << std::endl;
89  std::vector<MuonTrackSummary::ChamberHitSummary>::const_iterator it =
90  trackSum.chamberHitSummary().begin();
91  std::vector<MuonTrackSummary::ChamberHitSummary>::const_iterator it_end =
92  trackSum.chamberHitSummary().end();
93 
94  for (; it != it_end; ++it) {
95  const MuonTrackSummary::ChamberHitSummary& chSum = *it;
96  const MuonTrackSummary::ChamberHitSummary::Projection& etaP =
97  chSum.etaProjection();
98  const MuonTrackSummary::ChamberHitSummary::Projection& phiP =
99  chSum.phiProjection();
100  out << " Chamber " << chSum.chamberId() << " isMdt " << chSum.isMdt()
101  << std::endl
102  << " First projection: Hits " << etaP.nhits << " holes " << etaP.nholes
103  << " outlier " << etaP.noutliers << " deltas " << etaP.ndeltas
104  << " close Hits " << etaP.ncloseHits << std::endl
105  << " Second projection: Hits " << phiP.nhits << " holes " << phiP.nholes
106  << " outlier " << phiP.noutliers << " deltas " << phiP.ndeltas
107  << " close Hits " << phiP.ncloseHits << std::endl;
108  }
109  return out;
110 }

◆ operator<<() [64/115]

std::ostream & Trk::operator<< ( std::ostream &  out,
const TrackSummary trackSum 
)

output.

This dumps the values of each of the possible summary enums

Definition at line 202 of file TrackSummary.cxx.

204 {
205  return dumpTrackSummary(out, trackSum);
206 }

◆ operator<<() [65/115]

std::ostream& Trk::operator<< ( std::ostream &  out,
const VKConstraintBase cnst 
)

Definition at line 9 of file Derivt.cxx.

9  {
10  int NTRK = cnst.f0t.size();
11  // out.setf( std::ios::scientific); out.precision(7); out << std::endl;
12  out.precision(7);
13  out << std::defaultfloat;
14  out << " Base constraint derivatives for NTRK=" << NTRK
15  << " CNST dim=" << cnst.NCDim << std::endl;
16  out << " Momentum derivatives " << std::endl;
17  for (int ic = 0; ic < cnst.NCDim; ic++) {
18  out << " d(...)/dTheta d(...)/dPhi d(...)/dInvR NC=" << ic
19  << std::endl;
20  for (int i = 0; i < NTRK; i++) {
21  out << cnst.f0t[i][ic].X << ", " << cnst.f0t[i][ic].Y << ", "
22  << cnst.f0t[i][ic].Z << std::endl;
23  }
24  out << " d(...)/dXv d(...)/dYy d(...)/Zv" << std::endl;
25  out << cnst.h0t[ic].X << ", " << cnst.h0t[ic].Y << ", " << cnst.h0t[ic].Z
26  << std::endl;
27  out << " aa=" << cnst.aa[ic] << std::endl;
28  }
29  out.precision(6); // restore default
30  return out;
31 }

◆ operator<<() [66/115]

std::ostream& Trk::operator<< ( std::ostream &  out,
const VKMassConstraint cnst 
)

Definition at line 33 of file Derivt.cxx.

33  {
34  const VKVertex* vk = cnst.getOriginVertex();
35  int NP = cnst.m_usedParticles.size();
36  // out.setf( std::ios::scientific); out.precision(7); out << std::endl;
37  out.precision(7);
38  out << std::defaultfloat;
39  out << " Mass constraint (total NTRK=" << vk->TrackList.size() << ")"
40  << std::endl;
41  out << " * target mass: " << cnst.getTargetMass() << std::endl;
42  out << " * particle indexes: ";
43  for (int i = 0; i < NP; i++) {
44  out << cnst.m_usedParticles[i] << ", ";
45  }
46  out << std::endl;
47  out << " * particle masses: ";
48  for (int i = 0; i < NP; i++) {
49  out << vk->TrackList[cnst.m_usedParticles[i]]->getMass() << ", ";
50  }
51  out << std::endl;
52  out << (VKConstraintBase&)cnst << '\n';
53  out.precision(6); // restore default
54  return out;
55 }

◆ operator<<() [67/115]

std::ostream& Trk::operator<< ( std::ostream &  out,
const VKPhiConstraint cnst 
)

Definition at line 56 of file Derivt.cxx.

56  {
57  const VKVertex* vk = cnst.getOriginVertex();
58  // out.setf( std::ios::scientific); out.precision(7); out << std::endl;
59  out.precision(7);
60  out << std::defaultfloat;
61  out << " Phi constraint (total NTRK=" << vk->TrackList.size() << ")"
62  << std::endl;
63  out << (VKConstraintBase&)cnst << '\n';
64  out.precision(6); // restore default
65  return out;
66 }

◆ operator<<() [68/115]

std::ostream& Trk::operator<< ( std::ostream &  out,
const VKPlaneConstraint cnst 
)

Definition at line 100 of file Derivt.cxx.

100  {
101  const VKVertex* vk = cnst.getOriginVertex();
102  // out.setf( std::ios::scientific); out.precision(7); out << std::endl;
103  out.precision(7);
104  out << std::defaultfloat;
105  out << " Vertex in plane constraint (total NTRK=" << vk->TrackList.size()
106  << ")" << std::endl;
107  out << " Plane(A,B,C,D):" << cnst.getA() << ", " << cnst.getB() << ", "
108  << cnst.getC() << ", " << cnst.getD() << std::endl;
109  out << (VKConstraintBase&)cnst << '\n';
110  out.precision(6); // restore default
111  return out;
112 }

◆ operator<<() [69/115]

std::ostream& Trk::operator<< ( std::ostream &  out,
const VKPointConstraint cnst 
)

Definition at line 80 of file Derivt.cxx.

80  {
81  const VKVertex* vk = cnst.getOriginVertex();
82  // out.setf( std::ios::scientific); out.precision(7); out << std::endl;
83  out.precision(7);
84  out << std::defaultfloat;
85  if (!cnst.onlyZ()) {
86  out << " Point constraint (total NTRK=" << vk->TrackList.size() << ")"
87  << std::endl;
88  } else {
89  out << " Z point constraint (total NTRK=" << vk->TrackList.size() << ")"
90  << std::endl;
91  }
92  out << " target vertex=" << cnst.getTargetVertex()[0] << ", "
93  << cnst.getTargetVertex()[1] << ", " << cnst.getTargetVertex()[2]
94  << std::endl;
95  out << (VKConstraintBase&)cnst << '\n';
96  out.precision(6); // restore default
97  return out;
98 }

◆ operator<<() [70/115]

std::ostream& Trk::operator<< ( std::ostream &  out,
const VKThetaConstraint cnst 
)

Definition at line 68 of file Derivt.cxx.

68  {
69  const VKVertex* vk = cnst.getOriginVertex();
70  // out.setf( std::ios::scientific); out.precision(7); out << std::endl;
71  out.precision(7);
72  out << std::defaultfloat;
73  out << " Theta constraint (total NTRK=" << vk->TrackList.size() << ")"
74  << std::endl;
75  out << (VKConstraintBase&)cnst << '\n';
76  out.precision(6); // restore default
77  return out;
78 }

◆ operator<<() [71/115]

std::ostream& Trk::operator<< ( std::ostream &  out,
const VKTrack track 
)

Definition at line 94 of file TrkVKalVrtCoreBase.cxx.

95  {
96  //out.setf( std::ios::defaultfloat ); out.precision(5); out << std::endl;
97  out.precision(5); out << std::defaultfloat;
98  out << " Track par: Iteration <-> Ref" << std::endl;
99  out << " * a_0 : "<< track.a0() <<" "<< track.r_a0() << std::endl;
100  out << " * z_0 : "<< track.z() <<" "<< track.r_z() << std::endl;
101  out << " * theta : "<< track.theta()<<" "<< track.r_theta()<< std::endl;
102  out << " * phi : "<< track.phi() <<" "<< track.r_phi() << std::endl;
103  out << " * q/R : "<< track.invR() <<" "<< track.r_invR() << std::endl;
104  out << " * Charge: "<< track.Charge <<" Mass: "<<track.m_mass<< std::endl;
105  out << "-> with ref ErrorMatrix: " << std::endl;out.precision(5);
106  out << track.refCovar[0] <<std::endl;
107  out << track.refCovar[1] <<", "<<track.refCovar[2] <<std::endl;
108  out << track.refCovar[3] <<", "<<track.refCovar[4] <<", "<<track.refCovar[5] <<std::endl;
109  out << track.refCovar[6] <<", "<<track.refCovar[7] <<", "<<track.refCovar[8] <<", "
110  << track.refCovar[9]<<std::endl;
111  out << track.refCovar[10]<<", "<<track.refCovar[11]<<", "<<track.refCovar[12]<<", "
112  << track.refCovar[13]<<", "<<track.refCovar[14]<<std::endl;
113  out << "-> and iteration WeightMatrix: " << std::endl;
114  out << track.WgtM[0] <<std::endl;
115  out << track.WgtM[1] <<", "<<track.WgtM[2] <<std::endl;
116  out << track.WgtM[3] <<", "<<track.WgtM[4] <<", "<<track.WgtM[5] <<std::endl;
117  out << track.WgtM[6] <<", "<<track.WgtM[7] <<", "<<track.WgtM[8] <<", "
118  << track.WgtM[9]<<std::endl;
119  out << track.WgtM[10]<<", "<<track.WgtM[11]<<", "<<track.WgtM[12]<<", "
120  << track.WgtM[13]<<", "<<track.WgtM[14]<<std::endl;
121  return out;
122  }

◆ operator<<() [72/115]

std::ostream & Trk::operator<< ( std::ostream &  sl,
const AlignmentEffectsOnTrack tsos 
)

Overload of << operator for std::ostream for debug output.

Definition at line 40 of file AlignmentEffectsOnTrack.cxx.

42 {
43  sl << "AlignmentEffectsOnTrack:" << std::endl;
44  sl << "deltaTranslation = " << aeot.deltaTranslation() << std::endl;
45  sl << "sigmaDeltaTranslation = " << aeot.deltaTranslation() << std::endl;
46  sl << "deltaAngle = " << aeot.deltaAngle() << std::endl;
47  sl << "sigmaDeltaAngle = " << aeot.sigmaDeltaAngle() << std::endl;
48  sl << "surface = " << aeot.associatedSurface() << std::endl;
49  return sl;
50 }

◆ operator<<() [73/115]

std::ostream & Trk::operator<< ( std::ostream &  sl,
const AlignTrack::AlignTrackType  type 
)

Definition at line 391 of file AlignTrack.cxx.

392  {
393  switch(type) {
394  case AlignTrack::Unknown:
395  return sl<<"Unknown ";
396  case AlignTrack::Original:
397  return sl<<"Original ";
398  case AlignTrack::NormalRefitted:
399  return sl<<"NormalRefitted ";
400  case AlignTrack::BeamspotConstrained:
401  return sl<<"BeamspotConstrained ";
402  case AlignTrack::VertexConstrained:
403  return sl<<"VertexConstrained ";
404  default:
405  return sl<<"UNDEFINED ";
406  }
407  }

◆ operator<<() [74/115]

std::ostream & Trk::operator<< ( std::ostream &  sl,
const AssociatedMaterial mstep 
)

Definition at line 214 of file AssociatedMaterial.cxx.

215  {
216  return mstep.dump(sl);
217 }

◆ operator<<() [75/115]

std::ostream & Trk::operator<< ( std::ostream &  sl,
const BinUtility bgen 
)

Definition at line 23 of file BinUtility.cxx.

25 {
26  return bgen.dump(sl);
27 }

◆ operator<<() [76/115]

std::ostream & Trk::operator<< ( std::ostream &  sl,
const CurvilinearUVT uvt 
)

Definition at line 25 of file CurvilinearUVT.cxx.

26 {
27  sl << "Trk::CuvilinearUVT - curvilinear frame (u,v,t)" << std::endl;
28  sl << " u = " << uvt.curvU() << std::endl;
29  sl << " v = " << uvt.curvV() << std::endl;
30  sl << " t = " << uvt.curvT() << std::endl;
31 
32  return sl;
33 }

◆ operator<<() [77/115]

std::ostream & Trk::operator<< ( std::ostream &  sl,
const DistortionDescriptor sb 
)

Definition at line 16 of file DistortionDescriptor.cxx.

17 { return dd.dump(sl); }

◆ operator<<() [78/115]

std::ostream & Trk::operator<< ( std::ostream &  sl,
const ElementTable etab 
)

Definition at line 37 of file ElementTable.cxx.

37  {
38  std::string none = "None";
39  sl << " ------------------------- Trk::ElementTable "
40  "-------------------------- "
41  << std::endl;
42  sl << " - Listing " << etab.size() << " elements " << std::endl;
43  for (unsigned int iel = 0; iel < static_cast<unsigned int>(UCHAR_MAX); ++iel)
44  sl << " - Id : " << std::setw(3) << iel << " - Properties: "
45  << (etab.element(iel) ? etab.element(iel)->toString() : none)
46  << " - Name : " << etab.elementName(iel) << std::endl;
47  sl << " ---------------------------------------------------------------------"
48  "- "
49  << std::endl;
50  return sl;
51 }

◆ operator<<() [79/115]

std::ostream & Trk::operator<< ( std::ostream &  sl,
const EnergyLoss eloss 
)

Overload of << operator for std::ostream for debug outputstd::ostream&.

Definition at line 22 of file EnergyLoss.cxx.

24 {
25  return eloss.dump(sl);
26 }

◆ operator<<() [80/115]

std::ostream & Trk::operator<< ( std::ostream &  sl,
const FitQualityImpl fq 
)

Overload of << operator for std::ostream for debug output.

Definition at line 26 of file FitQuality.cxx.

27 {
28  std::streamsize ss = sl.precision();
29  sl << std::setiosflags(std::ios::fixed)<< std::setprecision(3);
30  sl <<"FitQuality: \t"
31  << "("<<fq.chiSquared()<<", \t"<<fq.numberDoF()<<")\t"
32  << "(chi^2, ndf)";
33  sl.precision (ss); sl<<std::resetiosflags(std::ios::fixed);
34  return sl;
35 }

◆ operator<<() [81/115]

std::ostream & Trk::operator<< ( std::ostream &  sl,
const JacobianCurvilinearToLocal jac 
)

Definition at line 110 of file JacobianCurvilinearToLocal.cxx.

111 {
112  sl << std::setiosflags(std::ios::fixed);
113  sl << std::setprecision(7);
114  sl << "Trk::JacobianCurvilinearToLocal " << std::endl;
115  sl << "______________________________________________________________________" << std::endl;
116  for (int irow = 0; irow<5; irow++){
117  for (int icol =0; icol<5; icol++){
118  sl << (jac)(irow,icol);
119  if (irow < 4 || icol < 4 ) { sl << " ";}
120  }
121  sl << std::endl;
122  }
123  sl << "______________________________________________________________________";
124  return sl;
125 }

◆ operator<<() [82/115]

std::ostream & Trk::operator<< ( std::ostream &  sl,
const JacobianLocalToCurvilinear jac 
)

Definition at line 99 of file JacobianLocalToCurvilinear.cxx.

100 {
101  sl << std::setiosflags(std::ios::fixed);
102  sl << std::setprecision(7);
103  sl << "Trk::JacobianLocalToCurvilinear " << std::endl;
104  sl << "______________________________________________________________________" << std::endl;
105  for (int irow = 0; irow<5; irow++){
106  for (int icol =0; icol<5; icol++){
107  sl << (jac)(irow,icol);
108  if (irow < 4 || icol < 4 ) { sl << " "; }
109  }
110  sl << std::endl;
111  }
112  sl << "______________________________________________________________________";
113  return sl;
114 }

◆ operator<<() [83/115]

std::ostream & Trk::operator<< ( std::ostream &  sl,
const LayerIndex layx 
)

Definition at line 42 of file LayerIndex.cxx.

44 {
45  sl << layx.value();
46  return sl;
47 }

◆ operator<<() [84/115]

std::ostream & Trk::operator<< ( std::ostream &  sl,
const LayerMaterialProperties mprop 
)

Definition at line 14 of file LayerMaterialProperties.cxx.

15  {
16  return lmp.dump(sl);
17 }

◆ operator<<() [85/115]

std::ostream & Trk::operator<< ( std::ostream &  sl,
const LinearizedTrack sf 
)

Definition at line 119 of file LinearizedTrack.cxx.

◆ operator<<() [86/115]

std::ostream & Trk::operator<< ( std::ostream &  sl,
const LocalDirection lomo 
)

Definition at line 26 of file LocalDirection.cxx.

27 {
28  ls << std::setiosflags(std::ios::fixed) << std::setprecision(3);
29 // ls << "(angleXZ, angleYZ, magnitude) = ";
30  ls << "(angleXZ, angleYZ) = ";
31  ls << "(" << lom.angleXZ();
32  ls << "," << lom.angleYZ() << ")";
33  ls << std::setprecision(-1);
34  return ls;
35 }

◆ operator<<() [87/115]

std::ostream & Trk::operator<< ( std::ostream &  sl,
const MagneticFieldProperties mprop 
)

Definition at line 21 of file MagneticFieldProperties.cxx.

22  {
23  sl << "Trk::MagneticFieldProperties, configuration: "
24  << mprop.magneticFieldMode() << std::endl;
25  return sl;
26 }

◆ operator<<() [88/115]

std::ostream & Trk::operator<< ( std::ostream &  sl,
const MaterialEffectsBase meb 
)

Overload of << operator for std::ostream for debug output.

Definition at line 57 of file MaterialEffectsBase.cxx.

59 {
60  return meb.dump(sl);
61 }

◆ operator<<() [89/115]

std::ostream & Trk::operator<< ( std::ostream &  sl,
const MaterialProperties mprop 
)

Definition at line 98 of file MaterialProperties.cxx.

99  {
100  sl << "Trk::MaterialProperties: " << std::endl;
101  sl << " - thickness/X0 = " << mprop.thicknessInX0()
102  << std::endl;
103  sl << " - thickness [mm] = " << mprop.thickness()
104  << std::endl;
105  sl << " - radiation length X0 [mm] = " << mprop.x0()
106  << std::endl;
107  sl << " - nuclear interaction length L0 [mm] = " << mprop.l0()
108  << std::endl;
109  sl << " - average material Z/A*rho [gram/mm^3] = "
110  << mprop.zOverAtimesRho() << std::endl;
111  return sl;
112 }

◆ operator<<() [90/115]

std::ostream & Trk::operator<< ( std::ostream &  sl,
const MaterialStep mstep 
)

Definition at line 74 of file MaterialStep.cxx.

75  {
76  return mstep.dump(sl);
77 }

◆ operator<<() [91/115]

std::ostream & Trk::operator<< ( std::ostream &  sl,
const MemoryLogger oac 
)

Definition at line 56 of file MemoryLogger.cxx.

58 {
59  sl << "[ memory usage ] in kB ( VmSize | VmRSS ) : " << mlg.vmSize() << '\t' << mlg.vmRss();
60  return sl;
61 }

◆ operator<<() [92/115]

std::ostream & Trk::operator<< ( std::ostream &  sl,
const ObjectAccessor oac 
)

Definition at line 24 of file ObjectAccessor.cxx.

26 {
27  for (const ObjectAccessor::value_type& elm : oac) {
28  sl << (oac.end() - oac.begin()) << "-ObjectAccessor: | " << elm << " | ";
29  }
30  return sl;
31 }

◆ operator<<() [93/115]

std::ostream & Trk::operator<< ( std::ostream &  sl,
const Trk::SpacePoint spacePoint 
)

Overload of << operator for std::ostream for debug output.

Definition at line 50 of file SpacePoint.cxx.

51  {
52  return spacePoint.dump(sl);
53  }

◆ operator<<() [94/115]

std::ostream & Trk::operator<< ( std::ostream &  sl,
const Surface sf 
)

Definition at line 198 of file Surface.cxx.

200 {
201  return sf.dump(sl);
202 }

◆ operator<<() [95/115]

std::ostream & Trk::operator<< ( std::ostream &  sl,
const SurfaceBounds sb 
)

Definition at line 19 of file SurfaceBounds.cxx.

21 {
22  return sb.dump(sl);
23 }

◆ operator<<() [96/115]

std::ostream & Trk::operator<< ( std::ostream &  sl,
const Track track 
)

Overload of << operator for std::ostream for debug output.

Definition at line 269 of file Tracking/TrkEvent/TrkTrack/src/Track.cxx.

269  {
270  std::string name("Track ");
271  sl << name << "Author = " << track.info().dumpInfo() << std::endl;
272  if (track.fitQuality() != nullptr) {
273  sl << *(track.fitQuality()) << std::endl;
274  }
275  if (track.trackSummary() != nullptr) {
276  sl << *(track.trackSummary()) << std::endl;
277  } else {
278  sl << "No TrackSummary available in this track." << std::endl;
279  }
280 
281  if (track.trackStateOnSurfaces() != nullptr) {
282  sl << name << "has " << (track.trackStateOnSurfaces()->size())
283  << " trackStateOnSurface(s)" << std::endl;
285  track.trackStateOnSurfaces()->cbegin();
286  int num = 0;
287  for (; it != track.trackStateOnSurfaces()->cend(); ++it) {
288  sl << " --------- Start of TrackStateOnSurface \t" << num << "\t-------"
289  << std::endl;
290  sl << (**it);
291  sl << " --------- End of TrackStateOnSurface \t" << num++ << "\t-------"
292  << std::endl;
293  }
294  }
295  return sl;
296 }

◆ operator<<() [97/115]

std::ostream & Trk::operator<< ( std::ostream &  sl,
const TrackInfo track 
)

Overload of << operator for std::ostream for debug output.

Definition at line 225 of file Tracking/TrkEvent/TrkTrack/src/TrackInfo.cxx.

227 {
228  sl << info.dumpInfo() << std::endl;
229  return sl;
230 }

◆ operator<<() [98/115]

std::ostream & Trk::operator<< ( std::ostream &  sl,
const TrackParticleBase trackParticleBase 
)

Overload of << operator for std::ostream for debug output.

Definition at line 253 of file TrackParticleBase.cxx.

254  {
255  trackParticleBase.dump(sl);
256  return sl;
257  }

◆ operator<<() [99/115]

std::ostream & Trk::operator<< ( std::ostream &  sl,
const TrackStateOnSurface tsos 
)

Overload of << operator for std::ostream for debug output.

return sl; don't return here, the next code becomes dead

Definition at line 283 of file TrackStateOnSurface.cxx.

285 {
286  std::string name("TrackStateOnSurface: ");
287  sl << name << "\t of type : " << tsos.dumpType() << std::endl;
288 
289  sl << "\t FitQualityOnSurface(s)." << std::endl;
290  sl << "\t \t" << (tsos.fitQualityOnSurface()) << std::endl;
291 
292  if (tsos.trackParameters() != nullptr) {
293  sl << "\t HAS TrackParameter(s)." << std::endl;
294  sl << "\t \t" << *(tsos.trackParameters()) << std::endl;
295  } else {
296  sl << "\t NO TrackParameters." << std::endl;
297  }
298 
299  if (tsos.measurementOnTrack() != nullptr) {
300  sl << "\t HAS MeasurementBase(s)." << std::endl;
301  sl << "\t \t" << *(tsos.measurementOnTrack()) << std::endl;
302  } else {
303  sl << "\t NO MeasurementBase." << std::endl;
304  }
305 
306  if (tsos.materialEffectsOnTrack() != nullptr) {
307  sl << "\t HAS MaterialEffectsBase." << std::endl;
308  sl << "\t \t" << *(tsos.materialEffectsOnTrack()) << std::endl;
309  } else {
310  sl << "\t NO MaterialEffects." << std::endl;
311  }
313  if (tsos.alignmentEffectsOnTrack() != nullptr) {
314  sl << "\t HAS AlignmentEffectsOnTrack." << std::endl;
315  sl << "\t \t" << *(tsos.alignmentEffectsOnTrack()) << std::endl;
316  } else {
317  sl << "\t NO AlignmentEffectsOnTrack." << std::endl;
318  }
319  return sl;
320 }

◆ operator<<() [100/115]

std::ostream & Trk::operator<< ( std::ostream &  sl,
const TrackSurfaceIntersection tsfi 
)

Definition at line 77 of file TrackSurfaceIntersection.cxx.

79 {
80  const std::streamsize ss = sl.precision();
81  sl << std::setiosflags(std::ios::fixed);
82  sl << std::setprecision(7);
83  sl << "Trk::TrackSurfaceIntersection " << std::endl;
84  sl << " position [mm] = (" << tsfi.position().x() << ", "
85  << tsfi.position().y() << ", " << tsfi.position().z() << ")" << std::endl;
86  sl << " direction [mm] = (" << tsfi.direction().x() << ", "
87  << tsfi.direction().y() << ", " << tsfi.direction().z() << ")"
88  << std::endl;
89  sl << " delta pathlength = " << tsfi.pathlength() << std::endl;
90  sl.precision(ss);
91  return sl;
92 }

◆ operator<<() [101/115]

std::ostream & Trk::operator<< ( std::ostream &  sl,
const TransportJacobian jac 
)

Definition at line 112 of file TransportJacobian.cxx.

114 {
115  sl << "|-------------|-------------|-------------|-------------|-------------"
116  "|-------------|"
117  << std::endl;
118  sl << "| Jacobian(A) | Old /dL1 | /dL2 | /dPhi | /dThe "
119  "| /dCM |"
120  << std::endl;
121  sl << "|-------------|-------------|-------------|-------------|-------------"
122  "|-------------|"
123  << std::endl;
124 
125  sl << "| New dL1 / |" << std::setw(12) << std::setprecision(5) << J(0, 0)
126  << " |" << std::setw(12) << std::setprecision(5) << J(0, 1) << " |"
127  << std::setw(12) << std::setprecision(5) << J(0, 2) << " |"
128  << std::setw(12) << std::setprecision(5) << J(0, 3) << " |"
129  << std::setw(12) << std::setprecision(5) << J(0, 4) << " |" << std::endl;
130  sl << "| dL2 / |" << std::setw(12) << std::setprecision(5) << J(1, 0)
131  << " |" << std::setw(12) << std::setprecision(5) << J(1, 1) << " |"
132  << std::setw(12) << std::setprecision(5) << J(1, 2) << " |"
133  << std::setw(12) << std::setprecision(5) << J(1, 3) << " |"
134  << std::setw(12) << std::setprecision(5) << J(1, 4) << " |" << std::endl;
135  sl << "| dPhi/ |" << std::setw(12) << std::setprecision(5) << J(2, 0)
136  << " |" << std::setw(12) << std::setprecision(5) << J(2, 1) << " |"
137  << std::setw(12) << std::setprecision(5) << J(2, 2) << " |"
138  << std::setw(12) << std::setprecision(5) << J(2, 3) << " |"
139  << std::setw(12) << std::setprecision(5) << J(2, 4) << " |" << std::endl;
140  sl << "| dThe/ |" << std::setw(12) << std::setprecision(5) << J(3, 0)
141  << " |" << std::setw(12) << std::setprecision(5) << J(3, 1) << " |"
142  << std::setw(12) << std::setprecision(5) << J(3, 2) << " |"
143  << std::setw(12) << std::setprecision(5) << J(3, 3) << " |"
144  << std::setw(12) << std::setprecision(5) << J(3, 4) << " |" << std::endl;
145  sl << "| dCM / |"
146 
147  << std::setw(12) << std::setprecision(5) << J(4, 0) << " |"
148  << std::setw(12) << std::setprecision(5) << J(4, 1) << " |"
149  << std::setw(12) << std::setprecision(5) << J(4, 2) << " |"
150  << std::setw(12) << std::setprecision(5) << J(4, 3) << " |"
151  << std::setw(12) << std::setprecision(5) << J(4, 4) << " |" << std::endl;
152  sl << "|-------------|-------------|-------------|-------------|-------------"
153  "|-------------|"
154  << std::endl;
155  return sl;
156 }

◆ operator<<() [102/115]

std::ostream& Trk::operator<< ( std::ostream &  sl,
const Trk::LocalParameters lp 
)

Definition at line 120 of file LocalParameters.cxx.

121 {
122  std::streamsize ss = sl.precision();
123  sl << std::setiosflags(std::ios::fixed)<< std::setprecision(3);
124  sl << "Trk::LocalParameters " <<": (";
125  for (int ipar=0; ipar<lp.dimension(); ++ipar)
126  { sl << lp(ipar);
127  if (ipar+1 < lp.dimension()) { sl << ", ";
128  } else { sl << ") - key: "<< lp.m_parameterkey << "(";}
129  }
130 
131  for (int itag = 0, ipos=1; itag<5; ++itag, ipos*=2)
132  { bool bit = (lp.m_parameterkey & ipos);
133  if (bit) { sl << "1";
134  } else { sl << "0";
135  }
136  }
137  sl << ")";
138  sl.precision (ss); sl<<std::resetiosflags(std::ios::fixed);
139 
140 
141  return sl;
142 }

◆ operator<<() [103/115]

std::ostream& Trk::operator<< ( std::ostream &  sl,
const Trk::MeasurementBase mbase 
)
inline

Overload of << operator for std::ostream for debug output.

Definition at line 123 of file MeasurementBase.h.

125 {
126  return mbase.dump(sl);
127 }

◆ operator<<() [104/115]

template<int DIM, class T >
std::ostream& Trk::operator<< ( std::ostream &  sl,
const Trk::ParametersBase< DIM, T > &  tp 
)

◆ operator<<() [105/115]

std::ostream & Trk::operator<< ( std::ostream &  sl,
const Trk::ScatteringAngles saos 
)

Overload of << operator for std::ostream for debug output.

Definition at line 22 of file ScatteringAngles.cxx.

24 {
25  sl << "ScatteringAngles: " << std::endl;
26  sl << "\t deltaPhi : " << saos.deltaPhi() << std::endl;
27  sl << "\t deltaTheta : " << saos.deltaTheta() << std::endl;
28  sl << "\t sigmaDeltaPhi : " << saos.sigmaDeltaPhi() << std::endl;
29  sl << "\t sigmaDeltaTheta : " << saos.sigmaDeltaTheta() << std::endl;
30  return sl;
31 }

◆ operator<<() [106/115]

std::ostream & Trk::operator<< ( std::ostream &  sl,
const Vertex sf 
)

Definition at line 65 of file Vertex.cxx.

◆ operator<<() [107/115]

std::ostream & Trk::operator<< ( std::ostream &  sl,
const VertexPositions sf 
)

Definition at line 88 of file VertexPositions.cxx.

91  : VertexPositions is not able to return a valid position "
92  << " as a const object: need to go from Update to Use mode. "

◆ operator<<() [108/115]

std::ostream & Trk::operator<< ( std::ostream &  sl,
const Volume vol 
)

Definition at line 122 of file Volume.cxx.

124 {
125  sl << "Trk::Volume with VolumeBounds :" << vol.volumeBounds() << std::endl;
126  return sl;
127 }

◆ operator<<() [109/115]

std::ostream & Trk::operator<< ( std::ostream &  sl,
const VolumeBounds vb 
)

Definition at line 20 of file VolumeBounds.cxx.

22 {
23  return vb.dump(sl);
24 }

◆ operator<<() [110/115]

std::ostream & Trk::operator<< ( std::ostream &  sl,
const VxCandidate sf 
)

Definition at line 135 of file VxCandidate.cxx.

◆ operator<<() [111/115]

std::ostream & Trk::operator<< ( std::ostream &  sl,
const VxClusteringTable sf 
)

Definition at line 73 of file VxClusteringTable.cxx.

73  {
74 

◆ operator<<() [112/115]

std::ostream & Trk::operator<< ( std::ostream &  sl,
const VxTrackAtVertex sf 
)

Definition at line 509 of file VxTrackAtVertex.cxx.

◆ operator<<() [113/115]

std::ostream & Trk::operator<< ( std::ostream &  sl,
GlueVolumesDescriptor mprop 
)

Definition at line 76 of file GlueVolumesDescriptor.cxx.

77  {
78  sl << "Trk::GlueVolumesDescriptor: " << std::endl;
79  const std::vector<Trk::BoundarySurfaceFace>& glueFaceVector = gvd.glueFaces();
80  sl << " has Tracking Volumes registered for : " << glueFaceVector.size()
81  << " Volume faces." << std::endl;
82  std::vector<Trk::BoundarySurfaceFace>::const_iterator glueFaceIter =
83  glueFaceVector.begin();
84  std::vector<Trk::BoundarySurfaceFace>::const_iterator glueFaceIterEnd =
85  glueFaceVector.end();
86  // loop over the faces
87  for (; glueFaceIter != glueFaceIterEnd; ++glueFaceIter) {
88  const std::vector<Trk::TrackingVolume*>& glueVolumesVector =
89  gvd.glueVolumes(*glueFaceIter);
90  auto glueVolumeIter = glueVolumesVector.begin();
91  auto glueVolumeIterEnd = glueVolumesVector.end();
92  // loop over the TrackingVolumes
93  sl << " -----> Processing Face: " << int(*glueFaceIter) << " - has ";
94  sl << glueVolumesVector.size()
95  << " TrackingVolumes marked as 'GlueVolumes' " << std::endl;
96  for (; glueVolumeIter != glueVolumeIterEnd; ++glueVolumeIter)
97  sl << " - TrackingVolume: " << (*glueVolumeIter)->volumeName()
98  << std::endl;
99  }
100  return sl;
101 }

◆ operator<<() [114/115]

std::ostream & Trk::operator<< ( std::ostream &  stream,
const PrepRawData prd 
)

Definition at line 136 of file PrepRawData.cxx.

138 {
139  return prd.dump(stream);
140 }

◆ operator<<() [115/115]

std::ostream & Trk::operator<< ( std::ostream &  stream,
const TrackRoad tr 
)

Dump the road into a standard output stream.

Definition at line 47 of file TrackRoad.cxx.

49 {
50  return tr.dump(stream);
51 }

◆ operator<=()

bool Trk::operator<= ( const LayerIndex one,
const LayerIndex two 
)

Definition at line 17 of file LayerIndex.cxx.

19 {
20  return (one.value() <= two.value());
21 }

◆ operator>()

bool Trk::operator> ( const LayerIndex one,
const LayerIndex two 
)

Definition at line 24 of file LayerIndex.cxx.

25 {
26  return (one.value() > two.value());
27 }

◆ operator>=()

bool Trk::operator>= ( const LayerIndex one,
const LayerIndex two 
)

Definition at line 30 of file LayerIndex.cxx.

31 {
32  return (one.value() >= two.value());
33 }

◆ ParaMin()

void Trk::ParaMin ( double  b,
double  c,
double  d,
double  e,
double  f,
double &  xmin,
double &  ymin 
)

Definition at line 282 of file Tracking/TrkVertexFitter/TrkVKalVrtCore/src/Utilities.cxx.

284 {
285  ymin = (f*b-2.*c*d)/(4.*c*e - f*f);
286  if( std::abs(f) > std::abs(c) ) { xmin = - (2.*e*ymin + d)/f;}
287  else { xmin = - (f*ymin+b)/(2.*c);}
288  }

◆ processCascade() [1/3]

int Trk::processCascade ( CascadeEvent cascadeEvent_)

Definition at line 244 of file CFitCascade.cxx.

245 {
246  int translateToFittedPos(CascadeEvent &, double Step=1.);
247  int restorePreviousPos(CascadeEvent &, std::vector<VKVertex> & );
248 
249  VKVertex * vk;
250  long int Iter, IERR, iv, i;
251 //============================================================================================
252 //
253 // First without pointing to get initial estimations and resolve mass constraints
254 // This initial step is needed to get initial estimation for "passing near constraint
255 //
256  for(iv=0; iv<cascadeEvent_.cascadeNV; iv++){
257  vk = cascadeEvent_.cascadeVertexList[iv].get();
258  IERR = fitVertexCascade( vk, 0); if(IERR)return IERR; //fit
259  IERR = setVTrackMass(vk); if(IERR)return IERR; //mass of combined particle
260  }
261  IERR = translateToFittedPos(cascadeEvent_); if(IERR)return IERR;
262 //
263 // Now standard fit without pointing in cascade but WITH pointing to PV if present
264 //
265 
266  double Chi2Old=0.,Chi2Cur=0.;
267  for(Iter=0; Iter<100; Iter++){
268  Chi2Cur=0.;
269  for(iv=0; iv<cascadeEvent_.cascadeNV; iv++){
270  vk = cascadeEvent_.cascadeVertexList[iv].get();
271 //
272 //Calculate derivatives for "passing near" cnst. Initial vertex position is used for derivatives.
273 //Results are saved in ForVRTClose structure
274  if(cascadeEvent_.nearPrmVertex && iv==(cascadeEvent_.cascadeNV-1)){ //only last vertex in cascade may have it
275  double dparst[6]={vk->refIterV[0]+vk->iniV[0], vk->refIterV[1]+vk->iniV[1], vk->refIterV[2]+vk->iniV[2],
276  vk->fitMom[0], vk->fitMom[1], vk->fitMom[2] };
277  vk->FVC.Charge=getVertexCharge(vk);
278  if(vk->FVC.Charge!=0)vk->FVC.Charge=std::copysign(1,vk->FVC.Charge);
279  vpderiv(true, vk->FVC.Charge, dparst, vk->fitCovXYZMom, vk->FVC.vrt, vk->FVC.covvrt,
280  vk->FVC.cvder, vk->FVC.ywgt, vk->FVC.rv0, (vk->vk_fitterControl).get());
281  }
282  IERR = fitVertexCascade( vk, 0); if(IERR)return IERR; //fit
283  IERR = setVTrackMass(vk); if(IERR)return IERR; //mass of combined particle
284  Chi2Cur += vk->Chi2;
285 //std::cout<<iv<<"---Chi2="<<vk->Chi2<<", "<<vk->refIterV[0]+vk->fitV[0]<<", "<<vk->refIterV[1]+vk->fitV[1]<<", "<<vk->refIterV[2]+vk->fitV[2]<<'\n';
286  }
287  if( Chi2Cur-Chi2Old > 1. && Iter){ IERR = translateToFittedPos(cascadeEvent_,0.8);} //step limitation is case of divergence
288  else { IERR = translateToFittedPos(cascadeEvent_,1.0);} if(IERR)return IERR;
289 
290 //std::cout<<" free iter="<<Iter<<", "<<Chi2Cur<<", "<<Chi2Old-Chi2Cur<<"; "<<cascadeEvent_.cascadeNV<<'\n';
291  if(std::abs(Chi2Cur-Chi2Old)<0.01)break; //stable cascade position
292  if(Iter>10 && (Chi2Cur-Chi2Old)>0.)break; //oscillations. Stop preliminary fit
293  Chi2Old=Chi2Cur;
294  if(Chi2Cur>1.e6 && Iter>0) return -1; //Too bad iteration. Drop fit
295  }
296 // if(Chi2Cur>3000.) return -1; // Initial solution is too bad!!!
297 //-------------------------------- Check constraints status
298  double cnstRemnants=cascadeCnstRemnants(cascadeEvent_);
299  if( cnstRemnants > 10000.e0) return -2; /* Constraints are not resolved. Stop fit */
300  if(cnstRemnants==0. && Chi2Cur>3000. ) return -1; // Initial solution is too bad!!!
301  if( Chi2Cur>50000.) return -1; // Initial solution is too bad!!!
302 //-------------------------------------------------------------------------
303 // Attach pointing constraint to affected vertices and create working arrays
304 // of correct size
305 //
306  for(iv=0; iv<cascadeEvent_.cascadeNV; iv++){
307  vk = cascadeEvent_.cascadeVertexList[iv].get();
308  if(vk->nextCascadeVrt){
309  long int NTRK = vk->TrackList.size();
310  vk->ConstraintList.emplace_back(new VKPointConstraint( NTRK, vk->nextCascadeVrt->refIterV , vk, false));
311  }
312  }
313  long int fullNPar = getCascadeNPar(cascadeEvent_);
314  double * fullMatrix = new double[fullNPar*fullNPar];
315  double * iniCovMatrix = new double[fullNPar*fullNPar];for(int ss=0; ss<fullNPar*fullNPar; ss++) iniCovMatrix[ss]=0.;
316  double * fullLSide = new double[fullNPar];
317  double * tmpLSide = new double[fullNPar];
318  //std::unique_ptr<double[]> tmpLSide = std::unique_ptr<double[]>(new double[fullNPar])
319  std::vector<VKVertex> listVCopy(cascadeEvent_.cascadeNV);
320 //-------------------------------------------------------
321 // Now fit with pointing constraint
322 //
323  cascadeEvent_.matrixPnt.resize(cascadeEvent_.cascadeNV);
324  long int NParCur, NStart;
325  int getBack=0; // counter of oscillations
326  int fullSTOP=0; // immediate stop iteration flag
327  double Chi2Diff=0.;
328 
329  int NFitIterationMax=100; // Maximal amount of iterations
330  int badStepCountMax=5; // Maximal amount of bad steps
331 
332  cnstRemnants=100000.; double cnstProgr=1.; double minCnstRemnants=100000.;
333  int badStepCount=0;
334 
335  for(Iter=0; Iter<=NFitIterationMax; Iter++){
336  Chi2Cur=0.;
337  NStart=0;
338  for( iv=0; iv<fullNPar*fullNPar; iv++)fullMatrix[iv]=0.; // zero full matrix
339  for( iv=0; iv<cascadeEvent_.cascadeNV; iv++){
340  vk = cascadeEvent_.cascadeVertexList[iv].get();
341 //
342 //Calculate derivatives for "passing near" cnst. Initial vertex position is used for derivatives.
343 //Results are saved in ForVRTClose structure
344  if(cascadeEvent_.nearPrmVertex && iv==(cascadeEvent_.cascadeNV-1)){ //only last vertex in cascade may have it
345  double dparst[6]={vk->refIterV[0]+vk->iniV[0], vk->refIterV[1]+vk->iniV[1], vk->refIterV[2]+vk->iniV[2],
346  vk->fitMom[0], vk->fitMom[1], vk->fitMom[2] };
347  vk->FVC.Charge=getVertexCharge(vk);
348  if(vk->FVC.Charge!=0)vk->FVC.Charge=std::copysign(1,vk->FVC.Charge);
349  vpderiv(vk->passWithTrkCov, vk->FVC.Charge, dparst, vk->fitCovXYZMom,
350  vk->FVC.vrt, vk->FVC.covvrt, vk->FVC.cvder, vk->FVC.ywgt, vk->FVC.rv0, (vk->vk_fitterControl).get());
351  }
352  if (vk->vk_fitterControl->vk_forcft.irob != 0) {robtest(vk, 0, Iter);} // ROBUSTIFICATION new data structure
353  if (vk->vk_fitterControl->vk_forcft.irob != 0) {robtest(vk, 1, Iter);} // ROBUSTIFICATION new data structure
354  IERR = fitVertexCascade( vk, 1 ); if(IERR) break; //with passNear for last vertex in cascade if needed
355  IERR = setVTrackMass(vk); if(IERR) break; //mass of combined particle
356 //
357 //Get full constraint matrix and left side for vertex
358  cascadeEvent_.matrixPnt[iv]=NStart;
359  NParCur = FullMCNSTfill( vk, vk->ader, tmpLSide);
360 //
361 //Move them to cascade full matrix and left side
362  copyFullMtx( vk->ader, NParCur, NParCur, fullMatrix, NStart, fullNPar);
363 //
364 //Copy error matrix for left side vector (measured part T,U1,..,Un - see Billoir)
365 // to correct place in iniCovMatrix matrix. Only at last step and without constraint part!!! CHECK IT!!!
366  if(Iter==NFitIterationMax || fullSTOP || badStepCount>=badStepCountMax)
367  copyFullMtx( vk->ader, 3+3*vk->TrackList.size(), NParCur, iniCovMatrix, NStart, fullNPar);
368 //
369 // Fill left part of the system
370  for(i=0; i<NParCur; i++) fullLSide[i+NStart] = tmpLSide[i];
371  NStart += NParCur;
372  Chi2Cur += vk->Chi2;
373 //std::cout<<iv<<"--------Chi2="<<vk->Chi2<<", "<<cascadeEvent_.nearPrmVertex<<" nstart="<<NStart<<'\n';
374  }
375  if( (Chi2Cur>1.e8 && Iter>0) || IERR){
376  delete[] fullMatrix; delete[] fullLSide; delete[] tmpLSide; delete[] iniCovMatrix;
377  if(Chi2Cur>1.e8) return -1;
378  return IERR;
379  }
380 //
381 //--- Attempt to dump oscillations by returning to good position
382  cnstProgr=cascadeCnstRemnants(cascadeEvent_)/cnstRemnants;
383  if( Iter>3 && cnstProgr>4. && getBack<5 && fullSTOP==0 ) { //------ Bad previous step discovered.
384  //std::cout<<" oscillation discovered="<<Iter<<" progr="<<cnstProgr<<'\n';
385  IERR=restorePreviousPos(cascadeEvent_, listVCopy );
386  if(IERR){ delete[] fullMatrix; delete[] fullLSide; delete[] tmpLSide; delete[] iniCovMatrix; return IERR;}
387  cnstRemnants=100000.; Chi2Old+=10000; // to skip restoring on next iteration
388  if(Iter==NFitIterationMax )Iter-=2; // to give time to converge after this operation
389  if(Iter==NFitIterationMax-1)Iter-=1; // to give time to converge after this operation
390  getBack++; badStepCount=0;
391  continue;
392  } //--------- Make some copy of vertices for safety
393  cnstRemnants*=cnstProgr; cnstRemnants += 1.e-6*cascadeEvent_.getAccuracyConstraint(); //VK Protection against 0
394  if(cnstRemnants<minCnstRemnants)minCnstRemnants=cnstRemnants;
395  if(minCnstRemnants==cnstRemnants){ //--------- Make copy of vertices for safety at best point
396  for( iv=0; iv<cascadeEvent_.cascadeNV; iv++){
397  listVCopy.at(iv)=*(cascadeEvent_.cascadeVertexList[iv]); // vertex list copy
398  }
399  }
400 //--------------------------------------------------------------------------
401 //for( iv=0; iv<fullNPar; iv++)std::cout<<fullLSide[iv]<<", ";std::cout<<'\n';
402 // std::cout<<fullLSide[3+3*2]<<", "<<fullLSide[3+3*2+1]<<", "<<
403 // fullLSide[20]<<", "<<fullLSide[21]<<", "<<fullLSide[22]<<'\n';
404 //---------------------------------------------------------------------------
405 //
406 // Add cross vertices derivatives
407  addCrossVertexDeriv(cascadeEvent_, fullMatrix, fullNPar, cascadeEvent_.matrixPnt);
408 //
409 // Add pseudotrack momentum fix
410 //
411  int tstRet=fixPseudoTrackPt(fullNPar, fullMatrix, fullLSide, cascadeEvent_ );
412  if( tstRet ){ delete[] fullMatrix; delete[] fullLSide; delete[] tmpLSide; delete[] iniCovMatrix; return -1; }
413 //
414 // Resolve full cascade with constraints system
415 //
416  if( Iter<NFitIterationMax && fullSTOP==0 && badStepCount<badStepCountMax){ //Normal step. Solution of system only
417  IERR = vkMSolve(fullMatrix, fullLSide, fullNPar);
418  if(IERR){ delete[] fullMatrix; delete[] fullLSide; delete[] tmpLSide; delete[] iniCovMatrix;return IERR;}
419  }else{ //Last step. Solution+full error matrix
420  cascadeEvent_.fullCovMatrix.reset( new double[fullNPar*fullNPar] ); //Create fresh matrix
421  IERR = vkMSolve(fullMatrix, fullLSide, fullNPar, cascadeEvent_.fullCovMatrix.get());
422  if(IERR){ delete[] fullMatrix; delete[] fullLSide; delete[] tmpLSide; delete[] iniCovMatrix;
423  cascadeEvent_.fullCovMatrix.reset(); return IERR;}
424 //std::cout<<"fulcov="; for(int tt=0; tt<fullNPar; tt++)std::cout<<cascadeEvent_.fullCovMatrix[tt*fullNPar+tt]<<", "; std::cout<<'\n';
425  std::unique_ptr<double[]> newCov(new double[fullNPar*fullNPar]); //Check via error transfer from left side (measured values). Gives exactly the same errors - correct!!!
426  getNewCov(iniCovMatrix, cascadeEvent_.fullCovMatrix.get(), newCov.get(), fullNPar);
427  cascadeEvent_.fullCovMatrix=std::move(newCov); //Unique_ptr will handle deletion automatically
428  }
429 //
430 // Set fitted parameters
431 //
432  setFittedParameters( fullLSide, cascadeEvent_.matrixPnt, cascadeEvent_ );
433 //
434 // Update pointing constraints and calculate real cascade Chi2
435 //
436  double Chi2Full=0.;
437  for(iv=0; iv<cascadeEvent_.cascadeNV; iv++){
438  vk = cascadeEvent_.cascadeVertexList[iv].get();
439  for(int it=0; it<(int)vk->TrackList.size(); it++){
440  VKTrack * trk=vk->TrackList[it].get(); if(trk->Id >= 0)Chi2Full+=trk->Chi2; // real track in cascade
441  }
442  if(cascadeEvent_.nearPrmVertex && iv==(cascadeEvent_.cascadeNV-1)){ //only last vertex in cascade may have it
443  double signift = cfVrtDstSig( vk, vk->passWithTrkCov);
444  Chi2Full += signift*signift;
445  }
446  }
447  Chi2Diff=Chi2Old-Chi2Full;
448  if(Chi2Diff<0. && cnstProgr>0.99) badStepCount++;
449  if(cnstRemnants==minCnstRemnants || cnstProgr<0.9) badStepCount=0;
450 //std::cout.precision(5); std::cout<<" iter="<<Iter<<" separ="<<Chi2Cur<<" full="<<Chi2Full<<" iter diff="<<Chi2Full/Chi2Cur<<
451 //" cnstrem="<<cnstRemnants<<" progr="<<cnstProgr<<" lim="<<cnstRemnants/minCnstRemnants<<" bstep="<<badStepCount<<'\n';
452  bool badFullStep=false;
453  if( Iter>5 && Chi2Full/Chi2Cur>1.2) badFullStep=true; //VK 16.04.2013 New strategy
454  if( Iter==NFitIterationMax || fullSTOP ) badFullStep=false; //VK 16.04.2013 No step limitation on last iteration
455 //
456 // Prepare next iteration
457 //
458  if(badFullStep) IERR = translateToFittedPos(cascadeEvent_,0.3);
459  else IERR = translateToFittedPos(cascadeEvent_);
460  if(IERR){ delete[] fullMatrix; delete[] fullLSide; delete[] tmpLSide; delete[] iniCovMatrix; return IERR;}
461 
462  for(iv=0; iv<cascadeEvent_.cascadeNV; iv++){
463  vk = cascadeEvent_.cascadeVertexList[iv].get();
464  if(vk->nextCascadeVrt){
465  int pntCnst = vk->ConstraintList.size() - 1; // pointing constraint is always last in the list
466  VKPointConstraint * pcnst = dynamic_cast<VKPointConstraint*>(vk->ConstraintList[pntCnst].get());
467  pcnst->setTargetVertex(vk->nextCascadeVrt->refIterV);
468  }
469  }
470 //
471 
472  if(fullSTOP) break;
473  if(cnstRemnants>1.e4&&Iter>10) //no way to fulfil constraints
474  { delete[] fullMatrix; delete[] fullLSide; delete[] tmpLSide; delete[] iniCovMatrix; return -2;}
475 //
476  if( Iter<NFitIterationMax && Iter>2){
477  if(std::abs(Chi2Diff)<0.001 && cnstRemnants/minCnstRemnants<10.){ //stable cascade position before end of cycling
478  NFitIterationMax=Iter+1; //then makes additional iteration to get the full error matrix
479  }
480  if(cnstRemnants<cascadeEvent_.getAccuracyConstraint()) fullSTOP++; //Good constraint accuracy is reached
481  }
482  if ( Iter>NFitIterationMax+50 ) break; //Protection - too many iterations due to whatever reason.
483  if(badStepCount>badStepCountMax)break; //Divergence discovered (in both cases the full error matrix is ready!!!)
484 
485  Chi2Old=Chi2Full;
486  }
487 
488  //if(tmpc0)std::cout<<(*tmpc0)<<'\n';
489  //if(tmpc1)std::cout<<(*tmpc1)<<'\n';
490 
491  delete[] fullMatrix; delete[] fullLSide; delete[] tmpLSide; delete[] iniCovMatrix;
492 //-------------------------------- Check constraints status
493  cnstRemnants=cascadeCnstRemnants(cascadeEvent_);
494 //std::cout<<"fullcnst="<<cnstRemnants<<" lim="<<cnstRemnants/minCnstRemnants<<'\n';
495  if( cnstRemnants > 1.e0) return -2; /* Constraints are not resolved. Stop fit */
496  return 0;
497 }

◆ processCascade() [2/3]

int Trk::processCascade ( CascadeEvent cascadeEvent_,
const double *  primVrt,
const double *  primVrtCov 
)

Definition at line 531 of file CFitCascade.cxx.

532 {
533  cascadeEvent_.nearPrmVertex=1; //setting up additional Chi2 term
534  VKVertex * vk = cascadeEvent_.cascadeVertexList[cascadeEvent_.cascadeNV-1].get(); //Main vertex
535  vk->passNearVertex =true; // For fitting machinery
536  vk->passWithTrkCov =true; // For fitting machinery
537  std::copy(primVrt, primVrt+3, vk->FVC.vrt);
538  std::copy(primVrtCov, primVrtCov+6, vk->FVC.covvrt);
539  return processCascade(cascadeEvent_);
540 }

◆ processCascade() [3/3]

int Trk::processCascade ( CascadeEvent cascadeEvent_,
double *  primVrt 
)

Definition at line 545 of file CFitCascade.cxx.

546 {
547  VKVertex * vk = cascadeEvent_.cascadeVertexList[cascadeEvent_.cascadeNV-1].get(); //Main vertex
548  long int NTRK = vk->TrackList.size();
549  vk->ConstraintList.emplace_back(new VKPointConstraint( NTRK, primVrt, vk, false));
550  cascadeEvent_.nearPrmVertex=0; //explicitly turn off additional Chi2 term
551  return processCascade(cascadeEvent_);
552 }

◆ processCascadePV()

int Trk::processCascadePV ( CascadeEvent cascadeEvent_,
const double *  primVrt,
const double *  primVrtCov 
)

Definition at line 503 of file CFitCascade.cxx.

504 {
505  double aermd[6],tmpd[6]; // temporary arrays
506  VKVertex * vk = cascadeEvent_.cascadeVertexList[cascadeEvent_.cascadeNV-1].get(); //Main vertex
507 
508  vk->vk_fitterControl->vk_forcft.vrt[0] = primVrt[0];
509  vk->vk_fitterControl->vk_forcft.vrt[1] = primVrt[1];
510  vk->vk_fitterControl->vk_forcft.vrt[2] = primVrt[2];
511  vk->vk_fitterControl->vk_forcft.covvrt[0] = primVrtCov[0];
512  vk->vk_fitterControl->vk_forcft.covvrt[1] = primVrtCov[1];
513  vk->vk_fitterControl->vk_forcft.covvrt[2] = primVrtCov[2];
514  vk->vk_fitterControl->vk_forcft.covvrt[3] = primVrtCov[3];
515  vk->vk_fitterControl->vk_forcft.covvrt[4] = primVrtCov[4];
516  vk->vk_fitterControl->vk_forcft.covvrt[5] = primVrtCov[5];
517 
518  vk->useApriorVertex = 1;
519  cfdcopy(vk->vk_fitterControl->vk_forcft.covvrt, tmpd, 6);
520  int IERR=cfdinv(tmpd, aermd, -3); if (IERR) { IERR = -4; return IERR; }
521  cfdcopy(vk->vk_fitterControl->vk_forcft.vrt, vk->apriorV, 3);
522  cfdcopy( aermd, vk->apriorVWGT,6);
523 
524  return processCascade(cascadeEvent_);
525 }

◆ processCascadeScale()

int Trk::processCascadeScale ( CascadeEvent cascadeEvent_)

Definition at line 129 of file CFitCascadeScale.cxx.

130 {
131  VKVertex * vk=nullptr;
132  long int Iter, IERR, iv;
133  cascadeEvent_.setSCALE(1.); // Safety
134 //============================================================================================
135 //
136 // First without pointing to get initial estimations and resolve mass constraints
137 // This initial step is needed to get initial estimation for "passing near" constraints
138 //
139  double iv_dstToVrt=0., sum_dstToVrt=0., old_dstToVrt;
140  for(iv=0; iv<cascadeEvent_.cascadeNV; iv++){
141  vk = cascadeEvent_.cascadeVertexList[iv].get();
142  vk->passNearVertex=false;
143  vk->passWithTrkCov=false;
144  IERR = fitVertexCascadeScale( vk, iv_dstToVrt ); if(IERR)return IERR; //fit
145  IERR = setVTrackMass(vk); if(IERR)return IERR; //mass of combined particle
146  }
147  IERR = translateToFittedPos(cascadeEvent_); if(IERR)return IERR;
148 
149 //
150 // Now fit "close to vertex" pointing and cooling
151 //
152  for(iv=0; iv<cascadeEvent_.cascadeNV-1; iv++) cascadeEvent_.cascadeVertexList[iv]->passNearVertex=true;
153  if(cascadeEvent_.nearPrmVertex){ // Primary vertex if needed
154  cascadeEvent_.cascadeVertexList[cascadeEvent_.cascadeNV-1]->passNearVertex=true;
155  cascadeEvent_.cascadeVertexList[cascadeEvent_.cascadeNV-1]->passWithTrkCov=true;
156  }
157 //
158  double Chi2Old=0.,Chi2Cur=0;
159  double Scale=2.;
160  double limDstToVrt=0.001;
161  old_dstToVrt=100000.;
162  for(Iter=0; Iter<20; Iter++){
163 
164  //*******************************************************************************
165  for(int Stabil=0; Stabil<2; Stabil++){ // Stabilization cycling for given SCALE
166  Chi2Cur=0.;
167  sum_dstToVrt=0.;
168  for(iv=0; iv<cascadeEvent_.cascadeNV; iv++){
169  vk = cascadeEvent_.cascadeVertexList[iv].get();
170 //
171 //Calculate derivatives for "passing near" cnst. Initial vertex position is used for derivatives.
172  if(vk->passNearVertex){
173  double dparst[6]={vk->refIterV[0]+vk->iniV[0], vk->refIterV[1]+vk->iniV[1], vk->refIterV[2]+vk->iniV[2],
174  vk->fitMom[0], vk->fitMom[1], vk->fitMom[2] };
175  vpderiv(vk->passWithTrkCov, vk->FVC.Charge, dparst, vk->fitCovXYZMom, vk->FVC.vrt, vk->FVC.covvrt,
176  vk->FVC.cvder, vk->FVC.ywgt, vk->FVC.rv0, (vk->vk_fitterControl).get());
177  }
178  IERR = fitVertexCascadeScale( vk, iv_dstToVrt); if(IERR)return IERR; //fit
179  IERR = setVTrackMass(vk); if(IERR)return IERR; //mass of combined particle
180  Chi2Cur += vk->Chi2;
181  sum_dstToVrt += iv_dstToVrt;
182  }
183  IERR = translateToFittedPos(cascadeEvent_,1.0); if(IERR)return IERR;
184  //if(Stabil>0 && sum_dstToVrt<old_dstToVrt) break;
185  }
186  //********************************************************************************
187  if(Iter>5 && Chi2Cur>1.e4) return -1; //Too bad iteration. Drop fit
188  if(cascadeEvent_.getSCALE() < 1.e-6)Scale=1.; //Enough tightening
189  if(sum_dstToVrt<old_dstToVrt){
190  rescaleVrtErrForPointing( Scale, cascadeEvent_ ); // Tighten pointing accuracy
191  if(old_dstToVrt/3. < sum_dstToVrt) { old_dstToVrt=sum_dstToVrt;} else {old_dstToVrt/=3.;}
192  }
193 //std::cout<<"Cool iter="<<Iter<<" Scale="<<cascadeEvent_.getSCALE()<<", "<<Chi2Cur<<" NV="<<cascadeEvent_.cascadeNV<<
194 // " dst="<<sum_dstToVrt<<'\n';
195  if(std::abs(Chi2Cur-Chi2Old)<0.01 && Iter>5 && sum_dstToVrt<limDstToVrt*(cascadeEvent_.cascadeNV-1) )break; //stable cascade position
196  Chi2Old=Chi2Cur;
197  }
198  double cnstRemnants=0. ;
199  for(iv=0; iv<cascadeEvent_.cascadeNV; iv++){
200  vk = cascadeEvent_.cascadeVertexList[iv].get();
201  for(int ii=0; ii<(int)vk->ConstraintList.size();ii++){
202  for(int ic=0; ic<(int)vk->ConstraintList[ii]->NCDim; ic++){
203  cnstRemnants += std::abs( vk->ConstraintList[ii]->aa[ic] );
204  } }
205  }
206  if( cnstRemnants > 1.e0) return -2; /* Constraints are not resolved. Stop fit */
207 std::cout<<"================================================="<<sum_dstToVrt<<'\n';
208 // if(sum_dstToVrt>limDstToVrt*(cascadeEvent_.cascadeNV-1) )return -2; //Pointing is not resolved
209 
210  long int fullNPar = getCascadeNPar(cascadeEvent_);
211  cascadeEvent_.fullCovMatrix.reset( new double[fullNPar*fullNPar] );
212  for(int im=0; im<fullNPar*fullNPar; im++)cascadeEvent_.fullCovMatrix[im]=0.;
213  for(int im=0; im<fullNPar; im++)cascadeEvent_.fullCovMatrix[im*fullNPar + im]=1.;
214  int NStart=0;
215  cascadeEvent_.matrixPnt.resize(cascadeEvent_.cascadeNV);
216  auto tmpLSide = std::make_unique<double[]>(fullNPar);
217  for( iv=0; iv<cascadeEvent_.cascadeNV; iv++){
218  cascadeEvent_.matrixPnt[iv]=NStart;
219  NStart += FullMCNSTfill( vk, vk->ader, tmpLSide.get());
220  }
221 
222  return 0;
223 }

◆ propJacobian()

ATH_ALWAYS_INLINE void Trk::propJacobian ( double *ATH_RESTRICT  P,
const double *ATH_RESTRICT  H0,
const double *ATH_RESTRICT  H1,
const double *ATH_RESTRICT  H2,
const double *ATH_RESTRICT  A,
const double *ATH_RESTRICT  A0,
const double *ATH_RESTRICT  A3,
const double *ATH_RESTRICT  A4,
const double *ATH_RESTRICT  A6,
const double  S3 
)

This provides an inline helper function for updating the jacobian during Runge-Kutta propagation.

Used in several clients, put in here to avoid code duplication Based on the existing implementation, but using vectorisation to improve speed by approximately 30%.

The mathematics behind this procedure are documented in JINST 4 (2009) P04016 also found as http://cds.cern.ch/record/1114177 / https://inspirehep.net/literature/826186

In this implementation, we preserve the conventions of client code, hence the use of array pointers rather than std constructs. P is a 42-element array containing global coordinates, direction, inverse momentum and Jacobian of transformation. Its elements are updated in-place by this method. H0, H1, and H3 represent the field at the three points eachj is a 3-element array A represents the direction vector before propagation It is a 3-vector A0, A3, A4, and A6 represent cross products of the direction with the field across the 3 points. Each is a 3-vector. S3 is a step length

now update the parameter array in the slots representing the Jacobian

Definition at line 41 of file JacobianHelper.h.

51 {
52  using namespace CxxUtils;
54 
55  vec2 d23A_0{ P[24], P[31] };
56  vec2 d23A_1{ P[25], P[32] };
57  vec2 d23A_2{ P[26], P[33] };
58  const double d4A_0 = P[38];
59  const double d4A_1 = P[39];
60  const double d4A_2 = P[40];
61  // H
62  const double H0_0 = H0[0];
63  const double H0_1 = H0[1];
64  const double H0_2 = H0[2];
65  const double H1_0 = H1[0];
66  const double H1_1 = H1[1];
67  const double H1_2 = H1[2];
68  const double H2_0 = H2[0];
69  const double H2_1 = H2[1];
70  const double H2_2 = H2[2];
71  //
72  vec2 d23A0 = H0_2 * d23A_1 - H0_1 * d23A_2;
73  vec2 d23B0 = H0_0 * d23A_2 - H0_2 * d23A_0;
74  vec2 d23C0 = H0_1 * d23A_0 - H0_0 * d23A_1;
75  const double d4A0 = (A0[0] + H0_2 * d4A_1) - H0_1 * d4A_2;
76  const double d4B0 = (A0[1] + H0_0 * d4A_2) - H0_2 * d4A_0;
77  const double d4C0 = (A0[2] + H0_1 * d4A_0) - H0_0 * d4A_1;
78  //
79  vec2 d23A2 = d23A0 + d23A_0;
80  vec2 d23B2 = d23B0 + d23A_1;
81  vec2 d23C2 = d23C0 + d23A_2;
82  const double d4A2 = d4A0 + d4A_0;
83  const double d4B2 = d4B0 + d4A_1;
84  const double d4C2 = d4C0 + d4A_2;
85  const double d0 = d4A_0 - A[0];
86  const double d1 = d4A_1 - A[1];
87  const double d2 = d4A_2 - A[2];
88  //
89  vec2 d23A3 = (d23A_0 + d23B2 * H1_2) - d23C2 * H1_1;
90  vec2 d23B3 = (d23A_1 + d23C2 * H1_0) - d23A2 * H1_2;
91  vec2 d23C3 = (d23A_2 + d23A2 * H1_1) - d23B2 * H1_0;
92  const double d4A3 = ((A3[0] + d0) + d4B2 * H1_2) - d4C2 * H1_1;
93  const double d4B3 = ((A3[1] + d1) + d4C2 * H1_0) - d4A2 * H1_2;
94  const double d4C3 = ((A3[2] + d2) + d4A2 * H1_1) - d4B2 * H1_0;
95  //
96  vec2 d23A4 = (d23A_0 + d23B3 * H1_2) - d23C3 * H1_1;
97  vec2 d23B4 = (d23A_1 + d23C3 * H1_0) - d23A3 * H1_2;
98  vec2 d23C4 = (d23A_2 + d23A3 * H1_1) - d23B3 * H1_0;
99  const double d4A4 = ((A4[0] + d0) + d4B3 * H1_2) - d4C3 * H1_1;
100  const double d4B4 = ((A4[1] + d1) + d4C3 * H1_0) - d4A3 * H1_2;
101  const double d4C4 = ((A4[2] + d2) + d4A3 * H1_1) - d4B3 * H1_0;
102  //
103  vec2 d23A5 = 2. * d23A4 - d23A_0;
104  vec2 d23B5 = 2. * d23B4 - d23A_1;
105  vec2 d23C5 = 2. * d23C4 - d23A_2;
106  const double d4A5 = 2. * d4A4 - d4A_0;
107  const double d4B5 = 2. * d4B4 - d4A_1;
108  const double d4C5 = 2. * d4C4 - d4A_2;
109  //
110  vec2 d23A6 = d23B5 * H2_2 - d23C5 * H2_1;
111  vec2 d23B6 = d23C5 * H2_0 - d23A5 * H2_2;
112  vec2 d23C6 = d23A5 * H2_1 - d23B5 * H2_0;
113  double d4A6 = d4B5 * H2_2 - d4C5 * H2_1;
114  double d4B6 = d4C5 * H2_0 - d4A5 * H2_2;
115  double d4C6 = d4A5 * H2_1 - d4B5 * H2_0;
116 
117  vec2 dR23_A = (d23A2 + d23A3 + d23A4) * S3;
118  vec2 dR23_B = (d23B2 + d23B3 + d23B4) * S3;
119  vec2 dR23_C = (d23C2 + d23C3 + d23C4) * S3;
120 
121  vec2 res23_0 = ((d23A0 + 2. * d23A3) + (d23A5 + d23A6)) * (1. / 3.);
122  vec2 res23_1 = ((d23B0 + 2. * d23B3) + (d23B5 + d23B6)) * (1. / 3.);
123  vec2 res23_2 = ((d23C0 + 2. * d23C3) + (d23C5 + d23C6)) * (1. / 3.);
124 
126  P[21] += dR23_A[0];
127  P[22] += dR23_B[0];
128  P[23] += dR23_C[0];
129  P[24] = res23_0[0];
130  P[25] = res23_1[0];
131  P[26] = res23_2[0];
132 
133  P[28] += dR23_A[1];
134  P[29] += dR23_B[1];
135  P[30] += dR23_C[1];
136  P[31] = res23_0[1];
137  P[32] = res23_1[1];
138  P[33] = res23_2[1];
139 
140  P[35] += (d4A2 + d4A3 + d4A4) * S3;
141  P[36] += (d4B2 + d4B3 + d4B4) * S3;
142  P[37] += (d4C2 + d4C3 + d4C4) * S3;
143  P[38] = ((d4A0 + 2. * d4A3) + (d4A5 + d4A6 + A6[0])) * (1. / 3.);
144  P[39] = ((d4B0 + 2. * d4B3) + (d4B5 + d4B6 + A6[1])) * (1. / 3.);
145  P[40] = ((d4C0 + 2. * d4C3) + (d4C5 + d4C6 + A6[2])) * (1. / 3.);
146 }

◆ rescaleVrtErrForPointing()

void Trk::rescaleVrtErrForPointing ( double  Div,
CascadeEvent cascadeEvent_ 
)

Definition at line 32 of file CFitCascadeScale.cxx.

33 {
34  if(Div<1.)Div=1.;
35  cascadeEvent_.setSCALE(cascadeEvent_.getSCALE()/Div);
36  for(int iv=0; iv<cascadeEvent_.cascadeNV-1; iv++){ // Last vertex must not be touched
37  VKVertex *vk = cascadeEvent_.cascadeVertexList[iv].get();
38  for(int i=0; i<6; i++) vk->FVC.covvrt[i] /=Div;
39  }
40 }

◆ ResidualPullType()

ResidualPull::ResidualType Trk::ResidualPullType ( AlignResidualType  type)

Definition at line 41 of file AlignResidualType.cxx.

42  {
43  // defines mapping between residual types for the alignment and those
44  // used in the ResidualPullCalculator
45  switch(type)
46  {
47  case HitOnly:
48  return ResidualPull::HitOnly;
49  case Unbiased:
50 // case DCA:
52  default:
53  return ResidualPull::HitOnly;
54  }
55  }

◆ restorePreviousPos()

int Trk::restorePreviousPos ( CascadeEvent cascadeEvent_,
std::vector< VKVertex > &  SV 
)

Definition at line 639 of file CFitCascade.cxx.

640 {
641  int iv,it;
642  long int NTRK;
643  VKTrack * trk; VKTrack * trks; VKVertex * vk; VKVertex * vks;
644 
645  for( iv=0; iv<cascadeEvent_.cascadeNV; iv++){
646  vk=cascadeEvent_.cascadeVertexList[iv].get();
647  vks=&SV[iv];
648  NTRK = vk->TrackList.size(); // Number of tracks at vertex
649  vk->refIterV[0]=vks->refIterV[0];
650  vk->refIterV[1]=vks->refIterV[1];
651  vk->refIterV[2]=vks->refIterV[2];
652  vk->iniV[0] = vk->fitV[0] = vk->cnstV[0]=0.;
653  vk->iniV[1] = vk->fitV[1] = vk->cnstV[1]=0.;
654  vk->iniV[2] = vk->fitV[2] = vk->cnstV[2]=0.;
655  cfdcopy(vks->fitMom, vk->fitMom, 3); //saved Momentum
656  cfdcopy(vks->fitCovXYZMom, vk->fitCovXYZMom, 21); //saved XYZMom covariance
657  for(it=0; it<NTRK; it++){
658  trk =vk ->TrackList[it].get(); // working track
659  trks=vks->TrackList[it].get(); // track from saved copy
660  if(trk->Id < 0) { // pseudo-track from cascade vertex
661  //trk->fitP[2]=0.; // reset the pseudo-track parameters
662  trk->fitP[0] =(trks->iniP[0]+trks->fitP[0])/2.;
663  trk->fitP[1] = trks->iniP[1];
664  trk->fitP[2] =(trks->iniP[2]+trks->fitP[2])/2.;
665  continue;
666  }
667  cfdcopy(trks->Perig, trk->Perig, 5);
668  cfdcopy(trks->WgtM, trk->WgtM, 15);
669  cfdcopy(trks->fitP, trk->fitP, 3);
670  cfdcopy(trks->iniP, trk->iniP, 3);
671  cfdcopy(trks->cnstP, trk->cnstP, 3);
672  }
673  }
674  for(iv=0; iv<cascadeEvent_.cascadeNV; iv++){
675  vk = cascadeEvent_.cascadeVertexList[iv].get();
676  if(vk->nextCascadeVrt){
677  int pntCnst = vk->ConstraintList.size() - 1; // pointing constraint is always last in the list
678  if(vk->ConstraintList[pntCnst]->getType() != VKContraintType::Point) return -1;
679  static_cast< VKPointConstraint* >(vk->ConstraintList[pntCnst].get())->setTargetVertex(vk->nextCascadeVrt->refIterV);
680  }
681  }
682  return 0;
683 }

◆ robtest()

void Trk::robtest ( VKVertex vk,
int  ifl,
int  nIteration 
)

Definition at line 14 of file RobTest.cxx.

15 {
16  long int i, j, k, kk, it;
17  double rob, res, c[5], darg, absX, roba[5];
18 
19 /* ------------------------------------------------------------ */
20 /* Robustification procedure for weight matrix */
21 /* IROB = 0 - Standard chi^2 */
22 /* = 1 - Geman-McClure function */
23 /* = 2 - Welch function */
24 /* = 3 - Cauchy function */
25 /* = 4 - L1-L2 function */
26 /* = 5 - Fair function */
27 /* = 6 - Huber function */
28 /* = 7 - Modified Huber function */
29 /* (1,2,3) - Zero outliers */
30 /* (4,5,6,7) - Downweight outliers */
31 /* Author: V.Kostyukhin */
32 /* ------------------------------------------------------------ */
33 
34  int NTRK = vk->TrackList.size();
35 
36  long int irob = vk->vk_fitterControl->vk_forcft.irob;
37  double Scl = vk->vk_fitterControl->vk_forcft.RobustScale; //Tuning constant
38  double C; // Breakdown constant
39 
40  if(!vk->vk_fitterControl->m_frozenVersionForBTagging)Scl *= (1.+exp(3.-nIteration)); //Annealing
41 
42  if ( ifl == 0) { /* FILLING OF EIGENVALUES AND VECTORS */
43  for (it = 0; it < NTRK ; ++it) { /* RESTORE MATRIX */
44  VKTrack *trk=vk->TrackList[it].get();
45  if(trk->Id < 0) continue; // Not a real track
46  vkGetEigVect(trk->WgtM, trk->e ,&(trk->v[0][0]), 5);
47  }
48  return;
49  }
50 /* -- */
51  double halfPi=M_PI/2.;
52  for (it = 0; it < NTRK; ++it) {
53  VKTrack *trk=vk->TrackList[it].get();
54  if(trk->Id < 0) continue; // Not a real track
55  c[0]=c[1]=c[2]=c[3]=c[4]=0.;
56  for( k = 0; k < 5; k++){
57  c[0] += trk->rmnd[k] * trk->v[0][k];
58  c[1] += trk->rmnd[k] * trk->v[1][k];
59  c[2] += trk->rmnd[k] * trk->v[2][k];
60  c[3] += trk->rmnd[k] * trk->v[3][k];
61  c[4] += trk->rmnd[k] * trk->v[4][k];
62  }
63  for (k = 0; k < 5; ++k) {
64  darg = c[k]*c[k]*trk->e[k];
65  if(darg < 1.e-10) darg = 1.e-10;
66  absX = sqrt(darg); /* Abs(X) == sqrt(X)*/
67  rob = 1.; C=1;
68  if(irob == 1)C = 1.58*Scl; /* Geman-McClure Standard =1 but c^2=2.5 is better(Gem.McC) */
69  if(irob == 2)C = 2.9846*Scl; /* Welch def c^2=2.9846^2 */
70  if(irob == 3)C = 2.3849*Scl; /* Cauchy def 2.385^2=5.7 */
71  if(irob == 4)C = 1.; /* L1-L2 no tuning*/
72  if(irob == 5)C = 1.3998*Scl; /* Fair (def=1.3998)*/
73  if(irob == 6)C = 1.345 *Scl; /* Huber (def=1.345)*/
74  if(irob == 7)C = 1.2107 *Scl; /* Modified Huber (def=1.2107)*/
75 /* Functionals here are divided by (X^2/2)!!!*/
76  double C2=C*C;
77  if(irob == 1)rob = 1. / (darg/C2 + 1.); /* Geman-McClure */
78  if(irob == 2)rob = C2*(1. - exp(-darg/C2) )/darg; /* Welch */
79  if(irob == 3)rob = C2*log(darg/C2 + 1.)/darg; /* Cauchy */
80  if(irob == 4)rob = 4.*(sqrt(darg / 2. + 1.) - 1.)/darg; /* L1-L2 */
81  if(irob == 5)rob = 2.*C2*(absX/C - log(absX/C + 1.))/darg; /* Fair */
82  if(irob == 6)rob = C>absX ? 1. : (2*C/absX - C*C/darg) ; /* Huber */
83  if(irob == 7)rob = halfPi>(absX/C) ? 2*C*C*(1-cos(absX/C))/darg :
84  2*(C*absX+C*C*(1.-halfPi))/darg; /* Modified Huber */
85  roba[k] = rob;
86  if(rob>0.99)roba[k] = 1.; //To improve precision
87  }
88  for (i = 0; i < 5; ++i) if(roba[i]<1.e-3)roba[i]=1.e-3;
89  kk = 0;
90  for (i = 0; i < 5; ++i) {
91  for (j = 0; j <= i; ++j) {
92  res = 0.;
93  for (k = 0; k < 5; ++k) {
94  res += trk->v[k][i] * trk->e[k] * trk->v[k][j]*roba[k];
95  }
96  trk->WgtM[kk]=res;
97  kk++;
98  }
99  }
100  vk->vk_fitterControl->vk_forcft.robres[it] = roba[0] * roba[1] * roba[2] * roba[3] * roba[4];
101  if(vk->vk_fitterControl->vk_forcft.robres[it]>1.)vk->vk_fitterControl->vk_forcft.robres[it]=1.;
102  }
103 }

◆ setCascadeMassConstraint() [1/2]

int Trk::setCascadeMassConstraint ( CascadeEvent cascadeEvent_,
long int  IV,
double  Mass 
)

Definition at line 241 of file CascadeDefinition.cxx.

242  {
243  if (IV > cascadeEvent_.cascadeNV - 1) {
244  return -1; // error in format
245  }
246  if (IV < 0) {
247  return -1;
248  }
249  VKVertex *vk = cascadeEvent_.cascadeVertexList[IV].get(); // target vertex
250  int NTRK = vk->TrackList.size();
251  vk->ConstraintList.emplace_back(new VKMassConstraint(NTRK, Mass, vk));
252  return 0;
253 }

◆ setCascadeMassConstraint() [2/2]

int Trk::setCascadeMassConstraint ( CascadeEvent cascadeEvent_,
long int  IV,
std::vector< int > &  trkInVrt,
std::vector< int > &  pseudoInVrt,
double  Mass 
)

Definition at line 260 of file CascadeDefinition.cxx.

262  {
263  std::vector<int> tmpIndex;
264  int it;
265  if (IV > cascadeEvent_.cascadeNV - 1)
266  return -1; // error in format
267  if (IV < 0)
268  return -1;
269  VKVertex *vk = cascadeEvent_.cascadeVertexList[IV].get(); // target vertex
270  int NTRK = vk->TrackList.size(); // tracks+pseudotracks
271  int nRealTrk = 0; // number of real tracks
272  for (it = 0; it < (int)trkInVrt.size(); it++) {
273  if (vk->TrackList[it]->Id >= 0) {
274  nRealTrk++;
275  }
276  }
277  //
278  //-- Real tracks
279  //
280  if ((int)trkInVrt.size() > NTRK) {
281  return -1; // checks...
282  }
283  for (it = 0; it < (int)trkInVrt.size(); it++) {
284  if (trkInVrt[it] < 0) {
285  return -1;
286  }
287  if (trkInVrt[it] >= NTRK) {
288  return -1;
289  }
290  tmpIndex.push_back(trkInVrt[it]);
291  }
292  //
293  //-- Pseudo tracks
294  //
295  if ((int)pseudoInVrt.size() > NTRK) {
296  return -1; // checks...
297  }
298  for (int it = 0; it < (int)pseudoInVrt.size(); it++) {
299  if (pseudoInVrt[it] < 0) {
300  return -1;
301  }
302  if (pseudoInVrt[it] >= NTRK) {
303  return -1;
304  }
305  tmpIndex.push_back(pseudoInVrt[it] + nRealTrk);
306  }
307 
308  vk->ConstraintList.emplace_back(
309  new VKMassConstraint(NTRK, Mass, std::move(tmpIndex), vk));
310  return 0;
311 }

◆ setFittedMatrices()

void Trk::setFittedMatrices ( const double *  COVFIT,
long int  MATRIXSIZE,
std::vector< int > &  matrixPnt,
std::vector< std::vector< double > > &  covarCascade,
CascadeEvent cascadeEvent_ 
)

Definition at line 168 of file CascadeUtils.cxx.

172 {
173  int iv, Pnt, ic, ir, vrtMtxSize, count;
174  for( iv=0; iv<cascadeEvent_.cascadeNV; iv++){
175  VKVertex *vk = cascadeEvent_.cascadeVertexList[iv].get();
176  Pnt=matrixPnt[iv]; // start of vertex parameters
177  vrtMtxSize=3+vk->TrackList.size()*3; //size of matrix for given vertex
178  std::vector<double> Res(vrtMtxSize*(vrtMtxSize+1)/2);
179  count=0;
180  for (int col=0; col<vrtMtxSize; col++){
181  for (int row=0; row<=col; row++){
182  ic=Pnt+col; ir=Pnt+row;
183  Res[count]=COVFIT[ic*MATRIXSIZE + ir]; count++;
184  }
185  }
186  covarCascade.emplace_back(std::move(Res));
187  }
188 }

◆ setFittedParameters()

void Trk::setFittedParameters ( const double *  result,
std::vector< int > &  matrixPnt,
CascadeEvent cascadeEvent_ 
)

Definition at line 151 of file CascadeUtils.cxx.

152 {
153  int iv,it,Pnt;
154  for( iv=0; iv<cascadeEvent_.cascadeNV; iv++){
155  VKVertex *vk = cascadeEvent_.cascadeVertexList[iv].get();
156  Pnt=matrixPnt[iv]; // start of vertex parameters
157  vk->fitV[0]=result[Pnt]; vk->fitV[1]=result[Pnt+1]; vk->fitV[2]=result[Pnt+2];
158  for( it=0; it<(int)vk->TrackList.size(); it++){
159  VKTrack * trk=vk->TrackList[it].get();
160  trk->fitP[0]=trk->iniP[0]+result[Pnt+3+it*3 + 0];
161  trk->fitP[1]=trk->iniP[1]+result[Pnt+3+it*3 + 1];
162  trk->fitP[2]=trk->iniP[2]+result[Pnt+3+it*3 + 2];
163  trk->Chi2 = cfchi2(vk->fitV, trk->fitP, trk );
164  }
165  }
166 }

◆ setVTrackMass()

int Trk::setVTrackMass ( VKVertex vk)

Definition at line 34 of file CFitCascade.cxx.

35 {
36  double vBx,vBy,vBz;
37  int it, NTRK;
38  VectMOM totP{};
39 
40  if(!vk->nextCascadeVrt)return 0; // nonpointing vertex
41 
42  Trk::vkalMagFld::getMagFld(vk->refIterV[0]+vk->fitV[0], vk->refIterV[1]+vk->fitV[1], vk->refIterV[2]+vk->fitV[2],
43  vBx,vBy,vBz,(vk->vk_fitterControl).get());
44 
45  NTRK = vk->TrackList.size(); // Number of tracks at vertex
46  totP.Px=0.;totP.Py=0.;totP.Pz=0.;totP.E=0.;
47  for(it=0; it<NTRK; it++){
48  std::array<double, 4> pp = getFitParticleMom( vk->TrackList[it].get(), vBz );
49  totP.Px += pp[0];
50  totP.Py += pp[1];
51  totP.Pz += pp[2];
52  totP.E += pp[3];
53  }
54  VKTrack * target_trk = getCombinedVTrack(vk);
55  if( target_trk == nullptr ) {
56  std::cout<<" ERROR in CASCADE STRUCTURE"<<'\n';
57  return -1;
58  }
59  double Pt=sqrt(totP.Px*totP.Px + totP.Py*totP.Py);
60  double Mass;
61  if(Pt > std::abs(totP.Pz)){
62  Mass = sqrt( (totP.E-Pt)*(totP.E+Pt) - totP.Pz*totP.Pz);
63  }else{
64  Mass = sqrt( (totP.E-totP.Pz)*(totP.E+totP.Pz) - Pt*Pt);
65  }
66  target_trk->setMass(Mass);
67 
68  return 0;
69 }

◆ SymIndex()

int Trk::SymIndex ( int  it,
int  i,
int  j 
)
inline

Definition at line 271 of file TrkCascadeFitter.cxx.

271 { return (3*it+3+i)*(3*it+3+i+1)/2 + (3*it+3+j);}

◆ tdasatVK()

void Trk::tdasatVK ( const double *  Der,
const double *  CovI,
double *  CovF,
long int  M,
long int  N 
)

Definition at line 218 of file Tracking/TrkVertexFitter/TrkVKalVrtCore/src/Utilities.cxx.

219 {
220  int i,j,k,f;
221  for( k=0; k<M; k++) { // sycle on output index
222  for( f=0; f<=k; f++ ) { //
223  double sum=0.;
224  for( i=0; i<N; i++){
225  double tmp=0.;
226  for( j=0; j<N; j++) tmp += CovI[sIndexVK(i,j)]*Der[j+f*N];
227  sum += Der[i+k*N]*tmp;
228  }
229  CovF[sIndexVK(k,f)]=sum;
230  }
231  }
232 }

◆ transformCovar()

std::vector< double > Trk::transformCovar ( int  NPar,
double **  Deriv,
const std::vector< double > &  covarI 
)

Definition at line 191 of file CascadeUtils.cxx.

192 {
193  std::vector<double> covarO(NPar*(NPar+1)/2, 0.);
194  int ii,ij,oi,oj, indexO, indexI;
195  for(oi=0; oi<NPar; oi++){
196  for(oj=0; oj<=oi; oj++){
197  indexO = oi*(oi+1)/2+oj;
198  for(ii=0; ii<NPar; ii++){
199  for(ij=0; ij<NPar; ij++){
200  indexI = ii>=ij ? ii*(ii+1)/2+ij : ij*(ij+1)/2+ii;
201  covarO[indexO] += Deriv[oi][ii]*covarI[indexI]*Deriv[oj][ij];
202  } } } }
203  return covarO;
204 }

◆ translateToFittedPos()

int Trk::translateToFittedPos ( CascadeEvent cascadeEvent_,
double  Step 
)

Definition at line 559 of file CFitCascade.cxx.

560 {
561  int iv,it;
562  long int IERR,NTRK;
563  double vShift, tmpPer[5], tmpWgt[15], tmpCov[15], targetVertex[3];
564  VKTrack * trk; VKVertex * vk;
565  if(Step>1.)Step=1.;
566 
567  for( iv=0; iv<cascadeEvent_.cascadeNV; iv++){
568  vk=cascadeEvent_.cascadeVertexList[iv].get();
569  NTRK = vk->TrackList.size(); // Number of tracks at vertex
570  targetVertex[0]=vk->refIterV[0] + vk->fitV[0]*Step; // target vertex for extrapolation
571  targetVertex[1]=vk->refIterV[1] + vk->fitV[1]*Step;
572  targetVertex[2]=vk->refIterV[2] + vk->fitV[2]*Step;
573  vShift = sqrt( (vk->refV[0]-targetVertex[0])*(vk->refV[0]-targetVertex[0])
574  +(vk->refV[1]-targetVertex[1])*(vk->refV[1]-targetVertex[1])
575  +(vk->refV[2]-targetVertex[2])*(vk->refV[2]-targetVertex[2]) );
576  for(auto *pvx : vk->includedVrt){ //Check space position of internal vertex
577  double dirMom=(pvx->refIterV[0]-targetVertex[0])*pvx->fitMom[0]+
578  (pvx->refIterV[1]-targetVertex[1])*pvx->fitMom[1]+
579  (pvx->refIterV[2]-targetVertex[2])*pvx->fitMom[2];
580  if(dirMom<0.)cfdcopy(pvx->refIterV,targetVertex,3);
581  }
582  bool insideGoodVolume=false;
583  if(vk->vk_fitterControl && vk->vk_fitterControl->vk_objProp)
584  { insideGoodVolume = vk->vk_fitterControl->vk_objProp->checkTarget(targetVertex, *vk->vk_fitterControl->vk_istate);}
585  else { insideGoodVolume = Trk::vkalPropagator::checkTarget(targetVertex); }
586  if(!insideGoodVolume) { return -16; } //Vertex is definitely outside working volume
587  for(it=0; it<NTRK; it++){
588  trk=vk->TrackList[it].get();
589  if(trk->Id < 0){ // pseudo-track from cascade vertex
590  trk->fitP[0] =trk->iniP[0]+ Step*(trk->fitP[0]-trk->iniP[0]);
591  trk->fitP[1] =trk->iniP[1]+ Step*(trk->fitP[1]-trk->iniP[1]);
592  trk->fitP[2] =trk->iniP[2]+ Step*(trk->fitP[2]-trk->iniP[2]);
593  continue;
594  }
595  Trk::vkalPropagator::Propagate(trk, vk->refV, targetVertex, tmpPer, tmpCov, (vk->vk_fitterControl).get());
596  //Check!!!And protection if needed.
597  double eig5=cfSmallEigenvalue(tmpCov,5 );
598  if(eig5<1.e-15 || tmpCov[0]>1.e7) { //Bad propagation with material. Try without it.
599  Trk::vkalPropagator::Propagate(-999, trk->Charge,trk->refPerig,trk->refCovar, vk->refV, targetVertex, tmpPer, tmpCov, (vk->vk_fitterControl).get());
600  if(cfSmallEigenvalue(tmpCov,5 )<1.e-15){ //Final protection
601  tmpCov[1]=0.;tmpCov[3]=0.;tmpCov[6]=0.;tmpCov[10]=0.;
602  tmpCov[4]=0.;tmpCov[7]=0.;tmpCov[11]=0.;
603  tmpCov[8]=0.;tmpCov[12]=0.;
604  tmpCov[13]=0.;
605  tmpCov[0]=std::abs(tmpCov[0]); tmpCov[2]=std::abs(tmpCov[2]);tmpCov[5]=std::abs(tmpCov[5]);
606  tmpCov[9]=std::abs(tmpCov[9]); tmpCov[14]=std::abs(tmpCov[14]);
607  }
608  }
609  if(tmpCov[0]>1.e7){ IERR=-7; return IERR; } //extremely big A0 error !!!
610  IERR=cfInv5(tmpCov, tmpWgt); if (IERR) IERR=cfdinv(tmpCov, tmpWgt, 5); if(IERR)return -8;
611  trk->setCurrent(tmpPer,tmpWgt);
612  if ( vShift > 100. ) trk->setReference( tmpPer, tmpCov ); //Change reference for big shift
613  }
614  vk->setRefIterV(targetVertex);
615  if ( vShift > 100. )vk->setRefV(targetVertex); // Change reference vertex for big shift
616  vk->iniV[0] = vk->fitV[0] = vk->cnstV[0]=0.;
617  vk->iniV[1] = vk->fitV[1] = vk->cnstV[1]=0.;
618  vk->iniV[2] = vk->fitV[2] = vk->cnstV[2]=0.;
619  for(it=0; it<NTRK; it++){
620  trk=vk->TrackList[it].get();
621  if(Step<1.){ // Step limitation for constraint calculation on next step
622  trk->cnstP[0] = trk->iniP[0] =trk->iniP[0]+ Step*(trk->fitP[0]-trk->iniP[0]);
623  trk->cnstP[1] = trk->iniP[1] =trk->iniP[1]+ Step*(trk->fitP[1]-trk->iniP[1]);
624  trk->cnstP[2] = trk->iniP[2] =trk->iniP[2]+ Step*(trk->fitP[2]-trk->iniP[2]);
625  }else{
626  trk->cnstP[0] = trk->iniP[0] = trk->fitP[0]; // for constraint calculation on next step
627  trk->cnstP[1] = trk->iniP[1] = trk->fitP[1];
628  trk->cnstP[2] = trk->iniP[2] = trk->fitP[2];
629  }
630  }
631  }
632  return 0;
633 }

◆ unique_clone() [1/2]

template<typename T >
std::unique_ptr<T> Trk::unique_clone ( const std::unique_ptr< T > &  v)

Definition at line 18 of file unique_clone.h.

18  {
19  if (v != nullptr) {
20  return std::unique_ptr<T>(v->clone());
21  } else {
22  return nullptr;
23  }
24  }

◆ unique_clone() [2/2]

template<typename T >
std::unique_ptr<T> Trk::unique_clone ( const T *  v)

Definition at line 8 of file unique_clone.h.

8  {
9  if (v != nullptr) {
10  return std::unique_ptr<T>(v->clone());
11  } else {
12  return nullptr;
13  }
14  }

◆ vkGetEigVal()

void Trk::vkGetEigVal ( const double  ci[],
double  d[],
int  n 
)

Definition at line 828 of file Tracking/TrkVertexFitter/TrkVKalVrtCore/src/Matrix.cxx.

829 {
830  int i,j,k; d--;
832  noinit_vector<double> ab ((n+1)*(n+1));
833  for(i=0; i<n+1; i++) a[i] = ab.data() + i*(n+1);
834 
835  for( i=1; i<=n; i++) {
836  for( j=i; j<=n; j++) { k=(j-1)*j/2 + i; a[i][j]=a[j][i]=ci[k-1];}
837  }
838 
839  vkjacobi(a.data(),n,d,nullptr);
840 
841  for (i=1;i<n;i++) {
842  double p=d[k=i]; for (j=i+1;j<=n;j++) if (d[j] < p) p=d[k=j];
843  if (k != i) { d[k]=d[i]; d[i]=p; }
844  }
845 }

◆ vkGetEigVect()

void Trk::vkGetEigVect ( const double  ci[],
double  d[],
double  vect[],
int  n 
)

Definition at line 847 of file Tracking/TrkVertexFitter/TrkVKalVrtCore/src/Matrix.cxx.

848 {
849  int i,j,k; d--;
851  noinit_vector<double> ab ((n+1)*(n+1));
853  noinit_vector<double> vb ((n+1)*(n+1));
854  for(i=0; i<n+1; i++) a[i] = ab.data() + i*(n+1);
855  for(i=0; i<n+1; i++) v[i] = vb.data() + i*(n+1);
856 
857  for( i=1; i<=n; i++) {
858  for( j=i; j<=n; j++) { k=(j-1)*j/2 + i; a[i][j]=a[j][i]=ci[k-1];}
859  }
860 
861  vkjacobi(a.data(),n,d,v.data());
862 
863  for (i=1;i<n;i++) {
864  double p=d[k=i]; for (j=i+1;j<=n;j++) if (d[j] < p) p=d[k=j];
865  if (k != i) { d[k]=d[i]; d[i]=p;
866  for (j=1;j<=n;j++) { p=v[j][i]; v[j][i]=v[j][k]; v[j][k]=p;}
867  }
868  }
869 
870  k=0; for (i=1;i<=n;i++) for(j=1;j<=n;j++) vect[k++]=v[j][i];
871 }

◆ vkgrkuta_()

void Trk::vkgrkuta_ ( const double  charge,
const double  step,
double *  vect,
double *  vout,
VKalVrtControlBase CONTROL 
)

Definition at line 14 of file VKgrkuta.cxx.

15 {
16  double equiv_2[3], equiv_5[3];
17  long int iter, ncut, j;
18  double cost, pinv, rest, sint, a, b, c, f[4], hst;
19  double hnorm, secxs[4], secys[4], seczs[4], f1, f2, h2, f3, h4, f4;
20  double g1, g2, g3, g4, g5, g6, at, bt, ct, ph, hp, fx, fy, fz, tl;
21  double ph2, cba, rho, est, tet, hxp[3], dxt, dyt, dzt, ang2, rho1;
22 
23 
24 
25 #define xyz (equiv_2)
26 #define x (equiv_2)
27 #define y (equiv_2 + 1)
28 #define z (equiv_2 + 2)
29 #define xyzt (equiv_5)
30 #define xt (equiv_5)
31 #define yt (equiv_5 + 1)
32 #define zt (equiv_5 + 2)
33 
34 
35 /* *******************************************************************/
36 /* */
37 /* Runge-Kutta method for tracking a particle through a magnetic */
38 /* . field. Uses Nystroem algorithm (See Handbook Nat. Bur. of */
39 /* . Standards, procedure 25.5.20) */
40 /* . */
41 /* . Input parameters */
42 /* . CHARGE Particle charge */
43 /* . STEP Step size */
44 /* . VECT Initial co-ords,direction cosines,momentum */
45 /* . Output parameters */
46 /* . VOUT Output co-ords,direction cosines,momentum */
47 /* . User routine called */
48 /* CALL GUFLD(X,F) */
49 /* Authors R.Brun, M.Hansroul ********* */
50 /* V.Perevoztchikov (CUT STEP implementation) */
51 /* Taken from GEANT3.21 */
52 /* Modified for VKalVrt V.Kostyukhin */
53 /*********************************************************************/
54 /* This constant is for units CM,GEV/C and KGAUSS */
55 
56  /* Parameter adjustments */
57  --vout;
58  --vect;
59 
60  iter = 0;
61  ncut = 0;
62  for (j = 1; j <= 7; ++j) {vout[j] = vect[j];}
63  pinv = (charge) * 2.9979251e-2 / vect[7]; // New for MM, MEV/C and KGAUSS
64  tl = 0.;
65  hst = step;
66 
67 //std::cout <<" Now in grkuta="<<vect[1]<<", "<<vect[2]<<", "<<vect[3]<<'\n';
68 
69 L20:
70  rest = step - tl;
71  if (std::abs(hst) > std::abs(rest)) hst = rest;
72 /* ***** CALL GUFLD(VOUT,F) */
73  Trk::vkalMagFld::getMagFld( vout[1], vout[2], vout[3], fx, fy, fz, CONTROL);
74  f[0] = fx*10.; //VK Convert returned field in Tesla into kGauss for old code
75  f[1] = fy*10.;
76  f[2] = fz*10.;
77 
78 /* Start of integration */
79 
80  *x = vout[1];
81  *y = vout[2];
82  *z = vout[3];
83  a = vout[4];
84  b = vout[5];
85  c = vout[6];
86 
87  h2 = hst * .5;
88  h4 = h2 * .5;
89  ph = pinv * hst;
90  ph2 = ph * .5;
91  secxs[0] = (b * f[2] - c * f[1]) * ph2;
92  secys[0] = (c * f[0] - a * f[2]) * ph2;
93  seczs[0] = (a * f[1] - b * f[0]) * ph2;
94  ang2 = secxs[0]*secxs[0] + secys[0]*secys[0] + seczs[0]*seczs[0];
95  if (ang2 > 9.86960440109) goto L40;
96  dxt = h2 * a + h4 * secxs[0];
97  dyt = h2 * b + h4 * secys[0];
98  dzt = h2 * c + h4 * seczs[0];
99  *xt = *x + dxt;
100  *yt = *y + dyt;
101  *zt = *z + dzt;
102 
103 /* Second intermediate point */
104 
105  est = std::abs(dxt) + std::abs(dyt) + std::abs(dzt);
106  if (est > hst) goto L30;
107 
108 
109 /* ***** CALL GUFLD(XYZT,F) */
110  Trk::vkalMagFld::getMagFld( xyzt[0], xyzt[1], xyzt[2], fx, fy, fz, CONTROL);
111  f[0] = fx*10.; //VK Convert returned field in Tesla into kGauss for old code
112  f[1] = fy*10.;
113  f[2] = fz*10.;
114  at = a + secxs[0];
115  bt = b + secys[0];
116  ct = c + seczs[0];
117 
118  secxs[1] = (bt * f[2] - ct * f[1]) * ph2;
119  secys[1] = (ct * f[0] - at * f[2]) * ph2;
120  seczs[1] = (at * f[1] - bt * f[0]) * ph2;
121  at = a + secxs[1];
122  bt = b + secys[1];
123  ct = c + seczs[1];
124  secxs[2] = (bt * f[2] - ct * f[1]) * ph2;
125  secys[2] = (ct * f[0] - at * f[2]) * ph2;
126  seczs[2] = (at * f[1] - bt * f[0]) * ph2;
127  dxt = hst * (a + secxs[2]);
128  dyt = hst * (b + secys[2]);
129  dzt = hst * (c + seczs[2]);
130  *xt = *x + dxt;
131  *yt = *y + dyt;
132  *zt = *z + dzt;
133  at = a + secxs[2] * 2.;
134  bt = b + secys[2] * 2.;
135  ct = c + seczs[2] * 2.;
136 
137  est = std::abs(dxt) + std::abs(dyt) + std::abs(dzt);
138  if (est > std::abs(hst) * 2.) goto L30;
139 /* ***** CALL GUFLD(XYZT,F) */
140  Trk::vkalMagFld::getMagFld( xyzt[0], xyzt[1], xyzt[2], fx, fy, fz, CONTROL);
141  f[0] = fx*10.; //VK Convert returned field in Tesla into kGauss for old code
142  f[1] = fy*10.;
143  f[2] = fz*10.;
144 
145  *z += (c + (seczs[0] + seczs[1] + seczs[2]) /3.) * hst;
146  *y += (b + (secys[0] + secys[1] + secys[2]) /3.) * hst;
147  *x += (a + (secxs[0] + secxs[1] + secxs[2]) /3.) * hst;
148 
149  secxs[3] = (bt * f[2] - ct * f[1]) * ph2;
150  secys[3] = (ct * f[0] - at * f[2]) * ph2;
151  seczs[3] = (at * f[1] - bt * f[0]) * ph2;
152  a += (secxs[0] + secxs[3] + (secxs[1] + secxs[2]) * 2.) /3.;
153  b += (secys[0] + secys[3] + (secys[1] + secys[2]) * 2.) /3.;
154  c += (seczs[0] + seczs[3] + (seczs[1] + seczs[2]) * 2.) /3.;
155 
156  est = std::abs(secxs[0] + secxs[3] - (secxs[1] + secxs[2]))
157  + std::abs(secys[0] + secys[3] - (secys[1] + secys[2]))
158  + std::abs(seczs[0] + seczs[3] - (seczs[1] + seczs[2]));
159 
160  if (est > 1e-4 && std::abs(hst) > 1e-4) goto L30;
161  ++iter;
162  ncut = 0;
163 
164 
165 /* If too many iterations, go to HELIX */
166  if (iter > 1992) goto L40;
167 
168  tl += hst;
169  if (est < 3.125e-6)
170  hst *= 2.;
171  cba = 1. / sqrt(a * a + b * b + c * c);
172  vout[1] = *x;
173  vout[2] = *y;
174  vout[3] = *z;
175  vout[4] = cba * a;
176  vout[5] = cba * b;
177  vout[6] = cba * c;
178  rest = step - tl;
179  if (step < 0.) rest = -rest;
180  if (rest > std::abs(step) * 1e-5) goto L20;
181 
182  return;
183 
184 /* * CUT STEP */
185 L30:
186  ++ncut;
187 /* If too many cuts , go to HELIX */
188  if (ncut > 11) {
189  goto L40;
190  }
191  hst *= .5;
192  goto L20;
193 
194 /* * ANGLE TOO BIG, USE HELIX */
195 L40:
196  f1 = f[0];
197  f2 = f[1];
198  f3 = f[2];
199  f4 = sqrt(f1*f1 + f2*f2 + f3*f3);
200  rho = -f4 * pinv;
201  tet = rho * step;
202  if (tet != 0.) {
203  hnorm = 1. / f4;
204  f1 *= hnorm;
205  f2 *= hnorm;
206  f3 *= hnorm;
207 
208  hxp[0] = f2 * vect[6] - f3 * vect[5];
209  hxp[1] = f3 * vect[4] - f1 * vect[6];
210  hxp[2] = f1 * vect[5] - f2 * vect[4];
211  hp = f1 * vect[4] + f2 * vect[5] + f3 * vect[6];
212 
213  rho1 = 1. / rho;
214  sint = sin(tet);
215  cost = sin(tet/2.) * sin(tet/2.) * 2.;
216 
217  g1 = sint * rho1;
218  g2 = cost * rho1;
219  g3 = (tet - sint) * hp * rho1;
220  g4 = -cost;
221  g5 = sint;
222  g6 = cost * hp;
223  vout[1] = vect[1] + (g1 * vect[4] + g2 * hxp[0] + g3 * f1);
224  vout[2] = vect[2] + (g1 * vect[5] + g2 * hxp[1] + g3 * f2);
225  vout[3] = vect[3] + (g1 * vect[6] + g2 * hxp[2] + g3 * f3);
226  vout[4] = vect[4] + (g4 * vect[4] + g5 * hxp[0] + g6 * f1);
227  vout[5] = vect[5] + (g4 * vect[5] + g5 * hxp[1] + g6 * f2);
228  vout[6] = vect[6] + (g4 * vect[6] + g5 * hxp[2] + g6 * f3);
229 
230  } else {
231  vout[1] = vect[1] + step * vect[4];
232  vout[2] = vect[2] + step * vect[5];
233  vout[3] = vect[3] + step * vect[6];
234 
235  }
236 
237  }

◆ vkMSolve()

int Trk::vkMSolve ( double *  a,
double *  b,
long int  n,
double *  ainv 
)

Definition at line 618 of file Tracking/TrkVertexFitter/TrkVKalVrtCore/src/Matrix.cxx.

619 {
620  std::unique_ptr<int[]> indx(new int[n+1]);
621  std::unique_ptr<double[]> Scale(new double[n]);
622  scaleg(a,Scale.get(),n,n);
623  int ierr = vkLUdcmp( a, n, indx.get());
624  if( ierr )return -1;
625  for(int i=0;i<n;i++)b[i]*=Scale[i];
626  vkLUbksb(a, n, indx.get(), b);
627  for(int i=0;i<n;i++)b[i]*=Scale[i];
628  if(ainv){ //Also invert matrix on request
629  int i,j;
630  std::unique_ptr<double[]> tmp(new double[n]);
631  for(j=0; j<n; j++){
632  for(i=0;i<n;i++)tmp[i]=0.;
633  tmp[j]=1.;
634  vkLUbksb(a, n, indx.get(), tmp.get());
635  for(i=0;i<n;i++)ainv[i+j*n]=tmp[i];
636  }
637  for(i=0;i<n;i++) for(j=0;j<n;j++) ainv[i+j*n] *= Scale[i]*Scale[j];
638  }
639  return 0;
640 }

◆ vkPerigeeToP()

void Trk::vkPerigeeToP ( const double *  perig3,
double *  pp,
double  BMAG 
)

Definition at line 15 of file cfMomentum.cxx.

16 {
17  double constB =BMAG * vkalMagCnvCst;
18  double phiv = perig3[1];
19  double pt = constB / std::abs(perig3[2]);
20  pp[0] = pt * cos(phiv);
21  pp[1] = pt * sin(phiv);
22  pp[2] = pt / tan(perig3[0]);
23 }

◆ vkSVDCmp()

void Trk::vkSVDCmp ( double **  a,
int  m,
int  n,
double  w[],
double **  v 
)

Definition at line 648 of file Tracking/TrkVertexFitter/TrkVKalVrtCore/src/Matrix.cxx.

649 {
650  int flag,i,its,j,jj,k,l=0, nm=0;
651  double anorm,c,f,g,h,s,scale,x,y,z;
652 
653  std::vector<double> rv1(n+1,0.);
654  g=scale=anorm=0.0;
655  for (i=1;i<=n;i++) {
656  l=i+1;
657  rv1[i]=scale*g;
658  g=s=scale=0.0;
659  if (i <= m) {
660  for (k=i;k<=m;k++) scale += std::abs(a[k][i]);
661  if (scale) {
662  for (k=i;k<=m;k++) {
663  a[k][i] /= scale;
664  s += a[k][i]*a[k][i];
665  }
666  f=a[i][i];
667  g = -SIGN(std::sqrt(s),f);
668  h=f*g-s;
669  a[i][i]=f-g;
670  for (j=l;j<=n;j++) {
671  for (s=0.0,k=i;k<=m;k++) s += a[k][i]*a[k][j];
672  f=s/h;
673  for (k=i;k<=m;k++) a[k][j] += f*a[k][i];
674  }
675  for (k=i;k<=m;k++) a[k][i] *= scale;
676  }
677  }
678  w[i]=scale *g;
679  g=s=scale=0.0;
680  if (i <= m && i != n) {
681  for (k=l;k<=n;k++) scale += std::abs(a[i][k]);
682  if (scale) {
683  for (k=l;k<=n;k++) {
684  a[i][k] /= scale;
685  s += a[i][k]*a[i][k];
686  }
687  f=a[i][l];
688  g = -SIGN(std::sqrt(s),f);
689  h=f*g-s;
690  a[i][l]=f-g;
691  for (k=l;k<=n;k++) rv1[k]=a[i][k]/h;
692  for (j=l;j<=m;j++) {
693  for (s=0.0,k=l;k<=n;k++) s += a[j][k]*a[i][k];
694  for (k=l;k<=n;k++) a[j][k] += s*rv1[k];
695  }
696  for (k=l;k<=n;k++) a[i][k] *= scale;
697  }
698  }
699  double nanorm=std::abs(w[i])+std::abs(rv1[i]);
700  if(anorm < nanorm) anorm = nanorm;
701  }
702  for (i=n;i>=1;i--) {
703  if (i < n) {
704  if (g) {
705  for (j=l;j<=n;j++)
706  v[j][i]=(a[i][j]/a[i][l])/g;
707  for (j=l;j<=n;j++) {
708  for (s=0.0,k=l;k<=n;k++) s += a[i][k]*v[k][j];
709  for (k=l;k<=n;k++) v[k][j] += s*v[k][i];
710  }
711  }
712  for (j=l;j<=n;j++) v[i][j]=v[j][i]=0.0;
713  }
714  v[i][i]=1.0;
715  g=rv1[i];
716  l=i;
717  }
718  for (i=(m<n?m:n);i>=1;i--) {
719  l=i+1;
720  g=w[i];
721  for (j=l;j<=n;j++) a[i][j]=0.0;
722  if (g) {
723  g=1.0/g;
724  for (j=l;j<=n;j++) {
725  for (s=0.0,k=l;k<=m;k++) s += a[k][i]*a[k][j];
726  f=(s/a[i][i])*g;
727  for (k=i;k<=m;k++) a[k][j] += f*a[k][i];
728  }
729  for (j=i;j<=m;j++) a[j][i] *= g;
730  } else for (j=i;j<=m;j++) a[j][i]=0.0;
731  ++a[i][i];
732  }
733  for (k=n;k>=1;k--) {
734  for (its=1;its<=300;its++) {
735  flag=1;
736  for (l=k;l>=1;l--) {
737  nm=l-1;
738  if ( (std::abs(rv1[l])+anorm) == anorm) {
739  flag=0;
740  break;
741  }
742  if ( (std::abs(w[nm])+anorm) == anorm) break;
743  }
744  if (flag) {
745  c=0.0;
746  s=1.0;
747  for (i=l;i<=k;i++) {
748  f=s*rv1[i];
749  rv1[i]=c*rv1[i];
750  if ( (std::abs(f)+anorm) == anorm) break;
751  g=w[i];
752  h=vkPythag(f,g);
753  w[i]=h;
754  h=1.0/h;
755  c=g*h;
756  s = -f*h;
757  for (j=1;j<=m;j++) {
758  y=a[j][nm];
759  z=a[j][i];
760  a[j][nm]=y*c+z*s;
761  a[j][i]=z*c-y*s;
762  }
763  }
764  }
765  z=w[k];
766  if (l == k) {
767  if (z < 0.0) {
768  w[k] = -z;
769  for (j=1;j<=n;j++) v[j][k] = -v[j][k];
770  }
771  break;
772  }
773  x=w[l];
774  nm=k-1;
775  y=w[nm];
776  g=rv1[nm];
777  h=rv1[k];
778  f=((y-z)*(y+z)+(g-h)*(g+h))/(2.0*h*y);
779  g=vkPythag(f,1.0);
780  f=((x-z)*(x+z)+h*((y/(f+SIGN(g,f)))-h))/x;
781  c=s=1.0;
782  for (j=l;j<=nm;j++) {
783  i=j+1;
784  g=rv1[i];
785  y=w[i];
786  h=s*g;
787  g=c*g;
788  z=vkPythag(f,h);
789  rv1[j]=z;
790  c=f/z;
791  s=h/z;
792  f=x*c+g*s;
793  g = g*c-x*s;
794  h=y*s;
795  y *= c;
796  for (jj=1;jj<=n;jj++) {
797  x=v[jj][j];
798  z=v[jj][i];
799  v[jj][j]=x*c+z*s;
800  v[jj][i]=z*c-x*s;
801  }
802  z=vkPythag(f,h);
803  w[j]=z;
804  if (z) {
805  z=1.0/z;
806  c=f*z;
807  s=h*z;
808  }
809  f=c*g+s*y;
810  x=c*y-s*g;
811  for (jj=1;jj<=m;jj++) {
812  y=a[jj][j];
813  z=a[jj][i];
814  a[jj][j]=y*c+z*s;
815  a[jj][i]=z*c-y*s;
816  }
817  }
818  rv1[l]=0.0;
819  rv1[k]=f;
820  w[k]=x;
821  }
822  }
823 }

◆ vkvFastV()

double Trk::vkvFastV ( double *  p1,
double *  p2,
const double *  vRef,
double  dbmag,
double *  out 
)

Definition at line 42 of file VKvFast.cxx.

43 {
44  double d__1;
45  double diff, coef, cent1[2], cent2[2], angle, cross[6];/* was [3][2] */
46  double r1, r2, z1, z2, a01[3], a02[3], dc, an[2];
47  double ar1, ar2, xd1, xd2, yd1, yd2, dz1, dz2, pt1, pt2, pz1, pz2, det;
48  double loc_bmag;
49 
50 
51 #define cross_ref(a_1,a_2) cross[(a_2)*3 + (a_1) - 4]
52 
53 /* ---- */
54  /* Parameter adjustments */
55  --out;
56  --p2;
57  --p1;
58 
59  /* Function Body */
60  loc_bmag = dbmag;
61  if (dbmag <= .1) {loc_bmag = 0.1;} // To avoid ZERO magnetic field
62 /* ---- */
63  double psum[3]={0.,0.,0.}; double ptmp[3]={0.,0.,0.};
64  vkPerigeeToP(&p1[3],ptmp,loc_bmag); psum[0]+=ptmp[0];psum[1]+=ptmp[1];psum[2]+=ptmp[2];
65  vkPerigeeToP(&p2[3],ptmp,loc_bmag); psum[0]+=ptmp[0];psum[1]+=ptmp[1];psum[2]+=ptmp[2];
66 /*------*/
67  r1 = 1. / p1[5];
68  r2 = 1. / p2[5];
69  ar1 = std::abs(r1);
70  ar2 = std::abs(r2);
71 // pt1 = ar1 * loc_bmag * .00299979; // For GeV and CM
72 // pt2 = ar2 * loc_bmag * .00299979;
73 // pt1 = ar1 * loc_bmag * .299979; // For MeV and MM
74 // pt2 = ar2 * loc_bmag * .299979;
75  pt1 = ar1 * loc_bmag * vkalMagCnvCst; // from CommonPars.h
76  pt2 = ar2 * loc_bmag * vkalMagCnvCst;
77  pz1 = pt1 / tan(p1[3]);
78  pz2 = pt2 / tan(p2[3]);
79 /* --- */
80  xd1 = cos(p1[4]);
81 /* Need for calculation of Z of crossing point */
82  xd2 = cos(p2[4]);
83  yd1 = sin(p1[4]);
84  yd2 = sin(p2[4]);
85 /* --- Point of minimal approach to the beam */
86  a01[0] = p1[1] * yd1;
87  a01[1] = -p1[1] * xd1;
88  a01[2] = p1[2];
89  a02[0] = p2[1] * yd2;
90  a02[1] = -p2[1] * xd2;
91  a02[2] = p2[2];
92 /* -- coordinates of centres of trajectories */
93  cent1[0] = a01[0] - r1 * yd1;
94  cent1[1] = a01[1] + r1 * xd1;
95  cent2[0] = a02[0] - r2 * yd2;
96  cent2[1] = a02[1] + r2 * xd2;
97 /* -- */
98  an[0] = cent2[0] - cent1[0];
99  an[1] = cent2[1] - cent1[1];
100  dc = sqrt(an[0]*an[0] + an[1]*an[1]);
101  an[0] /= dc;
102  an[1] /= dc;
103 /* -- Single point*/
104  if (dc <= std::abs(ar1 - ar2)) {
105  if (ar1 < ar2) {
106  cross_ref(1, 1) = ar1 / dc * (cent1[0] - cent2[0]) + cent1[0];
107  cross_ref(1, 2) = ar2 / dc * (cent1[0] - cent2[0]) + cent2[0];
108  cross_ref(2, 1) = ar1 / dc * (cent1[1] - cent2[1]) + cent1[1];
109  cross_ref(2, 2) = ar2 / dc * (cent1[1] - cent2[1]) + cent2[1];
110  } else {
111  cross_ref(1, 1) = ar1 / dc * (cent2[0] - cent1[0]) + cent1[0];
112  cross_ref(1, 2) = ar2 / dc * (cent2[0] - cent1[0]) + cent2[0];
113  cross_ref(2, 1) = ar1 / dc * (cent2[1] - cent1[1]) + cent1[1];
114  cross_ref(2, 2) = ar2 / dc * (cent2[1] - cent1[1]) + cent2[1];
115  }
116  angle = vkvang_(&cross_ref(1, 1), cent1, &r1, &xd1, &yd1);
117  z1 = pz1 * r1 * angle / pt1 + a01[2];
118  angle = vkvang_(&cross_ref(1, 2), cent2, &r2, &xd2, &yd2);
119  z2 = pz2 * r2 * angle / pt2 + a02[2];
120  //diffz = std::abs(z2 - z1);
121  out[1] = (cross_ref(1, 1) + cross_ref(1, 2)) / 2.;
122  out[2] = (cross_ref(2, 1) + cross_ref(2, 2)) / 2.;
123  out[3] = (z1 + z2) / 2.;
124  return std::abs(z1 - z2);
125  }
126 /* ---------------------------------------------------------- */
127  double bestZdiff=0.;
128  diff = dc - (ar1 + ar2);
129  if (diff < 0.) {
130 /* 2 distinct points, A1 & A2. */
131  coef = (r1*r1 + dc*dc - r2*r2) / (dc * 2);
132  if (r1*r1 - coef*coef > 0.) {
133  det = sqrt(r1 * r1 - coef * coef);
134  } else {
135  det = 0.;
136  }
137  cross_ref(1, 1) = cent1[0] + coef * an[0] + det * an[1];
138  cross_ref(2, 1) = cent1[1] + coef * an[1] - det * an[0];
139  cross_ref(3, 1) = 0.;
140  cross_ref(1, 2) = cent1[0] + coef * an[0] - det * an[1];
141  cross_ref(2, 2) = cent1[1] + coef * an[1] + det * an[0];
142  cross_ref(3, 2) = 0.;
143 /* -First cross */
144  angle = vkvang_(&cross_ref(1, 1), cent1, &r1, &xd1, &yd1);
145  z1 = pz1 * r1 * angle / pt1 + a01[2];
146  angle = vkvang_(&cross_ref(1, 1), cent2, &r2, &xd2, &yd2);
147  z2 = pz2 * r2 * angle / pt2 + a02[2];
148  dz1 = std::abs(z2 - z1);
149  cross_ref(3, 1) = (z1 + z2) / 2.;
150 /* -Second cross */
151  angle = vkvang_(&cross_ref(1, 2), cent1, &r1, &xd1, &yd1);
152  z1 = pz1 * r1 * angle / pt1 + a01[2];
153  angle = vkvang_(&cross_ref(1, 2), cent2, &r2, &xd2, &yd2);
154  z2 = pz2 * r2 * angle / pt2 + a02[2];
155  dz2 = std::abs(z2 - z1);
156  cross_ref(3, 2) = (z1 + z2) / 2.;
157 /* if reterence vertex is present -> check 2D mom direction -> must be avay from it*/
158  if(vRef && std::abs(dz1-dz2)<5.){
159  double dir1=ptmp[0]*(cross_ref(1,1)-vRef[0])+ptmp[1]*(cross_ref(2,1)-vRef[1]);
160  double dir2=ptmp[0]*(cross_ref(1,2)-vRef[0])+ptmp[1]*(cross_ref(2,2)-vRef[1]);
161  if(dir1*dir2<0){ // points are on different sides of ref. vertex
162  if(dir1<0) dz1+=1000.;
163  if(dir2<0) dz2+=1000.;
164  }
165  }
166 /* - choice of best dz */
167 
168  if (dz1 < dz2) {
169  out[1] = cross_ref(1, 1);
170  out[2] = cross_ref(2, 1);
171  out[3] = cross_ref(3, 1);
172  bestZdiff=dz1;
173  } else {
174  out[1] = cross_ref(1, 2);
175  out[2] = cross_ref(2, 2);
176  out[3] = cross_ref(3, 2);
177  bestZdiff=dz2;
178  }
179  } else {
180  cross_ref(1, 1) = (ar1 * cent2[0] + ar2 * cent1[0]) / (ar1 + ar2);
181  cross_ref(2, 1) = (ar1 * cent2[1] + ar2 * cent1[1]) / (ar1 + ar2);
182  out[1] = cross_ref(1, 1);
183  out[2] = cross_ref(2, 1);
184  out[3] = 0.;
185  d__1 = r1 * dc / (ar1 + ar2);
186  angle = vkvang_(cross, cent1, &d__1, &xd1, &yd1);
187  z1 = pz1 * r1 * angle / pt1 + a01[2];
188  d__1 = r2 * dc / (ar1 + ar2);
189  angle = vkvang_(cross, cent2, &d__1, &xd2, &yd2);
190  z2 = pz2 * r2 * angle / pt2 + a02[2];
191  out[3] = (z1 + z2) / 2.;
192  bestZdiff = std::abs(z1 - z2);
193  }
194  return bestZdiff;
195 }

◆ vpderiv()

void Trk::vpderiv ( bool  UseTrackErr,
long int  Charge,
const double *  pari0,
double *  covi,
double *  vrtref,
double *  covvrtref,
double *  drdpar,
double *  dwgt,
double *  rv0,
VKalVrtControl FitCONTROL 
)

Definition at line 16 of file VtDeriv.cxx.

18 {
19  /* Initialized data */
20 
21  double dshft[6] = { 1.e-4, 1.e-4, 1.e-4, 1.e-4, 1.e-4, 1.e-4}; //step for each parameter
22  /* Symmetric version for derivatives calculation*/
23  double DrvCoef[4] = {-2., -1., 1.,2.};
24 
25  /* Local variables */
26  double pari[6], covd[15], dcov[3], rvec[50]; /* was [2][6*4+1] */
27  double paro[5];
28  int j, ij, ip, ipp, id=0;
29  double dwgt0[3]={0.,0.,0.};
30  //double deriv[6], dchi2[4*6+1]; //VK for debugging
31  double cs, pp, sn, pt, rho;
32  double covdtr[15], ctg, par[5], cnv[36]; /* was [6][6] */
33 
34 #define rvec_ref(a_1,a_2) rvec[(a_2)*2 + (a_1) - 1]
35 #define drdpar_ref(a_1,a_2) drdpar[(a_2)*2 + (a_1)]
36 #define cnv_ref(a_1,a_2) cnv[(a_2)*6 + (a_1) - 7]
37 
38 /* ---------------------------------------------------------- */
39 /* Subroutine for derivative calculations */
40 /* Input: */
41 /* Charge - charge of track ( +1,0,-1 ) */
42 /* PARI0(1:3) - Vertex of particle */
43 /* PARI0(4:6) - Momentum of particle */
44 /* COVI(21) - symmetric covariance matrix */
45 /* BMAG - magnetic field */
46 /* UseTrackErr =false Fitted track is assumed errorless */
47 /* only vertex error is used */
48 /* may be used for constraint */
49 /* =true Fitted track error is added */
50 /* Output: */
51 /* Deriv(6) - Chi2 derivatives for debugging */
52 /* drdpar - derivatives */
53 /* rv0[2] - track impact vs vertex */
54 /* dwgt[3] - track impact covarinance */
55 /* ---------------------------------------------------------- */
56  /* Parameter adjustments */
57  drdpar -= 3;
58  --covvrtref;
59 
60  /* Function Body */
61 /* --------------------- */
62  double constB =FitCONTROL->vk_forcft.localbmag * vkalMagCnvCst ;
63 
64  for (ip = 0; ip <= 4*6; ++ip) { // Number of points * Number of parameters
65 /* -- Input parameters */
66  pari[0] = pari0[0];
67  pari[1] = pari0[1];
68  pari[2] = pari0[2];
69  pari[3] = pari0[3];
70  pari[4] = pari0[4];
71  pari[5] = pari0[5];
72 // ipp - parameter number, id - number of step
73  ipp = ip; while(ipp>6)ipp-=6;
74  if(ip>=1 && ip<=6 ) id=0;
75  if(ip>=7 && ip<=12) id=1;
76  if(ip>=13 && ip<=18) id=2;
77  if(ip>=19 && ip<=24) id=3;
78  if (ip != 0) pari[ipp - 1] *= (dshft[ipp-1]*DrvCoef[id] + 1.);
79 /* -- */
80  pt = sqrt(pari[3]*pari[3] + pari[4]*pari[4]);
81  pp = pt*pt + pari[5]*pari[5];
82  cs = pari[3] / pt;
83  sn = pari[4] / pt;
84  ctg = pari[5] / pt;
85  rho = Charge * constB / pt; // Sign of charge coinside with sign of curvature!!!
86 /* -- Output parameters */
87  par[0] = 0.;
88  par[1] = 0.;
89  par[2] = acos(pari[5] / sqrt(pp));
90  if(par[2]<1.e-5) par[2]=1.e-5;
91  if(par[2]>M_PI-1.e-5) par[2]=M_PI-1.e-5;
92  par[3] = atan2(pari[4], pari[3]);
93  par[4] = rho;
94  if (Charge == 0) par[4] = constB / pt;
95 /* -- */
96  cnv_ref(1, 1) = sn;
97  cnv_ref(2, 1) = -cs;
98  cnv_ref(3, 1) = 0.;
99  cnv_ref(4, 1) = 0.;
100  cnv_ref(5, 1) = 0.;
101  cnv_ref(6, 1) = 0.;
102 /* -- */
103  cnv_ref(1, 2) = -cs * ctg;
104  cnv_ref(2, 2) = -sn * ctg;
105  cnv_ref(3, 2) = 1.;
106  cnv_ref(4, 2) = 0.;
107  cnv_ref(5, 2) = 0.;
108  cnv_ref(6, 2) = 0.;
109 /* -- */
110  cnv_ref(1, 3) = 0.;
111  cnv_ref(2, 3) = 0.;
112  cnv_ref(3, 3) = 0.;
113  cnv_ref(4, 3) = pari[5] * pari[3] / pp / pt;
114  cnv_ref(5, 3) = pari[5] * pari[4] / pp / pt;
115  cnv_ref(6, 3) = -pt / pp;
116 /* -- */
117  cnv_ref(1, 4) = 0.;
118  cnv_ref(2, 4) = 0.;
119  if (Charge)cnv_ref(1, 4) = -cs * rho; // For charged tracks only
120  if (Charge)cnv_ref(2, 4) = -sn * rho; //
121  cnv_ref(3, 4) = 0.;
122  cnv_ref(4, 4) = -pari[4] / (pt * pt);
123  cnv_ref(5, 4) = pari[3] / (pt * pt);
124  cnv_ref(6, 4) = 0.;
125 /* -- */
126  cnv_ref(1, 5) = 0.;
127  cnv_ref(2, 5) = 0.;
128  cnv_ref(3, 5) = 0.;
129  cnv_ref(4, 5) = -pari[3] * rho / (pt * pt);
130  cnv_ref(5, 5) = -pari[4] * rho / (pt * pt);
131  if ( Charge == 0) {cnv_ref(4, 5) = -pari[3] * constB / (pt*pt*pt);}
132  if ( Charge == 0) {cnv_ref(5, 5) = -pari[4] * constB / (pt*pt*pt);}
133  cnv_ref(6, 5) = 0.;
134 /* -- not needed really but... */
135  cnv_ref(1, 6) = cnv_ref(2, 6) = cnv_ref(3, 6) = cnv_ref(4, 6) = cnv_ref(5, 6) = cnv_ref(6, 6) = 0.;
136 
137  tdasatVK(cnv, &covi[0], covd, 5, 6);
138 
139 /* -- Translation to New Reference Point */
140  Trk::vkalPropagator::Propagate(-999, Charge, par, covd, pari, vrtref, paro, covdtr, FitCONTROL);
141 
142 
143 
144 /* -- Now impact significance */
145 /* X=paro(1)*sn, Y=-paro(1)*cs */
146  sn = sin(paro[3]);
147  cs = cos(paro[3]);
148 /* -- New error version */
149  cnv_ref(1, 1) = -sn;
150  cnv_ref(1, 2) = cs;
151  cnv_ref(1, 3) = 0.;
152  cnv_ref(2, 1) = sn / tan(paro[2]);
153  cnv_ref(2, 2) = cs / tan(paro[2]);
154  cnv_ref(2, 3) = -1.;
155  dcov[0] = 0.;
156  dcov[1] = 0.;
157  dcov[2] = 0.;
158  for (int i = 1; i <= 3; ++i) {
159  for (j = 1; j <= 3; ++j) {
160  ij = i > j ? i : j;
161  ij = ij * (ij - 1) / 2 + ( i < j ? i : j );
162  dcov[0] += cnv_ref(1, i) * cnv_ref(1, j) * covvrtref[ij];
163  dcov[2] += cnv_ref(2, i) * cnv_ref(2, j) * covvrtref[ij];
164  dcov[1] += cnv_ref(1, i) * cnv_ref(2, j) * covvrtref[ij];
165  }
166  }
167 /* --------------------------------------------------------------- */
168  if( UseTrackErr ){ // Add track error if needed
169  dcov[0] += covdtr[0];
170  dcov[1] += covdtr[1];
171  dcov[2] += covdtr[2];
172  }
173 /*---------------------------------------------------------------- */
174 // Weight matrix and chi2 for given shift
175 //
176  int jerr=cfdinv(dcov, &dwgt[0], -2); if(jerr){jerr=cfdinv(dcov, &dwgt[0], 2); if(jerr){dwgt[0]=dwgt[2]=1.e6; dwgt[1]=0.;}};
177  //dchi2[ip] = sqrt(fabs(dwgt[0]*paro[0]*paro[0] + 2.*dwgt[1]*paro[0]*paro[1] + dwgt[2]*paro[1]*paro[1]));
178  rvec_ref(1, ip) = paro[0];
179  rvec_ref(2, ip) = paro[1];
180  if (ip == 0) { //Save weight matrix for output
181  dwgt0[0] = dwgt[0];
182  dwgt0[1] = dwgt[1];
183  dwgt0[2] = dwgt[2];
184  }
185  }
186 /* ---------------------------------------------------------------- */
187 // Now calculate derivatives themselves
188 //
189  for (int i = 1; i <= 6; ++i) {
190  //deriv[i-1] = (dchi2[i] -8.*dchi2[i+6] +8.*dchi2[i+12]-dchi2[i+18] ) / (12.*dshft[i-1]*pari0[i-1]);
191  drdpar_ref(1,i) = (rvec_ref(1,i) -8.*rvec_ref(1,i+6) +8.*rvec_ref(1,i+12) -rvec_ref(1,i+18)) / (12.*dshft[i-1]*pari0[i-1]);
192  drdpar_ref(2,i) = (rvec_ref(2,i) -8.*rvec_ref(2,i+6) +8.*rvec_ref(2,i+12) -rvec_ref(2,i+18)) / (12.*dshft[i-1]*pari0[i-1]);
193  }
194 //std::cout<<deriv[0]<<", "<<deriv[1]<<", "<<deriv[2]<<", "<<deriv[3]<<", "<<deriv[4]<<", "<<deriv[5]<<'\n';
195 //std::cout<<drdpar_ref(1, 1)<<", "<<drdpar_ref(1, 2)<<", "<<drdpar_ref(1, 3)<<", "<<drdpar_ref(1, 4)<<
196 // ", "<<drdpar_ref(1, 5)<<", "<<drdpar_ref(1, 6)<<'\n';
197 //std::cout<<drdpar_ref(2, 1)<<", "<<drdpar_ref(2, 2)<<", "<<drdpar_ref(2, 3)<<", "<<drdpar_ref(1, 4)<<
198 // ", "<<drdpar_ref(2, 5)<<", "<<drdpar_ref(2, 6)<<'\n';
199 //std::cout<<"---------------------"<<'\n';
200 //
201 // Output parameters
202 //
203 
204  rv0[0] = rvec_ref(1, 0);
205  rv0[1] = rvec_ref(2, 0);
206  dwgt[0] = dwgt0[0];
207  dwgt[1] = dwgt0[1];
208  dwgt[2] = dwgt0[2];
209 
210 //std::cout<<" VpDerivR,Z="<<rv0[0]<<", "<<rv0[1]<<'\n';
211 //std::cout<<" Ref="<<vrtref[0]<<", "<<vrtref[1]<<", "<<vrtref[2]<<'\n';
212 #undef cnv_ref
213 #undef drdpar_ref
214 #undef rvec_ref
215 }

◆ vtcfit()

int Trk::vtcfit ( VKVertex vk)

Definition at line 293 of file VtCFit.cxx.

293  {
294 
295  double dxyz[3], xyzt[3], eigv[8];
296  double dpipj[3][3] /* was [3][3] */;
297  double drdpy[2][3] /* was [2][3] */;
298  double drdvy[2][3] /* was [2][3] */;
299  double pyv[3][3] /*was [3][3]*/;
300  double vyv[3][3] /*was [3][3]*/;
301  double wa[6], stv[3], wgtvrtd[6], tv[3];
302 
303  int ic, jj, it, jt, ii, kt;
304  int j, k, l;
305 
306 #define ader_ref(a_1,a_2) vk->ader[(a_2)*(vkalNTrkM*3+3) + (a_1) - (vkalNTrkM*3+4)]
307 #define cvder_ref(a_1,a_2) vk->FVC.cvder[(a_2)*2 + (a_1) - 3]
308 #define dcv_ref(a_1,a_2) vk->FVC.dcv[(a_2)*6 + (a_1) - 7]
309 
310  /* ************************************************************************/
311  /* Created : 14-MAY-2008 Author : V.KOSTYUKHIN (INFN) */
312  /* ********* */
313  /* Arguments : Input : NTRK : number of tracks */
314  /* ICH(1:NTRK) : charge */
315  /* PAR(1:5,1:NTRK) : "perigee" parameters */
316  /* 1 : epsilon (impact par. in xy projection, with sign)*/
317  /* 2 : z coordinate */
318  /* 3 : theta angle */
319  /* 4 : phi angle */
320  /* 5 : 1/R (R = radius of curvature, with sign) */
321  /* 0.0029979246d0/Pt if charge=0 */
322  /* WGT(1:15,1:NTRK) : weight matrix on PAR */
323  /* :in case of zero charge WGT(15) must be */
324  /* :error of 0.0029979246d0/Pt with correlation*/
325  /* XYZ(1:3) : approximate coordinates of the vertex*/
326  /* PAR0(1:3) : approximate parameters of tracks at*/
327  /* the vertex(result of pxfvtx fit) */
328  /* Output : XYZF(1:3) : fitted coordinates of the vertex */
329  /* PARF(1:3,1:NTRK) : fitted parameters at THE vertex*/
330  /* 1 : theta */
331  /* 2 : phi */
332  /* 3 : 1/R */
333  /* CHI2 : chi2 of the fit */
334  /* CHI2TR(I)=CONTRIBUTION OF TRACK I TO THE */
335  /* TOTAL CHI2 */
336 
337  /* Errors : IERR = 1 : too many tracks (NTRK > NTRMAX) */
338  /* IERR = 2 : covariance or weight matrix not positive */
339  /**************************************************************************/
340 
341  /* -------------------------------------------- */
342  /* Fit results needed in other calculations */
343  /* -------------------------------------------- */
344  /* For close to vertex constraint */
345  /* For step constraint */
346  /* -- Derivatives and others for constraint */
347  /* ---------------------------------------------------------------------- */
348 
349  long int IERR = 0;
350  int NTRK = vk->TrackList.size();
351  double xyz[3]={vk->iniV[0],vk->iniV[1],vk->iniV[2]};
352  double twb[9];
353  double twci[6];
354  double twbci[9];
355  double xyzf[3];
356 
357  vk->truncatedStep=false;
358  if ( NTRK > vkalNTrkM ) return 1;
359 
360  std::unique_ptr<double[]> dphi = std::unique_ptr<double[]>(new double[NTRK]);
361  std::unique_ptr<double[]> deps = std::unique_ptr<double[]>(new double[NTRK]);
362  std::unique_ptr<double[]> drho = std::unique_ptr<double[]>(new double[NTRK]);
363  std::unique_ptr<double[]> dtet = std::unique_ptr<double[]>(new double[NTRK]);
364  std::unique_ptr<double[]> dzp = std::unique_ptr<double[]>(new double[NTRK]);
365 
366  for (int i=0; i<3; ++i) { tv[i] = 0.; stv[i] = 0.;}
367  for (int i=0; i<6; ++i) { vk->wa[i] = 0.; wa[i] = 0.;}
368  for (k=0; k<2; k++) { for(j=0; j<3; j++) drdvy[k][j] = drdpy[k][j] = 0.;};
369  for (k=0; k<3; k++) { for(j=0; j<3; j++) pyv[k][j] = vyv[k][j] = 0.;};
370 
371  /* =================================================================== */
372  /* loop over the tracks */
373 
374  if (vk->passNearVertex) {
375  /* dR/dV*Y and dR/dV*Y*dR/dV f */
376  drdvy[0][0]= cvder_ref(1, 1)*vk->FVC.ywgt[0] + cvder_ref(2, 1)*vk->FVC.ywgt[1];
377  drdvy[1][0]= cvder_ref(1, 1)*vk->FVC.ywgt[1] + cvder_ref(2, 1)*vk->FVC.ywgt[2];
378  drdvy[0][1]= cvder_ref(1, 2)*vk->FVC.ywgt[0] + cvder_ref(2, 2)*vk->FVC.ywgt[1];
379  drdvy[1][1]= cvder_ref(1, 2)*vk->FVC.ywgt[1] + cvder_ref(2, 2)*vk->FVC.ywgt[2];
380  drdvy[0][2]= cvder_ref(1, 3)*vk->FVC.ywgt[0] + cvder_ref(2, 3)*vk->FVC.ywgt[1];
381  drdvy[1][2]= cvder_ref(1, 3)*vk->FVC.ywgt[1] + cvder_ref(2, 3)*vk->FVC.ywgt[2];
382  for (ii = 1; ii <= 3; ++ii) { /* Matrix dR/dV*Y*dR/dV */
383  for (jj = 1; jj <= 3; ++jj) {
384  vyv[ii-1][jj-1] = drdvy[0][ii-1]*cvder_ref(1, jj) + drdvy[1][ii-1]*cvder_ref(2, jj);
385  }
386  }
387  }
388 
389  for ( kt = 0; kt < NTRK; ++kt) {
390  VKTrack* trk = vk->TrackList[kt].get();
391  double theta_ini =trk->iniP[0];
392  double phi_ini =trk->iniP[1];
393  double invR_ini =trk->iniP[2];
394  /* "perigee" parameters EPS and ZP if the trajectory goes through XYZ */
395  /* and its theta,phi,1/R at perigee are equal to the values at input*/
396  double cotth = 1. / tan( theta_ini ); /* theta at vertex */
397  double cosf = cos(phi_ini);
398  double sinf = sin(phi_ini);
399  double uu = xyz[0]*cosf + xyz[1]*sinf;
400  double vv = xyz[1]*cosf - xyz[0]*sinf;
401  double phip,zp,eps;
402  if ( trk->Charge ) {
403  eps = -vv - uu*uu * invR_ini / 2.;
404  zp = -uu * (1. - vv * invR_ini) * cotth; //xyz[2] is added later to gain precision
405  phip = -uu * invR_ini; //phi_ini is added later to gain precision
406  } else {
407  eps = -vv;
408  zp = -uu * cotth;
409  phip = 0.;
410  }
411 
412  /* contribution of this track to chi2 with initial values */
413 
414  deps[kt] = trk->a0() - eps;
415  dzp[kt] = trk->z() - xyz[2]; // Precision
416  dzp[kt]-= zp;
417  dtet[kt] = trk->theta() - theta_ini;
418  dphi[kt] = trk->phi() - phi_ini; // Precision
419  dphi[kt]-= phip;
420  drho[kt] = trk->invR() - invR_ini;
421  while(dphi[kt] > M_PI)dphi[kt]-=2.*M_PI;
422  while(dphi[kt] < -M_PI)dphi[kt]+=2.*M_PI;
423 
424 
425  /* derivatives (deriv1) of perigee param. w.r.t. X,Y,Z (vertex) uu=Q, vv=R */
426  double d11 = sinf - ( uu*cosf *invR_ini);
427  double d12 = -cosf - ( uu*sinf *invR_ini);
428  double d21 = -cosf * cotth + ( (vv*cosf-uu*sinf)*cotth *invR_ini);
429  double d22 = -sinf * cotth + ( (vv*sinf+uu*cosf)*cotth *invR_ini);
430  //double d23 = 1.; //VK for reference
431  double d41 = -cosf * invR_ini;
432  double d42 = -sinf * invR_ini;
433  if (trk->Charge == 0) {
434  d11 = sinf;
435  d12 = -cosf;
436  d21 = -cosf * cotth;
437  d22 = -sinf * cotth;
438  d41 = 0.;
439  d42 = 0.;
440  }
441 
442  /* matrix DW = (deriv1)t * weight */
443  double dw11 = d11 * trk->WgtM[0] + d21 * trk->WgtM[1] + d41 * trk->WgtM[6];
444  double dw12 = d11 * trk->WgtM[1] + d21 * trk->WgtM[2] + d41 * trk->WgtM[7];
445  double dw13 = d11 * trk->WgtM[3] + d21 * trk->WgtM[4] + d41 * trk->WgtM[8];
446  double dw14 = d11 * trk->WgtM[6] + d21 * trk->WgtM[7] + d41 * trk->WgtM[9];
447  double dw15 = d11 * trk->WgtM[10]+ d21 * trk->WgtM[11]+ d41 * trk->WgtM[13];
448 
449 
450  double dw21 = d12 * trk->WgtM[0] + d22 * trk->WgtM[1] + d42 * trk->WgtM[6];
451  double dw22 = d12 * trk->WgtM[1] + d22 * trk->WgtM[2] + d42 * trk->WgtM[7];
452  double dw23 = d12 * trk->WgtM[3] + d22 * trk->WgtM[4] + d42 * trk->WgtM[8];
453  double dw24 = d12 * trk->WgtM[6] + d22 * trk->WgtM[7] + d42 * trk->WgtM[9];
454  double dw25 = d12 * trk->WgtM[10]+ d22 * trk->WgtM[11]+ d42 * trk->WgtM[13];
455  double dw31 = trk->WgtM[1];
456  double dw32 = trk->WgtM[2];
457  double dw33 = trk->WgtM[4];
458  double dw34 = trk->WgtM[7];
459  double dw35 = trk->WgtM[11];
460 
461  /* summation of DW * DPAR to vector TV */
462  tv[0] += dw11 * deps[kt] + dw12 * dzp[kt];
463  tv[1] += dw21 * deps[kt] + dw22 * dzp[kt];
464  tv[2] += dw31 * deps[kt] + dw32 * dzp[kt];
465  tv[0] += dw13 * dtet[kt] + dw14 * dphi[kt] + dw15 * drho[kt];
466  tv[1] += dw23 * dtet[kt] + dw24 * dphi[kt] + dw25 * drho[kt];
467  tv[2] += dw33 * dtet[kt] + dw34 * dphi[kt] + dw35 * drho[kt];
468 
469  stv[0] += dw11 * deps[kt] + dw12 * dzp[kt];
470  stv[1] += dw21 * deps[kt] + dw22 * dzp[kt];
471  stv[2] += dw31 * deps[kt] + dw32 * dzp[kt];
472  stv[0] += dw13 * dtet[kt] + dw14 * dphi[kt] + dw15*drho[kt];
473  stv[1] += dw23 * dtet[kt] + dw24 * dphi[kt] + dw25*drho[kt];
474  stv[2] += dw33 * dtet[kt] + dw34 * dphi[kt] + dw35*drho[kt];
475 
476  /* derivatives (deriv2) of perigee param. w.r.t. theta,phi,1/R (vertex) uu=Q, vv=R */
477  double e12 = uu - invR_ini * vv * uu;
478  double e13 = -uu*uu / 2.;
479  double e21 = uu *(1. - vv*invR_ini) * (cotth*cotth + 1.);
480  double e22 = -vv*cotth + (vv*vv-uu*uu)*invR_ini*cotth;
481  double e23 = uu*vv*cotth;
482  double e43 = -uu + 2.*uu*vv*invR_ini;
483  /* if straight line, set to zero derivatives w.r.t. the curvature */
484  /* and curvature terms in derivatives */
485  if (trk->Charge == 0) {
486  e12 = uu;
487  e13 = 0.;
488  e21 = uu * (cotth*cotth + 1.);
489  e22 = -vv * cotth;
490  e23 = 0.;
491  e43 = 0.;
492  }
493 
494  /* matrix EW = (deriv2)t * weight */
495  double ew11 = e21 * trk->WgtM[1] + trk->WgtM[3];
496  double ew12 = e21 * trk->WgtM[2] + trk->WgtM[4];
497  double ew13 = e21 * trk->WgtM[4] + trk->WgtM[5];
498  double ew14 = e21 * trk->WgtM[7] + trk->WgtM[8];
499  double ew15 = e21 * trk->WgtM[11]+ trk->WgtM[12];
500  double ew21 = e12 * trk->WgtM[0] + e22 * trk->WgtM[1] + trk->WgtM[6];
501  double ew22 = e12 * trk->WgtM[1] + e22 * trk->WgtM[2] + trk->WgtM[7];
502  double ew23 = e12 * trk->WgtM[3] + e22 * trk->WgtM[4] + trk->WgtM[8];
503  double ew24 = e12 * trk->WgtM[6] + e22 * trk->WgtM[7] + trk->WgtM[9];
504  double ew25 = e12 * trk->WgtM[10]+ e22 * trk->WgtM[11]+ trk->WgtM[13];
505  double ew31 = e13 * trk->WgtM[0] + e23 * trk->WgtM[1] + e43 * trk->WgtM[6] + trk->WgtM[10];
506  double ew32 = e13 * trk->WgtM[1] + e23 * trk->WgtM[2] + e43 * trk->WgtM[7] + trk->WgtM[11];
507  double ew33 = e13 * trk->WgtM[3] + e23 * trk->WgtM[4] + e43 * trk->WgtM[8] + trk->WgtM[12];
508  double ew34 = e13 * trk->WgtM[6] + e23 * trk->WgtM[7] + e43 * trk->WgtM[9] + trk->WgtM[13];
509  double ew35 = e13 * trk->WgtM[10]+ e23 * trk->WgtM[11]+ e43 * trk->WgtM[13]+ trk->WgtM[14];
510 
511  /* computation of vector TT = EW * DPAR */
512  TWRK* t_trk=vk->tmpArr[kt].get();
513  t_trk->tt[0] = ew11*deps[kt] + ew12*dzp[kt];
514  t_trk->tt[1] = ew21*deps[kt] + ew22*dzp[kt];
515  t_trk->tt[2] = ew31*deps[kt] + ew32*dzp[kt];
516  t_trk->tt[0] += ew13*dtet[kt] + ew14*dphi[kt] + ew15*drho[kt];
517  t_trk->tt[1] += ew23*dtet[kt] + ew24*dphi[kt] + ew25*drho[kt];
518  t_trk->tt[2] += ew33*dtet[kt] + ew34*dphi[kt] + ew35*drho[kt];
519  if ( vk->passNearVertex ) {
520  for (j = 1; j <= 2; ++j) { /* Derivatives dR/dQi */
521  int i3=(kt+1)*3;
522  t_trk->drdp[j-1][0] = cvder_ref(j,4) * dcv_ref(4,i3 + 1) + cvder_ref(j,5) * dcv_ref(5,i3 + 1);
523  t_trk->drdp[j-1][1] = cvder_ref(j,4) * dcv_ref(4,i3 + 2) + cvder_ref(j,5) * dcv_ref(5,i3 + 2);
524  t_trk->drdp[j-1][2] = cvder_ref(j,4) * dcv_ref(4,i3 + 3) + cvder_ref(j,5) * dcv_ref(5,i3 + 3);
525  t_trk->drdp[j-1][0] += cvder_ref(j, 6) * dcv_ref(6, i3 + 1);
526  t_trk->drdp[j-1][1] += cvder_ref(j, 6) * dcv_ref(6, i3 + 2);
527  t_trk->drdp[j-1][2] += cvder_ref(j, 6) * dcv_ref(6, i3 + 3);
528  }
529  /* Matrix dR/dQ */
530  drdpy[0][0] = t_trk->drdp[0][0] * vk->FVC.ywgt[0] + t_trk->drdp[1][0] * vk->FVC.ywgt[1];
531  drdpy[1][0] = t_trk->drdp[0][0] * vk->FVC.ywgt[1] + t_trk->drdp[1][0] * vk->FVC.ywgt[2];
532  drdpy[0][1] = t_trk->drdp[0][1] * vk->FVC.ywgt[0] + t_trk->drdp[1][1] * vk->FVC.ywgt[1];
533  drdpy[1][1] = t_trk->drdp[0][1] * vk->FVC.ywgt[1] + t_trk->drdp[1][1] * vk->FVC.ywgt[2];
534  drdpy[0][2] = t_trk->drdp[0][2] * vk->FVC.ywgt[0] + t_trk->drdp[1][2] * vk->FVC.ywgt[1];
535  drdpy[1][2] = t_trk->drdp[0][2] * vk->FVC.ywgt[1] + t_trk->drdp[1][2] * vk->FVC.ywgt[2];
536  t_trk->tt[0] -= drdpy[0][0]*vk->FVC.rv0[0] + drdpy[1][0]*vk->FVC.rv0[1];
537  t_trk->tt[1] -= drdpy[0][1]*vk->FVC.rv0[0] + drdpy[1][1]*vk->FVC.rv0[1];
538  t_trk->tt[2] -= drdpy[0][2]*vk->FVC.rv0[0] + drdpy[1][2]*vk->FVC.rv0[1];
539  for (ii = 1; ii <= 3; ++ii) { /* Matrix dR/dQi*Y*dR/dV */
540  for (jj = 1; jj <= 3; ++jj) {
541  pyv[jj-1][ii-1] = drdpy[0][ii-1] * cvder_ref(1, jj) + drdpy[1][ii-1] * cvder_ref(2, jj);
542  }
543  }
544  }
545 
546  /* summation of (deriv1)t * weight * (deriv1) to matrix WA */
547  wa[0] += dw11 * d11 + dw12 * d21 + dw14 * d41;
548  wa[1] += dw11 * d12 + dw12 * d22 + dw14 * d42;
549  wa[2] += dw21 * d12 + dw22 * d22 + dw24 * d42;
550  wa[3] += dw12;
551  wa[4] += dw22;
552  wa[5] += dw32;
553  vk->wa[0] = vk->wa[0] + dw11 * d11 + dw12 * d21 + dw14 * d41;
554  vk->wa[1] = vk->wa[1] + dw11 * d12 + dw12 * d22 + dw14 * d42;
555  vk->wa[2] = vk->wa[2] + dw21 * d12 + dw22 * d22 + dw24 * d42;
556  vk->wa[3] += dw12;
557  vk->wa[4] += dw22;
558  vk->wa[5] += dw32;
559 
560  /* computation of matrix WB = (deriv1)t * weight * (deriv2) */
561  twb[0] = dw12 * e21 + dw13;
562  twb[1] = dw22 * e21 + dw23;
563  twb[2] = dw32 * e21 + dw33;
564  twb[3] = dw11 * e12 + dw12 * e22 + dw14;
565  twb[4] = dw21 * e12 + dw22 * e22 + dw24;
566  twb[5] = dw31 * e12 + dw32 * e22 + dw34;
567  twb[6] = dw11 * e13 + dw12 * e23 + dw14 * e43 + dw15;
568  twb[7] = dw21 * e13 + dw22 * e23 + dw24 * e43 + dw25;
569  twb[8] = dw31 * e13 + dw32 * e23 + dw34 * e43 + dw35;
570  if ( vk->passNearVertex ) {
571  twb[0] += pyv[0][0];
572  twb[1] += pyv[1][0];
573  twb[2] += pyv[2][0];
574  twb[3] += pyv[0][1];
575  twb[4] += pyv[1][1];
576  twb[5] += pyv[2][1];
577  twb[6] += pyv[0][2];
578  twb[7] += pyv[1][2];
579  twb[8] += pyv[2][2];
580  }
581 
582  /* computation of matrix WC = (deriv2)t * weight * (deriv2) */
583  vk->tmpArr[kt]->wc[0] = ew12 * e21 + ew13;
584  vk->tmpArr[kt]->wc[1] = ew22 * e21 + ew23;
585  vk->tmpArr[kt]->wc[3] = ew32 * e21 + ew33;
586  vk->tmpArr[kt]->wc[2] = ew21 * e12 + ew22 * e22 + ew24;
587  vk->tmpArr[kt]->wc[4] = ew31 * e12 + ew32 * e22 + ew34;
588  vk->tmpArr[kt]->wc[5] = ew31 * e13 + ew32 * e23 + ew34 * e43 + ew35;
589 
590  /* computation of matrices WCI = (WC)**(-1) and WBCI = WB * WCI */
591  IERR=cfdinv(&(vk->tmpArr[kt]->wc[0]), twci, -3);
592  if (IERR) {IERR=cfdinv(&(vk->tmpArr[kt]->wc[0]), twci, 3);}
593  if (IERR) return IERR;
594 
595 
596  twbci[0] = twb[0]*twci[0] + twb[3]*twci[1] + twb[6]*twci[3];
597  twbci[1] = twb[1]*twci[0] + twb[4]*twci[1] + twb[7]*twci[3];
598  twbci[2] = twb[2]*twci[0] + twb[5]*twci[1] + twb[8]*twci[3];
599  twbci[3] = twb[0]*twci[1] + twb[3]*twci[2] + twb[6]*twci[4];
600  twbci[4] = twb[1]*twci[1] + twb[4]*twci[2] + twb[7]*twci[4];
601  twbci[5] = twb[2]*twci[1] + twb[5]*twci[2] + twb[8]*twci[4];
602  twbci[6] = twb[0]*twci[3] + twb[3]*twci[4] + twb[6]*twci[5];
603  twbci[7] = twb[1]*twci[3] + twb[4]*twci[4] + twb[7]*twci[5];
604  twbci[8] = twb[2]*twci[3] + twb[5]*twci[4] + twb[8]*twci[5];
605 
606  /* subtraction of WBCI * (WB)t from matrix WA */
607  wa[0] = wa[0] - twbci[0]*twb[0] - twbci[3]*twb[3] - twbci[6]*twb[6];
608  wa[1] = wa[1] - twbci[0]*twb[1] - twbci[3]*twb[4] - twbci[6]*twb[7];
609  wa[2] = wa[2] - twbci[1]*twb[1] - twbci[4]*twb[4] - twbci[7]*twb[7];
610  wa[3] = wa[3] - twbci[0]*twb[2] - twbci[3]*twb[5] - twbci[6]*twb[8];
611  wa[4] = wa[4] - twbci[1]*twb[2] - twbci[4]*twb[5] - twbci[7]*twb[8];
612  wa[5] = wa[5] - twbci[2]*twb[2] - twbci[5]*twb[5] - twbci[8]*twb[8];
613 
614  /* subtraction of WBCI * TT from vector TV */
615  tv[0] = tv[0] - twbci[0] * vk->tmpArr[kt]->tt[0] - twbci[3] * vk->tmpArr[kt]->tt[1] - twbci[6] * vk->tmpArr[kt]->tt[2];
616  tv[1] = tv[1] - twbci[1] * vk->tmpArr[kt]->tt[0] - twbci[4] * vk->tmpArr[kt]->tt[1] - twbci[7] * vk->tmpArr[kt]->tt[2];
617  tv[2] = tv[2] - twbci[2] * vk->tmpArr[kt]->tt[0] - twbci[5] * vk->tmpArr[kt]->tt[1] - twbci[8] * vk->tmpArr[kt]->tt[2];
618  //Save to vertex ....
619  for( int tpn=0; tpn<9; tpn++){
620  vk->tmpArr[kt]->wb[tpn] = twb[tpn];
621  if(tpn<6)vk->tmpArr[kt]->wci[tpn] = twci[tpn];
622  vk->tmpArr[kt]->wbci[tpn] = twbci[tpn];
623  }
624  }
625  if (vk->useApriorVertex) {
626  for (ic = 0; ic < 3; ++ic) { xyzt[ic] = vk->apriorV[ic] - vk->refIterV[ic] - xyz[ic];}
627  for (ic = 0; ic < 6; ++ic) {wgtvrtd[ic] = vk->apriorVWGT[ic];}
628  wa[0] += wgtvrtd[0];
629  wa[1] += wgtvrtd[1];
630  wa[2] += wgtvrtd[2];
631  wa[3] += wgtvrtd[3];
632  wa[4] += wgtvrtd[4];
633  wa[5] += wgtvrtd[5];
634  vk->wa[0] += wgtvrtd[0];
635  vk->wa[1] += wgtvrtd[1];
636  vk->wa[2] += wgtvrtd[2];
637  vk->wa[3] += wgtvrtd[3];
638  vk->wa[4] += wgtvrtd[4];
639  vk->wa[5] += wgtvrtd[5];
640  tv[0] = tv[0] + xyzt[0] * wgtvrtd[0] + xyzt[1] * wgtvrtd[1] + xyzt[2] * wgtvrtd[3];
641  tv[1] = tv[1] + xyzt[0] * wgtvrtd[1] + xyzt[1] * wgtvrtd[2] + xyzt[2] * wgtvrtd[4];
642  tv[2] = tv[2] + xyzt[0] * wgtvrtd[3] + xyzt[1] * wgtvrtd[4] + xyzt[2] * wgtvrtd[5];
643  stv[0] = stv[0] + xyzt[0] * wgtvrtd[0] + xyzt[1] * wgtvrtd[1] + xyzt[2] * wgtvrtd[3];
644  stv[1] = stv[1] + xyzt[0] * wgtvrtd[1] + xyzt[1] * wgtvrtd[2] + xyzt[2] * wgtvrtd[4];
645  stv[2] = stv[2] + xyzt[0] * wgtvrtd[3] + xyzt[1] * wgtvrtd[4] + xyzt[2] * wgtvrtd[5];
646  }
647  //Save T vector(see Billoir...)
648  vk->T[0]=stv[0]; vk->T[1]=stv[1]; vk->T[2]=stv[2];
649 
650  //std::cout<<" newwa="<<wa[0]<<", "<<wa[1]<<", "<<wa[2]<<", "<<wa[3]<<", "<<wa[4]<<", "<<wa[5]<<'\n';
651 
652  /* solution of the linear system */
653  if ( !vk->passNearVertex ) { /* No correction for these constraints */
654  /* because solution is calculated with full error matrix*/
655  if( vk->ConstraintList.empty()){
656  double EigThreshold = 1.e-9;
657  vkGetEigVal(wa, eigv, 3);
658  if (eigv[0] < eigv[2] * EigThreshold) {
659  wa[0] += (eigv[2] * EigThreshold - eigv[0]);
660  wa[2] += (eigv[2] * EigThreshold - eigv[0]);
661  wa[5] += (eigv[2] * EigThreshold - eigv[0]);
662  }
663  }else{
664  vkGetEigVal(vk->wa, eigv, 3);
665  wa[0] += eigv[2] * 1.e-12; //Permanent addition works better than addition
666  wa[2] += eigv[2] * 1.e-12; // for small eigenvalues only.
667  wa[5] += eigv[2] * 1.e-12;
668  vk->wa[0] += eigv[2] * 1.e-12; //Permanent addition works better than addition
669  vk->wa[2] += eigv[2] * 1.e-12; // for small eigenvalues only.
670  vk->wa[5] += eigv[2] * 1.e-12;
671  }
672  }
673 
674  /* covariance matrix on vertex coordinates */
675  for(ii=0; ii<6; ii++) {if(std::isnan(wa[ii])) return -2;} // Matrix inversion failed
676  if(wa[0]<0 || wa[2]<0 || wa[5]<0) return -2; // Matrix elements must be positive!
677  IERR=cfdinv(wa, &(vk->fitVcov[0]), -3);
678  if (IERR) {IERR=cfdinv(wa, &(vk->fitVcov[0]), 3);} // last safety
679  if ( !vk->passNearVertex ) { if (IERR) return IERR; } // If nothing helps - detect failure (not for passNearVertex!!!)
680  else {vk->fitVcov[0]=1.;vk->fitVcov[1]=0;vk->fitVcov[2]=1.;vk->fitVcov[3]=0;vk->fitVcov[4]=0;vk->fitVcov[5]=1;}
681 
682  /* corrections to vertex coordinates */
683  dxyz[0] = vk->fitVcov[0]*tv[0] + vk->fitVcov[1]*tv[1] + vk->fitVcov[3]*tv[2];
684  dxyz[1] = vk->fitVcov[1]*tv[0] + vk->fitVcov[2]*tv[1] + vk->fitVcov[4]*tv[2];
685  dxyz[2] = vk->fitVcov[3]*tv[0] + vk->fitVcov[4]*tv[1] + vk->fitVcov[5]*tv[2];
686  for (j = 0; j < 3; ++j) {
687  vk->dxyz0[j] = dxyz[j];
688  vk->fitV[j] = xyzf[j] = vk->iniV[j] + dxyz[j];
689  }
690  //std::cout<< "NVertex Old="<<vk->iniV[0]<<", "<<vk->iniV[1]<<", "<<vk->iniV[2]<<" CloseV="<<vk->passNearVertex<<'\n';
691  //std::cout<<__func__<<":NVertex shift="<<dxyz[0]<<", "<<dxyz[1]<<", "<<dxyz[2]<<'\n';
692 
693 
694 
695 
696 
697  /*-----------------------------------------------------------*/
698  /* corrections to track parameters and covariance matrices */
699 
700  for (kt = 0; kt < NTRK; ++kt) { /* variation on PAR is WCI * TT - (WBCI)t * DXYZ */
701  for( int tpn=0; tpn<9; tpn++){
702  if(tpn<6)twci[tpn] = vk->tmpArr[kt]->wci[tpn];
703  twbci[tpn] = vk->tmpArr[kt]->wbci[tpn];
704  }
705  double tt1=vk->tmpArr[kt]->tt[0];
706  double tt2=vk->tmpArr[kt]->tt[1];
707  double tt3=vk->tmpArr[kt]->tt[2];
708  vk->tmpArr[kt]->parf0[0] = twci[0]*tt1 + twci[1]*tt2 + twci[3]*tt3 - twbci[0]*dxyz[0] - twbci[1]*dxyz[1] - twbci[2]*dxyz[2];
709  if( !std::isfinite(vk->tmpArr[kt]->parf0[0]) ) return -19; // Rare FPE presumably seen in trigger
710  vk->tmpArr[kt]->parf0[1] = twci[1]*tt1 + twci[2]*tt2 + twci[4]*tt3 - twbci[3]*dxyz[0] - twbci[4]*dxyz[1] - twbci[5]*dxyz[2];
711  if( !std::isfinite(vk->tmpArr[kt]->parf0[1]) ) return -19; // Rare FPE presumably seen in trigger
712  vk->tmpArr[kt]->parf0[2] = twci[3]*tt1 + twci[4]*tt2 + twci[5]*tt3 - twbci[6]*dxyz[0] - twbci[7]*dxyz[1] - twbci[8]*dxyz[2];
713  if( !std::isfinite(vk->tmpArr[kt]->parf0[2]) ) return -19; // Rare FPE presumably seen in trigger
714  if( (vk->TrackList[kt]->iniP[2] + vk->tmpArr[kt]->parf0[2]) * vk->TrackList[kt]->iniP[2] < 0 ){
715  vk->tmpArr[kt]->parf0[2]= - vk->TrackList[kt]->iniP[2]/4.; } // VK 15.12.2009 - Protection against change of sign
716  vk->TrackList[kt]->fitP[0] = vk->TrackList[kt]->iniP[0] + vk->tmpArr[kt]->parf0[0];
717  vk->TrackList[kt]->fitP[1] = vk->TrackList[kt]->iniP[1] + vk->tmpArr[kt]->parf0[1];
718  vk->TrackList[kt]->fitP[2] = vk->TrackList[kt]->iniP[2] + vk->tmpArr[kt]->parf0[2];
719  //std::cout<<__func__<<":NTrack shift="<<vk->tmpArr[kt]->parf0[0]<<", "<<vk->tmpArr[kt]->parf0[1]<<", "
720  // <<vk->tmpArr[kt]->parf0[2]<<'\n';
721  }
722  /* ------------------------------------------------------------ */
723  /* The same solution but through full matrix */
724  /* ------------------------------------------------------------ */
725  if ( vk->passNearVertex ) {
726  //std::cout <<" Std="<<vk->dxyz0[0]<<", "<<vk->dxyz0[1]<<", "<<vk->dxyz0[2]<<'\n';
727  stv[0] = stv[0] - drdvy[0][0] * vk->FVC.rv0[0] - drdvy[1][0] * vk->FVC.rv0[1];
728  stv[1] = stv[1] - drdvy[0][1] * vk->FVC.rv0[0] - drdvy[1][1] * vk->FVC.rv0[1];
729  stv[2] = stv[2] - drdvy[0][2] * vk->FVC.rv0[0] - drdvy[1][2] * vk->FVC.rv0[1];
730  //Save T vector(see Billoir...)
731  vk->T[0]=stv[0];vk->T[1]=stv[1];vk->T[2]=stv[2];
732  //
733  vk->wa[0] += vyv[0][0];
734  vk->wa[1] += vyv[1][0];
735  vk->wa[2] += vyv[1][1];
736  vk->wa[3] += vyv[2][0];
737  vk->wa[4] += vyv[2][1];
738  vk->wa[5] += vyv[2][2];
739  FullMTXfill(vk, vk->ader);
740  if ( vk->passNearVertex ) {
741  for (it = 1; it <= NTRK; ++it) {
742  drdpy[0][0] = vk->tmpArr[it-1]->drdp[0][0] * vk->FVC.ywgt[0] + vk->tmpArr[it-1]->drdp[1][0] * vk->FVC.ywgt[1];
743  drdpy[1][0] = vk->tmpArr[it-1]->drdp[0][0] * vk->FVC.ywgt[1] + vk->tmpArr[it-1]->drdp[1][0] * vk->FVC.ywgt[2];
744  drdpy[0][1] = vk->tmpArr[it-1]->drdp[0][1] * vk->FVC.ywgt[0] + vk->tmpArr[it-1]->drdp[1][1] * vk->FVC.ywgt[1];
745  drdpy[1][1] = vk->tmpArr[it-1]->drdp[0][1] * vk->FVC.ywgt[1] + vk->tmpArr[it-1]->drdp[1][1] * vk->FVC.ywgt[2];
746  drdpy[0][2] = vk->tmpArr[it-1]->drdp[0][2] * vk->FVC.ywgt[0] + vk->tmpArr[it-1]->drdp[1][2] * vk->FVC.ywgt[1];
747  drdpy[1][2] = vk->tmpArr[it-1]->drdp[0][2] * vk->FVC.ywgt[1] + vk->tmpArr[it-1]->drdp[1][2] * vk->FVC.ywgt[2];
748  for (jt = 1; jt <= NTRK; ++jt) { /* Matrix */
749  for (k = 0; k < 3; ++k) {
750  for (l = 0; l < 3; ++l) {
751  dpipj[k][l] = 0.;
752  for (j = 0; j < 2; ++j) {
753  dpipj[k][l] += vk->tmpArr[jt-1]->drdp[j][k] * drdpy[j][l];
754  }
755  }
756  }
757  for (k = 1; k <= 3; ++k) {
758  for (l = 1; l <= 3; ++l) {
759  ader_ref(it * 3 + k, jt * 3 + l) += dpipj[l-1][k-1];
760  }
761  }
762  }
763  }
764  }
765  //VK 27-Sep-2006 Add eigenvalue limitation for 7,8,9,10,13,14 constraints
766  double ArrTmp[9]; int ktmp=0;
767  for (k=1; k<=3; ++k) {
768  for (l=1; l<=k; ++l) { ArrTmp[ktmp++] = ader_ref(k,l); }}
769  vkGetEigVal(ArrTmp, eigv, 3);
770  double EigAddon=0.;
771  if( eigv[0]<0 ){EigAddon=eigv[0];}
772  for (k = 1; k <=3; ++k) {
773  ader_ref(k,k) = ader_ref(k,k) - EigAddon + eigv[2] * 1.e-18 ;
774  }
775  //----------------------------------------------------------------------------------
776  long int NParam = NTRK*3 + 3;
777  dsinv(NParam, vk->ader, vkalNTrkM*3+3, &IERR);
778  if ( IERR) return IERR;
779  double *fortst = new double[vkalNTrkM*3+3];
780  for (j = 0; j < 3; ++j) {
781  fortst[j] = stv[j];
782  for (ii=0; ii<NTRK; ++ii) { fortst[ii*3 +3 +j] = vk->tmpArr[ii]->tt[j];}
783  }
784  for (j=0; j<3; ++j) {
785  dxyz[j] = 0.;
786  for (ii=0; ii<NParam; ++ii) {dxyz[j] += ader_ref(j+1, ii+1) * fortst[ii];}
787  vk->dxyz0[j] = dxyz [j];
788  vk->fitV[j] = vk->iniV[j] + dxyz[j];
789  }
790  double tparf0[3]={0.};
791  for (it = 1; it <= NTRK; ++it) {
792  TWRK* t_trk=vk->tmpArr[it-1].get();
793  for (j=0; j<3; ++j) {
794  tparf0[j] = 0.;
795  for (ii = 1; ii <= NParam; ++ii) { tparf0[j] += ader_ref(it*3+j+1, ii)*fortst[ii-1];}
796  }
797  for (j=0; j<3; ++j) { t_trk->parf0[j] = tparf0[j];
798  vk->TrackList[it-1]->fitP[j] = vk->TrackList[it-1]->iniP[j] + tparf0[j];}
799  }
800  vk->fitVcov[0] = ader_ref(1, 1);
801  vk->fitVcov[1] = ader_ref(2, 1);
802  vk->fitVcov[2] = ader_ref(2, 2);
803  vk->fitVcov[3] = ader_ref(3, 1);
804  vk->fitVcov[4] = ader_ref(3, 2);
805  vk->fitVcov[5] = ader_ref(3, 3);
806  delete[] fortst;
807 
808  //std::cout<< "NVertex Full="<<vk->fitV[0]<<", "<<vk->fitV[1]<<", "<<vk->fitV[2]<<'\n';
809  //std::cout<< "NVertex Full shft="<<dxyz[0]<<", "<<dxyz[1]<<", "<<dxyz[2]<<'\n';
810  //double *tmpA=new double[3+3*NTRK+20];
811  //IERR = FullMCNSTfill( vk, vk->ader, tmpA);
812  //delete[] tmpA;
813  }
814  /* ------------------------------------------------------------ */
815  /* End of the solution with full matrix */
816  /* */
817  /* Now constraints */
818  /* ------------------------------------------------------------ */
819  double dCoefNorm = 0;
820  if ( !vk->ConstraintList.empty()) {
821  IERR = vtcfitc( vk );
822  if (IERR != 0) return IERR;
828  double* tmpB=new double[3+3*NTRK]; double* tmpA=new double[3+3*NTRK];
829  for (ii=0; ii<3; ++ii) {
830  tmpA[ii] = vk->fitV[ii] - vk->iniV[ii];
831  tmpB[ii] = vk->dxyz0[ii];
832  }
833  for ( it=0; it<NTRK; ++it) {
834  tmpA[0 +3*it+3] = vk->TrackList[it]->fitP[0] - vk->TrackList[it]->iniP[0];
835  tmpA[1 +3*it+3] = vk->TrackList[it]->fitP[1] - vk->TrackList[it]->iniP[1];
836  tmpA[2 +3*it+3] = vk->TrackList[it]->fitP[2] - vk->TrackList[it]->iniP[2];
837  tmpB[0 +3*it+3] = vk->tmpArr[it]->parf0[0];
838  tmpB[1 +3*it+3] = vk->tmpArr[it]->parf0[1];
839  tmpB[2 +3*it+3] = vk->tmpArr[it]->parf0[2];
840  }
841  double scalAA=0., scalAB=0.;
842  for (ii=0; ii<3+3*NTRK; ii++) scalAA += tmpA[ii]*tmpA[ii];
843  for (ii=0; ii<3+3*NTRK; ii++) scalAB += tmpA[ii]*tmpB[ii];
844  if(scalAB != 0.) dCoefNorm = -scalAA/scalAB;
845  //double scalCC;
846  //for (ii=0; ii<3+3*NTRK; ii++) scalCC += (tmpA[ii]+dCoefNorm*tmpB[ii])*(tmpA[ii]+dCoefNorm*tmpB[ii]); // Length of perp vector
847  delete[] tmpA; delete[] tmpB;
848 
849  //std::cout<<"VRTOLD="<<vk->fitV[0] - vk->iniV[0]<<", "<<vk->fitV[1] - vk->iniV[1]<<", "
850  // <<vk->fitV[2] - vk->iniV[2]<<'\n';
851  //for ( it=0; it<NTRK; ++it) std::cout<<"TRKOLD="<<vk->TrackList[it]->fitP[0] - vk->TrackList[it]->iniP[0]<<", "
852  // <<vk->TrackList[it]->fitP[1] - vk->TrackList[it]->iniP[1]<<", "
853  // <<vk->TrackList[it]->fitP[2] - vk->TrackList[it]->iniP[2]<<'\n';
854  //tmpA=new double[3+3*NTRK+20];
855  //IERR = FullMCNSTfill( vk, vk->ader, tmpA);
856  //delete[] tmpA;
857  }
858 
859  /* chi2 with fitted values */
860 
861  for (it = 0; it < NTRK; ++it) { //Check if curvature sign is changed or change in Pt is too big
862  if(vk->TrackList[it]->Id >= 0){
863  double Ratio=vk->TrackList[it]->fitP[2]/vk->TrackList[it]->Perig[4]; if(std::abs(Ratio)<1.)Ratio=1./Ratio;
864  if(Ratio<0. || Ratio > vkalAllowedPtChange ){
865  if(std::abs(vk->TrackList[it]->fitP[2])<std::abs(vk->TrackList[it]->Perig[4]) || Ratio<0 ){
866  vk->TrackList[it]->fitP[2]=vk->TrackList[it]->Perig[4]/vkalAllowedPtChange;
867  }else{
868  vk->TrackList[it]->fitP[2]=vk->TrackList[it]->Perig[4]*vkalAllowedPtChange;
869  }
870  }
871  }
872  }
873  //--Additional iterations along shift direction
874  bool improved=makePostFit( vk , wgtvrtd, dCoefNorm);
875  if(!improved)improved=makePostFit( vk , wgtvrtd, dCoefNorm); //Step truncation doesn't help. Make second pass
876  if(!improved)vk->truncatedStep=true;
877 
878  //-- If no additional iterations (for tests)
879  //makeNoPostFit( vk , wgtvrtd, dCoefNorm);
880 
881 
882  return 0;
883 
884 }

◆ vtcfitc()

int Trk::vtcfitc ( VKVertex vk)

Definition at line 16 of file VtCFitC.cxx.

17 {
18 
19  int ii,ic,it,jc,index;
20 
21  double tmp[3];
22 
23 /* -------------------------------------------------------- */
24 /* Start of constraint treatment */
25 /* -------------------------------------------------------- */
26  long int IERR = 0;
27  long int totNC=0; //total number of constraints
28  long int NTRK = vk->TrackList.size();
29  if (vk->ConstraintList.empty()) {return 0;}
30 //
31  double dxyz[3]={vk->dxyz0[0],vk->dxyz0[1],vk->dxyz0[2]}; //nonconstraint vertex shift
32 //
33 // Extruction of derivatives
34 //
35  std::vector<std::vector< const Vect3DF*> > tf0t; // derivative collectors
36  std::vector< const Vect3DF* > th0t; // derivative collectors
37  std::vector< double > taa; // derivative collectors
38  th0t.reserve(vk->ConstraintList.size() * vk->ConstraintList[0]->NCDim);
39  tf0t.reserve(vk->ConstraintList.size());
40 
41  for(ii=0; ii<(int)vk->ConstraintList.size();ii++){
42  totNC += vk->ConstraintList[ii]->NCDim;
43  for(ic=0; ic<(int)vk->ConstraintList[ii]->NCDim; ic++){
44  taa.push_back( vk->ConstraintList[ii]->aa[ic] );
45  th0t.push_back( &(vk->ConstraintList[ii]->h0t[ic]) );
46  std::vector< const Vect3DF* > tmpVec;
47  tmpVec.reserve(vk->ConstraintList[ii]->f0t.size());
48  for(it=0; it<(int)vk->ConstraintList[ii]->f0t.size(); it++){
49  tmpVec.push_back( &(vk->ConstraintList[ii]->f0t[it][ic]) );
50  }
51  tf0t.push_back( std::move(tmpVec) );
52  }
53  }
54  if(totNC==0)return 0;
55 //
56  std::vector< std::vector<double> > denom;
57  denom.reserve(totNC);
58  for(int ic=0; ic<totNC; ic++) denom.emplace_back( totNC, 0 );
59 //
60 // Start of calc
61 //
62  //This is deliberately written without make_unqiue to bypass auto intialization!!
63  std::unique_ptr< Vect3DF[] > al0( new Vect3DF[ totNC ]);
64  for(ic=0;ic<totNC; ic++){ al0[ic].X=0.; al0[ic].Y=0.; al0[ic].Z=0.;}
65  std::vector<double> anum(totNC,0.);
66  for (ic=0; ic<totNC; ++ic) {
67  for (it = 0; it<NTRK; ++it) {
68 
69 /* summation of WBCI * F0T into vector AL0 */
70  al0[ic].X += vk->tmpArr[it]->wbci[0] * tf0t[ic][it]->X
71  + vk->tmpArr[it]->wbci[3] * tf0t[ic][it]->Y
72  + vk->tmpArr[it]->wbci[6] * tf0t[ic][it]->Z;
73  al0[ic].Y += vk->tmpArr[it]->wbci[1] * tf0t[ic][it]->X
74  + vk->tmpArr[it]->wbci[4] * tf0t[ic][it]->Y
75  + vk->tmpArr[it]->wbci[7] * tf0t[ic][it]->Z;
76  al0[ic].Z += vk->tmpArr[it]->wbci[2] * tf0t[ic][it]->X
77  + vk->tmpArr[it]->wbci[5] * tf0t[ic][it]->Y
78  + vk->tmpArr[it]->wbci[8] * tf0t[ic][it]->Z;
79 
80  anum[ic] += vk->tmpArr[it]->parf0[0] * tf0t[ic][it]->X
81  + vk->tmpArr[it]->parf0[1] * tf0t[ic][it]->Y
82  + vk->tmpArr[it]->parf0[2] * tf0t[ic][it]->Z;
83 
84  }
85  al0[ic].X -= th0t[ic]->X;
86  al0[ic].Y -= th0t[ic]->Y;
87  al0[ic].Z -= th0t[ic]->Z;
88  anum[ic] = 2.*anum[ic] + dxyz[0] * 2. * th0t[ic]->X
89  + dxyz[1] * 2. * th0t[ic]->Y
90  + dxyz[2] * 2. * th0t[ic]->Z
91  + taa[ic];
92  }
93 
94 //std::cout<<" vertex="<<dxyz[0]<<", "<<dxyz[1]<<", "<<dxyz[2]<<'\n';
95 //std::cout<<" h0t="<<th0t[0].X<<", "<<th0t[0].Y<<", "<<th0t[0].Z<<'\n';
96 //std::cout<<" f0t="<<tf0t[0][0].X<<", "<<tf0t[0][0].Y<<", "<<tf0t[0][0].Z<<'\n';
97 //std::cout<<" f0t="<<tf0t[0][1].X<<", "<<tf0t[0][1].Y<<", "<<tf0t[0][1].Z<<'\n';
98 
99 
100 
101 /* calculation (AL0)t * VCOV * AL0 and (F0T)t * WCI * F0T */
102  for (ic=0; ic<totNC; ++ic) {
103  for (jc=0; jc<totNC; ++jc) {
104  denom[ic][jc] = al0[ic].X * vk->fitVcov[0] * al0[jc].X
105  + al0[ic].Y * vk->fitVcov[1] * al0[jc].X
106  + al0[ic].Z * vk->fitVcov[3] * al0[jc].X
107  + al0[ic].X * vk->fitVcov[1] * al0[jc].Y
108  + al0[ic].Y * vk->fitVcov[2] * al0[jc].Y
109  + al0[ic].Z * vk->fitVcov[4] * al0[jc].Y
110  + al0[ic].X * vk->fitVcov[3] * al0[jc].Z
111  + al0[ic].Y * vk->fitVcov[4] * al0[jc].Z
112  + al0[ic].Z * vk->fitVcov[5] * al0[jc].Z
113  + al0[jc].X * vk->fitVcov[0] * al0[ic].X
114  + al0[jc].Y * vk->fitVcov[1] * al0[ic].X
115  + al0[jc].Z * vk->fitVcov[3] * al0[ic].X
116  + al0[jc].X * vk->fitVcov[1] * al0[ic].Y
117  + al0[jc].Y * vk->fitVcov[2] * al0[ic].Y
118  + al0[jc].Z * vk->fitVcov[4] * al0[ic].Y
119  + al0[jc].X * vk->fitVcov[3] * al0[ic].Z
120  + al0[jc].Y * vk->fitVcov[4] * al0[ic].Z
121  + al0[jc].Z * vk->fitVcov[5] * al0[ic].Z;
122 
123  for (it=0; it<NTRK; ++it) {
124  TWRK * t_trk=vk->tmpArr[it].get();
125  denom[ic][jc] += tf0t[ic][it]->X * t_trk->wci[0] * tf0t[jc][it]->X
126  + tf0t[ic][it]->Y * t_trk->wci[1] * tf0t[jc][it]->X
127  + tf0t[ic][it]->Z * t_trk->wci[3] * tf0t[jc][it]->X
128  + tf0t[ic][it]->X * t_trk->wci[1] * tf0t[jc][it]->Y
129  + tf0t[ic][it]->Y * t_trk->wci[2] * tf0t[jc][it]->Y
130  + tf0t[ic][it]->Z * t_trk->wci[4] * tf0t[jc][it]->Y
131  + tf0t[ic][it]->X * t_trk->wci[3] * tf0t[jc][it]->Z
132  + tf0t[ic][it]->Y * t_trk->wci[4] * tf0t[jc][it]->Z
133  + tf0t[ic][it]->Z * t_trk->wci[5] * tf0t[jc][it]->Z
134  + tf0t[jc][it]->X * t_trk->wci[0] * tf0t[ic][it]->X
135  + tf0t[jc][it]->Y * t_trk->wci[1] * tf0t[ic][it]->X
136  + tf0t[jc][it]->Z * t_trk->wci[3] * tf0t[ic][it]->X
137  + tf0t[jc][it]->X * t_trk->wci[1] * tf0t[ic][it]->Y
138  + tf0t[jc][it]->Y * t_trk->wci[2] * tf0t[ic][it]->Y
139  + tf0t[jc][it]->Z * t_trk->wci[4] * tf0t[ic][it]->Y
140  + tf0t[jc][it]->X * t_trk->wci[3] * tf0t[ic][it]->Z
141  + tf0t[jc][it]->Y * t_trk->wci[4] * tf0t[ic][it]->Z
142  + tf0t[jc][it]->Z * t_trk->wci[5] * tf0t[ic][it]->Z;
143  }
144  }
145  }
146 
147 /* Solving of system DENOM(i,j)*COEF(j)=ANUM(i) */
148 /* for lagrange couplings */
149 /*-------------------------------------------------*/
150  //This is deliberately written without make_unqiue to bypass auto intialization!!
151  auto coef = std::unique_ptr<double[]>(new double[totNC]);
152  if (totNC == 1) {
153  if (denom[0][0] != 0.) {
154  coef[0] = anum[0] / denom[0][0];
155  } else {
156  coef[0] = 1.e3;
157  }
158  } else {
159  //This is deliberately written without make_unqiue to bypass auto intialization!!
160  std::unique_ptr<double[]> adenom( new double[totNC*totNC] );
161 
162  for (ic=0; ic<totNC; ic++) {
163  for (jc=0; jc<totNC; jc++) {
164  adenom[ic*totNC + jc] = denom[ic][jc];
165  }
166  }
167 /* -- INVERT */
168  dsinv(totNC, adenom.get(), totNC, &IERR);
169  if (IERR) {
170  return IERR;
171  }
172  for (ic=0; ic<totNC; ++ic) {
173  coef[ic] = 0.;
174  for (jc=0; jc<totNC; ++jc) {
175  index = ic*totNC + jc;
176  coef[ic] += adenom[index] * anum[jc];
177  }
178  }
179  }
180 
181 
182 /* new vertex */
183  dxyz[0] = 0.;
184  dxyz[1] = 0.;
185  dxyz[2] = 0.;
186 
187  //This is deliberately written without make_unqiue to bypass auto intialization!!
188  auto tmpVec = std::unique_ptr<Vect3DF[]>(new Vect3DF[totNC]);
189  for (ic=0; ic<totNC; ++ic) {
190  tmpVec[ic].X = vk->fitVcov[0] * al0[ic].X
191  + vk->fitVcov[1] * al0[ic].Y
192  + vk->fitVcov[3] * al0[ic].Z;
193  tmpVec[ic].Y = vk->fitVcov[1] * al0[ic].X
194  + vk->fitVcov[2] * al0[ic].Y
195  + vk->fitVcov[4] * al0[ic].Z;
196  tmpVec[ic].Z = vk->fitVcov[3] * al0[ic].X
197  + vk->fitVcov[4] * al0[ic].Y
198  + vk->fitVcov[5] * al0[ic].Z;
199  dxyz[0] += coef[ic] * tmpVec[ic].X;
200  dxyz[1] += coef[ic] * tmpVec[ic].Y;
201  dxyz[2] += coef[ic] * tmpVec[ic].Z;
202  }
203  vk->fitV[0] = vk->iniV[0] + vk->dxyz0[0] + dxyz[0];
204  vk->fitV[1] = vk->iniV[1] + vk->dxyz0[1] + dxyz[1];
205  vk->fitV[2] = vk->iniV[2] + vk->dxyz0[2] + dxyz[2];
206 
207 //std::cout <<"New vrt="<<vk->dxyz0[0]<<", "<<vk->dxyz0[1]<<", "<<vk->dxyz0[2]<<'\n';
208 //std::cout<<"Ncntvrt shift="<<dxyz[0]<<", "<<dxyz[1]<<", "<<dxyz[2]<<'\n';
209 
210 /* new momenta */
211  for (it=0; it<NTRK; ++it) {
212  TWRK * t_trk=vk->tmpArr[it].get();
213  tmp[0] = 0.;
214  tmp[1] = 0.;
215  tmp[2] = 0.;
216  for (ic=0; ic<totNC; ++ic) {
217  tmp[0] += coef[ic] * ( tf0t[ic][it]->X + t_trk->wb[0]*tmpVec[ic].X
218  + t_trk->wb[1]*tmpVec[ic].Y
219  + t_trk->wb[2]*tmpVec[ic].Z);
220  tmp[1] += coef[ic] * ( tf0t[ic][it]->Y + t_trk->wb[3]*tmpVec[ic].X
221  + t_trk->wb[4]*tmpVec[ic].Y
222  + t_trk->wb[5]*tmpVec[ic].Z);
223  tmp[2] += coef[ic] * ( tf0t[ic][it]->Z + t_trk->wb[6]*tmpVec[ic].X
224  + t_trk->wb[7]*tmpVec[ic].Y
225  + t_trk->wb[8]*tmpVec[ic].Z);
226  }
227 
228 /* calculation WCI * TMP */
229  VKTrack * trk = vk->TrackList[it].get();
230  trk->fitP[0] -= t_trk->wci[0]*tmp[0] + t_trk->wci[1]*tmp[1] + t_trk->wci[3]*tmp[2];
231  trk->fitP[1] -= t_trk->wci[1]*tmp[0] + t_trk->wci[2]*tmp[1] + t_trk->wci[4]*tmp[2];
232  double concor = t_trk->wci[3]*tmp[0] + t_trk->wci[4]*tmp[1] + t_trk->wci[5]*tmp[2];
233  if( (trk->fitP[2] - concor)*trk->fitP[2] < 0) { concor=trk->fitP[2]/4.; } // VK 15.12.2009 - Protection against change of sign
234  trk->fitP[2] -= concor;
235 //std::cout<<" Npar="<<trk->fitP[0] <<", "<<trk->fitP[1]<<", "<<trk->fitP[2]<<'\n';
236  }
237 /* =================================================================== */
238  return 0;
239 }

◆ xyztrp()

void Trk::xyztrp ( const long int  ich,
double *  vrt0,
double *  pv0,
double *  covi,
double  BMAG,
double *  paro,
double *  errt 
)

Definition at line 16 of file XYZtrp.cxx.

17 {
18  double covd[15],par[5], cnv[36]; /* was [6][6] */
19 /* ---------------------------------------------------------- */
20 /* Subroutine for convertion */
21 /* (X,Y,Z,PX,PY,PZ) --> (eps,z,theta,phi,1/r) */
22 /* Now it's used in VKalVrtFitter only */
23 /* */
24 /* Input: */
25 /* ICH - charge of track ( +1,0,-1 ) */
26 /* VRT0(3) - Vertex of particle */
27 /* PV0(3) - Momentum of particle */
28 /* COVI(21) - simmetric covariance matrix */
29 /* Output: */
30 /* PARO(5) - (eps,z,theta,phi,1/r) */
31 /* ERRT(15) - simmetric error matrix */
32 /* Reference point for output is (0,0,0) */
33 /* For ICH=0 PARO(5) = const/pt */
34 /* Propagation is done for NEW track, */
35 /* so no TrkID reference established */
36 /* Author: V.Kostyukhin */
37 /* ---------------------------------------------------------- */
38 
39  double constBF =BMAG * vkalMagCnvCst;
40 
41  double pt = sqrt(pv0[0]*pv0[0] + pv0[1]*pv0[1]);
42  double pp = pt*pt + pv0[2]*pv0[2]; // p**2
43  double cs = pv0[0] / pt;
44  double sn = pv0[1] / pt;
45  double ctg = pv0[2] / pt;
46  double rho = ich * constBF / pt;
47  if (ich == 0)rho = constBF / pt;
48 /* -- Output parameters */
49  par[0] = 0.; /* (-Yv*cos + Xv*sin) */
50  par[1] = 0.; /* Zv - cotth*(Xv*cos + Yv*sin) */
51  par[2] = acos(pv0[2] / sqrt(pp));
52  if(par[2]<1.e-5)par[2]=1.e-5;
53  if(par[2]>M_PI-1.e-5) par[2]=M_PI-1.e-5;
54  par[3] = atan2(pv0[1], pv0[0]);
55  par[4] = rho;
56  if (ich == 0)par[4] = constBF / pt;
57 //---
58  double dTheta_dPx = pv0[0]*pv0[2]/(pt*pp); //dTheta/dPx
59  double dTheta_dPy = pv0[1]*pv0[2]/(pt*pp); //dTheta/dPy
60  double dTheta_dPz = -pt/pp; //dTheta/dPz
61  double dPhi_dPx = -pv0[1]/(pt*pt); //dPhi/dPx
62  double dPhi_dPy = pv0[0]/(pt*pt); //dPhi/dPy
63  double dPhi_dPz = 0; //dPhi/dPz
64  double dRho_dPx = -pv0[0]/(pt*pt) * rho; //dInvR/dPx
65  double dRho_dPy = -pv0[1]/(pt*pt) * rho; //dInvR/dPy
66  double dRho_dPz = 0.; //dInvR/dPz
67 //---
68  cnv_ref(1, 1) = sn;
69  cnv_ref(2, 1) = -cs;
70  cnv_ref(3, 1) = 0.;
71  cnv_ref(4, 1) = 0.;
72  cnv_ref(5, 1) = 0.;
73  cnv_ref(6, 1) = 0.;
74 
75  cnv_ref(1, 2) = -cs * ctg;
76  cnv_ref(2, 2) = -sn * ctg;
77  cnv_ref(3, 2) = 1.;
78  cnv_ref(4, 2) = 0.;
79  cnv_ref(5, 2) = 0.;
80  cnv_ref(6, 2) = 0.;
81 
82  cnv_ref(1, 3) = 0.;
83  cnv_ref(2, 3) = 0.;
84  cnv_ref(3, 3) = 0.;
85  cnv_ref(4, 3) = dTheta_dPx;
86  cnv_ref(5, 3) = dTheta_dPy;
87  cnv_ref(6, 3) = dTheta_dPz;
88 
89  cnv_ref(1, 4) = 0.;
90  cnv_ref(2, 4) = 0.;
91  if(ich) cnv_ref(1, 4) = -cs * rho; // For charged tracks only
92  if(ich) cnv_ref(2, 4) = -sn * rho; //
93  cnv_ref(3, 4) = 0.;
94  cnv_ref(4, 4) = dPhi_dPx;
95  cnv_ref(5, 4) = dPhi_dPy;
96  cnv_ref(6, 4) = dPhi_dPz;
97 
98  cnv_ref(1, 5) = 0.;
99  cnv_ref(2, 5) = 0.;
100  cnv_ref(3, 5) = 0.;
101  cnv_ref(4, 5) = dRho_dPx;
102  cnv_ref(5, 5) = dRho_dPy;
103  cnv_ref(6, 5) = dRho_dPz;
104  tdasatVK(cnv, covi , covd, 5, 6);
105 
106 /* -- Translation to (0,0,0) (BackPropagation) --*/
107  double Ref0[3]={0.,0.,0.};
108  Trk::vkalPropagator::Propagate(-999, ich, par, covd, vrt0, Ref0, paro, errt, nullptr);
109 
110 }

Variable Documentation

◆ do_not_delete

template<typename T >
const auto Trk::do_not_delete = [](T*) {}

Definition at line 27 of file SharedObject.h.

◆ MAXNCHAMBERS

constexpr int Trk::MAXNCHAMBERS =50
constexpr

Definition at line 38 of file GlobalChi2AlignTool.cxx.

◆ MAXNINDICES

constexpr int Trk::MAXNINDICES =50*6
constexpr

Definition at line 39 of file GlobalChi2AlignTool.cxx.

grepfile.info
info
Definition: grepfile.py:38
beamspotPlotBcids.x0
x0
Definition: beamspotPlotBcids.py:514
LArG4FSStartPointFilter.part
part
Definition: LArG4FSStartPointFilter.py:21
Trk::pixelEndCap2
@ pixelEndCap2
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:239
NONE
@ NONE
Definition: sTGCenumeration.h:13
TGC
@ TGC
Definition: RegSelEnums.h:33
Trk::numberOfPixelHits
@ numberOfPixelHits
number of pixel layers on track with absence of hits
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:57
Trk::anyDirection
@ anyDirection
Definition: PropDirection.h:22
Trk::noHypothesis
@ noHypothesis
Definition: ParticleHypothesis.h:37
Trk::TubeRdecreaseZdecrease
@ TubeRdecreaseZdecrease
Accessor type [ 3,0,1,2 ].
Definition: CylinderVolumeBoundaryAccessors.h:33
Trk::VKTrack::cnstP
double cnstP[3]
Definition: TrkVKalVrtCoreBase.h:80
query_example.row
row
Definition: query_example.py:24
Trk::numberOfContribPixelLayers
@ numberOfContribPixelLayers
number of contributing layers of the pixel detector
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:49
Trk::DenseVolume
@ DenseVolume
Definition: TargetSurfaces.h:51
cost
int cost(std::vector< std::string > &files, node &n, const std::string &directory="", bool deleteref=false, bool relocate=false)
Definition: hcg.cxx:921
GetLCDefs::Unknown
@ Unknown
Definition: GetLCDefs.h:21
Trk::trapezoidFaceAlpha
@ trapezoidFaceAlpha
Definition: BoundarySurfaceFace.h:45
Trk::TubeOutsideRmaxRincrease
@ TubeOutsideRmaxRincrease
Accessor type [ 2,1,0,3 ] - inverse case.
Definition: CylinderVolumeBoundaryAccessors.h:37
Trk::py
@ py
Definition: ParamDefs.h:66
plotBeamSpotCompare.x1
x1
Definition: plotBeamSpotCompare.py:216
Trk::numberOfRpcPhiHoles
@ numberOfRpcPhiHoles
number of RPC Phi measurements missing from the track
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:118
Trk::VKTrack::WgtM
double WgtM[15]
Definition: TrkVKalVrtCoreBase.h:87
Trk::alongPre
@ alongPre
Definition: LayerMaterialProperties.h:38
Trk::cfInv5
int cfInv5(double *cov, double *wgt)
Definition: Tracking/TrkVertexFitter/TrkVKalVrtCore/src/Matrix.cxx:459
Trk::PrepRawDataType::MdtPrepData
@ MdtPrepData
Trk::TWRK::parf0
double parf0[3]
Definition: TrkVKalVrtCoreBase.h:56
Trk::TWRK::tt
double tt[3]
Definition: TrkVKalVrtCoreBase.h:50
TileDCSDataPlotter.dp
dp
Definition: TileDCSDataPlotter.py:840
Trk::QOverP1
@ QOverP1
Definition: ParameterType.h:18
Trk::VKContraintType::Theta
@ Theta
Trk::proton
@ proton
Definition: ParticleHypothesis.h:31
ReadCellNoiseFromCoolCompare.s1
s1
Definition: ReadCellNoiseFromCoolCompare.py:378
python.CaloRecoConfig.f
f
Definition: CaloRecoConfig.py:127
Trk::cfVrtDstSig
double cfVrtDstSig(VKVertex *vk, bool UseTrkErr)
Definition: cfVrtDst.cxx:33
TRT
@ TRT
Definition: RegSelEnums.h:26
D3PDMakerTestInstan::vec2
std::vector< D3PDTest::MyVec2 > vec2
Definition: D3PDMakerTestDict.h:14
ymin
double ymin
Definition: listroot.cxx:63
Trk::L2
@ L2
Definition: AlignModuleList.h:32
DataModel_detail::const_iterator
Const iterator class for DataVector/DataList.
Definition: DVLIterator.h:82
Trk::Static
@ Static
Definition: GeometrySignature.h:38
Trk::cfdcopy
void cfdcopy(double *source, double *target, int n)
Definition: TrkVKalUtils.h:23
Trk::eProbabilityToT
@ eProbabilityToT
Electron probability from Time-Over-Threshold (ToT) information.
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:214
Trk::numberOfTRTHighThresholdHits
@ numberOfTRTHighThresholdHits
total number of TRT hits which pass the high threshold
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:87
Trk::stripBarrel
@ stripBarrel
Definition: DetailedHitInfo.h:17
python.SystemOfUnits.s
int s
Definition: SystemOfUnits.py:131
Trk::k0
@ k0
Definition: ParticleHypothesis.h:35
Trk::numberOfMdtHoles
@ numberOfMdtHoles
number of MDT measurements missing from the track
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:120
Trk::numberOfTRTHitsUsedFordEdx
@ numberOfTRTHitsUsedFordEdx
number of TRT high threshold outliers (only xenon counted)
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:91
Trk::DBM2
@ DBM2
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:261
Trk::legacy_numberOfSCTOutliers
@ legacy_numberOfSCTOutliers
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:186
beamspotPlotBcids.k
k
Definition: beamspotPlotBcids.py:524
Trk::legacy_numberOfPixelSharedHits
@ legacy_numberOfPixelSharedHits
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:171
Trk::bremPoint
@ bremPoint
Definition: MeasurementType.h:35
Trk::BevelledTubeRincreaseZincrease
@ BevelledTubeRincreaseZincrease
Accessor type [ 2,1,0,3 ].
Definition: BevelledCylinderVolumeBoundaryAccessors.h:29
get_generator_info.result
result
Definition: get_generator_info.py:21
Calo
Definition: CaloTrackingGeometryBuilder.h:15
Trk::HitOnly
@ HitOnly
Definition: AlignResidualType.h:27
test_pyathena.px
px
Definition: test_pyathena.py:18
Trk::copyFullMtx
void copyFullMtx(const double *Input, long int IPar, long int IDIM, double *Target, long int TStart, long int TDIM)
Definition: CascadeUtils.cxx:246
Trk::legacy_numberOfSCTSharedHits
@ legacy_numberOfSCTSharedHits
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:172
python.SystemOfUnits.m
int m
Definition: SystemOfUnits.py:91
python.PerfMonSerializer.p
def p
Definition: PerfMonSerializer.py:743
yt
#define yt
Trk::vkalPropagator::checkTarget
static bool checkTarget(double *RefEnd)
Definition: Propagator.cxx:108
Trk::VKalVrtControl::getCascadeEvent
const CascadeEvent * getCascadeEvent() const
Definition: TrkVKalVrtCore.h:69
max
#define max(a, b)
Definition: cfImp.cxx:41
Trk::numberOfTRTHighThresholdOutliers
@ numberOfTRTHighThresholdOutliers
number of dead TRT straws crossed
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:93
Trk::numberOfInnermostPixelLayerHits
@ numberOfInnermostPixelLayerHits
these are the hits in the 1st pixel layer
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:53
Trk::BoundaryCheckResult::DeadElement
@ DeadElement
outside the element
PowhegControl_ttHplus_NLO.ss
ss
Definition: PowhegControl_ttHplus_NLO.py:83
Trk::PrepRawDataType::TgcPrepData
@ TgcPrepData
phi
Scalar phi() const
phi method
Definition: AmgMatrixBasePlugin.h:64
Trk::FullMTXfill
void FullMTXfill(VKVertex *vk, double *ader)
Definition: FullMtx.cxx:19
Trk::eProbabilityBrem
@ eProbabilityBrem
Electron probability from Brem fitting (DNA).
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:216
Trk::PrepRawDataType::MMPrepData
@ MMPrepData
Trk::DeltaZ0
@ DeltaZ0
Definition: ExtrapolationType.h:21
Trk::L2_5
@ L2_5
Definition: AlignModuleList.h:33
ader_ref
#define ader_ref(a_1, a_2)
Trk::equidistant
@ equidistant
Definition: BinningType.h:32
Trk::differentialCheck
@ differentialCheck
Definition: KalmanUpdatorSMatrix.h:58
ID
std::vector< Identifier > ID
Definition: CalibHitIDCheck.h:24
Trk::VKVertex::tmpArr
std::vector< std::unique_ptr< TWRK > > tmpArr
Definition: TrkVKalVrtCoreBase.h:168
Trk::SpacePoint::dump
virtual MsgStream & dump(MsgStream &out) const override=0
Interface method for output, to be overloaded by child classes*.
Trk::locX
@ locX
Definition: ParamDefs.h:43
Trk::legacy_numberOfNextToInnermostPixelLayerSharedHits
@ legacy_numberOfNextToInnermostPixelLayerSharedHits
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:177
NP
Definition: dumpNPs.cxx:34
Trk::PrepRawDataType::CscStripPrepData
@ CscStripPrepData
Trk::vkalMagFld::getMagFld
static void getMagFld(const double, const double, const double, double &, double &, double &, VKalVrtControlBase *)
Definition: VKalVrtBMag.cxx:24
Trk::locY
@ locY
local cartesian
Definition: ParamDefs.h:44
Trk::transformCovar
std::vector< double > transformCovar(int NPar, double **Deriv, const std::vector< double > &covarI)
Definition: CascadeUtils.cxx:191
ader_ref
#define ader_ref(a_1, a_2)
Definition: FullMtx.cxx:17
beamspotVtxAnalysis.cs
list cs
Definition: beamspotVtxAnalysis.py:391
Trk::TubeZdecreaseRdecrease
@ TubeZdecreaseRdecrease
Accessor type [ 0,3,1,2 ].
Definition: CylinderVolumeBoundaryAccessors.h:35
Trk::vkMSolve
int vkMSolve(double *a, double *b, long int n, double *ainv)
Definition: Tracking/TrkVertexFitter/TrkVKalVrtCore/src/Matrix.cxx:618
Trk::jet_theta
@ jet_theta
Definition: JetVtxParamDefs.h:28
Trk::AlignModuleList
std::vector< AlignModule * > AlignModuleList
Definition: AlignModuleList.h:37
Trk::BevelledTubeRdecreaseZincrease
@ BevelledTubeRdecreaseZincrease
Accessor type [ 3,1,0,2 ].
Definition: BevelledCylinderVolumeBoundaryAccessors.h:33
Trk::BevelledCylinderPositiveFace
@ BevelledCylinderPositiveFace
Pos.
Definition: BevelledCylinderVolumeBoundaryAccessors.h:21
Trk::noOwn
@ noOwn
Definition: Tracking/TrkDetDescr/TrkSurfaces/TrkSurfaces/Surface.h:54
Trk::sctEndCap2
@ sctEndCap2
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:248
Trk::BevelledCylinderNegativeFace
@ BevelledCylinderNegativeFace
Neg.
Definition: BevelledCylinderVolumeBoundaryAccessors.h:22
Trk::BoundaryCheckResult::Insensitive
@ Insensitive
close to the edge of an active element
Trk::binH
@ binH
Definition: BinningType.h:53
WriteCellNoiseToCool.src
src
Definition: WriteCellNoiseToCool.py:513
Trk::numberOfCscEtaHits
@ numberOfCscEtaHits
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:108
Trk::TWRK
Definition: TrkVKalVrtCoreBase.h:44
Trk::binZ
@ binZ
Definition: BinningType.h:49
Trk::VKVertex::T
double T[3]
Definition: TrkVKalVrtCoreBase.h:163
Trk::next
@ next
Definition: BinningData.h:33
Trk::legacy_eProbabilityToT_res
@ legacy_eProbabilityToT_res
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:157
Trk::oppositeMomentum
@ oppositeMomentum
Definition: PropDirection.h:21
index
Definition: index.py:1
Trk::VKTrack::Chi2
double Chi2
Definition: TrkVKalVrtCoreBase.h:77
Trk::numberOfCscUnspoiltEtaHits
@ numberOfCscUnspoiltEtaHits
number of unspoilt CSC eta measurements (all CSC phi measurements are by definition spoilt).
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:142
Trk::materialDelimiter
@ materialDelimiter
Definition: MeasurementType.h:37
Trk::numberOfPixelSpoiltHits
@ numberOfPixelSpoiltHits
number of DBM Hits
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:67
JetTiledMap::W
@ W
Definition: TiledEtaPhiMap.h:44
Trk::getVertexCharge
long int getVertexCharge(VKVertex *vk)
Definition: CFitCascade.cxx:71
OfflineHitType::Other
@ Other
Trk::numberOfSCTDeadSensors
@ numberOfSCTDeadSensors
number of TRT hits
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:76
OfflineHitType::Measurement
@ Measurement
hist_file_dump.d
d
Definition: hist_file_dump.py:137
Trk::pi0
@ pi0
Definition: ParticleHypothesis.h:34
Trk::distDepth
@ distDepth
Definition: SiLocalPosition.h:19
dcv_ref
#define dcv_ref(a_1, a_2)
Definition: VtCFitE.cxx:22
Trk::legacy_eProbabilityHT_res
@ legacy_eProbabilityHT_res
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:156
Trk::QOverP0
@ QOverP0
Definition: ParameterType.h:18
Trk::L1_5
@ L1_5
Definition: AlignModuleList.h:33
Trk::sctEndCap0
@ sctEndCap0
and 9 sct discs (on each side)
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:246
Trk::Target
@ Target
Definition: TargetSurfaces.h:40
Trk::BoundaryCheckResult::Candidate
@ Candidate
S3
struct TBPatternUnitContext S3
Trk::KinkVtx
@ KinkVtx
Kink Vertex.
Definition: VertexType.h:32
plotBeamSpotCompare.x2
x2
Definition: plotBeamSpotCompare.py:218
theta
Scalar theta() const
theta method
Definition: AmgMatrixBasePlugin.h:71
Trk::negativeFaceZX
@ negativeFaceZX
Definition: BoundarySurfaceFace.h:36
Trk::globalSearch
@ globalSearch
Definition: TrackingGeometry.h:45
Trk::locRPhi
@ locRPhi
Definition: ParamDefs.h:46
DMTest::C
C_v1 C
Definition: C.h:26
Trk::numberOfCscEtaHoles
@ numberOfCscEtaHoles
number of CSC Eta measurements missing from the track
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:112
Trk::index5
@ index5
Definition: BoundarySurfaceFace.h:52
Trk::numberOfTrackSummaryTypes
@ numberOfTrackSummaryTypes
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:189
skel.it
it
Definition: skel.GENtoEVGEN.py:424
ActsTrk::DetectorType::Tgc
@ Tgc
Resitive Plate Chambers.
Trk::calorimeterScatterer
@ calorimeterScatterer
Definition: MeasurementType.h:29
Trk::VKVertex::useApriorVertex
int useApriorVertex
Definition: TrkVKalVrtCoreBase.h:151
plotBeamSpotVxVal.cov
cov
Definition: plotBeamSpotVxVal.py:201
SiCluster
Definition: Trigger/TrigAccel/TrigCudaFitter/src/SiCluster.h:8
test_pyathena.pt
pt
Definition: test_pyathena.py:11
Trk::vtcfit
int vtcfit(VKVertex *vk)
Definition: VtCFit.cxx:293
Trk::Dense
@ Dense
Definition: GeometrySignature.h:39
Trk::VKalVrtControl::setVrtMassError
void setVrtMassError(double error)
Definition: TrkVKalVrtCore.h:76
M_PI
#define M_PI
Definition: ActiveFraction.h:11
Trk::none
@ none
Definition: TrkDetDescr/TrkSurfaces/TrkSurfaces/RealQuadraticEquation.h:21
Trk::VKVertex::FVC
ForVrtClose FVC
Definition: TrkVKalVrtCoreBase.h:160
Trk::RadiationLength
@ RadiationLength
Definition: MaterialAssociationType.h:16
Trk::sctBarrel0
@ sctBarrel0
four sct barrel layers
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:241
Trk::cfSmallEigenvalue
double cfSmallEigenvalue(double *cov, long int n)
Definition: Tracking/TrkVertexFitter/TrkVKalVrtCore/src/Matrix.cxx:450
Trk::one
@ one
Definition: TrkDetDescr/TrkSurfaces/TrkSurfaces/RealQuadraticEquation.h:22
python.atlas_oh.im
im
Definition: atlas_oh.py:167
Trk::legacy_numberOfInnermostLayerSplitHits
@ legacy_numberOfInnermostLayerSplitHits
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:176
MCP::ScaleSmearParam::s0
@ s0
MM
@ MM
Definition: RegSelEnums.h:38
mc.diff
diff
Definition: mc.SFGenPy8_MuMu_DD.py:14
Trk::consistentSurfaces
bool consistentSurfaces(U a, T...b)
Definition: SurfaceConsistencyCheck.h:23
Trk::biequidistant
@ biequidistant
Definition: BinningType.h:33
Trk::closed
@ closed
Definition: BinningType.h:41
Trk::z0
@ z0
Definition: ParamDefs.h:70
xyz
#define xyz
Trk::L1
@ L1
Definition: AlignModuleList.h:32
dq_defect_virtual_defect_validation.d1
d1
Definition: dq_defect_virtual_defect_validation.py:79
Trk::positiveFaceXY
@ positiveFaceXY
Definition: BoundarySurfaceFace.h:33
Trk::BevelledTubeZincreaseRincrease
@ BevelledTubeZincreaseRincrease
Accessor type [ 1,2,0,3 ].
Definition: BevelledCylinderVolumeBoundaryAccessors.h:31
Trk::loc2
@ loc2
generic first and second local coordinate
Definition: ParamDefs.h:41
athena.value
value
Definition: athena.py:122
Trk::jet_xv
@ jet_xv
Definition: JetVtxParamDefs.h:27
Trk::BevelledTubeOutsideRminRdecrease
@ BevelledTubeOutsideRminRdecrease
Accessor type [ 3,1,0,2] - inverse case.
Definition: BevelledCylinderVolumeBoundaryAccessors.h:37
Trk::numberOfNextToInnermostPixelLayerHits
@ numberOfNextToInnermostPixelLayerHits
these are the pixel hits, including the b-layer
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:55
cnv_ref
#define cnv_ref(a_1, a_2)
Definition: XYZtrp.cxx:14
useWeightScheme
#define useWeightScheme
Definition: VtCFitE.cxx:23
Trk::VKMassConstraint
Definition: Derivt.h:46
Trk::VKVertex::refIterV
double refIterV[3]
Definition: TrkVKalVrtCoreBase.h:146
Trk::numberOfOutliersOnTrack
@ numberOfOutliersOnTrack
100 times the standard deviation of the chi2 from the surfaces
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:148
perfmonmt-printer.dest
dest
Definition: perfmonmt-printer.py:189
Trk::binEta
@ binEta
Definition: BinningType.h:54
Trk::alongMomentum
@ alongMomentum
Definition: PropDirection.h:20
Trk::applyConstraints
void applyConstraints(VKVertex *vk)
Definition: stCnst.cxx:22
Phi
@ Phi
Definition: RPCdef.h:8
ParticleJetParams::kt
@ kt
Definition: ParticleJetParamDefs.h:43
Trk::BevelledTubeOutsideRmaxRincrease
@ BevelledTubeOutsideRmaxRincrease
Accessor type [ 2,1,0,3 ] - inverse case.
Definition: BevelledCylinderVolumeBoundaryAccessors.h:38
JetTiledMap::N
@ N
Definition: TiledEtaPhiMap.h:44
Trk::addCrossVertexDeriv
void addCrossVertexDeriv(CascadeEvent &cascadeEvent_, double *ader, long int MATRIXSIZE, const std::vector< int > &matrixPnt)
Definition: CascadeUtils.cxx:207
Trk::BevelledTubeOutsideZminZdecrease
@ BevelledTubeOutsideZminZdecrease
Accessor type [ 0,3,2,1 ] - inverse case.
Definition: BevelledCylinderVolumeBoundaryAccessors.h:39
Trk::numberOfTgcPhiHits
@ numberOfTgcPhiHits
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:105
Trk::VKTrack::Id
long int Id
Definition: TrkVKalVrtCoreBase.h:72
Trk::numberOfStgcEtaHoles
@ numberOfStgcEtaHoles
number of TGC Eta measurements missing from the track
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:134
Trk::VKTrack
Definition: TrkVKalVrtCoreBase.h:64
Trk::VKTrack::Charge
int Charge
Definition: TrkVKalVrtCoreBase.h:73
Trk::locR
@ locR
Definition: ParamDefs.h:50
Trk::Curvilinear
@ Curvilinear
Definition: ParametersCommon.h:29
Trk::d_sign
double d_sign(double value, double sign)
Definition: TrkVKalUtils.h:33
Trk::VKVertex::ader
double ader[(3 *vkalNTrkM+3) *(3 *vkalNTrkM+3)]
Definition: TrkVKalVrtCoreBase.h:188
Trk::undefined
@ undefined
Definition: ParticleHypothesis.h:38
Trk::Unbiased
@ Unbiased
Definition: AlignResidualType.h:28
Trk::standardDeviationOfChi2OS
@ standardDeviationOfChi2OS
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:150
Trk::numberOfCscPhiHoles
@ numberOfCscPhiHoles
number of CSC Phi measurements missing from the track
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:114
Trk::numberOfMmHoles
@ numberOfMmHoles
number of TGC Eta measurements missing from the track
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:138
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
drawFromPickle.cos
cos
Definition: drawFromPickle.py:36
Trk::legacy_eProbabilityNN_res
@ legacy_eProbabilityNN_res
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:160
Trk::barrelScatterer
@ barrelScatterer
Definition: MeasurementType.h:27
ActsTrk::DetectorType::sTgc
@ sTgc
Micromegas (NSW)
Trk::vtcfitc
int vtcfitc(VKVertex *vk)
Definition: VtCFitC.cxx:16
Trk::getCnstParticleMom
std::array< double, 4 > getCnstParticleMom(const VKTrack *trk, const VKVertex *vk)
Definition: cfMomentum.cxx:92
MCP::ScaleSmearParam::r2
@ r2
Trk::PrepRawDataType::RpcPrepData
@ RpcPrepData
Trk::VKVertex::apriorV
double apriorV[3]
Definition: TrkVKalVrtCoreBase.h:152
drawFromPickle.exp
exp
Definition: drawFromPickle.py:36
Trk::VKTrack::z
double z() const
Definition: TrkVKalVrtCoreBase.h:103
Trk::pz
@ pz
global momentum (cartesian)
Definition: ParamDefs.h:67
Trk::TubeOutsideZmaxZincrease
@ TubeOutsideZmaxZincrease
Accessor type [ 1,3,2,0 ] - inverse case.
Definition: CylinderVolumeBoundaryAccessors.h:39
Trk::sctEndCap5
@ sctEndCap5
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:251
yodamerge_tmp.scale
scale
Definition: yodamerge_tmp.py:138
keylayer_zslicemap.se
se
Definition: keylayer_zslicemap.py:194
Trk::VKTrack::Perig
double Perig[5]
Definition: TrkVKalVrtCoreBase.h:86
Trk::Z0
@ Z0
Definition: ParameterType.h:18
x
#define x
Trk::legacy_numberOfTRTSharedHits
@ legacy_numberOfTRTSharedHits
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:179
Trk::TrackState::unidentified
@ unidentified
Definition: TrackStateDefs.h:27
Point
ChargedTracksWeightFilter::Spline::Point Point
Definition: ChargedTracksWeightFilter.cxx:11
Trk::numberOfSCTHoles
@ numberOfSCTHoles
number of Holes in both sides of a SCT module
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:73
Trk::numberOfTRTHoles
@ numberOfTRTHoles
number of TRT hits which pass the high threshold (only xenon counted) total number of TRT hits which ...
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:83
Trk::eProbabilityHT
@ eProbabilityHT
Electron probability from High Threshold (HT) information.
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:212
Trk::combinedTrack
void combinedTrack(long int ICH, double *pv0, double *covi, double BMAG, double *par, double *covo)
Definition: XYZtrp.cxx:113
ReweightUtils.message
message
Definition: ReweightUtils.py:15
Trk::getCascadeNPar
int getCascadeNPar(CascadeEvent &cascadeEvent_, int Type)
Definition: CascadeUtils.cxx:133
beamspotPlotBcids.count
int count
Definition: beamspotPlotBcids.py:486
python.AtlRunQueryParser.ap
ap
Definition: AtlRunQueryParser.py:826
Trk::NumberOfSignatures
@ NumberOfSignatures
Definition: GeometrySignature.h:32
H2
#define H2(x, y, z)
Definition: MD5.cxx:115
AthenaPoolTestWrite.stream
string stream
Definition: AthenaPoolTestWrite.py:12
Trk::cfdinv
int cfdinv(double *cov, double *wgt, long int NI)
Definition: Tracking/TrkVertexFitter/TrkVKalVrtCore/src/Matrix.cxx:497
Trk::TRTdEdx
@ TRTdEdx
dEdx from TRT ToT measurement.
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:219
Trk::u
@ u
Enums for curvilinear frames.
Definition: ParamDefs.h:83
Trk::VKVertex::ConstraintList
std::vector< std::unique_ptr< VKConstraintBase > > ConstraintList
Definition: TrkVKalVrtCoreBase.h:169
python.ElectronD3PDObject.Target
Target
Definition: ElectronD3PDObject.py:172
Trk::ForVrtClose::rv0
double rv0[2]
Definition: ForVrtClose.h:29
Trk::cascadeCnstRemnants
double cascadeCnstRemnants(CascadeEvent &cascadeEvent_)
Definition: CFitCascade.cxx:77
Trk::VKVertex::apriorVWGT
double apriorVWGT[6]
Definition: TrkVKalVrtCoreBase.h:153
Trk::BevelledTubeZdecreaseRincrease
@ BevelledTubeZdecreaseRincrease
Accessor type [ 0,2,1,3 ].
Definition: BevelledCylinderVolumeBoundaryAccessors.h:32
makeTRTBarrelCans.y1
tuple y1
Definition: makeTRTBarrelCans.py:15
SCT_Cluster
Definition: Trigger/TrigAccel/TrigCudaFitter/src/SCT_Cluster.h:7
atlasStyleMacro.icol
int icol
Definition: atlasStyleMacro.py:13
Trk::fitVertexCascade
int fitVertexCascade(VKVertex *vk, int Pointing)
Definition: CFitCascade.cxx:89
Trk::numberOfMmHits
@ numberOfMmHits
number of TGC Eta measurements missing from the track
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:132
Trk::sctBarrel3
@ sctBarrel3
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:244
Trk::energyDeposit
@ energyDeposit
Definition: MeasurementType.h:32
Trk::TimeOverThreshold
@ TimeOverThreshold
Definition: TrackSummaryTool.h:34
Trk::BeamPipe
@ BeamPipe
Definition: GeometrySignature.h:27
python.Bindings.values
values
Definition: Control/AthenaPython/python/Bindings.py:797
Trk::numberOfBLayerHits
@ numberOfBLayerHits
these are the hits in the 0th pixel layer?
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:51
Trk::eProbabilityNumberOfTRTHitsUsedFordEdx
@ eProbabilityNumberOfTRTHitsUsedFordEdx
Number of TRT hits used for dEdx measurement.
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:220
Monitored::X
@ X
Definition: HistogramFillerUtils.h:24
Trk::vkSVDCmp
void vkSVDCmp(double **a, int m, int n, double w[], double **v)
Definition: Tracking/TrkVertexFitter/TrkVKalVrtCore/src/Matrix.cxx:648
Trk::TubeRincreaseZdecrease
@ TubeRincreaseZdecrease
Accessor type [ 2,0,1,3 ].
Definition: CylinderVolumeBoundaryAccessors.h:29
Trk::index6
@ index6
Definition: BoundarySurfaceFace.h:53
Trk::EnergyDeposit
@ EnergyDeposit
Definition: AlignResidualType.h:35
Trk::stripCluster
@ stripCluster
Definition: MeasurementType.h:23
Trk::transverseVertex
@ transverseVertex
Definition: MeasurementType.h:20
Trk::numberOfTRTDeadStraws
@ numberOfTRTDeadStraws
number of TRT tube hits
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:95
Trk::StandardSectoralBevelledCylinder
@ StandardSectoralBevelledCylinder
Definition: BevelledCylinderVolumeBoundaryAccessors.h:48
Trk::PrepRawDataType::CscPrepData
@ CscPrepData
Trk::noNavigation
@ noNavigation
Definition: TrackingGeometry.h:44
Trk::DBM1
@ DBM1
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:260
read_hist_ntuple.f2
f2
Definition: read_hist_ntuple.py:20
Trk::VKTrack::fitP
double fitP[3]
Definition: TrkVKalVrtCoreBase.h:76
Trk::legacy_numberOfPixelSplitHits
@ legacy_numberOfPixelSplitHits
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:174
Trk::UNDECIDED
@ UNDECIDED
sign of drift radius has not been determined
Definition: DriftCircleStatus.h:20
Trk::MS
@ MS
Definition: GeometrySignature.h:29
dqt_zlumi_alleff_HIST.A
A
Definition: dqt_zlumi_alleff_HIST.py:110
Trk::iEta
@ iEta
(old readout) will be skipped
Definition: ParamDefs.h:54
Trk::passive
@ passive
Definition: Layer.h:48
Trk::DBM0
@ DBM0
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:259
Trk::fullUpdate
@ fullUpdate
Definition: PropDirection.h:43
Trk::FastField
@ FastField
call the fast field access method of the FieldSvc
Definition: MagneticFieldMode.h:20
beamspotPlotBcids.xc
xc
Definition: beamspotPlotBcids.py:516
Trk::DetectorElemType::Silicon
@ Silicon
Trk::arbitrary
@ arbitrary
Definition: BinningType.h:34
xAOD::EgammaParameters::f3
@ f3
fraction of energy reconstructed in 3rd sampling
Definition: EgammaEnums.h:54
xAOD::Cone
@ Cone
Definition: TrackingPrimitives.h:552
python.setupRTTAlg.size
int size
Definition: setupRTTAlg.py:39
Trk::VKVertex::TrackList
std::vector< std::unique_ptr< VKTrack > > TrackList
Definition: TrkVKalVrtCoreBase.h:167
CxxUtils::vec
typename vecDetail::vec_typedef< T, N >::type vec
Define a nice alias for the vectorized type.
Definition: vec.h:207
Trk::NumberOfGeometryTypes
@ NumberOfGeometryTypes
Definition: GeometrySignature.h:43
Trk::pixelEndCap0
@ pixelEndCap0
three pixel discs (on each side)
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:237
python.changerun.kk
list kk
Definition: changerun.py:41
Trk::binY
@ binY
Definition: BinningType.h:48
Trk::index3
@ index3
Definition: BoundarySurfaceFace.h:50
Trk::cfnewp
void cfnewp(const long int ich, double *parold, double *ref, double *s, double *parnew, double *per)
Definition: cfNewP.cxx:10
Trk::StandardSectoralCylinder
@ StandardSectoralCylinder
Definition: CylinderVolumeBoundaryAccessors.h:46
calibdata.valid
list valid
Definition: calibdata.py:45
Trk::VKalVrtControl::setVertexMass
void setVertexMass(double mass)
Definition: TrkVKalVrtCore.h:75
Trk::BevelledTubeRdecreaseZdecrease
@ BevelledTubeRdecreaseZdecrease
Accessor type [ 3,0,1,2 ].
Definition: BevelledCylinderVolumeBoundaryAccessors.h:34
OfflineHitType::Perigee
@ Perigee
Trk::vkalPropagator::Propagate
static void Propagate(long int TrkID, long int Charge, double *ParOld, double *CovOld, double *RefStart, double *RefEnd, double *ParNew, double *CovNew, VKalVrtControlBase *FitControl=0)
Definition: Propagator.cxx:127
Trk::GlueVolumesDescriptor::glueFaces
const std::vector< BoundarySurfaceFace > & glueFaces() const
retrieve the available Glue Faces
Definition: GlueVolumesDescriptor.h:72
Trk::pixelBarrelFlat
@ pixelBarrelFlat
Definition: DetailedHitInfo.h:14
Trk::trapezoidCluster
@ trapezoidCluster
Definition: MeasurementType.h:24
Trk::VKTrack::a0
double a0() const
Definition: TrkVKalVrtCoreBase.h:102
Trk::legacy_numberOfInnermostPixelLayerOutliers
@ legacy_numberOfInnermostPixelLayerOutliers
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:183
ParticleGun_EoverP_Config.mom
mom
Definition: ParticleGun_EoverP_Config.py:63
Trk::vkalMagFld::getCnvCst
static double getCnvCst()
Definition: VKalVrtBMag.h:49
Trk::afterFit
int afterFit(VKVertex *vk, double *ader, double *dcv, double *ptot, double *VrtMomCov, const VKalVrtControlBase *CONTROL)
Definition: cfTotCov.cxx:26
xt
#define xt
Trk::VKVertex::fitV
double fitV[3]
Definition: TrkVKalVrtCoreBase.h:140
Trk::getFullVrtCov
int getFullVrtCov(VKVertex *vk, double *ader, const double *dcv, double verr[6][6])
Definition: VtCFitE.cxx:25
Trk::legacy_numberOfBLayerSplitHits
@ legacy_numberOfBLayerSplitHits
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:173
Trk::numberOfTRTTubeHits
@ numberOfTRTTubeHits
number of TRT hits on track in straws with xenon
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:97
python.SystemOfUnits.sr
int sr
Definition: SystemOfUnits.py:113
Trk::legacy_numberOfPixelOutliers
@ legacy_numberOfPixelOutliers
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:185
convertTimingResiduals.sum
sum
Definition: convertTimingResiduals.py:55
ader_ref
#define ader_ref(a_1, a_2)
Definition: VtCFitE.cxx:21
Trk::CascadeEvent::setAccuracyConstraint
void setAccuracyConstraint(double C)
Definition: TrkVKalVrtCoreBase.h:28
Trk::index1
@ index1
Definition: BoundarySurfaceFace.h:48
Trk::locZ
@ locZ
local cylindrical
Definition: ParamDefs.h:48
TRT
Definition: HitInfo.h:33
fitman.g1
g1
Definition: fitman.py:619
Trk::active
@ active
Definition: Layer.h:48
HGTD
Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration.
Definition: Clustering.h:28
Trk::two
@ two
Definition: TrkDetDescr/TrkSurfaces/TrkSurfaces/RealQuadraticEquation.h:23
Trk::barrelInert
@ barrelInert
Definition: MeasurementType.h:30
DetType::Pixel
@ Pixel
Definition: DetType.h:13
Trk::distEta
@ distEta
readout for silicon
Definition: ParamDefs.h:57
dqt_zlumi_pandas.err
err
Definition: dqt_zlumi_pandas.py:193
Trk::DeltaTheta0
@ DeltaTheta0
Definition: ExtrapolationType.h:23
Trk::SensitiveLayer
@ SensitiveLayer
Definition: TargetSurfaces.h:43
Trk::DetectorElemType::SolidState
@ SolidState
Trk::pixelBarrel2
@ pixelBarrel2
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:234
lumiFormat.i
int i
Definition: lumiFormat.py:92
xmin
double xmin
Definition: listroot.cxx:60
Trk::trapezoidFaceBeta
@ trapezoidFaceBeta
Definition: BoundarySurfaceFace.h:46
Trk::eProbabilityComb
@ eProbabilityComb
Electron probability from combining the below probabilities.
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:210
z
#define z
Trk::CORRUPT
@ CORRUPT
the measurement is corrupt, but for some reason has been left on a track.
Definition: DriftCircleStatus.h:22
PixelAthClusterMonAlgCfg.e4
e4
Definition: PixelAthClusterMonAlgCfg.py:317
Trk::numberOfTRTOutliers
@ numberOfTRTOutliers
number of TRT holes
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:81
xAOD::PixelCluster
PixelCluster_v1 PixelCluster
Define the version of the pixel cluster class.
Definition: Event/xAOD/xAODInDetMeasurement/xAODInDetMeasurement/PixelCluster.h:13
Trk::L3
@ L3
Definition: AlignModuleList.h:32
vkalMagCnvCst
#define vkalMagCnvCst
Definition: CommonPars.h:23
Trk::V0LambdaBar
@ V0LambdaBar
Temporary addition for V0 LambdaBar.
Definition: VertexType.h:34
Trk::numberOfGoodMdtHits
@ numberOfGoodMdtHits
number of non-deweighted MDT hits.
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:146
h
Trk::endcapInert
@ endcapInert
Definition: MeasurementType.h:31
Trk::tubeSectorNegativePhi
@ tubeSectorNegativePhi
Definition: BoundarySurfaceFace.h:41
Trk::cfmasserr
void cfmasserr(VKVertex *vk, const int *list, double BMAG, double *MASS, double *sigM)
Definition: cfMassErr.cxx:15
python.CaloCondTools.g
g
Definition: CaloCondTools.py:15
beamspotman.n
n
Definition: beamspotman.py:731
Trk::NoVtx
@ NoVtx
Dummy vertex, TrackParticle was not used in vertex fit.
Definition: VertexType.h:26
ActsTrk::DetectorType::Csc
@ Csc
Thin gap champers.
Trk::dsinv
void dsinv(long int n, double *a, long int DIM, long int *ifail) noexcept
Definition: Tracking/TrkVertexFitter/TrkVKalVrtCore/src/Matrix.cxx:517
Trk::pixelEndCap1
@ pixelEndCap1
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:238
endmsg
#define endmsg
Definition: AnalysisConfig_Ntuple.cxx:63
Trk::numberOfSCTHits
@ numberOfSCTHits
number of SCT holes
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:71
Trk::electron
@ electron
Definition: ParticleHypothesis.h:27
extractSporadic.h
list h
Definition: extractSporadic.py:97
angle
double angle(const GeoTrf::Vector2D &a, const GeoTrf::Vector2D &b)
Definition: TRTDetectorFactory_Full.cxx:73
Trk::getIniParticleMom
std::array< double, 4 > getIniParticleMom(const VKTrack *trk, const VKVertex *vk)
Definition: cfMomentum.cxx:60
xAOD::rotation
rotation
Definition: TrackSurface_v1.cxx:15
Trk::eProbabilityNN
@ eProbabilityNN
Electron probability from NN.
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:217
Trk::preUpdate
@ preUpdate
Definition: PropDirection.h:42
makeTRTBarrelCans.y2
tuple y2
Definition: makeTRTBarrelCans.py:18
Trk::driftRadius
@ driftRadius
trt, straws
Definition: ParamDefs.h:59
zt
#define zt
Trk::NotSpecified
@ NotSpecified
this is the default
Definition: VertexType.h:36
Trk::trtEndCap
@ trtEndCap
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:257
Trk::numberOfPixelDeadSensors
@ numberOfPixelDeadSensors
number of pixel hits with broad errors (width/sqrt(12))
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:65
Trk::VKTrack::invR
double invR() const
Definition: TrkVKalVrtCoreBase.h:106
cnv_ref
#define cnv_ref(a_1, a_2)
WritePulseShapeToCool.det
det
Definition: WritePulseShapeToCool.py:204
Trk::pion
@ pion
Definition: ParticleHypothesis.h:29
master.flag
bool flag
Definition: master.py:29
Trk::jet_yv
@ jet_yv
Definition: JetVtxParamDefs.h:27
CxxUtils
Definition: aligned_vector.h:29
Trk::RIGHT
@ RIGHT
the drift radius is positive (see Trk::AtaStraightLine)
Definition: DriftCircleSide.h:22
Trk::association
@ association
Definition: TrackingGeometry.h:46
res
std::pair< std::vector< unsigned int >, bool > res
Definition: JetGroupProductTest.cxx:14
Amg::transform
Amg::Vector3D transform(Amg::Vector3D &v, Amg::Transform3D &tr)
Transform a point from a Trasformation3D.
Definition: GeoPrimitivesHelpers.h:156
Trk::VKTrack::setCurrent
void setCurrent(const double[], const double[])
Definition: TrkVKalVrtCoreBase.cxx:70
Trk::noinit_vector
std::vector< T, boost::noinit_adaptor< std::allocator< T > > > noinit_vector
A variant on std::vector which leaves its contents uninitialized by default.
Definition: TrkVKalUtils.h:50
Trk::stripEndcap
@ stripEndcap
Definition: DetailedHitInfo.h:18
Trk::DeltaD0
@ DeltaD0
Definition: ExtrapolationType.h:20
Trk::geantino
@ geantino
Definition: ParticleHypothesis.h:26
chi2
double chi2(TH1 *h0, TH1 *h1)
Definition: comparitor.cxx:522
TRT::Track::d0
@ d0
Definition: InnerDetector/InDetCalibEvent/TRT_CalibData/TRT_CalibData/TrackInfo.h:62
Trk::px
@ px
Definition: ParamDefs.h:65
Amg::pz
@ pz
Definition: GeoPrimitives.h:40
Trk::pixelEndcap
@ pixelEndcap
Definition: DetailedHitInfo.h:16
Trk::vkGetEigVal
void vkGetEigVal(const double ci[], double d[], int n)
Definition: Tracking/TrkVertexFitter/TrkVKalVrtCore/src/Matrix.cxx:828
Trk::TubeZdecreaseRincrease
@ TubeZdecreaseRincrease
Accessor type [ 0,2,1,3 ].
Definition: CylinderVolumeBoundaryAccessors.h:31
sign
int sign(int a)
Definition: TRT_StrawNeighbourSvc.h:127
Trk::sctEndCap3
@ sctEndCap3
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:249
Trk::BevelledTubeRincreaseZdecrease
@ BevelledTubeRincreaseZdecrease
Accessor type [ 2,0,1,3 ].
Definition: BevelledCylinderVolumeBoundaryAccessors.h:30
Trk::VKVertex::passNearVertex
bool passNearVertex
Definition: TrkVKalVrtCoreBase.h:156
Trk::RIO_OnTrackType::HGTD_Cluster
@ HGTD_Cluster
Definition: RIO_OnTrack.h:63
Trk::sctEndCap8
@ sctEndCap8
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:254
Trk::jet_dist
@ jet_dist
Definition: JetVtxParamDefs.h:29
find_tgc_unfilled_channelids.ip
ip
Definition: find_tgc_unfilled_channelids.py:3
xAOD::Disc
@ Disc
Definition: TrackingPrimitives.h:554
mc.g4
g4
Definition: mc.PhPy8EG_A14NNPDF23_DY_VLQ_example.py:25
Trk::CylinderZdecrease
@ CylinderZdecrease
Cylinder hit, the neg.
Definition: CylinderVolumeBoundaryAccessors.h:19
Trk::sctEndCap7
@ sctEndCap7
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:253
Trk::vkvFastV
double vkvFastV(double *p1, double *p2, const double *vRef, double dbmag, double *out)
Definition: VKvFast.cxx:42
beamspotPlotBcids.y0
y0
Definition: beamspotPlotBcids.py:515
Preparation.mode
mode
Definition: Preparation.py:96
Trk::pixelBarrel3
@ pixelBarrel3
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:235
Trk::negativeFaceXY
@ negativeFaceXY
Definition: BoundarySurfaceFace.h:32
jet::CompScaleVar::Mass
@ Mass
Definition: UncertaintyEnum.h:98
cvder_ref
#define cvder_ref(a_1, a_2)
InDetDD::none
@ none
Definition: InDetDD_Defs.h:19
Trk::getCombinedVTrack
VKTrack * getCombinedVTrack(VKVertex *vk)
Definition: CascadeUtils.cxx:110
Trk::NODRIFTTIME
@ NODRIFTTIME
drift time was not used - drift radius is 0.
Definition: DriftCircleStatus.h:24
drawFromPickle.tan
tan
Definition: drawFromPickle.py:36
AnalysisUtils::Delta::R
double R(const INavigable4Momentum *p1, const double v_eta, const double v_phi)
Definition: AnalysisMisc.h:50
Trk::VKVertex::fitVcov
double fitVcov[6]
Definition: TrkVKalVrtCoreBase.h:141
mapkey::eig
@ eig
Definition: TElectronEfficiencyCorrectionTool.cxx:40
Trk::BoundaryCheckResult::Outside
@ Outside
with the insensitive area of an active element
SG::ArenaBlockAlignDetail::alignment
constexpr size_t alignment
Definition: ArenaBlockAlignDetail.h:39
TRT::Track::z0
@ z0
Definition: InnerDetector/InDetCalibEvent/TRT_CalibData/TRT_CalibData/TrackInfo.h:63
Scale
void Scale(TH1 *h, double d=1)
Definition: comparitor.cxx:76
Trk::BevelledTubeZdecreaseRdecrease
@ BevelledTubeZdecreaseRdecrease
Accessor type [ 0,3,1,2 ].
Definition: BevelledCylinderVolumeBoundaryAccessors.h:36
Trk::binX
@ binX
Definition: BinningType.h:47
a0
double a0
Definition: globals.cxx:27
DeMoUpdate.tmp
string tmp
Definition: DeMoUpdate.py:1167
Trk::muon
@ muon
Definition: ParticleHypothesis.h:28
Trk::HighThreshold
@ HighThreshold
Definition: TrackSummaryTool.h:33
Trk::BevelledTubeZincreaseRdecrease
@ BevelledTubeZincreaseRdecrease
Accessor type [ 1,3,0,2 ].
Definition: BevelledCylinderVolumeBoundaryAccessors.h:35
Trk::Theta0
@ Theta0
Definition: ParameterType.h:18
Trk::neutron
@ neutron
Definition: ParticleHypothesis.h:33
Trk::DetElOwn
@ DetElOwn
Definition: Tracking/TrkDetDescr/TrkSurfaces/TrkSurfaces/Surface.h:56
Trk::DeltaQOverP1
@ DeltaQOverP1
Definition: ExtrapolationType.h:25
Trk::legacy_numberOfInnermostPixelLayerSharedHits
@ legacy_numberOfInnermostPixelLayerSharedHits
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:175
Trk::legacy_expectBLayerHit
@ legacy_expectBLayerHit
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:165
xAODType
Definition: ObjectType.h:13
DataVector< AlignPar >
Trk::index9
@ index9
Definition: BoundarySurfaceFace.h:56
Trk::VKalVrtControl::renewFullCovariance
void renewFullCovariance(double *)
Definition: TrkVKalVrtCoreBase.cxx:310
Trk::NTrMaxVFit
@ NTrMaxVFit
Definition: TrkVKalVrtFitter.h:35
Trk::TubeRdecreaseZincrease
@ TubeRdecreaseZincrease
Accessor type [ 3,1,0,2 ].
Definition: CylinderVolumeBoundaryAccessors.h:32
SIGN
#define SIGN(a, b)
Definition: Tracking/TrkVertexFitter/TrkVKalVrtCore/src/Matrix.cxx:647
Trk::tdasatVK
void tdasatVK(const double *Der, const double *CovI, double *CovF, long int M, long int N)
Definition: Tracking/TrkVertexFitter/TrkVKalVrtCore/src/Utilities.cxx:218
Trk::legacy_expectNextToInnermostPixelLayerHit
@ legacy_expectNextToInnermostPixelLayerHit
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:167
Trk::Unsigned
@ Unsigned
Definition: GeometrySignature.h:33
Trk::index0
@ index0
Definition: BoundarySurfaceFace.h:47
compute_lumi.denom
denom
Definition: compute_lumi.py:76
Trk::FullField
@ FullField
Field is set to be realistic, but within a given Volume.
Definition: MagneticFieldMode.h:21
ReadCellNoiseFromCool.dm
dm
Definition: ReadCellNoiseFromCool.py:235
calibdata.ct
ct
Definition: calibdata.py:418
Trk::V0KShort
@ V0KShort
Temporary addition for KShort.
Definition: VertexType.h:35
Trk::distPhi
@ distPhi
Definition: ParamDefs.h:56
Trk::numberOfStgcEtaHits
@ numberOfStgcEtaHits
number of TGC Eta measurements missing from the track
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:128
Trk::numberOfTgcEtaHits
@ numberOfTgcEtaHits
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:106
Trk::positiveFaceZX
@ positiveFaceZX
Definition: BoundarySurfaceFace.h:37
Trk::MeasurementBase::dump
virtual MsgStream & dump(MsgStream &out) const =0
Interface method for output, to be overloaded by child classes*.
Trk::Combined
@ Combined
Definition: TrackSummaryTool.h:32
Trk::DECIDED
@ DECIDED
sign of drift radius has been determined
Definition: DriftCircleStatus.h:18
min
#define min(a, b)
Definition: cfImp.cxx:40
Trk::BoundaryFrame
@ BoundaryFrame
Definition: TargetSurfaces.h:41
Trk::numberOfPixelHoles
@ numberOfPixelHoles
number of pixels which have a ganged ambiguity.
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:59
ARR2D_FS
#define ARR2D_FS(name, N, i, j)
Definition: CommonPars.h:29
Trk::numberOfTgcPhiHoles
@ numberOfTgcPhiHoles
number of TGC Phi measurements missing from the track
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:124
Trk::pixelBarrelInclined
@ pixelBarrelInclined
Definition: DetailedHitInfo.h:15
grepfile.ic
int ic
Definition: grepfile.py:33
Trk::fitVertexCascadeScale
int fitVertexCascadeScale(VKVertex *vk, double &distToVertex)
Definition: CFitCascadeScale.cxx:44
Trk::CylinderNegativeFace
@ CylinderNegativeFace
Neg.
Definition: CylinderVolumeBoundaryAccessors.h:21
Trk::Global
@ Global
Definition: GeometrySignature.h:25
Trk::RIO_OnTrackType::TRT_DriftCircle
@ TRT_DriftCircle
Definition: RIO_OnTrack.h:59
Trk::setFittedParameters
void setFittedParameters(const double *result, std::vector< int > &matrixPnt, CascadeEvent &cascadeEvent_)
Definition: CascadeUtils.cxx:151
Trk::Cavern
@ Cavern
Definition: GeometrySignature.h:30
trigbs_pickEvents.num
num
Definition: trigbs_pickEvents.py:76
Trk::vkGetEigVect
void vkGetEigVect(const double ci[], double d[], double vect[], int n)
Definition: Tracking/TrkVertexFitter/TrkVKalVrtCore/src/Matrix.cxx:847
Trk::numberOfGangedPixels
@ numberOfGangedPixels
number of Ganged Pixels flagged as fakes
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:61
Trk::TGOwn
@ TGOwn
Definition: Tracking/TrkDetDescr/TrkSurfaces/TrkSurfaces/Surface.h:55
Trk::numberOfDBMHits
@ numberOfDBMHits
number of hits in SCT
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:69
Trk::Unknown
@ Unknown
Definition: TargetSurfaces.h:48
python.doZLumi.go
def go(fname)
Definition: doZLumi.py:78
Trk::pixelBarrel1
@ pixelBarrel1
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:233
Trk::NoField
@ NoField
Field is set to 0., 0., 0.,.
Definition: MagneticFieldMode.h:18
Trk::numberOfTRTHits
@ numberOfTRTHits
number of TRT outliers
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:79
Trk::TWRK::drdp
double drdp[2][3]
Definition: TrkVKalVrtCoreBase.h:55
Trk::numberOfRpcPhiHits
@ numberOfRpcPhiHits
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:109
rvec_ref
#define rvec_ref(a_1, a_2)
ActsTrk::DetectorType::Mdt
@ Mdt
MuonSpectrometer.
keylayer_zslicemap.sb
sb
Definition: keylayer_zslicemap.py:192
Amg::py
@ py
Definition: GeoPrimitives.h:39
fitman.g2
g2
Definition: fitman.py:624
Trk::VKalVrtControl::getFullCovariance
const double * getFullCovariance() const
Definition: TrkVKalVrtCore.h:73
Trk::getFitParticleMom
std::array< double, 4 > getFitParticleMom(const VKTrack *trk, const VKVertex *vk)
Definition: cfMomentum.cxx:25
Trk::GlueVolumesDescriptor::glueVolumes
const std::vector< TrackingVolume * > & glueVolumes(BoundarySurfaceFace)
retrieve them again
Definition: GlueVolumesDescriptor.cxx:40
Trk::legacy_numberOfNextToInnermostLayerSplitHits
@ legacy_numberOfNextToInnermostLayerSplitHits
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:178
Trk::index2
@ index2
Definition: BoundarySurfaceFace.h:49
RPC
@ RPC
Definition: RegSelEnums.h:32
Trk::BevelledCylinderZincrease
@ BevelledCylinderZincrease
Cylinder hit, then pos.
Definition: BevelledCylinderVolumeBoundaryAccessors.h:19
Py
Definition: PyDataStore.h:24
id
SG::auxid_t id
Definition: Control/AthContainers/Root/debug.cxx:191
Trk::sctEndCap4
@ sctEndCap4
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:250
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:192
Trk::d0
@ d0
Definition: ParamDefs.h:69
xAOD::Cylinder
@ Cylinder
Definition: TrackingPrimitives.h:553
Trk::index11
@ index11
Definition: BoundarySurfaceFace.h:58
createCoolChannelIdFile.par
par
Definition: createCoolChannelIdFile.py:29
Trk::numberOfTgcEtaHoles
@ numberOfTgcEtaHoles
number of TGC Eta measurements missing from the track
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:122
plotBeamSpotMon.b
b
Definition: plotBeamSpotMon.py:77
Trk::perigeeParameters
@ perigeeParameters
Definition: MeasurementType.h:19
Trk::trkMass
@ trkMass
Extended perigee: mass.
Definition: ParamDefs.h:87
Trk::sctEndCap1
@ sctEndCap1
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:247
Trk::numberOfSCTSpoiltHits
@ numberOfSCTSpoiltHits
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:78
Trk::legacy_numberOfNextToInnermostPixelLayerOutliers
@ legacy_numberOfNextToInnermostPixelLayerOutliers
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:184
Trk::StandardSectoralTube
@ StandardSectoralTube
Definition: CylinderVolumeBoundaryAccessors.h:51
Trk::V0Vtx
@ V0Vtx
Vertex from V0 Decay.
Definition: VertexType.h:31
Trk::nonInteracting
@ nonInteracting
Definition: ParticleHypothesis.h:25
Trk::locPhi
@ locPhi
local polar
Definition: ParamDefs.h:51
xAOD::Curvilinear
@ Curvilinear
Definition: TrackingPrimitives.h:558
Trk::PrepRawDataType::sTgcPrepData
@ sTgcPrepData
Trk::FittedTrajectory
@ FittedTrajectory
Definition: ExtrapolationType.h:19
Trk::undefinedDirection
@ undefinedDirection
Definition: PropDirection.h:30
Trk::absoluteCheck
@ absoluteCheck
Definition: KalmanUpdatorSMatrix.h:57
charge
double charge(const T &p)
Definition: AtlasPID.h:494
Trk::pseudoMeasurement
@ pseudoMeasurement
Definition: MeasurementType.h:26
beamspotPlotBcids.yc
yc
Definition: beamspotPlotBcids.py:517
vkalNTrkM
#define vkalNTrkM
Definition: CommonPars.h:22
Trk::jet_zv
@ jet_zv
position x,y,z of primary vertex
Definition: JetVtxParamDefs.h:27
Trk::VKTrack::phi
double phi() const
Definition: TrkVKalVrtCoreBase.h:105
Trk::bothway
@ bothway
Definition: PropDirection.h:30
test_pythinning.out
out
Definition: test_pythinning.py:94
Trk::trtBarrel
@ trtBarrel
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:256
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
Trk::ConstantField
@ ConstantField
Field is set to be constant.
Definition: MagneticFieldMode.h:19
Trk::TubeRincreaseZincrease
@ TubeRincreaseZincrease
Accessor type [ 2,1,0,3 ].
Definition: CylinderVolumeBoundaryAccessors.h:28
query_example.col
col
Definition: query_example.py:7
Trk::DenseWithLayers
@ DenseWithLayers
Definition: GeometrySignature.h:40
Trk::kaon
@ kaon
Definition: ParticleHypothesis.h:30
Trk::tubeSectorOuterCover
@ tubeSectorOuterCover
Definition: BoundarySurfaceFace.h:44
Trk::SecVtx
@ SecVtx
Secondary Vertex.
Definition: VertexType.h:28
Trk::ModulesOnTrack
@ ModulesOnTrack
Definition: AlignModuleList.h:34
Trk::D0
@ D0
Definition: ParameterType.h:18
Trk::sctBarrel2
@ sctBarrel2
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:243
library_scraper.dd
list dd
Definition: library_scraper.py:46
Trk::getNewCov
void getNewCov(const double *OldCov, const double *Der, double *Cov, long int DIM) noexcept
Definition: CascadeUtils.cxx:261
Trk::numberOfStgcPhiHoles
@ numberOfStgcPhiHoles
number of TGC Phi measurements missing from the track
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:136
Trk::iPhi
@ iPhi
Definition: ParamDefs.h:53
Trk::oppositePre
@ oppositePre
Definition: LayerMaterialProperties.h:38
Trk::LocalParameters::dimension
int dimension() const
Dimension of this localParameters() vector.
beamspotCoolDiff.l
l
Definition: beamspotCoolDiff.py:354
Trk::FullMCNSTfill
int FullMCNSTfill(VKVertex *vk, double *ader, double *LSide)
Definition: FullMtx.cxx:81
Trk::LocalParameters::m_parameterkey
int m_parameterkey
Definition: LocalParameters.h:179
Trk::open
@ open
Definition: BinningType.h:40
Trk::pixelCluster
@ pixelCluster
Definition: MeasurementType.h:22
ir
int ir
counter of the current depth
Definition: fastadd.cxx:49
python.PyAthena.v
v
Definition: PyAthena.py:157
Trk::inside
@ inside
Definition: PropDirection.h:29
Trk::legacy_eProbabilityBrem_res
@ legacy_eProbabilityBrem_res
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:158
Trk::AtaSurface
@ AtaSurface
Definition: ParametersCommon.h:29
Trk::BoundaryDetached
@ BoundaryDetached
Definition: TargetSurfaces.h:42
Trk::binR
@ binR
Definition: BinningType.h:50
Trk::DeltaPhi0
@ DeltaPhi0
Definition: ExtrapolationType.h:22
Trk::vertex
@ vertex
Definition: MeasurementType.h:21
DeMoScan.index
string index
Definition: DeMoScan.py:362
Trk::AlignableVolume
@ AlignableVolume
Definition: TargetSurfaces.h:50
Trk::legacy_expectInnermostPixelLayerHit
@ legacy_expectInnermostPixelLayerHit
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:166
Trk::Pattern
@ Pattern
Definition: ParametersCommon.h:29
readCCLHist.int
int
Definition: readCCLHist.py:84
Trk::discontinuity
@ discontinuity
Definition: MeasurementType.h:34
xyzt
#define xyzt
Prompt::Def::Pt
@ Pt
Definition: VarHolder.h:76
DiTauMassTools::MaxHistStrategyV2::e
e
Definition: PhysicsAnalysis/TauID/DiTauMassTools/DiTauMassTools/HelperFunctions.h:26
a
TList * a
Definition: liststreamerinfos.cxx:10
Trk::numberOfStgcPhiHits
@ numberOfStgcPhiHits
number of TGC Phi measurements missing from the track
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:130
Trk::Bremsstrahlung
@ Bremsstrahlung
Definition: TrackSummaryTool.h:35
Trk::index4
@ index4
Definition: BoundarySurfaceFace.h:51
Trk::setVTrackMass
int setVTrackMass(VKVertex *vk)
Definition: CFitCascade.cxx:34
cross_ref
#define cross_ref(a_1, a_2)
CalibCoolCompareRT.nm
nm
Definition: CalibCoolCompareRT.py:110
y
#define y
Trk::CascadeEvent::cascadeNV
int cascadeNV
Definition: TrkVKalVrtCoreBase.h:23
Trk::legacy_numberOfBLayerSharedHits
@ legacy_numberOfBLayerSharedHits
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:170
test_tpcnv_autoload.cnv
cnv
Definition: test_tpcnv_autoload.py:23
mapkey::sf
@ sf
Definition: TElectronEfficiencyCorrectionTool.cxx:38
Trk::restorePreviousPos
int restorePreviousPos(CascadeEvent &cascadeEvent_, std::vector< VKVertex > &SV)
Definition: CFitCascade.cxx:639
trigbs_pickEvents.cnt
cnt
Definition: trigbs_pickEvents.py:71
Trk::locPhiR
@ locPhiR
Definition: ParamDefs.h:47
Trk::legacy_numberOfBLayerOutliers
@ legacy_numberOfBLayerOutliers
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:182
Trk::binRPhi
@ binRPhi
Definition: BinningType.h:52
ref
const boost::regex ref(r_ef)
yodamerge_tmp.saos
list saos
Definition: yodamerge_tmp.py:161
Trk::processCascade
int processCascade(CascadeEvent &cascadeEvent_, double *primVrt)
Definition: CFitCascade.cxx:545
drdpar_ref
#define drdpar_ref(a_1, a_2)
Trk::userOwn
@ userOwn
Definition: Tracking/TrkDetDescr/TrkSurfaces/TrkSurfaces/Surface.h:57
Amg::RotationMatrix3D
Eigen::Matrix< double, 3, 3 > RotationMatrix3D
Definition: GeoPrimitives.h:49
Trk::EffectiveNumAtoms
@ EffectiveNumAtoms
Definition: MaterialAssociationType.h:15
Trk::legacy_TRTdEdx_res
@ legacy_TRTdEdx_res
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:162
Trk::addNoise
@ addNoise
Definition: MaterialUpdateMode.h:19
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
Trk::numberOfDetectorTypes
@ numberOfDetectorTypes
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:263
Trk::TubeZincreaseRdecrease
@ TubeZincreaseRdecrease
Accessor type [ 1,3,0,2 ].
Definition: CylinderVolumeBoundaryAccessors.h:34
python.KeyStore.list
def list(self, key=None)
Definition: KeyStore.py:318
dq_defect_virtual_defect_validation.d2
d2
Definition: dq_defect_virtual_defect_validation.py:81
DEBUG
#define DEBUG
Definition: page_access.h:11
Trk::DeltaQOverP0
@ DeltaQOverP0
Definition: ExtrapolationType.h:24
Trk::ExtrapolationTypes
@ ExtrapolationTypes
Definition: ExtrapolationType.h:26
Trk::Detached
@ Detached
Definition: GeometrySignature.h:41
Trk::qOverP
@ qOverP
perigee
Definition: ParamDefs.h:73
python.CaloCondTools.log
log
Definition: CaloCondTools.py:20
Trk::cylinderCover
@ cylinderCover
Definition: BoundarySurfaceFace.h:38
Trk::index7
@ index7
Definition: BoundarySurfaceFace.h:54
ActsTrk::DetectorType::Rpc
@ Rpc
Monitored Drift Tubes.
Trk::BevelledTubeOutsideZmaxZincrease
@ BevelledTubeOutsideZmaxZincrease
Accessor type [ 1,3,2,0 ] - inverse case.
Definition: BevelledCylinderVolumeBoundaryAccessors.h:40
Trk::ForVrtClose::ywgt
double ywgt[3]
Definition: ForVrtClose.h:29
Trk::negativeFaceYZ
@ negativeFaceYZ
Definition: BoundarySurfaceFace.h:34
Trk::tubeSectorPositivePhi
@ tubeSectorPositivePhi
Definition: BoundarySurfaceFace.h:42
Trk::cfchi2
double cfchi2(double *xyzt, const long int ich, double *part, const double *par0, double *wgt, double *rmnd)
Definition: Tracking/TrkVertexFitter/TrkVKalVrtCore/src/Utilities.cxx:27
Trk::CylinderPositiveFace
@ CylinderPositiveFace
Pos.
Definition: CylinderVolumeBoundaryAccessors.h:20
Trk::Frame
@ Frame
Definition: TargetSurfaces.h:49
Trk::photon
@ photon
Definition: ParticleHypothesis.h:32
Trk::VKVertex::wa
double wa[6]
Definition: TrkVKalVrtCoreBase.h:164
LArCellBinning.step
step
Definition: LArCellBinning.py:158
Trk::vkPerigeeToP
void vkPerigeeToP(const double *perig3, double *pp, double BMAG)
Definition: cfMomentum.cxx:15
Trk::VKVertex::dxyz0
double dxyz0[3]
Definition: TrkVKalVrtCoreBase.h:165
Trk::VKVertex
Definition: TrkVKalVrtCoreBase.h:128
Trk::RIO_OnTrackType::PlanarCluster
@ PlanarCluster
Definition: RIO_OnTrack.h:62
Trk::tubeOuterCover
@ tubeOuterCover
Definition: BoundarySurfaceFace.h:40
Trk::robtest
void robtest(VKVertex *vk, int ifl, int nIteration)
Definition: RobTest.cxx:14
Trk::hole
@ hole
Definition: MeasurementType.h:36
Trk::postUpdate
@ postUpdate
Definition: PropDirection.h:44
Trk::outside
@ outside
Definition: PropDirection.h:29
pickleTool.object
object
Definition: pickleTool.py:30
Trk::CylinderZincrease
@ CylinderZincrease
Cylinder hit, then pos.
Definition: CylinderVolumeBoundaryAccessors.h:18
Trk::translateToFittedPos
int translateToFittedPos(CascadeEvent &cascadeEvent_, double Step)
Definition: CFitCascade.cxx:559
Trk::EffectiveNumSteps
@ EffectiveNumSteps
Definition: MaterialAssociationType.h:14
Trk::undefinedFace
@ undefinedFace
Definition: BoundarySurfaceFace.h:59
Trk::LEFT
@ LEFT
the drift radius is negative (see Trk::AtaStraightLine)
Definition: DriftCircleSide.h:20
Trk::jet_phi
@ jet_phi
Definition: JetVtxParamDefs.h:28
L1Topo::Error
Error
The different types of error that can be flagged in the L1TopoRDO.
Definition: Error.h:16
Trk::VKVertex::iniV
double iniV[3]
Definition: TrkVKalVrtCoreBase.h:142
Trk::numberOfGangedFlaggedFakes
@ numberOfGangedFlaggedFakes
number of dead pixel sensors crossed
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:63
Trk::VKTrack::iniP
double iniP[3]
Definition: TrkVKalVrtCoreBase.h:83
Trk::TRTTrackOccupancy
@ TRTTrackOccupancy
TRT track occupancy.
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:218
Trk::PriVtx
@ PriVtx
Primary Vertex.
Definition: VertexType.h:27
Trk::Phi0
@ Phi0
Definition: ParameterType.h:18
dqt_zlumi_alleff_HIST.tl
tl
Definition: dqt_zlumi_alleff_HIST.py:73
Trk::pixelBarrel0
@ pixelBarrel0
there are three or four pixel barrel layers (R1/R2)
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:232
CSC
@ CSC
Definition: RegSelEnums.h:34
Trk::sctBarrel1
@ sctBarrel1
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:242
xAOD::track
@ track
Definition: TrackingPrimitives.h:512
calibdata.copy
bool copy
Definition: calibdata.py:27
Trk::fixPseudoTrackPt
int fixPseudoTrackPt(long int NPar, double *fullMtx, double *LSide, CascadeEvent &cascadeEvent_)
Definition: CascadeUtils.cxx:18
NswErrorCalibData::Input
Helper struct to be parsed to the object to derive the specific error of the cluster.
Definition: NswErrorCalibData.h:25
Trk::tubeInnerCover
@ tubeInnerCover
Definition: BoundarySurfaceFace.h:39
COOLRates.target
target
Definition: COOLRates.py:1106
python.Constants.VERBOSE
int VERBOSE
Definition: Control/AthenaCommon/python/Constants.py:14
Trk::nonInteractingMuon
@ nonInteractingMuon
Definition: ParticleHypothesis.h:36
Trk::numberOfRpcEtaHits
@ numberOfRpcEtaHits
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:110
egammaEnergyPositionAllSamples::e0
double e0(const xAOD::CaloCluster &cluster)
return the uncorrected cluster energy in pre-sampler
drawFromPickle.sin
sin
Definition: drawFromPickle.py:36
Trk::ParameterTypes
@ ParameterTypes
Definition: ParameterType.h:18
Trk::numberOfTRTHighThresholdHitsTotal
@ numberOfTRTHighThresholdHitsTotal
number of TRT hits used for dE/dx computation
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:89
OfflineHitType::Scatterer
@ Scatterer
Trk::VKTrack::theta
double theta() const
Definition: TrkVKalVrtCoreBase.h:104
Trk::TubeOutsideRminRdecrease
@ TubeOutsideRminRdecrease
Accessor type [ 3,1,0,2] - inverse case.
Definition: CylinderVolumeBoundaryAccessors.h:36
python.IoTestsLib.w
def w
Definition: IoTestsLib.py:200
xAOD::Plane
@ Plane
Definition: TrackingPrimitives.h:556
Trk::SurfaceType::Line
@ Line
MCP::ScaleSmearParam::r1
@ r1
Trk::rescaleVrtErrForPointing
void rescaleVrtErrForPointing(double Div, CascadeEvent &cascadeEvent_)
Definition: CFitCascadeScale.cxx:32
Trk::ConvVtx
@ ConvVtx
Converstion Vertex.
Definition: VertexType.h:30
Trk::numberOfeProbabilityTypes
@ numberOfeProbabilityTypes
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:222
Trk::index8
@ index8
Definition: BoundarySurfaceFace.h:55
Trk::loc1
@ loc1
Definition: ParamDefs.h:40
Trk::StepLength
@ StepLength
Definition: MaterialAssociationType.h:17
Trk::TubeOutsideZminZdecrease
@ TubeOutsideZminZdecrease
Accessor type [ 0,3,2,1 ] - inverse case.
Definition: CylinderVolumeBoundaryAccessors.h:38
Trk::CascadeEvent::cascadeVertexList
std::vector< std::unique_ptr< VKVertex > > cascadeVertexList
Definition: TrkVKalVrtCoreBase.h:30
Trk::BevelledCylinderZdecrease
@ BevelledCylinderZdecrease
Cylinder hit, the neg.
Definition: BevelledCylinderVolumeBoundaryAccessors.h:20
Trk::removeNoise
@ removeNoise
Definition: MaterialUpdateMode.h:20
Trk::setFittedMatrices
void setFittedMatrices(const double *COVFIT, long int MATRIXSIZE, std::vector< int > &matrixPnt, std::vector< std::vector< double > > &covarCascade, CascadeEvent &cascadeEvent_)
Definition: CascadeUtils.cxx:168
PlotCalibFromCool.vv
vv
Definition: PlotCalibFromCool.py:716
Trk::positiveFaceYZ
@ positiveFaceYZ
Definition: BoundarySurfaceFace.h:35
Trk::numberOfSCTDoubleHoles
@ numberOfSCTDoubleHoles
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:75
getReferenceRun.ls
def ls(fpath)
Definition: getReferenceRun.py:29
test_AnalysisBaseEventLoopJob.aa
aa
Definition: test_AnalysisBaseEventLoopJob.py:37
Trk::legacy_pixeldEdx_res
@ legacy_pixeldEdx_res
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:159
Trk::afterFitWithIniPar
int afterFitWithIniPar(VKVertex *vk, double *ader, double *dcv, double *ptot, double *VrtMomCov, const VKalVrtControlBase *CONTROL)
Definition: cfTotCov.cxx:80
python.compressB64.c
def c
Definition: compressB64.py:93
Trk::numberOfTRTXenonHits
@ numberOfTRTXenonHits
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:99
Trk::VKalVrtControl::vk_forcft
ForCFT vk_forcft
Definition: TrkVKalVrtCore.h:91
Trk::mappingMode
@ mappingMode
Definition: PropDirection.h:23
DataVector::size
size_type size() const noexcept
Returns the number of elements in the collection.
Trk::StandardSectoralBevelledTube
@ StandardSectoralBevelledTube
Definition: BevelledCylinderVolumeBoundaryAccessors.h:55
python.SystemOfUnits.km
int km
Definition: SystemOfUnits.py:95
Trk::numberOfCscPhiHits
@ numberOfCscPhiHits
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:107
dcv_ref
#define dcv_ref(a_1, a_2)
Trk::alignment
@ alignment
Definition: MeasurementType.h:33
Trk::legacy_eProbabilityComb_res
@ legacy_eProbabilityComb_res
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:155
Trk::Master
@ Master
Definition: GeometrySignature.h:42
Trk::tubeSectorInnerCover
@ tubeSectorInnerCover
Definition: BoundarySurfaceFace.h:43
Trk::split
@ split
Definition: LayerMaterialProperties.h:38
Trk::endcapScatterer
@ endcapScatterer
Definition: MeasurementType.h:28
Trk::driftCircle
@ driftCircle
Definition: MeasurementType.h:25
Trk::ForCFT::robres
double robres[vkalNTrkM]
Definition: ForCFT.h:45
Trk::VKVertex::truncatedStep
bool truncatedStep
Definition: TrkVKalVrtCoreBase.h:185
WriteCalibToCool.coef
coef
Definition: WriteCalibToCool.py:582
Trk::phi0
@ phi0
Definition: ParamDefs.h:71
Trk::vkgrkuta_
void vkgrkuta_(const double charge, const double step, double *vect, double *vout, VKalVrtControlBase *CONTROL)
Definition: VKgrkuta.cxx:14
fitman.rho
rho
Definition: fitman.py:532
vkalAllowedPtChange
#define vkalAllowedPtChange
Definition: CommonPars.h:25
MDT
@ MDT
Definition: RegSelEnums.h:31
Trk::numberOfRpcEtaHoles
@ numberOfRpcEtaHoles
number of RPC Eta measurements missing from the track
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:116
Trk::PileUp
@ PileUp
Pile Up Vertex.
Definition: VertexType.h:29
Trk::vpderiv
void vpderiv(bool UseTrackErr, long int Charge, const double *pari0, double *covi, double *vrtref, double *covvrtref, double *drdpar, double *dwgt, double *rv0, VKalVrtControl *FitCONTROL)
Definition: VtDeriv.cxx:16
Trk::L0
@ L0
Definition: AlignModuleList.h:32
Trk::v
@ v
Definition: ParamDefs.h:84
Trk::numberOfMdtHits
@ numberOfMdtHits
number of mdt hits
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:103
Trk::V0Lambda
@ V0Lambda
Temporary addition for V0 Lambda.
Definition: VertexType.h:33
Trk::BoundaryCheckResult::OnEdge
@ OnEdge
within the sensitive area of an active element
Trk::sctEndCap6
@ sctEndCap6
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:252
Trk::TubeZincreaseRincrease
@ TubeZincreaseRincrease
Accessor type [ 1,2,0,3 ].
Definition: CylinderVolumeBoundaryAccessors.h:30
read_hist_ntuple.f1
f1
Definition: read_hist_ntuple.py:4
Trk::legacy_TRTTrackOccupancy_res
@ legacy_TRTTrackOccupancy_res
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:161
Trk::previous
@ previous
Definition: BinningData.h:32
SCT
@ SCT
Definition: RegSelEnums.h:25
Trk::cfsetdiag
void cfsetdiag(long int n, double *matr, double value) noexcept
Definition: Tracking/TrkVertexFitter/TrkVKalVrtCore/src/Utilities.cxx:236
Trk::index10
@ index10
Definition: BoundarySurfaceFace.h:57
Trk::binPhi
@ binPhi
Definition: BinningType.h:51
Trk::MaterialLayer
@ MaterialLayer
Definition: TargetSurfaces.h:44