CMS 3D CMS Logo

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

#include <BeamSpotAlignmentParameters.h>

Inheritance diagram for BeamSpotAlignmentParameters:
AlignmentParameters

Public Types

enum  AlignmentParameterName {
  dx = 0, dy, dxslope, dyslope,
  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...
 
 BeamSpotAlignmentParameters (Alignable *alignable, bool calcMis)
 
 BeamSpotAlignmentParameters (Alignable *alignable, const AlgebraicVector &parameters, const AlgebraicSymMatrix &covMatrix)
 Constructor for full set of parameters. More...
 
 BeamSpotAlignmentParameters (Alignable *alignable, const AlgebraicVector &parameters, const AlgebraicSymMatrix &covMatrix, const std::vector< bool > &selection)
 Constructor for selection. More...
 
BeamSpotAlignmentParametersclone (const AlgebraicVector &parameters, const AlgebraicSymMatrix &covMatrix) const override
 Clone all parameters (for update of parameters) More...
 
BeamSpotAlignmentParameterscloneFromSelected (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...
 
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...
 
 ~BeamSpotAlignmentParameters () 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 4 (2 translations in x & y, and 2 slopes)

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

(last update by

Author
flucke

)

Definition at line 21 of file BeamSpotAlignmentParameters.h.

Member Enumeration Documentation

Constructor & Destructor Documentation

BeamSpotAlignmentParameters::BeamSpotAlignmentParameters ( 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 BeamSpotAlignmentParameters.cc.

Referenced by clone(), and cloneFromSelected().

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

Constructor for full set of parameters.

Definition at line 29 of file BeamSpotAlignmentParameters.cc.

References Exception, and N_PARAM.

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

Constructor for selection.

Definition at line 42 of file BeamSpotAlignmentParameters.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 BeamSpotAlignmentParameters(): "
50  << parameters.num_row() << " instead of " << N_PARAM
51  << " parameters.";
52  }
53 }
selection
main part
Definition: corrVsCorr.py:98
const AlgebraicVector & parameters(void) const
Get alignment parameters.
AlignmentParameters()
Default constructor.
BeamSpotAlignmentParameters::~BeamSpotAlignmentParameters ( )
override

Destructor.

Definition at line 56 of file BeamSpotAlignmentParameters.cc.

57 {
58 
59 }

Member Function Documentation

void BeamSpotAlignmentParameters::apply ( )
overridevirtual

apply parameters to alignable

Implements AlignmentParameters.

Definition at line 169 of file BeamSpotAlignmentParameters.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__(), and jetTools.SetTagInfos::__call__().

170 {
171  Alignable *alignable = this->alignable();
172  if (!alignable) {
173  throw cms::Exception("BadParameters")
174  << "BeamSpotAlignmentParameters::apply: parameters without alignable";
175  }
176 
177  // Translation in local frame
178  AlgebraicVector shift = this->translation(); // fixme: should be LocalVector
179 
180  // Translation local->global
181  align::GlobalVector gv(shift[0], shift[1], shift[2]);
182  alignable->move( gv );
183 
184  // Rotation in local frame
186  // original code:
187  // alignable->rotateInLocalFrame( align::toMatrix(angles) );
188  // correct for rounding errors:
189  align::RotationType rot = alignable->surface().toGlobal( align::toMatrix(angles) );
190  align::rectify(rot);
191  alignable->rotateInGlobalFrame(rot);
192 }
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.
AlgebraicVector rotation(void) const
Get rotation parameters.
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
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 translation(void) const
Get translation parameters.
BeamSpotAlignmentParameters * BeamSpotAlignmentParameters::clone ( const AlgebraicVector parameters,
const AlgebraicSymMatrix covMatrix 
) const
overridevirtual

Clone all parameters (for update of parameters)

Implements AlignmentParameters.

Definition at line 63 of file BeamSpotAlignmentParameters.cc.

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

Referenced by cloneFromSelected().

65 {
68 
70  rbap->setValid(isValid());
71 
72  return rbap;
73 }
const std::vector< bool > & selector(void) const
Get alignment parameter selector vector.
BeamSpotAlignmentParameters(Alignable *alignable, bool calcMis)
const AlgebraicVector & parameters(void) const
Get alignment parameters.
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.
BeamSpotAlignmentParameters * clone(const AlgebraicVector &parameters, const AlgebraicSymMatrix &covMatrix) const override
Clone all parameters (for update of parameters)
bool isValid(void) const
Get validity flag.
BeamSpotAlignmentParameters * BeamSpotAlignmentParameters::cloneFromSelected ( const AlgebraicVector parameters,
const AlgebraicSymMatrix covMatrix 
) const
overridevirtual

Clone selected parameters (for update of parameters)

Implements AlignmentParameters.

Definition at line 77 of file BeamSpotAlignmentParameters.cc.

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

79 {
82  expandSymMatrix(covMatrix, selector()), selector());
83 
85  rbap->setValid(isValid());
86 
87  return rbap;
88 }
AlgebraicSymMatrix expandSymMatrix(const AlgebraicSymMatrix &m, const std::vector< bool > &sel) const
const std::vector< bool > & selector(void) const
Get alignment parameter selector vector.
BeamSpotAlignmentParameters(Alignable *alignable, bool calcMis)
const AlgebraicVector & parameters(void) const
Get alignment parameters.
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.
BeamSpotAlignmentParameters * clone(const AlgebraicVector &parameters, const AlgebraicSymMatrix &covMatrix) const override
Clone all parameters (for update of parameters)
bool isValid(void) const
Get validity flag.
AlgebraicMatrix BeamSpotAlignmentParameters::derivatives ( const TrajectoryStateOnSurface tsos,
const AlignableDetOrUnitPtr alidet 
) const
overridevirtual

