CMS 3D CMS Logo

List of all members | Public Types | Public Member Functions | Static Public Member Functions
RigidBodyAlignmentParameters Class Reference

#include <RigidBodyAlignmentParameters.h>

Inheritance diagram for RigidBodyAlignmentParameters:
AlignmentParameters RigidBodyAlignmentParameters4D

Public Types

enum  AlignmentParameterName {
  dx = 0, dy, dz, dalpha,
  dbeta, dgamma, N_PARAM
}
 Give parameters a name. More...
 
- Public Types inherited from AlignmentParameters
typedef AlignmentParametersData::DataContainer DataContainer
 

Public Member Functions

void apply () override
 apply parameters to alignable More...
 
RigidBodyAlignmentParametersclone (const AlgebraicVector &parameters, const AlgebraicSymMatrix &covMatrix) const override
 Clone all parameters (for update of parameters) More...
 
RigidBodyAlignmentParameterscloneFromSelected (const AlgebraicVector &parameters, const AlgebraicSymMatrix &covMatrix) const override
 Clone selected parameters (for update of parameters) More...
 
AlgebraicMatrix derivatives (const TrajectoryStateOnSurface &tsos, const AlignableDetOrUnitPtr &) const override
 Get all derivatives. More...
 
AlgebraicVector globalParameters (void) const
 calculate and return parameters in global frame More...
 
void print (void) const
 print parameters to screen More...
 
 RigidBodyAlignmentParameters (Alignable *alignable, bool calcMis)
 
 RigidBodyAlignmentParameters (Alignable *alignable, const AlgebraicVector &parameters, const AlgebraicSymMatrix &covMatrix)
 Constructor for full set of parameters. More...
 
 RigidBodyAlignmentParameters (Alignable *alignable, const AlgebraicVector &parameters, const AlgebraicSymMatrix &covMatrix, const std::vector< bool > &selection)
 Constructor for selection. More...
 
AlgebraicVector rotation (void) const
 Get rotation parameters. More...
 
AlgebraicMatrix selectedDerivatives (const TrajectoryStateOnSurface &tsos, const AlignableDetOrUnitPtr &) const override
 Get selected derivatives. More...
 
AlgebraicVector translation (void) const
 Get translation parameters. More...
 
int type () const override
 tell type (AlignmentParametersFactory::ParametersType - but no circular dependency) More...
 
 ~RigidBodyAlignmentParameters () override
 Destructor. More...
 
- Public Member Functions inherited from AlignmentParameters
Alignablealignable (void) const
 Get pointer to corresponding alignable. More...
 
 AlignmentParameters ()
 Default constructor. More...
 
 AlignmentParameters (Alignable *object, const AlgebraicVector &par, const AlgebraicSymMatrix &cov)
 Constructor from given input. More...
 
 AlignmentParameters (Alignable *object, const AlgebraicVector &par, const AlgebraicSymMatrix &cov, const std::vector< bool > &sel)
 Constructor including selection of active parameters. More...
 
 AlignmentParameters (Alignable *object, const DataContainer &data)
 Constructor. More...
 
const AlgebraicSymMatrixcovariance (void) const
 Get parameter covariance matrix. More...
 
virtual unsigned int hierarchyLevel () const
 
bool isValid (void) const
 Get validity flag. More...
 
int numSelected (void) const
 Get number of selected parameters. More...
 
const AlgebraicVectorparameters (void) const
 Get alignment parameters. More...
 
AlgebraicSymMatrix selectedCovariance (void) const
 Get covariance matrix of selected parameters. More...
 
AlgebraicVector selectedParameters (void) const
 Get selected parameters. More...
 
const std::vector< bool > & selector (void) const
 Get alignment parameter selector vector. More...
 
void setUserVariables (AlignmentUserVariables *auv)
 Set pointer to user variables. More...
 
void setValid (bool v)
 Set validity flag. More...
 
int size (void) const
 Get number of parameters. More...
 
AlignmentUserVariablesuserVariables (void) const
 Get pointer to user variables. More...
 
virtual ~AlignmentParameters ()
 Destructor. More...
 

Static Public Member Functions

