Skip to content

Commit 1a77aa7

Browse files
committed
PWGEM/PhotonMeson: updadate pcm data and add converter
1 parent 8bc3d2b commit 1a77aa7

File tree

15 files changed

+741
-229
lines changed

15 files changed

+741
-229
lines changed

EventFiltering/PWGEM/EMPhotonFilter.cxx

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -12,16 +12,19 @@
1212
// \brief software trigger for EM photon
1313
// \author daiki.sekihata@cern.ch
1414

15-
#include "Math/Vector4D.h"
16-
#include "Framework/runDataProcessing.h"
17-
#include "Framework/AnalysisTask.h"
18-
#include "Framework/AnalysisDataModel.h"
19-
#include "Framework/ASoAHelpers.h"
20-
#include "Common/DataModel/CaloClusters.h"
21-
#include "DataFormatsPHOS/TriggerRecord.h"
2215
#include "PWGEM/PhotonMeson/DataModel/gammaTables.h"
16+
17+
#include "Common/DataModel/CaloClusters.h"
2318
#include "EventFiltering/filterTables.h"
19+
20+
#include "DataFormatsPHOS/TriggerRecord.h"
21+
#include "Framework/ASoAHelpers.h"
22+
#include "Framework/AnalysisDataModel.h"
23+
#include "Framework/AnalysisTask.h"
2424
#include "Framework/HistogramRegistry.h"
25+
#include "Framework/runDataProcessing.h"
26+
27+
#include "Math/Vector4D.h"
2528

2629
using namespace o2;
2730
using namespace o2::soa;
@@ -325,13 +328,10 @@ struct EMPhotonFilter {
325328
} // end of collision loop
326329
}
327330

328-
Filter PCMFilter = o2::aod::v0photonkf::dcaXYtopv < max_dcatopv_xy_v0 && o2::aod::v0photonkf::dcaZtopv < max_dcatopv_z_v0;
329-
using filteredV0PhotonsKF = Filtered<aod::V0PhotonsKF>;
330-
331331
Filter DalitzEEFilter = o2::aod::dalitzee::sign == 0; // analyze only uls
332332
using filteredDalitzEEs = Filtered<aod::DalitzEEs>;
333333

