From af9e1c7a6d5f5f9576976624821a2480bd4393f9 Mon Sep 17 00:00:00 2001 From: lauraser Date: Fri, 4 Feb 2022 16:31:56 +0100 Subject: [PATCH] Include more QA histograms, change V0M value --- EventFiltering/PWGCF/CFFilter.cxx | 88 ++++++++++++++++++------------- 1 file changed, 50 insertions(+), 38 deletions(-) diff --git a/EventFiltering/PWGCF/CFFilter.cxx b/EventFiltering/PWGCF/CFFilter.cxx index 2c02abfbc48..b36b55a338c 100644 --- a/EventFiltering/PWGCF/CFFilter.cxx +++ b/EventFiltering/PWGCF/CFFilter.cxx @@ -92,19 +92,19 @@ struct CFFilter { Configurable> confQ3TriggerLimit{"Q3TriggerLimitC", std::vector{0.6f, 0.6f, 0.6f, 0.6f}, "Q3 limit for selection"}; Configurable Q3Trigger{"Q3Trigger", 0, "Choice which trigger to run"}; - Configurable ldeltaPhiMax{"ldeltaPhiMax", 0.017, "Max limit of delta phi"}; - Configurable ldeltaEtaMax{"ldeltaEtaMax", 0.017, "Max limit of delta eta"}; + Configurable ldeltaPhiMax{"ldeltaPhiMax", 0.010, "Max limit of delta phi"}; + Configurable ldeltaEtaMax{"ldeltaEtaMax", 0.010, "Max limit of delta eta"}; // Obtain particle and antiparticle candidates of protons and lambda hyperons for current femto collision - Partition partsProton0Part = (o2::aod::femtodreamparticle::partType == Track) && ((o2::aod::femtodreamparticle::cut & kSignPlusMask) > kValue0) && ((o2::aod::femtodreamparticle::pidcut & knSigmaProton) > kValue0); + Partition partsProton0Part = (o2::aod::femtodreamparticle::partType == Track) && ((o2::aod::femtodreamparticle::cut & kSignPlusMask) > kValue0); // Consider later: && ((o2::aod::femtodreamparticle::pidcut & knSigmaProton) > kValue0); Partition partsLambda0Part = (o2::aod::femtodreamparticle::partType == V0) && ((o2::aod::femtodreamparticle::cut & kSignPlusMask) > kValue0); - Partition partsProton1Part = (o2::aod::femtodreamparticle::partType == Track) && ((o2::aod::femtodreamparticle::cut & kSignMinusMask) > kValue0) && ((o2::aod::femtodreamparticle::pidcut & knSigmaProton) > kValue0); + Partition partsProton1Part = (o2::aod::femtodreamparticle::partType == Track) && ((o2::aod::femtodreamparticle::cut & kSignMinusMask) > kValue0); // Consider later: && ((o2::aod::femtodreamparticle::pidcut & knSigmaProton) > kValue0); Partition partsLambda1Part = (o2::aod::femtodreamparticle::partType == V0) && ((o2::aod::femtodreamparticle::cut & kSignMinusMask) > kValue0); HistogramRegistry registry{"registry", {}, OutputObjHandlingPolicy::AnalysisObject}; HistogramRegistry registryQA{"registryQA", {}, OutputObjHandlingPolicy::AnalysisObject}; - Service ccdb; ///Accessing the CCDB + Service ccdb; /// Accessing the CCDB // FemtoDreamPairCleaner pairCleanerTT; Currently not used, will be needed later FemtoDreamPairCleaner pairCleanerTV; @@ -127,7 +127,7 @@ struct CFFilter { { float pidThresh = 0.75; bool pidSelection = false; - auto vSpecies = std::vector{2}; + auto vSpecies = std::vector{0}; if (momentum < pidThresh) { /// TPC PID only pidSelection = isPIDSelected(pidCut, vSpecies, 3.5, kDetector::kTPC); @@ -157,7 +157,9 @@ struct CFFilter { registry.add("fZvtxBefore", "Zvtx of all processed events", HistType::kTH1F, {{1000, -15, 15}}); registry.add("fZvtxAfter", "Zvtx of events which passed ppp trigger", HistType::kTH1F, {{1000, -15, 15}}); registry.add("fPtBefore", "Transverse momentum of all processed tracks", HistType::kTH1F, {{1000, 0, 10}}); - registry.add("fPtAfter", "Transverse momentum of processed tracks which passed ppp trigger", HistType::kTH1F, {{1000, 0, 10}}); + registry.add("fPtAfter", "Transverse momentum of processed tracks which passed selections", HistType::kTH1F, {{1000, 0, 10}}); + registry.add("fPtBeforeAnti", "Transverse momentum of all processed antitracks", HistType::kTH1F, {{1000, 0, 10}}); + registry.add("fPtAfterAnti", "Transverse momentum of processed antitracks passed selection", HistType::kTH1F, {{1000, 0, 10}}); } if (Q3Trigger == 1 || Q3Trigger == 11) { registry.add("fSameEventPartPPL", "CF - same event ppL distribution for particles;;events", HistType::kTH1F, {{8000, 0, 8}}); @@ -202,16 +204,32 @@ struct CFFilter { auto tmstamp = col.timestamp(); auto mafneticField = getMagneticFieldTesla(tmstamp); registry.get(HIST("fProcessedEvents"))->Fill(0); - registry.get(HIST("fMultiplicityBefore"))->Fill(col.multV0M()); + registry.get(HIST("fMultiplicityBefore"))->Fill(col.multV0M() / 2.); registry.get(HIST("fZvtxBefore"))->Fill(col.posZ()); for (auto p1pt : partsProton0) { registry.get(HIST("fPtBefore"))->Fill(p1pt.pt()); } + for (auto p1pt : partsProton0) { + if (isFullPIDSelectedProton(p1pt.pidcut(), p1pt.p())) + registry.get(HIST("fPtAfter"))->Fill(p1pt.pt()); + } + + for (auto p1pt : partsProton1) { + registry.get(HIST("fPtBeforeAnti"))->Fill(p1pt.pt()); + } + + for (auto p1pt : partsProton1) { + if (isFullPIDSelectedProton(p1pt.pidcut(), p1pt.p())) + registry.get(HIST("fPtAfterAnti"))->Fill(p1pt.pt()); + } + bool keepEvent[nTriplets]{false}; int lowQ3Triplets[2] = {0, 0}; if (partsFemto.size() != 0) { + registry.get(HIST("fMultiplicityAfter"))->Fill(col.multV0M() / 2.); + registry.get(HIST("fZvtxAfter"))->Fill(col.posZ()); auto Q3TriggerLimit = (std::vector)confQ3TriggerLimit; // TRIGGER FOR PPP TRIPLETS if (Q3Trigger == 0 || Q3Trigger == 11) { @@ -239,32 +257,32 @@ struct CFFilter { } } // end if - /*if (lowQ3Triplets[0] == 0) { // if at least one triplet found in particles, no need to check antiparticles - if (partsProton1.size() >= 3) { - for (auto& [p1, p2, p3] : combinations(partsProton1, partsProton1, partsProton1)) { + // if (lowQ3Triplets[0] == 0) // Use this in final version only, for testing comment { // if at least one triplet found in particles, no need to check antiparticles + if (partsProton1.size() >= 3) { + for (auto& [p1, p2, p3] : combinations(partsProton1, partsProton1, partsProton1)) { - if (!isFullPIDSelectedProton(p1.pidcut(), p1.p()) || !isFullPIDSelectedProton(p2.pidcut(), p2.p()) || !isFullPIDSelectedProton(p3.pidcut(), p3.p())) { - continue; - } - // Think if pair cleaning is needed in current framework - // Run close pair rejection - if (closePairRejectionTT.isClosePair(p1, p2, partsFemto, mafneticField)) { - continue; - } - if (closePairRejectionTT.isClosePair(p1, p3, partsFemto, mafneticField)) { - continue; - } - if (closePairRejectionTT.isClosePair(p2, p3, partsFemto, mafneticField)) { - continue; - } - auto Q3 = FemtoDreamMath::getQ3(p1, mMassProton, p2, mMassProton, p3, mMassProton); - registry.get(HIST("fSameEventAntiPartPPP"))->Fill(Q3); - if (Q3 < Q3TriggerLimit.at(0)) { - lowQ3Triplets[0]++; - } + if (!isFullPIDSelectedProton(p1.pidcut(), p1.p()) || !isFullPIDSelectedProton(p2.pidcut(), p2.p()) || !isFullPIDSelectedProton(p3.pidcut(), p3.p())) { + continue; } - } // end if - }*/ + // Think if pair cleaning is needed in current framework + // Run close pair rejection + if (closePairRejectionTT.isClosePair(p1, p2, partsFemto, mafneticField)) { + continue; + } + if (closePairRejectionTT.isClosePair(p1, p3, partsFemto, mafneticField)) { + continue; + } + if (closePairRejectionTT.isClosePair(p2, p3, partsFemto, mafneticField)) { + continue; + } + auto Q3 = FemtoDreamMath::getQ3(p1, mMassProton, p2, mMassProton, p3, mMassProton); + registry.get(HIST("fSameEventAntiPartPPP"))->Fill(Q3); + if (Q3 < Q3TriggerLimit.at(0)) { + lowQ3Triplets[0]++; + } + } + } // end if + //} } // TRIGGER FOR PPL TRIPLETS @@ -323,12 +341,6 @@ struct CFFilter { if (lowQ3Triplets[0] > 0) { keepEvent[kPPP] = true; - registry.get(HIST("fMultiplicityAfter"))->Fill(col.multV0M()); - registry.get(HIST("fZvtxAfter"))->Fill(col.posZ()); - for (auto p1pt : partsProton0) { - // All protons from selected events - registry.get(HIST("fPtAfter"))->Fill(p1pt.pt()); - } } if (lowQ3Triplets[1] > 0) {