static AlgebraicVector displacementFromAlignable (const Alignable *ali)
 

Additional Inherited Members

- Protected Member Functions inherited from AlignmentParameters
AlgebraicSymMatrix collapseSymMatrix (const AlgebraicSymMatrix &m, const std::vector< bool > &sel) const
 
AlgebraicVector collapseVector (const AlgebraicVector &m, const std::vector< bool > &sel) const
 
AlgebraicSymMatrix expandSymMatrix (const AlgebraicSymMatrix &m, const std::vector< bool > &sel) const
 
AlgebraicVector expandVector (const AlgebraicVector &m, const std::vector< bool > &sel) const
 
- Protected Attributes inherited from AlignmentParameters
bool bValid
 True if parameters are valid. More...
 
AlignabletheAlignable
 
DataContainer theData
 
AlignmentUserVariablestheUserVariables
 

Detailed Description

Concrete class for alignment parameters and associated quantities [derived from AlignmentParameters]. The number of parameters N_PARAM is fixed to 6 (3 translations + 3 rotations)

Date
2007/10/08 15:56:00
Revision
1.12

(last update by

Author
cklae

)

Concrete class for alignment parameters and associated quantities [derived from AlignmentParameters]. The number of parameters N_PARAM is fixed to 6 (3 translations + 3 rotations)

Date
2008/09/02 15:08:12
Revision
1.13

(last update by

Author
flucke

)

Definition at line 21 of file RigidBodyAlignmentParameters.h.

Member Enumeration Documentation

Constructor & Destructor Documentation

RigidBodyAlignmentParameters::RigidBodyAlignmentParameters ( Alignable alignable,
bool  calcMis 
)

Constructor with empty parameters/covariance (if calcMis = false) or with parameters (no covariance) created from current (mis-)placement of alignable (if calcMis = true).

Definition at line 21 of file RigidBodyAlignmentParameters.cc.

Referenced by clone(), and cloneFromSelected().

