function Catchment_second(Par_fix,Par,forcing,Temp,H3Cat_WE,H3Cat_lanper,H3Catpre_per)
    @eval using Statistics
    @eval using StatsBase
  @eval using LinearAlgebra
include("Prezone_Cs")
# include("Prezone")
# ParCat=Par_fix[1:5]
# ParForest_fix=Par_fix[6:10]
# ParGrassland_fix=Par_fix[11:14]
# ParWetland=Par[15:16]
# ParForest=Par[1]
# ParGrassland=Par[2]
# ParWetland=Par[3]


forcing_pre1 = forcing[:,[4;6:7]]#check
forcing_pre2 = forcing[:,[9;11:12]]#check
forcing_pre3 = forcing[:,[14;16:17]]#check
# forcing_pre4 = forcing[:,[25;27:29]]#check

# tmax=length(Qo)
# WE_pre1 = WE[:,2:4]
# WE_pre2 = WE[:,5:7]
# WE_pre3 = WE[:,8:10]
# WE_pre4 = WE[:,11:13]

H3Cat_WE_pre1 = H3Cat_WE[:,2:4]
H3Cat_WE_pre2 = H3Cat_WE[:,5:7]
H3Cat_WE_pre3 = H3Cat_WE[:,8:10]

# landscape_per_pre1 = landscape_per[:,1]
# landscape_per_pre2 = landscape_per[:,2]
# landscape_per_pre3 = landscape_per[:,3]
# landscape_per_pre4 = landscape_per[:,4]

H3Cat_lanper_pre1 = H3Cat_lanper[:,1]
H3Cat_lanper_pre2 = H3Cat_lanper[:,2]
H3Cat_lanper_pre3 = H3Cat_lanper[:,3]

   if Par[6]>Par[12] && Par[12]>Par[16]
# result1=prezone(ParCat,ParForest,ParGrassland,ParWetland,forcing_pre1,Temp,WE_pre1,landscape_per_pre1)
# result2=prezone(ParCat,ParForest,ParGrassland,ParWetland,forcing_pre2,Temp,WE_pre2,landscape_per_pre2)
# result3=prezone(ParCat,ParForest,ParGrassland,ParWetland,forcing_pre3,Temp,WE_pre3,landscape_per_pre3)
# result4=prezone(ParCat,ParForest,ParGrassland,ParWetland,forcing_pre4,Temp,WE_pre4,landscape_per_pre4)

 triresult1=prezone_Cs(Par_fix,Par,forcing_pre1,Temp,H3Cat_WE_pre1,H3Cat_lanper_pre1)
 triresult2=prezone_Cs(Par_fix,Par,forcing_pre2,Temp,H3Cat_WE_pre2,H3Cat_lanper_pre2)
 triresult3=prezone_Cs(Par_fix,Par,forcing_pre3,Temp,H3Cat_WE_pre3,H3Cat_lanper_pre3)
 # triresult4=prezone_Cs(Par_fix,Par,forcing_pre4,Temp,H3Cat_WE_pre4,H3Cat_lanper_pre4)
 # @eval using Statistics
 # @eval using StatsBase
 # @eval using LinearAlgebra
 #  @eval using LsqFit
 # QQm=result1[1].*Pre_per[1]+result2[1].*Pre_per[2]+result3[1].*Pre_per[3]+result4[1].*Pre_per[4]

 Qm_tri=triresult1[1].*H3Catpre_per[1]+triresult2[1].*H3Catpre_per[2]+triresult3[1].*H3Catpre_per[3]
  Ea_tri=triresult1[3].*H3Catpre_per[1]+triresult2[3].*H3Catpre_per[2]+triresult3[3].*H3Catpre_per[3]

 Con_Qm_tri=(triresult1[1].*triresult1[2].*H3Catpre_per[1]+triresult2[1].*triresult2[2].*H3Catpre_per[2]+
 triresult3[1].*triresult3[2].*H3Catpre_per[3])./Qm_tri

 P_cat=forcing_pre1[:,1].*H3Catpre_per[1]+forcing_pre2[:,1].*H3Catpre_per[2]+forcing_pre3[:,1].*H3Catpre_per[3]

 Qo=forcing[4384:end,5]
 Con_Qo=forcing[4384:end,8]

 Con_Qm=Con_Qm_tri[4384:end]
 P_cat=P_cat[4323:end]
 Qm=Qm_tri[4384:end]
 Ea=Ea_tri[4384:end]
  Ea_mean=mean(Ea)
