How to generate MC events on Rivanna?
- Login to Rivanna
- Create a folder under your name on /project/ptgroup/
- There are various script to generate Monte Carlo (MC) events on Rivanna depend on the channel (reaction) and the vertex or location where the events are generated.
- Those scripts are located under /project/ptgroup/Akbar. There are 20 folders containing the required script. The name of the folder is <channel>_<vertex origin>_scripts.
- Option for <channel> are : Drell-Yan (DY), Jpsi and Psi prime (JPsi), Pion background (Pion), Random-multi muons (MultiMuon)
- Option for <Vertex origin> : target (Target), Beam Dump (Dump), Everything that seen by the beam (All), The gap between the target and dump (TargetDumpGap), and arbitrary vertex origin (Manual)
- For example, if you want to generate Drell Yan events from the target, then the folder that you need is DY_Target_scripts under /project/ptgroup/Akbar
- Currently, we need various MC events for Neural-network training. The list is inside /project/ptgroup/spinquest/MC_storage/README. The script require to generate this list of MC is summarized in this table
- Create a directory called "MC" on /scratch/<user_name> by "mkdir MC", and then navigate back to your directory inside /project/ptgroup/YourFolder/
- Copy the relevant code-directory from /project/ptgroup/Akbar (please refer to the screenshot above) to your directory.
Here is a simple way of copying a folder ("DY_Target_script" for example) except "scratch";
cd /project/ptgroup/YourFolder rsync -av --exclude scratch /project/ptgroup/Akbar/DY_Target_script . |
---|
- Navigate to the directory that you want to run the script.
- Setup the environment using: source /project/ptgroup/spinquest/this-e1039.sh command
- Submit your job using the following command.
$ ./jobscript.sh <Output_folder_name> <No_of_jobs> <No_of_events_per_job>
$ ./jobscript.sh DY_Target_1M 100 10000 (Here we need to generate ~1M events. The accepted events depend on the channel)
- Using "squeue -u cee9hc", you can check the status of your jobs (or use the "Active Jobs" tab on your UVA OpenOnDemand web page).
- Once the job is finished, then you can find your output folder in "/scratch/<your_UVA_id>/MC
- Copy /project/ptgroup/Akbar/analysis/histo_v2.C to your directory. Modify it with the correct path to your generated MC (eg: /scratch/Your_UVA_ID/MC/Folder_Name).
Then run the macro by $ root -l histo_v2.C
This file (histo_v2.C) create around 11 histograms to check the quality of your generated MC. Check whether the plots make sense; especially, see the x,y and z vertex origin. In the screen you will also see the number of accepted events. - Navigate to "/project/ptgroup/script" and then implement the following command (this script by-default will skip bad-files/corrupted-files/etc.)
$ ./merge_mc_prod.sh /scratch/<your_MC_output_file_location>
This will create a folder inside /project/ptgrpup/spinquest/MC_merge_files" with the same name as your MC_output_folder
- Copy the "merged_trackQA_v2.root" file from the folder that you've newly generated by ./merge_mc_prod.sh and copy it to "/project/ptgroup/spinquest/MC_storage" location. Rename the file into <Channel>_<Vertex Origin>_<Number of accepted event>.root. for example: JPsi_Dump_300K.root
- Use the label.C file in the "/project/ptgroup/spinquest/MC_storage" to add summary description of your MC .root file
Other Important Notes:
- When you generate single-muon events, you have to change the condition of `SQGeomAcc` in `Fun4Sim.C`.
- Better configurations for J/psi and psi' are available in the E1039-Collaboration/e1039-analysis repository. Zulkaida could make use of them in "/project/ptgroup/Akbar/*/Fun4Sim.C".
- reco_vz
- reco_vz is the reconstructed position of track (not dimuon) at the target position (i.e. z = -300 cm). Therefore "reco_vz" is always -300 cm
- The meaning of "reco_vz" is defined in "AnaTrkQA". Actually the present naming is misleading.
- When dimuon events are produced in the dump, each track should make the closest approach to the z-axis in the dump region. But "reco_vz" is not the position of the closest approach but the position of the track at z = -300 cm by definition. "reco_vx" and "reco_vy" are not peaked at 0 cm.
- Beam profile
- The profile here means the distribution shape of beam protons in X and Y (= R).
- When "legacyVtxGen = true"
- When "legacyVtxGen = false"
- The shape is defined by the following functions of event generators.
- "set_vertex_distribution_function()" sets the shape to "Uniform" or "Gaussian".
- "set_vertex_distribution_mean()" sets the mean of the distribution.
- "set_vertex_distribution_width()" sets the half width in case of "Uniform" or "sigma" in case of "Gaussian".
MC events generation log-book
Please check the required/needed list of MC (at the moment) in the README file: "/project/ptgroup/spinquest/MC_storage/README"
Process | Vertex | Events needed | Filename(s) generated | Notes |
---|
Drell-Yan (DY)
| Target | 300K, 100K, 250K | DY_target_300K, DY_target_100K, DY_target_250K |
|
Dump | 300K | DY_Dump_498K.root |
|
Air Gap |
| DY_AirGap_386K.root |
|
No Target | 300K |
| Require more modification in Fun4Sim.C (Zulkaida) |
All (proper target dimensions) | 300K |
| Zulkaida |
Just Target (proper target dimensions) | 300K |
| Zulkaida |
All except Target |
|
|
|
|
|
|
|
|
Jpsi | Target | 300K, 70K, 130K | JPsi_target_300K, JPsi_target_70K, Jpsi_target_130K |
|
Dump | 130K, 300K | JPsi_Dump_130k |
|
Air Gap |
| JPsi_AirGap_99k.root |
|
No Target | 300K |
| Zulkaida |
All (proper target dimensions) | 300K |
| Zulkaida |
Just Target (proper target dimensions) | 300K |
| Zulkaida |
All except Target |
|
|
|
|
|
|
|
|
Di-Muon | Target | 100K, 300K | Dimuon_target_100K |
|
Dump | 300K | Dimuon_Dump_329k.root |
|
Air Gap | 2.5M | Dimuon_x15y15z300_2.5M | x=15, y=15, z=300 Note: 2.5M accepted events were generated out of 6M events |
No Target |
|
|
|
All (proper target dimensions) |
|
|
|
Just Target (proper target dimensions) |
|
|
|
All except Target |
|
|
|
|
|
|
|
|
Single-Muon
| Target | 300K |
| Jay is working on this |
Dump |
|
|
|
Air Gap |
|
|
|
No Target |
|
|
|
All (proper target dimensions) |
|
|
|
Just Target (proper target dimensions) |
|
|
|
All except Target |
|
|
|
|
|
|
|
|
Single-Muon plus
| Target |
|
|
|
Dump |
|
|
|
Air Gap | 300K | singMup_x2y2z300_370K.root | Note: ~370K accepted events were generated out of 750K events |
No Target |
|
|
|
All (proper target dimensions) |
|
|
|
Just Target (proper target dimensions) |
|
|
|
All except Target |
|
|
|
|
|
|
|
|
Single-Muon minus
| Target |
|
|
|
Dump |
|
|
|
Air Gap | 300K | singMum_x2y2z300_370K.root | Note: ~350K accepted events were generated out of 750K events |
No Target |
|
|
|
All (proper target dimensions) |
|
|
|
Just Target (proper target dimensions) |
|
|
|
All except Target |
|
|
|
|
|
|
|
|
Questions
Please record any questions that you find when generating/analyzing MC events. We try to answer each and/or write up a comprehensive document based on them.
- (Example) Differences between event vertex, target and dump.
- (Example) Difference between truth quantity and reconstructed quantity.