def preprocess(self, dst_file): chain = r.TChain("HPS_Event") chain.Add(dst_file) tree = chain.GetTree() from ROOT import HpsEvent hps_event = HpsEvent() branch = chain.SetBranchAddress("Event", r.AddressOf(hps_event)) # Create the file name for the preprocessed ROOT file #output_file_name = root_file.GetName()[str(root_file.GetName()).rindex("/") + 1:-5] output_file_name = "beam_tri_preprocessed_signal.root" # Add variables to the ntuple ft_maker = ft.FlatTupleMaker(output_file_name) ft_maker.add_variable("cluster_0_energy") ft_maker.add_variable("cluster_1_energy") ft_maker.add_variable("cluster_0_x") ft_maker.add_variable("cluster_1_x") ft_maker.add_variable("cluster_0_y") ft_maker.add_variable("cluster_1_y") ft_maker.add_variable("track_0_p") ft_maker.add_variable("track_0_px") ft_maker.add_variable("track_0_py") ft_maker.add_variable("track_0_pz") ft_maker.add_variable("track_0_tanlambda") ft_maker.add_variable("track_0_phi0") ft_maker.add_variable("track_0_omega") ft_maker.add_variable("track_0_d0") ft_maker.add_variable("track_0_z0") ft_maker.add_variable("track_0_charge") ft_maker.add_variable("track_1_p") ft_maker.add_variable("track_1_px") ft_maker.add_variable("track_1_py") ft_maker.add_variable("track_1_pz") ft_maker.add_variable("track_1_tanlambda") ft_maker.add_variable("track_1_phi0") ft_maker.add_variable("track_1_omega") ft_maker.add_variable("track_1_d0") ft_maker.add_variable("track_1_z0") ft_maker.add_variable("track_1_charge") matcher = tcm.TrackClusterMatcher() for entry in xrange(0, chain.GetEntries()): if (entry + 1) % 1000 == 0: print "Event " + str(entry + 1) chain.GetEntry(entry) #if not au.is_good_data_event(hps_event) : continue # Loop through all clusters in the event and find a 'good' pair. # For now, a 'good' pair is defined as two clusters whose cluster # time difference is less than 1.7 ns and greater than -1.6 ns cluster_pair = au.get_good_cluster_pair(hps_event) if not self.is_good_cluster_pair(cluster_pair): continue matcher.find_all_matches(hps_event) tracks = [ matcher.get_track(cluster_pair[0]), matcher.get_track(cluster_pair[1]) ] if (tracks[0] is None) or (tracks[1] is None): continue ft_maker.set_variable_value("cluster_0_energy", cluster_pair[0].getEnergy()) ft_maker.set_variable_value("cluster_1_energy", cluster_pair[1].getEnergy()) ft_maker.set_variable_value("cluster_0_x", cluster_pair[0].getPosition()[0]) ft_maker.set_variable_value("cluster_1_x", cluster_pair[1].getPosition()[0]) ft_maker.set_variable_value("cluster_0_y", cluster_pair[0].getPosition()[1]) ft_maker.set_variable_value("cluster_1_y", cluster_pair[1].getPosition()[1]) ft_maker.set_variable_value( "track_0_p", np.linalg.norm(np.asarray(tracks[0].getMomentum()))) ft_maker.set_variable_value("track_0_px", tracks[0].getMomentum()[0]) ft_maker.set_variable_value("track_0_py", tracks[0].getMomentum()[1]) ft_maker.set_variable_value("track_0_pz", tracks[0].getMomentum()[2]) ft_maker.set_variable_value("track_0_tanlambda", tracks[0].getTanLambda()) ft_maker.set_variable_value("track_0_phi0", tracks[0].getPhi0()) ft_maker.set_variable_value("track_0_omega", tracks[0].getOmega()) ft_maker.set_variable_value("track_0_d0", tracks[0].getD0()) ft_maker.set_variable_value("track_0_z0", tracks[0].getZ0()) ft_maker.set_variable_value("track_0_charge", tracks[0].getCharge()) ft_maker.set_variable_value( "track_1_p", np.linalg.norm(np.asarray(tracks[1].getMomentum()))) ft_maker.set_variable_value("track_1_px", tracks[1].getMomentum()[0]) ft_maker.set_variable_value("track_1_py", tracks[1].getMomentum()[1]) ft_maker.set_variable_value("track_1_pz", tracks[1].getMomentum()[2]) ft_maker.set_variable_value("track_1_tanlambda", tracks[1].getTanLambda()) ft_maker.set_variable_value("track_1_phi0", tracks[1].getPhi0()) ft_maker.set_variable_value("track_1_omega", tracks[1].getOmega()) ft_maker.set_variable_value("track_1_d0", tracks[1].getD0()) ft_maker.set_variable_value("track_1_z0", tracks[1].getZ0()) ft_maker.set_variable_value("track_1_charge", tracks[1].getCharge()) ft_maker.fill() ft_maker.close()
def preprocess(self, dst_file): chain = r.TChain("HPS_Event") chain.Add(dst_file) tree = chain.GetTree() from ROOT import HpsEvent hps_event = HpsEvent() branch = chain.SetBranchAddress("Event", r.AddressOf(hps_event)) # Add variables to the ntuple ft_maker = ft.FlatTupleMaker(self.output_file_name) ft_maker.add_variable("cluster_0_energy") ft_maker.add_variable("cluster_1_energy") ft_maker.add_variable("cluster_0_x") ft_maker.add_variable("cluster_1_x") ft_maker.add_variable("cluster_0_y") ft_maker.add_variable("cluster_1_y") ft_maker.add_variable("track_0_p") ft_maker.add_variable("track_0_px") ft_maker.add_variable("track_0_py") ft_maker.add_variable("track_0_pz") ft_maker.add_variable("track_0_theta") ft_maker.add_variable("track_0_phi0") ft_maker.add_variable("track_0_omega") ft_maker.add_variable("track_0_d0") ft_maker.add_variable("track_0_z0") ft_maker.add_variable("track_1_p") ft_maker.add_variable("track_1_px") ft_maker.add_variable("track_1_py") ft_maker.add_variable("track_1_pz") ft_maker.add_variable("track_1_theta") ft_maker.add_variable("track_1_phi0") ft_maker.add_variable("track_1_omega") ft_maker.add_variable("track_1_d0") ft_maker.add_variable("track_1_z0") ft_maker.add_variable("track_pair_p_sum") matcher = tcm.TrackClusterMatcher() for entry in xrange(0, chain.GetEntries()): if (entry+1)%1000 == 0 : print "Event " + str(entry+1) chain.GetEntry(entry) # Loop through all clusters in the event and find a 'good' pair. # For now, a 'good' pair is defined as two clusters whose cluster # time difference is less than 1.6 ns and greater than -1.6 ns cluster_pair = au.get_good_cluster_pair(hps_event) if len(cluster_pair) != 2 : continue matcher.find_all_matches(hps_event) tracks = [matcher.get_track(cluster_pair[0]), matcher.get_track(cluster_pair[1])] if (tracks[0] is None) or (tracks[1] is None) : continue ft_maker.set_variable_value("cluster_0_energy", cluster_pair[0].getEnergy()) ft_maker.set_variable_value("cluster_1_energy", cluster_pair[1].getEnergy()) ft_maker.set_variable_value("cluster_0_x", cluster_pair[0].getPosition()[0]) ft_maker.set_variable_value("cluster_1_x", cluster_pair[1].getPosition()[0]) ft_maker.set_variable_value("cluster_0_y", cluster_pair[0].getPosition()[1]) ft_maker.set_variable_value("cluster_1_y", cluster_pair[1].getPosition()[1]) ft_maker.set_variable_value("track_0_p", np.linalg.norm(np.asarray(tracks[0].getMomentum()))) ft_maker.set_variable_value("track_0_px", tracks[0].getMomentum()[0]) ft_maker.set_variable_value("track_0_py", tracks[0].getMomentum()[1]) ft_maker.set_variable_value("track_0_pz", tracks[0].getMomentum()[2]) track_0_theta = math.fabs(math.pi/2 - math.acos(te.get_cos_theta(tracks[0]))) ft_maker.set_variable_value("track_0_theta", track_0_theta) ft_maker.set_variable_value("track_0_phi0", tracks[0].getPhi0()) ft_maker.set_variable_value("track_0_omega", tracks[0].getOmega()) ft_maker.set_variable_value("track_0_d0", tracks[0].getD0()) ft_maker.set_variable_value("track_0_z0", tracks[0].getZ0()) ft_maker.set_variable_value("track_1_p", np.linalg.norm(np.asarray(tracks[1].getMomentum()))) ft_maker.set_variable_value("track_1_px", tracks[1].getMomentum()[0]) ft_maker.set_variable_value("track_1_py", tracks[1].getMomentum()[1]) ft_maker.set_variable_value("track_1_pz", tracks[1].getMomentum()[2]) track_1_theta = math.fabs(math.pi/2 - math.acos(te.get_cos_theta(tracks[1]))) ft_maker.set_variable_value("track_1_theta", track_1_theta) ft_maker.set_variable_value("track_1_phi0", tracks[1].getPhi0()) ft_maker.set_variable_value("track_1_omega", tracks[1].getOmega()) ft_maker.set_variable_value("track_1_d0", tracks[1].getD0()) ft_maker.set_variable_value("track_1_z0", tracks[1].getZ0()) p_sum = np.linalg.norm(np.asarray(tracks[0].getMomentum())) + np.linalg.norm(np.asarray(tracks[1].getMomentum())) ft_maker.set_variable_value("track_pair_p_sum", p_sum) ft_maker.fill() ft_maker.close()
def preprocess(self, dst_file): chain = r.TChain("HPS_Event") chain.Add(dst_file) tree = chain.GetTree() from ROOT import HpsEvent hps_event = HpsEvent() branch = chain.SetBranchAddress("Event", r.AddressOf(hps_event)) # Create the file name for the preprocessed ROOT file #output_file_name = root_file.GetName()[str(root_file.GetName()).rindex("/") + 1:-5] output_file_name = "beam_tri_preprocessed_signal.root" # Add variables to the ntuple ft_maker = ft.FlatTupleMaker(output_file_name) ft_maker.add_variable("cluster_0_energy") ft_maker.add_variable("cluster_1_energy") ft_maker.add_variable("cluster_0_x") ft_maker.add_variable("cluster_1_x") ft_maker.add_variable("cluster_0_y") ft_maker.add_variable("cluster_1_y") ft_maker.add_variable("track_0_p") ft_maker.add_variable("track_0_px") ft_maker.add_variable("track_0_py") ft_maker.add_variable("track_0_pz") ft_maker.add_variable("track_0_tanlambda") ft_maker.add_variable("track_0_phi0") ft_maker.add_variable("track_0_omega") ft_maker.add_variable("track_0_d0") ft_maker.add_variable("track_0_z0") ft_maker.add_variable("track_0_charge") ft_maker.add_variable("track_1_p") ft_maker.add_variable("track_1_px") ft_maker.add_variable("track_1_py") ft_maker.add_variable("track_1_pz") ft_maker.add_variable("track_1_tanlambda") ft_maker.add_variable("track_1_phi0") ft_maker.add_variable("track_1_omega") ft_maker.add_variable("track_1_d0") ft_maker.add_variable("track_1_z0") ft_maker.add_variable("track_1_charge") matcher = tcm.TrackClusterMatcher() for entry in xrange(0, chain.GetEntries()): if (entry+1)%1000 == 0 : print "Event " + str(entry+1) chain.GetEntry(entry) #if not au.is_good_data_event(hps_event) : continue # Loop through all clusters in the event and find a 'good' pair. # For now, a 'good' pair is defined as two clusters whose cluster # time difference is less than 1.7 ns and greater than -1.6 ns cluster_pair = au.get_good_cluster_pair(hps_event) if not self.is_good_cluster_pair(cluster_pair) : continue matcher.find_all_matches(hps_event) tracks = [matcher.get_track(cluster_pair[0]), matcher.get_track(cluster_pair[1])] if (tracks[0] is None) or (tracks[1] is None) : continue ft_maker.set_variable_value("cluster_0_energy", cluster_pair[0].getEnergy()) ft_maker.set_variable_value("cluster_1_energy", cluster_pair[1].getEnergy()) ft_maker.set_variable_value("cluster_0_x", cluster_pair[0].getPosition()[0]) ft_maker.set_variable_value("cluster_1_x", cluster_pair[1].getPosition()[0]) ft_maker.set_variable_value("cluster_0_y", cluster_pair[0].getPosition()[1]) ft_maker.set_variable_value("cluster_1_y", cluster_pair[1].getPosition()[1]) ft_maker.set_variable_value("track_0_p", np.linalg.norm(np.asarray(tracks[0].getMomentum()))) ft_maker.set_variable_value("track_0_px", tracks[0].getMomentum()[0]) ft_maker.set_variable_value("track_0_py", tracks[0].getMomentum()[1]) ft_maker.set_variable_value("track_0_pz", tracks[0].getMomentum()[2]) ft_maker.set_variable_value("track_0_tanlambda", tracks[0].getTanLambda()) ft_maker.set_variable_value("track_0_phi0", tracks[0].getPhi0()) ft_maker.set_variable_value("track_0_omega", tracks[0].getOmega()) ft_maker.set_variable_value("track_0_d0", tracks[0].getD0()) ft_maker.set_variable_value("track_0_z0", tracks[0].getZ0()) ft_maker.set_variable_value("track_0_charge", tracks[0].getCharge()) ft_maker.set_variable_value("track_1_p", np.linalg.norm(np.asarray(tracks[1].getMomentum()))) ft_maker.set_variable_value("track_1_px", tracks[1].getMomentum()[0]) ft_maker.set_variable_value("track_1_py", tracks[1].getMomentum()[1]) ft_maker.set_variable_value("track_1_pz", tracks[1].getMomentum()[2]) ft_maker.set_variable_value("track_1_tanlambda", tracks[1].getTanLambda()) ft_maker.set_variable_value("track_1_phi0", tracks[1].getPhi0()) ft_maker.set_variable_value("track_1_omega", tracks[1].getOmega()) ft_maker.set_variable_value("track_1_d0", tracks[1].getD0()) ft_maker.set_variable_value("track_1_z0", tracks[1].getZ0()) ft_maker.set_variable_value("track_1_charge", tracks[1].getCharge()) ft_maker.fill() ft_maker.close()
def preprocess(self, dst_file): chain = r.TChain("HPS_Event") chain.Add(dst_file) tree = chain.GetTree() from ROOT import HpsEvent hps_event = HpsEvent() branch = chain.SetBranchAddress("Event", r.AddressOf(hps_event)) # Add variables to the ntuple ft_maker = ft.FlatTupleMaker(self.output_file_name) ft_maker.add_variable("cluster_0_energy") ft_maker.add_variable("cluster_1_energy") ft_maker.add_variable("cluster_0_x") ft_maker.add_variable("cluster_1_x") ft_maker.add_variable("cluster_0_y") ft_maker.add_variable("cluster_1_y") ft_maker.add_variable("track_0_p") ft_maker.add_variable("track_0_px") ft_maker.add_variable("track_0_py") ft_maker.add_variable("track_0_pz") ft_maker.add_variable("track_0_theta") ft_maker.add_variable("track_0_phi0") ft_maker.add_variable("track_0_omega") ft_maker.add_variable("track_0_d0") ft_maker.add_variable("track_0_z0") ft_maker.add_variable("track_1_p") ft_maker.add_variable("track_1_px") ft_maker.add_variable("track_1_py") ft_maker.add_variable("track_1_pz") ft_maker.add_variable("track_1_theta") ft_maker.add_variable("track_1_phi0") ft_maker.add_variable("track_1_omega") ft_maker.add_variable("track_1_d0") ft_maker.add_variable("track_1_z0") ft_maker.add_variable("track_pair_p_sum") matcher = tcm.TrackClusterMatcher() for entry in xrange(0, chain.GetEntries()): if (entry + 1) % 1000 == 0: print "Event " + str(entry + 1) chain.GetEntry(entry) # Loop through all clusters in the event and find a 'good' pair. # For now, a 'good' pair is defined as two clusters whose cluster # time difference is less than 1.6 ns and greater than -1.6 ns cluster_pair = au.get_good_cluster_pair(hps_event) if len(cluster_pair) != 2: continue matcher.find_all_matches(hps_event) tracks = [ matcher.get_track(cluster_pair[0]), matcher.get_track(cluster_pair[1]) ] if (tracks[0] is None) or (tracks[1] is None): continue ft_maker.set_variable_value("cluster_0_energy", cluster_pair[0].getEnergy()) ft_maker.set_variable_value("cluster_1_energy", cluster_pair[1].getEnergy()) ft_maker.set_variable_value("cluster_0_x", cluster_pair[0].getPosition()[0]) ft_maker.set_variable_value("cluster_1_x", cluster_pair[1].getPosition()[0]) ft_maker.set_variable_value("cluster_0_y", cluster_pair[0].getPosition()[1]) ft_maker.set_variable_value("cluster_1_y", cluster_pair[1].getPosition()[1]) ft_maker.set_variable_value( "track_0_p", np.linalg.norm(np.asarray(tracks[0].getMomentum()))) ft_maker.set_variable_value("track_0_px", tracks[0].getMomentum()[0]) ft_maker.set_variable_value("track_0_py", tracks[0].getMomentum()[1]) ft_maker.set_variable_value("track_0_pz", tracks[0].getMomentum()[2]) track_0_theta = math.fabs(math.pi / 2 - math.acos(te.get_cos_theta(tracks[0]))) ft_maker.set_variable_value("track_0_theta", track_0_theta) ft_maker.set_variable_value("track_0_phi0", tracks[0].getPhi0()) ft_maker.set_variable_value("track_0_omega", tracks[0].getOmega()) ft_maker.set_variable_value("track_0_d0", tracks[0].getD0()) ft_maker.set_variable_value("track_0_z0", tracks[0].getZ0()) ft_maker.set_variable_value( "track_1_p", np.linalg.norm(np.asarray(tracks[1].getMomentum()))) ft_maker.set_variable_value("track_1_px", tracks[1].getMomentum()[0]) ft_maker.set_variable_value("track_1_py", tracks[1].getMomentum()[1]) ft_maker.set_variable_value("track_1_pz", tracks[1].getMomentum()[2]) track_1_theta = math.fabs(math.pi / 2 - math.acos(te.get_cos_theta(tracks[1]))) ft_maker.set_variable_value("track_1_theta", track_1_theta) ft_maker.set_variable_value("track_1_phi0", tracks[1].getPhi0()) ft_maker.set_variable_value("track_1_omega", tracks[1].getOmega()) ft_maker.set_variable_value("track_1_d0", tracks[1].getD0()) ft_maker.set_variable_value("track_1_z0", tracks[1].getZ0()) p_sum = np.linalg.norm(np.asarray( tracks[0].getMomentum())) + np.linalg.norm( np.asarray(tracks[1].getMomentum())) ft_maker.set_variable_value("track_pair_p_sum", p_sum) ft_maker.fill() ft_maker.close()