CMS 3D CMS Logo

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Private Member Functions | Private Attributes
GsfCombinedMaterialEffectsUpdator Class Reference

#include <GsfCombinedMaterialEffectsUpdator.h>

Inheritance diagram for GsfCombinedMaterialEffectsUpdator:
GsfMaterialEffectsUpdator

Public Member Functions

virtual
GsfCombinedMaterialEffectsUpdator
clone () const
 
 GsfCombinedMaterialEffectsUpdator (GsfMaterialEffectsUpdator &msUpdator, GsfMaterialEffectsUpdator &elUpdator)
 Constructor from multiple scattering and energy loss updator. More...
 
- Public Member Functions inherited from GsfMaterialEffectsUpdator
virtual std::vector
< AlgebraicSymMatrix55
deltaLocalErrors (const TrajectoryStateOnSurface &TSoS, const PropagationDirection propDir) const
 
virtual std::vector< double > deltaPs (const TrajectoryStateOnSurface &TSoS, const PropagationDirection propDir) const
 
 GsfMaterialEffectsUpdator (float mass)
 
float mass () const
 
virtual TrajectoryStateOnSurface updateState (const TrajectoryStateOnSurface &TSoS, const PropagationDirection propDir) const
 
virtual std::vector< double > weights (const TrajectoryStateOnSurface &TSoS, const PropagationDirection propDir) const
 
virtual ~GsfMaterialEffectsUpdator ()
 

Private Member Functions

virtual void compute (const TrajectoryStateOnSurface &, const PropagationDirection) const
 

Private Attributes

DeepCopyPointerByClone
< GsfMaterialEffectsUpdator
theELUpdator
 
DeepCopyPointerByClone
< GsfMaterialEffectsUpdator
theMSUpdator
 

Additional Inherited Members

- Protected Member Functions inherited from GsfMaterialEffectsUpdator
virtual bool newArguments (const TrajectoryStateOnSurface &, const PropagationDirection) const
 
virtual void storeArguments (const TrajectoryStateOnSurface &, const PropagationDirection) const
 
- Protected Attributes inherited from GsfMaterialEffectsUpdator
std::vector< AlgebraicSymMatrix55theDeltaCovs
 
std::vector< double > theDeltaPs
 
std::vector< double > theWeights
 

Detailed Description

Combines two GsfMaterialEffectsUpdators (for multiple scattering and energy loss).

Definition at line 10 of file GsfCombinedMaterialEffectsUpdator.h.

Constructor & Destructor Documentation

GsfCombinedMaterialEffectsUpdator::GsfCombinedMaterialEffectsUpdator ( GsfMaterialEffectsUpdator msUpdator,
GsfMaterialEffectsUpdator elUpdator 
)

Constructor from multiple scattering and energy loss updator.

Definition at line 20 of file GsfCombinedMaterialEffectsUpdator.cc.

Referenced by clone().

21  :
22  GsfMaterialEffectsUpdator(msUpdator.mass()),
23  theMSUpdator(msUpdator.clone()),
24  theELUpdator(elUpdator.clone()) {}
virtual GsfMaterialEffectsUpdator * clone() const =0
DeepCopyPointerByClone< GsfMaterialEffectsUpdator > theMSUpdator
DeepCopyPointerByClone< GsfMaterialEffectsUpdator > theELUpdator

Member Function Documentation

virtual GsfCombinedMaterialEffectsUpdator* GsfCombinedMaterialEffectsUpdator::clone ( void  ) const
inlinevirtual

Implements GsfMaterialEffectsUpdator.

Definition at line 13 of file GsfCombinedMaterialEffectsUpdator.h.

References GsfCombinedMaterialEffectsUpdator().

14  {
15  return new GsfCombinedMaterialEffectsUpdator(*this);
16  }
GsfCombinedMaterialEffectsUpdator(GsfMaterialEffectsUpdator &msUpdator, GsfMaterialEffectsUpdator &elUpdator)
Constructor from multiple scattering and energy loss updator.
void GsfCombinedMaterialEffectsUpdator::compute ( const TrajectoryStateOnSurface TSoS,
const PropagationDirection  propDir 
) const
privatevirtual

Implements GsfMaterialEffectsUpdator.

Definition at line 46 of file GsfCombinedMaterialEffectsUpdator.cc.

