CMS 3D CMS Logo

List of all members | Public Types | Public Member Functions | Protected Types | Protected Member Functions | Protected Attributes | Private Member Functions | Private Attributes
Alignable Class Referenceabstract

#include <Alignable.h>

Inheritance diagram for Alignable:
AlignableBeamSpot AlignableComposite AlignableDetUnit AlignableCSCEndcap AlignableCSCRing AlignableCSCStation AlignableDet AlignableDTBarrel AlignableDTStation AlignableDTWheel AlignableMuon AlignableTracker

Public Types

typedef align::Alignables Alignables
 
enum  CompConstraintType { CompConstraintType::NONE, CompConstraintType::POSITION, CompConstraintType::POSITION_Z }
 
typedef align::GlobalVector GlobalVector
 
typedef align::LocalVector LocalVector
 
typedef align::PositionType PositionType
 
typedef align::RotationType RotationType
 
typedef align::Scalar Scalar
 
typedef align::StructureType StructureType
 

Public Member Functions

virtual void addAlignmentPositionError (const AlignmentPositionError &ape, bool propagateDown)=0
 
virtual void addAlignmentPositionErrorFromLocalRotation (const RotationType &rotation, bool propagateDown)=0
 
virtual void addAlignmentPositionErrorFromRotation (const RotationType &rotation, bool propagateDown)=0
 
virtual void addComponent (Alignable *)=0
 
virtual void addSurfaceDeformation (const SurfaceDeformation *deformation, bool propagateDown)=0
 
 Alignable (align::ID, const AlignableSurface &)
 
 Alignable (align::ID, const RotationType &)
 
virtual StructureType alignableObjectId () const =0
 Return the alignable type identifier. More...
 
virtual AlignmentErrorsExtendedalignmentErrors () const =0
 Return vector of alignment errors. More...
 
AlignmentParametersalignmentParameters () const
 Get the AlignmentParameters. More...
 
virtual Alignmentsalignments () const =0
 Return vector of alignment data. More...
 
virtual void cacheTransformation ()
 cache the current position, rotation and other parameters (e.g. surface deformations), also for possible components More...
 
virtual void cacheTransformation (const align::RunNumber &)
 
virtual CompConstraintType compConstraintType () const
 Return the alignable type of contraints wrt. its components. More...
 
virtual const Alignablescomponents () const =0
 Return vector of all direct components. More...
 
const AlignablesdeepComponents () const
 
const GlobalVectordisplacement () const
 Return change of the global position since the creation of the object. More...
 
virtual void dump () const =0
 Recursive printout of alignable information. More...
 
bool firstCompsWithParams (Alignables &paramComps) const
 
const DetIdgeomDetId () const
 
const PositionTypeglobalPosition () const
 Return the global position of the object. More...
 
const RotationTypeglobalRotation () const
 Return the global orientation of the object. More...
 
align::ID id () const
 Return the ID of Alignable, i.e. DetId of 'first' component GeomDet(Unit). More...
 
bool lastCompsWithParams (Alignables &paramComps) const
 
Alignablemother () const
 Return pointer to container alignable (if any) More...
 
virtual void move (const GlobalVector &displacement)=0
 Movement with respect to the global reference frame. More...
 
virtual void recenterSurface ()
 Recenter surface object without moving possible components. More...
 
virtual void recursiveComponents (Alignables &result) const =0
 
virtual void restoreCachedTransformation ()
 restore the previously cached transformation, also for possible components More...
 
virtual void restoreCachedTransformation (const align::RunNumber &)
 
virtual void rotateAroundGlobalAxis (const GlobalVector &axis, Scalar radians)
 Rotation around arbitratry global axis. More...
 
virtual void rotateAroundGlobalX (Scalar radians)
 Rotation around global x-axis. More...
 
virtual void rotateAroundGlobalY (Scalar radians)
 Rotation around global y-axis. More...
 
virtual void rotateAroundGlobalZ (Scalar radians)
 Rotation around global z-axis. More...
 
virtual void rotateAroundLocalAxis (const LocalVector &axis, Scalar radians)
 Rotation around arbitratry local axis. More...
 
virtual void rotateAroundLocalX (Scalar radians)
 Rotation around local x-axis. More...
 
virtual void rotateAroundLocalY (Scalar radians)
 Rotation around local y-axis. More...
 
virtual void rotateAroundLocalZ (Scalar radians)
 Rotation around local z-axis. More...
 
virtual void rotateInGlobalFrame (const RotationType &rotation)=0
 
virtual void rotateInLocalFrame (const RotationType &rotation)
 Rotation intepreted in the local reference frame. More...
 
const RotationTyperotation () const
 Return change of orientation since the creation of the object. More...
 
void setAlignmentParameters (AlignmentParameters *dap)
 Set the AlignmentParameters. More...
 
virtual void setAlignmentPositionError (const AlignmentPositionError &ape, bool propagateDown)=0
 Set the alignment position error - if (!propagateDown) do not affect daughters. More...
 
void setMother (Alignable *mother)
 Assign mother to alignable. More...
 
virtual void setSurfaceDeformation (const SurfaceDeformation *deformation, bool propagateDown)=0
 Set the surface deformation parameters - if (!propagateDown) do not affect daughters. More...
 
void setSurvey (const SurveyDet *)
 Set survey info. More...
 
int size () const
 Return number of direct components. More...
 
const AlignableSurfacesurface () const
 Return the Surface (global position and orientation) of the object. More...
 
virtual int surfaceDeformationIdPairs (std::vector< std::pair< int, SurfaceDeformation * > > &) const =0
 
AlignmentSurfaceDeformationssurfaceDeformations () const
 Return surface deformations, sorted by DetId. More...
 
const SurveyDetsurvey () const
 Return survey info. More...
 
void update (align::ID, const AlignableSurface &)
 
virtual ~Alignable ()
 Destructor. More...
 

Protected Types

template<class T >
using Cache = std::map< align::RunNumber, T >
 

Protected Member Functions

void addDisplacement (const GlobalVector &displacement)
 
void addRotation (const RotationType &rotation)
 
virtual void updateMother (const GlobalVector &shift)
 

Protected Attributes

CompConstraintType compConstraintType_ {CompConstraintType::NONE}
 
Cache< GlobalVectordisplacementsCache_
 
Cache< RotationTyperotationsCache_
 
Cache< AlignableSurfacesurfacesCache_
 
GlobalVector theCachedDisplacement
 
RotationType theCachedRotation
 
AlignableSurface theCachedSurface
 
Alignables theDeepComponents
 
DetId theDetId
 
GlobalVector theDisplacement
 
align::ID theId
 
RotationType theRotation
 
AlignableSurface theSurface
 

Private Member Functions

 Alignable ()
 private default ctr. to enforce usage of the specialised ones More...
 

Private Attributes

AlignmentParameterstheAlignmentParameters
 
