Skip to content

Commit 3c8667f

Browse files
committed
PWGEM/Dilepton: update for tpc
1 parent a578a67 commit 3c8667f

File tree

3 files changed

+42
-36
lines changed

3 files changed

+42
-36
lines changed

PWGEM/Dilepton/DataModel/dileptonTables.h

Lines changed: 24 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -687,9 +687,22 @@ DECLARE_SOA_TABLE(EMGlobalMuonSelfIds, "AOD", "EMGLMUSELFID", emprimarymuon::Glo
687687
// iterators
688688
using EMGlobalMuonSelfId = EMGlobalMuonSelfIds::iterator;
689689

690+
namespace emprimarytrack
691+
{
692+
DECLARE_SOA_INDEX_COLUMN(EMEvent, emevent); //!
693+
DECLARE_SOA_COLUMN(CollisionId, collisionId, int); //!
694+
DECLARE_SOA_COLUMN(TrackId, trackId, int); //!
695+
DECLARE_SOA_COLUMN(Sign, sign, int8_t); //!
696+
DECLARE_SOA_DYNAMIC_COLUMN(Signed1Pt, signed1Pt, [](float pt, int8_t sign) -> float { return sign * 1. / pt; });
697+
DECLARE_SOA_DYNAMIC_COLUMN(P, p, [](float pt, float eta) -> float { return pt * std::cosh(eta); });
698+
DECLARE_SOA_DYNAMIC_COLUMN(Px, px, [](float pt, float phi) -> float { return pt * std::cos(phi); });
699+
DECLARE_SOA_DYNAMIC_COLUMN(Py, py, [](float pt, float phi) -> float { return pt * std::sin(phi); });
700+
DECLARE_SOA_DYNAMIC_COLUMN(Pz, pz, [](float pt, float eta) -> float { return pt * std::sinh(eta); });
701+
} // namespace emprimarytrack
702+
690703
DECLARE_SOA_TABLE_VERSIONED(EMPrimaryTracks_000, "AOD", "EMPRIMARYTRACK", 0, //!
691-
o2::soa::Index<>, emprimaryelectron::CollisionId,
692-
emprimaryelectron::TrackId, emprimaryelectron::Sign,
704+
o2::soa::Index<>, emprimarytrack::CollisionId,
705+
emprimarytrack::TrackId, emprimarytrack::Sign,
693706
track::Pt, track::Eta, track::Phi, track::DcaXY, track::DcaZ,
694707
track::TPCNClsFindable, track::TPCNClsFindableMinusFound, track::TPCNClsFindableMinusCrossedRows, track::TPCNClsShared, track::TPCChi2NCl,
695708
track::ITSClusterSizes, track::ITSChi2NCl, track::DetectorMap,
@@ -702,16 +715,20 @@ DECLARE_SOA_TABLE_VERSIONED(EMPrimaryTracks_000, "AOD", "EMPRIMARYTRACK", 0, //!
702715
track::TPCFractionSharedCls<track::TPCNClsShared, track::TPCNClsFindable, track::TPCNClsFindableMinusFound>,
703716
track::v001::ITSClusterMap<track::ITSClusterSizes>, track::v001::ITSNCls<track::ITSClusterSizes>, track::v001::ITSNClsInnerBarrel<track::ITSClusterSizes>,
704717
track::HasITS<track::DetectorMap>, track::HasTPC<track::DetectorMap>, track::HasTRD<track::DetectorMap>, track::HasTOF<track::DetectorMap>,
705-
emprimaryelectron::Signed1Pt<track::Pt, emprimaryelectron::Sign>,
706-
emprimaryelectron::P<track::Pt, track::Eta>,
707-
emprimaryelectron::Px<track::Pt, track::Phi>,
708-
emprimaryelectron::Py<track::Pt, track::Phi>,
709-
emprimaryelectron::Pz<track::Pt, track::Eta>);
718+
emprimarytrack::Signed1Pt<track::Pt, emprimarytrack::Sign>,
719+
emprimarytrack::P<track::Pt, track::Eta>,
720+
emprimarytrack::Px<track::Pt, track::Phi>,
721+
emprimarytrack::Py<track::Pt, track::Phi>,
722+
emprimarytrack::Pz<track::Pt, track::Eta>);
710723

711724
using EMPrimaryTracks = EMPrimaryTracks_000;
712725
// iterators
713726
using EMPrimaryTrack = EMPrimaryTracks::iterator;
714727

728+
DECLARE_SOA_TABLE(EMPrimaryTrackEMEventIds, "AOD", "PRMTRACKEMEVENTID", emprimarytrack::EMEventId); // To be joined with EMPrimaryTracks table at analysis level.
729+
// iterators
730+
using EMPrimaryTrackEMEventId = EMPrimaryTrackEMEventIds::iterator;
731+
715732
// Dummy data for MC
716733
namespace emdummydata
717734
{

PWGEM/Dilepton/TableProducer/createEMEventDilepton.cxx

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -298,10 +298,12 @@ struct AssociateDileptonToEMEvent {
298298
Produces<o2::aod::V0KFEMEventIds> v0kfeventid;
299299
Produces<o2::aod::EMPrimaryElectronEMEventIds> prmeleventid;
300300
Produces<o2::aod::EMPrimaryMuonEMEventIds> prmmueventid;
301+
Produces<o2::aod::EMPrimaryTrackEMEventIds> prmtrackeventid;
301302

302303
Preslice<aod::V0PhotonsKF> perCollision_pcm = aod::v0photonkf::collisionId;
303304
PresliceUnsorted<aod::EMPrimaryElectrons> perCollision_el = aod::emprimaryelectron::collisionId;
304305
PresliceUnsorted<aod::EMPrimaryMuons> perCollision_mu = aod::emprimarymuon::collisionId;
306+
PresliceUnsorted<aod::EMPrimaryTracks> perCollision_track = aod::emprimarytrack::collisionId;
305307

306308
void init(o2::framework::InitContext&) {}
307309

@@ -336,11 +338,17 @@ struct AssociateDileptonToEMEvent {
336338
fillEventId(collisions, tracks, prmmueventid, perCollision_mu);
337339
}
338340

341+
void processChargedTrack(aod::EMEvents const& collisions, aod::EMPrimaryTracks const& tracks)
342+
{
343+
fillEventId(collisions, tracks, prmtrackeventid, perCollision_track);
344+
}
345+
339346
void processDummy(aod::EMEvents const&) {}
340347

341-
PROCESS_SWITCH(AssociateDileptonToEMEvent, processPCM, "process pcm-event indexing", false);
342-
PROCESS_SWITCH(AssociateDileptonToEMEvent, processElectron, "process dalitzee-event indexing", false);
343-
PROCESS_SWITCH(AssociateDileptonToEMEvent, processFwdMuon, "process forward muon indexing", false);
348+
PROCESS_SWITCH(AssociateDileptonToEMEvent, processPCM, "process indexing for PCM", false);
349+
PROCESS_SWITCH(AssociateDileptonToEMEvent, processElectron, "process indexing for electrons", false);
350+
PROCESS_SWITCH(AssociateDileptonToEMEvent, processFwdMuon, "process indexing for forward muons", false);
351+
PROCESS_SWITCH(AssociateDileptonToEMEvent, processChargedTrack, "process indexing for charged tracks", false);
344352
PROCESS_SWITCH(AssociateDileptonToEMEvent, processDummy, "process dummy", true);
345353
};
346354
WorkflowSpec defineDataProcessing(ConfigContext const& cfgc)

PWGEM/Dilepton/TableProducer/skimmerPrimaryElectron.cxx

Lines changed: 7 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -174,11 +174,6 @@ struct skimmerPrimaryElectron {
174174
fRegistry.add("Track/hMeanClusterSizeITS", "mean cluster size ITS;p_{pv} (GeV/c);<ITS cluster size> #times cos(#lambda)", kTH2F, {{1000, 0, 10}, {150, 0, 15}}, false);
175175
fRegistry.add("Track/hMeanClusterSizeITSib", "mean cluster size ITSib;p_{pv} (GeV/c);<ITSib cluster size> #times cos(#lambda)", kTH2F, {{1000, 0, 10}, {150, 0, 15}}, false);
176176
fRegistry.add("Track/hMeanClusterSizeITSob", "mean cluster size ITSob;p_{pv} (GeV/c);<ITSob cluster size> #times cos(#lambda)", kTH2F, {{1000, 0, 10}, {150, 0, 15}}, false);
177-
fRegistry.add("Track/hITSNsigmaEl", "ITS n sigma el;p_{pv} (GeV/c);n #sigma_{e}^{ITS}", kTH2F, {{1000, 0, 10}, {100, -5, +5}}, false);
178-
fRegistry.add("Track/hITSNsigmaMu", "ITS n sigma mu;p_{pv} (GeV/c);n #sigma_{#mu}^{ITS}", kTH2F, {{1000, 0, 10}, {100, -5, +5}}, false);
179-
fRegistry.add("Track/hITSNsigmaPi", "ITS n sigma pi;p_{pv} (GeV/c);n #sigma_{#pi}^{ITS}", kTH2F, {{1000, 0, 10}, {100, -5, +5}}, false);
180-
fRegistry.add("Track/hITSNsigmaKa", "ITS n sigma ka;p_{pv} (GeV/c);n #sigma_{K}^{ITS}", kTH2F, {{1000, 0, 10}, {100, -5, +5}}, false);
181-
fRegistry.add("Track/hITSNsigmaPr", "ITS n sigma pr;p_{pv} (GeV/c);n #sigma_{p}^{ITS}", kTH2F, {{1000, 0, 10}, {100, -5, +5}}, false);
182177
}
183178

184179
if (usePIDML) {
@@ -556,11 +551,6 @@ struct skimmerPrimaryElectron {
556551
fRegistry.fill(HIST("Track/hMeanClusterSizeITS"), trackParCov.getP(), static_cast<float>(total_cluster_size) / static_cast<float>(nl) * std::cos(std::atan(trackParCov.getTgl())));
557552
fRegistry.fill(HIST("Track/hMeanClusterSizeITSib"), trackParCov.getP(), static_cast<float>(total_cluster_size_ib) / static_cast<float>(nl_ib) * std::cos(std::atan(trackParCov.getTgl())));
558553
fRegistry.fill(HIST("Track/hMeanClusterSizeITSob"), trackParCov.getP(), static_cast<float>(total_cluster_size_ob) / static_cast<float>(nl_ob) * std::cos(std::atan(trackParCov.getTgl())));
559-
fRegistry.fill(HIST("Track/hITSNsigmaEl"), trackParCov.getP(), track.itsNSigmaEl());
560-
fRegistry.fill(HIST("Track/hITSNsigmaMu"), trackParCov.getP(), track.itsNSigmaMu());
561-
fRegistry.fill(HIST("Track/hITSNsigmaPi"), trackParCov.getP(), track.itsNSigmaPi());
562-
fRegistry.fill(HIST("Track/hITSNsigmaKa"), trackParCov.getP(), track.itsNSigmaKa());
563-
fRegistry.fill(HIST("Track/hITSNsigmaPr"), trackParCov.getP(), track.itsNSigmaPr());
564554
}
565555
}
566556
}
@@ -577,7 +567,6 @@ struct skimmerPrimaryElectron {
577567

578568
void processRec_SA(MyCollisions const& collisions, aod::BCsWithTimestamps const&, MyFilteredTracks const& tracks)
579569
{
580-
auto tracksWithITSPid = soa::Attach<MyFilteredTracks, aod::pidits::ITSNSigmaEl, aod::pidits::ITSNSigmaMu, aod::pidits::ITSNSigmaPi, aod::pidits::ITSNSigmaKa, aod::pidits::ITSNSigmaPr>(tracks);
581570
stored_trackIds.reserve(tracks.size());
582571

583572
for (const auto& collision : collisions) {
@@ -588,7 +577,7 @@ struct skimmerPrimaryElectron {
588577
continue;
589578
}
590579

591-
auto tracks_per_coll = tracksWithITSPid.sliceBy(perCol, collision.globalIndex());
580+
auto tracks_per_coll = tracks.sliceBy(perCol, collision.globalIndex());
592581
for (const auto& track : tracks_per_coll) {
593582
if (!checkTrack<false>(collision, track) || !isElectron(collision, track)) {
594583
continue;
@@ -605,7 +594,6 @@ struct skimmerPrimaryElectron {
605594

606595
void processRec_TTCA(MyCollisions const& collisions, aod::BCsWithTimestamps const&, MyTracks const& tracks, aod::TrackAssoc const& trackIndices)
607596
{
608-
auto tracksWithITSPid = soa::Attach<MyTracks, aod::pidits::ITSNSigmaEl, aod::pidits::ITSNSigmaMu, aod::pidits::ITSNSigmaPi, aod::pidits::ITSNSigmaKa, aod::pidits::ITSNSigmaPr>(tracks);
609597
stored_trackIds.reserve(tracks.size() * 2);
610598

611599
for (const auto& collision : collisions) {
@@ -619,8 +607,7 @@ struct skimmerPrimaryElectron {
619607
auto trackIdsThisCollision = trackIndices.sliceBy(trackIndicesPerCollision, collision.globalIndex());
620608

621609
for (const auto& trackId : trackIdsThisCollision) {
622-
// auto track = trackId.template track_as<MyTracks>();
623-
auto track = tracksWithITSPid.rawIteratorAt(trackId.trackId());
610+
auto track = trackId.template track_as<MyTracks>();
624611
if (!checkTrack<false>(collision, track) || !isElectron(collision, track)) {
625612
continue;
626613
}
@@ -635,7 +622,6 @@ struct skimmerPrimaryElectron {
635622

636623
void processRec_SA_SWT(MyCollisionsWithSWT const& collisions, aod::BCsWithTimestamps const&, MyFilteredTracks const& tracks)
637624
{
638-
auto tracksWithITSPid = soa::Attach<MyFilteredTracks, aod::pidits::ITSNSigmaEl, aod::pidits::ITSNSigmaMu, aod::pidits::ITSNSigmaPi, aod::pidits::ITSNSigmaKa, aod::pidits::ITSNSigmaPr>(tracks);
639625
stored_trackIds.reserve(tracks.size());
640626

641627
for (const auto& collision : collisions) {
@@ -650,7 +636,7 @@ struct skimmerPrimaryElectron {
650636
continue;
651637
}
652638

653-
auto tracks_per_coll = tracksWithITSPid.sliceBy(perCol, collision.globalIndex());
639+
auto tracks_per_coll = tracks.sliceBy(perCol, collision.globalIndex());
654640
for (const auto& track : tracks_per_coll) {
655641
if (!checkTrack<false>(collision, track) || !isElectron(collision, track)) {
656642
continue;
@@ -667,7 +653,6 @@ struct skimmerPrimaryElectron {
667653

668654
void processRec_TTCA_SWT(MyCollisionsWithSWT const& collisions, aod::BCsWithTimestamps const&, MyTracks const& tracks, aod::TrackAssoc const& trackIndices)
669655
{
670-
auto tracksWithITSPid = soa::Attach<MyTracks, aod::pidits::ITSNSigmaEl, aod::pidits::ITSNSigmaMu, aod::pidits::ITSNSigmaPi, aod::pidits::ITSNSigmaKa, aod::pidits::ITSNSigmaPr>(tracks);
671656
stored_trackIds.reserve(tracks.size() * 2);
672657

673658
for (const auto& collision : collisions) {
@@ -684,8 +669,7 @@ struct skimmerPrimaryElectron {
684669
auto trackIdsThisCollision = trackIndices.sliceBy(trackIndicesPerCollision, collision.globalIndex());
685670

686671
for (const auto& trackId : trackIdsThisCollision) {
687-
// auto track = trackId.template track_as<MyTracks>();
688-
auto track = tracksWithITSPid.rawIteratorAt(trackId.trackId());
672+
auto track = trackId.template track_as<MyTracks>();
689673
if (!checkTrack<false>(collision, track) || !isElectron(collision, track)) {
690674
continue;
691675
}
@@ -705,7 +689,6 @@ struct skimmerPrimaryElectron {
705689
Partition<MyFilteredTracksMC> negTracksMC = o2::aod::track::signed1Pt < 0.f;
706690
void processMC_SA(soa::Join<MyCollisions, aod::McCollisionLabels> const& collisions, aod::McCollisions const&, aod::BCsWithTimestamps const&, MyFilteredTracksMC const& tracks, aod::McParticles const&)
707691
{
708-
auto tracksWithITSPid = soa::Attach<MyFilteredTracksMC, aod::pidits::ITSNSigmaEl, aod::pidits::ITSNSigmaMu, aod::pidits::ITSNSigmaPi, aod::pidits::ITSNSigmaKa, aod::pidits::ITSNSigmaPr>(tracks);
709692
stored_trackIds.reserve(tracks.size());
710693

711694
for (const auto& collision : collisions) {
@@ -719,7 +702,7 @@ struct skimmerPrimaryElectron {
719702
continue;
720703
}
721704

722-
auto tracks_per_coll = tracksWithITSPid.sliceBy(perCol, collision.globalIndex());
705+
auto tracks_per_coll = tracks.sliceBy(perCol, collision.globalIndex());
723706
for (const auto& track : tracks_per_coll) {
724707
if (!checkTrack<true>(collision, track) || !isElectron(collision, track)) {
725708
continue;
@@ -735,7 +718,6 @@ struct skimmerPrimaryElectron {
735718

736719
void processMC_TTCA(soa::Join<MyCollisions, aod::McCollisionLabels> const& collisions, aod::McCollisions const&, aod::BCsWithTimestamps const&, MyTracksMC const& tracks, aod::TrackAssoc const& trackIndices, aod::McParticles const&)
737720
{
738-
auto tracksWithITSPid = soa::Attach<MyTracksMC, aod::pidits::ITSNSigmaEl, aod::pidits::ITSNSigmaMu, aod::pidits::ITSNSigmaPi, aod::pidits::ITSNSigmaKa, aod::pidits::ITSNSigmaPr>(tracks);
739721
stored_trackIds.reserve(tracks.size() * 2);
740722

741723
for (const auto& collision : collisions) {
@@ -752,8 +734,7 @@ struct skimmerPrimaryElectron {
752734
auto trackIdsThisCollision = trackIndices.sliceBy(trackIndicesPerCollision, collision.globalIndex());
753735

754736
for (const auto& trackId : trackIdsThisCollision) {
755-
// auto track = trackId.template track_as<MyTracksMC>();
756-
auto track = tracksWithITSPid.rawIteratorAt(trackId.trackId());
737+
auto track = trackId.template track_as<MyTracksMC>();
757738
if (!checkTrack<true>(collision, track) || !isElectron(collision, track)) {
758739
continue;
759740
}
@@ -771,7 +752,7 @@ struct prefilterPrimaryElectron {
771752
Produces<aod::EMPrimaryElectronsPrefilterBit> ele_pfb;
772753

773754
SliceCache cache;
774-
Preslice<aod::Tracks> perCol_track = o2::aod::track::collisionId;
755+
Preslice<aod::TracksIU> perCol_track = o2::aod::track::collisionId;
775756
PresliceUnsorted<aod::EMPrimaryElectrons> perCol_ele = o2::aod::emprimaryelectron::collisionId;
776757

777758
// CCDB options

0 commit comments

Comments
 (0)