|
12 | 12 | /// \file correlations.cxx |
13 | 13 | /// \brief task for the correlation calculations with CF-filtered tracks for O2 analysis |
14 | 14 | /// \author Jan Fiete Grosse-Oetringhaus <jan.fiete.grosse-oetringhaus@cern.ch>, Jasper Parkkila <jasper.parkkila@cern.ch> |
15 | | -// o2-linter: disable=name/workflow-file |
16 | 15 |
|
17 | 16 | #include <experimental/type_traits> |
18 | 17 | #include <vector> |
@@ -481,7 +480,7 @@ struct CorrelationTask { |
481 | 480 | float deltaPhi = RecoDecay::constrainAngle(track1.phi() - track2.phi(), -o2::constants::math::PIHalf); |
482 | 481 |
|
483 | 482 | // last param is the weight |
484 | | - if (cfgMassAxis && doprocessSame2Prong2Prong) { |
| 483 | + if (cfgMassAxis && (doprocessSame2Prong2Prong) && !(doprocessSame2ProngDerived || doprocessMixed2ProngDerived)) { |
485 | 484 | if constexpr (std::experimental::is_detected<HasInvMass, typename TTracks1::iterator>::value && std::experimental::is_detected<HasInvMass, typename TTracks2::iterator>::value) |
486 | 485 | target->getPairHist()->Fill(step, track1.eta() - track2.eta(), track2.pt(), track1.pt(), multiplicity, deltaPhi, posZ, track2.invMass(), track1.invMass(), associatedWeight); |
487 | 486 | else |
@@ -764,6 +763,47 @@ struct CorrelationTask { |
764 | 763 | } |
765 | 764 | PROCESS_SWITCH(CorrelationTask, processMixed2ProngDerived, "Process mixed events on derived data", false); |
766 | 765 |
|
| 766 | + void processMixed2Prong2Prong(DerivedCollisions const& collisions, soa::Filtered<aod::CF2ProngTracks> const& p2tracks) |
| 767 | + { |
| 768 | + BinningTypeDerived configurableBinningDerived{{axisVertex, axisMultiplicity}, true}; // true is for 'ignore overflows' (true by default). Underflows and overflows will have bin -1. |
| 769 | + // Strictly upper categorised collisions, for cfgNoMixedEvents combinations per bin, skipping those in entry -1 |
| 770 | + auto tracksTuple = std::make_tuple(p2tracks); |
| 771 | + SameKindPair<DerivedCollisions, soa::Filtered<aod::CF2ProngTracks>, BinningTypeDerived> pairs{configurableBinningDerived, cfgNoMixedEvents, -1, collisions, tracksTuple, &cache}; // -1 is the number of the bin to skip |
| 772 | + |
| 773 | + for (auto it = pairs.begin(); it != pairs.end(); it++) { |
| 774 | + auto& [collision1, tracks1, collision2, tracks2] = *it; |
| 775 | + int bin = configurableBinningDerived.getBin({collision1.posZ(), collision1.multiplicity()}); |
| 776 | + float eventWeight = 1.0f / it.currentWindowNeighbours(); |
| 777 | + int field = 0; |
| 778 | + if (cfgTwoTrackCut > 0) { |
| 779 | + field = getMagneticField(collision1.timestamp()); |
| 780 | + } |
| 781 | + |
| 782 | + if (cfgVerbosity > 0) { |
| 783 | + LOGF(info, "processMixedDerived: Mixed collisions bin: %d pair: [%d, %d] %d (%.3f, %.3f), %d (%.3f, %.3f)", bin, it.isNewWindow(), it.currentWindowNeighbours(), collision1.globalIndex(), collision1.posZ(), collision1.multiplicity(), collision2.globalIndex(), collision2.posZ(), collision2.multiplicity()); |
| 784 | + } |
| 785 | + |
| 786 | + if (it.isNewWindow()) { |
| 787 | + loadEfficiency(collision1.timestamp()); |
| 788 | + |
| 789 | + mixed->fillEvent(collision1.multiplicity(), CorrelationContainer::kCFStepReconstructed); |
| 790 | + } |
| 791 | + |
| 792 | + // LOGF(info, "Tracks: %d and %d entries", tracks1.size(), tracks2.size()); |
| 793 | + |
| 794 | + registry.fill(HIST("eventcount_mixed"), bin); |
| 795 | + fillCorrelations<CorrelationContainer::kCFStepReconstructed>(mixed, tracks1, tracks2, collision1.multiplicity(), collision1.posZ(), field, eventWeight); |
| 796 | + |
| 797 | + if (cfg.mEfficiencyAssociated || cfg.mEfficiencyTrigger) { |
| 798 | + if (it.isNewWindow()) { |
| 799 | + mixed->fillEvent(collision1.multiplicity(), CorrelationContainer::kCFStepCorrected); |
| 800 | + } |
| 801 | + fillCorrelations<CorrelationContainer::kCFStepCorrected>(mixed, tracks1, tracks2, collision1.multiplicity(), collision1.posZ(), field, eventWeight); |
| 802 | + } |
| 803 | + } |
| 804 | + } |
| 805 | + PROCESS_SWITCH(CorrelationTask, processMixed2Prong2Prong, "Process mixed events on derived data", false); |
| 806 | + |
767 | 807 | // Version with combinations |
768 | 808 | /*void processWithCombinations(soa::Join<aod::Collisions, aod::CentRun2V0Ms>::iterator const& collision, aod::BCsWithTimestamps const&, soa::Filtered<aod::Tracks> const& tracks) |
769 | 809 | { |
|
0 commit comments