CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Types | Public Member Functions | Protected Member Functions | Protected Attributes
TwoBodyDecayTrajectoryFactory Class Reference
Inheritance diagram for TwoBodyDecayTrajectoryFactory:
TrajectoryFactoryBase

Public Types

typedef
TwoBodyDecayTrajectory::ConstRecHitCollection 
ConstRecHitCollection
 
typedef
TwoBodyDecayTrajectoryState::TsosContainer 
TsosContainer
 
typedef
TwoBodyDecayVirtualMeasurement 
VirtualMeasurement
 
- Public Types inherited from TrajectoryFactoryBase
typedef
AlignmentAlgorithmBase::ConstTrajTrackPair 
ConstTrajTrackPair
 
typedef
AlignmentAlgorithmBase::ConstTrajTrackPairCollection 
ConstTrajTrackPairCollection
 
typedef std::vector
< TrajectoryStateOnSurface
ExternalPredictionCollection
 
typedef
ReferenceTrajectoryBase::MaterialEffects 
MaterialEffects
 
typedef std::vector
< ReferenceTrajectoryPtr
ReferenceTrajectoryCollection
 
typedef
ReferenceTrajectoryBase::ReferenceTrajectoryPtr 
ReferenceTrajectoryPtr
 
typedef std::pair
< TrajectoryStateOnSurface,
TransientTrackingRecHit::ConstRecHitContainer
TrajectoryInput
 

Public Member Functions

virtual
TwoBodyDecayTrajectoryFactory
clone () const override
 
virtual const
ReferenceTrajectoryCollection 
trajectories (const edm::EventSetup &setup, const ConstTrajTrackPairCollection &tracks, const reco::BeamSpot &beamSpot) const override
 Produce the trajectories. More...
 
virtual const
ReferenceTrajectoryCollection 
trajectories (const edm::EventSetup &setup, const ConstTrajTrackPairCollection &tracks, const ExternalPredictionCollection &external, const reco::BeamSpot &beamSpot) const override
 
 TwoBodyDecayTrajectoryFactory (const edm::ParameterSet &config)
 
 ~TwoBodyDecayTrajectoryFactory ()
 
- Public Member Functions inherited from TrajectoryFactoryBase
const edm::ParameterSetconfiguration () const
 
MaterialEffects materialEffects (void) const
 
PropagationDirection propagationDirection (void) const
 
 TrajectoryFactoryBase (const edm::ParameterSet &config)
 
virtual ~TrajectoryFactoryBase (void)
 

Protected Member Functions

const ReferenceTrajectoryCollection constructTrajectories (const ConstTrajTrackPairCollection &tracks, const TwoBodyDecay &tbd, const MagneticField *magField, const reco::BeamSpot &beamSpot, bool setParameterErrors) const
 
bool match (const TrajectoryStateOnSurface &state, const TransientTrackingRecHit::ConstRecHitPointer &recHit) const
 
- Protected Member Functions inherited from TrajectoryFactoryBase
virtual const TrajectoryInput innermostStateAndRecHits (const ConstTrajTrackPair &track) const
 
virtual const
Trajectory::DataContainer 
orderedTrajectoryMeasurements (const Trajectory &trajectory) const
 
bool sameSurface (const Surface &s1, const Surface &s2) const
 
bool useRecHit (const TransientTrackingRecHit::ConstRecHitPointer &hitPtr) const
 

Protected Attributes

double theChi2CutValue
 
bool theConstructTsosWithErrorsFlag
 
TwoBodyDecayFittertheFitter
 
double theNSigmaCutValue
 
double thePrimaryMass
 
double thePrimaryWidth
 
double theSecondaryMass
 
bool theUseRefittedStateFlag
 
- Protected Attributes inherited from TrajectoryFactoryBase
bool theUseBeamSpot
 

Detailed Description

by Edmund Widl, see CMS NOTE-2007/032. extension for BreakPoints or BrokenLines by Claus Kleinwort

Definition at line 31 of file TwoBodyDecayTrajectoryFactory.cc.

Member Typedef Documentation

Definition at line 37 of file TwoBodyDecayTrajectoryFactory.cc.

Definition at line 36 of file TwoBodyDecayTrajectoryFactory.cc.

Definition at line 35 of file TwoBodyDecayTrajectoryFactory.cc.

Constructor & Destructor Documentation

TwoBodyDecayTrajectoryFactory::TwoBodyDecayTrajectoryFactory ( const edm::ParameterSet config)

