# MAIN PROGRAM runTraining = True nBackgroundEvents = 55000 nSignalEvents = 55000 # Selections cutBackground = "isSignal==0" cutSignal = "isSignal==1" # Input file and TTree inputFile = TFile("TMVA_tree.root","read") tree = inputFile.Get("TMVA_tree") # Assemble data arrays X_train = buildArraysFromROOT(tree,susyFeaturesNtup,cutBackground,0,nBackgroundEvents,"TRAINING SAMPLE (background only)") W_train = buildArraysFromROOT(tree,susyWeightsNtup,cutBackground,0,nBackgroundEvents,"TRAINING SAMPLE WEIGHTS").reshape(X_train.shape[0]) X_test = buildArraysFromROOT(tree,susyFeaturesNtup,cutBackground,nBackgroundEvents,nBackgroundEvents,"TESTING SAMPLE - background") X_signal = buildArraysFromROOT(tree,susyFeaturesNtup,cutSignal,0,nSignalEvents,"TESTING SAMPLE - signal") # Feature scaling min_max_scaler = preprocessing.MinMaxScaler() X_train = min_max_scaler.fit_transform(X_train) X_test = min_max_scaler.transform(X_test) X_signal = min_max_scaler.transform(X_signal) # Calculate feature means means = np.mean(X_train,0) # Reconstruction error rec_errors_same = reconstructionError(X_train,means)
hyperparameterSets.append([10,0,0.01,0,20,0]) hyperparameterSets.append([10,0,0.01,0,100,0]) hyperparameterSets.append([10,0,0.01,0,200,0]) hyperparameterSets.append([10,0,0.01,0,500,0]) # Input file and TTree inputFile = TFile("TMVA_tree.root","read") tree = inputFile.Get("TMVA_tree") # Selections cutBackground = "isSignal==0" cutSignal = "isSignal==1" # Assemble data arrays # Training X_train_background = buildArraysFromROOT(tree,susyFeaturesNtup,cutBackground,0,nBackgroundEvents,"TRAINING SAMPLE (background)") X_train_signal = buildArraysFromROOT(tree,susyFeaturesNtup,cutSignal,0,nSignalEvents,"TRAINING SAMPLE (signal)") X_train = np.concatenate((X_train_background,X_train_signal),0) # Testing X_test_background = buildArraysFromROOT(tree,susyFeaturesNtup,cutBackground,nBackgroundEvents,nBackgroundEvents+nSignalEvents,"TESTING SAMPLE (background)") X_test_signal = buildArraysFromROOT(tree,susyFeaturesNtup,cutSignal,nBackgroundEvents,nBackgroundEvents+nSignalEvents,"TESTING SAMPLE (signal)") X_test = np.concatenate((X_test_background,X_test_signal),0) # Target/ground truth Y_background = np.zeros(nBackgroundEvents).reshape(nBackgroundEvents,1) Y_signal = np.ones(nSignalEvents).reshape(nSignalEvents,1) Y = np.concatenate((Y_background,Y_signal),0) # Feature scaling - has to be done separately for the autoencoder and the classifier # to avoid contaminating the autoencoder training sample with information about the signal # Autoencoder... scaler_autoencoder = preprocessing.MinMaxScaler()
newTree = newFile.Get("DQEWSTree") # Automatic numbers of event #tcut = TCut(cutSignal) #tree.Draw(">>eventList",tcut) #eventList = TEventList() #eventList = gDirectory.Get("eventList") #nReferenceEvents = referenceTree.GetEntries()/2 #nNewEvents = newTree.GetEntries()/2 nReferenceEvents = 100000 nNewEvents = 100000 # Build data arrays # Reference X_train_ref = buildArraysFromROOT(referenceTree,trackingFeatures,"",0,nReferenceEvents,"TRAINING SAMPLE (reference)") X_test_ref = buildArraysFromROOT(referenceTree,trackingFeatures,"",nReferenceEvents,nReferenceEvents,"TESTING SAMPLE (reference)") # New data X_train_new = buildArraysFromROOT(newTree,trackingFeatures,"",0,nNewEvents,"TRAINING SAMPLE (new)") X_test_new = buildArraysFromROOT(newTree,trackingFeatures,"",nNewEvents,nNewEvents,"TESTING SAMPLE (new)") # Combining signal & background X_train = np.concatenate((X_train_ref,X_train_new),0) X_test = np.concatenate((X_test_ref,X_test_new),0) Y_ref = np.zeros(nReferenceEvents) Y_new = np.ones(nNewEvents) Y = np.concatenate((Y_ref,Y_new),0) # Feature scaling min_max_scaler = preprocessing.MinMaxScaler()
runTraining = True nBackgroundEvents = 50000 nSignalEvents = 50000 # Selections cutBackground = "isSignal==0" cutSignal = "isSignal==1" # Input file and TTree inputFile = TFile("TMVA_tree.root", "read") tree = inputFile.Get("TMVA_tree") # Build data arrays X_train_bg = buildArraysFromROOT(tree, susyFeaturesNtup, cutBackground, 0, nBackgroundEvents, "TRAINING SAMPLE (background)") W_bg = buildArraysFromROOT( tree, susyWeightsNtup, cutBackground, 0, nBackgroundEvents, "EVENT WEIGHTS (background)").reshape(X_train_bg.shape[0]) X_train_sig = buildArraysFromROOT(tree, susyFeaturesNtup, cutSignal, 0, nSignalEvents, "TRAINING SAMPLE (signal)") W_sig = buildArraysFromROOT(tree, susyWeightsNtup, cutSignal, 0, nSignalEvents, "EVENT WEIGHTS (signal)").reshape( X_train_sig.shape[0]) X_train = np.concatenate((X_train_bg, X_train_sig), 0) W = np.concatenate((W_bg, W_sig), 0) X_test_bg = buildArraysFromROOT(tree, susyFeaturesNtup, cutBackground, nBackgroundEvents, nBackgroundEvents, "TESTING SAMPLE (background)")
from CommonTools import reconstructionError,reconstructionErrorByFeature,buildArraysFromROOT,makeMetrics,areaUnderROC from featuresLists import susyFeaturesNtup, susyWeightsNtup ############################################### # MAIN PROGRAM runTraining = False # Input file and TTree inputFile = TFile("TMVA_tree.root","read") tree = inputFile.Get("TMVA_tree") # Full background samples nAllBackgroundEvents = 100000 cutBackground = "isSignal==0" X_train_bg_all = buildArraysFromROOT(tree,susyFeaturesNtup,cutBackground,0,nAllBackgroundEvents,"TRAINING SAMPLE (background)") X_test_bg_all = buildArraysFromROOT(tree,susyFeaturesNtup,cutBackground,nAllBackgroundEvents,nAllBackgroundEvents,"TESTING SAMPLE (background)") # Feature scaling min_max_scaler = preprocessing.MinMaxScaler() X_train_bg_all = min_max_scaler.fit_transform(X_train_bg_all) X_test_bg_all = min_max_scaler.transform(X_test_bg_all) cutList = ["isSignal==1 && massSplit<199", "isSignal==1 && massSplit>199 && massSplit<299", "isSignal==1 && massSplit>299 && massSplit<399", "isSignal==1 && massSplit>399 && massSplit<499", "isSignal==1 && massSplit>499 && massSplit<599", "isSignal==1 && massSplit>599 && massSplit<699"] # Set up the axes for plotting
# MAIN PROGRAM runTraining = True nBackgroundEvents = 50000 nSignalEvents = 50000 # Selections cutBackground = "isSignal==0" cutSignal = "isSignal==1" # Input file and TTree inputFile = TFile("TMVA_tree.root","read") tree = inputFile.Get("TMVA_tree") # Build data arrays X_train_bg = buildArraysFromROOT(tree,susyFeaturesNtup,cutBackground,0,nBackgroundEvents,"TRAINING SAMPLE (background)") W_bg = buildArraysFromROOT(tree,susyWeightsNtup,cutBackground,0,nBackgroundEvents,"EVENT WEIGHTS (background)").reshape(X_train_bg.shape[0]) X_train_sig = buildArraysFromROOT(tree,susyFeaturesNtup,cutSignal,0,nSignalEvents,"TRAINING SAMPLE (signal)") W_sig = buildArraysFromROOT(tree,susyWeightsNtup,cutSignal,0,nSignalEvents,"EVENT WEIGHTS (signal)").reshape(X_train_sig.shape[0]) X_train = np.concatenate((X_train_bg,X_train_sig),0) W = np.concatenate((W_bg,W_sig),0) X_test_bg = buildArraysFromROOT(tree,susyFeaturesNtup,cutBackground,nBackgroundEvents,nBackgroundEvents,"TESTING SAMPLE (background)") X_test_sig = buildArraysFromROOT(tree,susyFeaturesNtup,cutSignal,nSignalEvents,nSignalEvents,"TESTING SAMPLE (signal)") X_test = np.concatenate((X_test_bg,X_test_sig),0) Y_bg = np.zeros(nBackgroundEvents).reshape(nBackgroundEvents,1) Y_sig = np.ones(nSignalEvents).reshape(nSignalEvents,1) Y = np.concatenate((Y_bg,Y_sig),0) # Feature scaling
newTree = newFile.Get("DQEWSTree") # Automatic numbers of event #tcut = TCut(cutSignal) #tree.Draw(">>eventList",tcut) #eventList = TEventList() #eventList = gDirectory.Get("eventList") #nReferenceEvents = referenceTree.GetEntries()/2 #nNewEvents = newTree.GetEntries()/2 nReferenceEvents = 100000 nNewEvents = 100000 # Build data arrays # Reference X_train_ref = buildArraysFromROOT(referenceTree, trackingFeatures, "", 0, nReferenceEvents, "TRAINING SAMPLE (reference)") X_test_ref = buildArraysFromROOT(referenceTree, trackingFeatures, "", nReferenceEvents, nReferenceEvents, "TESTING SAMPLE (reference)") # New data X_train_new = buildArraysFromROOT(newTree, trackingFeatures, "", 0, nNewEvents, "TRAINING SAMPLE (new)") X_test_new = buildArraysFromROOT(newTree, trackingFeatures, "", nNewEvents, nNewEvents, "TESTING SAMPLE (new)") # Combining signal & background X_train = np.concatenate((X_train_ref, X_train_new), 0) X_test = np.concatenate((X_test_ref, X_test_new), 0) Y_ref = np.zeros(nReferenceEvents)
referenceFile = TFile("304008_lb0775-lb0784.root","read") referenceTree = referenceFile.Get("DQEWSTree") newFile = TFile("296942.root","read") newTree = newFile.Get("DQEWSTree") # Automatic numbers of event #tcut = TCut(cutSignal) #tree.Draw(">>eventList",tcut) #eventList = TEventList() #eventList = gDirectory.Get("eventList") #nNewEvents = eventList.GetN()/2 nNewEvents = 100000 nReferenceEvents = nNewEvents # Assemble data arrays X_train = buildArraysFromROOT(referenceTree,trackingFeatures,"",0,nReferenceEvents,"TRAINING SAMPLE (reference only)") X_test = buildArraysFromROOT(referenceTree,trackingFeatures,"",nReferenceEvents,nReferenceEvents,"TESTING SAMPLE - reference") X_new = buildArraysFromROOT(newTree,trackingFeatures,"",0,nNewEvents,"TESTING SAMPLE - new") # Feature scaling min_max_scaler = preprocessing.MinMaxScaler() X_train = min_max_scaler.fit_transform(X_train) X_test = min_max_scaler.transform(X_test) X_new = min_max_scaler.transform(X_new) # Set target equal to input - autoencoder Y_train = X_train print X_train.shape # NEURAL NETWORK TRAINING AND TESTING # Set up neural network