Skip to content

Commit 226852c

Browse files
authored
[PWGLF] Add additional histogram for resonance flow measurement (#9972)
1 parent 8245e22 commit 226852c

File tree

2 files changed

+67
-18
lines changed

2 files changed

+67
-18
lines changed

PWGLF/Tasks/Resonances/highmasslambda.cxx

Lines changed: 61 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -77,22 +77,25 @@ struct highmasslambda {
7777
double bz{0.};
7878

7979
Configurable<std::string> ccdburl{"ccdb-url", "http://alice-ccdb.cern.ch", "url of the ccdb repository"};
80-
Configurable<std::string> ccdbPathLut{"ccdbPathLut", "GLO/Param/MatLUT", "Path for LUT parametrization"};
81-
Configurable<std::string> ccdbPathGrp{"ccdbPathGrp", "GLO/GRP/GRP", "Path of the grp file (Run 2)"};
80+
// Configurable<std::string> ccdbPathLut{"ccdbPathLut", "GLO/Param/MatLUT", "Path for LUT parametrization"};
81+
// Configurable<std::string> ccdbPathGrp{"ccdbPathGrp", "GLO/GRP/GRP", "Path of the grp file (Run 2)"};
8282
Configurable<std::string> ccdbPathGrpMag{"ccdbPathGrpMag", "GLO/Config/GRPMagField", "CCDB path of the GRPMagField object (Run 3)"};
83-
Configurable<bool> isRun2{"isRun2", false, "enable Run 2 or Run 3 GRP objects for magnetic field"};
83+
// Configurable<bool> isRun2{"isRun2", false, "enable Run 2 or Run 3 GRP objects for magnetic field"};
8484
Configurable<bool> cnfabsdca{"cnfabsdca", false, "Use Abs DCA for secondary vertex fitting"};
8585

8686
// fill output
8787
Configurable<int> cfgOccupancyCut{"cfgOccupancyCut", 2500, "Occupancy cut"};
8888
Configurable<bool> fillRotation{"fillRotation", false, "fill rotation"};
8989
Configurable<bool> useSP{"useSP", false, "useSP"};
90+
Configurable<int> useKshortOpti{"useKshortOpti", 1, "useKshortOpti"};
9091
// events
9192
Configurable<float> cfgCutVertex{"cfgCutVertex", 10.0f, "Accepted z-vertex range"};
9293
Configurable<float> cfgCutCentralityMax{"cfgCutCentralityMax", 50.0f, "Accepted maximum Centrality"};
9394
Configurable<float> cfgCutCentralityMin{"cfgCutCentralityMin", 30.0f, "Accepted minimum Centrality"};
9495
Configurable<bool> additionalEvSel{"additionalEvSel", true, "additionalEvSel"};
9596
// proton track cut
97+
Configurable<float> confMinDCAProtonV0{"confMinDCAProtonV0", -5.0, "Minimum DCA between Proton and V0"};
98+
Configurable<float> confMaxDCAProtonV0{"confMaxDCAProtonV0", 5.0, "Maximum DCA between Proton and V0"};
9699
Configurable<float> confMinRot{"confMinRot", 5.0 * TMath::Pi() / 6.0, "Minimum of rotation"};
97100
Configurable<float> confMaxRot{"confMaxRot", 7.0 * TMath::Pi() / 6.0, "Maximum of rotation"};
98101
Configurable<float> confRapidity{"confRapidity", 0.8, "cut on Rapidity"};
@@ -173,9 +176,16 @@ struct highmasslambda {
173176
// std::vector<double> ptLambdaBinning = {2.0, 3.0, 4.0, 5.0, 6.0};
174177

175178
std::vector<double> occupancyBinning = {-0.5, 500.0, 1000.0, 1500.0, 2000.0, 3000.0, 4000.0, 5000.0, 50000.0};
179+
std::vector<double> dcaV0toPVBinning = {0.0, 0.01, 0.02, 0.03, 0.04, 0.05, 0.06, 0.08, 0.1, 0.15, 0.2, 0.3, 0.5, 1.0};
180+
std::vector<double> cpaV0Binning = {0.995, 0.996, 0.997, 0.998, 0.999, 0.9995, 0.9997, 0.9999, 1.005};
181+
std::vector<double> ptV0Binning = {0.0, 0.2, 0.3, 0.4, 0.5, 0.6, 0.8, 1.0, 1.5, 100.0};
182+
std::vector<double> dcaBetweenV0 = {0.0, 0.05, 0.1, 0.15, 0.2, 0.3, 0.4, 0.5, 0.6, 0.8, 1.0};
183+
std::vector<double> dcaBetweenProtonV0 = {-0.05, -0.04, -0.03, -0.025, -0.02, -0.01, -0.005, -0.004, -0.003, -0.003, -0.002, -0.001, 0.0, 0.001, 0.002, 0.003, 0.004, 0.005, 0.006, 0.007, 0.008, 0.01, 0.012, 0.014, 0.016, 0.018, 0.02, 0.025, 0.03, 0.04, 0.05, 0.06, 0.08, 0.1, 0.12, 0.14, 0.16, 0.18, 0.2, 0.3, 0.4, 0.5, 1.0};
184+
176185
AxisSpec resAxis = {1600, -30, 30, "Res"};
177186
AxisSpec phiAxis = {500, -6.28, 6.28, "phi"};
178187
AxisSpec centAxis = {8, 0, 80, "V0M (%)"};
188+
AxisSpec dcaV0toPVAxis = {dcaV0toPVBinning, "dcaV0toPV"};
179189
const AxisSpec thnAxisInvMass{configThnAxisInvMass, "#it{M} (GeV/#it{c}^{2})"};
180190
const AxisSpec thnAxisPt{configThnAxisPt, "#it{p}_{T} (GeV/#it{c})"};
181191
const AxisSpec thnAxisV2{configThnAxisV2, "V2"};
@@ -215,14 +225,21 @@ struct highmasslambda {
215225
histos.add("hImpactPar0", "hImpactPar0", kTH1F, {{500, 0.0f, 0.1f}});
216226
histos.add("hImpactPar1", "hImpactPar1", kTH1F, {{500, 0.0f, 0.1f}});
217227
histos.add("hCPA", "hCPA", kTH1F, {{220, -1.1f, 1.1f}});
218-
219-
histos.add("hSparseV2SASameEvent_V2", "hSparseV2SASameEvent_V2", HistType::kTHnSparseF, {thnAxisInvMass, thnAxisPt, thnAxisV2, thnAxisDCA, thnAxisPtProton});
220-
histos.add("hSparseV2SASameEventRotational_V2", "hSparseV2SASameEventRotational", HistType::kTHnSparseF, {thnAxisInvMass, thnAxisPt, thnAxisV2, thnAxisDCA, thnAxisPtProton});
221-
histos.add("hSparseV2SAMixedEvent_V2", "hSparseV2SAMixedEvent_V2", HistType::kTHnSparseF, {thnAxisInvMass, thnAxisPt, thnAxisV2, thnAxisDCA, thnAxisPtProton});
222-
223228
histos.add("hSparseV2SASameEvent_V2_SVX", "hSparseV2SASameEvent_V2_SVX", HistType::kTHnSparseF, {thnAxisInvMass, thnAxisPt, thnAxisV2, thnAxisDecayLength, thnAxisCPA});
224229
histos.add("hSparseV2SASameEventRotational_V2_SVX", "hSparseV2SASameEventRotational_SVX", HistType::kTHnSparseF, {thnAxisInvMass, thnAxisPt, thnAxisV2, thnAxisDecayLength, thnAxisCPA});
225-
230+
histos.add("hSparseV2SASameEventRotational_V2", "hSparseV2SASameEventRotational", HistType::kTHnSparseF, {thnAxisInvMass, thnAxisPt, thnAxisV2});
231+
if (useKshortOpti == 0) {
232+
histos.add("hSparseV2SASameEvent_V2", "hSparseV2SASameEvent_V2", HistType::kTHnSparseF, {thnAxisInvMass, thnAxisPt, thnAxisDCA, thnAxisPtProton});
233+
histos.add("hSparseV2SAMixedEvent_V2", "hSparseV2SAMixedEvent_V2", HistType::kTHnSparseF, {thnAxisInvMass, thnAxisPt, thnAxisDCA, thnAxisPtProton});
234+
}
235+
if (useKshortOpti == 1) {
236+
histos.add("hSparseV2SASameEvent_V2", "hSparseV2SASameEvent_V2", HistType::kTHnSparseF, {thnAxisInvMass, thnAxisPt, dcaV0toPVBinning, cpaV0Binning, ptV0Binning, dcaBetweenV0, dcaBetweenProtonV0});
237+
histos.add("hSparseV2SAMixedEvent_V2", "hSparseV2SAMixedEvent_V2", HistType::kTHnSparseF, {thnAxisInvMass, thnAxisPt, dcaV0toPVBinning, cpaV0Binning, ptV0Binning, dcaBetweenV0, dcaBetweenProtonV0});
238+
}
239+
if (useKshortOpti == 2) {
240+
histos.add("hSparseV2SASameEvent_V2", "hSparseV2SASameEvent_V2", HistType::kTHnSparseF, {thnAxisInvMass, thnAxisPt, thnAxisV2});
241+
histos.add("hSparseV2SAMixedEvent_V2", "hSparseV2SAMixedEvent_V2", HistType::kTHnSparseF, {thnAxisInvMass, thnAxisPt, thnAxisV2});
242+
}
226243
// histogram for resolution
227244
histos.add("ResFT0CTPC", "ResFT0CTPC", kTH2F, {centAxis, resAxis});
228245
histos.add("ResFT0CTPCR", "ResFT0CTPCR", kTH2F, {centAxis, resAxis});
@@ -249,7 +266,7 @@ struct highmasslambda {
249266
template <typename T>
250267
bool selectionTrack(const T& candidate)
251268
{
252-
if (!(candidate.isGlobalTrackWoDCA() && candidate.itsNCls() > cfgITScluster && candidate.tpcNClsFound() > cfgTPCcluster)) {
269+
if (!(candidate.isGlobalTrackWoDCA() && candidate.itsNCls() > cfgITScluster && candidate.tpcNClsCrossedRows() > cfgTPCcluster)) {
253270
return false;
254271
}
255272
if (candidate.pt() > 0.0 && candidate.pt() < 0.5 && std::abs(candidate.dcaXY()) < cfgCutDCAxymin1) {
@@ -531,7 +548,7 @@ struct highmasslambda {
531548
{
532549
const auto eta = track.eta();
533550
const auto pt = track.pt();
534-
const auto tpcNClsF = track.tpcNClsFound();
551+
const auto tpcNClsF = track.tpcNClsCrossedRows();
535552
const auto dcaXY = track.dcaXY();
536553
const auto sign = track.sign();
537554
if (charge < 0 && sign > 0) {
@@ -546,7 +563,7 @@ struct highmasslambda {
546563
if (std::abs(pt) < 0.15) {
547564
return false;
548565
}
549-
if (tpcNClsF < 50) {
566+
if (tpcNClsF < 70) {
550567
return false;
551568
}
552569
if (std::abs(dcaXY) < ConfDaughDCAMin) {
@@ -687,8 +704,21 @@ struct highmasslambda {
687704
if (useSP) {
688705
v2 = TMath::Cos(2.0 * phiminuspsi);
689706
}
690-
if (Lambdac.M() > cMinLambdaMass && Lambdac.M() <= cMaxLambdaMass && std::abs(Lambdac.Rapidity()) < confRapidity && Lambdac.Pt() > 1.0 && Lambdac.Pt() <= 6.0) {
691-
histos.fill(HIST("hSparseV2SASameEvent_V2"), Lambdac.M(), Lambdac.Pt(), v2, std::abs(track1.dcaXY()), Proton.Pt());
707+
auto dcaV0toPV = std::abs(v0.dcav0topv());
708+
auto cpaV0 = v0.v0cosPA();
709+
auto ptV0 = v0.pt();
710+
auto dcaV0Daughters = std::abs(v0.dcaV0daughters());
711+
auto dcaProtonV0 = v0.dcav0topv() - track1.dcaXY();
712+
if (Lambdac.M() > cMinLambdaMass && Lambdac.M() <= cMaxLambdaMass && std::abs(Lambdac.Rapidity()) < confRapidity && Lambdac.Pt() > 1.0 && Lambdac.Pt() <= 6.0 && dcaProtonV0 > confMinDCAProtonV0 && dcaProtonV0 < confMaxDCAProtonV0) {
713+
if (useKshortOpti == 0) {
714+
histos.fill(HIST("hSparseV2SASameEvent_V2"), Lambdac.M(), Lambdac.Pt(), std::abs(track1.dcaXY()), Proton.Pt());
715+
}
716+
if (useKshortOpti == 1) {
717+
histos.fill(HIST("hSparseV2SASameEvent_V2"), Lambdac.M(), Lambdac.Pt(), dcaV0toPV, cpaV0, ptV0, dcaV0Daughters, dcaProtonV0);
718+
}
719+
if (useKshortOpti == 2) {
720+
histos.fill(HIST("hSparseV2SASameEvent_V2"), Lambdac.M(), Lambdac.Pt(), v2);
721+
}
692722
}
693723
if (fillRotation) {
694724
for (int nrotbkg = 0; nrotbkg < nBkgRotations; nrotbkg++) {
@@ -706,8 +736,8 @@ struct highmasslambda {
706736
if (useSP) {
707737
v2Rot = TMath::Cos(2.0 * phiminuspsiRot);
708738
}
709-
if (LambdacRot.M() > cMinLambdaMass && LambdacRot.M() <= cMaxLambdaMass && std::abs(LambdacRot.Rapidity()) < confRapidity && LambdacRot.Pt() > 1.0 && LambdacRot.Pt() <= 6.0) {
710-
histos.fill(HIST("hSparseV2SASameEventRotational_V2"), LambdacRot.M(), LambdacRot.Pt(), v2Rot, std::abs(track1.dcaXY()), Proton.Pt());
739+
if (LambdacRot.M() > cMinLambdaMass && LambdacRot.M() <= cMaxLambdaMass && std::abs(LambdacRot.Rapidity()) < confRapidity && LambdacRot.Pt() > 1.0 && LambdacRot.Pt() <= 6.0 && dcaProtonV0 > confMinDCAProtonV0 && dcaProtonV0 < confMaxDCAProtonV0) {
740+
histos.fill(HIST("hSparseV2SASameEventRotational_V2"), LambdacRot.M(), LambdacRot.Pt(), v2Rot);
711741
}
712742
}
713743
}
@@ -807,8 +837,21 @@ struct highmasslambda {
807837
if (useSP) {
808838
v2 = TMath::Cos(2.0 * phiminuspsi);
809839
}
810-
if (occupancy1 < cfgOccupancyCut && occupancy2 < cfgOccupancyCut && Lambdac.M() > cMinLambdaMass && Lambdac.M() <= cMaxLambdaMass && std::abs(Lambdac.Rapidity()) < confRapidity && Lambdac.Pt() > 1.0 && Lambdac.Pt() <= 6.0) {
811-
histos.fill(HIST("hSparseV2SAMixedEvent_V2"), Lambdac.M(), Lambdac.Pt(), v2, std::abs(track1.dcaXY()), Proton.Pt());
840+
auto dcaV0toPV = std::abs(v0.dcav0topv());
841+
auto cpaV0 = v0.v0cosPA();
842+
auto ptV0 = v0.pt();
843+
auto dcaV0Daughters = std::abs(v0.dcaV0daughters());
844+
auto dcaProtonV0 = v0.dcav0topv() - track1.dcaXY();
845+
if (Lambdac.M() > cMinLambdaMass && Lambdac.M() <= cMaxLambdaMass && std::abs(Lambdac.Rapidity()) < confRapidity && Lambdac.Pt() > 1.0 && Lambdac.Pt() <= 6.0 && dcaProtonV0 > confMinDCAProtonV0 && dcaProtonV0 < confMaxDCAProtonV0) {
846+
if (useKshortOpti == 0) {
847+
histos.fill(HIST("hSparseV2SAMixedEvent_V2"), Lambdac.M(), Lambdac.Pt(), std::abs(track1.dcaXY()), Proton.Pt());
848+
}
849+
if (useKshortOpti == 1) {
850+
histos.fill(HIST("hSparseV2SAMixedEvent_V2"), Lambdac.M(), Lambdac.Pt(), dcaV0toPV, cpaV0, ptV0, dcaV0Daughters, dcaProtonV0);
851+
}
852+
if (useKshortOpti == 2) {
853+
histos.fill(HIST("hSparseV2SAMixedEvent_V2"), Lambdac.M(), Lambdac.Pt(), v2);
854+
}
812855
}
813856
}
814857
}

PWGLF/Tasks/Resonances/phipbpb.cxx

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -206,6 +206,7 @@ struct phipbpb {
206206
histos.add("hSparseV2MixedEventCosDeltaPhi", "hSparseV2MixedEventCosDeltaPhi", HistType::kTHnSparseF, {thnAxisInvMass, thnAxisPt, thnAxisV2, thnAxisCentrality});
207207

208208
histos.add("hSparseV2SameEventCosDeltaPhiSquare", "hSparseV2SameEventCosDeltaPhiSquare", HistType::kTHnSparseF, {thnAxisInvMass, thnAxisPt, squareAxis, thnAxisCentrality});
209+
histos.add("hSparseV2SameEventCosDeltaPhiCube", "hSparseV2SameEventCosDeltaPhiCube", HistType::kTHnSparseF, {thnAxisInvMass, thnAxisPt, thnAxisV2, thnAxisCentrality});
209210
histos.add("hSparseV2MixedEventCosDeltaPhiSquare", "hSparseV2MixedEventCosDeltaPhiSquare", HistType::kTHnSparseF, {thnAxisInvMass, thnAxisPt, squareAxis, thnAxisCentrality});
210211

211212
histos.add("hSparseV2SameEventSinDeltaPhi", "hSparseV2SameEventSinDeltaPhi", HistType::kTHnSparseF, {thnAxisInvMass, thnAxisPt, thnAxisV2, thnAxisCentrality});
@@ -259,6 +260,8 @@ struct phipbpb {
259260
histos.add("hSparseMCGenWeight", "hSparseMCGenWeight", HistType::kTHnSparseF, {thnAxisCentrality, {36, 0.0f, TMath::Pi()}, {50, 0.0f, 1}, axisPtKaonWeight, {8, -0.8, 0.8}});
260261
histos.add("hSparseMCRecWeight", "hSparseMCRecWeight", HistType::kTHnSparseF, {thnAxisCentrality, {36, 0.0f, TMath::Pi()}, {50, 0.0f, 1}, axisPtKaonWeight, {8, -0.8, 0.8}});
261262
histos.add("hSparseMCRecAllTrackWeight", "hSparseMCRecAllTrackWeight", HistType::kTHnSparseF, {thnAxisCentrality, {36, 0.0, TMath::Pi()}, {50, 0.0f, 1}, axisPtKaonWeight, {8, -0.8, 0.8}});
263+
histos.add("hSparseMCGenV2", "hSparseMCGenV2", HistType::kTHnSparseF, {thnAxisCentrality, {200, -1.0, 1.0}, axisPtKaonWeight});
264+
histos.add("hSparseMCRecV2", "hSparseMCRecV2", HistType::kTHnSparseF, {thnAxisCentrality, {200, -1.0, 1.0}, axisPtKaonWeight});
262265
}
263266
// Event selection cut additional - Alex
264267
if (additionalEvsel) {
@@ -572,6 +575,7 @@ struct phipbpb {
572575
histos.fill(HIST("hSparseV2SameEventCosDeltaPhi"), PhiMesonMother.M(), PhiMesonMother.Pt(), v2, centrality);
573576
}
574577
histos.fill(HIST("hSparseV2SameEventCosDeltaPhiSquare"), PhiMesonMother.M(), PhiMesonMother.Pt(), v2 * v2, centrality);
578+
histos.fill(HIST("hSparseV2SameEventCosDeltaPhiCube"), PhiMesonMother.M(), PhiMesonMother.Pt(), v2 * v2 * v2, centrality);
575579
histos.fill(HIST("hSparseV2SameEventSinDeltaPhi"), PhiMesonMother.M(), PhiMesonMother.Pt(), v2sin * QFT0C, centrality);
576580

577581
histos.fill(HIST("hSparseV2SameEventCosPhi"), PhiMesonMother.M(), PhiMesonMother.Pt(), TMath::Cos(2.0 * phimother), centrality);
@@ -952,6 +956,7 @@ struct phipbpb {
952956
if (TMath::Abs(mcParticle.eta()) > 0.8) // main acceptance
953957
continue;
954958
histos.fill(HIST("hSparseMCGenWeight"), centclass, GetPhiInRange(deltaPhi), TMath::Power(TMath::Cos(2.0 * GetPhiInRange(deltaPhi)), 2.0), mcParticle.pt(), mcParticle.eta());
959+
histos.fill(HIST("hSparseMCGenV2"), centclass, TMath::Cos(2.0 * GetPhiInRange(deltaPhi)), mcParticle.pt());
955960
nCh++;
956961
bool validGlobal = false;
957962
bool validAny = false;
@@ -969,6 +974,7 @@ struct phipbpb {
969974
// if valid global, fill
970975
if (validGlobal) {
971976
histos.fill(HIST("hSparseMCRecWeight"), centclass, GetPhiInRange(deltaPhi), TMath::Power(TMath::Cos(2.0 * GetPhiInRange(deltaPhi)), 2.0), mcParticle.pt(), mcParticle.eta());
977+
histos.fill(HIST("hSparseMCRecV2"), centclass, TMath::Cos(2.0 * GetPhiInRange(deltaPhi)), mcParticle.pt());
972978
}
973979
if (validAny) {
974980
histos.fill(HIST("hSparseMCRecAllTrackWeight"), centclass, GetPhiInRange(deltaPhi), TMath::Power(TMath::Cos(2.0 * GetPhiInRange(deltaPhi)), 2.0), mcParticle.pt(), mcParticle.eta());

0 commit comments

Comments
 (0)