14 if (refAli->
id() != curAli->
id()){
16 <<
"[AlignTools] Error, Alignables do not match";
38 for (
unsigned int k = 0;
k < refVs.size(); ++
k){
60 deltaRW(1) = theRprime.x();
61 deltaRW(2) = theRprime.y();
62 deltaRW(3) = theRprime.z();
67 deltaRW(7) = theLocalRprime.
x();
68 deltaRW(8) = theLocalRprime.
y();
69 deltaRW(9) = theLocalRprime.
z();
70 deltaRW(10) = theLocalW(1);
71 deltaRW(11) = theLocalW(2);
72 deltaRW(12) = theLocalW(3);
84 align::EulerAngles dOmega(3); dOmega[0] = diff[3]; dOmega[1] = diff[4]; dOmega[2] = diff[5];
94 std::string
copy=weightBy;
95 std::transform(copy.begin(), copy.end(), copy.begin(), (int(*)(int)) toupper);
98 unsigned int nComp = comp.size();
99 for (
unsigned int i = 0;
i < nComp; ++
i)
align::createPoints(Vs, comp[
i], weightBy, weightById, weightByIdVector);
102 for (
unsigned int i = 0; i < nComp; ++
i)
align::createPoints(Vs, comp[i], weightBy, weightById, weightByIdVector);
108 bool createPointsForDetUnit =
true;
110 if (createPointsForDetUnit){
117 for (
unsigned int j = 0;
j < points.size(); ++
j){
119 Vs->push_back(dummy);
125 bool createPointsForDetUnit =
true;
127 if (createPointsForDetUnit){
134 for (
unsigned int j = 0;
j < points.size(); ++
j){
136 Vs->push_back(dummy);
142 bool align::readModuleList(
unsigned int aliId,
unsigned int motherId,
const std::vector< unsigned int > &weightByIdVector){
144 bool foundId =
false;
146 unsigned int sizeVector = weightByIdVector.size();
148 for (
unsigned int i = 0;
i < sizeVector; ++
i){
150 unsigned int listId = weightByIdVector[
i];
152 if (listId == aliId){ foundId =
true;
break; }
153 if (listId == motherId){ foundId =
true;
break; }
align::ID id() const
Return the ID of Alignable, i.e. DetId of 'first' component GeomDet(Unit).
const SurveyDet * survey() const
Return survey info.
AlgebraicVector diffAlignables(Alignable *refAli, Alignable *curAli, const std::string &weightBy, bool weightById, const std::vector< unsigned int > &weightByIdVector)
GlobalVector diffR(const GlobalVectors ¤t, const GlobalVectors &nominal)
virtual void move(const GlobalVector &displacement)=0
Movement with respect to the global reference frame.
void createPoints(GlobalVectors *Vs, Alignable *ali, const std::string &weightBy, bool weightById, const std::vector< unsigned int > &weightByIdVector)
virtual Alignables components() const =0
Return vector of all direct components.
RotationType diffRot(const GlobalVectors ¤t, const GlobalVectors &nominal)
std::vector< GlobalPoint > GlobalPoints
align::RotationType toLocal(const align::RotationType &) const
Return in local frame a rotation given in global frame.
bool readModuleList(unsigned int, unsigned int, const std::vector< unsigned int > &)
virtual StructureType alignableObjectId() const =0
Return the alignable type identifier.
EulerAngles toAngles(const RotationType &)
Convert rotation matrix to angles about x-, y-, z-axes (frame rotation).
const AlignableSurface & surface() const
Return the Surface (global position and orientation) of the object.
GlobalVector centerOfMass(const GlobalVectors &theVs)
Find the CM of a set of points.
CLHEP::HepVector AlgebraicVector
AlgebraicVector EulerAngles
virtual void rotateInGlobalFrame(const RotationType &rotation)=0
void setSurvey(const SurveyDet *)
Set survey info.
std::vector< GlobalVector > GlobalVectors
std::vector< Alignable * > Alignables
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.
const PositionType & globalPosition() const
Return the global position of the object.
math::Error< 6 >::type ErrorMatrix
Basic3DVector< T > multiplyInverse(const Basic3DVector< T > &v) const
void moveAlignable(Alignable *ali, AlgebraicVector diff)
Moves the alignable by the AlgebraicVector.
const align::LocalPoints & localPoints() const
Alignable * mother() const
Return pointer to container alignable (if any)