AlignabletheMother
 
const SurveyDettheSurvey
 

Detailed Description

Abstract base class for alignable entities. Any Alignable object can be moved and rotated. Also an alignment uncertainty can be set.

Definition at line 27 of file Alignable.h.

Member Typedef Documentation

Definition at line 37 of file Alignable.h.

template<class T >
using Alignable::Cache = std::map<align::RunNumber, T>
protected

Definition at line 235 of file Alignable.h.

Definition at line 35 of file Alignable.h.

Definition at line 36 of file Alignable.h.

Definition at line 33 of file Alignable.h.

Definition at line 34 of file Alignable.h.

Definition at line 32 of file Alignable.h.

Definition at line 38 of file Alignable.h.

Member Enumeration Documentation

Enumerator
NONE 
POSITION 
POSITION_Z 

Definition at line 40 of file Alignable.h.

40 { NONE, POSITION, POSITION_Z };

Constructor & Destructor Documentation

Alignable::Alignable ( align::ID  id,
const AlignableSurface surf 
)

Constructor from id and surface, setting also geomDetId (AlignableNavigator relies on the fact that only AlignableDet/DetUnit have geomDetId!)

Definition at line 18 of file Alignable.cc.

18  :
19  theDetId(id), // FIXME: inconsistent with other ctr., but needed for AlignableNavigator
20  theId(id), // (finally get rid of one of the IDs!)
21  theSurface(surf),
22  theCachedSurface(surf),
23  theAlignmentParameters(nullptr),
24  theMother(nullptr),
25  theSurvey(nullptr)
26 {
27 }
DetId theDetId
Definition: Alignable.h:241
Alignable * theMother
Definition: Alignable.h:271
AlignmentParameters * theAlignmentParameters
Definition: Alignable.h:267
AlignableSurface theCachedSurface
Definition: Alignable.h:251
align::ID theId
Definition: Alignable.h:244
const SurveyDet * theSurvey
Definition: Alignable.h:273
AlignableSurface theSurface
Definition: Alignable.h:246
Alignable::Alignable ( align::ID  id,
const RotationType rot 
)

Constructor for a composite with given rotation. Position is found (later) from average of daughters' positions.

Definition at line 30 of file Alignable.cc.

30  :
31  theDetId(), // FIXME: inconsistent with other ctr., cf. above
32  theId(id),
35  theAlignmentParameters(nullptr),
36  theMother(nullptr),
37  theSurvey(nullptr)
38 {
39 }
DetId theDetId
Definition: Alignable.h:241
Alignable * theMother
Definition: Alignable.h:271
AlignmentParameters * theAlignmentParameters
Definition: Alignable.h:267
AlignableSurface theCachedSurface
Definition: Alignable.h:251
align::PositionType PositionType
Definition: Alignable.h:33
align::ID theId
Definition: Alignable.h:244
const SurveyDet * theSurvey
Definition: Alignable.h:273
AlignableSurface theSurface
Definition: Alignable.h:246
Alignable::~Alignable ( )
virtual

Destructor.

Definition at line 42 of file Alignable.cc.

References theAlignmentParameters, and theSurvey.

43 {
45  delete theSurvey;
46 }
AlignmentParameters * theAlignmentParameters
Definition: Alignable.h:267
const SurveyDet * theSurvey
Definition: Alignable.h:273
Alignable::Alignable ( )
inlineprivate

private default ctr. to enforce usage of the specialised ones

Definition at line 267 of file Alignable.h.

267 {};

Member Function Documentation

virtual void Alignable::addAlignmentPositionError ( const AlignmentPositionError ape,
bool  propagateDown 
)
pure virtual
virtual void Alignable::addAlignmentPositionErrorFromLocalRotation ( const RotationType rotation,
bool  propagateDown 
)
pure virtual

add (or set if not already present) the AlignmentPositionError which would result from a rotation (given in the LOCAL frame of the Alignable) of the alignable object, but if (!propagateDown) do not affect daughters

Implemented in AlignableComposite, AlignableBeamSpot, and AlignableDetUnit.

Referenced by AlignableModifier::addAlignmentPositionErrorFromLocalRotation(), and rotation().

virtual void Alignable::addAlignmentPositionErrorFromRotation ( const RotationType rotation,
bool  propagateDown 
)
pure virtual

add (or set if not already present) the AlignmentPositionError which would result from a rotation (given in the GLOBAL frame of CMS) of the alignable object, but if (!propagateDown) do not affect daughters

Implemented in AlignableComposite, AlignableBeamSpot, AlignableDetUnit, and AlignableDet.

Referenced by AlignableModifier::addAlignmentPositionErrorFromRotation(), rotation(), and AlignmentParameterStore::setAlignmentPositionError().

virtual void Alignable::addComponent ( Alignable )
pure virtual

Add a component to alignable (GF: Should be interface in Composite, but needed in AlignableBuilder::build)

Implemented in AlignableComposite, AlignableBeamSpot, and AlignableDetUnit.

Referenced by SurveyInputBase::addComponent(), alignmentParameters(), and PedeSteerer::PedeSteerer().

void Alignable::addDisplacement ( const GlobalVector displacement)
protected

Definition at line 246 of file Alignable.cc.

References displacement(), and theDisplacement.

Referenced by AlignableSiStripDet::consistifyAlignments(), AlignableDetUnit::move(), AlignableBeamSpot::move(), and AlignableComposite::move().

247 {
248 
250 
251 }
const GlobalVector & displacement() const
Return change of the global position since the creation of the object.
Definition: Alignable.h:144
GlobalVector theDisplacement
Definition: Alignable.h:248
void Alignable::addRotation ( const RotationType rotation)
protected

Definition at line 254 of file Alignable.cc.

References rotation(), and theRotation.

Referenced by AlignableSiStripDet::consistifyAlignments(), AlignableDetUnit::rotateInGlobalFrame(), AlignableBeamSpot::rotateInGlobalFrame(), and AlignableComposite::rotateInGlobalFrame().

255 {
256 
258 
259 }
RotationType theRotation
Definition: Alignable.h:249
const RotationType & rotation() const
Return change of orientation since the creation of the object.
Definition: Alignable.h:147
virtual void Alignable::addSurfaceDeformation ( const SurfaceDeformation deformation,
bool  propagateDown 
)
pure virtual
virtual StructureType Alignable::alignableObjectId ( ) const
pure virtual

Return the alignable type identifier.

Implemented in AlignableComposite, AlignableDetUnit, and AlignableBeamSpot.

