Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2025-08-06 08:11:54

0001 #!/usr/bin/env ruby
0002 # -----------------------------------------------------------------------------
0003 # 'MergeCondorFiles.rb'
0004 # Derek Anderson
0005 # 04.22.2023
0006 #
0007 # For merging files in chunks using 'hadd_files.C'.
0008 # (Ideal for condor output!)
0009 # -----------------------------------------------------------------------------
0010 
0011 # modules to use
0012 require 'fileutils'
0013 
0014 # input parameters
0015 in_path = "./individual_files/run6n100pt2040pim_forPtCheck"
0016 in_pref = "sPhenixG4_run6n100pt2040pim_embedScanOnHighPtCheck_embedOnly"
0017 in_suff = "_g4svtx_eval.root"
0018 
0019 # output parameters
0020 out_pref = "sPhenixG4_forPtCheck_embedOnly"
0021 out_suff = "_g4svtxeval.run6n100pt2040pim.d8m5y2023"
0022 out_root = ".root"
0023 out_list = ".list"
0024 
0025 # chunks to copy
0026 chunks = [
0027   "000",
0028   "001",
0029   "002",
0030   "003",
0031   "004",
0032 ]
0033 
0034 # chunk labels
0035 labels = [
0036   "0000s",
0037   "0100s",
0038   "0200s",
0039   "0300s",
0040   "0400s",
0041 ]
0042 
0043 # create output arrays
0044 num_chunks = chunks.size
0045 in_pattern = Array.new(num_chunks)
0046 list_files = Array.new(num_chunks)
0047 root_files = Array.new(num_chunks)
0048 
0049 # loop over chunks
0050 chunks.each_with_index do |chunk, iChunk|
0051 
0052   # create input matching pattern
0053   in_pattern[iChunk] = in_path + "/" + in_pref + chunk + "*" + in_suff
0054   in_pattern[iChunk].gsub!("//", "/")
0055   in_pattern[iChunk].gsub!("..", ".")
0056 
0057   # create output list file
0058   list_files[iChunk] = out_pref + labels[iChunk] + out_suff + out_list
0059   list_files[iChunk].gsub!("//", "/")
0060   list_files[iChunk].gsub!("..", ".")
0061 
0062   # create output root file
0063   root_files[iChunk] = out_pref + labels[iChunk] + out_suff + out_root
0064   root_files[iChunk].gsub!("//", "/")
0065   root_files[iChunk].gsub!("..", ".")
0066 
0067   # create list of files in a chunk
0068   File.open(list_files[iChunk], "w") { |list|
0069     Dir[in_pattern[iChunk]].each do |file|
0070       list.puts file
0071     end
0072   }
0073 
0074   # grab number of files to merge
0075   num_files = Dir[in_pattern[iChunk]].size
0076 
0077   # merge files
0078   system("root -b -q \'MergeFiles.C(#{num_files}, \"#{list_files[iChunk]}\", \"#{root_files[iChunk]}\")\'")
0079 
0080 # end chunk loop
0081 end
0082 
0083 # end -------------------------------------------------------------------------