...
- 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). Strongly recommended not to exceed 10K events per job.
Following table shows useful information on how much events & jobs you need to submitMC type #of events generate #of events gets through the acceptance DY Target 1000 jobs x 10000 events per job = 10M events ~ 500k events J/Psi Target DY Dump J/Psi Dump DY air-gap J/Psi air-gap - 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
...
- 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 | 370K300K | 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 | 350K300K | singMum_x2y2z300_350K370K.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 | ||||
...