Referenced by AlignmentParameterBuilder::add(), SurveyInputTrackerFromDB::addSurveyInfo(), SurveyMisalignmentInput::addSurveyInfo(), TrackerGeometryCompare::addSurveyInfo(), AlignmentProducerBase::addSurveyInfo(), MuonAlignmentInputSurveyDB::addSurveyInfo_(), MomentumDependentPedeLabeler::alignableLabel(), PedeLabeler::alignableLabel(), RunRangeDependentPedeLabeler::alignableLabel(), MomentumDependentPedeLabeler::alignableLabelFromParamAndInstance(), RunRangeDependentPedeLabeler::alignableLabelFromParamAndInstance(), AlignmentParameterStore::applyAlignableAbsolutePositions(), AlignmentParameterStore::applyAlignableRelativePositions(), TrackerSystematicMisalignments::applySystematicMisalignment(), AlignmentMonitorGeneric::book(), TrackerOfflineValidation::bookDirHists(), TrackerOfflineValidation::bookHists(), TrackerOfflineValidation::bookSummaryHists(), PedeReader::checkAliParams(), PedeSteererWeakModeConstraints::checkMother(), PedeSteererWeakModeConstraints::checkSelectionShiftParameter(), TrackerGeometryCompare::compareGeometries(), PedeSteererWeakModeConstraints::constructConstraints(), align::createPoints(), AlignmentParameterSelector::detUnitDeselected(), align::diffAlignables(), TrackerGeometryCompare::diffCommonTrackerSystem(), MuonGeometryArrange::fillTree(), TrackerGeometryCompare::fillTree(), HIPAlignmentAlgorithm::findAlignableSpecs(), MuonAlignmentInputXML::getCSCnode(), MuonAlignmentInputXML::getDTnode(), PedeSteererWeakModeConstraints::getFile(), MillePedeFileReader::getHLS(), SurveyDBUploader::getSurveyInfo(), PedeSteerer::hierarchyConstraint(), HIPAlignableSpecificParameters::objId(), MomentumDependentPedeLabeler::parameterLabel(), RunRangeDependentPedeLabeler::parameterLabel(), TrackerOfflineValidation::prepareSummaryHists(), AlignableDataIORoot::readAbsRaw(), AlignmentParametersIORoot::readOne(), HIPUserVariablesIORoot::readOne(), MillePedeVariablesIORoot::readOne(), AlignableDataIORoot::readRelRaw(), AlignableNavigator::recursiveGetId(), rotation(), CreateSurveyRcds::setGeometry(), CreateSurveyRcds::setSurveyErrors(), SurveyResidual::SurveyResidual(), AlignmentCorrelationsIORoot::write(), AlignableDataIO::writeAbsPos(), AlignmentParametersIORoot::writeOne(), HIPUserVariablesIORoot::writeOne(), MillePedeVariablesIORoot::writeOne(), AlignableDataIO::writeOrgPos(), and AlignableDataIO::writeRelPos().

virtual AlignmentErrorsExtended* Alignable::alignmentErrors ( ) const
pure virtual
AlignmentParameters* Alignable::alignmentParameters ( ) const
inline

Get the AlignmentParameters.

Definition at line 61 of file Alignable.h.

References addComponent(), components(), and theAlignmentParameters.

Referenced by AlignmentParameterStore::acquireRelativeParameters(), MillePedeAlignmentAlgorithm::addHitCount(), AlignmentParameterStore::alignableFromAlignableDet(), CSCAlignmentCorrections::applyAlignment(), AlignmentParameterStore::applyParameters(), HIPAlignmentAlgorithm::calcParameters(), PedeReader::checkAliParams(), PedeSteererWeakModeConstraints::checkSelectionShiftParameter(), PedeSteererWeakModeConstraints::constructConstraints(), PedeSteerer::defineCoordinates(), CompositeAlignmentParameters::derivativesLegacy(), AlignmentCorrelationsStore::fillCorrelationsTable(), AlignmentExtendedCorrelationsStore::fillCorrelationsTable(), PedeSteerer::fixParameter(), PedeSteererWeakModeConstraints::getDoubleSensorPosition(), MillePedeAlignmentAlgorithm::globalDerivativesHierarchy(), AlignmentParameterStore::hierarchyConstraints(), ParametersToParametersDerivatives::init2BowedRigid(), ParametersToParametersDerivatives::ParametersToParametersDerivatives(), HIPAlignmentAlgorithm::processHit1D(), HIPAlignmentAlgorithm::processHit2D(), CSCChamberFitter::radiusCorrection(), AlignmentParametersIORoot::readOne(), AlignmentParameterStore::resetParameters(), MuonMillepedeAlgorithm::run(), AlignmentParameterStore::selectParameters(), SurveyAlignment::shiftSensors(), HIPAlignmentAlgorithm::terminate(), AlignmentCorrelationsIORoot::write(), AlignableDataIO::writeAbsPos(), AlignmentParametersIORoot::writeOne(), HIPUserVariablesIORoot::writeOne(), MillePedeVariablesIORoot::writeOne(), AlignmentParametersIO::writeOneOrigRigidBody(), AlignableDataIO::writeOrgPos(), and AlignableDataIO::writeRelPos().

61 { return theAlignmentParameters; }
AlignmentParameters * theAlignmentParameters
Definition: Alignable.h:267
virtual Alignments* Alignable::alignments ( ) const
pure virtual
void Alignable::cacheTransformation ( )
virtual

cache the current position, rotation and other parameters (e.g. surface deformations), also for possible components

Reimplemented in AlignableDetUnit.

Definition at line 288 of file Alignable.cc.

References components(), theCachedDisplacement, theCachedRotation, theCachedSurface, theDisplacement, theRotation, and theSurface.

Referenced by compConstraintType().

289 {
290  // first treat itself
294 
295  // now treat components (a clean design would move that to AlignableComposite...)
296  for (const auto& it: this->components()) it->cacheTransformation();
297 }
RotationType theCachedRotation
Definition: Alignable.h:253
RotationType theRotation
Definition: Alignable.h:249
virtual const Alignables & components() const =0
Return vector of all direct components.
GlobalVector theDisplacement
Definition: Alignable.h:248
AlignableSurface theCachedSurface
Definition: Alignable.h:251
GlobalVector theCachedDisplacement
Definition: Alignable.h:252
AlignableSurface theSurface
Definition: Alignable.h:246
void Alignable::cacheTransformation ( const align::RunNumber run)
virtual

cache for the given run the current position, rotation and other parameters (e.g. surface deformations), also for possible components

Reimplemented in AlignableDetUnit.

Definition at line 299 of file Alignable.cc.

References components(), displacementsCache_, rotationsCache_, writedatasetfile::run, surfacesCache_, theDisplacement, theRotation, and theSurface.

300 {
301  // first treat itself
305 
306  // now treat components (a clean design would move that to AlignableComposite...)
307  for (const auto& it: this->components()) it->cacheTransformation(run);
308 }
RotationType theRotation
Definition: Alignable.h:249
Cache< GlobalVector > displacementsCache_
Definition: Alignable.h:261
Cache< AlignableSurface > surfacesCache_
Definition: Alignable.h:260
virtual const Alignables & components() const =0
Return vector of all direct components.
Cache< RotationType > rotationsCache_
Definition: Alignable.h:262
GlobalVector theDisplacement
Definition: Alignable.h:248
AlignableSurface theSurface
Definition: Alignable.h:246
virtual CompConstraintType Alignable::compConstraintType ( ) const
inlinevirtual

