Skip to content

Commit 768e5e7

Browse files
committed
[PWGEM,PhotonMeson] Adapt IsSelected function from cut librarires and add new cluster tables for reduced derived data size
- The `IsSelected` function defined in `DalitzEECut`, `EMCPhotonCut`, `PHOSPhotonCut` and `V0PhotonCut` was changed to always have as first argument the photon and then additional arguments and template arguments specifilcy for that photon reconstruction method, e.g. matchedtrack tables for EMC or type of the legs for V0. For `DalitzEECut` the arguments are now track1, track2, B_z instead of one argument that basically packed those three into a tuple. - Based on the change above many tasks where changed accordingly where `IsSelected` was called. This was mostly just making sure the correct template arguments are given. - Changed `Pi0EtaToGammaGamma` header files to make them more readable (hopefully). Main change here is the addition of Tags for PCM, EMC, PHOS and DalitzEE and streamlining the template parameters of the main struct and the `runPairing` function - Add new EMCal cluster tables: - `EmEmcClusters_000` to store just the cluster information - `EmEmcMTracks` to store just the matched global tracks in a flat table linked to the EmEmcClusters_000 index - EmEmcMSTracks to store just the matched secondary tracks in a flat table linked to the EmEmcClusters_000 index - `MinClusters` just like `EmEmcClusters_000` but with reduced data size by compression to int16_t where possible - `MinMTracks` similar to above for `EmEmcMTracks` - `MinMSTracks` similar to above for `EmEmcMSTracks` - Changed includes to follow IWYU for all touched files - Changed `M_PI` calls where I saw them to use the o2 constants equivalent, since they are `constexpr` instead of just `const`. - Optimize compile time by using `is_table` and `is_iterator` instead of `typename` for templates in Pi0EtaToGammaGamma task and photon cuts. - Fix cpplint errors on all touched files and specifically for `gammaConversions.h` and `gammaConversionsTruthOnlyMc.cxx` - increment ClassDef of photon cuts
1 parent 8f1cf3c commit 768e5e7

40 files changed

+1571
-676
lines changed

PWGEM/PhotonMeson/Core/DalitzEECut.cxx

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,18 @@
99
// granted to it by virtue of its status as an Intergovernmental Organization
1010
// or submit itself to any jurisdiction.
1111

12-
//
13-
// Class for dilepton Cut
14-
//
12+
/// \file EMCPhotonCut.cxx
13+
/// \brief header of class for dalitz ee cuts.
14+
/// \author D. Sekihata, daiki.sekihata@cern.ch
1515

1616
#include "PWGEM/PhotonMeson/Core/DalitzEECut.h"
1717

1818
#include "Framework/Logger.h"
1919

20+
#include <Rtypes.h>
21+
22+
#include <cstdint>
23+
#include <functional>
2024
#include <set>
2125
#include <utility>
2226

PWGEM/PhotonMeson/Core/DalitzEECut.h

Lines changed: 13 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -9,31 +9,29 @@
99
// granted to it by virtue of its status as an Intergovernmental Organization
1010
// or submit itself to any jurisdiction.
1111

12-
//
13-
// Class for dalitz ee selection
14-
//
12+
/// \file EMCPhotonCut.cxx
13+
/// \brief header of class for dalitz ee cuts.
14+
/// \author D. Sekihata, daiki.sekihata@cern.ch
1515

1616
#ifndef PWGEM_PHOTONMESON_CORE_DALITZEECUT_H_
1717
#define PWGEM_PHOTONMESON_CORE_DALITZEECUT_H_
1818

1919
#include "PWGEM/Dilepton/Utils/EMTrackUtilities.h"
2020
#include "PWGEM/Dilepton/Utils/PairUtilities.h"
2121

22-
#include "Tools/ML/MlResponse.h"
23-
#include "Tools/ML/model.h"
22+
#include <CommonConstants/PhysicsConstants.h>
2423

25-
#include "CommonConstants/PhysicsConstants.h"
26-
#include "Framework/DataTypes.h"
27-
#include "Framework/Logger.h"
24+
#include <Math/Vector4D.h> // IWYU pragma: keep
25+
#include <Math/Vector4Dfwd.h>
26+
#include <TNamed.h>
2827

29-
#include "Math/Vector4D.h"
30-
#include "TNamed.h"
28+
#include <Rtypes.h>
3129

