30 #include "Alignment/CocoaVisMgr/interface/ALIVRMLMgr.h"
31 #include "Alignment/IgCocoaFileWriter/interface/IgCocoaFileMgr.h"
154 std::vector< OpticalObject* >::iterator voite;
156 (*voite)->resetOriginalOriginalCoordinates();
160 std::vector< Entry* >::iterator veite;
162 (*veite)->resetValueDisplacementByFitting();
179 if(
ALIUtils::debug >= 2 )
std::cout << std::endl <<
"@@@@@@@@@@@@@@@@@@ Starting data set fit : " << nEvent << std::endl;
186 fileout << std::endl <<
"@@@@@@@ NEW MEASUREMENT SET " << nEvent << std::endl;
197 double daFactor = 1.;
242 fileout <<
"!!!! WARNING: Too many iterations " <<
theNoFitIterations <<
" and fit DOES NOT CONVERGE " << std::endl;
251 std::cerr <<
"!! WARNING: fit quality has worsened, Recalculate fit quality with decreasing values of Da " << std::endl;
260 fileout <<
" Redoing iteration with Da factor " << daFactor << std::endl;
264 std::cerr <<
" !!!ERROR: not possible to get good fit quality even multiplying Da by " << daFactor << std::endl;
267 fileout <<
" !!!ERROR: not possible to get good fit quality even multiplying Da by " << daFactor << std::endl;
305 if(
ALIUtils::debug >= 1 )
std::cout << std::endl <<
"@@@@@@@@@@@@@@@@@@ Fit has ended : only one measurement " << nEvent << std::endl;
312 if(
ALIUtils::debug >= 1 )
std::cout << std::endl <<
"@@@@@@@@@@@@@@@@@@ Fit has ended : 'Measurement::only1' is set" << std::endl;
319 if(
ALIUtils::debug >= 1 )
std::cout << std::endl <<
"@@@@@@@@@@@@@@@@@@ Fit has ended : 'Number of events exhausted " << nEvent << std::endl;
327 if(
ALIUtils::debug >= 1 )
std::cout << std::endl <<
"@@@@@@@@@@@@@@@@@@ Fit has ended : ??no more data sets' " << nEvent << std::endl;
341 if(gomgr->GlobalOptions()[
"VisOnly"] == 1) {
367 std::vector< Entry* >::const_iterator vecite;
373 int No_entry_to_fit = 0;
379 (*vecite)->setFitPos( No_entry_to_fit );
380 if(
ALIUtils::debug >= 4 )
std::cout <<
" Entry To Fit= " << No_entry_to_fit <<
" " << (*vecite)->OptOCurrent()->name() <<
" " << (*vecite)->name() <<
" with quality= " << (*vecite)->quality() << std::endl;
405 std::cout <<
"@!! STOPPED by user after 1st iteration " << std::endl;
497 std::cout <<
"ENDING after derivatives are calculated ('onlyDeriv' option set)" << std::endl;
524 std::vector< Measurement* >::const_iterator vmcite;
527 (*vmcite)->calculateOriginalSimulatedValue();
562 std::vector< Measurement* >::const_iterator vmcite;
565 NoMeas += (*vmcite)->dim();
577 std::vector< Entry* >::iterator veite;
580 if ( (*veite)->quality() == 1 ) nEnt_cal++;
583 std::cout <<(*veite)->quality() <<
" " << (*veite)->OptOCurrent()->name() <<
" "
584 << (*veite)->name() <<
" # ENT CAL " << nEnt_cal <<
" # ENT " << noent << std::endl;
591 std::vector<Entry*>::const_iterator vecite;
596 if(
ALIUtils::debug >= 99)
std::cout <<(*vecite)->quality() << (*vecite)->OptOCurrent()->name() << (*vecite)->name() <<
"NoParamFit" << NoParamFit << std::endl;
602 ALIint NoLinesA = NoMeas + nEnt_cal;
603 ALIint NoColumnsA = NoParamFit;
606 ALIint NoLinesW = NoLinesA;
607 ALIint NoColumnsW = NoLinesA;
610 ALIint NoLinesY = NoLinesA;
617 " NoColumnsA = " << NoColumnsA << std::endl;
633 std::vector<Measurement*>::const_iterator vmcite;
634 std::vector<Entry*>::const_iterator vecite;
637 if(
ALIUtils::debug >= 5 )
std::cout <<
"FillMatricesWithMeasurements: measurement " << (*vmcite)->name() <<
" # entries affecting " <<(*vmcite)->affectingEntryList().size() << std::endl;
640 ALIint measdim = (*vmcite)->dim();
641 std::vector<ALIdouble> derivRE;
647 for ( vecite = (*vmcite)->affectingEntryList().begin();
648 vecite != (*vmcite)->affectingEntryList().end(); ++vecite) {
653 std::cout <<
"entry affecting: " << (*vecite)->OptOCurrent()->name() <<
" " << (*vecite)->name() <<std::endl;
655 derivRE = (*vmcite)->DerivativeRespectEntry(*vecite);
659 if(
ALIUtils::debug >= 5)
std::cout <<
"FillMatricesWithMeasurements: AMATRIX (" << Aline+
jj <<
"," << (*vecite)->fitPos() <<
" = " << derivRE[
jj] << std::endl;
661 (*vmcite)->setValueSimulated(
jj, (*vmcite)->valueSimulated_orig(
jj) );
672 std::cerr <<
"EXITING: Measurement number " <<
674 "has 0 error!!" << std::endl;
715 std::vector<Measurement*>::const_iterator vmcite;
718 NolinMes += (*vmcite)->dim();
722 std::vector< Entry* >::const_iterator vecite;
730 if ( (*vecite)->quality() == 1 ){
732 ALIint lineNo = NolinMes + nEntcal;
733 ALIint columnNo = (*vecite)->fitPos();
735 if(
ALIUtils::debug >= 4)
std::cout <<
"Fit::FillMatricesWithCalibratedParameters: AMatrix ( " << lineNo <<
" , " << columnNo <<
") = " << 1. << std::endl;
739 if(
ALIUtils::debug >= 4)
std::cout <<
"Fit::FillMatricesWithCalibratedParameters: WMatrix ( " << lineNo <<
" , " << columnNo <<
") = " << entsig*entsig << std::endl;
749 yfMatrix->
AddData( lineNo, 0, -(*vecite)->valueDisplacementByFitting() );
777 if( siz == 0 )
return;
781 for( ii = 0; ii <
ALIuint(siz); ii++ ){
800 std::cout <<
"CHECKsetCorrelatiFPF " << fit_pos1 <<
" " << fit_pos2 << std::endl;
802 if( fit_pos1 >= 0 && fit_pos1 < pmsize && fit_pos2 >= 0 && fit_pos2 < pmsize ) {
814 std::cout <<
"setCorrelatiFPF " << fit_pos1 <<
" " << fit_pos2 <<
" " << correl << std::endl;
863 std::vector< Entry* >::const_iterator vecite;
866 std::cout <<
"PARAM" <<
" Optical Object " <<
" entry name " <<
" Param.Value "
867 <<
" Prog.Error" <<
" Orig.Error" << std::endl;
878 std::cout << nEnt <<
"PARAM" << std::setw(26)
879 << (*vecite)->OptOCurrent()->name().c_str()
880 << std::setw(8) <<
" " << (*vecite)->name().c_str() <<
" "
881 << std::setw(8) <<
" " << (*vecite)->value() <<
" "
883 (*vecite)->OutputSigmaDimensionFactor()
884 <<
" " << (*vecite)->sigma() / (*vecite)->OutputSigmaDimensionFactor()
885 <<
" Q" << (*vecite)->quality() << std::endl;
889 if ( (*vecite)->quality() == 2 ) nEntUnk++;
915 DSMattemp->
Dump(
"DSMattempMatrix=Dat*At*W");
917 DSMattemp2->
Dump(
"DSMattempMatrix2=At*W*yf");
919 DSMattemp3->
Dump(
"DSMattempMatrix3=At*W");
934 ALIdouble fit_quality_cut = (*DSMat)(0,0);
940 fileout <<
theNoFitIterations <<
" Fit quality predicted improvement in distance to minimum is = " << fit_quality_cut << std::endl;
957 if( fit_quality_cut < 0. ) {
1069 std::cout <<
"@@ Adding correction (DaMatrix) to Entries " << std::endl;
1081 std::vector<Entry*>::const_iterator vecite;
1089 std::cout << std::endl <<
" @@@ PENTRY change "
1090 << (*vecite)->OptOCurrent()->name() <<
" " << (*vecite)->name() <<
" "
1091 <<
" change= " << (*DaMatrix)(nEnt,0)
1092 <<
" value= " << (*vecite)->valueDisplacementByFitting()
1105 if(
ALIUtils::debug >= 4)
std::cout <<
" old valueDisplacementByFitting " << (*vecite)->name() <<
" " << (*vecite)->valueDisplacementByFitting() <<
" original value " << (*vecite)->value() <<std::endl;
1107 (*vecite)->addFittedDisplacementToValue( (*
DaMatrix)(nEnt,0) );
1109 if(
ALIUtils::debug >= 4)
std::cout << nEnt <<
" new valueDisplacementByFitting " << (*vecite)->OptOCurrent()->name() <<
" " << (*vecite)->name() <<
" = " << (*vecite)->valueDisplacementByFitting() <<
" " << (*DaMatrix)(nEnt,0) << std::endl ;
1123 std::cout <<
"@@ Fit::substractToHalfDaMatrixToEntries " << std::endl;
1126 std::vector<Entry*>::const_iterator vecite;
1131 ALIdouble lastadd = (*vecite)->lastAdditionToValueDisplacementByFitting() * factor;
1133 (*vecite)->addFittedDisplacementToValue( -lastadd );
1134 (*vecite)->setLastAdditionToValueDisplacementByFitting( - (*vecite)->lastAdditionToValueDisplacementByFitting() );
1137 if(
ALIUtils::debug >= 4)
std::cout <<
" new valueDisplacementByFitting " << (*vecite)->OptOCurrent()->name() <<
" " << (*vecite)->name() <<
" = " << (*vecite)->valueDisplacementByFitting() <<
" " << std::endl ;
1151 std::cout <<
"SRPRPOS " <<
" Optical Object "
1152 <<
" Parameter" <<
" Fit.Value " <<
" Orig.Value" << std::endl;
1156 fileout << std::endl <<
"FITTED VALUES " << std::endl
1158 <<
" Optical Object"
1161 fileout <<
" value (+-error)"
1162 <<
" orig.val (+-error)";
1164 fileout <<
" value "
1167 fileout <<
" quality"
1171 std::vector< Entry* > entries;
1174 std::vector< OpticalObject* >::const_iterator vocite;
1176 if( (*vocite)->type() ==
ALIstring(
"system") )
continue;
1178 fileout <<
" %%%% Optical Object: " << (*vocite)->longName() << std::endl;
1180 entries = (*vocite)->CoordinateEntryList();
1181 siz = entries.size();
1183 std::cerr <<
"!!! FATAL ERROR: strange number of coordinates = " << siz << std::endl;
1196 entries = (*vocite)->ExtraEntryList();
1197 siz = entries.size();
1198 for( ii = 0; ii < siz; ii++ ){
1213 fileout << std::endl <<
"@@@@ FITTED VALUES IN ALL ANCESTORS " << std::endl
1215 <<
" Optical Object"
1218 fileout <<
" value (+-error)";
1220 fileout <<
" orig.val (+-error)";
1223 fileout <<
" value ";
1225 fileout <<
" orig.val ";
1228 fileout <<
" quality"
1232 std::vector< Entry* > entries;
1233 std::vector< OpticalObject* >::const_iterator vocite;
1235 if( (*vocite)->type() ==
ALIstring(
"system") )
continue;
1237 fileout <<
" %%%% Optical Object: " << (*vocite)->longName() << std::endl;
1239 entries = (*vocite)->CoordinateEntryList();
1245 fileout <<
" %% IN FRAME : " << optoParent->
longName() << std::endl;
1250 optoParent = optoParent->
parent();
1251 }
while( optoParent );
1259 CLHEP::Hep3Vector centreLocal;
1260 if( optoAncestor->
type() ==
"system" ) {
1264 CLHEP::HepRotation parentRmGlobInv = inverseOf( optoAncestor->
rmGlob() );
1265 centreLocal = parentRmGlobInv * centreLocal;
1268 std::cout <<
"CENTRE LOCAL "<< opto->
name() <<
" " << centreLocal <<
" GLOBL " << opto->
centreGlob() <<
" parent GLOB " << optoAncestor->
centreGlob() << std::endl;
1282 dumpEntryAfterFit( fileout, entries[
ii], centreLocal[ii] / entries[ii]->OutputValueDimensionFactor(), printErrors, printOrig );
1295 dumpEntryAfterFit( fileout, entries[
ii], entryvalues[ii-3]/entries[ii]->OutputValueDimensionFactor(), printErrors, printOrig );
1304 if( entry->
type() ==
"angles") {
1322 << std::setw(8) <<
" " << entry->
name() <<
" "
1324 <<
" " << entry->
value()
1325 <<
" Q" << entry->
quality() << std::endl;
1328 if ( entry->
quality() == 2 ) {
1329 fileout <<
"UNK: " << entry->
fitPos() <<
" ";
1330 }
else if ( entry->
quality() == 1 ) {
1331 fileout <<
"CAL: " << entry->
fitPos() <<
" ";
1334 fileout <<
"FIX: -1 ";
1338 << std::setw(8) <<
" " << entry->
name() <<
" "
1339 << std::setw(8) << std::setprecision(8) << entryvalue;
1343 if( printErrors ) fileout <<
" +- " << std::setw(8) << 0.;
1346 fileout << std::setw(8) <<
" " << entry->
value() / dimv;
1347 if( printErrors ) fileout <<
" +- " << std::setw(8) << entry->
sigma() /dims <<
" Q" << entry->
quality();
1351 if( fabs(dif) < 1.E-9 ) dif = 0.;
1352 fileout <<
" DIFF= " << dif;
1359 fileout << std::endl;
1369 fileout << std::endl <<
"CORRELATION BETWEEN 'unk' ENTRIES: (>= " << minCorrel<<
" )" << std::endl
1370 <<
"No_1 No_2 correlation " << std::endl;
1373 std::vector< Entry* >::iterator veite1, veite2;
1377 if( (*veite1)->quality() == 0 ) {
1379 }
else if( (*veite1)->quality() == 1 ) {
1381 }
else if( (*veite1)->quality() == 2 ) {
1384 i1 = (*veite1)->fitPos();
1386 for ( veite2 = veite1+1;
1388 i2 = (*veite2)->fitPos();
1389 if( (*veite2)->quality() == 0 ) {
1391 }
else if( (*veite2)->quality() == 1 ) {
1393 }
else if( (*veite2)->quality() == 2 ) {
1399 if (fabs(corrf) >= minCorrel ) {
1401 std::cout <<
"CORR:" << E1 <<
"" << E2 <<
" (" << i1 <<
")" <<
" (" << i2 <<
")" <<
" " << corrf << std::endl;
1403 fileout <<
"CORR:" << E1 <<
"" << E2 <<
" (" << i1 <<
")" <<
" (" << i2 <<
")" <<
" " << corrf << std::endl;
1421 matout << std::endl <<
" @@@@@@@@@@@@@@@ Iteration No : " <<
theNoFitIterations << std::endl;
1445 std::vector<Entry*>::const_iterator vecite;
1449 if ((*vecite)->name() == entry_name ) {
1451 fitposi = (*vecite)->fitPos();
1457 if ((*vecite)->name() == entry_name ) {
1459 fitposi = (*vecite)->fitPos();
1463 if(fitposi == -99) {
1464 std::cerr <<
"!!EXITING: entry name not found: " << entry_name << std::endl;
1475 double chi2meas = 0;
1477 ALIint nMeas = 0, nUnk = 0;
1480 std::vector< Measurement* >::const_iterator vmcite;
1485 double c2 = ( (*vmcite)->value(
ii) - (*vmcite)->valueSimulated(
ii) ) / (*vmcite)->sigma(
ii);
1488 std::cout << c2 <<
" adding chi2meas " << chi2meas <<
" " << (*vmcite)->name() <<
": " <<
ii <<
" (mm)R: " << (*vmcite)->value(
ii)*1000. <<
" S: " << (*vmcite)->valueSimulated(
ii)*1000. <<
" Diff= " << ((*vmcite)->value(
ii) - (*vmcite)->valueSimulated(
ii))*1000. << std::endl;
1494 std::vector< Entry* >::iterator veite;
1497 if ( (*veite)->quality() == 2 ) nUnk++;
1498 if ( (*veite)->quality() == 1 ) {
1499 double c2 = (*veite)->valueDisplacementByFitting() / (*veite)->sigma();
1502 if(
ALIUtils::debug >= 2)
std::cout << c2 <<
" adding chi2cal " << chi2cal <<
" " << (*veite)->OptOCurrent()->name() <<
" " << (*veite)->name() << std::endl;
1509 fileout <<
" Chi2= " << chi2meas+chi2cal <<
" / " << nMeas-nUnk <<
" dof " <<
" From measurements= " << chi2meas <<
" from calibrated parameters= " << chi2cal << std::endl;
1511 if(
ALIUtils::debug >= 3)
std::cout <<
" quality Chi2 (no correlations) " << chi2meas+chi2cal <<
" " << chi2meas <<
" " << chi2cal << std::endl;
1523 fileout << std::endl <<
"Fit iteration " <<
theNoFitIterations <<
" ..." << std::endl;
1533 fileout <<
theNoFitIterations <<
" Chi2 after iteration = " << fit_quality << std::endl;
1545 std::vector<Measurement*>::const_iterator vmcite;
1548 NolinMes += (*vmcite)->dim();
1551 std::vector< Entry* >::const_iterator vecite;
1553 if(
ALIUtils::debug >= 4 )
std::cout <<
"Fit::CheckIfFitPossible looping for entry " << (*vecite)->longName() << std::endl;
1554 if ( (*vecite)->quality() == 2 ) {
1555 ALIint nCol = (*vecite)->fitPos();
1563 if(
ALIUtils::debug >= 5 )
std::cout <<
"Fit::CheckIfFitIsPossible " << nCol <<
" " << ii <<
" = " << (*AMatrix)(
ii,nCol) << std::endl;
1569 throw cms::Exception(
"SDFError") <<
"!!!FATAL ERROR: Fit::CheckIfFitPossible() no measurement depends on unknown entry " << (*vecite)->OptOCurrent()->name() <<
"/" << (*vecite)->name() << std::endl
1570 <<
"!!! Fit will not be possible! " << std::endl;
1577 std::vector< Entry* >::const_iterator vecite1,vecite2;
1583 if( (*vecite1)->quality() == 2 ) {
1584 vecite2 = vecite1; ++vecite2;
1586 if( (*vecite2)->quality() == 2 ) {
1587 ALIint fitpos1 = (*vecite1)->fitPos();
1588 ALIint fitpos2 = (*vecite2)->fitPos();
1589 if(
ALIUtils::debug >= 5 )
std::cout <<
"Fit::CheckIfFitIsPossible checking " << (*vecite1)->longName() <<
" ( " << fitpos1 <<
" ) & " << (*vecite2)->longName() <<
" ( " << fitpos2 <<
" ) "<< std::endl;
1594 if( fabs((*
AMatrix)(
ii,fitpos1)) < derivPrec ) {
1595 if( fabs((*
AMatrix)(
ii,fitpos2)) > derivPrec ) {
1601 if( prop != DBL_MAX && prop != propn ) {
1609 std::cerr <<
"!!!FATAL ERROR: Fit::CheckIfFitPossible() two entries for which the measurements have the same dependency (or 100% proportional) " << (*vecite1)->longName() <<
" & " << (*vecite2)->longName() << std::endl
1610 <<
"!!! Fit will not be possible! " << std::endl;
1624 std::set<ALIuint> columnsEqual;
1625 std::set<ALIuint> columnsEqualSave;
1629 if( fabs((*
AMatrix)(measNo,
ii)) > biggest ) {
1633 columnsEqualSave.insert(
ii);
1639 if(
jj ==
int(measNo) )
continue;
1640 columnsEqual = columnsEqualSave;
1643 div = (*AMatrix)(measNo,
ii)/(*
AMatrix)(measNo,biggestColumn);
1645 if(
ALIUtils::debug >= 3 )
std::cout <<
"CheckIfMeasIsProportionalToAnother 2 columns = " <<
ii <<
" in " << measNo <<
" & " <<
jj << std::endl;
1647 if(
ALIUtils::debug >= 3 )
std::cout <<
"CheckIfMeasIsProportionalToAnother 2 columns != " <<
ii <<
" in " << measNo <<
" & " <<
jj << std::endl;
1649 std::set<ALIuint>::iterator ite = columnsEqual.find(
ii );
1650 if( ite != columnsEqual.end() ){
1651 columnsEqual.erase(ite);
1656 if( columnsEqual.size() != 0 ) {
1672 std::cout <<
" imeas " << imeas << std::endl;
1674 std::vector< Measurement* >::const_iterator vmcite;
1677 if( Aline == imeas ) {
1679 gcvt(
jj, 10, ctmp );
1680 return ((*vmcite)->name()) +
":" +
std::string(ctmp);
1686 std::cout <<
" return measname " << measname << std::endl;
static void set_time_now(time_t now)
static void multiplyMatrices()
static ALIdouble theMinDaFactor
void AddFittedEntriesSet(FittedEntriesSet *fents)
static ALIMatrix * AMatrix
virtual ALIdouble OutputValueDimensionFactor() const
static void setCorrelationFromParamFitted(const pss &entry1, const pss &entry2, ALIdouble correl)
static CocoaDaqReader * GetDaqReader()
static void dumpFittedValuesInAllAncestorFrames(ALIFileOut &fileout, ALIbool printErrors=1, ALIbool printOrig=1)
static void setCorrelationsInWMatrix()
std::pair< ALIstring, ALIstring > pss
const ALIstring & type() const
static cocoaStatus getCocoaStatus()
static void setCocoaStatus(const cocoaStatus cs)
ALIdouble valueDisplacementByFitting() const
const std::vector< Entry * > & ExtraEntryList() const
ErrorCorrelation * getCorrelation(ALIint ii)
virtual ALIdouble OutputSigmaDimensionFactor() const
static ALIint theMinimumEntryQuality
static void printCentreInOptOFrame(const OpticalObject *opto, const OpticalObject *optoAncestor, ALIFileOut &fileout, ALIbool printErrors=1, ALIbool printOrig=1)
static void dumprm(const CLHEP::HepRotation &rm, const std::string &msg, std::ostream &out=std::cout)
MatrixMeschach * MatrixByMatrix(const MatrixMeschach &mat1, const MatrixMeschach &mat2)
static ALIdouble getMaximumDeviationDerivative()
const std::vector< Entry * > & CoordinateEntryList() const
static OpticalObject * getOptOByName(const ALIstring &opto_name)
--— Find an OptO name in theOptOList and return a pointer to it
static ALIMatrix * AtMatrix
ALIbool readFittedEntriesFromFile()
static ALIstring & ReportFName()
the name of the report File
static void setMaximumDeviationDerivative(ALIdouble val)
static ErrorCorrelationMgr * getInstance()
static Fit & getInstance()
static GlobalOptionMgr * getInstance()
static void setFittableEntries()
static std::vector< Entry * > & EntryList()
static Entry * getEntryByName(const ALIstring &opto_name, const ALIstring &entry_name)
--— Search an Entry name in the Entry* list and return a pointer to it
static double getEntryValue(const Entry *entry)
static FittedEntriesReader * getFittedEntriesReader()
std::vector< double > getRotationAnglesInOptOFrame(const OpticalObject *optoAncestor, const std::vector< Entry * > &entries) const
static OpticalObjectMgr * getInstance()
Get the only instance.
static void dumpEntryAfterFit(ALIFileOut &fileout, const Entry *entry, double entryvalue, ALIbool printErrors=1, ALIbool printOrig=1)
const CLHEP::HepRotation & rmGlob() const
static ALIMatrix * AtWAMatrix
static ALIdouble theFitQualityCut
int getGlobalOptionValue(const ALIstring &sstr, ALIdouble &val)
--— Search a string in theGlobalOptions and return 1 if found
static FitQuality getFitQuality(const ALIbool canBeGood=TRUE)
static void substractLastDisplacementToEntries(const ALIdouble factor)
static ALIint MaxNoFitIterations
static void dumpFittedValues(ALIFileOut &fileout, ALIbool printErrors=1, ALIbool printOrig=1)
static ALIint findEntryFitPosition(const ALIstring &opto_name, const ALIstring &entry_name)
const OpticalObject * parent() const
const pss & getEntry1() const
static ALIMatrix * WMatrix
static std::string GetMeasurementName(int meas)
const ALIdouble getCorrelation() const
static void setFirstTime(ALIbool val)
static ALIdouble thePreviousIterationFitQuality
static ALIMatrix * DaMatrix
static void PropagateErrors()
virtual bool ReadNextEvent()=0
static ALIbool fitNextEvent(ALIuint &nEvent)
static ALIMatrix * yfMatrix
static FittedEntriesManager * getInstance()
void SetCorrelation(ALIint i1, ALIint i2, ALIdouble corr)
const ALIstring longName() const
static void WriteVisualisationFiles()
static ALIint _NoColumnsA
void dumpOptOs(std::ostream &out=std::cout) const
static std::vector< OpticalObject * > & OptOList()
MAT * MatNonConst() const
static void setApply(ALIbool val)
const ALIstring & name() const
static void FillMatricesWithMeasurements()
void ostrDump(std::ostream &fout, const ALIstring &mtext)
static void CreateMatrices()
static void redoMatrices()
static NtupleManager * getInstance()
static void dumpMatrices()
const pss & getEntry2() const
static void dumpEntryCorrelations(ALIFileOut &file)
static CocoaDBMgr * getInstance()
void AddData(ALIuint col, ALIuint lin, ALIdouble data)
static ALIdouble cameraScaleFactor
static ALIbool getFirstTime()
static void deleteMatrices()
static void CheckIfFitPossible()
const CLHEP::Hep3Vector & centreGlob() const
void FillOptObjects(MatrixMeschach *AtWAMatrix)
static int CheckIfMeasIsProportionalToAnother(ALIuint measNo)
void FillFitParameters(MatrixMeschach *AtWAMatrix)
static ALIdouble theRelativeFitQualityCut
static void calculateSimulatedMeasurementsWithOriginalValues()
static ALIstring & MatricesFName()
the name of the File for storing the matrices
const ALIstring & name() const
static void PrintChi2(ALIdouble fit_quality, ALIbool isFirst)
static FitQuality fitParameters(const double daFactor)
OpticalObject * OptOCurrent() const
How EventSelector::AcceptEvent() decides whether to accept an event for output otherwise it is excluding the probing of A single or multiple positive and the trigger will pass if any such matching triggers are PASS or EXCEPTION[A criterion thatmatches no triggers at all is detected and causes a throw.] A single negative with an expectation of FALSE
static ALIFileOut & getInstance(const ALIstring &filename)
std::map< ALIstring, ALIdouble, std::less< ALIstring > > & GlobalOptions()
void Dump(const ALIstring &mtext)
static void addDaMatrixToEntries()
static ALIdouble GetSChi2(ALIbool useDa)
static std::vector< Measurement * > & MeasurementList()
static ALIint theNoFitIterations
static void dumpDimensions(std::ofstream &fout)
static void printRotationAnglesInOptOFrame(const OpticalObject *opto, const OpticalObject *optoAncestor, ALIFileOut &fileout, ALIbool printErrors=1, ALIbool printOrig=1)
const ALIstring & type() const
ALIint getNumberOfCorrelations()
static void FillMatricesWithCalibratedParameters()