Return the alignable type of contraints wrt. its components.

Definition at line 192 of file Alignable.h.

References alignmentErrors(), alignments(), cacheTransformation(), compConstraintType_, dump(), restoreCachedTransformation(), surfaceDeformationIdPairs(), and surfaceDeformations().

Referenced by updateMother().

192 { return compConstraintType_; }
CompConstraintType compConstraintType_
Definition: Alignable.h:255
virtual const Alignables& Alignable::components ( ) const
pure virtual
const Alignables& Alignable::deepComponents ( ) const
inline

Return the list of lowest daughters (non-composites) of Alignable. Contain itself if Alignable is a unit.

Definition at line 75 of file Alignable.h.

References firstCompsWithParams(), lastCompsWithParams(), recursiveComponents(), mps_fire::result, and theDeepComponents.

Referenced by AlignableComposite::addComponent(), SurveyResidual::findSisters(), HIPAlignableSpecificParameters::matchAlignable(), and updateMother().

75 { return theDeepComponents; }
Alignables theDeepComponents
Definition: Alignable.h:257
const GlobalVector& Alignable::displacement ( ) const
inline
virtual void Alignable::dump ( ) const
pure virtual
bool Alignable::firstCompsWithParams ( Alignables paramComps) const

Steps down hierarchy until components with AlignmentParameters are found and adds them to argument. True either if no such components are found or if all branches of components end with such components (i.e. 'consistent').

Definition at line 68 of file Alignable.cc.

References components(), and plotBeamSpotDB::first.

Referenced by deepComponents(), and AlignmentParameters::hierarchyLevel().

69 {
70  bool isConsistent = true;
71  bool hasAliComp = false; // whether there are any (grand-) daughters with parameters
72  bool first = true;
73  const auto& comps = this->components();
74  for (const auto& iComp: comps) {
75  if (iComp->alignmentParameters()) { // component has parameters itself
76  paramComps.push_back(iComp);
77  if (!first && !hasAliComp) isConsistent = false;
78  hasAliComp = true;
79  } else {
80  const unsigned int nCompBefore = paramComps.size();
81  if (!(iComp->firstCompsWithParams(paramComps))) {
82  isConsistent = false; // problem down in hierarchy
83  }
84  if (paramComps.size() != nCompBefore) {
85  if (!first && !hasAliComp) isConsistent = false;
86  hasAliComp = true;
87  } else if (hasAliComp) { // no components with params, but previous component did have comps.
88  isConsistent = false;
89  }
90  }
91  first = false;
92  }
93 
94  return isConsistent;
95 }
virtual const Alignables & components() const =0
Return vector of all direct components.
const DetId& Alignable::geomDetId ( ) const
inline
const PositionType& Alignable::globalPosition ( ) const
inline

Return the global position of the object.

Definition at line 138 of file Alignable.h.

References GloballyPositioned< T >::position(), and surface().

Referenced by AlignableComposite::addAlignmentPositionErrorFromRotation(), AlignableComposite::addComponent(), AlignableDet::alignments(), AlignableBeamSpot::alignments(), AlignableDetUnit::alignments(), AlignmentParameterStore::applyAlignableAbsolutePositions(), TrackerSystematicMisalignments::applySystematicMisalignment(), SurveyResidual::calculate(), PedeSteererWeakModeConstraints::checkSelectionShiftParameter(), AlignableSiStripDet::consistifyAlignments(), PedeSteererWeakModeConstraints::constructConstraints(), align::diffAlignables(), TrackerGeometryCompare::diffCommonTrackerSystem(), MuonAlignmentInputXML::do_setposition(), AlignableBeamSpot::dump(), AlignableDetUnit::dump(), AlignableComposite::dump(), MillePedeMonitor::fillFrameToFrame(), MuonGeometryArrange::fillTree(), TrackerGeometryCompare::fillTree(), MuonResiduals6DOFrphiFitter::fit(), PedeSteerer::fixParameter(), FrameToFrameDerivative::frameToFrameDerivative(), PedeSteerer::hierarchyConstraint(), ParametersToParametersDerivatives::init2BowedRigid(), MuonScenarioBuilder::moveChamberInSector(), operator<<(), AlignmentParameterSelector::outsideGeometricalRanges(), recenterSurface(), MuonAlignment::recursiveCopySurveyToAlignment(), AlignableComposite::rotateInGlobalFrame(), MuonAlignmentInputXML::set_one_position(), TrackerGeometryCompare::setCommonTrackerSystem(), AlignableComposite::update(), AlignableDataIO::writeOrgPos(), and TwoBowedSurfacesAlignmentParameters::ySplitFromAlignable().

138 { return surface().position(); }
const AlignableSurface & surface() const
Return the Surface (global position and orientation) of the object.
Definition: Alignable.h:135
const PositionType & position() const
const RotationType& Alignable::globalRotation ( ) const
inline
align::ID Alignable::id ( ) const
inline

Return the ID of Alignable, i.e. DetId of 'first' component GeomDet(Unit).

Definition at line 189 of file Alignable.h.

References theId.

Referenced by SurveyInputTrackerFromDB::addSurveyInfo(), SurveyMisalignmentInput::addSurveyInfo(), AlignmentProducerBase::addSurveyInfo(), MomentumDependentPedeLabeler::alignableLabel(), PedeLabeler::alignableLabel(), RunRangeDependentPedeLabeler::alignableLabel(), MomentumDependentPedeLabeler::alignableLabelFromParamAndInstance(), RunRangeDependentPedeLabeler::alignableLabelFromParamAndInstance(), AlignmentParameterStore::applyAlignableAbsolutePositions(), AlignmentParameterStore::applyAlignableRelativePositions(), AlignmentMonitorSurvey::book(), AlignmentMonitorGeneric::book(), TrackerOfflineValidation::bookHists(), TrackerOfflineValidation::bookSummaryHists(), HIPAlignmentAlgorithm::calcParameters(), MuonGeometryArrange::checkChosen(), PedeSteererWeakModeConstraints::checkMother(), TrackerGeometryCompare::compareGeometries(), align::createPoints(), align::diffAlignables(), MuonGeometryArrange::fillTree(), TrackerGeometryCompare::fillTree(), HIPAlignmentAlgorithm::findAlignableSpecs(), PedeSteerer::fixParameter(), PedeSteererWeakModeConstraints::getFile(), MillePedeFileReader::getHLS(), SurveyDBUploader::getSurveyInfo(), HIPAlignableSpecificParameters::id(), AlignmentParameterSelector::layerDeselected(), AlignmentParameterSelector::outsideDetIdRanges(), MomentumDependentPedeLabeler::parameterLabel(), RunRangeDependentPedeLabeler::parameterLabel(), AlignableDataIORoot::readAbsRaw(), AlignmentParametersIORoot::readOne(), HIPUserVariablesIORoot::readOne(), MillePedeVariablesIORoot::readOne(), AlignableDataIORoot::readRelRaw(), HIPAlignmentAlgorithm::run(), CreateSurveyRcds::setGeometry(), CreateSurveyRcds::setSurveyErrors(), HIPAlignmentAlgorithm::terminate(), AlignmentParameterStore::typeAndLayer(), AlignmentCorrelationsIORoot::write(), AlignableDataIO::writeAbsPos(), AlignmentParametersIORoot::writeOne(), HIPUserVariablesIORoot::writeOne(), MillePedeVariablesIORoot::writeOne(), AlignableDataIO::writeOrgPos(), and AlignableDataIO::writeRelPos().