Get all derivatives.

Implements AlignmentParameters.

Definition at line 92 of file BeamSpotAlignmentParameters.cc.

References AlignmentParameters::alignable(), Exception, and N_PARAM.

Referenced by selectedDerivatives().

94 {
95  const Alignable *ali = this->alignable(); // Alignable of these parameters
96 
97  if (ali == alidet) { // same alignable => same frame
98  return BeamSpotAlignmentDerivatives()(tsos);
99  } else {
100  throw cms::Exception("MisMatch")
101  << "BeamSpotAlignmentParameters::derivatives: The hit alignable must match the "
102  << "aligned one, i.e. these parameters make only sense for AlignableBeamSpot.\n";
103  return AlgebraicMatrix(N_PARAM, 2); // please compiler
104  }
105 }
CLHEP::HepMatrix AlgebraicMatrix
Alignable * alignable(void) const
Get pointer to corresponding alignable.
AlgebraicVector BeamSpotAlignmentParameters::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 234 of file BeamSpotAlignmentParameters.cc.

References PV3DBase< T, PVType, FrameType >::basicVector(), Alignable::displacement(), PFRecoTauDiscriminationAgainstElectronDeadECAL_cfi::dR, Alignable::globalRotation(), N_PARAM, Alignable::rotation(), TkRotation< T >::transposed(), PV3DBase< T, PVType, FrameType >::x(), and PV3DBase< T, PVType, FrameType >::y().

235 {
236  AlgebraicVector displacement(N_PARAM);
237 
238  if (ali) {
239  const align::RotationType& dR = ali->rotation();
240 
241  const align::LocalVector shifts( ali->globalRotation() *
242  ( dR.transposed() * ali->displacement().basicVector() ) );
243 
244  align::GlobalVector gv(0.0, 0.0, 1.0);
245  align::LocalVector lv(dR.transposed() * gv.basicVector());
246 
247  displacement[0] = shifts.x();
248  displacement[1] = shifts.y();
249  displacement[2] = lv.x()/lv.z();
250  displacement[3] = lv.y()/lv.z();
251  }
252 
253  return displacement;
254 }
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
CLHEP::HepVector AlgebraicVector
TkRotation transposed() const
T x() const
Definition: PV3DBase.h:62
const BasicVectorType & basicVector() const
Definition: PV3DBase.h:56
AlgebraicVector BeamSpotAlignmentParameters::globalParameters ( void  ) const

calculate and return parameters in global frame

Definition at line 201 of file BeamSpotAlignmentParameters.cc.

References BeamSpotFakeParameters_cfi::dxdz, BeamSpotFakeParameters_cfi::dydz, N_PARAM, 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().

