|
close
Warning:
Can't synchronize with repository "(default)" ("(default)" is not readable or not a Git repository.). Look in the Trac log for more information.
- Timestamp:
-
Jan 5, 2017, 3:27:08 PM (8 years ago)
- Author:
-
Clarence Wret
- Comment:
-
--
Legend:
- Unmodified
- Added
- Removed
- Modified
-
v12
|
v13
|
|
5 | 5 | This is an informal step-by-step guide on how to add samples into the NUISANCE framework. |
6 | 6 | |
7 | | For this tutorial I'll be adding the T2K CC1pi+ H2O data. The data comes from the [http://t2k-experiment.org/results/nd280data-numu-cc1pi-xs-on-h2o-2015/ T2K site] and [https://arxiv.org/abs/1605.07964 arxiv]. The data is supplied both in a ROOT file and a number of .csv files: I'll be using the ROOT file here. |
| 7 | For this tutorial I'll be adding the T2K CC1pi+ H,,2,,O data. The data comes from the [http://t2k-experiment.org/results/nd280data-numu-cc1pi-xs-on-h2o-2015/ T2K site] and [https://arxiv.org/abs/1605.07964 arxiv]. The data is supplied both in a ROOT file and a number of .csv files: I'll be using the ROOT file here. |
8 | 8 | |
9 | 9 | {{{ |
… |
… |
|
12 | 12 | }}} |
13 | 13 | |
| 14 | |
14 | 15 | == Examining the data and choosing distributions == |
15 | 16 | |
… |
… |
|
17 | 18 | === Finding the neutrino flux and generating events === |
18 | 19 | |
19 | | The first issue at hand is to find the flux for the experiment. If we don't have this (or its very difficult to find), we cant make a generator prediction---unless the measurement is a total cross-section without any phase space cuts. |
| 20 | The first issue at hand is to find the flux for the experiment. If we don't have this, we cant make a generator prediction---unless the measurement is a total cross-section without any phase space cuts (in which case you should probably cast a suspicious eye). |
20 | 21 | |
21 | | A quick search through the document finds it is documented in reference ![12]. It is also in our [wiki:ExperimentFlux flux list]. |
| 22 | A quick search through the arxiv document points us to reference ![12]. It is also in our [wiki:ExperimentFlux flux list]. |
22 | 23 | |
23 | | I then generate events in NEUT 5.3.6 with a suitable card-file, see our [wiki:HowToNeut NEUT guide] on how to do this. We need the correct target (water) and flux, and perform the model selections we want (e.g. Rein-Sehgal or Berger-Sehgal coherent model). The procedure is very similar for other generators too. |
| 24 | We then generate events in NEUT 5.3.6 with a suitable card-file, see our [wiki:HowToNeut NEUT guide] on how to do this. We need the correct target (water) and flux, and perform the model selections we want (e.g. Rein-Sehgal or Berger-Sehgal coherent model). The procedure is very similar for other generators too. |
24 | 25 | |
25 | 26 | Aim to generate around 1M events with all interaction modes turned on. This way we make sure to get all interaction modes into the topologically defined cross-section. We get a small amount of CCQE events which excite a pion from the outgoing nucleon interacting in the nucleus to kick out a pion, leading to a CCQE+1pi ~ CC1pi+ final state, which is signal for this particular sample. |
… |
… |
|
28 | 29 | === Choosing a distribution === |
29 | 30 | |
30 | | The T2K CC1pi+ H2O data release contains various distributions in FIG 4. In this tutorial I'll look at adding one kinematic distribution and one derived distribution: p_mu and E^rec^_nu respectively. |
| 31 | The T2K CC1pi+ H2O data release contains various distributions in FIG 4. In this tutorial I'll look at adding one kinematic distribution and one derived distribution: p,,mu,, and E^rec^,,nu,, respectively. |
31 | 32 | |
32 | 33 | [[Image(T2K_CC1pip_H2O_enurec.png, 300px)]][[Image(T2K_CC1pip_H2O_enurec.png, 300px)]] |
… |
… |
|
34 | 35 | In NUISANCE we try to add all available distributions from a publication. '''However''', some distributions will have detector effects "folded" into them (i.e. they will be raw detector-level data). We can only use these if there is some method which bring detector-level variables (e.g. p_mu seen in the detector) to truth-level variable (e.g. p_mu seen after correcting for the detector effects). |
35 | 36 | |
36 | | === Implementing a sample === |
| 37 | == Implementing a sample == |
| 38 | |
| 39 | NUISANCE is designed to easily allow adding new samples. |
| 40 | |
| 41 | Each experimental measurement (e.g. MiniBooNE CC1pi0 cos(theta(pi0, neutrino))) is its own class. To simplify including new samples we supply a base class for 1D (`Measurement1D`) and 2D (`Measurement2D`) measurements, which in turn inherits from the virtual base class (`MeasurementBase`). These `MeasurementBase` classes are then looped over in the executables and data/MC comparisons are the result. |
| 42 | |
| 43 | The inheritance tree is simple and goes `Specific_Measurement -> MeasurementXD -> MeasurementBase` |
| 44 | |
| 45 | === Setting up the inheritance === |
| 46 | In the case of our T2K CC1pi+ H,,2,,O data, we're dealing with 1D distributions. They should therefore inherit from the `Measurement1D` class. |
| 47 | |
| 48 | === Naming the sample === |
| 49 | Some automatic processing is done on loading up the sample. Most of these are simple string comparisons, but do place responsibility on the user. |
| 50 | |
| 51 | For cross-sections, for event-rates |
| 52 | |
| 53 | === Placing the sample === |
| 54 | |
| 55 | === Making the constructor === |
| 56 | |
| 57 | === Specifying the event-level dependent variable(s) === |
| 58 | |
| 59 | === Specifying a signal definition === |
37 | 60 | |
38 | 61 | {{{ |
… |
… |
|
90 | 113 | } |
91 | 114 | }}} |
| 115 | |
| 116 | === Make NUISANCE aware of the sample === |
| 117 | FCN/SampleList |
| 118 | |
| 119 | === Add the sample to the makefile === |
| 120 | CMake |
|