def chisq_calc(p,T,I,Ierr):
    Icalc=meanfield.orderparameter(p,T)
    dof=I.shape[0]-p.shape[0]
    print 'dof',dof
    chisq=(I-Icalc)*(I-Icalc)/dof/Ierr/Ierr
    return chisq
def chisq_calc(p, T, I, Ierr):
    Icalc = meanfield.orderparameter(p, T)
    dof = I.shape[0] - p.shape[0]
    print 'dof', dof
    chisq = (I - Icalc) * (I - Icalc) / dof / Ierr / Ierr
    return chisq
##    print 'read '
##    print 'temp ',temp
##    print 'I',I
##    print Ierr
##    print 'monlist ' ,monlist
##    print len(I),len(monlist)
    T,I,Ierr=simple_combine.simple_combine(temp,I,Ierr,monlist)
    #print temp.shape, I.shape, Ierr.shape
    #pylab.errorbar(temp,I,Ierr,marker='s',linestyle='None',mfc='red',mec='red',ecolor=None)
    p0=[copy.deepcopy(I[0]),84.0,.33333,copy.deepcopy(I[-1])]
    tmin=5
    tmax=100
    #p=[Tn Jt Nf Bk]
    p0=[88.85,.9844,1975.0,4068.0]
    if 0:
        Icalc1=meanfield.orderparameter(p0,T)
        pylab.plot(T,Icalc1,marker='s',linestyle='None')
        pylab.show()

    Trange=N.intersect1d(N.where(T>tmin)[0],N.where(T<tmax)[0])
    oparam=scipy.odr.Model(meanfield.orderparameter)
    mydata=scipy.odr.RealData(T[Trange],I[Trange],sx=None,sy=Ierr)
    myodr = scipy.odr.ODR(mydata, oparam, beta0=p0)
    myoutput=myodr.run()
    myoutput.pprint()
    pfit=myoutput.beta
    #pfit = leastsq(residuals, p0, args=(T[Trange],I[Trange],Ierr[Trange]))

    mychi=chisq_calc(pfit,T[Trange],I[Trange],Ierr[Trange]).sum()
    print 'pfit=',pfit
    print 'chisq=',mychi
    ##    print 'read '
    ##    print 'temp ',temp
    ##    print 'I',I
    ##    print Ierr
    ##    print 'monlist ' ,monlist
    ##    print len(I),len(monlist)
    T, I, Ierr = simple_combine.simple_combine(temp, I, Ierr, monlist)
    #print temp.shape, I.shape, Ierr.shape
    #pylab.errorbar(temp,I,Ierr,marker='s',linestyle='None',mfc='red',mec='red',ecolor=None)
    p0 = [copy.deepcopy(I[0]), 84.0, .33333, copy.deepcopy(I[-1])]
    tmin = 5
    tmax = 100
    #p=[Tn Jt Nf Bk]
    p0 = [88.85, .9844, 1975.0, 4068.0]
    if 0:
        Icalc1 = meanfield.orderparameter(p0, T)
        pylab.plot(T, Icalc1, marker='s', linestyle='None')
        pylab.show()

    Trange = N.intersect1d(N.where(T > tmin)[0], N.where(T < tmax)[0])
    oparam = scipy.odr.Model(meanfield.orderparameter)
    mydata = scipy.odr.RealData(T[Trange], I[Trange], sx=None, sy=Ierr)
    myodr = scipy.odr.ODR(mydata, oparam, beta0=p0)
    myoutput = myodr.run()
    myoutput.pprint()
    pfit = myoutput.beta
    #pfit = leastsq(residuals, p0, args=(T[Trange],I[Trange],Ierr[Trange]))

    mychi = chisq_calc(pfit, T[Trange], I[Trange], Ierr[Trange]).sum()
    print 'pfit=', pfit
    print 'chisq=', mychi