189 { return theId; }
align::ID theId
Definition: Alignable.h:244
bool Alignable::lastCompsWithParams ( Alignables paramComps) const

Steps down hierarchy to the lowest level of components with AlignmentParameters and adds them to argument. True either if no such components are found or if all branches of components end with such components (i.e. 'consistent').

Definition at line 98 of file Alignable.cc.

References components(), and plotBeamSpotDB::first.

Referenced by deepComponents().

99 {
100  bool isConsistent = true;
101  bool hasAliComp = false;
102  bool first = true;
103  const auto& comps = this->components();
104  for (const auto& iComp: comps) {
105  const auto nCompsBefore = paramComps.size();
106  isConsistent = iComp->lastCompsWithParams(paramComps);
107  if (paramComps.size() == nCompsBefore) {
108  if (iComp->alignmentParameters()) {
109  paramComps.push_back(iComp);
110  if (!first && !hasAliComp) isConsistent = false;
111  hasAliComp = true;
112  }
113  } else {
114  if (hasAliComp) {
115  isConsistent = false;
116  }
117  if (!first && !hasAliComp) isConsistent = false;
118  hasAliComp = true;
119  }
120  first = false;
121  }
122 
123  return isConsistent;
124 }
virtual const Alignables & components() const =0
Return vector of all direct components.
Alignable* Alignable::mother ( ) const
inline
virtual void Alignable::move ( const GlobalVector displacement)
pure virtual
void Alignable::recenterSurface ( )
virtual

Recenter surface object without moving possible components.

Definition at line 372 of file Alignable.cc.

References globalPosition(), GloballyPositioned< T >::move(), theSurface, and PV3DBase< T, PVType, FrameType >::x().

Referenced by PedeSteerer::PedeSteerer(), and survey().

373 {
374  const auto& currentPosition = this->globalPosition();
375  theSurface.move(align::GlobalVector{-currentPosition.x(),
376  -currentPosition.y(),
377  -currentPosition.z()});
378 }
void move(const GlobalVector &displacement)
const PositionType & globalPosition() const
Return the global position of the object.
Definition: Alignable.h:138
T x() const
Definition: PV3DBase.h:62
AlignableSurface theSurface
Definition: Alignable.h:246
virtual void Alignable::recursiveComponents ( Alignables result) const
pure virtual

Provide all components, subcomponents, subsub... etc. of Alignable down to AlignableDetUnit, except for 'single childs' like e.g. AlignableDetUnits of AlignableDets representing single sided SiStrip modules. (for performance reason by adding to argument)

Implemented in AlignableDetUnit.

Referenced by deepComponents().

void Alignable::restoreCachedTransformation ( )
virtual

restore the previously cached transformation, also for possible components

Reimplemented in AlignableDetUnit.

Definition at line 310 of file Alignable.cc.

References components(), theCachedDisplacement, theCachedRotation, theCachedSurface, theDisplacement, theRotation, and theSurface.

Referenced by compConstraintType().

311 {
312  // first treat itself
316 
317  // now treat components (a clean design would move that to AlignableComposite...)
318  for (const auto& it: this->components()) it->restoreCachedTransformation();
319 }
RotationType theCachedRotation
Definition: Alignable.h:253
RotationType theRotation
Definition: Alignable.h:249
virtual const Alignables & components() const =0
Return vector of all direct components.
GlobalVector theDisplacement
Definition: Alignable.h:248
AlignableSurface theCachedSurface
Definition: Alignable.h:251
GlobalVector theCachedDisplacement
Definition: Alignable.h:252
AlignableSurface theSurface
Definition: Alignable.h:246
void Alignable::restoreCachedTransformation ( const align::RunNumber run)
virtual

restore for the given run the previously cached transformation, also for possible components

Reimplemented in AlignableDetUnit.

Definition at line 321 of file Alignable.cc.

References components(), displacementsCache_, Exception, rotationsCache_, writedatasetfile::run, surfacesCache_, theDisplacement, theRotation, and theSurface.

322 {
323  if (surfacesCache_.find(run) == surfacesCache_.end()) {
324  throw cms::Exception("Alignment")
325  << "@SUB=Alignable::restoreCachedTransformation\n"
326  << "Trying to restore cached transformation for a run (" << run
327  << ") that has not been cached.";
328  } else {
329  // first treat itself
333 
334  // now treat components (a clean design would move that to AlignableComposite...)
335  for (const auto& it: this->components()) it->restoreCachedTransformation();
336  }
337 }
RotationType theRotation
Definition: Alignable.h:249
Cache< GlobalVector > displacementsCache_
Definition: Alignable.h:261
Cache< AlignableSurface > surfacesCache_
Definition: Alignable.h:260
virtual const Alignables & components() const =0
Return vector of all direct components.
Cache< RotationType > rotationsCache_
Definition: Alignable.h:262
GlobalVector theDisplacement
Definition: Alignable.h:248
AlignableSurface theSurface
Definition: Alignable.h:246
void Alignable::rotateAroundGlobalAxis ( const GlobalVector axis,
Scalar  radians 
)
virtual

Rotation around arbitratry global axis.

Definition at line 150 of file Alignable.cc.

References PV3DBase< T, PVType, FrameType >::basicVector(), and rotateInGlobalFrame().

Referenced by MuonAlignmentInputXML::do_rotateglobalaxis(), and setMother().

151 {
152 
153  rotateInGlobalFrame( RotationType(axis.basicVector(),radians) );
154 
155 }
virtual void rotateInGlobalFrame(const RotationType &rotation)=0
align::RotationType RotationType
Definition: Alignable.h:34
const BasicVectorType & basicVector() const
Definition: PV3DBase.h:56
void Alignable::rotateAroundGlobalX ( Scalar  radians)
virtual

Rotation around global x-axis.

Definition at line 168 of file Alignable.cc.

