35template<
typename HitType = BmnHitRecord>
42 const char* constraintsPath =
nullptr,
47 const char* filesListPath,
48 const char* constraintsPath =
nullptr,
148#define _BMN_ALIGNER_RUN_THREADS(...) \
150 std::thread** _THRDS = new std::thread*[GetThreadCount()]; \
151 for (auto i = 0; i < GetThreadCount(); i++) \
152 _THRDS[i] = new std::thread(__VA_ARGS__, i); \
153 for (auto i = 0; i < GetThreadCount(); i++) { \
162template<
typename HitType>
165 const char* constraintsPath,
178template<
typename HitType>
186template<
typename HitType>
194template<
typename HitType>
#define BMN_BRENT_GRID_SIZE
ROOT::Math::SVector< Double_t, BMN_GLPARAMS_TOTAL > SVectGLT
TMatrixT< Double_t > TMatrixD
TVectorT< Double_t > TVectorD
BmnAligner(const BmnMeasureModel *measureModel, const BmnDetectorModel *modelDetector, const char *filesListPath, const char *constraintsPath=nullptr, Int_t nThreads=1)
DetectorFlags_t fDetectorActive
const BmnMeasureModel * fpMeasureModel
virtual Double_t CalculateMSE(Bool_t withResiduals)
BmnAlignResult * fpResultCurrent
BmnRootIterator * fpRootIterator
BmnSimpleProgressBar & GetProgressBar() noexcept
std::array< Int_t, BMN_MODULE_COUNT > DetectorHitCount_t
BmnDataIterator * fpIteratorMain
std::deque< BmnAlignResult > fIterationResults
std::array< Bool_t, BMN_MODULE_COUNT > DetectorFlags_t
Bool_t Initialized() const noexcept
void StoreZeroSolution(const std::vector< SVectLC > &AlphaZero)
const char * fpConstraintsPath
Int_t TotalHits() const noexcept
ROOT::Math::BrentMinimizer1D Minimizer1D_t
BmnSimpleProgressBar fProgressBar
std::vector< BmnDataIterator * > fpIterators
void ProcessTracks(TVectorD *pvB_dash, TMatrixD *pmC_dash, Int_t threadNum)
const BmnDetectorModel * fpDetModel
virtual Bool_t IterateAlignment()
virtual Bool_t PrepareData(const char *tracksPath=nullptr)
DetectorHitCount_t fHitsPerDetector
Bool_t SaveSolution(const char *jsonPath, Bool_t withAlpha=kFALSE)
BmnAlignResult * fpResultLast
std::vector< Int_t > fFirstTracksIdx
Double_t fOmegaScaleFactor
Int_t TotalTracks() const noexcept
void CalculateMSEpart(Bool_t withResiduals, Int_t threadNum)
std::vector< Bool_t > * fpTrackUsable
Bool_t LoadSolution(const char *jsonPath, Bool_t withAlpha=kTRUE, Bool_t withMSE=kTRUE)
BmnAlignResult * GetCurrentResult() const noexcept
Bool_t Align(Bool_t fixEvery=kFALSE)
BmnAligner(const BmnMeasureModel *measureModel, const BmnDetectorModel *modelDetector, const char *constraintsPath=nullptr, Int_t nThreads=1)
void DoneInTime(TStopwatch &timer, const char *stage)
Double_t OmegaScaleFactor() const noexcept
Double_t CalculateMSE(const SVectGLT &solution)
Int_t GetThreadCount() const noexcept
virtual void ReportResults() const
BmnRamIterator< BmnATestHit > * fpRamIterator
BmnAlignResult * GetResult(Bool_t last=kTRUE) const noexcept
std::vector< TVectorD > fConstraints
Bool_t SolveGlobal(const TMatrixD &mCL, const TVectorD &vBL)
void MarkTime(TStopwatch &timer)
static void StatOverflows(Bool_t flag=kTRUE)
static void AddDirectory(Bool_t add=kTRUE)