334-
void process_PCM(MyCollisions const& collisions, filteredV0PhotonsKF const& v0photons, aod::V0Legs const& v0legs, filteredDalitzEEs const& dielectrons, MyPrimaryElectrons const& emprimaryelectrons)
334+
void process_PCM(MyCollisions const& collisions, aod::V0PhotonsKF const& v0photons, aod::V0Legs const& v0legs, filteredDalitzEEs const& dielectrons, MyPrimaryElectrons const& emprimaryelectrons)
335335
{
336336
const uint8_t system = EM_Filter_PhotonType::kPCM;
337337
runFilter<system>(collisions, v0photons, nullptr, nullptr, v0legs, dielectrons, emprimaryelectrons);
@@ -351,7 +351,7 @@ struct EMPhotonFilter {
351351
runFilter<system>(collisions, nullptr, nullptr, clusters, nullptr, nullptr, nullptr);
352352
}
353353

354-
void process_PCM_PHOS(MyCollisions const& collisions, filteredV0PhotonsKF const& v0photons, aod::V0Legs const& v0legs, filteredDalitzEEs const& dielectrons, MyPrimaryElectrons const& emprimaryelectrons, CluCandidates const& clusters)
354+
void process_PCM_PHOS(MyCollisions const& collisions, aod::V0PhotonsKF const& v0photons, aod::V0Legs const& v0legs, filteredDalitzEEs const& dielectrons, MyPrimaryElectrons const& emprimaryelectrons, CluCandidates const& clusters)
355355
{
356356
const uint8_t system = EM_Filter_PhotonType::kPCM | EM_Filter_PhotonType::kPHOS;
357357
runFilter<system>(collisions, v0photons, clusters, nullptr, v0legs, dielectrons, emprimaryelectrons);

PWGEM/PhotonMeson/Core/DalitzEECut.h

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -240,10 +240,10 @@ class DalitzEECut : public TNamed
240240
{
241241
switch (cut) {
242242
case DalitzEECuts::kTrackPtRange:
243-
return track.pt() >= mMinTrackPt && track.pt() <= mMaxTrackPt;
243+
return track.pt() > mMinTrackPt && track.pt() < mMaxTrackPt;
244244

245245
case DalitzEECuts::kTrackEtaRange:
246-
return track.eta() >= mMinTrackEta && track.eta() <= mMaxTrackEta;
246+
return track.eta() > mMinTrackEta && track.eta() < mMaxTrackEta;
247247

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

257257
case DalitzEECuts::kTPCFracSharedClusters:
258-
return track.tpcFractionSharedCls() <= mMaxFracSharedClustersTPC;
258+
return track.tpcFractionSharedCls() < mMaxFracSharedClustersTPC;
259259

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

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

266266
case DalitzEECuts::kDCAxy:
267-
return std::fabs(track.dcaXY()) <= ((mMaxDcaXYPtDep) ? mMaxDcaXYPtDep(track.pt()) : mMaxDcaXY);
267+
return std::fabs(track.dcaXY()) < ((mMaxDcaXYPtDep) ? mMaxDcaXYPtDep(track.pt()) : mMaxDcaXY);
268268

269269
case DalitzEECuts::kDCAz:
270-
return std::fabs(track.dcaZ()) <= mMaxDcaZ;
270+
return std::fabs(track.dcaZ()) < mMaxDcaZ;
271271

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

PWGEM/PhotonMeson/Core/Pi0EtaToGammaGamma.h

Lines changed: 68 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -71,9 +71,12 @@ using namespace o2::aod::pwgem::photon;
7171
using namespace o2::aod::pwgem::dilepton::utils::emtrackutil;
7272
using namespace o2::aod::pwgem::dilepton::utils;
7373

74-
using MyCollisions = soa::Join<aod::EMEvents, aod::EMEventsMult, aod::EMEventsCent, aod::EMEventsQvec, aod::EMEventsWeight>;
74+
using MyCollisions = soa::Join<aod::EMEvents, aod::EMEventsMult, aod::EMEventsCent, aod::EMEventsQvec>;
7575
using MyCollision = MyCollisions::iterator;
7676

77+
using MyCollisionsWithJJMC = soa::Join<MyCollisions, aod::EMEventsWeight>;
78+
using MyCollisionWithJJMC = MyCollisionsWithJJMC::iterator;
79+
7780
using MyV0Photons = soa::Filtered<soa::Join<aod::V0PhotonsKF, aod::V0KFEMEventIds, aod::V0PhotonsKFPrefilterBitDerived>>;
7881
using MyV0Photon = MyV0Photons::iterator;
7982

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

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

550553
Preslice<MyPrimaryElectrons> perCollision_electron = aod::emprimaryelectron::emeventId;
551-
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);
552-
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);
554+
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;
555+
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;
553556

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

575-
if (eventcuts.onlyKeepWeightedEvents && std::fabs(collision.weight() - 1.) < 1E-10) {
578+
float weight = 1.f;
579+
if constexpr (std::is_same_v<std::decay_t<TCollisions>, FilteredMyCollisionsWithJJMC>) {
580+
weight = collision.weight();
581+
}
582+
583+
if (eventcuts.onlyKeepWeightedEvents && std::fabs(weight - 1.f) < 1E-10) {
576584
continue;
577585
}
578586

@@ -581,13 +589,13 @@ struct Pi0EtaToGammaGamma {
581589
continue;
582590
}
583591

584-
o2::aod::pwgem::photonmeson::utils::eventhistogram::fillEventInfo<0>(&fRegistry, collision, collision.weight());
592+
o2::aod::pwgem::photonmeson::utils::eventhistogram::fillEventInfo<0>(&fRegistry, collision, weight);
585593
if (!fEMEventCut.IsSelected(collision)) {
586594
continue;
587595
}
588-
o2::aod::pwgem::photonmeson::utils::eventhistogram::fillEventInfo<1>(&fRegistry, collision, collision.weight());
589-
fRegistry.fill(HIST("Event/before/hCollisionCounter"), 12.0, collision.weight()); // accepted
590-
fRegistry.fill(HIST("Event/after/hCollisionCounter"), 12.0, collision.weight()); // accepted
596+
o2::aod::pwgem::photonmeson::utils::eventhistogram::fillEventInfo<1>(&fRegistry, collision, weight);
597+
fRegistry.fill(HIST("Event/before/hCollisionCounter"), 12.0, weight); // accepted
598+
fRegistry.fill(HIST("Event/after/hCollisionCounter"), 12.0, weight); // accepted
591599

592600
int zbin = lower_bound(zvtx_bin_edges.begin(), zvtx_bin_edges.end(), collision.posZ()) - zvtx_bin_edges.begin() - 1;
593601
if (zbin < 0) {
@@ -655,10 +663,10 @@ struct Pi0EtaToGammaGamma {
655663
}
656664
}
657665

658-
fRegistry.fill(HIST("Pair/same/hs"), v12.M(), v12.Pt(), collision.weight());
666+
fRegistry.fill(HIST("Pair/same/hs"), v12.M(), v12.Pt(), weight);
659667

660668
if constexpr (pairtype == PairType::kEMCEMC) {
661-
RotationBackground<MyEMCClusters>(v12, v1, v2, photons2_per_collision, g1.globalIndex(), g2.globalIndex(), collision.weight());
669+
RotationBackground<MyEMCClusters>(v12, v1, v2, photons2_per_collision, g1.globalIndex(), g2.globalIndex(), weight);
662670
}
663671

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

715-
fRegistry.fill(HIST("Pair/same/hs"), veeg.M(), veeg.Pt(), collision.weight());
723+
fRegistry.fill(HIST("Pair/same/hs"), veeg.M(), veeg.Pt(), weight);
716724

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

745-
fRegistry.fill(HIST("Pair/same/hs"), v12.M(), v12.Pt(), collision.weight());
753+
fRegistry.fill(HIST("Pair/same/hs"), v12.M(), v12.Pt(), weight);
746754

747755
std::pair<int, int> pair_tmp_id1 = std::make_pair(ndf, g1.globalIndex());
748756
std::pair<int, int> pair_tmp_id2 = std::make_pair(ndf, g2.globalIndex());
@@ -799,7 +807,7 @@ struct Pi0EtaToGammaGamma {
799807
continue;
800808
}
801809

802-
fRegistry.fill(HIST("Pair/mix/hs"), v12.M(), v12.Pt(), collision.weight());
810+
fRegistry.fill(HIST("Pair/mix/hs"), v12.M(), v12.Pt(), weight);
803811
}
804812
}
805813
} // end of loop over mixed event pool
@@ -834,7 +842,7 @@ struct Pi0EtaToGammaGamma {
834842
if (std::fabs(v12.Rapidity()) > maxY) {
835843
continue;
836844
}
837-
fRegistry.fill(HIST("Pair/mix/hs"), v12.M(), v12.Pt(), collision.weight());
845+
fRegistry.fill(HIST("Pair/mix/hs"), v12.M(), v12.Pt(), weight);
838846
}
839847
}
840848
} // end of loop over mixed event pool
@@ -867,7 +875,7 @@ struct Pi0EtaToGammaGamma {
867875
if (std::fabs(v12.Rapidity()) > maxY) {
868876
continue;
869877
}
870-
fRegistry.fill(HIST("Pair/mix/hs"), v12.M(), v12.Pt(), collision.weight());
878+
fRegistry.fill(HIST("Pair/mix/hs"), v12.M(), v12.Pt(), weight);
871879
}
872880
}
873881
} // end of loop over mixed event pool
@@ -925,9 +933,46 @@ struct Pi0EtaToGammaGamma {
925933
// }
926934
ndf++;
927935
}
928-
PROCESS_SWITCH(Pi0EtaToGammaGamma, processAnalysis, "process pair analysis", false);
936+
PROCESS_SWITCH(Pi0EtaToGammaGamma, processAnalysis, "process pair analysis", true);
937+
938+
using FilteredMyCollisionsWithJJMC = soa::Filtered<MyCollisionsWithJJMC>;
939+
void processAnalysisJJMC(FilteredMyCollisionsWithJJMC const& collisions, Types const&... args)
940+
{
941+
// LOGF(info, "ndf = %d", ndf);
942+
if constexpr (pairtype == PairType::kPCMPCM) {
943+
auto v0photons = std::get<0>(std::tie(args...));
944+
auto v0legs = std::get<1>(std::tie(args...));
945+
runPairing(collisions, v0photons, v0photons, v0legs, v0legs, perCollision_pcm, perCollision_pcm, fV0PhotonCut, fV0PhotonCut);
946+
} else if constexpr (pairtype == PairType::kPCMDalitzEE) {
947+
auto v0photons = std::get<0>(std::tie(args...));
948+
auto v0legs = std::get<1>(std::tie(args...));
949+
auto emprimaryelectrons = std::get<2>(std::tie(args...));
950+
// LOGF(info, "electrons.size() = %d, positrons.size() = %d", electrons.size(), positrons.size());
951+
runPairing(collisions, v0photons, emprimaryelectrons, v0legs, emprimaryelectrons, perCollision_pcm, perCollision_electron, fV0PhotonCut, fDileptonCut);
952+
} else if constexpr (pairtype == PairType::kEMCEMC) {
953+
auto emcclusters = std::get<0>(std::tie(args...));
954+
runPairing(collisions, emcclusters, emcclusters, nullptr, nullptr, perCollision_emc, perCollision_emc, fEMCCut, fEMCCut);
955+
} else if constexpr (pairtype == PairType::kPHOSPHOS) {
956+
auto phosclusters = std::get<0>(std::tie(args...));
957+
runPairing(collisions, phosclusters, phosclusters, nullptr, nullptr, perCollision_phos, perCollision_phos, fPHOSCut, fPHOSCut);
958+
}
959+
// else if constexpr (pairtype == PairType::kPCMEMC) {
960+
// auto v0photons = std::get<0>(std::tie(args...));
961+
// auto v0legs = std::get<1>(std::tie(args...));
962+
// auto emcclusters = std::get<2>(std::tie(args...));
963+
// auto emcmatchedtracks = std::get<3>(std::tie(args...));
964+
// runPairing(collisions, v0photons, emcclusters, v0legs, nullptr, perCollision_pcm, perCollision_emc, fV0PhotonCut, fEMCCut, emcmatchedtracks, nullptr);
965+
// } else if constexpr (pairtype == PairType::kPCMPHOS) {
966+
// auto v0photons = std::get<0>(std::tie(args...));
967+
// auto v0legs = std::get<1>(std::tie(args...));
968+
// auto phosclusters = std::get<2>(std::tie(args...));
969+
// runPairing(collisions, v0photons, phosclusters, v0legs, nullptr, perCollision_pcm, perCollision_phos, fV0PhotonCut, fPHOSCut, nullptr, nullptr);
970+
// }
971+
ndf++;
972+
}
973+
PROCESS_SWITCH(Pi0EtaToGammaGamma, processAnalysisJJMC, "process pair analysis", false);
929974

930975
void processDummy(MyCollisions const&) {}
931-
PROCESS_SWITCH(Pi0EtaToGammaGamma, processDummy, "Dummy function", true);
976+
PROCESS_SWITCH(Pi0EtaToGammaGamma, processDummy, "Dummy function", false);
932977
};
933978
#endif // PWGEM_PHOTONMESON_CORE_PI0ETATOGAMMAGAMMA_H_

0 commit comments

Comments
 (0)