--- /dev/null
+LikefunMulti <-
+function(ParamPool, InputPool)
+{
+
+NoneZeroLength=InputPool[[4]]
+AlphaIn=ParamPool[1]
+BetaIn=ParamPool[2:(1+NoneZeroLength)]
+PInMat=InputPool[[9]]
+#PInAll=c(1-sum(PIn),PIn)
+ZIn=InputPool[[3]]
+Input=InputPool[[2]]
+InputSP=InputPool[[1]]
+RIn=InputPool[[5]]
+RInSP=InputPool[[6]]
+NumIn=InputPool[[7]]
+AllParti=InputPool[[8]]
+#PInMat=matrix(rep(1,nrow(Input)),ncol=1)%*%matrix(PInAll,nrow=1)
+##Function here
+FList=sapply(1:nrow(AllParti),function(i)sapply(1:nlevels(as.factor(AllParti[i,])),
+ function(j)f0(do.call(cbind,InputSP[AllParti[i,]==j]),AlphaIn, BetaIn,
+ do.call(cbind,RInSP[AllParti[i,]==j]), NumIn, log=T)),
+ simplify=F)
+FPartiLog=sapply(FList,rowSums)
+#FMat=exp(FPartiLog)
+FMat=FPartiLog
+-sum(ZIn*(FMat+log(PInMat)))
+}
+