Difference between revisions of "MDC2024: Mock Data"

From Mu2eWiki
Jump to navigation Jump to search
 
(40 intermediate revisions by the same user not shown)
Line 91: Line 91:
 
|}
 
|}
  
== Combining primaries ==
+
== Sim Efficiencies and Databases ==
  
To create Mock Data the process is as follows:
+
One major improvement from the previous MDC2018 is that we now have database implementation in Mu2e. This includes a "SimEfficiency" data-base which can be used to extract the expected rates from the simulation, without need for hardcoding. Here is an example of how to extract the number of stopped muons per pot:
  
* Each primary (DIOtail, CE, Cosmics etc.) is simulated separately, the number of events simulated must be equal to ( or greater than ) the livetime of the Mock Data sample (we do not resample);
+
# get stopped rates from DB
* The run_si.py script is run with several input arguments:
+
dbtool = DbService.DbTool()
  stdpath = the path to output and where filelists for each input is located
+
dbtool.init()
  BB = 1, 2 or averaged booster batch mode
+
args=["print-run","--purpose","MDC2020_best","--version","v1_1","--run","1200","--table","SimEfficiencies2","--content"]
  livetime = livetime in seconds
+
dbtool.setArgs(args)
  prc = the list of processes to be included
+
dbtool.run()
  rmue = signal branching rate
+
rr = dbtool.getResult()
* this creates a template .fcl file with filenames and weights. The weights are relative to the chosen input parameters (livetime, Rmue etc.)
+
# get number of target muon stops:
 +
target_stopped_mu_per_POT = 1.0
 +
rate = 1.0
 +
lines= rr.split("\n")
 +
for line in lines:
 +
    words = line.split(",")
 +
    if words[0] == "MuminusStopsCat" or words[0] == "MuBeamCat" :
 +
        #print(f"Including {words[0]} with rate {words[3]}")
 +
        rate = rate * float(words[3])
 +
        target_stopped_mu_per_POT = rate * 1000
 +
print(f"Final stops rate muon {target_stopped_mu_per_POT}")
  
== Configuring ==
+
==Production Scripts==
 
 
As part of MDC2024 we developed a grid base ensembling work flow. This allowed for larger samples to be created.
 
 
 
There are two stages to making the configuration:
 
 
 
1) Make the input .art files. One thing to be aware of is that the Sampling Input technology requires the same number of files per process. The best way to work with this is to use the hardest job (cosmics) as the standard. Creating jobs for other processes with a compatible number of jobs.
 
  
2) Running the python script make_si.py which builds a template fcl for a given livetime and Rmue (plus a few other variables)
+
To automate parts of the process a number of scripts have been written. These reside in the Produciton repo: Production/ensembles.
  
3) Use the mu2e tools: mu2ejobdef to make a tar. With sampling input for the various input streams e.g:
+
There are a number of helper scripts available:
  
 +
=== ensemble python scripts ===
  
mu2ejobdef --desc=test-ensemble --dsconf=v0 \
+
* normalization.py - calculated normalization for each sample based on user assumptions
--run=1002 \
+
* maketemplatefcl.py - makes the SamplingInput fcl for the provided data set
--setup /cvmfs/mu2e.opensciencegrid.org/Musings/SimJob/MDC2020ae/setup.sh \
+
* calculateEvents.py - prints number of a specific process events for chosen user inputs
--sampling=1:CE:ensemble/CE.txt \
 
--sampling=1:DIO:ensemble/DIO.txt \
 
--sampling=1:CRYCosmic:ensemble/CRYCosmic.txt \
 
--embed samplingtest.fcl --verb
 
  
 +
=== ensemble shell scripts ===
  
4) Launch this job as you would any other.
+
* Stage1: the S1 script tells you the minimum number of events needed to match a chosen cosmic sample for each input process. The number of jobs for each input process must match the number of chosen cosmic files. You could simulate more than this to allow for failure modes, but only use that number of jobs in the eventual ensembling.
 
 
==Production Scripts==
 
 
 
To automate parts of the process a number of scripts have been written. These reside in the Produciton repo: Production/ensembles/scripts.
 
 
 
There are three main scripts:
 
 
 
* calculateInputs.sh - this script is useful for making the input samples, it allows use of the DBs to calculate the expected number of each process for the chosen livetime, beam mode etc.
 
* MakeTemplateFcl.sh - this script will take in the data sets and must be ran interactively. The result is the template fcl with appropriate weights for each process.
 
* genEnsemblesGrid.sh - this script will deploy the grid scripts to run the ensembling process, all the math is based relative to the number of cosmics jobs, this is automated.
 
 
 
Once you have the samples produced and declared in the data file catalog (SAM currently) then digi and reco can be ran in the same way as any other primary sample.
 
  
 +
* Stage2: this script combines the input samples, the template fcl and passes these to the grid to run the parrallized ensembling using the standard Mu2e grid tools.
  
 
== Components ==
 
