34 const double kCorrToler = 1e-6;
35 const double kDiagToler = 1e-14;
50 if (
Abs(dfd) < kDiagToler) {
85 printf(
"%cDet%d SID:%4d Alp:%+.3f X:%+9.4f Meas:%s Mat: ",
isInvDir() ?
'*' :
' ',
94 printf(
" MeasPnt: Xtr: %+9.4f Ytr: %+8.4f Ztr: %+9.4f | ErrYZ: %+e %+e %+e | %d DOFglo\n",
101 printf(
" MatCorr Exp(ELOSS): %+.4e %+.4e %+.4e %+.4e %+.4e\n",
103 printf(
" MatCorr Cov (diag): %+.4e %+.4e %+.4e %+.4e %+.4e\n",
108 memset(covUndiag, 0, 15 *
sizeof(
float));
110 for (
int i = 0;
i < np;
i++) {
111 for (
int j = 0;
j <=
i;
j++) {
113 for (
int k = np; k--;) {
116 int ij = (
i * (
i + 1) / 2) +
j;
123 printf(
" MatCorr Cov in normal form:\n");
124 printf(
" %+e\n", covUndiag[0]);
125 printf(
" %+e %+e\n", covUndiag[1], covUndiag[2]);
126 printf(
" %+e %+e %+e\n", covUndiag[3], covUndiag[4], covUndiag[5]);
127 printf(
" %+e %+e %+e %+e\n", covUndiag[6], covUndiag[7], covUndiag[8], covUndiag[9]);
128 printf(
" %+e %+e %+e %+e +%e\n", covUndiag[10], covUndiag[11], covUndiag[12], covUndiag[13], covUndiag[14]);
133 printf(
" Matrix for Mat.corr.errors diagonalization:\n");
135 for (
int i = 0;
i < npar;
i++) {
136 for (
int j = 0;
j < npar;
j++) {
144 printf(
" Local Track (A): ");
145 for (
int i = 0;
i < 5;
i++) {
151 printf(
" Local Track (B): ");
152 for (
int i = 0;
i < 5;
i++) {
168 auto print3d = [](
dim3_t& xyz) {
191 printf(
"%+.4e %.4e ", wsb.getY(), wsb.getZ());
192 printf(
"%+.4e %.4e ", wsa.getY(), wsa.getZ());
223 return x > xp ? -1 : 1;
229 return x > xp ? 1 : -1;
256 return ATan2(xyz[1], xyz[0]);
263 return math_utils::detail::angle2Sector(
getPhiGlo());
271 int sz = d.GetNrows();
272 for (
int i = sz;
i--;) {
273 for (
int j = sz;
j--;) {
285 for (
int i =
v.GetNrows();
i--;) {
296 for (
int ip = np; ip--;) {
298 for (
int jp = np; jp--;) {
312 for (
int ip = np; ip--;) {
314 for (
int jp = np; jp--;) {
315 v += double(
mMatDiag[ip][jp]) * diag[jp];
329 for (
int ip = np; ip--;) {
331 for (
int jp = np; jp--;) {
346 for (
int ip = np; ip--;) {
348 for (
int jp = np; jp--;) {
349 v += double(
mMatDiag[jp][ip]) * nodiag[jp];
360 const trackParam_t::covMat_t covDum{
376 const trackParam_t::covMat_t covDum{
Meausered point in the sensor.
virtual void updatePointByTrackInfo(AlignmentPoint *pnt, const trackParam_t *t) const
void getTrWSA(trackParam_t &etp) const
virtual void dumpCoordinates() const
void updatePointByTrackInfo(const trackParam_t *t)
double getZTracking() const
double getYTracking() const
int getMaxLocVarID() const
double getAlphaSens() const
int getMinLocVarID() const
double mTrParamWSB[kNMatDOFs]
void print(uint16_t opt=0) const
int getAliceSector() const
void setMatCovDiag(const TVectorD &v)
double getXTimesRho() const
float mMatCorrCov[kNMatDOFs]
void diagMatCorr(const double *nodiag, double *diag) const
void getXYZGlo(double r[3]) const
void getTrWSB(trackParam_t &etp) const
bool containsMaterial() const
double getXTracking() const
AlignableSensor * mSensor
double mTrParamWSA[kNMatDOFs]
void setMatCovDiagonalizationMatrix(const TMatrixD &d)
bool containsMeasurement() const
float mMatDiag[kNMatDOFs][kNMatDOFs]
bool isAfter(const AlignmentPoint &pnt) const
float mMatCorrExp[kNMatDOFs]
void setXYZTracking(const double r[3])
void unDiagMatCorr(const double *diag, double *nodiag) const
constexpr bool isZeroPos(double d) noexcept
typename trackParam_t::params_t params_t
typename trackParam_t::dim3_t dim3_t
typename track::TrackParametrizationWithError< double > trackParam_t
void align(gsl::span< ElinkEncoder< BareFormat, CHARGESUM > > elinks)
a couple of static helper functions to create timestamp values for CCDB queries or override obsolete ...
std::vector< o2::mch::ChannelCode > cc