## for 1988-1997
#  Qo=forcing[6575:end,5]
# Con_Qo=forcing[6575:end,10]
#
# Con_Qm=Con_Qm[6575:end]#from1979:3288;FROM1991:7671;from2000: 10958;from2001-10：11597
# P_cat=P_cat[6544:end]
# Qm=Qm_tri[6575:end]

#  ##for 19998-2007
#  Qo=forcing[6576:end,5]
#  Con_Qo=forcing[6576:end,10]
#
#  Con_Qm=Con_Qm[6576:end]#from1979:3288;FROM1991:7671;from2000: 10958;from2001-10：11597
#  P_cat=P_cat[6545:end]
# Qm=Qm_tri[6576:end]

#for200110-2009
 # Qo=forcing[11597:end,5]
 # Con_Qo=forcing[11597:end,10]
 #
 # Con_Qm=Con_Qm[11597:end]#from1979:3288;FROM1991:7671;from2000: 10958;from2001-10：11597
 # P_cat=P_cat[11628:end-61]
 # Qm=Qm_tri[11597:end]

  ind1=findall(x->x>0,Qm)
  # MSE_Q=msd(Qm[ind1],Qo[ind1])#obj1
  errorup=sum((Qm[ind1]-Qo[ind1]).^2)
  errordown=sum((Qo[ind1].-mean(Qo[ind1])).^2)
  #DE's function: mean((1-NS)^2), 1-NS=up/down,lower, the better
  NS_Q=errorup/errordown#here means not the real NS, is 1-NS


  mm=forcing[4384:end,2]
  ind2=findall(x->x!=0,diff(mm));
  gap1=[0;ind2;length(mm)]
  MonthCon_Qm_H3=zeros(length(gap1)-1,1);
   # day_pre1_4[:,1:3]=pre_daily[:,1:3]
   for j in 1:length(gap1)-1
        index1=gap1[j]+1:gap1[j+1]

        # MonthCon_Qm_H3[j]=mean(Con_Qm_H3[index1])
        MonthCon_Qm_H3[j]=mean(Con_Qm[index1])
     end
     ind3=findall(x->x==15,forcing[4384:end,3])
     Con_Qo=Con_Qo[ind3]
     ind4=findall(x->!isnan(x),Con_Qo)
    # MSE_Con=msd(MonthCon_Qm_H3[ind4],Con_Qo[ind4])
    # error_con=MonthCon_Qm_H3[ind4]-Con_Qo[ind4]
    #   MAE_Con= mean(abs,error_con)
      errorup_Con=sum((MonthCon_Qm_H3[ind4]-Con_Qo[ind4]).^2)
      errordown_Con=sum((Con_Qo[ind4].-mean(Con_Qo[ind4])).^2)
      NS_Con=errorup_Con/errordown_Con
 # RMSE_Q= sqrt(MSE_Q)

 # MSE_LOGQ=msd(log.(Qm[ind1]),log.(Qo[ind1]))#obj2
 errorup=sum((log.(Qm[ind1])-log.(Qo[ind1])).^2)
 errordown=sum((log.(Qo[ind1]).-mean(log.(Qo[ind1]))).^2)
 NS_LOGQ=errorup/errordown
 # RMSE_LOGQ=sqrt(MSE_LOGQ)
#Flow Duration Curve
#Sort the data in descending order
 Qm_order=sort(Qm[ind1],rev = true)
 Qo_order=sort(Qo[ind1],rev = true)
# Calculating the rank
 R_Qm=sortperm(Qm_order,rev = true)
#Calculate the exceedence probability
 exceed_prob_Qm = [R_Qm[i]/length(Qm_order) for i in 1:length(Qm_order)]
 # MSE_FDCLOG=msd(log.(Qm_order),log.(Qo_order))#obj3
 errorup=sum((log.(Qm_order)-log.(Qo_order)).^2)
 errordown=sum((log.(Qo_order).-mean(log.(Qo_order))).^2)
 NS_FDCLOG=errorup/errordown

 # MSE_FDC=msd(Qm_order,Qo_order)#obj4