References funct::cos(), makeMuonMisalignmentScenario::rot, rotateInGlobalFrame(), and funct::sin().

Referenced by MuonAlignment::moveAlignableGlobalCoord(), AlignableModifier::rotateAlignable(), and setMother().

169 {
170 
171  RotationType rot( 1., 0., 0.,
172  0., std::cos(radians), std::sin(radians),
173  0., -std::sin(radians), std::cos(radians) );
174 
176 
177 }
Sin< T >::type sin(const T &t)
Definition: Sin.h:22
Cos< T >::type cos(const T &t)
Definition: Cos.h:22
virtual void rotateInGlobalFrame(const RotationType &rotation)=0
align::RotationType RotationType
Definition: Alignable.h:34
void Alignable::rotateAroundGlobalY ( Scalar  radians)
virtual

Rotation around global y-axis.

Definition at line 194 of file Alignable.cc.

References funct::cos(), makeMuonMisalignmentScenario::rot, rotateInGlobalFrame(), and funct::sin().

Referenced by MuonAlignment::moveAlignableGlobalCoord(), AlignableModifier::rotateAlignable(), and setMother().

195 {
196 
197  RotationType rot( std::cos(radians), 0., -std::sin(radians),
198  0., 1., 0.,
199  std::sin(radians), 0., std::cos(radians) );
200 
202 
203 }
Sin< T >::type sin(const T &t)
Definition: Sin.h:22
Cos< T >::type cos(const T &t)
Definition: Cos.h:22
virtual void rotateInGlobalFrame(const RotationType &rotation)=0
align::RotationType RotationType
Definition: Alignable.h:34
void Alignable::rotateAroundGlobalZ ( Scalar  radians)
virtual

Rotation around global z-axis.

Definition at line 220 of file Alignable.cc.

References funct::cos(), makeMuonMisalignmentScenario::rot, rotateInGlobalFrame(), and funct::sin().

Referenced by MuonAlignmentInputXML::do_rotatebeamline(), MuonAlignment::moveAlignableGlobalCoord(), AlignableModifier::rotateAlignable(), and setMother().

221 {
222 
223  RotationType rot( std::cos(radians), std::sin(radians), 0.,
224  -std::sin(radians), std::cos(radians), 0.,
225  0., 0., 1. );
226 
228 
229 }
Sin< T >::type sin(const T &t)
Definition: Sin.h:22
Cos< T >::type cos(const T &t)
Definition: Cos.h:22
virtual void rotateInGlobalFrame(const RotationType &rotation)=0
align::RotationType RotationType
Definition: Alignable.h:34
void Alignable::rotateAroundLocalAxis ( const LocalVector axis,
Scalar  radians 
)
virtual

Rotation around arbitratry local axis.

Definition at line 159 of file Alignable.cc.

References PV3DBase< T, PVType, FrameType >::basicVector(), and rotateInLocalFrame().

Referenced by MuonAlignmentInputXML::do_rotatelocal(), and setMother().

160 {
161 
162  rotateInLocalFrame(RotationType(axis.basicVector(), radians));
163 
164 }
virtual void rotateInLocalFrame(const RotationType &rotation)
Rotation intepreted in the local reference frame.
Definition: Alignable.cc:137
align::RotationType RotationType
Definition: Alignable.h:34
const BasicVectorType & basicVector() const
Definition: PV3DBase.h:56
void Alignable::rotateAroundLocalX ( Scalar  radians)
virtual

Rotation around local x-axis.

Definition at line 181 of file Alignable.cc.

References funct::cos(), makeMuonMisalignmentScenario::rot, rotateInLocalFrame(), and funct::sin().

Referenced by SurveyInputCSCfromPins::analyze(), MuonAlignment::moveAlignableLocalCoord(), AlignableModifier::rotateAlignableLocal(), CreateSurveyRcds::setGeometry(), and setMother().

182 {
183 
184  RotationType rot( 1., 0., 0.,
185  0., std::cos(radians), std::sin(radians),
186  0., -std::sin(radians), std::cos(radians) );
187 
189 
190 }
virtual void rotateInLocalFrame(const RotationType &rotation)
Rotation intepreted in the local reference frame.
Definition: Alignable.cc:137
Sin< T >::type sin(const T &t)
Definition: Sin.h:22
Cos< T >::type cos(const T &t)
Definition: Cos.h:22
align::RotationType RotationType
Definition: Alignable.h:34
void Alignable::rotateAroundLocalY ( Scalar  radians)
virtual

Rotation around local y-axis.

Definition at line 207 of file Alignable.cc.

References funct::cos(), makeMuonMisalignmentScenario::rot, rotateInLocalFrame(), and funct::sin().

Referenced by MuonAlignment::moveAlignableLocalCoord(), AlignableModifier::rotateAlignableLocal(), CreateSurveyRcds::setGeometry(), and setMother().

208 {
209 
210  RotationType rot( std::cos(radians), 0., -std::sin(radians),
211  0., 1., 0.,
212  std::sin(radians), 0., std::cos(radians) );
213 
215 
216 }
virtual void rotateInLocalFrame(const RotationType &rotation)
Rotation intepreted in the local reference frame.
Definition: Alignable.cc:137
Sin< T >::type sin(const T &t)
Definition: Sin.h:22
Cos< T >::type cos(const T &t)
Definition: Cos.h:22
align::RotationType RotationType
Definition: Alignable.h:34
void Alignable::rotateAroundLocalZ ( Scalar  radians)
virtual

Rotation around local z-axis.

Definition at line 233 of file Alignable.cc.

References funct::cos(), makeMuonMisalignmentScenario::rot, rotateInLocalFrame(), and funct::sin().

Referenced by SurveyInputCSCfromPins::analyze(), MuonAlignment::moveAlignableLocalCoord(), AlignableModifier::rotateAlignableLocal(), CreateSurveyRcds::setGeometry(), and setMother().

234 {
235 
236  RotationType rot( std::cos(radians), std::sin(radians), 0. ,
237  -std::sin(radians), std::cos(radians), 0. ,
238  0., 0., 1. );
239 
241 
242 }
virtual void rotateInLocalFrame(const RotationType &rotation)
Rotation intepreted in the local reference frame.
Definition: Alignable.cc:137
Sin< T >::type sin(const T &t)
Definition: Sin.h:22
Cos< T >::type cos(const T &t)
Definition: Cos.h:22
align::RotationType RotationType
Definition: Alignable.h:34
virtual void Alignable::rotateInGlobalFrame ( const RotationType rotation)
pure virtual
void Alignable::rotateInLocalFrame ( const RotationType rotation)
virtual

Rotation intepreted in the local reference frame.

Definition at line 137 of file Alignable.cc.

References rotateInGlobalFrame(), and surface().