References GsfMaterialEffectsUpdator::deltaLocalErrors(), GsfMaterialEffectsUpdator::deltaPs(), GsfMaterialEffectsUpdator::theDeltaCovs, GsfMaterialEffectsUpdator::theDeltaPs, theELUpdator, theMSUpdator, GsfMaterialEffectsUpdator::theWeights, and GsfMaterialEffectsUpdator::weights().

48 {
49  //
50  // reset components
51  //
52  theWeights.clear();
53  theDeltaPs.clear();
54  theDeltaCovs.clear();
55  //
56  // get components from multiple scattering
57  //
58  std::vector<double> msWeights = theMSUpdator->weights(TSoS,propDir);
59  std::vector<double> msDeltaPs = theMSUpdator->deltaPs(TSoS,propDir);
60  std::vector<AlgebraicSymMatrix55> msDeltaCovs = theMSUpdator->deltaLocalErrors(TSoS,propDir);
61  if ( msWeights.empty() ) {
62  //
63  // create one dummy component
64  //
65  msWeights.push_back(1.);
66  msDeltaPs.push_back(0.);
67  msDeltaCovs.push_back(AlgebraicSymMatrix55());
68  }
69  //
70  // get components from energy loss
71  //
72  std::vector<double> elWeights = theELUpdator->weights(TSoS,propDir);
73  std::vector<double> elDeltaPs = theELUpdator->deltaPs(TSoS,propDir);
74  std::vector<AlgebraicSymMatrix55> elDeltaCovs = theELUpdator->deltaLocalErrors(TSoS,propDir);
75  if ( elWeights.empty() ) {
76  //
77  // create one dummy component
78  //
79  elWeights.push_back(1.);
80  elDeltaPs.push_back(0.);
81  elDeltaCovs.push_back(AlgebraicSymMatrix55());
82  }
83  //
84  // combine the two multi-updates
85  //
86  std::vector<double>::const_iterator iMsWgt(msWeights.begin());
87  std::vector<double>::const_iterator iMsDp(msDeltaPs.begin());
88  std::vector<AlgebraicSymMatrix55>::const_iterator iMsDc(msDeltaCovs.begin());
89  for ( ; iMsWgt<msWeights.end(); iMsWgt++,iMsDp++,iMsDc++ ) {
90 
91  std::vector<double>::const_iterator iElWgt(elWeights.begin());
92  std::vector<double>::const_iterator iElDp(elDeltaPs.begin());
93  std::vector<AlgebraicSymMatrix55>::const_iterator iElDc(elDeltaCovs.begin());
94  for ( ; iElWgt<elWeights.end(); iElWgt++,iElDp++,iElDc++ ) {
95  theWeights.push_back((*iMsWgt)*(*iElWgt));
96  theDeltaPs.push_back((*iMsDp)+(*iElDp));
97  theDeltaCovs.push_back((*iMsDc)+(*iElDc));
98  }
99  }
100 
101 }
std::vector< AlgebraicSymMatrix55 > theDeltaCovs
ROOT::Math::SMatrix< double, 5, 5, ROOT::Math::MatRepSym< double, 5 > > AlgebraicSymMatrix55
virtual std::vector< double > deltaPs(const TrajectoryStateOnSurface &TSoS, const PropagationDirection propDir) const
virtual std::vector< AlgebraicSymMatrix55 > deltaLocalErrors(const TrajectoryStateOnSurface &TSoS, const PropagationDirection propDir) const
DeepCopyPointerByClone< GsfMaterialEffectsUpdator > theMSUpdator
virtual std::vector< double > weights(const TrajectoryStateOnSurface &TSoS, const PropagationDirection propDir) const
DeepCopyPointerByClone< GsfMaterialEffectsUpdator > theELUpdator

Member Data Documentation

DeepCopyPointerByClone<GsfMaterialEffectsUpdator> GsfCombinedMaterialEffectsUpdator::theELUpdator
private

Definition at line 36 of file GsfCombinedMaterialEffectsUpdator.h.

Referenced by compute().

DeepCopyPointerByClone<GsfMaterialEffectsUpdator> GsfCombinedMaterialEffectsUpdator::theMSUpdator
private

Definition at line 35 of file GsfCombinedMaterialEffectsUpdator.h.

Referenced by compute().