== Components ==
Line 178: Line 169:
  
 
At timing filter on arrival proper time of the stopped pions is used to improve performance of the simulation. This must be factored in when normalizing the samples.
 
At timing filter on arrival proper time of the stopped pions is used to improve performance of the simulation. This must be factored in when normalizing the samples.
 +
 +
== Input Samples ==
 +
 +
Here is a list of the relevant samples used as part of the current Mock Data effort.
 +
 +
The exact samples input into each MDS is mentioned below.
 +
 +
{| class="wikitable"
 +
|-
 +
!| process
 +
!| campaign
 +
!| generated
 +
!| reconstructed
 +
!| livetime (s) (1BB)
 +
!| POT equiv
 +
!| eff
 +
|-
 +
|<tt>CosmicCORSIKA</tt>
 +
|<tt>MDC2020ae</tt>
 +
|<tt></tt>
 +
|<tt>9568173</tt>
 +
|<tt>1.1e7</tt>
 +
|<tt></tt>
 +
|<tt></tt>
 +
|-
 +
|<tt>DIOtailp95MeVc</tt>
 +
|<tt>MDC2024a_4</tt>
 +
|<tt>401760000</tt>
 +
|<tt>192315262</tt>
 +
|<tt>6032089213</tt>
 +
|<tt>1.81416E+22</tt>
 +
|<tt>0.478</tt>
 +
|-
 +
|<tt>DIOtailp75MeVc</tt>
 +
|<tt>MDC2024a_3</tt>
 +
|<tt>160000000 </tt>
 +
|<tt>28887387</tt>
 +
|<tt>2.03E+05</tt>
 +
|<tt>6.11958E+17</tt>
 +
|<tt>0.180</tt>
 +
|-
 +
|<tt>DIOtail (95)</tt>
 +
|<tt>MDC2020ad</tt>
 +
|<tt>3267000</tt>
 +
|<tt>1534077 </tt>
 +
|<tt>127960436.9 </tt>
 +
|<tt>3.84843E+20 </tt>
 +
|<tt>0.469</tt>
 +
|-
 +
|<tt>DIOtail (75)</tt>
 +
|<tt>MDC2020ad_sm0</tt>
 +
|<tt>170150000 </tt>
 +
|<tt>30357435 </tt>
 +
|<tt>2219329 </tt>
 +
|<tt>6.67465E+17</tt>
 +
|<tt>0.178</tt>
 +
|-
 +
|<tt>CeEndpoint </tt>
 +
|<tt>MDC2020ac</tt>
 +
|<tt>100000</tt>
 +
|<tt>54280</tt>
 +
|<tt></tt>
 +
|<tt></tt>
 +
|<tt>0.542</tt>
 +
|-
 +
|<tt>CeMLeadingLog</tt>
 +
|<tt>MDC2024a_sm4</tt>
 +
|<tt>22400</tt>
 +
|<tt>11687</tt>
 +
|<tt></tt>
 +
|<tt></tt>
 +
|<tt>0.522</tt>
 +
|-
 +
|}
  
 
== DIO 75MeV/c short tests ==
 
== DIO 75MeV/c short tests ==
  
A set of 1minute samples with a p>75MeV/c cut on the DIO tail were generated to get a feel for the size and time taken to generate this sample.
+
A set of very short samples with a p>75MeV/c cut on the DIO tail were generated to get a feel for the size and time taken to generate this sample. These are available for anyone testing the trigger, but not useful for physics studies. The larger DIOtail only sample can also be used as in all cases the eventual events were all DIOtails.
  
  
Line 190: Line 255:
 
!| Processes
 
!| Processes
 
!| BB
 
!| BB
!| livetime
+
!| equiv. time
 +
!| equiv. POT
 
!| Rmue
 
!| Rmue
 
!| conditions
 
!| conditions
Line 199: Line 265:
 
|<tt>CE+DIO(75MeV/c)</tt>
 
|<tt>CE+DIO(75MeV/c)</tt>
 
|<tt>1BB </tt>
 
|<tt>1BB </tt>
|<tt>1 min</tt>
+
|<tt>17s</tt>
|<tt>1e-13</tt>
+
|<tt>5.22e13</tt>
 +
|<tt>0</tt>
 
|<tt>perfect</tt>
 
|<tt>perfect</tt>
 
|<tt>dts,dig,mcs</tt>
 
|<tt>dts,dig,mcs</tt>
Line 208: Line 275:
 
|<tt>CE+DIO(75MeV/c)+CRY</tt>
 
|<tt>CE+DIO(75MeV/c)+CRY</tt>
 
|<tt>1BB </tt>
 
|<tt>1BB </tt>
|<tt>1 min</tt>
+
|<tt>17s</tt>
|<tt>1e-13</tt>
+
|<tt>5.22e13</tt>
 +
|<tt>0</tt>
 
|<tt>perfect</tt>
 
|<tt>perfect</tt>
 
|<tt>dts,dig,mcs</tt>
 
|<tt>dts,dig,mcs</tt>
Line 217: Line 285:
 
