set.seed(1234)
M <- 1000000
theta <- runif(M, 0, 360)
beta1 <- 0.32
beta2 <- 0.938
phi <- 3
xi <- 0
s1 <- theta
s2 <- theta + 180
cosD <- function(x) cos(pi * x / 180)
sinD <- function(x) sin(pi * x / 180)
lambda1 <- beta1 * cos(theta/phi)^2
lambda2 <- beta2 * cos(theta/phi)^2
experiment <- function(a, b){
Aa1 <- ifelse(abs(cosD(a - s1)) > lambda1, sign(cosD(a - s1)), 0)
Aa2 <- ifelse(abs(cosD(a - s1)) < lambda2, sign(sinD(a - s1 + xi)), 0)
Bb1 <- ifelse(abs(cosD(b - s2)) > lambda1, sign(cosD(b - s2)), 0)
Bb2 <- ifelse(abs(cosD(b - s2)) < lambda2, sign(sinD(b - s2 + xi)), 0)
products <- c(Aa1*Bb1, Aa2*Bb2)
rate <- sum(abs(products))
corr <- sum(products)/rate
list(rate = rate, corr = corr)
}
rates <- rep(0, 181)
corrs <- rep(0, 181)
a <- 0
i <- 1
for (b in 0:180) {results <- experiment(a, b); rates[i] <- results$rate; corrs[i] <- results$corr; i <- i + 1}
plot(0:180, rates / (2 * M), type = "l", ylim = c(0, 1))

plot(0:180, corrs, type = "l")
