@@ -93,6 +93,10 @@ struct CorrelationTask {
9393 ConfigurableAxis axisEtaEfficiency{" axisEtaEfficiency" , {20 , -1.0 , 1.0 }, " eta axis for efficiency histograms" };
9494 ConfigurableAxis axisPtEfficiency{" axisPtEfficiency" , {VARIABLE_WIDTH , 0.5 , 0.6 , 0.7 , 0.8 , 0.9 , 1.0 , 1.25 , 1.5 , 1.75 , 2.0 , 2.25 , 2.5 , 2.75 , 3.0 , 3.25 , 3.5 , 3.75 , 4.0 , 4.5 , 5.0 , 6.0 , 7.0 , 8.0 }, " pt axis for efficiency histograms" };
9595
96+ // Use one mass bin only by default in case mass dependency is not needed
97+ ConfigurableAxis axisInvMass{" axisInvMass" , {1 , -1.0 , 1.0 }, " invariant mass axis for histograms" };
98+ ConfigurableAxis axisInvMassHistogram{" axisInvMassHistogram" , {1000 , 1.0 , 3.0 }, " invariant mass histogram binning" };
99+
96100 // This filter is applied to AOD and derived data (column names are identical)
97101 Filter collisionZVtxFilter = nabs(aod::collision::posZ) < cfgCutVertex;
98102 // This filter is only applied to AOD
@@ -140,7 +144,7 @@ struct CorrelationTask {
140144 if (doprocessSame2ProngDerived || doprocessMixed2ProngDerived) {
141145 registry.add (" yieldsTrigger" , " multiplicity/centrality vs pT vs eta (triggers)" , {HistType::kTH3F , {{100 , 0 , 100 , " /multiplicity/centrality" }, {40 , 0 , 20 , " p_{T}" }, {100 , -2 , 2 , " #eta" }}});
142146 registry.add (" etaphiTrigger" , " multiplicity/centrality vs eta vs phi (triggers)" , {HistType::kTH3F , {{100 , 0 , 100 , " multiplicity/centrality" }, {100 , -2 , 2 , " #eta" }, {200 , 0 , 2 * M_PI , " #varphi" }}});
143- registry.add (" invMass" , " 2-prong invariant mass (GeV)" , {HistType::kTH1F , {{ 100 , 0 , 3 , " Mass " } }});
147+ registry.add (" invMass" , " 2-prong invariant mass (GeV/c^2 )" , {HistType::kTH3F , {axisInvMassHistogram, axisPtTrigger, axisMultiplicity }});
144148 }
145149
146150 const int maxMixBin = AxisSpec (axisMultiplicity).getNbins () * AxisSpec (axisVertex).getNbins ();
@@ -173,8 +177,9 @@ struct CorrelationTask {
173177 std::vector<AxisSpec> effAxis = {{axisEtaEfficiency, " #eta" },
174178 {axisPtEfficiency, " p_{T} (GeV/c)" },
175179 {axisVertexEfficiency, " z-vtx (cm)" }};
176- same.setObject (new CorrelationContainer (" sameEvent" , " sameEvent" , corrAxis, effAxis, {}));
177- mixed.setObject (new CorrelationContainer (" mixedEvent" , " mixedEvent" , corrAxis, effAxis, {}));
180+ std::vector<AxisSpec> userAxis = {{axisInvMass, " m (GeV/c^2)" }};
181+ same.setObject (new CorrelationContainer (" sameEvent" , " sameEvent" , corrAxis, effAxis, userAxis));
182+ mixed.setObject (new CorrelationContainer (" mixedEvent" , " mixedEvent" , corrAxis, effAxis, userAxis));
178183
179184 same->setTrackEtaCut (cfgCutEta);
180185 mixed->setTrackEtaCut (cfgCutEta);
@@ -229,7 +234,7 @@ struct CorrelationTask {
229234 if (cfgDecayParticleMask != 0 && (cfgDecayParticleMask & (1u << (uint32_t )track1.decay ())) == 0u )
230235 continue ;
231236 }
232- registry.fill (HIST (" invMass" ), track1.invMass ());
237+ registry.fill (HIST (" invMass" ), track1.invMass (), track1. pt (), multiplicity );
233238 }
234239 registry.fill (HIST (" yieldsTrigger" ), multiplicity, track1.pt (), track1.eta ());
235240 registry.fill (HIST (" etaphiTrigger" ), multiplicity, track1.eta (), track1.phi ());
@@ -380,8 +385,14 @@ struct CorrelationTask {
380385 deltaPhi += TwoPI;
381386 }
382387
388+ float invMass;
389+ if constexpr (std::experimental::is_detected<hasInvMass, typename TTracks1::iterator>::value)
390+ invMass = track1.invMass ();
391+ else
392+ invMass = 0 .0f ;
393+ // last param is the weight
383394 target->getPairHist ()->Fill (step,
384- track1.eta () - track2.eta (), track2.pt (), track1.pt (), multiplicity, deltaPhi, posZ, associatedWeight);
395+ track1.eta () - track2.eta (), track2.pt (), track1.pt (), multiplicity, deltaPhi, posZ, invMass, associatedWeight);
385396 }
386397 }
387398 }
0 commit comments