diff --git a/PWGEM/PhotonMeson/Core/HistogramsLibrary.cxx b/PWGEM/PhotonMeson/Core/HistogramsLibrary.cxx index 9332e68ea6b..e37fb605f24 100644 --- a/PWGEM/PhotonMeson/Core/HistogramsLibrary.cxx +++ b/PWGEM/PhotonMeson/Core/HistogramsLibrary.cxx @@ -502,13 +502,13 @@ void o2::aod::emphotonhistograms::DefineHistograms(THashList* list, const char* const int nm_hbt = 6; double m_hbt[nm_hbt] = {0.0, 0.14, 0.5, 1.1, 2.0, 2.7}; - const int ndim = 9; // m1, m2, kt, qinv, qlong_cms, qout_cms, qside_cms, qt_cms, qlong_lcms - const int nbins[ndim] = {nm_hbt - 1, nm_hbt - 1, 10, 40, 80, 80, 80, 40, 80}; - const double xmin[ndim] = {0.0, 0.0, 0.0, 0.0, -0.4, -0.4, -0.4, 0.0, -0.4}; - const double xmax[ndim] = {2.7, 2.7, 1.0, 0.4, +0.4, +0.4, +0.4, +0.4, +0.4}; + const int ndim = 8; // m1, m2, kt, qinv, qlong_cms, qout_cms, qside_cms, qlong_lcms + const int nbins[ndim] = {nm_hbt - 1, nm_hbt - 1, 10, 40, 80, 80, 80, 80}; + const double xmin[ndim] = {0.0, 0.0, 0.0, 0.0, -0.4, -0.4, -0.4, -0.4}; + const double xmax[ndim] = {2.7, 2.7, 1.0, 0.4, +0.4, +0.4, +0.4, +0.4}; - THnSparseF* hs_q_same = new THnSparseF("hs_q_same", "hs_q_same;m_{1} (GeV/c^{2});m_{2} (GeV/c^{2});k_{T} (GeV/c);q_{inv} (GeV/c);q_{long}^{CMS} (GeV/c);q_{out}^{CMS} (GeV/c);q_{side}^{CMS} (GeV/c);q_{T}^{CMS} (GeV/c);q_{long}^{LCMS} (GeV/c);", ndim, nbins, xmin, xmax); - THnSparseF* hs_q_mix = new THnSparseF("hs_q_mix", "hs_q_mix;m_{1} (GeV/c^{2});m_{2} (GeV/c^{2});k_{T} (GeV/c);q_{inv} (GeV/c);q_{long}^{CMS} (GeV/c);q_{out}^{CMS} (GeV/c);q_{side}^{CMS} (GeV/c);q_{T}^{CMS} (GeV/c);q_{long}^{LCMS} (GeV/c);", ndim, nbins, xmin, xmax); + THnSparseF* hs_q_same = new THnSparseF("hs_q_same", "hs_q_same;m_{1} (GeV/c^{2});m_{2} (GeV/c^{2});k_{T} (GeV/c);q_{inv} (GeV/c);q_{long}^{CMS} (GeV/c);q_{out}^{CMS} (GeV/c);q_{side}^{CMS} (GeV/c);q_{long}^{LCMS} (GeV/c);", ndim, nbins, xmin, xmax); + THnSparseF* hs_q_mix = new THnSparseF("hs_q_mix", "hs_q_mix;m_{1} (GeV/c^{2});m_{2} (GeV/c^{2});k_{T} (GeV/c);q_{inv} (GeV/c);q_{long}^{CMS} (GeV/c);q_{out}^{CMS} (GeV/c);q_{side}^{CMS} (GeV/c);q_{long}^{LCMS} (GeV/c);", ndim, nbins, xmin, xmax); hs_q_same->Sumw2(); hs_q_mix->Sumw2(); hs_q_same->SetBinEdges(0, m_hbt); diff --git a/PWGEM/PhotonMeson/TableProducer/photonconversionbuilder.cxx b/PWGEM/PhotonMeson/TableProducer/photonconversionbuilder.cxx index 3c4226141e6..62caa6fd11e 100644 --- a/PWGEM/PhotonMeson/TableProducer/photonconversionbuilder.cxx +++ b/PWGEM/PhotonMeson/TableProducer/photonconversionbuilder.cxx @@ -90,8 +90,11 @@ struct PhotonConversionBuilder { Configurable maxX{"maxX", 83.1, "max X for track IU"}; // v0 cuts - Configurable min_v0cospa{"min_v0cospa", 0.95, "V0 CosPA"}; // double -> N.B. dcos(x)/dx = 0 at x=0) - Configurable max_dcav0dau{"max_dcav0dau", 3.0, "max distance btween 2 legs"}; + Configurable min_v0cospa_tpconly{"min_v0cospa_tpconly", 0.95, "min V0 CosPA to V0s with TPConly tracks"}; // double -> N.B. dcos(x)/dx = 0 at x=0) + Configurable min_v0cospa_its{"min_v0cospa_its", 0.99, "min V0 CosPA to V0s with ITs hits"}; // double -> N.B. dcos(x)/dx = 0 at x=0) + Configurable max_dcav0dau_tpconly{"max_dcav0dau_tpconly", 3.0, "max distance btween 2 legs to V0s with TPConly tracks"}; + Configurable max_dcav0dau_its{"max_dcav0dau_its", 0.5, "max distance btween 2 legs to V0s with ITS hits"}; + Configurable max_dcav0dau_itsibss{"max_dcav0dau_itsibss", 1.0, "max distance btween 2 legs to V0s with ITS hits on ITSib SS"}; Configurable min_v0radius{"min_v0radius", 1.0, "min v0 radius"}; Configurable margin_r_its{"margin_r_its", 3.0, "margin for r cut in cm"}; Configurable margin_r_tpconly{"margin_r_tpconly", 7.0, "margin for r cut in cm"}; @@ -103,7 +106,7 @@ struct PhotonConversionBuilder { Configurable max_eta_v0{"max_eta_v0", 0.9, "max eta for v0 photons at SV"}; Configurable kfMassConstrain{"kfMassConstrain", -1.f, "mass constrain for the KFParticle mother particle"}; Configurable max_r_req_its{"max_r_req_its", 16.0, "max Rxy for V0 with ITS hits"}; - Configurable min_r_tpconly{"min_r_tpconly", 32.0, "min Rxy for V0 with TPConly tracks"}; + Configurable min_r_tpconly{"min_r_tpconly", 36.0, "min Rxy for V0 with TPConly tracks"}; Configurable max_dcatopv_xy_v0{"max_dcatopv_xy_v0", +1e+10, "max. DCAxy to PV for V0"}; Configurable max_dcatopv_z_v0{"max_dcatopv_z_v0", +1e+10, "max. DCAz to PV for V0"}; @@ -357,8 +360,14 @@ struct PhotonConversionBuilder { gammaKF_DecayVtx.TransportToPoint(xyz); float cospa_kf = cpaFromKF(gammaKF_DecayVtx, KFPV); - if (cospa_kf < min_v0cospa) { - return; + if (!ele.hasITS() && !pos.hasITS()) { + if (cospa_kf < min_v0cospa_tpconly) { + return; + } + } else { + if (cospa_kf < min_v0cospa_its) { + return; + } } float rxy = RecoDecay::sqrtSumOfSquares(gammaKF_DecayVtx.GetX(), gammaKF_DecayVtx.GetY()); @@ -424,8 +433,20 @@ struct PhotonConversionBuilder { kfp_ele_DecayVtx.TransportToPoint(xyz); // Don't set Primary Vertex float pca_kf = kfp_pos_DecayVtx.GetDistanceFromParticle(kfp_ele_DecayVtx); - if (pca_kf > max_dcav0dau) { - return; + if (!ele.hasITS() && !pos.hasITS()) { + if (pca_kf > max_dcav0dau_tpconly) { + return; + } + } else { + if (rxy < max_r_req_its) { + if (pca_kf > max_dcav0dau_itsibss) { + return; + } + } else if (rxy < min_r_tpconly) { + if (pca_kf > max_dcav0dau_its) { + return; + } + } } float pos_pt = RecoDecay::sqrtSumOfSquares(kfp_pos_DecayVtx.GetPx(), kfp_pos_DecayVtx.GetPy()); diff --git a/PWGEM/PhotonMeson/Tasks/PhotonHBT.cxx b/PWGEM/PhotonMeson/Tasks/PhotonHBT.cxx index 59a776ad5b1..e2124a09911 100644 --- a/PWGEM/PhotonMeson/Tasks/PhotonHBT.cxx +++ b/PWGEM/PhotonMeson/Tasks/PhotonHBT.cxx @@ -299,7 +299,7 @@ struct PhotonHBT { ROOT::Math::PtEtaPhiMVector k12 = 0.5 * (v1 + v2); float qinv = -q12.M(); float kt = k12.Pt(); - float qt = q12.Pt(); + // float qt = q12.Pt(); float qlong_cms = q12.Pz(); ROOT::Math::XYZVector q_3d = q12.Vect(); // 3D q vector @@ -331,8 +331,7 @@ struct PhotonHBT { values[4] = qlong_cms; values[5] = qout_cms; values[6] = qside_cms; - values[7] = qt; - values[8] = qlong_lcms; + values[7] = qlong_lcms; reinterpret_cast(list_pair_ss->FindObject(Form("%s_%s", cut.GetName(), cut.GetName()))->FindObject(paircut.GetName())->FindObject("hs_q_same"))->Fill(values); } // end of combination } // end of pair cut loop @@ -369,7 +368,7 @@ struct PhotonHBT { ROOT::Math::PtEtaPhiMVector k12 = 0.5 * (v1 + v2); float qinv = -q12.M(); float kt = k12.Pt(); - float qt = q12.Pt(); + // float qt = q12.Pt(); float qlong_cms = q12.Pz(); ROOT::Math::XYZVector q_3d = q12.Vect(); // 3D q vector @@ -393,8 +392,7 @@ struct PhotonHBT { values[4] = qlong_cms; values[5] = qout_cms; values[6] = qside_cms; - values[7] = qt; - values[8] = qlong_lcms; + values[7] = qlong_lcms; reinterpret_cast(list_pair_ss->FindObject(Form("%s_%s", cut1.GetName(), cut2.GetName()))->FindObject(paircut.GetName())->FindObject("hs_q_same"))->Fill(values); } // end of combination } // end of pair cut loop @@ -454,7 +452,7 @@ struct PhotonHBT { ROOT::Math::PtEtaPhiMVector k12 = 0.5 * (v1 + v2); float qinv = -q12.M(); float kt = k12.Pt(); - float qt = q12.Pt(); + // float qt = q12.Pt(); float qlong_cms = q12.Pz(); ROOT::Math::XYZVector q_3d = q12.Vect(); // 3D q vector @@ -478,8 +476,7 @@ struct PhotonHBT { values[4] = qlong_cms; values[5] = qout_cms; values[6] = qside_cms; - values[7] = qt; - values[8] = qlong_lcms; + values[7] = qlong_lcms; reinterpret_cast(list_pair_ss->FindObject(Form("%s_%s", cut1.GetName(), cut2.GetName()))->FindObject(paircut.GetName())->FindObject("hs_q_mix"))->Fill(values); } // end of different photon combinations } // end of pair cut loop diff --git a/PWGEM/PhotonMeson/Tasks/TaggingPi0.cxx b/PWGEM/PhotonMeson/Tasks/TaggingPi0.cxx index 76fc698f6c5..f9898e0ca7f 100644 --- a/PWGEM/PhotonMeson/Tasks/TaggingPi0.cxx +++ b/PWGEM/PhotonMeson/Tasks/TaggingPi0.cxx @@ -92,8 +92,8 @@ struct TaggingPi0 { if (context.mOptions.get("processPCMPCMibw")) { fPairNames.push_back("PCMPCMibw"); } - if (context.mOptions.get("processPCMDalitz")) { - fPairNames.push_back("PCMDalitz"); + if (context.mOptions.get("processPCMDalitzEE")) { + fPairNames.push_back("PCMDalitzEE"); } if (context.mOptions.get("processPCMPHOS")) { fPairNames.push_back("PCMPHOS"); @@ -140,7 +140,7 @@ struct TaggingPi0 { } // end of cut1 loop } - static constexpr std::string_view pairnames[8] = {"PCMPCM", "PHOSPHOS", "EMCEMC", "PCMPHOS", "PCMEMC", "PCMDalitz", "PHOSEMC", "PCMPCMibw"}; + static constexpr std::string_view pairnames[8] = {"PCMPCM", "PHOSPHOS", "EMCEMC", "PCMPHOS", "PCMEMC", "PCMDalitzEE", "PCMDalitzMuMu", "PHOSEMC"}; void addhistograms() { fMainList->SetOwner(true); @@ -171,7 +171,7 @@ struct TaggingPi0 { if (pairname == "PCMEMC") { add_pair_histograms(list_pair, pairname, fPCMCuts, fEMCCuts, fPairCuts); } - if (pairname == "PCMDalitz") { + if (pairname == "PCMDalitzEE") { add_pair_histograms(list_pair, pairname, fPCMCuts, fDalitzEECuts, fPairCuts); } @@ -467,7 +467,7 @@ struct TaggingPi0 { SameEventPairing(collisions, v0photons, v0photons, perCollision_pcm, perCollision_pcm, fPCMCuts, fPCMibwCuts, fPairCuts, legs, nullptr); MixedEventPairing(filtered_collisions, v0photons, v0photons, perCollision_pcm, perCollision_pcm, fPCMCuts, fPCMibwCuts, fPairCuts, legs, nullptr); } - void processPCMDalitz(MyCollisions const& collisions, MyFilteredCollisions const& filtered_collisions, MyV0Photons const& v0photons, aod::V0Legs const& legs, MyFilteredDalitzEEs const& dielectrons, MyPrimaryElectrons const& emprimaryelectrons) + void processPCMDalitzEE(MyCollisions const& collisions, MyFilteredCollisions const& filtered_collisions, MyV0Photons const& v0photons, aod::V0Legs const& legs, MyFilteredDalitzEEs const& dielectrons, MyPrimaryElectrons const& emprimaryelectrons) { SameEventPairing(collisions, v0photons, dielectrons, perCollision_pcm, perCollision_dalitz, fPCMCuts, fDalitzEECuts, fPairCuts, legs, emprimaryelectrons); MixedEventPairing(filtered_collisions, v0photons, dielectrons, perCollision_pcm, perCollision_dalitz, fPCMCuts, fDalitzEECuts, fPairCuts, legs, emprimaryelectrons); @@ -491,7 +491,7 @@ struct TaggingPi0 { } PROCESS_SWITCH(TaggingPi0, processPCMPCMibw, "pairing PCM-PCMibw", false); - PROCESS_SWITCH(TaggingPi0, processPCMDalitz, "pairing PCM-Dalitz", false); + PROCESS_SWITCH(TaggingPi0, processPCMDalitzEE, "pairing PCM-Dalitz", false); PROCESS_SWITCH(TaggingPi0, processPCMPHOS, "pairing PCM-PHOS", false); PROCESS_SWITCH(TaggingPi0, processPCMEMC, "pairing PCM-EMCal", false); PROCESS_SWITCH(TaggingPi0, processDummy, "Dummy function", true); diff --git a/PWGEM/PhotonMeson/Tasks/TaggingPi0MC.cxx b/PWGEM/PhotonMeson/Tasks/TaggingPi0MC.cxx index 1a2a0b76f0f..178a8618766 100644 --- a/PWGEM/PhotonMeson/Tasks/TaggingPi0MC.cxx +++ b/PWGEM/PhotonMeson/Tasks/TaggingPi0MC.cxx @@ -95,8 +95,8 @@ struct TaggingPi0MC { if (context.mOptions.get("processPCMPCMibw")) { fPairNames.push_back("PCMPCMibw"); } - if (context.mOptions.get("processPCMDalitz")) { - fPairNames.push_back("PCMDalitz"); + if (context.mOptions.get("processPCMDalitzEE")) { + fPairNames.push_back("PCMDalitzEE"); } if (context.mOptions.get("processPCMPHOS")) { fPairNames.push_back("PCMPHOS"); @@ -144,7 +144,7 @@ struct TaggingPi0MC { } // end of cut1 loop } - static constexpr std::string_view pairnames[8] = {"PCMPCM", "PHOSPHOS", "EMCEMC", "PCMPHOS", "PCMEMC", "PCMDalitz", "PHOSEMC", "PCMPCMibw"}; + static constexpr std::string_view pairnames[8] = {"PCMPCM", "PHOSPHOS", "EMCEMC", "PCMPHOS", "PCMEMC", "PCMDalitzEE", "PCMDalitzMuMu", "PHOSEMC"}; void addhistograms() { fMainList->SetOwner(true); @@ -176,7 +176,7 @@ struct TaggingPi0MC { if (pairname == "PCMPCMibw") { add_pair_histograms(list_pair, pairname, fPCMCuts, fPCMibwCuts, fPairCuts); } - if (pairname == "PCMDalitz") { + if (pairname == "PCMDalitzEE") { add_pair_histograms(list_pair, pairname, fPCMCuts, fDalitzEECuts, fPairCuts); } if (pairname == "PCMPHOS") { @@ -500,7 +500,7 @@ struct TaggingPi0MC { { TruePairing(collisions, v0photons, v0photons, perCollision_pcm, perCollision_pcm, fPCMCuts, fPCMibwCuts, fPairCuts, legs, nullptr, mcparticles, mccollisions); } - void processPCMDalitz(MyCollisions const& collisions, MyV0Photons const& v0photons, MyMCV0Legs const& legs, MyFilteredDalitzEEs const& dielectrons, MyMCTracks const& emprimaryelectrons, aod::EMMCParticles const& mcparticles, aod::EMReducedMCEvents const& mccollisions) + void processPCMDalitzEE(MyCollisions const& collisions, MyV0Photons const& v0photons, MyMCV0Legs const& legs, MyFilteredDalitzEEs const& dielectrons, MyMCTracks const& emprimaryelectrons, aod::EMMCParticles const& mcparticles, aod::EMReducedMCEvents const& mccollisions) { TruePairing(collisions, v0photons, dielectrons, perCollision_pcm, perCollision_dalitz, fPCMCuts, fDalitzEECuts, fPairCuts, legs, emprimaryelectrons, mcparticles, mccollisions); } @@ -518,7 +518,7 @@ struct TaggingPi0MC { void processDummy(MyCollisions const& collision) {} PROCESS_SWITCH(TaggingPi0MC, processPCMPCMibw, "pairing PCM-PCMibw", false); - PROCESS_SWITCH(TaggingPi0MC, processPCMDalitz, "pairing PCM-Dalitz", false); + PROCESS_SWITCH(TaggingPi0MC, processPCMDalitzEE, "pairing PCM-Dalitz", false); PROCESS_SWITCH(TaggingPi0MC, processPCMPHOS, "pairing PCM-PHOS", false); PROCESS_SWITCH(TaggingPi0MC, processPCMEMC, "pairing PCM-EMCal", false); PROCESS_SWITCH(TaggingPi0MC, processDummy, "Dummy function", true); diff --git a/PWGEM/PhotonMeson/Tasks/dalitzEEQC.cxx b/PWGEM/PhotonMeson/Tasks/dalitzEEQC.cxx index 2a524b9eab6..19e0c9ea345 100644 --- a/PWGEM/PhotonMeson/Tasks/dalitzEEQC.cxx +++ b/PWGEM/PhotonMeson/Tasks/dalitzEEQC.cxx @@ -51,8 +51,8 @@ struct DalitzEEQC { std::vector fDalitzEECuts; Configurable cfgCentEstimator{"cfgCentEstimator", 2, "FT0M:0, FT0A:1, FT0C:2"}; - Configurable> cfgArrCentMin{"cfgArrCentMin", {0.0f, 10.0f, 20.0f, 40.0f, 60.0f, 80.0f}, "cent min array"}; // overlap (e.g. 0, 0) is not allowed. - Configurable> cfgArrCentMax{"cfgArrCentMax", {10.0f, 20.0f, 40.0f, 60.0f, 80.0f, 999.f}, "cent max array"}; // overlap (e.g. 10, 20) is not allowed. + Configurable> cfgArrCentMin{"cfgArrCentMin", {0.0f, 10.0f, 20.0f, 40.0f, 60.0f, 80.0f}, "cent min array"}; + Configurable> cfgArrCentMax{"cfgArrCentMax", {10.0f, 20.0f, 40.0f, 60.0f, 80.0f, 999.f}, "cent max array"}; std::vector vec_cent_min; std::vector vec_cent_max;