Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 12 additions & 12 deletions EventFiltering/PWGEM/EMPhotonFilter.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -12,16 +12,19 @@
// \brief software trigger for EM photon
// \author daiki.sekihata@cern.ch

#include "Math/Vector4D.h"
#include "Framework/runDataProcessing.h"
#include "Framework/AnalysisTask.h"
#include "Framework/AnalysisDataModel.h"
#include "Framework/ASoAHelpers.h"
#include "Common/DataModel/CaloClusters.h"
#include "DataFormatsPHOS/TriggerRecord.h"
#include "PWGEM/PhotonMeson/DataModel/gammaTables.h"

#include "Common/DataModel/CaloClusters.h"
#include "EventFiltering/filterTables.h"

#include "DataFormatsPHOS/TriggerRecord.h"
#include "Framework/ASoAHelpers.h"
#include "Framework/AnalysisDataModel.h"
#include "Framework/AnalysisTask.h"
#include "Framework/HistogramRegistry.h"
#include "Framework/runDataProcessing.h"

#include "Math/Vector4D.h"

using namespace o2;
using namespace o2::soa;
Expand Down Expand Up @@ -128,7 +131,7 @@
return false;
}

if (track.pt() < minpt || abs(track.eta()) > maxeta) {

Check failure on line 134 in EventFiltering/PWGEM/EMPhotonFilter.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[std-prefix]

Use std:: prefix for names from the std namespace.
return false;
}