|<tt>CE+DIO(75MeV/c)</tt>
 
|<tt>CE+DIO(75MeV/c)</tt>
 
|<tt>2BB </tt>
 
|<tt>2BB </tt>
|<tt>1 min</tt>
+
|<tt>13s</tt>
|<tt>1e-13</tt>
+
|<tt>7.7e13</tt>
 +
|<tt>0</tt>
 
|<tt>perfect</tt>
 
|<tt>perfect</tt>
 
|<tt>dts,dig,mcs</tt>
 
|<tt>dts,dig,mcs</tt>
Line 227: Line 296:
 
|<tt>CE+DIO(75MeV/c)+CRY</tt>
 
|<tt>CE+DIO(75MeV/c)+CRY</tt>
 
|<tt>2BB </tt>
 
|<tt>2BB </tt>
|<tt>1 min</tt>
+
|<tt>13s</tt>
|<tt>1e-13</tt>
+
|<tt>7.7e13</tt>
 +
|<tt>0</tt>
 
|<tt>perfect</tt>
 
|<tt>perfect</tt>
 
|<tt>dts,dig,mcs</tt>
 
|<tt>dts,dig,mcs</tt>
Line 236: Line 306:
 
|<tt>CE+DIO(75MeV/c)+CRY</tt>
 
|<tt>CE+DIO(75MeV/c)+CRY</tt>
 
|<tt>1BB </tt>
 
|<tt>1BB </tt>
|<tt>1 hour</tt>
+
|<tt></tt>
|<tt>1e-13</tt>
+
|<tt></tt>
 +
|<tt>0</tt>
 
|<tt>perfect</tt>
 
|<tt>perfect</tt>
 
|<tt>dts only</tt>
 
|<tt>dts only</tt>
Line 245: Line 316:
 
|<tt>CE+DIO(75MeV/c)+CRY+PU</tt>
 
|<tt>CE+DIO(75MeV/c)+CRY+PU</tt>
 
|<tt>1BB </tt>
 
|<tt>1BB </tt>
|<tt>1 min</tt>
+
|<tt></tt>
|<tt>1e-13</tt>
+
|<tt></tt>
 +
|<tt>0</tt>
 
|<tt>perfect</tt>
 
|<tt>perfect</tt>
 
|<tt>dts only</tt>
 
|<tt>dts only</tt>
Line 268: Line 340:
 
!| Processes
 
!| Processes
 
!| BB
 
!| BB
!| livetime
+
!| eqiv POT
 +
!| equiv livetime
 
!| Rmue
 
!| Rmue
 
!| conditions
 
!| conditions
Line 276: Line 349:
 
|<tt>MDS0a</tt>
 
|<tt>MDS0a</tt>
 
|<tt>CE+DIO(95MeV/c)</tt>
 
|<tt>CE+DIO(95MeV/c)</tt>
|<tt>Mixed </tt>
+
|<tt>1BB </tt>
|<tt>1 month</tt>
+
|<tt>1.50e18</tt>
|<tt>1e-13</tt>
+
|<tt>4.89E+05 (5.7days)</tt>
 +
|<tt>9.39E-14</tt>
 
|<tt>best,perfect</tt>
 
|<tt>best,perfect</tt>
|<tt>ensemble-MixBB-CEDIO-1month-p95MeVc-Triggered</tt>
+
|<tt>nts.mu2e.MDS0a.MDC2020ad_perfect_v1_2.root</tt>
|<tt> simple test</tt>
+
|<tt> </tt>
 
|-
 
|-
 
|-
 
|-
Line 287: Line 361:
 
|<tt>CE+DIO(95MeV/c)+CRY</tt>
 
|<tt>CE+DIO(95MeV/c)+CRY</tt>
 
|<tt>1BB </tt>
 
|<tt>1BB </tt>
|<tt>1 week </tt>
+
|<tt>5.61E+17</tt>
 +
|<tt>1.86E+05 (2.1 days)</tt>
 
|<tt>1e-13 </tt>
 
|<tt>1e-13 </tt>
 
|<tt>best,perfect</tt>
 
|<tt>best,perfect</tt>
|<tt>ensemble-1BB-CEDIOCRYCosmic-600000s-p95MeVcTrigger-</tt>
+
|<tt>nts.mu2e.MDS0b.MDC2020ad_perfect_v1_3.root</tt>
|<tt> simple test including cosmics </tt>
+
|<tt> </tt>
 
|-
 
|-
 
|<tt>MDS0c</tt>
 
|<tt>MDS0c</tt>
 
|<tt>CE+DIO(95MeV/c)+CRY</tt>
 
|<tt>CE+DIO(95MeV/c)+CRY</tt>
 
|<tt>1BB </tt>
 
|<tt>1BB </tt>
|<tt>1 month </tt>
+
|<tt>2.31E+18</tt>
|<tt>1e-13 </tt>
+
|<tt>7.70E+05 (8.9 days)</tt>
 +
|<tt>8.88E-14</tt>
 
|<tt>best,perfect</tt>
 
|<tt>best,perfect</tt>
 
|<tt>ensemble-1BB-CEDIOCRYCosmic-2400000s-p95MeVc-Trigger-</tt>
 
|<tt>ensemble-1BB-CEDIOCRYCosmic-2400000s-p95MeVc-Trigger-</tt>
|<tt> simple test including more cosmics </tt>
+
|<tt> </tt>
 
|-
 
|-
 
|<tt>MDS0d</tt>
 
|<tt>MDS0d</tt>
 
|<tt>CE+DIO(95MeV/c)+CRY+PU</tt>
 
|<tt>CE+DIO(95MeV/c)+CRY+PU</tt>
 
|<tt>1BB </tt>
 
|<tt>1BB </tt>
|<tt>1 week </tt>
+
|<tt>5.84E+17</tt>
|<tt>1e-13 </tt>
+
|<tt>1.94E+05 (2.2 days)</tt>
 +
|<tt>1.35E-13</tt>
 
|<tt>perfect</tt>
 
|<tt>perfect</tt>
 
|<tt>ensemble-1BB-CEDIOCRYCosmic-600000s-p95MeVcMix1BBTriggered</tt>
 
|<tt>ensemble-1BB-CEDIOCRYCosmic-600000s-p95MeVcMix1BBTriggered</tt>
|<tt> simple test including old pile-up streams </tt>
+
|<tt> normalization somewhat handwavy here, expect similar to pass0b </tt>
 
|-
 
|-
 
|<tt>MDS0e</tt>
 
|<tt>MDS0e</tt>
 
|<tt>CE+DIO(95MeV/c)+CRY</tt>
 
|<tt>CE+DIO(95MeV/c)+CRY</tt>
 
|<tt>1BB </tt>
 
|<tt>1BB </tt>
|<tt>1 year </tt>
+
|<tt></tt>
 +
|<tt></tt>
 
|<tt>1e-13 </tt>
 
|<tt>1e-13 </tt>
 
|<tt>perfect</tt>
 
|<tt>perfect</tt>
Line 334: Line 412:
 
|<tt>CeEndpoint</tt>
 
|<tt>CeEndpoint</tt>
 
|<tt>MDC2020ac</tt>
 
|<tt>MDC2020ac</tt>
|<tt> 100K CEs simulated </tt>
+
|<tt> </tt>
 
|-
 
|-
 
|<tt>DIOtail (95MeV/c)</tt>
 
|<tt>DIOtail (95MeV/c)</tt>
 
|<tt>MDC2020ad</tt>
 
|<tt>MDC2020ad</tt>
|<tt> 1 month DIO equiv. </tt>
+
|<tt> </tt>
 
|-
 
|-
 
|<tt>DIOtail (75MeV/c)</tt>
 
|<tt>DIOtail (75MeV/c)</tt>
 
|<tt>MDC2020ad_sm0</tt>
 
|<tt>MDC2020ad_sm0</tt>
|<tt> 1 week DIO equiv. </tt>
+
|<tt> </tt>
 
|-
 
|-
 
|<tt>CRY Comsic</tt>
 
|<tt>CRY Comsic</tt>
Line 353: Line 431:
 
|-
 
|-
 
|}
 
|}
 +
 +
=== Yields ===
 +
 +
Before any cuts are applied the true values for each process can be derived using the Process Code:
 +
 +
{| class="wikitable"
 +
|-
 +
!| tag
 +
!| DIOtail
 +
!| CE
 +
!| Cosmics
 +
!| Other
 +
|-
 +
|<tt>MDS0a</tt>
 +
|<tt>9966</tt>
 +
|<tt>49</tt>
 +
|<tt>N/A</tt>
 +
|<tt></tt>
 +
|-
 +
|<tt>MDS0b</tt>
 +
|<tt>3801</tt>
 +
|<tt>20</tt>
 +
|<tt>4684</tt>
 +
|<tt></tt>
 +
|-
 +
|<tt>MDS0c</tt>
 +
|<tt>15691</tt>
 +
|<tt>73</tt>
 +
|<tt>19101</tt>
 +
|<tt></tt>
 +
|-
 +
|<tt>MDS0d</tt>
 +
|<tt>3956</tt>
 +
|<tt>28</tt>
 +
|<tt>4681</tt>
 +
|<tt></tt>
 +
|-
 +
|}
 +
 +
Once a standard set of cuts is defined we will apply those and update these yields.
 +
 +
=== Effects of Pile-up ===
 +
 +
Samples pass0b and pass0d are essentially the same, in terms of physics contributions. However, pass0d contains standard pile up. Here is a list of the processess reconstructed in each file:
 +
 +
* Pass0b:
 +
 +
[(38, 'cosmicCRY', 4684)]
 +
process code counts:
 +
