Back to home page

EIC code displayed by LXR

 
 

    


Warning, /detector_benchmarks/benchmarks/tracking_performances_dis/Snakefile is written in an unsupported language. File is not indexed.

0001 import os
0002 
0003 # Process the generated HepMC files through the simulation
0004 rule trk_dis_sim:
0005     input:
0006         warmup="warmup.edm4hep.root",
0007         geometry_lib=find_epic_libraries(),
0008     output:
0009         "sim_output/tracking_performances_dis/{DETECTOR_CONFIG}/pythia8NCDIS_{EBEAM}x{PBEAM}_minQ2={MINQ2}_beamEffects_xAngle=-0.025_hiDiv_{INDEX}.edm4hep.root",
0010     params:
0011         N_EVENTS=200,
0012         EBEAM=lambda wildcards: wildcards.EBEAM,
0013         INDEX=lambda wildcards: wildcards.INDEX,
0014         PBEAM=lambda wildcards: wildcards.PBEAM,
0015         MINQ2=lambda wildcards: wildcards.MINQ2,
0016         SEED=lambda wildcards: "1" + wildcards.INDEX,
0017         DETECTOR_PATH=os.environ["DETECTOR_PATH"],
0018         DETECTOR_CONFIG=lambda wildcards: wildcards.DETECTOR_CONFIG,
0019         DD4HEP_HASH=get_spack_package_hash("dd4hep"),
0020         NPSIM_HASH=get_spack_package_hash("npsim"),
0021     cache: True
0022     singularity: EIC_SINGULARITY_CONTAINER,
0023     shell:
0024         """
0025 npsim \
0026   --runType batch \
0027   --part.minimalKineticEnergy 1000*GeV  \
0028   --random.seed {params.SEED} \
0029   --filter.tracker edep0 \
0030   -v WARNING \
0031   --numberOfEvents {params.N_EVENTS} \
0032   --compactFile {params.DETECTOR_PATH}/{params.DETECTOR_CONFIG}.xml \
0033   --inputFiles root://dtn-eic.jlab.org//volatile/eic/EPIC/EVGEN/DIS/NC/{params.EBEAM}x{params.PBEAM}/minQ2={params.MINQ2}/pythia8NCDIS_{params.EBEAM}x{params.PBEAM}_minQ2={params.MINQ2}_beamEffects_xAngle=-0.025_hiDiv_vtxfix_{params.INDEX}.hepmc3.tree.root \
0034   --outputFile {output}
0035 """
0036 
0037 # Process the files produced in the previous step through EICRecon
0038 rule trk_dis_reco:
0039     input:
0040         sim="sim_output/tracking_performances_dis/{DETECTOR_CONFIG}/pythia8NCDIS_{EBEAM}x{PBEAM}_minQ2={MINQ2}_beamEffects_xAngle=-0.025_hiDiv_{INDEX}.edm4hep.root",
0041         warmup="warmup.edm4hep.root",
0042     output:
0043         "sim_output/tracking_performances_dis/{DETECTOR_CONFIG}/pythia8NCDIS_{EBEAM}x{PBEAM}_minQ2={MINQ2}_beamEffects_xAngle=-0.025_hiDiv_{INDEX}.edm4eic.root",
0044     params:
0045         DETECTOR_CONFIG=lambda wildcards: wildcards.DETECTOR_CONFIG,
0046         EBEAM=lambda wildcards: wildcards.EBEAM,
0047         PBEAM=lambda wildcards: wildcards.PBEAM,
0048         MINQ2=lambda wildcards: wildcards.MINQ2,
0049         INDEX=lambda wildcards: wildcards.INDEX,
0050         EICRECON_HASH=get_spack_package_hash("eicrecon"),
0051     cache: True
0052     singularity: EIC_SINGULARITY_CONTAINER,
0053     shell:
0054         """
0055 set -m # monitor mode to prevent lingering processes
0056 exec env DETECTOR_CONFIG={wildcards.DETECTOR_CONFIG} \
0057   eicrecon {input.sim} -Ppodio:output_file={output} \
0058   -Ppodio:output_collections=MCParticles,ReconstructedChargedParticles,ReconstructedTruthSeededChargedParticles,CentralCKFTrackAssociations,CentralCKFTruthSeededTrackAssociations,CentralTrackVertices,SecondaryVerticesHelix
0059 """
0060 
0061 # Process the files -- either from the campaign or local running -- through the analysis script
0062 rule dis_analysis:
0063     input:
0064         script_trk=workflow.source_path("analysis/trk_dis_analysis.cxx"),
0065         script_vtx=workflow.source_path("analysis/vtx_dis_analysis.cxx"),
0066         data="sim_output/tracking_performances_dis/{DETECTOR_CONFIG}/{PREFIX}pythia8NCDIS_{EBEAM}x{PBEAM}_minQ2={MINQ2}_beamEffects_xAngle=-0.025_hiDiv_{INDEX}.edm4eic.root",
0067     output:
0068         config_trk="results/tracking_performances_dis/{DETECTOR_CONFIG}/{PREFIX}pythia8NCDIS_{EBEAM}x{PBEAM}_minQ2={MINQ2}_{INDEX}/config.json",
0069         hists_trk="results/tracking_performances_dis/{DETECTOR_CONFIG}/{PREFIX}pythia8NCDIS_{EBEAM}x{PBEAM}_minQ2={MINQ2}_{INDEX}/hists.root",
0070         config_vtx="results/vertexing_performances_dis/{DETECTOR_CONFIG}/{PREFIX}pythia8NCDIS_{EBEAM}x{PBEAM}_minQ2={MINQ2}_{INDEX}/config.json",
0071         hists_vtx="results/vertexing_performances_dis/{DETECTOR_CONFIG}/{PREFIX}pythia8NCDIS_{EBEAM}x{PBEAM}_minQ2={MINQ2}_{INDEX}/hists.root",
0072     wildcard_constraints:
0073         PREFIX= ".*",
0074         EBEAM=r"\d+",
0075         PBEAM=r"\d+",
0076         MINQ2=r"\d+",
0077         INDEX=r"\d+",
0078     singularity: EIC_SINGULARITY_CONTAINER,
0079     shell:
0080         """
0081 cat > {output.config_trk} <<EOF
0082 {{
0083   "rec_file": "{input.data}",
0084   "detector": "{wildcards.DETECTOR_CONFIG}",
0085   "ebeam": {wildcards.EBEAM},
0086   "pbeam": {wildcards.PBEAM},
0087   "Min_Q2": {wildcards.MINQ2},
0088   "output_prefix": "$(dirname "{output.hists_trk}")/hists"
0089 }}
0090 EOF
0091 root -l -b -q '{input.script_trk}("{output.config_trk}")'
0092 
0093 cat > {output.config_vtx} <<EOF
0094 {{
0095   "rec_file": "{input.data}",
0096   "detector": "{wildcards.DETECTOR_CONFIG}",
0097   "ebeam": {wildcards.EBEAM},
0098   "pbeam": {wildcards.PBEAM},
0099   "Min_Q2": {wildcards.MINQ2},
0100   "output_prefix": "$(dirname "{output.hists_vtx}")/hists"
0101 }}
0102 EOF
0103 root -l -b -q '{input.script_vtx}("{output.config_vtx}")'
0104 """
0105 
0106 #Merge all the files produced in the previous step
0107 rule dis_combine:
0108     input:
0109         lambda wildcards: [f"results/tracking_performances_dis/{wildcards.DETECTOR_CONFIG}/{wildcards.PREFIX}pythia8NCDIS_{wildcards.EBEAM}x{wildcards.PBEAM}_minQ2={wildcards.MINQ2}_{ix}/hists.root" for ix in range(1,int(wildcards.NUM_FILES)+1)],
0110         lambda wildcards: [f"results/vertexing_performances_dis/{wildcards.DETECTOR_CONFIG}/{wildcards.PREFIX}pythia8NCDIS_{wildcards.EBEAM}x{wildcards.PBEAM}_minQ2={wildcards.MINQ2}_{ix}/hists.root" for ix in range(1,int(wildcards.NUM_FILES)+1)],
0111     output:
0112         config_trk="results/tracking_performances_dis/{DETECTOR_CONFIG}/{PREFIX}pythia8NCDIS_{EBEAM}x{PBEAM}_minQ2={MINQ2}_combined_{NUM_FILES}/config.json",
0113         hists_trk="results/tracking_performances_dis/{DETECTOR_CONFIG}/{PREFIX}pythia8NCDIS_{EBEAM}x{PBEAM}_minQ2={MINQ2}_combined_{NUM_FILES}/hists.root",
0114         config_vtx="results/vertexing_performances_dis/{DETECTOR_CONFIG}/{PREFIX}pythia8NCDIS_{EBEAM}x{PBEAM}_minQ2={MINQ2}_combined_{NUM_FILES}/config.json",
0115         hists_vtx="results/vertexing_performances_dis/{DETECTOR_CONFIG}/{PREFIX}pythia8NCDIS_{EBEAM}x{PBEAM}_minQ2={MINQ2}_combined_{NUM_FILES}/hists.root",
0116     wildcard_constraints:
0117         PREFIX= ".*",
0118         EBEAM=r"\d+",
0119         PBEAM=r"\d+",
0120         MINQ2=r"\d+",
0121         NUM_FILES=r"\d+",
0122     singularity: EIC_SINGULARITY_CONTAINER,
0123     shell:
0124         """
0125 cat > {output.config_trk} <<EOF
0126 {{
0127   "hists_file": "{output.hists_trk}",
0128   "detector": "{wildcards.DETECTOR_CONFIG}",
0129   "ebeam": {wildcards.EBEAM},
0130   "pbeam": {wildcards.PBEAM},
0131   "Min_Q2": {wildcards.MINQ2},
0132   "nfiles": {wildcards.NUM_FILES},
0133   "output_prefix": "$(dirname "{output.hists_trk}")/plots"
0134 }}
0135 EOF
0136 hadd {output.hists_trk} {input}
0137 
0138 cat > {output.config_vtx} <<EOF
0139 {{
0140   "hists_file": "{output.hists_vtx}",
0141   "detector": "{wildcards.DETECTOR_CONFIG}",
0142   "ebeam": {wildcards.EBEAM},
0143   "pbeam": {wildcards.PBEAM},
0144   "Min_Q2": {wildcards.MINQ2},
0145   "nfiles": {wildcards.NUM_FILES},
0146   "output_prefix": "$(dirname "{output.hists_vtx}")/plots"
0147 }}
0148 EOF
0149 hadd {output.hists_vtx} {input}
0150 """
0151 
0152 #Process the merged file through the plotting script
0153 rule trk_dis_plots:
0154     input:
0155         script=workflow.source_path("analysis/trk_dis_plots.cxx"),
0156         config="results/tracking_performances_dis/{DETECTOR_CONFIG}/{PREFIX}pythia8NCDIS_{EBEAM}x{PBEAM}_minQ2={MINQ2}_combined_{NUM_FILES}/config.json",
0157     output:
0158         "results/tracking_performances_dis/{DETECTOR_CONFIG}/{PREFIX}pythia8NCDIS_{EBEAM}x{PBEAM}_minQ2={MINQ2}_combined_{NUM_FILES}/plots.pdf"
0159     wildcard_constraints:
0160         PREFIX= ".*",
0161         EBEAM=r"\d+",
0162         PBEAM=r"\d+",
0163         MINQ2=r"\d+",
0164         NUM_FILES=r"\d+",
0165     singularity: EIC_SINGULARITY_CONTAINER,
0166     shell:
0167         """
0168 root -l -b -q '{input.script}("{input.config}")'
0169 """
0170 
0171 rule vtx_dis_plots:
0172     input:
0173         script=workflow.source_path("analysis/vtx_dis_plots.cxx"),
0174         config="results/vertexing_performances_dis/{DETECTOR_CONFIG}/{PREFIX}pythia8NCDIS_{EBEAM}x{PBEAM}_minQ2={MINQ2}_combined_{NUM_FILES}/config.json",
0175     output:
0176         "results/vertexing_performances_dis/{DETECTOR_CONFIG}/{PREFIX}pythia8NCDIS_{EBEAM}x{PBEAM}_minQ2={MINQ2}_combined_{NUM_FILES}/plots.pdf"
0177     wildcard_constraints:
0178         PREFIX= ".*",
0179         EBEAM=r"\d+",
0180         PBEAM=r"\d+",
0181         MINQ2=r"\d+",
0182         NUM_FILES=r"\d+",
0183     singularity: EIC_SINGULARITY_CONTAINER,
0184     shell:
0185         """
0186 root -l -b -q '{input.script}("{input.config}")'
0187 """
0188 
0189 #Examples of invocation
0190 rule trk_dis_run_locally:
0191     input:
0192         "results/tracking_performances_dis/" + os.environ["DETECTOR_CONFIG"] + "/pythia8NCDIS_18x275_minQ2=1_combined_5/plots.pdf",
0193     message:
0194         "See output in {input[0]}"
0195 
0196 rule vtx_dis_run_locally:
0197     input:
0198         "results/vertexing_performances_dis/" + os.environ["DETECTOR_CONFIG"] + "/pythia8NCDIS_18x275_minQ2=1_combined_5/plots.pdf",
0199     message:
0200         "See output in {input[0]}"
0201 
0202 
0203 rule trk_dis_run_locally_trk_only:
0204     input:
0205         "results/tracking_performances_dis/epic_craterlake_tracking_only/pythia8NCDIS_18x275_minQ2=1_combined_5/plots.pdf",
0206     message:
0207         "See output in {input[0]}"
0208 
0209 
0210 rule vtx_dis_run_locally_trk_only:
0211     input:
0212         "results/vertexing_performances_dis/epic_craterlake_tracking_only/pythia8NCDIS_18x275_minQ2=1_combined_5/plots.pdf",
0213     message:
0214         "See output in {input[0]}"