Multiplicity and centrality selection in O2

Multiplicity selection concept

The multiplicity and centrality selection in O2 is based on the concept of derived tables created in dedicated tasks from available AOD contents:

  • o2-analysis-multiplicity-table task Common/TableProducer/multiplicityTable.cxx stores relevant multiplicity values (V0A, V0C, ZNA, ZNC) and their dynamic sums (V0M) in Mults table joinable with Collisions table.
  • o2-analysis-multiplicity-qa task Common/Tasks/multiplicityQa.cxx creates multiplicity distributions in minimum bias triggers necessary for centrality calibration.
  • o2-analysis-centrality-table task Common/TableProducer/centralityTable.cxx takes multiplicity values from the Mults table and stores centrality values in Cents table joinable with Collisions table. Relevant cumulative multiplicity distributions are stored in CCDB. The centrality calibration relies on 90% anchor points in Pb-Pb.
  • o2-analysis-centrality-qa task Common/Tasks/centralityQa.cxx creates centrality distributions for minimum bias triggers and can be used for control and QA purposes.

Note that o2-analysis-multiplicity-qa and o2-analysis-centrality-qa tasks rely on the minimum bias trigger selection therefore one has to run event selection in stack with these tasks.

Multiplicity selection usage in user tasks

One can check o2-analysis-centrality-qa task for example usage: Common/Tasks/centralityQa.cxx. Usually, analysers perform event selection before the centrality selection therefore one has to consider the following steps:

  • add EventSelection.h and Centrality.h headers:

      #include "Common/DataModel/EventSelection.h"
      #include "Common/DataModel/Centrality.h"
    
  • join Collisions, EvSels and Cents tables and use corresponding iterator as an argument of the process function:

      void process(soa::Join<aod::Collisions, aod::EvSels, aod::Cents>::iterator const& col, ...)
    
  • check if your trigger alias is fired if you run over Run1 or Run2 data (or future triggered Run3 data):

      if (!col.alias_bit(kINT7))
        return;
    

    Bypass this check if you analyse MC or future continuous Run3 data.

  • apply further offline selection criteria:

      if (!col.sel7())
        return;
    
  • apply centrality selection, for example:

      // analyse 0-20% central events
      if (col.centV0M()>20)
        return;
    
  • run your tasks in stack with timestamp, event-selection, multiplicity and centrality tasks:

      o2-analysis-timestamp --aod-file AO2D.root -b | o2-analysis-event-selection -b | o2-analysis-mulitplicity-table -b | o2-analysis-centrality-table -b | o2-analysis-user-task -b
    

    o2-analysis-timestamp task is required to create per-event timestamps necessary to access relevant CCDB objects in the event selection and/or centrality tasks.

    o2-analysis-zdc-converter and o2-analysis-collision-converter might be also necessary for old datasets to account for changes in the data model.