@@ -82,7 +82,10 @@ struct doublephimeson {
8282 ConfigurableAxis configThnAxisNumPhi{" configThnAxisNumPhi" , {101 , -0.5 , 100.5 }, " cos #theta{*}" };
8383 ConfigurableAxis configThnAxisDeltaPt{" configThnAxisDeltaPt" , {100 , 0.0 , 1.0 }, " delta pt" };
8484 Configurable<float > maxDeltaMPhi{" maxDeltaMPhi" , 0 .01f , " Delta-m cut on the two phi masses: sqrt((m1-mPDG)^2 + (m2-mPDG)^2) < maxDeltaMPhi (GeV/c^2)" };
85-
85+ // --- NEW: steerable axes from JSON ---
86+ ConfigurableAxis configThnAxisDeltaRPhi{" configThnAxisDeltaRPhi" , {120 , 0.0 , 6.0 }, " ΔR(φ,φ)" };
87+ ConfigurableAxis configThnAxisZ{" configThnAxisZ" , {100 , 0.0 , 1.0 }, " z" };
88+ ConfigurableAxis configThnAxisA{" configThnAxisA" , {100 , 0.0 , 1.0 }, " A" };
8689 // Initialize the ananlysis task
8790 void init (o2::framework::InitContext&)
8891 {
@@ -109,10 +112,15 @@ struct doublephimeson {
109112 const AxisSpec thnAxisCosTheta{configThnAxisCosTheta, " cos #theta" };
110113 const AxisSpec thnAxisNumPhi{configThnAxisNumPhi, " Number of phi meson" };
111114 const AxisSpec thnAxisPtCorr{configThnAxisPtCorr, " Pt Corr var" };
112-
115+ const AxisSpec thnAxisDeltaRPhi{configThnAxisDeltaRPhi, " #Delta R(#phi,#phi)" };
116+ const AxisSpec thnAxisZ{configThnAxisZ, " z = p_{T1}/(p_{T1}+p_{T2})" };
117+ const AxisSpec thnAxisA{configThnAxisA, " A = |p_{T1}-p_{T2}|/(p_{T1}+p_{T2})" };
113118 histos.add (" SEMassUnlike" , " SEMassUnlike" , HistType::kTHnSparseF , {thnAxisInvMass, thnAxisDeltaR, thnAxisPt, thnAxisDeltaR, thnAxisInvMassDeltaPhi, thnAxisPtCorr});
114119 // histos.add("SEMassLike", "SEMassLike", HistType::kTHnSparseF, {thnAxisInvMass, thnAxisPt, thnAxisDeltaR, thnAxisInvMassPhi, thnAxisInvMassPhi, thnAxisNumPhi});
115120 histos.add (" MEMassUnlike" , " MEMassUnlike" , HistType::kTHnSparseF , {thnAxisInvMass, thnAxisDeltaR, thnAxisPt, thnAxisDeltaR, thnAxisInvMassDeltaPhi, thnAxisPtCorr});
121+ // --- NEW THnSparse storing (ΔRphi, z, A) WITHOUT applying cuts ---
122+ histos.add (" SEMassUnlike_DeltaRZA" , " SEMassUnlike_DeltaRZA" , HistType::kTHnSparseF , {thnAxisInvMass, thnAxisPt, thnAxisDeltaRPhi, thnAxisZ, thnAxisA, thnAxisInvMassDeltaPhi});
123+ histos.add (" MEMassUnlike_DeltaRZA" , " MEMassUnlike_DeltaRZA" , HistType::kTHnSparseF , {thnAxisInvMass, thnAxisPt, thnAxisDeltaRPhi, thnAxisZ, thnAxisA, thnAxisInvMassDeltaPhi});
116124 }
117125
118126 // get kstar
@@ -1129,6 +1137,17 @@ struct doublephimeson {
11291137 dR,
11301138 dM,
11311139 ptcorr);
1140+
1141+ // --- NEW: compute z and A from phi candidates (no cuts) ---
1142+ const double pt1 = p1.Pt ();
1143+ const double pt2 = p2.Pt ();
1144+ const double ptsum = pt1 + pt2;
1145+ if (ptsum <= 0.0 )
1146+ continue ;
1147+ const double z = pt1 / ptsum;
1148+ const double A = std::abs (pt1 - pt2) / ptsum;
1149+ // --- Fill NEW THnSparse (no cuts) ---
1150+ histos.fill (HIST (" SEMassUnlike_DeltaRZA" ), M, pair.Pt (), pair.Pt () * dR, z, A, dM);
11321151 }
11331152 }
11341153 PROCESS_SWITCH (doublephimeson, processopti4, " Process Optimized same event" , true );
@@ -1310,6 +1329,17 @@ struct doublephimeson {
13101329 dR, // ΔR(phi1, phi2)
13111330 dM, // Δm(phi)
13121331 ptcorr); // pT correlation
1332+
1333+ // --- NEW: compute z and A from phi candidates (no cuts) ---
1334+ const double pt1 = phi1.Pt ();
1335+ const double pt2 = phi2.Pt ();
1336+ const double ptsum = pt1 + pt2;
1337+ if (ptsum <= 0.0 )
1338+ continue ;
1339+ const double z = pt1 / ptsum;
1340+ const double A = std::abs (pt1 - pt2) / ptsum;
1341+ // --- Fill NEW THnSparse (no cuts) ---
1342+ histos.fill (HIST (" MEMassUnlike_DeltaRZA" ), pair.M (), pair.Pt (), pair.Pt () * dR, z, A, dM);
13131343 }
13141344 }
13151345 }
0 commit comments