## Analysis of Christensen et al. experiment using Graft's data-files
##
## Christensen, B.G., McCusker, K.T., Altepeter, J.B., Calkins, B., 
## Lim, C.C.W., Gisin, N., and Kwiat, P.G. (2013),
## "Detection-Loophole-Free Test of Quantum Nonlocality, and Applications", 
## Phys. Rev. Lett. 111, 130406.

## Donald A. Graft (2014)
## "Analysis of the Christensen et al. Clauser-Horne 
##      (CH)-Inequality-Based Test of Local Realism",
## http://arxiv.org/abs/1409.5158
## https://pubpeer.com/publications/E0F8384FC19A6034E86D516D03BB38



## Step 1: save (small) significant part of data in binary "RData" files

## Christensen's optimal delays, less half of coincidence window

## The file "summary.csv", created in Step 0, 
## contains the names of the data-files and their lengths

## Note: data1.txt was earlier renamed to data01.txt, ...
##      ... data9.txt to data09.txt


summary <- read.csv("summary.csv", stringsAsFactors = FALSE)
Names <- summary$Name

lengths <- summary$length



windowDiamMS <- 2.4 * 10^{-6}
delayA <- (2.65 * 10^{-6} - windowDiamMS/2) / (156.25 * 10^{-12})
delayB <- (2.525 * 10^{-6} - windowDiamMS/2) / (156.25 * 10^{-12})

delayA <- as.integer(round(delayA))
delayB <- as.integer(round(delayB))

Window <- windowDiamMS / (156.25 * 10^{-12})
Window <- as.integer(round(Window))



for (i in 1:20) {

    Name <- Names[i]
    cat("\n", "\n", Name)

    x <- read.table(Name, nrow = lengths[i], stringsAsFactors = FALSE, 
            col.names = c("time", "setting", "event"), colClasses = c("double", "integer", "integer"))
        
    Events <- x$event
    Settings <- x$setting
    Times <- as.double(x$time)

    Times[Events == 1] <- Times[Events == 1] - delayA
    Times[Events == 2] <- Times[Events == 2] - delayB

    Events[Events == 15] <- 0

    X <- data.frame(Times = Times, Settings = Settings, Events = Events)
    rm(x)
    Ordering <- order(Times, Events)
    Events <- Events[Ordering]
    Settings <- Settings[Ordering]

    Diffs <- diff(Times)
    Times <- Times[-length(Events)]
    NextEvent <- Events[-1]
    Events <- Events[-length(Events)]
    Settings <- Settings[-length(Events)]



    nWindows <- integer(4)
    Set <- c(11, 12, 21, 22)
    for(i in 1:4) nWindows[i] <- sum(Events == 0 & Settings == Set[i])

    Keep <- !(Events == 0 & NextEvent == 0)

    Events <- Events[Keep]
    Times <- Times[Keep]
    Diffs <- Diffs[Keep]
    Settings <- Settings[Keep]


    OutFile <- paste(substr(Name, 1, 6), ".RData", sep ="")

    save(Times, Diffs, Settings, Events, nWindows, Window, Name, Set, file = OutFile)
    cat("\n", OutFile)

}
## 
##  
##  data01.txt
##  data01.RData
##  
##  data02.txt
##  data02.RData
##  
##  data03.txt
##  data03.RData
##  
##  data04.txt
##  data04.RData
##  
##  data05.txt
##  data05.RData
##  
##  data06.txt
##  data06.RData
##  
##  data07.txt
##  data07.RData
##  
##  data08.txt
##  data08.RData
##  
##  data09.txt
##  data09.RData
##  
##  data10.txt
##  data10.RData
##  
##  data11.txt
##  data11.RData
##  
##  data12.txt
##  data12.RData
##  
##  data13.txt
##  data13.RData
##  
##  data14.txt
##  data14.RData
##  
##  data15.txt
##  data15.RData
##  
##  data16.txt
##  data16.RData
##  
##  data17.txt
##  data17.RData
##  
##  data18.txt
##  data18.RData
##  
##  data19.txt
##  data19.RData
##  
##  data20.txt
##  data20.RData