|
49 | 49 | #include <cstddef> |
50 | 50 | #include <cstdint> |
51 | 51 | #include <iterator> |
| 52 | +#include <string> |
52 | 53 | #include <vector> |
53 | 54 |
|
54 | 55 | using namespace o2; |
@@ -158,6 +159,7 @@ struct doubleOmegaTreeCreator { |
158 | 159 | OutputObj<ZorroSummary> zorroSummary{"zorroSummary"}; |
159 | 160 |
|
160 | 161 | Configurable<bool> cfgSkimmedProcessing{"cfgSkimmedProcessing", false, "Skimmed dataset processing"}; |
| 162 | + Configurable<bool> cfgApplyEventSelection{"cfgApplyEventSelection", true, "Apply the standard collision event selection"}; |
161 | 163 | Configurable<std::string> ccdburl{"ccdb-url", "http://alice-ccdb.cern.ch", "url of the ccdb repository"}; |
162 | 164 | Configurable<int> cfgMaterialCorrection{"cfgMaterialCorrection", static_cast<int>(o2::base::Propagator::MatCorrType::USEMatCorrLUT), "Material correction for the raw V0/cascade fits"}; |
163 | 165 |
|
@@ -188,6 +190,7 @@ struct doubleOmegaTreeCreator { |
188 | 190 | Configurable<float> mXiWindow{"mXiWindow", 0.02f, "Xi mass window used by the cascade compatibility mode"}; |
189 | 191 | Configurable<float> mOmegaWindow{"mOmegaWindow", 0.01f, "Omega mass window"}; |
190 | 192 | Configurable<float> mLambdaWindow{"mLambdaWindow", 0.01f, "Lambda mass window"}; |
| 193 | + Configurable<float> maxDoubleOmegaMass{"maxDoubleOmegaMass", 3.6f, "Maximum double-Omega invariant mass (GeV/c^2)"}; |
191 | 194 | Configurable<float> minCosPAOmega{"minCosPAOmega", -1.f, "Minimum Omega cosPA relative to the double-Omega decay vertex"}; |
192 | 195 | Configurable<float> minCosPADirectLambda{"minCosPADirectLambda", -1.f, "Minimum direct-Lambda cosPA relative to the double-Omega decay vertex"}; |
193 | 196 | Configurable<float> minCosPADoubleOmega{"minCosPADoubleOmega", -1.f, "Minimum double-Omega cosPA relative to the primary vertex"}; |
@@ -586,16 +589,17 @@ struct doubleOmegaTreeCreator { |
586 | 589 | cand.dcaZDirectLambdaToPV = dcaDirectLambda[1]; |
587 | 590 | cand.dcaXYDirectKaonToPV = dcaDirectKaon[0]; |
588 | 591 | cand.dcaZDirectKaonToPV = dcaDirectKaon[1]; |
| 592 | + cand.mass = std::sqrt(std::max(0.f, massSquared)); |
589 | 593 | if (cand.cosPAOmega < minCosPAOmega || |
590 | 594 | cand.cosPADirectLambda < minCosPADirectLambda || |
591 | 595 | cand.cosPADoubleOmega < minCosPADoubleOmega || |
592 | 596 | std::hypot(decayVertex[0], decayVertex[1]) < minDoubleOmegaDecayRadius || |
593 | 597 | std::abs(cand.dcaXYOmegaToPV) < dcaOmegaToPV || |
594 | 598 | std::abs(cand.dcaXYDirectLambdaToPV) < dcaDirectLambdaToPV || |
595 | | - std::abs(cand.dcaXYDirectKaonToPV) < dcaKaonToPV) { |
| 599 | + std::abs(cand.dcaXYDirectKaonToPV) < dcaKaonToPV || |
| 600 | + cand.mass > maxDoubleOmegaMass) { |
596 | 601 | return false; |
597 | 602 | } |
598 | | - cand.mass = std::sqrt(std::max(0.f, massSquared)); |
599 | 603 | cand.massOmega = omega.massOmega; |
600 | 604 | cand.massXi = omega.massXi; |
601 | 605 | return true; |
@@ -899,7 +903,7 @@ struct doubleOmegaTreeCreator { |
899 | 903 | const std::array<int64_t, 3> sourceTrackIds{ |
900 | 904 | lambdaKaonSource.posTrackId(), lambdaKaonSource.negTrackId(), lambdaKaonSource.bachelorId()}; |
901 | 905 | bool sharesTrack = false; |
902 | | - for (const auto omegaTrackId : omegaTrackIds) { |
| 906 | + for (const auto& omegaTrackId : omegaTrackIds) { |
903 | 907 | if (std::find(sourceTrackIds.begin(), sourceTrackIds.end(), omegaTrackId) != sourceTrackIds.end()) { |
904 | 908 | sharesTrack = true; |
905 | 909 | break; |
@@ -932,10 +936,11 @@ struct doubleOmegaTreeCreator { |
932 | 936 | auto bc = collision.template bc_as<aod::BCsWithTimestamps>(); |
933 | 937 | initCCDB(bc); |
934 | 938 |
|
935 | | - if (!collision.sel8() || |
936 | | - std::abs(collision.posZ()) > zVtxMax || |
937 | | - !collision.selection_bit(aod::evsel::kNoITSROFrameBorder) || |
938 | | - !collision.selection_bit(aod::evsel::kNoTimeFrameBorder)) { |
| 939 | + if (cfgApplyEventSelection && |
| 940 | + (!collision.sel8() || |
| 941 | + std::abs(collision.posZ()) > zVtxMax || |
| 942 | + !collision.selection_bit(aod::evsel::kNoITSROFrameBorder) || |
| 943 | + !collision.selection_bit(aod::evsel::kNoTimeFrameBorder))) { |
939 | 944 | return false; |
940 | 945 | } |
941 | 946 | if (cfgSkimmedProcessing) { |
|
0 commit comments