The Confluence production environment will undergo a migration from 8am-5pm ET on Saturday, May 25th. The Confluence environment will be available in read only mode. Changes to data in Confluence will not be possible until the migration is complete.
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/" 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`.
- SQGeomAcc skips (i.e. not save) an event in which a muon or a muon pair doesn't pass through the spectrometer acceptance, because such event is useless for analysis.
- By default, SQGeomAcc requires a muon pair per event; "geom_acc->SetMuonMode(SQGeomAcc::PAIR);"
When you generate single-muon events, you have to modify `Fun4Sim.C` as follows, so that SQGeomAcc requires a muon per event;
geom_acc->SetMuonMode(SQGeomAcc::SINGLE);
or
geom_acc->SetMuonMode(nmu_plus+nmu_minus==1 ? SQGeomAcc::SINGLE : SQGeomAcc::PAIR);
- 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".
- https://github.com/E1039-Collaboration/e1039-analysis/blob/master/SimChainDev/phpythia8_Jpsi.cfg ... It produces J/psi and other charmonia (including psi'), where the rate of psi' is much lower than the current configuration.
- https://github.com/E1039-Collaboration/e1039-analysis/blob/master/SimChainDev/phpythia8_psip.cfg ... It produces only psi', not J/psi.
- Note: Even when using new configurations, you should still select the particle of your interest (i.e. J/psi or psi') by its truth mass in `histo.C`. It is because a random pair (like mu+ from pi+ and mu- from pi-) could be produced from the beam remnant.
- 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"
- The shape is "Gaussian" at "R < 5*sigma" and "1 / R" at "R >= 5*sigma" (cf. https://github.com/E1039-Collaboration/e1039-core/blob/master/generators/E906LegacyVtxGen/SQPrimaryVertexGen.C#L290 )
- The Gaussian width ("sigma" in cm) is defined by "SIGX_BEAM" and "SIGY_BEAM" in Fun4Sim.C.
- 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.