Skip to content

Commit 5f57ba4

Browse files
authored
Merge branch 'master' into 04.04.02
2 parents 820d40c + 3d0cdcd commit 5f57ba4

26 files changed

+1320
-564
lines changed

EventFiltering/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ o2physics_add_dpl_workflow(selected-bc-range-task
2121

2222
o2physics_add_dpl_workflow(nuclei-filter
2323
SOURCES PWGLF/nucleiFilter.cxx
24-
PUBLIC_LINK_LIBRARIES O2Physics::AnalysisCore
24+
PUBLIC_LINK_LIBRARIES O2Physics::AnalysisCore O2::TOFBase
2525
COMPONENT_NAME Analysis)
2626

2727
o2physics_add_dpl_workflow(diffraction-filter

EventFiltering/PWGLF/nucleiFilter.cxx

Lines changed: 308 additions & 46 deletions
Large diffs are not rendered by default.

PWGCF/FemtoUniverse/TableProducer/femtoUniverseProducerTask.cxx

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1561,8 +1561,7 @@ struct FemtoUniverseProducerTask {
15611561
} else {
15621562
if (!(isKaonNSigma(p1.pt(), trackCuts.getNsigmaTPC(p1, o2::track::PID::Kaon), trackCuts.getNsigmaTOF(p1, o2::track::PID::Kaon)))) {
15631563
continue;
1564-
}
1565-
if (!(isKaonNSigma(p2.pt(), trackCuts.getNsigmaTPC(p2, o2::track::PID::Kaon), trackCuts.getNsigmaTOF(p2, o2::track::PID::Kaon)))) {
1564+
} else if (!(isKaonNSigma(p2.pt(), trackCuts.getNsigmaTPC(p2, o2::track::PID::Kaon), trackCuts.getNsigmaTOF(p2, o2::track::PID::Kaon)))) {
15661565
continue;
15671566
}
15681567
}

PWGCF/Flow/Tasks/flowGfwOmegaXi.cxx

Lines changed: 351 additions & 160 deletions
Large diffs are not rendered by default.

PWGDQ/Core/CutsLibrary.cxx

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -64,10 +64,9 @@ AnalysisCompositeCut* o2::aod::dqcuts::GetCompositeCut(const char* cutName)
6464
qualityCuts->AddCut(VarManager::kTrackDCAz, -0.5, 0.5);
6565

6666
AnalysisCut* pidCuts = new AnalysisCut("pidCuts", "pid cuts");
67-
pidCuts->AddCut(VarManager::kTPCnSigmaEl, -4.0, 4.0, false, VarManager::kPin, 0.0, 5.0);
68-
pidCuts->AddCut(VarManager::kTPCnSigmaEl, -1.5, 4.0, false, VarManager::kPin, 5.0, 10.0);
69-
pidCuts->AddCut(VarManager::kTPCnSigmaEl, -1.0, 4.0, false, VarManager::kPin, 10.0, 1000.0);
70-
pidCuts->AddCut(VarManager::kTPCnSigmaPi, 2.0, 999, false, VarManager::kPin, 0.0, 5.0);
67+
pidCuts->AddCut(VarManager::kTPCnSigmaEl, -3.0, 4.0, false, VarManager::kPin, 0.0, 5.0);
68+
pidCuts->AddCut(VarManager::kTPCnSigmaEl, -1.5, 4.0, false, VarManager::kPin, 5.0, 1000.0);
69+
pidCuts->AddCut(VarManager::kTPCnSigmaPi, 2.5, 999, false, VarManager::kPin, 0.0, 5.0);
7170
pidCuts->AddCut(VarManager::kTPCnSigmaPr, 2.5, 999, false, VarManager::kPin, 0.0, 5.0);
7271

7372
cut->AddCut(kineCut);
@@ -88,8 +87,8 @@ AnalysisCompositeCut* o2::aod::dqcuts::GetCompositeCut(const char* cutName)
8887
qualityCuts->AddCut(VarManager::kTrackDCAz, -0.5, 0.5);
8988

9089
AnalysisCut* pidCuts = new AnalysisCut("pidCuts", "pid cuts");
91-
pidCuts->AddCut(VarManager::kTPCnSigmaEl, -4.0, 4.0, false, VarManager::kPin, 0.0, 5.0);
92-
pidCuts->AddCut(VarManager::kTPCnSigmaEl, -1.5, 4.0, false, VarManager::kPin, 5.0, 1000.0);
90+
pidCuts->AddCut(VarManager::kTPCnSigmaEl, -3.0, 4.0, false, VarManager::kPin, 0.0, 5.0);
91+
pidCuts->AddCut(VarManager::kTPCnSigmaEl, -2.0, 4.0, false, VarManager::kPin, 5.0, 1000.0);
9392
pidCuts->AddCut(VarManager::kTPCnSigmaPi, 2.0, 999, false, VarManager::kPin, 0.0, 5.0);
9493
pidCuts->AddCut(VarManager::kTPCnSigmaPr, 2.5, 999, false, VarManager::kPin, 0.0, 5.0);
9594

@@ -111,9 +110,8 @@ AnalysisCompositeCut* o2::aod::dqcuts::GetCompositeCut(const char* cutName)
111110
qualityCuts->AddCut(VarManager::kTrackDCAz, -0.5, 0.5);
112111

113112
AnalysisCut* pidCuts = new AnalysisCut("pidCuts", "pid cuts");
114-
pidCuts->AddCut(VarManager::kTPCnSigmaEl, -4.0, 4.0, false, VarManager::kPin, 0.0, 3.5);
115-
pidCuts->AddCut(VarManager::kTPCnSigmaEl, -2.0, 4.0, false, VarManager::kPin, 3.5, 1000.0);
116-
pidCuts->AddCut(VarManager::kTPCnSigmaPi, 2.0, 999, false, VarManager::kPin, 0.0, 3.5);
113+
pidCuts->AddCut(VarManager::kTPCnSigmaEl, -2.5, 4.0, false, VarManager::kPin, 0.0, 5.0);
114+
pidCuts->AddCut(VarManager::kTPCnSigmaEl, -2.0, 4.0, false, VarManager::kPin, 5.0, 1000.0);
117115
pidCuts->AddCut(VarManager::kTPCnSigmaPr, 2.5, 999, false, VarManager::kPin, 0.0, 5.0);
118116

119117
cut->AddCut(kineCut);

PWGDQ/Tasks/filterPPwithAssociation.cxx

Lines changed: 41 additions & 96 deletions
Original file line numberDiff line numberDiff line change
@@ -492,67 +492,6 @@ struct DQMuonsSelection {
492492
PROCESS_SWITCH(DQMuonsSelection, processDummy, "Dummy function", false);
493493
};
494494

495-
/*
496-
struct DQTrackToCollisionAssociation {
497-
498-
Produces<TrackAssoc> association;
499-
Produces<TrackCompColls> reverseIndices;
500-
Produces<FwdTrackAssoc> fwdassociation;
501-
Produces<FwdTrkCompColls> fwdreverseIndices;
502-
503-
// NOTE: the options for the collision associator are common for both the barrel and muon
504-
// We should add separate ones if needed
505-
Configurable<float> nSigmaForTimeCompat{"nSigmaForTimeCompat", 4.f, "number of sigmas for time compatibility"};
506-
Configurable<float> timeMargin{"timeMargin", 0.f, "time margin in ns added to uncertainty because of uncalibrated TPC"};
507-
Configurable<bool> usePVAssociation{"usePVAssociation", true, "if the track is a PV contributor, use the collision time for it"};
508-
Configurable<bool> includeUnassigned{"includeUnassigned", false, "consider also tracks which are not assigned to any collision"};
509-
Configurable<bool> fillTableOfCollIdsPerTrack{"fillTableOfCollIdsPerTrack", false, "fill additional table with vector of collision ids per track"};
510-
Configurable<int> bcWindowForOneSigma{"bcWindowForOneSigma", 60, "BC window to be multiplied by the number of sigmas to define maximum window to be considered"};
511-
512-
CollisionAssociation<true> collisionAssociatorBarrel;
513-
CollisionAssociation<false> collisionAssociatorMuon;
514-
515-
Filter filterBarrelTrackSelected = aod::dqppfilter::isDQBarrelSelected > uint32_t(0);
516-
Filter filterMuonTrackSelected = aod::dqppfilter::isDQMuonSelected > uint32_t(0);
517-
518-
void init(o2::framework::InitContext const&)
519-
{
520-
// set options in track-to-collision association
521-
collisionAssociatorBarrel.setNumSigmaForTimeCompat(nSigmaForTimeCompat);
522-
collisionAssociatorBarrel.setTimeMargin(timeMargin);
523-
collisionAssociatorBarrel.setTrackSelectionOptionForStdAssoc(track_association::TrackSelection::None);
524-
collisionAssociatorBarrel.setUsePvAssociation(usePVAssociation);
525-
collisionAssociatorBarrel.setIncludeUnassigned(includeUnassigned);
526-
collisionAssociatorBarrel.setFillTableOfCollIdsPerTrack(fillTableOfCollIdsPerTrack);
527-
collisionAssociatorBarrel.setBcWindow(bcWindowForOneSigma);
528-
// set options in muon-to-collision association
529-
collisionAssociatorMuon.setNumSigmaForTimeCompat(nSigmaForTimeCompat);
530-
collisionAssociatorMuon.setTimeMargin(timeMargin);
531-
collisionAssociatorMuon.setTrackSelectionOptionForStdAssoc(track_association::TrackSelection::None);
532-
collisionAssociatorMuon.setUsePvAssociation(false);
533-
collisionAssociatorMuon.setIncludeUnassigned(includeUnassigned);
534-
collisionAssociatorMuon.setFillTableOfCollIdsPerTrack(fillTableOfCollIdsPerTrack);
535-
collisionAssociatorMuon.setBcWindow(bcWindowForOneSigma);
536-
}
537-
538-
void processAssocWithTime(Collisions const& collisions,
539-
MyBarrelTracksSelected const& tracksUnfiltered, soa::Filtered<MyBarrelTracksSelected> const& tracks,
540-
FwdTracks const& muons,
541-
AmbiguousTracks const& ambiguousTracks, AmbiguousFwdTracks const& ambiguousFwdTracks, BCs const& bcs)
542-
{
543-
collisionAssociatorBarrel.runAssocWithTime(collisions, tracksUnfiltered, tracks, ambiguousTracks, bcs, association, reverseIndices);
544-
collisionAssociatorMuon.runAssocWithTime(collisions, muons, muons, ambiguousFwdTracks, bcs, fwdassociation, fwdreverseIndices);
545-
};
546-
void processDummy(Collisions&)
547-
{
548-
// do nothing
549-
}
550-
551-
PROCESS_SWITCH(DQTrackToCollisionAssociation, processAssocWithTime, "Produce track-to-collision associations based on time", false);
552-
PROCESS_SWITCH(DQTrackToCollisionAssociation, processDummy, "Dummy function", false);
553-
};
554-
*/
555-
556495
struct DQFilterPPTask {
557496
Produces<aod::DQEventFilter> eventFilter;
558497
Produces<aod::DqFilters> dqtable;
@@ -596,6 +535,10 @@ struct DQFilterPPTask {
596535
std::map<uint64_t, uint64_t> fFiltersMap; // map of filters for events that passed at least one filter
597536
std::map<uint64_t, std::vector<bool>> fCEFPfilters; // map of CEFP filters for events that passed at least one filter
598537

538+
uint32_t fPairingLSBarrel; // used to set in which cut setting LS pairs will be analysed
539+
uint32_t fPairingLSMuon; // used to set in which cut setting LS pairs will be analysed
540+
uint32_t fPairingLSBarrelMuon; // used to set in which cut setting LS pairs will be analysed
541+
599542
void DefineCuts()
600543
{
601544
TString barrelSelsStr = fConfigBarrelSelections.value;
@@ -699,6 +642,39 @@ struct DQFilterPPTask {
699642
}
700643
DefineCuts();
701644

645+
// check which selection should use like sign (LS) (--/++) barrel track pairs
646+
fPairingLSBarrel = 0;
647+
TString barrelLSstr = fConfigFilterLsBarrelTracksPairs.value;
648+
std::unique_ptr<TObjArray> objArrayLS(barrelLSstr.Tokenize(","));
649+
for (int icut = 0; icut < fNBarrelCuts; icut++) {
650+
TString objStr = objArrayLS->At(icut)->GetName();
651+
if (!objStr.CompareTo("true")) {
652+
fPairingLSBarrel |= (static_cast<uint32_t>(1) << icut);
653+
}
654+
}
655+
656+
// check which selection should use like sign (LS) (--/++) muon track pairs
657+
fPairingLSMuon = 0;
658+
TString musonLSstr = fConfigFilterLsMuonsPairs.value;
659+
std::unique_ptr<TObjArray> objArrayMuonLS(musonLSstr.Tokenize(","));
660+
for (int icut = 0; icut < fNMuonCuts; icut++) {
661+
TString objStr = objArrayMuonLS->At(icut)->GetName();
662+
if (!objStr.CompareTo("true")) {
663+
fPairingLSMuon |= (static_cast<uint32_t>(1) << icut);
664+
}
665+
}
666+
667+
// check which selection should use like sign (LS) (--/++) muon-barrel pairs
668+
fPairingLSBarrelMuon = 0; // reset the decisions for electron-muons
669+
TString electronMuonLSstr = fConfigFilterLsElectronMuonsPairs.value;
670+
std::unique_ptr<TObjArray> objArrayElectronMuonLS(electronMuonLSstr.Tokenize(","));
671+
for (int icut = 0; icut < fNElectronMuonCuts; icut++) {
672+
TString objStr = objArrayElectronMuonLS->At(icut)->GetName();
673+
if (!objStr.CompareTo("true")) {
674+
fPairingLSBarrelMuon |= (static_cast<uint32_t>(1) << icut);
675+
}
676+
}
677+
702678
if (fConfigQA) {
703679
// initialize the variable manager
704680
VarManager::SetDefaultVarNames();
@@ -748,7 +724,6 @@ struct DQFilterPPTask {
748724

749725
std::vector<int> objCountersBarrel(fNBarrelCuts, 0); // init all counters to zero
750726
uint32_t pairingMask = 0; // in order to know which of the selections actually require pairing
751-
uint32_t pairingLS = 0; // used to set in which cut setting LS pairs will be analysed
752727
uint32_t pairFilter = 0;
753728
// count the number of barrel tracks fulfilling each cut
754729
if constexpr (static_cast<bool>(TTrackFillMap)) {
@@ -770,16 +745,6 @@ struct DQFilterPPTask {
770745
}
771746
}
772747

773-
// check which selection should use like sign (LS) (--/++) barrel track pairs
774-
TString barrelLSstr = fConfigFilterLsBarrelTracksPairs.value;
775-
std::unique_ptr<TObjArray> objArrayLS(barrelLSstr.Tokenize(","));
776-
for (int icut = 0; icut < fNBarrelCuts; icut++) {
777-
TString objStr = objArrayLS->At(icut)->GetName();
778-
if (!objStr.CompareTo("true")) {
779-
pairingLS |= (static_cast<uint32_t>(1) << icut);
780-
}
781-
}
782-
783748
// run pairing if there is at least one selection that requires it
784749
if (pairingMask > 0) {
785750
// run pairing on the collision grouped associations
@@ -798,7 +763,7 @@ struct DQFilterPPTask {
798763
VarManager::FillPair<VarManager::kDecayToEE, TTrackFillMap>(t1, t2); // compute pair quantities
799764
for (int icut = 0; icut < fNBarrelCuts; icut++) {
800765
// select like-sign pairs if trigger has set boolean true within fConfigFilterLsBarrelTracksPairs
801-
if (!(pairingLS & (static_cast<uint32_t>(1) << icut))) {
766+
if (!(fPairingLSBarrel & (static_cast<uint32_t>(1) << icut))) {
802767
if (t1.sign() * t2.sign() > 0) {
803768
continue;
804769
}
@@ -812,6 +777,7 @@ struct DQFilterPPTask {
812777
}
813778
objCountersBarrel[icut] += 1; // count the pair
814779
if (fConfigQA) { // fill histograms if QA is enabled
780+
// cout << "=========== filling pair for collision " << collision.globalIndex() << endl;
815781
fHistMan->FillHistClass(fBarrelPairHistNames[icut].Data(), VarManager::fgValues);
816782
}
817783
}
@@ -841,17 +807,6 @@ struct DQFilterPPTask {
841807
}
842808
}
843809

844-
// check which selection should use like sign (LS) (--/++) muon track pairs
845-
pairingLS = 0; // reset the decisions for muons
846-
TString musonLSstr = fConfigFilterLsMuonsPairs.value;
847-
std::unique_ptr<TObjArray> objArrayMuonLS(musonLSstr.Tokenize(","));
848-
for (int icut = 0; icut < fNMuonCuts; icut++) {
849-
TString objStr = objArrayMuonLS->At(icut)->GetName();
850-
if (!objStr.CompareTo("true")) {
851-
pairingLS |= (static_cast<uint32_t>(1) << icut);
852-
}
853-
}
854-
855810
// run pairing if there is at least one selection that requires it
856811
pairFilter = 0;
857812
if (pairingMask > 0) {
@@ -875,7 +830,7 @@ struct DQFilterPPTask {
875830
}
876831
for (int icut = 0; icut < fNMuonCuts; icut++) {
877832
// select like-sign pairs if trigger has set boolean true within fConfigFilterLsMuonsPairs
878-
if (!(pairingLS & (static_cast<uint32_t>(1) << icut))) {
833+
if (!(fPairingLSMuon & (static_cast<uint32_t>(1) << icut))) {
879834
if (t1.sign() * t2.sign() > 0) {
880835
continue;
881836
}
@@ -908,16 +863,6 @@ struct DQFilterPPTask {
908863
}
909864
}
910865
}
911-
// check which selection should use like sign (LS) (--/++) muon track pairs
912-
pairingLS = 0; // reset the decisions for electron-muons
913-
TString electronMuonLSstr = fConfigFilterLsElectronMuonsPairs.value;
914-
std::unique_ptr<TObjArray> objArrayElectronMuonLS(electronMuonLSstr.Tokenize(","));
915-
for (int icut = 0; icut < fNElectronMuonCuts; icut++) {
916-
TString objStr = objArrayElectronMuonLS->At(icut)->GetName();
917-
if (!objStr.CompareTo("true")) {
918-
pairingLS |= (static_cast<uint32_t>(1) << icut);
919-
}
920-
}
921866

922867
// run pairing if there is at least one selection that requires it
923868
pairFilter = 0;
@@ -936,7 +881,7 @@ struct DQFilterPPTask {
936881
VarManager::FillPair<VarManager::kElectronMuon, TTrackFillMap>(t1, t2); // compute pair quantities
937882
for (int icut = 0; icut < fNElectronMuonCuts; icut++) {
938883
// select like-sign pairs if trigger has set boolean true within fConfigFilterLsElectronMuonsPairs
939-
if (!(pairingLS & (static_cast<uint32_t>(1) << icut))) {
884+
if (!(fPairingLSBarrelMuon & (static_cast<uint32_t>(1) << icut))) {
940885
if (t1.sign() * t2.sign() > 0) {
941886
continue;
942887
}

PWGEM/Dilepton/Core/Dilepton.h

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -817,11 +817,11 @@ struct Dilepton {
817817
}
818818

819819
if constexpr (pairtype == o2::aod::pwgem::dilepton::utils::pairutil::DileptonPairType::kDielectron) {
820-
if (!cut.template IsSelectedPair(t1, t2, d_bz)) {
820+
if (!cut.IsSelectedPair(t1, t2, d_bz)) {
821821
return false;
822822
}
823823
} else if constexpr (pairtype == o2::aod::pwgem::dilepton::utils::pairutil::DileptonPairType::kDimuon) {
824-
if (!cut.template IsSelectedPair(t1, t2)) {
824+
if (!cut.IsSelectedPair(t1, t2)) {
825825
return false;
826826
}
827827
}
@@ -1329,17 +1329,17 @@ struct Dilepton {
13291329
}
13301330
}
13311331
} else if constexpr (pairtype == o2::aod::pwgem::dilepton::utils::pairutil::DileptonPairType::kDimuon) {
1332-
if (!cut.template IsSelectedTrack(t1) || !cut.template IsSelectedTrack(t2)) {
1332+
if (!cut.IsSelectedTrack(t1) || !cut.IsSelectedTrack(t2)) {
13331333
return false;
13341334
}
13351335
}
13361336

13371337
if constexpr (pairtype == o2::aod::pwgem::dilepton::utils::pairutil::DileptonPairType::kDielectron) {
1338-
if (!cut.template IsSelectedPair(t1, t2, d_bz)) {
1338+
if (!cut.IsSelectedPair(t1, t2, d_bz)) {
13391339
return false;
13401340
}
13411341
} else if constexpr (pairtype == o2::aod::pwgem::dilepton::utils::pairutil::DileptonPairType::kDimuon) {
1342-
if (!cut.template IsSelectedPair(t1, t2)) {
1342+
if (!cut.IsSelectedPair(t1, t2)) {
13431343
return false;
13441344
}
13451345
}

PWGEM/Dilepton/Core/DileptonMC.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -782,14 +782,14 @@ struct DileptonMC {
782782
return false;
783783
}
784784
}
785-
if (!cut.template IsSelectedPair(t1, t2, d_bz)) {
785+
if (!cut.IsSelectedPair(t1, t2, d_bz)) {
786786
return false;
787787
}
788788
} else if constexpr (pairtype == o2::aod::pwgem::dilepton::utils::pairutil::DileptonPairType::kDimuon) {
789789
if (!cut.template IsSelectedTrack<false>(t1) || !cut.template IsSelectedTrack<false>(t2)) {
790790
return false;
791791
}
792-
if (!cut.template IsSelectedPair(t1, t2)) {
792+
if (!cut.IsSelectedPair(t1, t2)) {
793793
return false;
794794
}
795795
}

PWGEM/Dilepton/Core/SingleTrackQC.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -266,8 +266,8 @@ struct SingleTrackQC {
266266
fRegistry.addClone("Track/positive/", "Track/negative/");
267267
} else if constexpr (pairtype == o2::aod::pwgem::dilepton::utils::pairutil::DileptonPairType::kDimuon) {
268268
const AxisSpec axis_pt{ConfPtlBins, "p_{T,#mu} (GeV/c)"};
269-
const AxisSpec axis_eta{40, -5, -1, "#eta_{#mu}"};
270-
const AxisSpec axis_phi{90, 0, 2 * M_PI, "#varphi_{#mu} (rad.)"};
269+
const AxisSpec axis_eta{100, -6, -1, "#eta_{#mu}"};
270+
const AxisSpec axis_phi{180, 0, 2 * M_PI, "#varphi_{#mu} (rad.)"};
271271
const AxisSpec axis_dca{ConfDCABins, "DCA_{#mu}^{XY} (#sigma)"};
272272

273273
// track info

PWGEM/Dilepton/Core/SingleTrackQCMC.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -310,8 +310,8 @@ struct SingleTrackQCMC {
310310
}
311311
} else if constexpr (pairtype == o2::aod::pwgem::dilepton::utils::pairutil::DileptonPairType::kDimuon) {
312312
const AxisSpec axis_pt{ConfPtlBins, "p_{T,#mu} (GeV/c)"};
313-
const AxisSpec axis_eta{25, -4.5, -2.0, "#eta_{#mu}"};
314-
const AxisSpec axis_phi{36, 0.0, 2 * M_PI, "#varphi_{#mu} (rad.)"};
313+
const AxisSpec axis_eta{100, -6, -1, "#eta_{#mu}"};
314+
const AxisSpec axis_phi{180, 0.0, 2 * M_PI, "#varphi_{#mu} (rad.)"};
315315
const AxisSpec axis_dca{ConfDCABins, "DCA_{#mu}^{XY} (#sigma)"};
316316
const AxisSpec axis_charge_gen{3, -1.5, +1.5, "true charge"};
317317

0 commit comments

Comments
 (0)