#!python
#
#    JKS - Measurement database system
#    Copyright (C) 2013-2024  Christoph Lehner (christoph.lehner@ur.de, https://github.com/lehner/jks)
#
#    This program is free software; you can redistribute it and/or modify
#    it under the terms of the GNU General Public License as published by
#    the Free Software Foundation; either version 2 of the License, or
#    (at your option) any later version.
#
#    This program is distributed in the hope that it will be useful,
#    but WITHOUT ANY WARRANTY; without even the implied warranty of
#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#    GNU General Public License for more details.
#
#    You should have received a copy of the GNU General Public License along
#    with this program; if not, write to the Free Software Foundation, Inc.,
#    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
import jks, sys, os, math, glob
if len(sys.argv) < 5 or len(sys.argv) % 2 == 0:
    print("%s out inC inS1 err1_tag [ inS2 err2_tag ... ]" % sys.argv[0])
    sys.exit(0)
N=(len(sys.argv) - 5)/2 + 1
fno=sys.argv[1]
finC=sys.argv[2]

finS=[ sys.argv[3+2*i] for i in range(N) ]
err_tag=[ sys.argv[4+2*i] for i in range(N) ]

res=jks.resamples()

jiC=jks.resamples(finC)

jiS=[ jks.resamples(s) for s in finS ]

keys=jiC.keys()
for jis in jiS:
    keys=list(set(keys).intersection(jis.keys()))

for k in keys:
    jk=jiC.get(k)

    for i in range(N):
        jk = jk.addvar(err_tag[i],jiS[i].get(k).mean(),"Systematic error from %s" % str(sys.argv))

    res.add(k,jk)

res.compress()

res.save(fno)

