Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2026-04-07 08:10:32

0001 #!/bin/bash
0002 run=$1
0003 dirStart=${run:0:3}
0004 dirEnd=$(($dirStart + 1))
0005 runSpecies=run3pp
0006 buildTag=ana538_2025p011_v001
0007 dstType=DST_TRKR_TRACKS
0008 directory=DIRECTORY
0009 if [[ "${runSpecies}" == "run3auau" || "${runSpecies}" == "run3pp" ]]; then
0010   directory=/sphenix/lustre01/sphnxpro/production/${runSpecies}/physics/${buildTag}/${dstType}/run_000${dirStart}00_000${dirEnd}00/
0011 fi
0012 if [[ "${runSpecies}" == "run2pp" ]]; then
0013   directory=/sphenix/lustre01/sphnxpro/production/${runSpecies}/physics/${buildTag}/${dstType}/run_000${dirStart}00_000${dirEnd}00/dst/
0014 fi
0015 fileHeader=${dstType}_${runSpecies}_${buildTag}-000${run}-
0016 filePath=${directory}${fileHeader}
0017 totalLargeSegments=$(ls -1 ${filePath}*000.root | wc -l)
0018 totalLargeSegments=$((${totalLargeSegments} - 1))
0019 nTotal=1000
0020 nEvents=1000
0021 nSkips=$((($nTotal / $nEvents) - 1))
0022 
0023 filesPerList=20
0024 
0025 outDir=fileLists
0026 if [[ ! -d ${outDir} ]]; then
0027   mkdir -p ${outDir}
0028 fi
0029 
0030 # Master list file to store all produced list file names
0031 masterList=${outDir}/masterList_run${run}.list
0032 if [[ -f ${masterList} ]]; then
0033   rm ${masterList}
0034 fi
0035 
0036 groupCounter=0
0037 for largeSegment in $(seq 0 $totalLargeSegments)
0038 do
0039   largeSegment=$(printf "%02d" $largeSegment)
0040   fileNames=${filePath}${largeSegment}*.root
0041   nDSTs=$(ls -1 ${fileNames} | wc -l)
0042   nDSTs=$((${nDSTs} - 1))
0043 
0044   fileCounter=0
0045   filesInCurrentGroup=0
0046   outFile=""
0047 
0048   for i in $(seq 0 $nDSTs)
0049   do
0050     smallSegment=$(printf "%03d" $fileCounter)
0051     checkFile=${filePath}${largeSegment}${smallSegment}.root
0052     while [[ ! -f ${checkFile} ]]
0053     do
0054       ((fileCounter++))
0055       smallSegment=$(printf "%03d" $fileCounter)
0056       checkFile=${filePath}${largeSegment}${smallSegment}.root
0057     done
0058 
0059     DST=$(realpath ${checkFile} | awk -F '/' '{print $NF}')
0060 
0061     # Start a new list file every 100 files
0062     if [[ $filesInCurrentGroup -eq 0 ]]; then
0063       groupSegment=$(printf "%04d" $groupCounter)
0064       outFile=${outDir}/${dstType}_${runSpecies}_${buildTag}-000${run}-${groupSegment}.list
0065       if [[ -f ${outFile} ]]; then
0066         rm ${outFile}
0067       fi
0068       echo "Writing output file ${outFile}"
0069       # Append the new list filename to the master list
0070       echo ${outFile} >> ${masterList}
0071     fi
0072 
0073     for j in $(seq 0 $nSkips)
0074     do
0075       startEvent=$(($j*$nEvents))
0076       echo "${directory}${DST}" >> ${outFile}
0077     done
0078 
0079     ((fileCounter++))
0080     ((filesInCurrentGroup++))
0081 
0082     # Reset group counter after every 10 files
0083     if [[ $filesInCurrentGroup -eq $filesPerList ]]; then
0084       filesInCurrentGroup=0
0085       ((groupCounter++))
0086     fi
0087 
0088   done
0089 done
0090 
0091 echo "Master list written to ${masterList}"