21  :
22  AlignmentParameters(ali, displacementFromAlignable(calcMis ? ali : nullptr),
24 {
25 }
static AlgebraicVector displacementFromAlignable(const Alignable *ali)
CLHEP::HepSymMatrix AlgebraicSymMatrix
AlignmentParameters()
Default constructor.
RigidBodyAlignmentParameters::RigidBodyAlignmentParameters ( Alignable alignable,
const AlgebraicVector parameters,
const AlgebraicSymMatrix covMatrix 
)

Constructor for full set of parameters.

Definition at line 28 of file RigidBodyAlignmentParameters.cc.

References Exception, and N_PARAM.

30  :
31  AlignmentParameters( alignable, parameters, covMatrix )
32 {
33 
34  if (parameters.num_row() != N_PARAM) {
35  throw cms::Exception("BadParameters") << "in RigidBodyAlignmentParameters(): "
36  << parameters.num_row() << " instead of " << N_PARAM
37  << " parameters.";
38  }
39 }
AlignmentParameters()
Default constructor.
RigidBodyAlignmentParameters::RigidBodyAlignmentParameters ( Alignable alignable,
const AlgebraicVector parameters,
const AlgebraicSymMatrix covMatrix,
const std::vector< bool > &  selection 
)

Constructor for selection.

Definition at line 42 of file RigidBodyAlignmentParameters.cc.

References Exception, and N_PARAM.

45  :
46  AlignmentParameters( alignable, parameters, covMatrix, selection )
47 {
48  if (parameters.num_row() != N_PARAM) {
49  throw cms::Exception("BadParameters") << "in RigidBodyAlignmentParameters(): "
50  << parameters.num_row() << " instead of " << N_PARAM
51  << " parameters.";
52  }
53 }
selection
main part
Definition: corrVsCorr.py:98
AlignmentParameters()
Default constructor.
RigidBodyAlignmentParameters::~RigidBodyAlignmentParameters ( )
inlineoverride

Member Function Documentation

void RigidBodyAlignmentParameters::apply ( )
overridevirtual

apply parameters to alignable

Implements AlignmentParameters.

Definition at line 146 of file RigidBodyAlignmentParameters.cc.

References AlignmentParameters::alignable(), particleFlowDisplacedVertex_cfi::angles, Exception, Alignable::move(), align::rectify(), makeMuonMisalignmentScenario::rot, Alignable::rotateInGlobalFrame(), rotation(), edm::shift, Alignable::surface(), AlignableSurface::toGlobal(), align::toMatrix(), and translation().

Referenced by heavyIonTools.ConfigureHeavyIons::__call__(), editorTools.UserCodeTool::__call__(), HiCoreTools.RestrictInputToAOD::__call__(), coreTools.RunOnData::__call__(), trackTools.MakeAODTrackCandidates::__call__(), runJetUncertainties.RunJetUncertainties::__call__(), metTools.AddMETCollection::__call__(), heavyIonTools.ProductionDefaults::__call__(), editorTools.ChangeSource::__call__(), HiCoreTools.RemoveMCMatching::__call__(), cmsswVersionTools.PickRelValInputFiles::__call__(), coreTools.RemoveMCMatching::__call__(), trackTools.MakePATTrackCandidates::__call__(), trigTools.SwitchOnTrigger::__call__(), runMETCorrectionsAndUncertainties.RunMETCorrectionsAndUncertainties::__call__(), heavyIonTools.SelectionDefaults::__call__(), HiCoreTools.RemoveAllPATObjectsBut::__call__(), heavyIonTools.DisbaleMonteCarloDeps::__call__(), HiCoreTools.RemoveSpecificPATObjects::__call__(), trigTools.SwitchOnTriggerStandAlone::__call__(), trackTools.MakeTrackCandidates::__call__(), tauTools.AddTauCollection::__call__(), trigTools.SwitchOnTriggerMatching::__call__(), HiCoreTools.RemoveCleaning::__call__(), HiCoreTools.AddCleaning::__call__(), trigTools.SwitchOnTriggerMatchingStandAlone::__call__(), trigTools.SwitchOnTriggerMatchEmbedding::__call__(), jetTools.AddJetCollection::__call__(), jetTools.SwitchJetCollection::__call__(), jetTools.UpdateJetCollection::__call__(), jetTools.AddJetID::__call__(), jetTools.SetTagInfos::__call__(), and ~RigidBodyAlignmentParameters().

147 {
148  Alignable *alignable = this->alignable();
149  if (!alignable) {
150  throw cms::Exception("BadParameters")
151  << "RigidBodyAlignmentParameters::apply: parameters without alignable";
152  }
153 
154  // Translation in local frame
155  AlgebraicVector shift = this->translation(); // fixme: should be LocalVector
156 
157  // Translation local->global
158  align::LocalVector lv(shift[0], shift[1], shift[2]);
159  alignable->move( alignable->surface().toGlobal(lv) );
160 
161  // Rotation in local frame
163  // original code:
164  // alignable->rotateInLocalFrame( align::toMatrix(angles) );
165  // correct for rounding errors:
166  align::RotationType rot = alignable->surface().toGlobal( align::toMatrix(angles) );
167  align::rectify(rot);
168  alignable->rotateInGlobalFrame(rot);
169 }
virtual void move(const GlobalVector &displacement)=0
Movement with respect to the global reference frame.
void rectify(RotationType &)
Correct a rotation matrix for rounding errors.
Definition: Utilities.cc:198
Alignable * alignable(void) const
Get pointer to corresponding alignable.
const AlignableSurface & surface() const
Return the Surface (global position and orientation) of the object.
Definition: Alignable.h:135
CLHEP::HepVector AlgebraicVector
AlgebraicVector EulerAngles
Definition: Definitions.h:36
virtual void rotateInGlobalFrame(const RotationType &rotation)=0
AlgebraicVector translation(void) const
Get translation parameters.
align::GlobalPoints toGlobal(const align::LocalPoints &) const
Return in global coord given a set of local points.
RotationType toMatrix(const EulerAngles &)
Convert rotation angles about x-, y-, z-axes to matrix.
Definition: Utilities.cc:42
static unsigned int const shift
AlgebraicVector rotation(void) const
Get rotation parameters.
RigidBodyAlignmentParameters * RigidBodyAlignmentParameters::clone ( const AlgebraicVector parameters,
const AlgebraicSymMatrix covMatrix 
) const
overridevirtual

Clone all parameters (for update of parameters)

Implements AlignmentParameters.

Reimplemented in RigidBodyAlignmentParameters4D.

Definition at line 57 of file RigidBodyAlignmentParameters.cc.

References AlignmentParameters::alignable(), AlignmentParameters::isValid(), RigidBodyAlignmentParameters(), AlignmentParameters::selector(), AlignmentParameters::setUserVariables(), AlignmentParameters::setValid(), and AlignmentParameters::userVariables().

Referenced by AlignmentParameterStore::acquireRelativeParameters(), cloneFromSelected(), and ~RigidBodyAlignmentParameters().

59 {
62 
64  rbap->setValid(isValid());
65 
66  return rbap;
67 }
const std::vector< bool > & selector(void) const
Get alignment parameter selector vector.
AlignmentUserVariables * userVariables(void) const
Get pointer to user variables.
void setValid(bool v)
Set validity flag.
Alignable * alignable(void) const
Get pointer to corresponding alignable.
void setUserVariables(AlignmentUserVariables *auv)
Set pointer to user variables.
bool isValid(void) const
Get validity flag.
RigidBodyAlignmentParameters(Alignable *alignable, bool calcMis)
RigidBodyAlignmentParameters * clone(const AlgebraicVector &parameters, const AlgebraicSymMatrix &covMatrix) const override
Clone all parameters (for update of parameters)
RigidBodyAlignmentParameters * RigidBodyAlignmentParameters::cloneFromSelected ( const AlgebraicVector parameters,
const AlgebraicSymMatrix covMatrix 
) const
overridevirtual

Clone selected parameters (for update of parameters)

Implements AlignmentParameters.

Reimplemented in RigidBodyAlignmentParameters4D.

Definition at line 71 of file RigidBodyAlignmentParameters.cc.

References AlignmentParameters::alignable(), clone(), AlignmentParameters::expandSymMatrix(), AlignmentParameters::expandVector(), AlignmentParameters::isValid(), RigidBodyAlignmentParameters(), AlignmentParameters::selector(), AlignmentParameters::setUserVariables(), AlignmentParameters::setValid(), and AlignmentParameters::userVariables().

Referenced by ~RigidBodyAlignmentParameters().

73 {
76  expandSymMatrix(covMatrix, selector()), selector());
77 
79  rbap->setValid(isValid());
80 
81  return rbap;
82 }
AlgebraicSymMatrix expandSymMatrix(const AlgebraicSymMatrix &m, const std::vector< bool > &sel) const
const std::vector< bool > & selector(void) const
Get alignment parameter selector vector.
AlignmentUserVariables * userVariables(void) const
Get pointer to user variables.
void setValid(bool v)
Set validity flag.
Alignable * alignable(void) const
Get pointer to corresponding alignable.
AlgebraicVector expandVector(const AlgebraicVector &m, const std::vector< bool > &sel) const
void setUserVariables(AlignmentUserVariables *auv)
Set pointer to user variables.
bool isValid(void) const
Get validity flag.
RigidBodyAlignmentParameters(Alignable *alignable, bool calcMis)
RigidBodyAlignmentParameters * clone(const AlgebraicVector &parameters, const AlgebraicSymMatrix &covMatrix) const override
Clone all parameters (for update of parameters)
AlgebraicMatrix RigidBodyAlignmentParameters::derivatives ( const TrajectoryStateOnSurface tsos,
const AlignableDetOrUnitPtr alidet 
) const
overridevirtual

