15 theUserVariables(nullptr),
25 const std::vector<bool>&
sel)
28 theUserVariables(nullptr),
36 : theAlignable(
object), theData(
data), theUserVariables(nullptr), bValid(
true) {
74 const int ncols = dev.num_col();
75 const int nrows = dev.num_row();
81 for (
int irow = 0; irow < nrows; ++irow) {
83 for (
int icol = 0; icol <
ncols; ++icol) {
84 seldev[ir2][icol] = dev[irow][icol];
109 edm::LogError(
"Alignment") <<
"@SUB=AlignmentParameters::hierarchyLevel" 110 <<
"Called for AlignmentParameters without pointer to Alignable";
119 unsigned int maxLevelOfComp = 0;
120 for (
const auto& iAli : comps) {
121 const unsigned int compResult = iAli->alignmentParameters()->hierarchyLevel();
123 if (maxLevelOfComp < compResult)
124 maxLevelOfComp = compResult;
127 return maxLevelOfComp + 1;
141 const std::vector<bool>&
sel)
const {
142 int nRows =
m.num_row();
147 throw cms::Exception(
"LogicError") <<
"Size mismatch in parameters" 148 <<
" (input symmatrix = " << nRows <<
", selection: " <<
size <<
")";
151 std::vector<int> rowvec;
152 for (
int i = 0;
i < nRows;
i++)
156 int nSelectedRows = rowvec.size();
158 for (
int i = 0;
i < nSelectedRows;
i++)
159 for (
int j = 0;
j < nSelectedRows;
j++)
167 int nRows =
m.num_row();
172 throw cms::Exception(
"LogicError") <<
"Size mismatch in parameters" 173 <<
" (input vector = " << nRows <<
", selection: " <<
size <<
")";
176 std::vector<int> rowvec;
177 for (
int i = 0;
i < nRows;
i++)
181 int nSelectedRows = rowvec.size();
183 for (
int i = 0;
i < nSelectedRows;
i++)
191 const std::vector<bool>&
sel)
const {
192 int nRows =
m.num_row();
195 std::vector<int> rowvec;
201 if (nRows != static_cast<int>(rowvec.size()))
202 throw cms::Exception(
"LogicError") <<
"Size mismatch in parameters" 203 <<
" (input symmatrix = " << nRows <<
", selection: " <<
size <<
")";
207 for (
int i = 0;
i < nRows;
i++)
208 for (
int j = 0;
j < nRows;
j++)
216 int nRows =
m.num_row();
219 std::vector<int> rowvec;
225 if (nRows != static_cast<int>(rowvec.size()))
226 throw cms::Exception(
"LogicError") <<
"Size mismatch in parameters" 227 <<
" (input vector = " << nRows <<
", selection: " <<
size <<
")";
231 for (
int i = 0;
i < nRows;
i++)
const AlgebraicSymMatrix & covariance(void) const
Get parameter covariance matrix.
Alignable * alignable(void) const
Get pointer to corresponding alignable.
const AlgebraicVector & parameters(void) const
Get alignment parameters.
Log< level::Error, false > LogError
int numSelected(void) const
Get number of selected parameters.
AlgebraicVector expandVector(const AlgebraicVector &m, const std::vector< bool > &sel) const
AlgebraicVector selectedParameters(void) const
Get selected parameters.
AlgebraicSymMatrix expandSymMatrix(const AlgebraicSymMatrix &m, const std::vector< bool > &sel) const
bool firstCompsWithParams(Alignables ¶mComps) const
virtual AlgebraicMatrix derivatives(const TrajectoryStateOnSurface &tsos, const AlignableDetOrUnitPtr &alidet) const =0
Get derivatives of selected parameters.
CLHEP::HepMatrix AlgebraicMatrix
void setValid(bool v)
Set validity flag.
AlignmentUserVariables * userVariables(void) const
Get pointer to user variables.
virtual AlgebraicMatrix selectedDerivatives(const TrajectoryStateOnSurface &tsos, const AlignableDetOrUnitPtr &alidet) const
int size(void) const
Get number of parameters.
AlgebraicSymMatrix collapseSymMatrix(const AlgebraicSymMatrix &m, const std::vector< bool > &sel) const
(Abstract) Base class for alignment algorithm user variables
bool isValid(void) const
Get validity flag.
AlgebraicVector collapseVector(const AlgebraicVector &m, const std::vector< bool > &sel) const
CLHEP::HepVector AlgebraicVector
virtual unsigned int hierarchyLevel() const
void setUserVariables(AlignmentUserVariables *auv)
Set pointer to user variables.
const std::vector< bool > & selector(void) const
Get alignment parameter selector vector.
std::vector< Alignable * > Alignables
char data[epos_bytes_allocation]
virtual ~AlignmentParameters()
Destructor.
CLHEP::HepSymMatrix AlgebraicSymMatrix
AlignmentParameters()
Default constructor.
bool bValid
True if parameters are valid.
AlignmentUserVariables * theUserVariables
AlgebraicSymMatrix selectedCovariance(void) const
Get covariance matrix of selected parameters.