3230
#include <algorithm>
31+
#include <cstdint>
32+
#include <functional>
3333
#include <set>
34-
#include <string>
3534
#include <utility>
36-
#include <vector>
3735

3836
using namespace o2::aod::pwgem::dilepton::utils::emtrackutil;
3937

@@ -74,13 +72,9 @@ class DalitzEECut : public TNamed
7472
kTPConly = 1,
7573
};
7674

77-
template <typename T = int, typename TPair>
78-
bool IsSelected(TPair const& pair) const
75+
template <typename TTrack1, typename TTrack2>
76+
bool IsSelected(TTrack1 const& t1, TTrack2 const& t2, float bz) const
7977
{
80-
auto t1 = std::get<0>(pair);
81-
auto t2 = std::get<1>(pair);
82-
float bz = std::get<2>(pair);
83-
8478
if (!IsSelectedTrack(t1) || !IsSelectedTrack(t2)) {
8579
return false;
8680
}
@@ -361,7 +355,7 @@ class DalitzEECut : public TNamed
361355
float mMinTPCNsigmaPi{0}, mMaxTPCNsigmaPi{0};
362356
float mMinTOFNsigmaEl{-1e+10}, mMaxTOFNsigmaEl{+1e+10};
363357

364-
ClassDef(DalitzEECut, 1);
358+
ClassDef(DalitzEECut, 2);
365359
};
366360

367361
#endif // PWGEM_PHOTONMESON_CORE_DALITZEECUT_H_

PWGEM/PhotonMeson/Core/DiphotonHadronMPC.h

Lines changed: 40 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -8,50 +8,56 @@
88
// In applying this license CERN does not waive the privileges and immunities
99
// granted to it by virtue of its status as an Intergovernmental Organization
1010
// or submit itself to any jurisdiction.
11-
//
12-
// ========================
13-
//
11+
1412
/// \file DiphotonHadronMPC.h
1513
/// \brief This code is to analyze diphoton-hadron correlation. Keep in mind that cumulant method does not require event mixing.
16-
///
1714
/// \author D. Sekihata, daiki.sekihata@cern.ch
1815

1916
#ifndef PWGEM_PHOTONMESON_CORE_DIPHOTONHADRONMPC_H_
2017
#define PWGEM_PHOTONMESON_CORE_DIPHOTONHADRONMPC_H_
2118

2219
#include "PWGEM/Dilepton/Core/EMTrackCut.h"
2320
#include "PWGEM/Dilepton/Utils/EMTrack.h"
24-
#include "PWGEM/Dilepton/Utils/EMTrackUtilities.h"
2521
#include "PWGEM/Dilepton/Utils/EventMixingHandler.h"
2622
#include "PWGEM/PhotonMeson/Core/DalitzEECut.h"
2723
#include "PWGEM/PhotonMeson/Core/EMPhotonEventCut.h"
2824
#include "PWGEM/PhotonMeson/Core/V0PhotonCut.h"
2925
#include "PWGEM/PhotonMeson/DataModel/gammaTables.h"
3026
#include "PWGEM/PhotonMeson/Utils/EventHistograms.h"
31-
#include "PWGEM/PhotonMeson/Utils/NMHistograms.h"
3227
#include "PWGEM/PhotonMeson/Utils/PairUtilities.h"
3328

34-
#include "Common/CCDB/RCTSelectionFlags.h"
35-
#include "Common/Core/RecoDecay.h"
36-
37-
#include "CCDB/BasicCCDBManager.h"
38-
#include "DataFormatsParameters/GRPMagField.h"
39-
#include "DataFormatsParameters/GRPObject.h"
40-
#include "DetectorsBase/GeometryManager.h"
41-
#include "Framework/ASoAHelpers.h"
42-
#include "Framework/AnalysisDataModel.h"
43-
#include "Framework/AnalysisTask.h"
44-
#include "Framework/runDataProcessing.h"
45-
46-
#include "Math/Vector4D.h"
47-
#include "TString.h"
29+
#include <Common/CCDB/RCTSelectionFlags.h>
30+
#include <Common/Core/RecoDecay.h>
31+
#include <Common/DataModel/Centrality.h>
32+
#include <Common/DataModel/EventSelection.h>
33+
#include <Common/DataModel/PIDResponseTPC.h>
34+
35+
#include <CCDB/BasicCCDBManager.h>
36+
#include <CCDB/CcdbApi.h>
37+
#include <CommonConstants/MathConstants.h>
38+
#include <CommonConstants/PhysicsConstants.h>
39+
#include <DataFormatsParameters/GRPMagField.h>
40+
#include <DataFormatsParameters/GRPObject.h>
41+
#include <Framework/ASoAHelpers.h>
42+
#include <Framework/AnalysisDataModel.h>
43+
#include <Framework/AnalysisHelpers.h>
44+
#include <Framework/AnalysisTask.h>
45+
#include <Framework/Configurable.h>
46+
#include <Framework/HistogramRegistry.h>
47+
#include <Framework/HistogramSpec.h>
48+
#include <Framework/InitContext.h>
49+
#include <Framework/OutputObjHeader.h>
50+
#include <Framework/runDataProcessing.h>
51+
52+
#include <Math/Vector4D.h> // IWYU pragma: keep
53+
#include <Math/Vector4Dfwd.h>
4854