Get all derivatives.

Implements AlignmentParameters.

Reimplemented in RigidBodyAlignmentParameters4D.

Definition at line 86 of file RigidBodyAlignmentParameters.cc.

References AlignmentParameters::alignable(), and FrameToFrameDerivative::frameToFrameDerivative().

Referenced by selectedDerivatives(), and ~RigidBodyAlignmentParameters().

88 {
89  const Alignable *ali = this->alignable(); // Alignable of these parameters
90 
91  if (ali == alidet) { // same alignable => same frame
92  return KarimakiAlignmentDerivatives()(tsos);
93  } else { // different alignable => transform into correct frame
94  const AlgebraicMatrix deriv = KarimakiAlignmentDerivatives()(tsos);
96  return ftfd.frameToFrameDerivative(alidet, ali).T() * deriv;
97  }
98 }
CLHEP::HepMatrix AlgebraicMatrix
Alignable * alignable(void) const
Get pointer to corresponding alignable.
AlgebraicMatrix frameToFrameDerivative(const Alignable *object, const Alignable *composedObject) const
AlgebraicVector RigidBodyAlignmentParameters::displacementFromAlignable ( const Alignable ali)
static

Calculate parameter vector of misplacements (shift+rotation) from alignable. (If ali=0, return empty AlgebraicVector of proper length.)

