Return the the main analysis page.

Analysis Timeline

The seqence of processes involved in NA62 data analysis

This section is written to later discus the efficiencies of the NA62 analysis and which efficiencies do not cancel between the Pnn channel and the muon normalisation.


  1. The events occur in the detector
  2. Detector information is processed in the triggers and stored on Castor
  3. Raw data is reconstructed by the framework
  4. Reconstructed data is filtered to purpose then stored on EOS
  5. Filtered data is then processed by the user directory files
  6. then processes the data in stages
1: The events occur in the detector

Beam particles (mostly pions and protons, with 6% kaons) exit the T10 target and pass through the colimators, magnetic fields and GTK, possibly interacting or decaying (largely muon and photon decays from the pions). Negligible background from matter emissions (E too low) and high energy cosmic particles (low frequency below ground and usually wrong kinematics).

2: Detector information is processed in the triggers and stored on Castor

The L0TP processes the L0 trigger decision from the detector signals, then the PC farm processes L1 and auto-passes L2 (assuming all signals present). The Mergers then buffer the events and write to Castor.

3: Raw data is reconstructed by the framework

The data is reconstructed using a version or revision of the framework that is dependent on the time the data was taken, reco efficiency is important at this stage.

4: Reconstructed data is filtered to purpose then stored on EOS

The Pnn filtering code or others are used to reduce the file sizes and separate the events based on the analysis group that will use them.

5: Filtered data is then processed by the user directory files

User directory pre-analysing files: GigaTrackerEvtReco,,, and

6: then processes the data in stages

  1. The main function containing the base analysis
  2. Start of Job, Run then Burst
  3. Initialise histograms, trees and output
  4. Process each event and call the relevant analysis functions
  5. Run the specific analysis function on each event that passed the previous stages
  6. Post-processing with: PostProcess; End of Burst, Run, Job; DrawPlot

Using Kμ2 as a normalisation sample [current work]

The overall aim of NA62 if to measure the branching fraction (using BR as the canonical shorthand from here) of the decay K+→π+νν. In order to do so, we must account for errors both statistical and systematic. Therefore, if we measure the BR and normalise the number of events we observe by dividing it by one of the primary kaon decays (μ+ν or π+π0) we can cancel many of the major systematics. If we use both primary decays for a normalisation sample and compare the value, we can check if we are properly accounting for all systematics, as both should provide the same result. First we use the number of observed events of decay i:

Ni = fK ⋅ t ⋅ [BR(K→i)] ⋅ Ai ⋅ Ei

where fK is the frequency of kaons in the beam, t is the time period of data taking, Ai is the "acceptance" or number of decays in the detector's fiducial region and Ei is the product of efficiencies ∏rεr for the efficiencies r relating to the trigger, reconstruction, kaon ID, daughter ID, track matching and all other processes used in the analysis (this should cover all contributions, even things like the possibility of events being incorrectly tagged as the decay you are measuring).

From this we can construct an equation for:

BR(K+→π+νν) = BR(K+→μ+ν) ⋅ Nπ+νν/Nμ+νAμ+ν/Aπ+ννEμ+ν/Eπ+νν
where the fK and t terms cancel, along with many of the εr efficiencies and BR(K+→μ+ν) can be taken from the PDG listings as it has been thoroughly measured by previous experiments.

Step 1: Generate a Kμ2 normalisation sample. [done]

  • Start by generating a sample of Kμ2 data with Pnn like cuts from one burst (current file) and organise some output histograms
    • Write a new analyser and tree to group useful output
    • Apply Pnn like cuts
    • Add a timing based MUV3 cut to select muon events
  • Confirm compatibility of Pnn cuts, comment cuts as muon or Pnn, generally tidy up the code to finalise the cuts
Step 2: Calculate the acceptance "Aμ+ν" using all the muon MC with HTCondor. [started]
  • Select muon events at MC truth level [starting]
  • Take basic acceptance cut of 105 (possibly 115) to 165m
  • Bin "passed" events by momentum as has been done in previous studies (15-20, 20-25, 25-30, 30-35 GeV)
  • Calculate binned acceptance by dividing by all events, recorded using the same binning system
Step 3: Run on as much 2016 data as possible with HTCondor to calculate a value for "Nμ+ν".

Step 4: Start looking at the efficiencies "εr".

  • First, look at the pion ID efficiency

Run the (updated) 2016 cuts based analysis on the 2017 data [future]

  1. Finish updating the user directory files (specifically CHODAnalysis) so that runs correctly on 2017 data (check you are using the correct framework revision)
  2. Run on one file to check functionality
  3. Ensure blinding is maintained
  4. Run on as much data as possible
  5. Try to run on any failed data files to complete the selection
  6. Discus unblinding
  7. Unblind starting with control regions
  8. Write up results with the intention to publish eventually

GTK3 interaction MC work [future]

  1. Altering the Geant4 setup to change the hadronic interaction probability in GTK3 to 1 or reject non-interacting events (more likely solution)
  2. Generate on the order of 100M events
  3. Compare with data
  4. Make an estimation of this background for the PNN errors

Initail work completed to set up the framework and user directory codes:

Build flag issue with --old-specialtrigger, causing a dependency on the framaework's file.

  • Everything works as expected if you comment out the OLD_SPECIALTRIGGER block as described in the analysisbuild.txt readme file and replace it manually with whichever trigger you want to use (either works or complains that you're using the wrong one at runtime). However, you then have a dependency on a framework file.
  • When using the flag, it seems that the "#define OLD_SPECIALTRIGGER" line in causes this definition to become stuck in the pre-processor, such that it continues to be defined if you try to build without the flag at a later stage
    • Solution 1: run a CleanAll command with then re-source the file
    • Solution 2: CleanAll then log out of your ssh session and log back in, source then build

Generating a Pnn sample from the Kaon code given to me by Giuseppe.

  • Build fails due to class conflict in the public directory files
    • Solution: fixed manually by Giuseppe in the codes, largely by replacing the conflicting "Particle" class with "MyParticle"
  • Further run fails due to a special trigger issue not dependent on the build flag
    • Solution: a special trigger element of the code needs changing when swapping between MC and data files
  • Now working on afs and should be able to set up on any other system (copy placed in: userDir2)
A test analyser, to understand how to generate an analyser from scratch and plot variables in the data files, using the framework as a basis.
  • This analyser is now setup such that it builds and begins to run with the current setup, designed to record the number of spectrometer candidates, but it fails at runtime due to an issue with a special trigger which is not specifically used in the code.
    • Solution: frameworks are not yet completely backwards compatible, I need to use the --old-specialtrigger flag after "build" to get this to work
Edit | Attach | Print version | History: r20 | r12 < r11 < r10 < r9 | Backlinks | Raw View | Raw edit | More topic actions...
Topic revision: r10 - 2018-01-29 - ConnorGraham
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2021 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback