12#ifndef BMNALIGNRESULT_H
13#define BMNALIGNRESULT_H
43 const Int_t fAlphaCount;
56 SVectGL&
A(Int_t index)
noexcept {
return fA[index]; };
58 TVectorD&
L() noexcept {
return fL; };
59 TVectorD&
SVDSig() noexcept {
return fSVDSig; };
63 Double_t
GetValueMSE(Int_t index)
const noexcept {
return fMSE[index]; };
69 void AddValueMSE(Int_t detectorIndex, Double_t val);
96 , fAlphaCount(TrackCount)
102 : fAlpha(other.fAlpha)
103 , fAfull(other.fAfull)
106 , fSVDSig(other.fSVDSig)
107 , fResidualsX(other.fResidualsX)
108 , fResidualsY(other.fResidualsY)
110 , fMSEtotal(other.fMSEtotal)
111 , fAlphaCount(other.fAlphaCount)
122 if (fAlphaCount != other.fAlphaCount)
123 throw std::runtime_error(
"BmnAlignResult: assignment between objects with different alphaCount");
125 fL.ResizeTo(other.fL);
126 fSVDSig.ResizeTo(other.fSVDSig);
127 fAlpha = other.fAlpha;
128 fAfull = other.fAfull;
131 fSVDSig = other.fSVDSig;
132 fResidualsX = other.fResidualsX;
133 fResidualsY = other.fResidualsY;
135 fMSEtotal = other.fMSEtotal;
144 result[
i] = std::make_pair(
i, fMSE[
i]);
148 std::sort(result.begin(), result.end(),
149 [](
const std::pair<Int_t, Double_t>& a,
const std::pair<Int_t, Double_t>& b)
noexcept {
150 return a.second < b.second;
160 throw std::runtime_error(
"BmnAlignResult: detectorIndex out of range");
161 fMSE[detectorIndex] += val;
173 auto itr{fAfull.begin()};
181 fAfull.Place_at(fA[
i], j);
187 static ULong_t sHistCounter{0};
188 return ++sHistCounter;
#define BMN_RESIDUALS_BINS
ROOT::Math::SVector< Double_t, BMN_GLPARAMS_TOTAL > SVectGLT
ROOT::Math::SVector< Double_t, BMN_GLOBAL_PARAMS_PD > SVectGL
#define BMN_RESIDUALS_RANGE_X
#define BMN_RESIDUALS_RANGE_Y
ROOT::Math::SVector< Double_t, BMN_LOCAL_PARAMS_PT > SVectLC
#define BMN_GLOBAL_PARAMS_PD
IdxValuePair_t GetSortedMSE() const
VectorSVectLC_t & Alpha() noexcept
Double_t GetValueMSE(Int_t index) const noexcept
TVectorD & SVDSig() noexcept
SVectGL & A(Int_t index) noexcept
SVectLC & Alpha(Int_t index) noexcept
std::array< Double_t, BMN_MODULE_COUNT > ArrayDouble_t
std::array< std::pair< Int_t, Double_t >, BMN_MODULE_COUNT > IdxValuePair_t
TH1D & ResidualsX() noexcept
~BmnAlignResult()=default
std::array< SVectLC, BMN_MODULE_COUNT > ArraySVectLC_t
TH1D & ResidualsY() noexcept
std::array< SVectGL, BMN_MODULE_COUNT > ArraySVectGL_t
BmnAlignResult & operator=(const BmnAlignResult &other)
Int_t GetAlphaCount() const noexcept
Double_t GetValueMSE() const noexcept
ULong_t GetHistCounter() const noexcept
std::vector< SVectLC > VectorSVectLC_t
void AddValueMSE(Int_t detectorIndex, Double_t val)