Referenced by SurveyInputTrackerFromDB::addSurveyInfo(), rotateAroundLocalAxis(), rotateAroundLocalX(), rotateAroundLocalY(), rotateAroundLocalZ(), and setMother().

138 {
139 
140  // This is done by simply transforming the rotation from
141  // the local system O to the global one O^-1 * Rot * O
142  // and then applying the global rotation O * Rot
143 
144  rotateInGlobalFrame( surface().toGlobal(rotation) );
145 
146 }
const RotationType & rotation() const
Return change of orientation since the creation of the object.
Definition: Alignable.h:147
const AlignableSurface & surface() const
Return the Surface (global position and orientation) of the object.
Definition: Alignable.h:135
virtual void rotateInGlobalFrame(const RotationType &rotation)=0
const RotationType& Alignable::rotation ( ) const
inline
void Alignable::setAlignmentParameters ( AlignmentParameters dap)
virtual void Alignable::setAlignmentPositionError ( const AlignmentPositionError ape,
bool  propagateDown 
)
pure virtual

Set the alignment position error - if (!propagateDown) do not affect daughters.

Implemented in AlignableComposite, AlignableBeamSpot, AlignableDetUnit, and AlignableDet.

Referenced by MuonAlignment::recursiveCopySurveyToAlignment(), rotation(), and AlignmentParameterStore::setAlignmentPositionError().

void Alignable::setMother ( Alignable mother)
inline
virtual void Alignable::setSurfaceDeformation ( const SurfaceDeformation deformation,
bool  propagateDown 
)
pure virtual

Set the surface deformation parameters - if (!propagateDown) do not affect daughters.

Implemented in AlignableComposite, AlignableBeamSpot, and AlignableDetUnit.

Referenced by rotation().

void Alignable::setSurvey ( const SurveyDet survey)
int Alignable::size ( ) const
inline

Return number of direct components.

Definition at line 71 of file Alignable.h.

References components().

Referenced by ntupleDataFormat._Collection::__iter__(), ntupleDataFormat._Collection::__len__(), AlignableDTStation::chamber(), AlignableCSCRing::chamber(), AlignableComposite::moveComponentLocal(), AlignableCSCStation::ring(), AlignableDTWheel::station(), AlignableCSCEndcap::station(), and AlignableDTBarrel::wheel().

71 { return components().size(); }
virtual const Alignables & components() const =0
Return vector of all direct components.
const AlignableSurface& Alignable::surface ( ) const
inline

Return the Surface (global position and orientation) of the object.

Definition at line 135 of file Alignable.h.

References theSurface.

Referenced by AlignmentParameterStore::acquireRelativeParameters(), AlignableDet::addAlignmentPositionErrorFromRotation(), AlignableDetUnit::addAlignmentPositionErrorFromRotation(), MillePedeAlignmentAlgorithm::addPxbSurvey(), MuonDT2ChamberResidual::addResidual(), MuonCSCChamberResidual::addResidual(), MuonDT13ChamberResidual::addResidual(), SurveyInputTrackerFromDB::addSurveyInfo(), SurveyMisalignmentInput::addSurveyInfo(), TrackerGeometryCompare::addSurveyInfo(), AlignmentProducerBase::addSurveyInfo(), MuonAlignmentInputSurveyDB::addSurveyInfo_(), SurveyInputCSCfromPins::analyze(), MuonGeometrySVGTemplate::analyze(), BeamSpotAlignmentParameters::apply(), RigidBodyAlignmentParameters::apply(), BowedSurfaceAlignmentParameters::apply(), TwoBowedSurfacesAlignmentParameters::apply(), CSCAlignmentCorrections::applyAlignment(), SurveyResidual::calculate(), PedeSteererWeakModeConstraints::constructConstraints(), MuonAlignment::copyAlignmentToSurvey(), align::createPoints(), BowedSurfaceAlignmentParameters::derivatives(), TwoBowedSurfacesAlignmentParameters::derivatives(), align::diffAlignables(), RigidBodyAlignmentParameters::displacementFromAlignable(), MuonAlignmentInputXML::do_moveglobal(), MuonAlignmentInputXML::do_movelocal(), MuonAlignmentInputXML::do_rotatebeamline(), MuonAlignmentInputXML::do_rotateglobalaxis(), MuonAlignmentInputXML::do_rotatelocal(), MuonAlignmentInputXML::do_setsurveyerr(), SurveyInputCSCfromPins::fillAllRecords(), MuonGeometryArrange::fillTree(), TrackerGeometryCompare::fillTree(), PedeSteererWeakModeConstraints::getDoubleSensorPosition(), MuonChamberResidual::global_stubpos(), MuonChamberResidual::global_trackpos(), BeamSpotAlignmentParameters::globalParameters(), RigidBodyAlignmentParameters::globalParameters(), globalPosition(), globalRotation(), ParametersToParametersDerivatives::init2BowedRigid(), ParametersToParametersDerivatives::initBowedRigid(), AlignableModifier::moveAlignableLocal(), MuonAlignment::moveAlignableLocalCoord(), AlignableComposite::moveComponentLocal(), AlignableComposite::moveComponentsLocal(), operator<<(), MuonResiduals5DOFFitter::plot(), MuonResiduals6DOFrphiFitter::plot(), MuonResiduals6DOFFitter::plot(), AlignmentMonitorSegmentDifferences::processMuonResidualsFromTrack(), rotateInLocalFrame(), BowedSurfaceAlignmentParameters::rotation(), MuonAlignmentInputXML::set_one_position(), CreateSurveyRcds::setGeometry(), CreateSurveyRcds::setSurveyErrors(), SurveyAlignment::shiftSensors(), HIPAlignmentAlgorithm::terminate(), AlignableDataIO::writeAbsPos(), and AlignableDetUnit::~AlignableDetUnit().

135 { return theSurface; }
AlignableSurface theSurface
Definition: Alignable.h:246
virtual int Alignable::surfaceDeformationIdPairs ( std::vector< std::pair< int, SurfaceDeformation * > > &  ) const
pure virtual
AlignmentSurfaceDeformations * Alignable::surfaceDeformations ( void  ) const

Return surface deformations, sorted by DetId.

Definition at line 262 of file Alignable.cc.

References a, b, mps_fire::result, jetUpdater_cfi::sort, and surfaceDeformationIdPairs().

Referenced by AlignmentProducerBase::applyAlignmentsToGeometry(), compConstraintType(), and AlignmentProducerBase::writeForRunRange().