Definition at line 212 of file RigidBodyAlignmentParameters.cc.

References particleFlowDisplacedVertex_cfi::angles, PV3DBase< T, PVType, FrameType >::basicVector(), Alignable::displacement(), PFRecoTauDiscriminationAgainstElectronDeadECAL_cfi::dR, Alignable::globalRotation(), N_PARAM, Alignable::rotation(), Alignable::surface(), align::toAngles(), AlignableSurface::toLocal(), TkRotation< T >::transposed(), PV3DBase< T, PVType, FrameType >::x(), PV3DBase< T, PVType, FrameType >::y(), and PV3DBase< T, PVType, FrameType >::z().

Referenced by ~RigidBodyAlignmentParameters().

213 {
214  AlgebraicVector displacement(N_PARAM);
215 
216  if (ali) {
217  const align::RotationType& dR = ali->rotation();
218 
219  const align::LocalVector shifts( ali->globalRotation() *
220  ( dR.transposed() * ali->displacement().basicVector() ) );
221 
223 
224  displacement[0] = shifts.x();
225  displacement[1] = shifts.y();
226  displacement[2] = shifts.z();
227  displacement[3] = angles(1);
228  displacement[4] = angles(2);
229  displacement[5] = angles(3);
230  }
231 
232  return displacement;
233 }
const GlobalVector & displacement() const
Return change of the global position since the creation of the object.
Definition: Alignable.h:144
const RotationType & globalRotation() const
Return the global orientation of the object.
Definition: Alignable.h:141
const RotationType & rotation() const
Return change of orientation since the creation of the object.
Definition: Alignable.h:147
align::RotationType toLocal(const align::RotationType &) const
Return in local frame a rotation given in global frame.
EulerAngles toAngles(const RotationType &)
Convert rotation matrix to angles about x-, y-, z-axes (frame rotation).
Definition: Utilities.cc:9
const AlignableSurface & surface() const
Return the Surface (global position and orientation) of the object.
Definition: Alignable.h:135
CLHEP::HepVector AlgebraicVector
AlgebraicVector EulerAngles
Definition: Definitions.h:36
TkRotation transposed() const
const BasicVectorType & basicVector() const
Definition: PV3DBase.h:56
AlgebraicVector RigidBodyAlignmentParameters::globalParameters ( void  ) const

calculate and return parameters in global frame

Definition at line 178 of file RigidBodyAlignmentParameters.cc.

References N_PARAM, rotation(), edm::shift, Alignable::surface(), AlignmentParameters::theAlignable, AlignableSurface::toGlobal(), translation(), PV3DBase< T, PVType, FrameType >::x(), PV3DBase< T, PVType, FrameType >::y(), and PV3DBase< T, PVType, FrameType >::z().

Referenced by ~RigidBodyAlignmentParameters().