[(12, 'compt', 71),
 +
(13, 'conv', 882),
 +
(14, 'Decay', 181),
 +
(17, 'eIoni', 24),
 +
(31, 'muIoni', 2269),
 +
(34, 'muPairProd', 143),
 +
(56, 'mu2ePrimary', 4684),
 +
(97, 'neutronInelastic', 2),
 +
(99, 'pi_PlusInelastic', 1),
 +
(114, 'DIO', 7),
 +
(116, 'muonNuclear', 4),
 +
(166, 'mu2eMuonDecayAtRest', 3801),
 +
(167, 'mu2eCeMinusEndpoint', 20)]
 +
 +
* Pass0d
 +
 +
(38, 'cosmicCRY', 4681)
 +
process codes:
 +
[(12, 'compt', 176),
 +
(13, 'conv', 892),
 +
(14, 'Decay', 470),
 +
(17, 'eIoni', 39),
 +
(31, 'muIoni', 2285),
 +
(34, 'muPairProd', 139),
 +
(56, 'mu2ePrimary', 4681),
 +
(97, 'neutronInelastic', 1),
 +
(100, 'pi_MinusInelastic', 1),
 +
(114, 'DIO', 456),
 +
(116, 'muonNuclear', 4),
 +
(133, 'RadioactiveDecayBase', 1),
 +
(165, 'mu2eMuonCaptureAtRest', 4),
 +
(166, 'mu2eMuonDecayAtRest', 3956),
 +
(167, 'mu2eCeMinusEndpoint', 28)
 +
 +
 +
So, as you see, the total number of mu2eMuonDecayAtRest is similar, a slight increase in 0d. This could be a result of decays < the chosen cut but also there will be some chance of double counting in current PU model. Part of the goals moving forward is to remove that possibility. There are also a few more CeMinusEndpoints. Whether these would pass selection cuts is not known. We see an increase in compton events, Decay events and DIO (which includes Michel decays and DIFs). We see a small amount of capture backgrounds (4).
  
 
== Mock Dataset 1 (MDS1) ==
 
== Mock Dataset 1 (MDS1) ==
Line 364: Line 527:
 
* CORSIKA generator used for cosmics;
 
* CORSIKA generator used for cosmics;
 
* PU streams upgraded (might move to pass2).
 
* PU streams upgraded (might move to pass2).
 +
 +
All will assume 1BB:
 +
 +
{| class="wikitable"
 +
|-
 +
!| Tag
 +
!| Processes
 +
!| equiv livetime
 +
!| Rmue
 +
|-
 +
|<tt>MDS1a</tt>
 +
|<tt>CELL+DIO(95MeV/c)+CORSIKA</tt>
 +
|<tt>~1 month </tt>
 +
|<tt>1e-13</tt>
 +
|<tt> </tt>
 +
|-
 +
|<tt>MDS1b</tt>
 +
|<tt>CELL+DIO(95MeV/c)+CORSIKA</tt>
 +
|<tt>~1 month </tt>
 +
|<tt>1e-14</tt>
 +
|<tt> </tt>
 +
|-
 +
|<tt>MDS1c</tt>
 +
|<tt>CELL+DIO(95MeV/c)+CORSIKA</tt>
 +
|<tt>~1 month </tt>
 +
|<tt>0</tt>
 +
|<tt> </tt>
 +
|-
 +
|<tt>MDS1d</tt>
 +
|<tt>CELL+DIO(95MeV/c)+CORSIKA+RPC</tt>
 +
|<tt>1month</tt>
 +
|<tt>1e-13</tt>
 +
|-
 +
|<tt>MDS1e</tt>
 +
|<tt>CELL+DIO(95MeV/c)+CORSIKA+RPC+PU</tt>
 +
|<tt>1year</tt>
 +
|<tt>1e-13</tt>
 +
|-
 +
|<tt>MDS0f</tt>
 +
|<tt>CELL+DIO(95MeV/c)+CORSIKA+RPC+PU</tt>
 +
|<tt>1year</tt>
 +
|<tt>random</tt>
 +
|-
 +
|<tt>MDS0g</tt>
 +
|<tt>CE+DIO(95MeV/c)+CORSIKA+RP+PU</tt>
 +
|<tt>1year</tt>
 +
|<tt>0</tt>
 +
|-
 +
|}
  
  
Line 378: Line 590:
 
|<tt>DIOtail (95MeV/c)</tt>
 
|<tt>DIOtail (95MeV/c)</tt>
 
|<tt>MDC2024a_sm4</tt>
 
|<tt>MDC2024a_sm4</tt>
 +
|<tt> very large </tt>
 +
|-
 +
|<tt>DIOtail_95 (95MeV/c)</tt>
 +
|<tt>MDC2020ai</tt>
 
|<tt> 1 year </tt>
 
|<tt> 1 year </tt>
 +
|-
 +
|<tt>DIOtail_75 (75MeV/c)</tt>
 +
|<tt>MDC2020ai</tt>
 +
|<tt> 1 year  </tt>
 
|-
 
|-
 
|<tt>DIOtail (75MeV/c)</tt>
 
|<tt>DIOtail (75MeV/c)</tt>

Latest revision as of 14:06, 29 August 2024

MDC 2024: Mock Data samples

Introduction

Mock data samples can be helpful in two ways:

  • to help prepare physics analysis efforts;
  • to help us understand the size of our data .art files and ntuples.

Streams

The two purposes above (physics studies, trigger studies) will result in different samples, with differing complexity.

Physics stream

Includes all major components and pile-up. The DIOtail momentum cut can be higher (nominally p>95 MeV/c will be used as a starting point). Three samples will be made: signal at just below current limit (1e-13), closed sample (random signal choice), no signal.

Trigger stream

Here all backgrounds and pile-up will be included but no signal. The DIOtail cut is reduced below the trigger threshold to p > 75 MeV/c.

Inputs

There are several assumptions made when we choose a livetime:

Booster Batch Mode

The Booster Batch (BB) mode describes the incoming operational mode of the booster which feeds the beam through our delivery ring which in turn passes protons to Mu2e.

There are two "run modes" in Mu2e: 1BB and 2BB, in the low-intensity running mode the mean intensity is 1.6E7 protons/pulse and in the higher-intensity mode this becomes 3.9E7 protons/pulse.

Batch Time (s) T Cycle (s) T Spill (s) Spills frac On Spill Time N-cycles POT per cycle
1 9.52E+06 1.33 1.07E-01 4 0.323 3.07E+06 7.16E+06 4.00E+12
2 1.58E+06 1.4 4.31E-02 8 0.246 3.89E+05 1.13E+06 8.00E+12

Expected DIOs

The expected number of muon stops per POT is 1.56E-3 muons/POT (from MDC2020p). The decay : capture ratio for Al is 0.39:0.61.

In our simulation, we tend to focus on simulating the higher momentum tail with cuts of p > 75MeV/c sampling a fraction of 4.19E-07 of the entire DIO spectrum. and p > 95 MeV/c sampling a fraction of 3.64E-11 of the entire DIO spectrum.

livetime BB POT Stopped Muons DIOs (p>75MeV/c) DIOs (p>95MeV/c)
1 hour 1BB 1.08E16 1.67e+13 7.10e6 609

Sim Efficiencies and Databases

One major improvement from the previous MDC2018 is that we now have database implementation in Mu2e. This includes a "SimEfficiency" data-base which can be used to extract the expected rates from the simulation, without need for hardcoding. Here is an example of how to extract the number of stopped muons per pot:

# get stopped rates from DB
dbtool = DbService.DbTool()
dbtool.init()
args=["print-run","--purpose","MDC2020_best","--version","v1_1","--run","1200","--table","SimEfficiencies2","--content"]
dbtool.setArgs(args)
dbtool.run()
rr = dbtool.getResult()
# get number of target muon stops:
target_stopped_mu_per_POT = 1.0
rate = 1.0
lines= rr.split("\n")
for line in lines:
    words = line.split(",")
    if words[0] == "MuminusStopsCat" or words[0] == "MuBeamCat" :
        #print(f"Including {words[0]} with rate {words[3]}")
        rate = rate * float(words[3])
        target_stopped_mu_per_POT = rate * 1000 
print(f"Final stops rate muon {target_stopped_mu_per_POT}")

Production Scripts

To automate parts of the process a number of scripts have been written. These reside in the Produciton repo: Production/ensembles.

There are a number of helper scripts available:

ensemble python scripts

  • normalization.py - calculated normalization for each sample based on user assumptions
  • maketemplatefcl.py - makes the SamplingInput fcl for the provided data set
  • calculateEvents.py - prints number of a specific process events for chosen user inputs

ensemble shell scripts

  • Stage1: the S1 script tells you the minimum number of events needed to match a chosen cosmic sample for each input process. The number of jobs for each input process must match the number of chosen cosmic files. You could simulate more than this to allow for failure modes, but only use that number of jobs in the eventual ensembling.
  • Stage2: this script combines the input samples, the template fcl and passes these to the grid to run the parrallized ensembling using the standard Mu2e grid tools.

Components

DIO tail

The DIO tails is simulated from stopped muons using the SingleProcessGenerator defined in the Offline EventGenerator directory. The DIOGenerator tool is used to provide the correct momentum distribution based on the 5-8 polynomial derived by Czarnecki et al.

A filter called GenFilter is used to remove events unlikely to produce viable events in the reconstruction. The effect of the filter is to improve the time performance by 40%, there is no loss of efficiency.

Two DIO tail samples are included as primaries in two sets of samples for MDC2024: one has a cut at p > 95 MeV/c (a fraction of 3.64e-11 of the entire DIO momentum spectrum) and another has a lower cut, below the trigger threshold, of p > 75 MeV/c (a fraction of 4.19e-7 of the entire DIO spectrum).

In previous simulation studies, DIOs of all momenta are included in the pile-up stream and not as primaries, including them as primaries has the advantage of giving us a large sample of events and therefore increased realism.

Conversion and Conversion Leading Log

CeEndpoints are a standard part of production. The Leading Log camapign includes the leading log corrections calculated by Szfaron. This results in about 10% of electrons being in a lower momentum tail (as opposed to all being at 104.97 MeV/c in the case of the CeEndpoint).

compares CE and CELL.

Cosmics

As part of SU2020 a campaign that used the CORSIKA generator was built and exercised, providing 1.1e7s of cosmic events to be sampled from. Similarily a campaign of a similar size using the CRY generator is also available.

The CRY sample is used for pass 0, but the CORSIKA one is used for the later camapigns.

Pile-up

For pass 0 the existing pile-up streams were used. These were mixed with the combined primary sample as if it were any other primary sample.

This will provide some inaccuracies, as we are mixing in two DIO samples (one as a primary for p > 95 MeV/c and one which is part of the MuStopPileup sample and covers all momentum ranges up to the endpoint). This could introduce some double counting but it is unlikely to overly effect the outcomes of any physics analysis applied to these samples.

For future passes, custom pile-up samples will be combined as primaries in the same way we have done the DIO tails.

RPC

RPC is simulated using the RPCGun generator. Both internal and external RPC can be simulated using the same generator.

At timing filter on arrival proper time of the stopped pions is used to improve performance of the simulation. This must be factored in when normalizing the samples.

Input Samples

Here is a list of the relevant samples used as part of the current Mock Data effort.

The exact samples input into each MDS is mentioned below.

process campaign generated reconstructed livetime (s) (1BB) POT equiv eff
CosmicCORSIKA MDC2020ae 9568173 1.1e7
DIOtailp95MeVc MDC2024a_4 401760000 192315262 6032089213 1.81416E+22 0.478
DIOtailp75MeVc MDC2024a_3 160000000 28887387 2.03E+05 6.11958E+17 0.180
DIOtail (95) MDC2020ad 3267000 1534077 127960436.9 3.84843E+20 0.469
DIOtail (75) MDC2020ad_sm0 170150000 30357435 2219329 6.67465E+17 0.178
CeEndpoint MDC2020ac 100000 54280 0.542
CeMLeadingLog MDC2024a_sm4 22400 11687 0.522

DIO 75MeV/c short tests

A set of very short samples with a p>75MeV/c cut on the DIO tail were generated to get a feel for the size and time taken to generate this sample. These are available for anyone testing the trigger, but not useful for physics studies. The larger DIOtail only sample can also be used as in all cases the eventual events were all DIOtails.


Tag Processes BB equiv. time equiv. POT Rmue conditions Comments sam name
testa CE+DIO(75MeV/c) 1BB 17s 5.22e13 0 perfect dts,dig,mcs ensemble-1BB-CEDIO-60s-p75MeVc
testb CE+DIO(75MeV/c)+CRY 1BB 17s 5.22e13 0 perfect dts,dig,mcs ensemble-1BB-CEDIOCRYCosmic-60s-p75MeVc
testc CE+DIO(75MeV/c) 2BB 13s 7.7e13 0 perfect dts,dig,mcs ensemble-2BB-CEDIO-60s-p75MeVc
testd CE+DIO(75MeV/c)+CRY 2BB 13s 7.7e13 0 perfect dts,dig,mcs ensemble-2BB-CEDIOCRYCosmic-60s-p75MeVc
teste CE+DIO(75MeV/c)+CRY 1BB 0 perfect dts only ensemble-1BB-CEDIOCRYCosmic-3600s-p75MeVc
testf CE+DIO(75MeV/c)+CRY+PU 1BB 0 perfect dts only ensembles-1BB-CEDIOCRYCosmic-60s-p75MeVc-OnSpillMix1BBTriggered

Mock-Dataset-0 (MDS0) (95 MeV/c)

The MDS0 samples all include DIO tail events with the 95 MeV/c cut. Two sample sizes are chosen: 1 week livetime and 1 month livetime.

All components except the RPC are included. Two Rmue values are used, one at 1e-13 which is just below the present upper limit (7e-13) and allows around 55 generated CE events for the 1 week sample and 222 generated CE for the 1 month livetime (before any selection or reconstruction efficiency is factored in).

The samples available are listed below:


Tag Processes BB eqiv POT equiv livetime Rmue conditions sam name Comments
MDS0a CE+DIO(95MeV/c) 1BB 1.50e18 4.89E+05 (5.7days) 9.39E-14 best,perfect nts.mu2e.MDS0a.MDC2020ad_perfect_v1_2.root
MDS0b CE+DIO(95MeV/c)+CRY 1BB 5.61E+17 1.86E+05 (2.1 days) 1e-13 best,perfect nts.mu2e.MDS0b.MDC2020ad_perfect_v1_3.root
MDS0c CE+DIO(95MeV/c)+CRY 1BB 2.31E+18 7.70E+05 (8.9 days) 8.88E-14 best,perfect ensemble-1BB-CEDIOCRYCosmic-2400000s-p95MeVc-Trigger-
MDS0d CE+DIO(95MeV/c)+CRY+PU 1BB 5.84E+17 1.94E+05 (2.2 days) 1.35E-13 perfect ensemble-1BB-CEDIOCRYCosmic-600000s-p95MeVcMix1BBTriggered normalization somewhat handwavy here, expect similar to pass0b
MDS0e CE+DIO(95MeV/c)+CRY 1BB 1e-13 perfect dts only: ensemble-1BB-CEDIOCRYCosmic-31000000s-p95MeVc largest simple sample

The dts, digi, mcs and TrkAna ntuples are available in the usual locations. In most cases the digi and reco stages were ran with perfect and best condtions.

The component samples which went into these streams are listed here:

process tag Comments
CeEndpoint MDC2020ac
DIOtail (95MeV/c) MDC2020ad
DIOtail (75MeV/c) MDC2020ad_sm0
CRY Comsic MDC2020s 1 year sample, signal stream
pile-up/stops MDC2020p most recently made mu beam sample

Yields

Before any cuts are applied the true values for each process can be derived using the Process Code:

tag DIOtail CE Cosmics Other
MDS0a 9966 49 N/A
MDS0b 3801 20 4684
MDS0c 15691 73 19101
MDS0d 3956 28 4681

Once a standard set of cuts is defined we will apply those and update these yields.

Effects of Pile-up

Samples pass0b and pass0d are essentially the same, in terms of physics contributions. However, pass0d contains standard pile up. Here is a list of the processess reconstructed in each file:

  • Pass0b:
[(38, 'cosmicCRY', 4684)]
process code counts:
[(12, 'compt', 71), 
(13, 'conv', 882), 
(14, 'Decay', 181), 
(17, 'eIoni', 24), 
(31, 'muIoni', 2269), 
(34, 'muPairProd', 143), 
(56, 'mu2ePrimary', 4684), 
(97, 'neutronInelastic', 2), 
(99, 'pi_PlusInelastic', 1), 
(114, 'DIO', 7),
(116, 'muonNuclear', 4), 
(166, 'mu2eMuonDecayAtRest', 3801), 
(167, 'mu2eCeMinusEndpoint', 20)]
  • Pass0d
(38, 'cosmicCRY', 4681)
process codes:
[(12, 'compt', 176),
(13, 'conv', 892), 
(14, 'Decay', 470),
(17, 'eIoni', 39),
(31, 'muIoni', 2285), 
(34, 'muPairProd', 139),
(56, 'mu2ePrimary', 4681),
(97, 'neutronInelastic', 1), 
(100, 'pi_MinusInelastic', 1), 
(114, 'DIO', 456),
(116, 'muonNuclear', 4), 
(133, 'RadioactiveDecayBase', 1),
(165, 'mu2eMuonCaptureAtRest', 4),
(166, 'mu2eMuonDecayAtRest', 3956), 
(167, 'mu2eCeMinusEndpoint', 28)


So, as you see, the total number of mu2eMuonDecayAtRest is similar, a slight increase in 0d. This could be a result of decays < the chosen cut but also there will be some chance of double counting in current PU model. Part of the goals moving forward is to remove that possibility. There are also a few more CeMinusEndpoints. Whether these would pass selection cuts is not known. We see an increase in compton events, Decay events and DIO (which includes Michel decays and DIFs). We see a small amount of capture backgrounds (4).

Mock Dataset 1 (MDS1)

MDS1 will inherit from the MDC2020ae (Cosmics) and MDC2024a_* releases and classified as MDC2024a.

Several updates are made for MDS 1:

  • CeEndpoint now including the leading log too;
  • DIO tail momentum cut moved to 75 MeV/c for triggered stream only;
  • CORSIKA generator used for cosmics;
  • PU streams upgraded (might move to pass2).

All will assume 1BB:

Tag Processes equiv livetime Rmue
MDS1a CELL+DIO(95MeV/c)+CORSIKA ~1 month 1e-13
MDS1b CELL+DIO(95MeV/c)+CORSIKA ~1 month 1e-14
MDS1c CELL+DIO(95MeV/c)+CORSIKA ~1 month 0
MDS1d CELL+DIO(95MeV/c)+CORSIKA+RPC 1month 1e-13
MDS1e CELL+DIO(95MeV/c)+CORSIKA+RPC+PU 1year 1e-13
MDS0f CELL+DIO(95MeV/c)+CORSIKA+RPC+PU 1year random
MDS0g CE+DIO(95MeV/c)+CORSIKA+RP+PU 1year 0


process tag events
CeMLeadingLog MDC2024a_sm4 800K
DIOtail (95MeV/c) MDC2024a_sm4 very large
DIOtail_95 (95MeV/c) MDC2020ai 1 year
DIOtail_75 (75MeV/c) MDC2020ai 1 year
DIOtail (75MeV/c) MDC2024a_sm3 1 week
CORSIKA MDC2020ae
pile-up/stops MDC2020p -

Mock Dataset 2 (MDS2)

Here we add in the RPC/RMC streams and also provide positron samples ... TBC