Expand Down Expand Up @@ -174,23 +177,23 @@
template <uint8_t system, typename TCollisions, typename TPhotons1, typename TPhotons2, typename TPhotons3, typename TV0Legs, typename TDielectrons, typename TEMPrimaryElectrons>
void runFilter(TCollisions const& collisions, TPhotons1 const& photons1, TPhotons2 const& photons2, TPhotons3 const& /*photons3*/, TV0Legs const&, TDielectrons const& dielectrons, TEMPrimaryElectrons const& /*emprimaryelectrons*/)
{
for (auto& collision : collisions) {

Check failure on line 180 in EventFiltering/PWGEM/EMPhotonFilter.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[const-ref-in-for-loop]

Use constant references for non-modified iterators in range-based for loops.
mHistManager.fill(HIST("hEventCounter"), 1.);
bool keepEvent[kNtrg]{false};

if (collision.sel8()) {
mHistManager.fill(HIST("hEventCounter"), 2.);
}
if (abs(collision.posZ()) < 10.f) {

Check failure on line 187 in EventFiltering/PWGEM/EMPhotonFilter.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[magic-number]

Avoid magic numbers in expressions. Assign the value to a clearly named variable or constant.

Check failure on line 187 in EventFiltering/PWGEM/EMPhotonFilter.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[std-prefix]

Use std:: prefix for names from the std namespace.
mHistManager.fill(HIST("hEventCounter"), 3.);
}
if (collision.selection_bit(aod::evsel::kNoTimeFrameBorder)) {
mHistManager.fill(HIST("hEventCounter"), 4.);
}
if (collision.sel8() && abs(collision.posZ()) < 10.f) {

Check failure on line 193 in EventFiltering/PWGEM/EMPhotonFilter.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[std-prefix]

Use std:: prefix for names from the std namespace.
mHistManager.fill(HIST("hEventCounter"), 5.);
}
if (collision.sel8() && abs(collision.posZ()) < 10.f && collision.selection_bit(aod::evsel::kNoTimeFrameBorder)) {

Check failure on line 196 in EventFiltering/PWGEM/EMPhotonFilter.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[std-prefix]

Use std:: prefix for names from the std namespace.
mHistManager.fill(HIST("hEventCounter"), 6.);
}

Expand All @@ -203,7 +206,7 @@
auto photons1_per_coll = photons1.sliceBy(perCollision_pcm, collision.globalIndex());
auto dielectrons_per_coll = dielectrons.sliceBy(perCollision_ee, collision.globalIndex());

for (auto& v0photon : photons1_per_coll) {

Check failure on line 209 in EventFiltering/PWGEM/EMPhotonFilter.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[const-ref-in-for-loop]

Use constant references for non-modified iterators in range-based for loops.
auto pos_sv = v0photon.template posTrack_as<TV0Legs>();
auto ele_sv = v0photon.template negTrack_as<TV0Legs>();
if (!isSelectedSecondary(pos_sv) || !isSelectedSecondary(ele_sv)) {
Expand All @@ -215,7 +218,7 @@
}
} // end of single v0 photon loop

for (auto& [g1, g2] : combinations(CombinationsFullIndexPolicy(photons1_per_coll, dielectrons_per_coll))) {

Check failure on line 221 in EventFiltering/PWGEM/EMPhotonFilter.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[const-ref-in-for-loop]

Use constant references for non-modified iterators in range-based for loops.
auto pos_sv = g1.template posTrack_as<TV0Legs>();
auto ele_sv = g1.template negTrack_as<TV0Legs>();
if (!isSelectedSecondary(pos_sv) || !isSelectedSecondary(ele_sv)) {
Expand Down Expand Up @@ -279,8 +282,8 @@
if (clu2.trackdist() < 1.) { // select neutral clusters. Disp, Ncell cuts?
continue;
}
double m = pow(clu.e() + clu2.e(), 2) - pow(clu.px() + clu2.px(), 2) -

Check failure on line 285 in EventFiltering/PWGEM/EMPhotonFilter.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[std-prefix]

Use std:: prefix for names from the std namespace.
pow(clu.py() + clu2.py(), 2) - pow(clu.pz() + clu2.pz(), 2);

Check failure on line 286 in EventFiltering/PWGEM/EMPhotonFilter.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[std-prefix]

Use std:: prefix for names from the std namespace.
if (m > ePair * ePair) {
keepEvent[kPHOS_Pair] |= true;
break;
Expand Down Expand Up @@ -325,13 +328,10 @@
} // end of collision loop
}

Filter PCMFilter = o2::aod::v0photonkf::dcaXYtopv < max_dcatopv_xy_v0 && o2::aod::v0photonkf::dcaZtopv < max_dcatopv_z_v0;
using filteredV0PhotonsKF = Filtered<aod::V0PhotonsKF>;

Filter DalitzEEFilter = o2::aod::dalitzee::sign == 0; // analyze only uls
using filteredDalitzEEs = Filtered<aod::DalitzEEs>;

void process_PCM(MyCollisions const& collisions, filteredV0PhotonsKF const& v0photons, aod::V0Legs const& v0legs, filteredDalitzEEs const& dielectrons, MyPrimaryElectrons const& emprimaryelectrons)
void process_PCM(MyCollisions const& collisions, aod::V0PhotonsKF const& v0photons, aod::V0Legs const& v0legs, filteredDalitzEEs const& dielectrons, MyPrimaryElectrons const& emprimaryelectrons)
{
const uint8_t system = EM_Filter_PhotonType::kPCM;
runFilter<system>(collisions, v0photons, nullptr, nullptr, v0legs, dielectrons, emprimaryelectrons);
Expand All @@ -351,7 +351,7 @@
runFilter<system>(collisions, nullptr, nullptr, clusters, nullptr, nullptr, nullptr);
}

void process_PCM_PHOS(MyCollisions const& collisions, filteredV0PhotonsKF const& v0photons, aod::V0Legs const& v0legs, filteredDalitzEEs const& dielectrons, MyPrimaryElectrons const& emprimaryelectrons, CluCandidates const& clusters)
void process_PCM_PHOS(MyCollisions const& collisions, aod::V0PhotonsKF const& v0photons, aod::V0Legs const& v0legs, filteredDalitzEEs const& dielectrons, MyPrimaryElectrons const& emprimaryelectrons, CluCandidates const& clusters)
{
const uint8_t system = EM_Filter_PhotonType::kPCM | EM_Filter_PhotonType::kPHOS;
runFilter<system>(collisions, v0photons, clusters, nullptr, v0legs, dielectrons, emprimaryelectrons);
Expand Down
14 changes: 7 additions & 7 deletions PWGEM/PhotonMeson/Core/DalitzEECut.h
Original file line number Diff line number Diff line change
Expand Up @@ -240,10 +240,10 @@ class DalitzEECut : public TNamed
{
switch (cut) {
case DalitzEECuts::kTrackPtRange:
return track.pt() >= mMinTrackPt && track.pt() <= mMaxTrackPt;
return track.pt() > mMinTrackPt && track.pt() < mMaxTrackPt;

case DalitzEECuts::kTrackEtaRange:
return track.eta() >= mMinTrackEta && track.eta() <= mMaxTrackEta;
return track.eta() > mMinTrackEta && track.eta() < mMaxTrackEta;

case DalitzEECuts::kTPCNCls:
return track.tpcNClsFound() >= mMinNClustersTPC;
Expand All @@ -255,19 +255,19 @@ class DalitzEECut : public TNamed
return track.tpcCrossedRowsOverFindableCls() >= mMinNCrossedRowsOverFindableClustersTPC;

case DalitzEECuts::kTPCFracSharedClusters:
return track.tpcFractionSharedCls() <= mMaxFracSharedClustersTPC;
return track.tpcFractionSharedCls() < mMaxFracSharedClustersTPC;

case DalitzEECuts::kTPCChi2NDF:
return mMinChi2PerClusterTPC < track.tpcChi2NCl() && track.tpcChi2NCl() < mMaxChi2PerClusterTPC;

case DalitzEECuts::kDCA3Dsigma:
return mMinDca3D <= dca3DinSigma(track) && dca3DinSigma(track) <= mMaxDca3D; // in sigma for single leg
return mMinDca3D < dca3DinSigma(track) && dca3DinSigma(track) < mMaxDca3D; // in sigma for single leg

case DalitzEECuts::kDCAxy:
return std::fabs(track.dcaXY()) <= ((mMaxDcaXYPtDep) ? mMaxDcaXYPtDep(track.pt()) : mMaxDcaXY);
return std::fabs(track.dcaXY()) < ((mMaxDcaXYPtDep) ? mMaxDcaXYPtDep(track.pt()) : mMaxDcaXY);

case DalitzEECuts::kDCAz:
return std::fabs(track.dcaZ()) <= mMaxDcaZ;
return std::fabs(track.dcaZ()) < mMaxDcaZ;

case DalitzEECuts::kITSNCls:
return mMinNClustersITS <= track.itsNCls() && track.itsNCls() <= mMaxNClustersITS;
Expand All @@ -283,7 +283,7 @@ class DalitzEECut : public TNamed
// Setters
void SetPairPtRange(float minPt = 0.f, float maxPt = 1e10f);
void SetPairYRange(float minY = -1e10f, float maxY = 1e10f);
void SetMeeRange(float min = 0.f, float max = 0.5);
void SetMeeRange(float min = 0.f, float max = 0.04);
void SetMaxPhivPairMeeDep(std::function<float(float)> meeDepCut);
void SelectPhotonConversion(bool flag);

Expand Down
91 changes: 68 additions & 23 deletions PWGEM/PhotonMeson/Core/Pi0EtaToGammaGamma.h
Original file line number Diff line number Diff line change
Expand Up @@ -71,9 +71,12 @@ using namespace o2::aod::pwgem::photon;
using namespace o2::aod::pwgem::dilepton::utils::emtrackutil;
using namespace o2::aod::pwgem::dilepton::utils;

using MyCollisions = soa::Join<aod::EMEvents, aod::EMEventsMult, aod::EMEventsCent, aod::EMEventsQvec, aod::EMEventsWeight>;
using MyCollisions = soa::Join<aod::EMEvents, aod::EMEventsMult, aod::EMEventsCent, aod::EMEventsQvec>;
using MyCollision = MyCollisions::iterator;

using MyCollisionsWithJJMC = soa::Join<MyCollisions, aod::EMEventsWeight>;
using MyCollisionWithJJMC = MyCollisionsWithJJMC::iterator;

using MyV0Photons = soa::Filtered<soa::Join<aod::V0PhotonsKF, aod::V0KFEMEventIds, aod::V0PhotonsKFPrefilterBitDerived>>;
using MyV0Photon = MyV0Photons::iterator;

Expand Down Expand Up @@ -142,18 +145,18 @@ struct Pi0EtaToGammaGamma {
Configurable<float> cfg_max_v0radius{"cfg_max_v0radius", 90.0, "max v0 radius"};
Configurable<float> cfg_max_alpha_ap{"cfg_max_alpha_ap", 0.95, "max alpha for AP cut"};
Configurable<float> cfg_max_qt_ap{"cfg_max_qt_ap", 0.01, "max qT for AP cut"};
Configurable<float> cfg_min_cospa{"cfg_min_cospa", 0.997, "min V0 CosPA"};
Configurable<float> cfg_max_pca{"cfg_max_pca", 3.0, "max distance btween 2 legs"};
Configurable<float> cfg_min_cospa{"cfg_min_cospa", 0.999, "min V0 CosPA"};
Configurable<float> cfg_max_pca{"cfg_max_pca", 1.5, "max distance btween 2 legs"};
Configurable<float> cfg_max_chi2kf{"cfg_max_chi2kf", 1e+10, "max chi2/ndf with KF"};
Configurable<bool> cfg_require_v0_with_correct_xz{"cfg_require_v0_with_correct_xz", true, "flag to select V0s with correct xz"};
Configurable<bool> cfg_require_v0_with_correct_xz{"cfg_require_v0_with_correct_xz", false, "flag to select V0s with correct xz"};
Configurable<bool> cfg_reject_v0_on_itsib{"cfg_reject_v0_on_itsib", true, "flag to reject V0s on ITSib"};
Configurable<bool> cfg_apply_cuts_from_prefilter_derived{"cfg_apply_cuts_from_prefilter_derived", false, "flag to apply prefilter to V0"};

Configurable<int> cfg_min_ncluster_tpc{"cfg_min_ncluster_tpc", 10, "min ncluster tpc"};
Configurable<int> cfg_min_ncluster_tpc{"cfg_min_ncluster_tpc", 0, "min ncluster tpc"};
Configurable<int> cfg_min_ncrossedrows{"cfg_min_ncrossedrows", 40, "min ncrossed rows"};
Configurable<float> cfg_max_frac_shared_clusters_tpc{"cfg_max_frac_shared_clusters_tpc", 999.f, "max fraction of shared clusters in TPC"};
Configurable<float> cfg_max_chi2tpc{"cfg_max_chi2tpc", 4.0, "max chi2/NclsTPC"};
Configurable<float> cfg_max_chi2its{"cfg_max_chi2its", 5.0, "max chi2/NclsITS"};
Configurable<float> cfg_max_chi2its{"cfg_max_chi2its", 36.0, "max chi2/NclsITS"};
Configurable<float> cfg_min_TPCNsigmaEl{"cfg_min_TPCNsigmaEl", -3.0, "min. TPC n sigma for electron"};
Configurable<float> cfg_max_TPCNsigmaEl{"cfg_max_TPCNsigmaEl", +3.0, "max. TPC n sigma for electron"};
Configurable<bool> cfg_disable_itsonly_track{"cfg_disable_itsonly_track", false, "flag to disable ITSonly tracks"};
Expand All @@ -177,7 +180,7 @@ struct Pi0EtaToGammaGamma {
Configurable<int> cfg_min_ncluster_its{"cfg_min_ncluster_its", 5, "min ncluster its"};
Configurable<int> cfg_min_ncrossedrows{"cfg_min_ncrossedrows", 70, "min ncrossed rows"};
Configurable<float> cfg_max_chi2tpc{"cfg_max_chi2tpc", 4.0, "max chi2/NclsTPC"};
Configurable<float> cfg_max_chi2its{"cfg_max_chi2its", 5.0, "max chi2/NclsITS"};
Configurable<float> cfg_max_chi2its{"cfg_max_chi2its", 36.0, "max chi2/NclsITS"};
Configurable<float> cfg_max_dcaxy{"cfg_max_dcaxy", 0.05, "max dca XY for single track in cm"};
Configurable<float> cfg_max_dcaz{"cfg_max_dcaz", 0.05, "max dca Z for single track in cm"};
Configurable<float> cfg_max_dca3dsigma_track{"cfg_max_dca3dsigma_track", 1.5, "max DCA 3D in sigma"};
Expand Down Expand Up @@ -548,8 +551,8 @@ struct Pi0EtaToGammaGamma {
Preslice<MyPHOSClusters> perCollision_phos = aod::phoscluster::emeventId;

Preslice<MyPrimaryElectrons> perCollision_electron = aod::emprimaryelectron::emeventId;
Partition<MyPrimaryElectrons> positrons = o2::aod::emprimaryelectron::sign > int8_t(0) && static_cast<float>(dileptoncuts.cfg_min_pt_track) < o2::aod::track::pt&& nabs(o2::aod::track::eta) < static_cast<float>(dileptoncuts.cfg_max_eta_track) && static_cast<float>(dileptoncuts.cfg_min_TPCNsigmaEl) < o2::aod::pidtpc::tpcNSigmaEl&& o2::aod::pidtpc::tpcNSigmaEl < static_cast<float>(dileptoncuts.cfg_max_TPCNsigmaEl);
Partition<MyPrimaryElectrons> electrons = o2::aod::emprimaryelectron::sign < int8_t(0) && static_cast<float>(dileptoncuts.cfg_min_pt_track) < o2::aod::track::pt && nabs(o2::aod::track::eta) < static_cast<float>(dileptoncuts.cfg_max_eta_track) && static_cast<float>(dileptoncuts.cfg_min_TPCNsigmaEl) < o2::aod::pidtpc::tpcNSigmaEl && o2::aod::pidtpc::tpcNSigmaEl < static_cast<float>(dileptoncuts.cfg_max_TPCNsigmaEl);
Partition<MyPrimaryElectrons> positrons = o2::aod::emprimaryelectron::sign > int8_t(0) && dileptoncuts.cfg_min_pt_track < o2::aod::track::pt&& nabs(o2::aod::track::eta) < dileptoncuts.cfg_max_eta_track;
Partition<MyPrimaryElectrons> electrons = o2::aod::emprimaryelectron::sign < int8_t(0) && dileptoncuts.cfg_min_pt_track < o2::aod::track::pt && nabs(o2::aod::track::eta) < dileptoncuts.cfg_max_eta_track;

using MyEMH = o2::aod::pwgem::dilepton::utils::EventMixingHandler<std::tuple<int, int, int, int>, std::pair<int, int>, EMTrack>;
MyEMH* emh1 = nullptr;
Expand All @@ -572,7 +575,12 @@ struct Pi0EtaToGammaGamma {
continue;
}

if (eventcuts.onlyKeepWeightedEvents && std::fabs(collision.weight() - 1.) < 1E-10) {
float weight = 1.f;
if constexpr (std::is_same_v<std::decay_t<TCollisions>, FilteredMyCollisionsWithJJMC>) {
weight = collision.weight();
}

if (eventcuts.onlyKeepWeightedEvents && std::fabs(weight - 1.f) < 1E-10) {
continue;
}

Expand All @@ -581,13 +589,13 @@ struct Pi0EtaToGammaGamma {
continue;
}

o2::aod::pwgem::photonmeson::utils::eventhistogram::fillEventInfo<0>(&fRegistry, collision, collision.weight());
o2::aod::pwgem::photonmeson::utils::eventhistogram::fillEventInfo<0>(&fRegistry, collision, weight);
if (!fEMEventCut.IsSelected(collision)) {
continue;
}
o2::aod::pwgem::photonmeson::utils::eventhistogram::fillEventInfo<1>(&fRegistry, collision, collision.weight());
fRegistry.fill(HIST("Event/before/hCollisionCounter"), 12.0, collision.weight()); // accepted
fRegistry.fill(HIST("Event/after/hCollisionCounter"), 12.0, collision.weight()); // accepted
o2::aod::pwgem::photonmeson::utils::eventhistogram::fillEventInfo<1>(&fRegistry, collision, weight);
fRegistry.fill(HIST("Event/before/hCollisionCounter"), 12.0, weight); // accepted
fRegistry.fill(HIST("Event/after/hCollisionCounter"), 12.0, weight); // accepted

int zbin = lower_bound(zvtx_bin_edges.begin(), zvtx_bin_edges.end(), collision.posZ()) - zvtx_bin_edges.begin() - 1;
if (zbin < 0) {
Expand Down Expand Up @@ -655,10 +663,10 @@ struct Pi0EtaToGammaGamma {
}
}

fRegistry.fill(HIST("Pair/same/hs"), v12.M(), v12.Pt(), collision.weight());
fRegistry.fill(HIST("Pair/same/hs"), v12.M(), v12.Pt(), weight);

if constexpr (pairtype == PairType::kEMCEMC) {
RotationBackground<MyEMCClusters>(v12, v1, v2, photons2_per_collision, g1.globalIndex(), g2.globalIndex(), collision.weight());
RotationBackground<MyEMCClusters>(v12, v1, v2, photons2_per_collision, g1.globalIndex(), g2.globalIndex(), weight);
}

std::pair<int, int> pair_tmp_id1 = std::make_pair(ndf, g1.globalIndex());
Expand Down Expand Up @@ -712,7 +720,7 @@ struct Pi0EtaToGammaGamma {
continue;
}

fRegistry.fill(HIST("Pair/same/hs"), veeg.M(), veeg.Pt(), collision.weight());
fRegistry.fill(HIST("Pair/same/hs"), veeg.M(), veeg.Pt(), weight);

std::pair<int, int> pair_tmp_id1 = std::make_pair(ndf, g1.globalIndex());
std::tuple<int, int, int, int> tuple_tmp_id2 = std::make_tuple(ndf, collision.globalIndex(), pos2.trackId(), ele2.trackId());
Expand Down Expand Up @@ -742,7 +750,7 @@ struct Pi0EtaToGammaGamma {
continue;
}

fRegistry.fill(HIST("Pair/same/hs"), v12.M(), v12.Pt(), collision.weight());
fRegistry.fill(HIST("Pair/same/hs"), v12.M(), v12.Pt(), weight);

std::pair<int, int> pair_tmp_id1 = std::make_pair(ndf, g1.globalIndex());
std::pair<int, int> pair_tmp_id2 = std::make_pair(ndf, g2.globalIndex());
Expand Down Expand Up @@ -799,7 +807,7 @@ struct Pi0EtaToGammaGamma {
continue;
}

fRegistry.fill(HIST("Pair/mix/hs"), v12.M(), v12.Pt(), collision.weight());
fRegistry.fill(HIST("Pair/mix/hs"), v12.M(), v12.Pt(), weight);
}
}
} // end of loop over mixed event pool
Expand Down Expand Up @@ -834,7 +842,7 @@ struct Pi0EtaToGammaGamma {
if (std::fabs(v12.Rapidity()) > maxY) {
continue;
}
fRegistry.fill(HIST("Pair/mix/hs"), v12.M(), v12.Pt(), collision.weight());
fRegistry.fill(HIST("Pair/mix/hs"), v12.M(), v12.Pt(), weight);
}
}
} // end of loop over mixed event pool
Expand Down Expand Up @@ -867,7 +875,7 @@ struct Pi0EtaToGammaGamma {
if (std::fabs(v12.Rapidity()) > maxY) {
continue;
}
fRegistry.fill(HIST("Pair/mix/hs"), v12.M(), v12.Pt(), collision.weight());
fRegistry.fill(HIST("Pair/mix/hs"), v12.M(), v12.Pt(), weight);
}
}
} // end of loop over mixed event pool
Expand Down Expand Up @@ -925,9 +933,46 @@ struct Pi0EtaToGammaGamma {
// }
ndf++;
}
PROCESS_SWITCH(Pi0EtaToGammaGamma, processAnalysis, "process pair analysis", false);
PROCESS_SWITCH(Pi0EtaToGammaGamma, processAnalysis, "process pair analysis", true);

using FilteredMyCollisionsWithJJMC = soa::Filtered<MyCollisionsWithJJMC>;
void processAnalysisJJMC(FilteredMyCollisionsWithJJMC const& collisions, Types const&... args)
{
// LOGF(info, "ndf = %d", ndf);
if constexpr (pairtype == PairType::kPCMPCM) {
auto v0photons = std::get<0>(std::tie(args...));
auto v0legs = std::get<1>(std::tie(args...));
runPairing(collisions, v0photons, v0photons, v0legs, v0legs, perCollision_pcm, perCollision_pcm, fV0PhotonCut, fV0PhotonCut);
} else if constexpr (pairtype == PairType::kPCMDalitzEE) {
auto v0photons = std::get<0>(std::tie(args...));
auto v0legs = std::get<1>(std::tie(args...));
auto emprimaryelectrons = std::get<2>(std::tie(args...));
// LOGF(info, "electrons.size() = %d, positrons.size() = %d", electrons.size(), positrons.size());
runPairing(collisions, v0photons, emprimaryelectrons, v0legs, emprimaryelectrons, perCollision_pcm, perCollision_electron, fV0PhotonCut, fDileptonCut);
} else if constexpr (pairtype == PairType::kEMCEMC) {
auto emcclusters = std::get<0>(std::tie(args...));
runPairing(collisions, emcclusters, emcclusters, nullptr, nullptr, perCollision_emc, perCollision_emc, fEMCCut, fEMCCut);
} else if constexpr (pairtype == PairType::kPHOSPHOS) {
auto phosclusters = std::get<0>(std::tie(args...));
runPairing(collisions, phosclusters, phosclusters, nullptr, nullptr, perCollision_phos, perCollision_phos, fPHOSCut, fPHOSCut);
}
// else if constexpr (pairtype == PairType::kPCMEMC) {
// auto v0photons = std::get<0>(std::tie(args...));
// auto v0legs = std::get<1>(std::tie(args...));
// auto emcclusters = std::get<2>(std::tie(args...));
// auto emcmatchedtracks = std::get<3>(std::tie(args...));
// runPairing(collisions, v0photons, emcclusters, v0legs, nullptr, perCollision_pcm, perCollision_emc, fV0PhotonCut, fEMCCut, emcmatchedtracks, nullptr);
// } else if constexpr (pairtype == PairType::kPCMPHOS) {
// auto v0photons = std::get<0>(std::tie(args...));
// auto v0legs = std::get<1>(std::tie(args...));
// auto phosclusters = std::get<2>(std::tie(args...));
// runPairing(collisions, v0photons, phosclusters, v0legs, nullptr, perCollision_pcm, perCollision_phos, fV0PhotonCut, fPHOSCut, nullptr, nullptr);
// }
ndf++;
}
PROCESS_SWITCH(Pi0EtaToGammaGamma, processAnalysisJJMC, "process pair analysis", false);

void processDummy(MyCollisions const&) {}
PROCESS_SWITCH(Pi0EtaToGammaGamma, processDummy, "Dummy function", true);
PROCESS_SWITCH(Pi0EtaToGammaGamma, processDummy, "Dummy function", false);
};
#endif // PWGEM_PHOTONMESON_CORE_PI0ETATOGAMMAGAMMA_H_
Loading
Loading