15 #include "TMatrixDSym.h"
32 int main(
int argc,
char **argv)
36 using namespace JMATH;
48 JParser<> zap(
"Program to calculate time offsets from FitL1dtSlices output");
50 zap[
'f'] =
make_field(inputFile,
"input file") =
"nall.txt";
51 zap[
'a'] =
make_field(detectorFile,
"detector file");
52 zap[
'r'] =
make_field(idu_ref,
"reference DU set to t=0") = 0;
53 zap[
'm'] =
make_field(min_cont,
"minimal content" ) = 5;
57 if (zap.
read(argc, argv) != 0) {
61 catch(
const exception &error) {
62 FATAL(error.what() << endl);
70 catch(
const JException& error) {
77 TMatrixD variance(1,1);
78 TMatrixD combimatrix(1,number_of_strings);
80 int du1,du2,du1_name,du2_name,nei;
81 int duarr[number_of_strings];
82 double off1,off2,offset,max1,max2;
85 combimatrix(0,idu_ref)=1;
89 std::ifstream
file(inputFile);
92 while (file >> du1 >> du2 >> off1 >> off2 >> offset >> max1 >> max2 >> du1_name >> du2_name >> nei)
94 if (max1 > min_cont and max2 > min_cont and max1 < 50. and max2 < 50.){
96 combimatrix.ResizeTo(npairs+1,number_of_strings);
97 combimatrix(npairs,du1) = +1;
98 combimatrix(npairs,du2) = -1;
100 means.ResizeTo(npairs+1);
101 means[npairs]=offset;
118 TMatrixD combimatrix_T(number_of_strings,npairs);
120 combimatrix_T.Transpose(combimatrix);
122 TMatrixD pseudo = combimatrix_T * combimatrix;
124 TMatrixD pseudoinverse = pseudo.Invert();
126 TVectorD offsets = pseudoinverse * combimatrix_T * means;
128 TVectorD residues = (combimatrix * offsets) - means;
130 std::cout.precision(3);
132 for (
int ii=0;ii<number_of_strings;ii++){
133 cout << duarr[ii] <<
" " << offsets[ii] << endl;
137 for (
int ii=0;ii<npairs;ii++){
138 sumres+=fabs(residues[ii]);
140 cout << -1 <<
" " << sumres/double(npairs) << endl;
Utility class to parse command line options.
int main(int argc, char *argv[])
then usage $script[< detector identifier >< run range >]< QA/QCfile > nExample script to produce data quality plots nWhen a detector identifier and run range are data are downloaded from the database nand subsequently stored in the given QA QC file
Data structure for detector geometry and calibration.
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
static const JStringCounter getNumberOfStrings
Function object to count unique strings.
int read(const int argc, const char *const argv[])
Parse the program's command line options.
void load(const std::string &file_name, JDetector &detector)
Load detector from input file.
Utility class to parse command line options.
do set_variable DETECTOR_TXT $WORKDIR detector
KM3NeT DAQ constants, bit handling, etc.