202 {
203  AlgebraicVector m_GlobalParameters(N_PARAM, 0);
204 
205  const AlgebraicVector shift = translation(); // fixme: should return LocalVector
206 
207  const align::GlobalVector dg(shift[0], shift[1], 0);
208 
209  m_GlobalParameters[0] = dg.x();
210  m_GlobalParameters[1] = dg.y();
211 
212  align::LocalVector lv(0.0, 0.0, 1.0);
214 
215  double dxdz = gv.x()/gv.z();
216  double dydz = gv.x()/gv.z();
217 
218  m_GlobalParameters[2] = dxdz;
219  m_GlobalParameters[3] = dydz;
220 
221  return m_GlobalParameters;
222 }
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
align::GlobalPoints toGlobal(const align::LocalPoints &) const
Return in global coord given a set of local points.
static unsigned int const shift
T x() const
Definition: PV3DBase.h:62
AlgebraicVector translation(void) const
Get translation parameters.
void BeamSpotAlignmentParameters::print ( void  ) const

print parameters to screen

Definition at line 225 of file BeamSpotAlignmentParameters.cc.

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

226 {
227 
228  std::cout << "Contents of BeamSpotAlignmentParameters:"
229  << "\nParameters: " << theData->parameters()
230  << "\nCovariance: " << theData->covariance() << std::endl;
231 }
AlgebraicVector BeamSpotAlignmentParameters::rotation ( void  ) const

Get rotation parameters.

Definition at line 142 of file BeamSpotAlignmentParameters.cc.

References particleFlowDisplacedVertex_cfi::angles, funct::cos(), BeamSpotFakeParameters_cfi::dxdz, BeamSpotFakeParameters_cfi::dydz, makeMuonMisalignmentScenario::rot, funct::sin(), AlignmentParameters::theData, and align::toAngles().

Referenced by apply().

143 {
144  AlgebraicVector rot(3);
145 
146  double dxdz = theData->parameters()[2];
147  double dydz = theData->parameters()[3];
148  double angleY = std::atan(dxdz);
149  double angleX = -std::atan(dydz);
150 
151  align::RotationType rotY( std::cos(angleY), 0., -std::sin(angleY),
152  0., 1., 0.,
153  std::sin(angleY), 0., std::cos(angleY) );
154 
155  align::RotationType rotX( 1., 0., 0.,
156  0., std::cos(angleX), std::sin(angleX),
157  0., -std::sin(angleX), std::cos(angleX) );
158 
160 
161  rot[0] = angles(1);
162  rot[1] = angles(2);
163  rot[2] = angles(3);
164 
165  return rot;
166 }
Sin< T >::type sin(const T &t)
Definition: Sin.h:22
Cos< T >::type cos(const T &t)
Definition: Cos.h:22
EulerAngles toAngles(const RotationType &)
Convert rotation matrix to angles about x-, y-, z-axes (frame rotation).
Definition: Utilities.cc:9
CLHEP::HepVector AlgebraicVector
AlgebraicVector EulerAngles
Definition: Definitions.h:36
AlgebraicMatrix BeamSpotAlignmentParameters::selectedDerivatives ( const TrajectoryStateOnSurface tsos,
const AlignableDetOrUnitPtr alignableDet 
) const
overridevirtual

Get selected derivatives.

Reimplemented from AlignmentParameters.

Definition at line 109 of file BeamSpotAlignmentParameters.cc.

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

111 {
112  const AlgebraicMatrix dev = this->derivatives( tsos, alignableDet );
113 
114  int ncols = dev.num_col();
115  int nrows = dev.num_row();
116  int nsel = numSelected();
117 
118  AlgebraicMatrix seldev( nsel, ncols );
119 
120  int ir2=0;
121  for ( int irow=0; irow<nrows; ++irow ) {
122  if (selector()[irow]) {
123  for ( int icol=0; icol<ncols; ++icol ) seldev[ir2][icol] = dev[irow][icol];
124  ++ir2;
125  }
126  }
127 
128  return seldev;
129 }
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 BeamSpotAlignmentParameters::translation ( void  ) const

Get translation parameters.

Definition at line 132 of file BeamSpotAlignmentParameters.cc.

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

Referenced by apply(), and globalParameters().

133 {
135  for ( int i=0;i<2;++i ) shift[i] = theData->parameters()[i];
136  shift[2] = 0.0;
137 
138  return shift;
139 }
CLHEP::HepVector AlgebraicVector
static unsigned int const shift
int BeamSpotAlignmentParameters::type ( ) const
overridevirtual