263 {
264 
265  typedef std::pair<int,SurfaceDeformation*> IdSurfaceDeformationPtrPair;
266 
267  std::vector<IdSurfaceDeformationPtrPair> result;
269  std::sort( result.begin(), result.end(), [](auto& a, auto& b){return a.first < b.first;});
270 
271  AlignmentSurfaceDeformations* allSurfaceDeformations = new AlignmentSurfaceDeformations();
272 
273  for ( std::vector<IdSurfaceDeformationPtrPair>::const_iterator iPair = result.begin();
274  iPair != result.end();
275  ++iPair) {
276 
277  // should we check for 'empty' parameters here (all zeros) and skip ?
278  // may be add 'empty' method to SurfaceDeformation
279  allSurfaceDeformations->add((*iPair).first,
280  (*iPair).second->type(),
281  (*iPair).second->parameters());
282  }
283 
284  return allSurfaceDeformations;
285 
286 }
virtual int surfaceDeformationIdPairs(std::vector< std::pair< int, SurfaceDeformation * > > &) const =0
double b
Definition: hdecay.h:120
double a
Definition: hdecay.h:121
const SurveyDet* Alignable::survey ( ) const
inline
void Alignable::update ( align::ID  id,
const AlignableSurface surf 
)

Updater using id and surface. The given id has to match the current id.

Definition at line 49 of file Alignable.cc.

References Exception, GloballyPositioned< T >::position(), edm::shift, theDisplacement, theId, theRotation, theSurface, and updateMother().

Referenced by progressbar.ProgressBar::__next__(), MatrixUtil.Matrix::__setitem__(), MatrixUtil.Steps::__setitem__(), Vispa.Gui.VispaWidget.VispaWidget::autosize(), Vispa.Views.LineDecayView.LineDecayContainer::createObject(), Vispa.Views.LineDecayView.LineDecayContainer::deselectAllObjects(), Vispa.Gui.VispaWidgetOwner.VispaWidgetOwner::deselectAllWidgets(), Vispa.Gui.VispaWidget.VispaWidget::enableAutosizing(), dqm-mbProfile.Profile::finish(), progressbar.ProgressBar::finish(), Vispa.Gui.MenuWidget.MenuWidget::leaveEvent(), Vispa.Gui.VispaWidgetOwner.VispaWidgetOwner::mouseMoveEvent(), Vispa.Gui.MenuWidget.MenuWidget::mouseMoveEvent(), Vispa.Views.LineDecayView.LineDecayContainer::mouseMoveEvent(), Vispa.Gui.VispaWidgetOwner.VispaWidgetOwner::mouseReleaseEvent(), Vispa.Views.LineDecayView.LineDecayContainer::objectMoved(), MatrixUtil.Steps::overwrite(), Vispa.Views.LineDecayView.LineDecayContainer::removeObject(), Vispa.Gui.ConnectableWidget.ConnectableWidget::removePorts(), AlignableBeamSpot::reset(), Vispa.Gui.FindDialog.FindDialog::reset(), Vispa.Gui.PortConnection.PointToPointConnection::select(), Vispa.Gui.VispaWidget.VispaWidget::select(), Vispa.Views.LineDecayView.LineDecayContainer::select(), Vispa.Gui.VispaWidget.VispaWidget::setText(), Vispa.Gui.VispaWidget.VispaWidget::setTitle(), Vispa.Gui.ZoomableWidget.ZoomableWidget::setZoom(), Vispa.Views.LineDecayView.LineDecayContainer::setZoom(), AlignableDetUnit::update(), AlignableComposite::update(), and Vispa.Gui.PortConnection.PointToPointConnection::updateConnection().

50 {
51  if (theId != id) {
52  throw cms::Exception("Alignment")
53  << "@SUB=Alignable::update\n"
54  << "Current alignable ID does not match ID of the update.";
55  }
56  const auto shift = surf.position() - theSurface.position();
57  theSurface = surf;
58 
59  // reset displacement and rotations after update
62 
63  // recalculate containing composite's position
65 }
RotationType theRotation
Definition: Alignable.h:249
GlobalVector theDisplacement
Definition: Alignable.h:248
virtual void updateMother(const GlobalVector &shift)
Definition: Alignable.cc:349
align::RotationType RotationType
Definition: Alignable.h:34
static unsigned int const shift
align::GlobalVector GlobalVector
Definition: Alignable.h:35
align::ID theId
Definition: Alignable.h:244
const PositionType & position() const
AlignableSurface theSurface
Definition: Alignable.h:246
void Alignable::updateMother ( const GlobalVector shift)
protectedvirtual

Definition at line 349 of file Alignable.cc.

References compConstraintType(), deepComponents(), GloballyPositioned< T >::move(), NONE, POSITION, POSITION_Z, theMother, theSurface, and updateMother().

Referenced by update(), and updateMother().

349  {
350 
351  if (!theMother) return;
352 
353  const auto thisComps = this->deepComponents().size();
354  const auto motherComps = theMother->deepComponents().size();
355  const auto motherShift = shift * static_cast<Scalar>(thisComps) / motherComps;
356 
357  switch(theMother->compConstraintType()) {
359  break;
361  theMother->theSurface.move(GlobalVector(0,0, motherShift.z()));
362  theMother->updateMother(GlobalVector(0,0, motherShift.z()));
363  break;
365  theMother->theSurface.move(motherShift);
366  theMother->updateMother(motherShift);
367  break;
368  }
369 }
Alignable * theMother
Definition: Alignable.h:271
void move(const GlobalVector &displacement)
virtual void updateMother(const GlobalVector &shift)
Definition: Alignable.cc:349
const Alignables & deepComponents() const
Definition: Alignable.h:75
virtual CompConstraintType compConstraintType() const
Return the alignable type of contraints wrt. its components.
Definition: Alignable.h:192
align::Scalar Scalar
Definition: Alignable.h:32
align::GlobalVector GlobalVector
Definition: Alignable.h:35
AlignableSurface theSurface
Definition: Alignable.h:246

Member Data Documentation

CompConstraintType Alignable::compConstraintType_ {CompConstraintType::NONE}
protected
Cache<GlobalVector> Alignable::displacementsCache_
protected
Cache<RotationType> Alignable::rotationsCache_
protected
Cache<AlignableSurface> Alignable::surfacesCache_
protected
AlignmentParameters* Alignable::theAlignmentParameters
private

Definition at line 267 of file Alignable.h.

Referenced by alignmentParameters(), setAlignmentParameters(), and ~Alignable().

GlobalVector Alignable::theCachedDisplacement
protected
RotationType Alignable::theCachedRotation
protected
AlignableSurface Alignable::theCachedSurface
protected
Alignables Alignable::theDeepComponents
protected
DetId Alignable::theDetId
protected

Definition at line 241 of file Alignable.h.

Referenced by geomDetId().

GlobalVector Alignable::theDisplacement
protected
align::ID Alignable::theId
protected
Alignable* Alignable::theMother
private

Definition at line 271 of file Alignable.h.

Referenced by mother(), setMother(), and updateMother().

RotationType Alignable::theRotation
protected
AlignableSurface Alignable::theSurface
protected
const SurveyDet* Alignable::theSurvey
private

Definition at line 273 of file Alignable.h.

Referenced by setSurvey(), survey(), and ~Alignable().