AlignmentParameterName

RigidBodyAlignmentParameters

Macros

Line Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
#ifndef Alignment_CommonAlignment_RigidBodyAlignmentParameters_h
#define Alignment_CommonAlignment_RigidBodyAlignmentParameters_h

#include "Alignment/CommonAlignment/interface/AlignmentParameters.h"
#include "DataFormats/CLHEP/interface/AlgebraicObjects.h"

/// \class RigidBodyAlignmentParameters
///
/// 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 $)

class Alignable;
class AlignableDetOrUnitPtr;
class TrajectoryStateOnSurface;

class RigidBodyAlignmentParameters : public AlignmentParameters {
public:
  /// Give parameters a name
  enum AlignmentParameterName { dx = 0, dy, dz, dalpha, dbeta, dgamma, N_PARAM };

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

  /// Constructor for full set of parameters
  RigidBodyAlignmentParameters(Alignable *alignable,
                               const AlgebraicVector &parameters,
                               const AlgebraicSymMatrix &covMatrix);

  /// Constructor for selection
  RigidBodyAlignmentParameters(Alignable *alignable,
                               const AlgebraicVector &parameters,
                               const AlgebraicSymMatrix &covMatrix,
                               const std::vector<bool> &selection);

  /// Destructor
  ~RigidBodyAlignmentParameters() override {}
  void apply() override;
  int type() const override;

  /// Clone all parameters (for update of parameters)
  RigidBodyAlignmentParameters *clone(const AlgebraicVector &parameters,
                                      const AlgebraicSymMatrix &covMatrix) const override;

  /// Clone selected parameters (for update of parameters)
  RigidBodyAlignmentParameters *cloneFromSelected(const AlgebraicVector &parameters,
                                                  const AlgebraicSymMatrix &covMatrix) const override;

  /// Get all derivatives
  AlgebraicMatrix derivatives(const TrajectoryStateOnSurface &tsos, const AlignableDetOrUnitPtr &) const override;

  /// Get selected derivatives
  AlgebraicMatrix selectedDerivatives(const TrajectoryStateOnSurface &tsos,
                                      const AlignableDetOrUnitPtr &) const override;

  /// Get translation parameters
  AlgebraicVector translation(void) const;

  /// Get rotation parameters
  AlgebraicVector rotation(void) const;

  /// calculate and return parameters in global frame
  AlgebraicVector globalParameters(void) const;

  /// print parameters to screen
  void print(void) const;

  /// Calculate parameter vector of misplacements (shift+rotation) from
  /// alignable. (If ali=0, return empty AlgebraicVector of proper length.)
  static AlgebraicVector displacementFromAlignable(const Alignable *ali);
};

#endif