4955
#include <algorithm>
50-
#include <array>
51-
#include <cstring>
52-
#include <iterator>
56+
#include <cmath>
57+
#include <cstdint>
5358
#include <map>
5459
#include <string>
60+
#include <string_view>
5561
#include <tuple>
5662
#include <utility>
5763
#include <vector>
@@ -353,11 +359,11 @@ struct DiphotonHadronMPC {
353359

354360
// diphoton-hadron info
355361
const AxisSpec axis_deta{ConfDEtaBins, deta_axis_title};
356-
const AxisSpec axis_dphi{cfgNbinsDPhi, -M_PI / 2, +3 * M_PI / 2, dphi_axis_title};
362+
const AxisSpec axis_dphi{cfgNbinsDPhi, -o2::constants::math::PIHalf, +3 * o2::constants::math::PIHalf, dphi_axis_title};
357363

358364
const AxisSpec axis_pt_hadron{ConfPtHadronBins, "p_{T,h} (GeV/c)"};
359365
const AxisSpec axis_eta_hadron{40, -2, +2, "#eta_{h}"};
360-
const AxisSpec axis_phi_hadron{36, 0, 2 * M_PI, "#varphi_{h} (rad.)"};
366+
const AxisSpec axis_phi_hadron{36, 0, o2::constants::math::TwoPI, "#varphi_{h} (rad.)"};
361367

362368
fRegistry.add("Hadron/hs", "hadron", kTHnSparseD, {axis_pt_hadron, axis_eta_hadron, axis_phi_hadron}, false);
363369
fRegistry.add("Hadron/hTrackBit", "track bit", kTH1D, {{65536, -0.5, 65535.5}}, false);
@@ -370,7 +376,7 @@ struct DiphotonHadronMPC {
370376

371377
// hadron-hadron
372378
const AxisSpec axis_deta_hh{60, -3, +3, "#Delta#eta = #eta_{h}^{ref1} - #eta_{h}^{ref2}"};
373-
const AxisSpec axis_dphi_hh{90, -M_PI / 2, +3 * M_PI / 2, "#Delta#varphi = #varphi_{h}^{ref1} - #varphi_{h}^{ref2} (rad.)"};
379+
const AxisSpec axis_dphi_hh{90, -o2::constants::math::PIHalf, +3 * o2::constants::math::PIHalf, "#Delta#varphi = #varphi_{h}^{ref1} - #varphi_{h}^{ref2} (rad.)"};
374380
// const AxisSpec axis_cosndphi_hh{cfgNbinsCosNDPhi, -1, +1, std::format("cos({0:d}(#varphi_{{h}}^{{ref1}} - #varphi_{{h}}^{{ref2}}))", cfgNmod.value)};
375381
fRegistry.add("HadronHadron/same/hDEtaDPhi", "hadron-hadron 2PC", kTH2D, {axis_dphi_hh, axis_deta_hh}, true);
376382
fRegistry.addClone("HadronHadron/same/", "HadronHadron/mix/");
@@ -564,7 +570,7 @@ struct DiphotonHadronMPC {
564570
auto photons2_per_collision = photons2.sliceBy(perCollision2, collision.globalIndex());
565571

566572
for (const auto& [g1, g2] : combinations(CombinationsStrictlyUpperIndexPolicy(photons1_per_collision, photons2_per_collision))) {
567-
if (!cut1.template IsSelected<TSubInfos1>(g1) || !cut2.template IsSelected<TSubInfos2>(g2)) {
573+
if (!cut1.template IsSelected<decltype(g1), TSubInfos1>(g1) || !cut2.template IsSelected<decltype(g2), TSubInfos2>(g2)) {
568574
continue;
569575
}
570576

@@ -594,7 +600,7 @@ struct DiphotonHadronMPC {
594600
float deta = v12.Eta() - v3.Eta();
595601
float dphi = v12.Phi() - v3.Phi();
596602
// o2::math_utils::bringTo02Pi(dphi);
597-
dphi = RecoDecay::constrainAngle(dphi, -M_PI / 2, 1U);
603+
dphi = RecoDecay::constrainAngle(dphi, -o2::constants::math::PIHalf, 1U);
598604
fRegistry.fill(HIST("DiphotonHadron/same/hs"), v12.M(), v12.Pt(), deta, dphi);
599605
npair++;
600606
}
@@ -624,7 +630,7 @@ struct DiphotonHadronMPC {
624630
auto electrons_per_collision = electrons->sliceByCached(o2::aod::emprimaryelectron::emeventId, collision.globalIndex(), cache);
625631

626632
for (const auto& g1 : photons1_per_collision) {
627-
if (!cut1.template IsSelected<TSubInfos1>(g1)) {
633+
if (!cut1.template IsSelected<decltype(g1), TSubInfos1>(g1)) {
628634
continue;
629635
}
630636
auto pos1 = g1.template posTrack_as<TSubInfos1>();
@@ -670,7 +676,7 @@ struct DiphotonHadronMPC {
670676
float deta = veeg.Eta() - v3.Eta();
671677
float dphi = veeg.Phi() - v3.Phi();
672678
// o2::math_utils::bringTo02Pi(dphi);
673-
dphi = RecoDecay::constrainAngle(dphi, -M_PI / 2, 1U);
679+
dphi = RecoDecay::constrainAngle(dphi, -o2::constants::math::PIHalf, 1U);
674680
fRegistry.fill(HIST("DiphotonHadron/same/hs"), veeg.M(), veeg.Pt(), deta, dphi);
675681
npair++;
676682

@@ -720,7 +726,7 @@ struct DiphotonHadronMPC {
720726
float deta = ref1.eta() - ref2.eta();
721727
float dphi = ref1.phi() - ref2.phi();
722728
// o2::math_utils::bringTo02Pi(dphi);
723-
dphi = RecoDecay::constrainAngle(dphi, -M_PI / 2, 1U);
729+
dphi = RecoDecay::constrainAngle(dphi, -o2::constants::math::PIHalf, 1U);
724730
fRegistry.fill(HIST("HadronHadron/same/hDEtaDPhi"), dphi, deta);
725731
}
726732
}
@@ -794,7 +800,7 @@ struct DiphotonHadronMPC {
794800
float deta = trg.eta() - ref.eta();
795801
float dphi = trg.phi() - ref.phi();
796802
// o2::math_utils::bringTo02Pi(dphi);
797-
dphi = RecoDecay::constrainAngle(dphi, -M_PI / 2, 1U);
803+
dphi = RecoDecay::constrainAngle(dphi, -o2::constants::math::PIHalf, 1U);
798804
fRegistry.fill(HIST("DiphotonHadron/mix/hs"), trg.mass(), trg.pt(), deta, dphi);
799805
}
800806
}
@@ -889,7 +895,7 @@ struct DiphotonHadronMPC {
889895
float deta = trg.eta() - ref.eta();
890896
float dphi = trg.phi() - ref.phi();
891897
// o2::math_utils::bringTo02Pi(dphi);
892-
dphi = RecoDecay::constrainAngle(dphi, -M_PI / 2, 1U);
898+
dphi = RecoDecay::constrainAngle(dphi, -o2::constants::math::PIHalf, 1U);
893899
fRegistry.fill(HIST("DiphotonHadron/mix/hs"), trg.mass(), trg.pt(), deta, dphi);
894900
}
895901
}
@@ -917,7 +923,7 @@ struct DiphotonHadronMPC {
917923
float deta = ref1.eta() - ref2.eta();
918924
float dphi = ref1.phi() - ref2.phi();
919925
// o2::math_utils::bringTo02Pi(dphi);
920-
dphi = RecoDecay::constrainAngle(dphi, -M_PI / 2, 1U);
926+
dphi = RecoDecay::constrainAngle(dphi, -o2::constants::math::PIHalf, 1U);
921927
fRegistry.fill(HIST("HadronHadron/mix/hDEtaDPhi"), dphi, deta);
922928
}
923929
}

0 commit comments

Comments
 (0)