179 {
180  AlgebraicVector m_GlobalParameters(N_PARAM, 0);
181 
182  const AlgebraicVector shift = translation(); // fixme: should return LocalVector
183 
184  const align::LocalVector lv(shift[0], shift[1], shift[2]);
186 
187  m_GlobalParameters[0] = dg.x();
188  m_GlobalParameters[1] = dg.y();
189  m_GlobalParameters[2] = dg.z();
190 
191  const align::EulerAngles eulerglob = theAlignable->surface().toGlobal( rotation() );
192 
193  m_GlobalParameters[3]=eulerglob(1);
194  m_GlobalParameters[4]=eulerglob(2);
195  m_GlobalParameters[5]=eulerglob(3);
196 
197  return m_GlobalParameters;
198 }
T y() const
Definition: PV3DBase.h:63
T z() const
Definition: PV3DBase.h:64
const AlignableSurface & surface() const
Return the Surface (global position and orientation) of the object.
Definition: Alignable.h:135
CLHEP::HepVector AlgebraicVector
AlgebraicVector EulerAngles
Definition: Definitions.h:36
AlgebraicVector translation(void) const
Get translation parameters.
align::GlobalPoints toGlobal(const align::LocalPoints &) const
Return in global coord given a set of local points.
static unsigned int const shift
AlgebraicVector rotation(void) const
Get rotation parameters.
T x() const
Definition: PV3DBase.h:62
void RigidBodyAlignmentParameters::print ( void  ) const

print parameters to screen

Definition at line 202 of file RigidBodyAlignmentParameters.cc.

References gather_cfg::cout, and AlignmentParameters::theData.

Referenced by ~RigidBodyAlignmentParameters().

203 {
204 
205  std::cout << "Contents of RigidBodyAlignmentParameters:"
206  << "\nParameters: " << theData->parameters()
207  << "\nCovariance: " << theData->covariance() << std::endl;
208 }
AlgebraicVector RigidBodyAlignmentParameters::rotation ( void  ) const

Get rotation parameters.

Definition at line 137 of file RigidBodyAlignmentParameters.cc.

References mps_fire::i, makeMuonMisalignmentScenario::rot, and AlignmentParameters::theData.

Referenced by apply(), globalParameters(), and ~RigidBodyAlignmentParameters().

138 {
139  AlgebraicVector rot(3);
140  for (int i=0;i<3;++i) rot[i] = theData->parameters()[i+3];
141 
142  return rot;
143 }
CLHEP::HepVector AlgebraicVector
AlgebraicMatrix RigidBodyAlignmentParameters::selectedDerivatives ( const TrajectoryStateOnSurface tsos,
const AlignableDetOrUnitPtr alignableDet 
) const
overridevirtual

Get selected derivatives.

Reimplemented from AlignmentParameters.

Definition at line 103 of file RigidBodyAlignmentParameters.cc.

References derivatives(), trackingPlots::ncols, AlignmentParameters::numSelected(), and AlignmentParameters::selector().

Referenced by ~RigidBodyAlignmentParameters().

105 {
106  const AlgebraicMatrix dev = this->derivatives( tsos, alignableDet );
107 
108  int ncols = dev.num_col();
109  int nrows = dev.num_row();
110  int nsel = numSelected();
111 
112  AlgebraicMatrix seldev( nsel, ncols );
113 
114  int ir2=0;
115  for ( int irow=0; irow<nrows; ++irow ) {
116  if (selector()[irow]) {
117  for ( int icol=0; icol<ncols; ++icol ) seldev[ir2][icol] = dev[irow][icol];
118  ++ir2;
119  }
120  }
121 
122  return seldev;
123 }
AlgebraicMatrix derivatives(const TrajectoryStateOnSurface &tsos, const AlignableDetOrUnitPtr &) const override
Get all derivatives.
const std::vector< bool > & selector(void) const
Get alignment parameter selector vector.
CLHEP::HepMatrix AlgebraicMatrix
int numSelected(void) const
Get number of selected parameters.
AlgebraicVector RigidBodyAlignmentParameters::translation ( void  ) const

Get translation parameters.

Definition at line 127 of file RigidBodyAlignmentParameters.cc.

References mps_fire::i, edm::shift, and AlignmentParameters::theData.

Referenced by apply(), globalParameters(), and ~RigidBodyAlignmentParameters().

128 {
130  for ( int i=0;i<3;++i ) shift[i]=theData->parameters()[i];
131 
132  return shift;
133 }
CLHEP::HepVector AlgebraicVector
static unsigned int const shift
int RigidBodyAlignmentParameters::type ( ) const
overridevirtual