rm(list=ls())

wrangle <- function(dirX){
  
  require(jsonlite)
  
  files <- list.files(path=paste0(dirX),
                      pattern="*json",
                      full.names=T,
                      recursive=TRUE)
  
  j <- fromJSON(files[1])
  
  #print("---------------------------------------------------------------------------------")
  #print(paste0("Processing jsons to list:"))
  
  L <- length(files)
  
  for(i in 2:L){
    #print(100*(i/L))
    
    f <- fromJSON(files[i])
    j <- c(j,f)
  }
  
  j
  
}
#define a function to recursively add actual run numbers and concatenate lists
recursive_add <- function(run_number){
  run_number <- paste0("000",run_number)
  
  dirX <- paste0("C:/Users/gerhard/Documents/msc-thesis-data/processed/",run_number)
  dat_ <- wrangle(dirX)
  
  for(i in 1:length(dat_)){
  
  dat_[[i]]$RunNumber <- run_number
  }
  gc()
  return(dat_)
}
#add first run to initialize dataset

dirX = "C:/Users/gerhard/Documents/msc-thesis-data/processed/000265309"
dat <- wrangle(dirX)

for(i in 1:length(dat)){
  
  dat[[i]]$RunNumber <- "000265309"
  
}

runs1 <- c("265332","265334","265335")
runs2 <- c("265336","265338","265339")
runs3 <- c("265342","265343","265344")
runs4 <- c("265377","265378","265381")
runs5 <- c("265383","265385","265388")
runs6 <- c("265419","265420","265425")
runs7 <- c("265426","265499")

for(i in runs1){
  print(paste0("RUN: ", i))
  dat <- c(dat,recursive_add(i))
  print(length(dat))
}
## [1] "RUN: 265332"
## [1] 16370
## [1] "RUN: 265334"
## [1] 33711
## [1] "RUN: 265335"
## [1] 63034
names(dat[[1]])
##  [1] "Eta"            "Event"          "P"              "PT"            
##  [5] "Phi"            "RunNumber"      "Theta"          "V0TrackID"     
##  [9] "col0"           "dEdX"           "det0"           "nSigmaElectron"
## [13] "nSigmaPion"     "pdgCode"        "row0"           "track"
Eta <- sapply(dat, `[[`,"Eta")
P <- sapply(dat, `[[`,"P")
PT <- sapply(dat, `[[`,"PT")
Phi <- sapply(dat, `[[`,"Phi")
Theta <- sapply(dat, `[[`,"Theta")
dEdX <- sapply(dat, `[[`,"dEdX")
nSigmaElectron <- sapply(dat, `[[`,"nSigmaElectron")
nSigmaPion <- sapply(dat, `[[`,"nSigmaPion")
pdgCode <- sapply(dat, `[[`,"pdgCode")
RunNumber <-  sapply(dat, `[[`,"RunNumber")

dat <- data.frame(cbind(Eta,P,PT,
                              Phi,Theta,dEdX,
                              nSigmaElectron,nSigmaPion,
                              pdgCode,RunNumber))

dat$particleID <- ifelse(abs(as.numeric(as.character(dat$pdgCode)))==211,"pion","electron")
dat$RunNumber <- as.factor(dat$RunNumber)

for(i in 1:8){
  dat[,i] <- as.numeric(as.character(dat[,i]))
}

dat$particleID <- as.factor(dat$particleID)
require(ggplot2)

ggplot(dat,aes(x=factor(particleID),colour=factor(particleID),fill=factor(particleID)))+
  geom_bar()+
  ggtitle("Number of Electrons and Pions")+facet_wrap(~RunNumber)

#ggplot(dat,aes(x=P,y=PT,colour=factor(particleID),alpha=0.2))+geom_point()+facet_wrap(~RunNumber)
ggplot(dat,aes(x=P,y=dEdX,colour=factor(particleID),alpha=0))+geom_point()+facet_wrap(~RunNumber)

ggplot(dat,aes(x=PT,y=dEdX,colour=factor(particleID),alpha=0))+geom_point()+facet_wrap(~RunNumber)

#ggplot(dat,aes(x=Theta,y=Eta,colour=factor(particleID),alpha=0.2))+geom_point()+facet_wrap(~RunNumber)
# ggplot(dat[dat$nSigmaElectron!=-999,],aes(x=P[dat$nSigmaElectron!=-999],
#                      y=nSigmaElectron[dat$nSigmaElectron!=-999],
#                      colour=factor(particleID[dat$nSigmaElectron!=-999]),
#                      alpha=0.1))+geom_line()+facet_wrap(~RunNumber)
# ggplot(dat[dat$nSigmaPion!=-999,],aes(x=P[dat$nSigmaPion!=-999],
#                      y=nSigmaPion[dat$nSigmaPion!=-999],
#                      colour=factor(particleID[dat$nSigmaPion!=-999]),
#                      alpha=0.1))+geom_line()+facet_wrap(~RunNumber)
# ggplot(dat[dat$nSigmaElectron!=-999,],aes(x=dEdX[dat$nSigmaElectron!=-999],
#                      y=nSigmaElectron[dat$nSigmaElectron!=-999],
#                      colour=factor(particleID[dat$nSigmaElectron!=-999]),
#                      alpha=0.1))+geom_line()+facet_wrap(~RunNumber)
# ggplot(dat[dat$nSigmaPion!=-999,],aes(x=dEdX[dat$nSigmaPion!=-999],
#                      y=nSigmaPion[dat$nSigmaPion!=-999],
#                      colour=factor(particleID[dat$nSigmaPion!=-999]),
#                      alpha=0.1))+geom_line()+facet_wrap(~RunNumber)