#Runoff ratio (June_Nov,Dec_May)#obj5
 y=forcing[4323:end,1]
 m=forcing[4323:end,2]
 Qo_r=forcing[4323:end,5]
 Qm_r=Qm_tri[4323:end]
 ind5=findall(x->x==11,m);
 ind55=findall(x->x==12,m);
 y[ind5]=y[ind5].+1;
 y[ind55]=y[ind55].+1;
 m[ind5].=-1;
 m[ind55].=0;

 ind6=findall(x->x>0,diff(y));
 gap=[0;ind6];
 year=y[ind6];
 mean_season_Qo=zeros(length(year),2);
 mean_season_Qm=zeros(length(year),2);
 mean_season_P=zeros(length(year),2);
 for i in 1:length(year)
     index=gap[i]+1:gap[i+1];
     mm=m[index];
     QQo=Qo_r[index];
     QQm=Qm_r[index];
     PP=P_cat[index];
     ind7=findall(x->-1<=x<=4,mm);
     ind8=findall(x->5<=x<=10,mm);
     mean_season_Qo[i,1:2]=[mean(QQo[ind8]),mean(QQo[ind7])];
     mean_season_Qm[i,1:2]=[mean(QQm[ind8]),mean(QQm[ind7])];
     mean_season_P[i,1:2]=[mean(PP[ind8]),mean(PP[ind7])];
 end
 RC_SA_Qm=mean_season_Qm[:,1]./mean_season_P[:,1]
 RC_SW_Qm=mean_season_Qm[:,2]./mean_season_P[:,2]
 RC_SA_Qo=mean_season_Qo[:,1]./mean_season_P[:,1]
 RC_SW_Qo=mean_season_Qo[:,2]./mean_season_P[:,2]
 # MSE_RC_SA=msd(mean_season_Qm[:,1]./mean_season_P[:,1],mean_season_Qo[:,1]./mean_season_P[:,1])
 # MSE_RC_SW=msd(mean_season_Qm[:,2]./mean_season_P[:,2],mean_season_Qo[:,2]./mean_season_P[:,2])
 # MSE_RC=(MSE_RC_SA+MSE_RC_SW)/2#obj5

 RE_RC_SA=mean(abs,RC_SA_Qm-RC_SA_Qo)/mean(RC_SA_Qo)
 RE_RC_SW=mean(abs,RC_SW_Qm-RC_SW_Qo)/mean(RC_SW_Qo)

 errorup_SA=sum((RC_SA_Qm-RC_SA_Qo).^2)
 errordown_SA=sum((RC_SA_Qo.-mean(RC_SA_Qo+RC_SW_Qo)/2).^2)
 errorup_SW=sum((RC_SW_Qm-RC_SW_Qo).^2)
 errordown_SW=sum((RC_SW_Qo.-mean(RC_SA_Qo+RC_SW_Qo)/2).^2)
 NS_RC=(errorup_SA+errorup_SW)/(errordown_SA+errordown_SW)

#Autocorrelation function of daily flow with time lags(from 1 to 100)
 AC_Qm=zeros(100,1)
 AC_Qo=zeros(100,1)
 for k in 1:100
    AC_Qm_up=sum((Qm[1:(length(Qm)-k)].-mean(Qm)).*(Qm[(1+k):length(Qm)].-mean(Qm)))
    AC_Qm[k]=AC_Qm_up/sum((Qm.-mean(Qm)).^2)
    AC_Qo_up=sum((Qo[1:(length(Qo)-k)].-mean(Qo)).*(Qo[(1+k):length(Qo)].-mean(Qo)))
    AC_Qo[k]=AC_Qo_up/sum((Qo.-mean(Qo)).^2)
 end
 # MSE_AC=msd(AC_Qm,AC_Qo)#obj8
 errorup=sum((AC_Qm-AC_Qo).^2)
 errordown=sum((AC_Qo.-mean(AC_Qo)).^2)
 NS_AC=errorup/errordown
else
   NS_Q=3.0
    NS_Con=10.0
   NS_LOGQ=3.0
   NS_FDCLOG=3.0
   # MSE_FDC=3.0
   NS_RC=3.0
   NS_AC=3.0
end


return (NS_Q,NS_LOGQ,NS_FDCLOG,NS_AC,NS_RC,RE_RC_SA,RE_RC_SW,NS_Con,Qm_tri)
 #,MSE_FDCLOG,MSE_RC,MSE_PD,MSE_RLD,MSE_DLD,MSE_AC  MSE_Con,
end