Definition at line 81 of file TwoBodyDecayTrajectoryFactory.cc.

References edm::ParameterSet::getParameter(), theChi2CutValue, theConstructTsosWithErrorsFlag, theNSigmaCutValue, thePrimaryMass, thePrimaryWidth, theSecondaryMass, and theUseRefittedStateFlag.

Referenced by clone().

82  : TrajectoryFactoryBase( config ),
83  theFitter( new TwoBodyDecayFitter( config ) )
84 {
85  const edm::ParameterSet ppc = config.getParameter< edm::ParameterSet >( "ParticleProperties" );
86  thePrimaryMass = ppc.getParameter< double >( "PrimaryMass" );
87  thePrimaryWidth = ppc.getParameter< double >( "PrimaryWidth" );
88  theSecondaryMass = ppc.getParameter< double >( "SecondaryMass" );
89 
90  theNSigmaCutValue = config.getParameter< double >( "NSigmaCut" );
91  theChi2CutValue = config.getParameter< double >( "Chi2Cut" );
92  theUseRefittedStateFlag = config.getParameter< bool >( "UseRefittedState" );
93  theConstructTsosWithErrorsFlag = config.getParameter< bool >( "ConstructTsosWithErrors" );
94 }
T getParameter(std::string const &) const
TrajectoryFactoryBase(const edm::ParameterSet &config)
TwoBodyDecayTrajectoryFactory::~TwoBodyDecayTrajectoryFactory ( )

Definition at line 96 of file TwoBodyDecayTrajectoryFactory.cc.

References theFitter.

97 {
98  delete theFitter;
99 }

Member Function Documentation

virtual TwoBodyDecayTrajectoryFactory* TwoBodyDecayTrajectoryFactory::clone ( void  ) const
inlineoverridevirtual

Implements TrajectoryFactoryBase.

Definition at line 52 of file TwoBodyDecayTrajectoryFactory.cc.

References TwoBodyDecayTrajectoryFactory().

52 { return new TwoBodyDecayTrajectoryFactory(*this); }
TwoBodyDecayTrajectoryFactory(const edm::ParameterSet &config)
const TwoBodyDecayTrajectoryFactory::ReferenceTrajectoryCollection TwoBodyDecayTrajectoryFactory::constructTrajectories ( const ConstTrajTrackPairCollection tracks,
const TwoBodyDecay tbd,
const MagneticField magField,
const reco::BeamSpot beamSpot,
bool  setParameterErrors 
) const
protected

Definition at line 199 of file TwoBodyDecayTrajectoryFactory.cc.

References TwoBodyDecay::covariance(), TwoBodyDecay::hasError(), TrajectoryFactoryBase::innermostStateAndRecHits(), input1, input2, TwoBodyDecayTrajectoryState::isValid(), match(), TrajectoryFactoryBase::materialEffects(), TrajectoryFactoryBase::propagationDirection(), query::result, ReferenceTrajectoryBase::setParameterErrors(), theConstructTsosWithErrorsFlag, theSecondaryMass, theUseRefittedStateFlag, trajectories(), and TwoBodyDecayTrajectoryState::trajectoryStates().

Referenced by trajectories().

