BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
TofCalib.cxx
Go to the documentation of this file.
1#include "TofCalib.h"
2#include <fstream>
3#include <ios>
4#include <iostream>
5
6using namespace CLHEP;
7
9 F = HepMatrix( Npar, Npar, 0 );
10 Y = HepVector( Npar, 0 );
11 X = HepVector( Npar, 0 );
12 funcs = HepVector( Npar, 0 );
13 return;
14}
15
16void TofCalib::calculate( RecordSet*& data, unsigned int icounter ) {
17
18 std::cout << setiosflags( ios::left ) << setw( 10 ) << icounter << setw( 8 ) << data->size()
19 << setw( 30 ) << name() << std::endl;
20
21 if ( data->size() <= 0 ) { X = HepVector( Npar, 1.0 ); }
22 else
23 {
24 std::vector<Record*>::iterator iter = data->begin();
25 for ( ; iter != data->end(); iter++ )
26 {
27 calculate_funcs( ( *iter ) );
28 for ( int i = 0; i < F.num_col(); i++ )
29 {
30 for ( int j = 0; j < F.num_col(); j++ ) { F[i][j] += funcs[i] * funcs[j]; }
31 }
32
33 calculate_y( ( *iter ) );
34 for ( int k = 0; k < Y.num_row(); k++ ) { Y[k] += y * funcs[k]; }
35 }
36
37 // if( abs(F.determinant())>0. ) {
38 if ( abs( F[0][0] ) > 0. ) { X = ( qr_solve( F, Y ) ); }
39 else
40 {
41 X = HepVector( Npar, 1.0 ); // one side has no data
42 }
43 }
44
45 m_result.push_back( X );
46
48
49 return;
50}
51
52void TofCalib::fillTxt( const char* file ) {
53 std::ofstream out( file, ios::out );
54 if ( out )
55 {
56 std::vector<HepVector>::iterator it;
57 for ( it = m_result.begin(); it != m_result.end(); it++ )
58 {
59 for ( int i = 0; i < ( *it ).num_row(); i++ ) { out << ( *it )[i] << " "; }
60 out << std::endl;
61 }
62 out.close();
63 }
64 else
65 {
66 cerr << "error when open file " << file << " for write in " << name() << "::fillTxt()"
67 << std::endl;
68 cout << "print all parameters to srceen: in total " << m_result.size() << " items"
69 << std::endl;
70 std::vector<HepVector>::iterator it;
71 for ( it = m_result.begin(); it != m_result.end(); it++ )
72 {
73 for ( int i = 0; i < ( *it ).num_row(); i++ ) { cout << ( *it )[i] << " "; }
74 cout << std::endl;
75 }
76 }
77
78 return;
79}
char * file
Definition DQA_TO_DB.cxx:16
TTree * data
EvtStreamInputIterator< typename Generator::result_type > iter(Generator gen, int N=0)
std::vector< Record * > RecordSet
Definition TofDataSet.h:97
HepVector funcs
Definition TofCalib.h:41
std::vector< HepVector > m_result
Definition TofCalib.h:44
virtual void calculate_y(const Record *r)=0
int Npar
Definition TofCalib.h:37
virtual void calculate(RecordSet *&data, unsigned int icounter)
Definition TofCalib.cxx:16
void fillTxt(const char *file)
Definition TofCalib.cxx:52
HepMatrix F
Definition TofCalib.h:38
void reset()
Definition TofCalib.cxx:8
virtual const string & name() const
Definition TofCalib.h:27
virtual void updateData(RecordSet *&data)=0
HepVector Y
Definition TofCalib.h:40
virtual void calculate_funcs(const Record *r)=0
HepVector X
Definition TofCalib.h:39
double y
Definition TofCalib.h:42