204 {
206 
207  // get innermost valid trajectory state and hits from the tracks
210 
211  if ( !( input1.first.isValid() && input2.first.isValid() ) ) return trajectories;
212 
213  // produce TwoBodyDecayTrajectoryState (input for TwoBodyDecayTrajectory)
214  TsosContainer tsos( input1.first, input2.first );
215  ConstRecHitCollection recHits( input1.second, input2.second );
216  TwoBodyDecayTrajectoryState trajectoryState( tsos, tbd, theSecondaryMass, magField );
217 
218  if ( !trajectoryState.isValid() )
219  {
220  trajectories.push_back( ReferenceTrajectoryPtr( new TwoBodyDecayTrajectory() ) );
221  return trajectories;
222  }
223 
224  // always use the refitted trajectory state for matching
225  // FIXME FIXME CLONE
226  //TrackingRecHit::ConstRecHitPointer updatedRecHit1( recHits.first.front()->clone( tsos.first ) );
227  // TrackingRecHit::ConstRecHitPointer updatedRecHit2( recHits.second.front()->clone( tsos.second ) );
228 
229  TrackingRecHit::ConstRecHitPointer updatedRecHit1( recHits.first.front() );
230  TrackingRecHit::ConstRecHitPointer updatedRecHit2( recHits.second.front() );
231 
232 
233  bool valid1 = match( trajectoryState.trajectoryStates( true ).first,
234  updatedRecHit1 );
235 
236  bool valid2 = match( trajectoryState.trajectoryStates( true ).second,
237  updatedRecHit2 );
238 
239  if ( !valid1 || !valid2 )
240  {
241  trajectories.push_back( ReferenceTrajectoryPtr( new TwoBodyDecayTrajectory() ) );
242  return trajectories;
243  }
244 
245  // set the flag for reversing the RecHits to false, since they are already in the correct order.
246  TwoBodyDecayTrajectory* result = new TwoBodyDecayTrajectory( trajectoryState, recHits, magField,
248  false, beamSpot, theUseRefittedStateFlag,
250  if ( setParameterErrors && tbd.hasError() ) result->setParameterErrors( tbd.covariance() );
251  trajectories.push_back( ReferenceTrajectoryPtr( result ) );
252  return trajectories;
253 }
bool hasError(void) const
Definition: TwoBodyDecay.h:45
MaterialEffects materialEffects(void) const
TwoBodyDecayTrajectory::ConstRecHitCollection ConstRecHitCollection
void setParameterErrors(const AlgebraicSymMatrix &error)
#define input2
Definition: AMPTWrapper.h:149
bool match(const TrajectoryStateOnSurface &state, const TransientTrackingRecHit::ConstRecHitPointer &recHit) const
virtual const ReferenceTrajectoryCollection trajectories(const edm::EventSetup &setup, const ConstTrajTrackPairCollection &tracks, const reco::BeamSpot &beamSpot) const override
Produce the trajectories.
const AlgebraicSymMatrix & covariance(void) const
Definition: TwoBodyDecay.h:37
std::shared_ptr< TrackingRecHit const > ConstRecHitPointer
tuple result
Definition: query.py:137
#define input1
Definition: AMPTWrapper.h:129
virtual const TrajectoryInput innermostStateAndRecHits(const ConstTrajTrackPair &track) const
std::vector< ReferenceTrajectoryPtr > ReferenceTrajectoryCollection
tuple tracks
Definition: testEve_cfg.py:39
PropagationDirection propagationDirection(void) const
std::pair< TrajectoryStateOnSurface, TransientTrackingRecHit::ConstRecHitContainer > TrajectoryInput
ReferenceTrajectoryBase::ReferenceTrajectoryPtr ReferenceTrajectoryPtr
TwoBodyDecayTrajectoryState::TsosContainer TsosContainer
bool TwoBodyDecayTrajectoryFactory::match ( const TrajectoryStateOnSurface state,
const TransientTrackingRecHit::ConstRecHitPointer recHit 
) const
protected

Definition at line 256 of file TwoBodyDecayTrajectoryFactory.cc.

References AlignmentPositionError::globalError(), asciidump::le, TrajectoryStateOnSurface::localPosition(), mathSSE::sqrt(), theNSigmaCutValue, ErrorFrameTransformer::transform(), PV3DBase< T, PVType, FrameType >::x(), LocalError::xx(), PV3DBase< T, PVType, FrameType >::y(), and LocalError::yy().

Referenced by constructTrajectories().

258 {
259  LocalPoint lp1 = state.localPosition();
260  LocalPoint lp2 = recHit->localPosition();
261 
262  double deltaX = lp1.x() - lp2.x();
263  double deltaY = lp1.y() - lp2.y();
264 
265  LocalError le = recHit->localPositionError();
266 
267  double varX = le.xx();
268  double varY = le.yy();
269 
270  AlignmentPositionError const* gape = recHit->det()->alignmentPositionError();
271  if ( gape )
272  {
274  LocalError lape = eft.transform( gape->globalError(), recHit->det()->surface() );
275 
276  varX += lape.xx();
277  varY += lape.yy();
278  }
279 
280  return ( ( fabs(deltaX)/sqrt(varX) < theNSigmaCutValue ) && ( fabs(deltaY)/sqrt(varY) < theNSigmaCutValue ) );
281 }
static GlobalError transform(const LocalError &le, const Surface &surf)
float xx() const
Definition: LocalError.h:24
T y() const
Definition: PV3DBase.h:63
float yy() const
Definition: LocalError.h:26
T sqrt(T t)
Definition: SSEVec.h:48
const GlobalError & globalError() const
T x() const
Definition: PV3DBase.h:62
const TrajectoryFactoryBase::ReferenceTrajectoryCollection TwoBodyDecayTrajectoryFactory::trajectories ( const edm::EventSetup setup,
const ConstTrajTrackPairCollection tracks,
const reco::BeamSpot beamSpot 
) const
overridevirtual

Produce the trajectories.

Implements TrajectoryFactoryBase.

Definition at line 102 of file TwoBodyDecayTrajectoryFactory.cc.

References SiPixelRawToDigiRegional_cfi::beamSpot, TwoBodyDecay::chi2(), constructTrajectories(), TwoBodyDecayFitter::estimate(), edm::false, edm::EventSetup::get(), TwoBodyDecay::isValid(), edm::ESHandle< class >::product(), edm::second(), reco::TransientTrack::setES(), theChi2CutValue, theFitter, thePrimaryMass, thePrimaryWidth, and theSecondaryMass.

Referenced by constructTrajectories(), and trajectories().

105 {
107 
108  edm::ESHandle< MagneticField > magneticField;
109  setup.get< IdealMagneticFieldRecord >().get( magneticField );
110 
111  if ( tracks.size() == 2 )
112  {
113  // produce transient tracks from persistent tracks
114  std::vector< reco::TransientTrack > transientTracks( 2 );
115 
116  transientTracks[0] = reco::TransientTrack( *tracks[0].second, magneticField.product() );
117  transientTracks[0].setES( setup );
118 
119  transientTracks[1] = reco::TransientTrack( *tracks[1].second, magneticField.product() );
120  transientTracks[1].setES( setup );
121 
122  // estimate the decay parameters
124  TwoBodyDecay tbd = theFitter->estimate( transientTracks, vm );
125 
126  if ( !tbd.isValid() || ( tbd.chi2() > theChi2CutValue ) )
127  {
128  trajectories.push_back( ReferenceTrajectoryPtr( new TwoBodyDecayTrajectory() ) );
129  return trajectories;
130  }
131 
132  return constructTrajectories( tracks, tbd, magneticField.product(), beamSpot, false );
133  }
134  else
135  {
136  edm::LogInfo( "ReferenceTrajectories" ) << "@SUB=TwoBodyDecayTrajectoryFactory::trajectories"
137  << "Need 2 tracks, got " << tracks.size() << ".\n";
138  }
139 
140  return trajectories;
141 }
TwoBodyDecayVirtualMeasurement VirtualMeasurement
const ReferenceTrajectoryCollection constructTrajectories(const ConstTrajTrackPairCollection &tracks, const TwoBodyDecay &tbd, const MagneticField *magField, const reco::BeamSpot &beamSpot, bool setParameterErrors) const
virtual const TwoBodyDecay estimate(const std::vector< reco::TransientTrack > &tracks, const TwoBodyDecayVirtualMeasurement &vm) const
U second(std::pair< T, U > const &p)
virtual const ReferenceTrajectoryCollection trajectories(const edm::EventSetup &setup, const ConstTrajTrackPairCollection &tracks, const reco::BeamSpot &beamSpot) const override
Produce the trajectories.
void setES(const edm::EventSetup &es)
bool isValid(void) const
Definition: TwoBodyDecay.h:49
std::vector< ReferenceTrajectoryPtr > ReferenceTrajectoryCollection
tuple tracks
Definition: testEve_cfg.py:39
const T & get() const
Definition: EventSetup.h:55
T const * product() const
Definition: ESHandle.h:62
double chi2(void) const
Definition: TwoBodyDecay.h:47
volatile std::atomic< bool > shutdown_flag false
ReferenceTrajectoryBase::ReferenceTrajectoryPtr ReferenceTrajectoryPtr
const TrajectoryFactoryBase::ReferenceTrajectoryCollection TwoBodyDecayTrajectoryFactory::trajectories ( const edm::EventSetup setup,
const ConstTrajTrackPairCollection tracks,
const ExternalPredictionCollection external,
const reco::BeamSpot beamSpot 
) const
overridevirtual

Implements TrajectoryFactoryBase.

Definition at line 145 of file TwoBodyDecayTrajectoryFactory.cc.

References SiPixelRawToDigiRegional_cfi::beamSpot, TwoBodyDecay::chi2(), constructTrajectories(), TwoBodyDecayFitter::estimate(), edm::EventSetup::get(), TwoBodyDecay::isValid(), edm::ESHandle< class >::product(), edm::second(), reco::TransientTrack::setES(), theChi2CutValue, theFitter, thePrimaryMass, thePrimaryWidth, theSecondaryMass, trajectories(), and funct::true.

149 {
151 
152  edm::ESHandle< MagneticField > magneticField;
153  setup.get< IdealMagneticFieldRecord >().get( magneticField );
154 
155  if ( tracks.size() == 2 && external.size() == 2 )
156  {
157  if ( external[0].isValid() && external[1].isValid() ) // Include external estimates
158  {
159  // produce transient tracks from persistent tracks
160  std::vector< reco::TransientTrack > transientTracks( 2 );
161 
162  transientTracks[0] = reco::TransientTrack( *tracks[0].second, magneticField.product() );
163  transientTracks[0].setES( setup );
164 
165  transientTracks[1] = reco::TransientTrack( *tracks[1].second, magneticField.product() );
166  transientTracks[1].setES( setup );
167 
168  // estimate the decay parameters. the transient tracks are not really associated to the
169  // the external tsos, but this is o.k., because the only information retrieved from them
170  // is the magnetic field.
172  TwoBodyDecay tbd = theFitter->estimate( transientTracks, external, vm );
173 
174  if ( !tbd.isValid() || ( tbd.chi2() > theChi2CutValue ) )
175  {
176  trajectories.push_back( ReferenceTrajectoryPtr( new TwoBodyDecayTrajectory() ) );
177  return trajectories;
178  }
179 
180  return constructTrajectories( tracks, tbd, magneticField.product(), beamSpot, true );
181  }
182  else
183  {
184  // Return without external estimate
185  trajectories = this->trajectories(setup, tracks, beamSpot);
186  }
187  }
188  else
189  {
190  edm::LogInfo( "ReferenceTrajectories" ) << "@SUB=TwoBodyDecayTrajectoryFactory::trajectories"
191  << "Need 2 tracks, got " << tracks.size() << ".\n";
192  }
193 
194  return trajectories;
195 }
TwoBodyDecayVirtualMeasurement VirtualMeasurement
const ReferenceTrajectoryCollection constructTrajectories(const ConstTrajTrackPairCollection &tracks, const TwoBodyDecay &tbd, const MagneticField *magField, const reco::BeamSpot &beamSpot, bool setParameterErrors) const
virtual const TwoBodyDecay estimate(const std::vector< reco::TransientTrack > &tracks, const TwoBodyDecayVirtualMeasurement &vm) const
U second(std::pair< T, U > const &p)
virtual const ReferenceTrajectoryCollection trajectories(const edm::EventSetup &setup, const ConstTrajTrackPairCollection &tracks, const reco::BeamSpot &beamSpot) const override
Produce the trajectories.
void setES(const edm::EventSetup &es)
bool isValid(void) const
Definition: TwoBodyDecay.h:49
std::vector< ReferenceTrajectoryPtr > ReferenceTrajectoryCollection
tuple tracks
Definition: testEve_cfg.py:39
const T & get() const
Definition: EventSetup.h:55
T const * product() const
Definition: ESHandle.h:62
double chi2(void) const
Definition: TwoBodyDecay.h:47
ReferenceTrajectoryBase::ReferenceTrajectoryPtr ReferenceTrajectoryPtr

Member Data Documentation

double TwoBodyDecayTrajectoryFactory::theChi2CutValue
protected

Definition at line 71 of file TwoBodyDecayTrajectoryFactory.cc.

Referenced by trajectories(), and TwoBodyDecayTrajectoryFactory().

bool TwoBodyDecayTrajectoryFactory::theConstructTsosWithErrorsFlag
protected
TwoBodyDecayFitter* TwoBodyDecayTrajectoryFactory::theFitter
protected
double TwoBodyDecayTrajectoryFactory::theNSigmaCutValue
protected

Definition at line 70 of file TwoBodyDecayTrajectoryFactory.cc.

Referenced by match(), and TwoBodyDecayTrajectoryFactory().

double TwoBodyDecayTrajectoryFactory::thePrimaryMass
protected

Definition at line 66 of file TwoBodyDecayTrajectoryFactory.cc.

Referenced by trajectories(), and TwoBodyDecayTrajectoryFactory().

double TwoBodyDecayTrajectoryFactory::thePrimaryWidth
protected

Definition at line 67 of file TwoBodyDecayTrajectoryFactory.cc.

Referenced by trajectories(), and TwoBodyDecayTrajectoryFactory().

double TwoBodyDecayTrajectoryFactory::theSecondaryMass
protected
bool TwoBodyDecayTrajectoryFactory::theUseRefittedStateFlag
protected