From c0630d6421186bbe8feda88390919524de6945a4 Mon Sep 17 00:00:00 2001 From: Daiki Sekihata Date: Sat, 20 Jan 2024 11:30:45 +0900 Subject: [PATCH] PWGEM/PhotonMeson: remove unnecessary propagation --- PWGEM/PhotonMeson/Core/CutsLibrary.cxx | 18 ++-- PWGEM/PhotonMeson/Core/HistogramsLibrary.cxx | 7 +- PWGEM/PhotonMeson/Core/HistogramsLibrary.h | 1 + PWGEM/PhotonMeson/Core/V0PhotonCut.h | 15 ++- .../TableProducer/photonconversionbuilder.cxx | 101 +++++++----------- 5 files changed, 63 insertions(+), 79 deletions(-) diff --git a/PWGEM/PhotonMeson/Core/CutsLibrary.cxx b/PWGEM/PhotonMeson/Core/CutsLibrary.cxx index 5943cc149a7..1dc4e213e9e 100644 --- a/PWGEM/PhotonMeson/Core/CutsLibrary.cxx +++ b/PWGEM/PhotonMeson/Core/CutsLibrary.cxx @@ -47,8 +47,8 @@ V0PhotonCut* o2::aod::pcmcuts::GetCut(const char* cutName) // for v0 cut->SetV0PtRange(0.1f, 1e10f); cut->SetV0EtaRange(-0.9, +0.9); - cut->SetMinCosPA(0.99); - cut->SetMaxPCA(1.5); + cut->SetMinCosPA(0.95); + cut->SetMaxPCA(3.0); cut->SetRxyRange(1, 90); cut->SetAPRange(0.95, 0.01); return cut; @@ -100,8 +100,8 @@ V0PhotonCut* o2::aod::pcmcuts::GetCut(const char* cutName) // for v0 cut->SetV0PtRange(0.1f, 1e10f); cut->SetV0EtaRange(-0.9, +0.9); - cut->SetMinCosPA(0.99); - cut->SetMaxPCA(1.5); + cut->SetMinCosPA(0.95); + cut->SetMaxPCA(3.0); cut->SetRxyRange(1, 90); cut->SetAPRange(0.95, 0.01); return cut; @@ -177,8 +177,8 @@ V0PhotonCut* o2::aod::pcmcuts::GetCut(const char* cutName) // for v0 cut->SetV0PtRange(0.1f, 1e10f); cut->SetV0EtaRange(-0.9, +0.9); - cut->SetMinCosPA(0.99); - cut->SetMaxPCA(1.5); + cut->SetMinCosPA(0.95); + cut->SetMaxPCA(3.0); cut->SetRxyRange(1, 90); cut->SetAPRange(0.95, 0.01); return cut; @@ -195,8 +195,8 @@ V0PhotonCut* o2::aod::pcmcuts::GetCut(const char* cutName) // for v0 cut->SetV0PtRange(0.1f, 1e10f); cut->SetV0EtaRange(-0.9, +0.9); - cut->SetMinCosPA(0.99); - cut->SetMaxPCA(1.5); + cut->SetMinCosPA(0.95); + cut->SetMaxPCA(3.0); cut->SetRxyRange(1, 90); cut->SetAPRange(0.95, 0.01); return cut; @@ -214,7 +214,7 @@ V0PhotonCut* o2::aod::pcmcuts::GetCut(const char* cutName) // for v0 cut->SetV0PtRange(0.1f, 1e10f); cut->SetV0EtaRange(-0.9, +0.9); - cut->SetMinCosPA(0.995); + cut->SetMinCosPA(0.99); cut->SetMaxPCA(0.5); cut->SetRxyRange(1, 90); cut->SetAPRange(0.95, 0.01); diff --git a/PWGEM/PhotonMeson/Core/HistogramsLibrary.cxx b/PWGEM/PhotonMeson/Core/HistogramsLibrary.cxx index e4f7c6455d4..9332e68ea6b 100644 --- a/PWGEM/PhotonMeson/Core/HistogramsLibrary.cxx +++ b/PWGEM/PhotonMeson/Core/HistogramsLibrary.cxx @@ -78,9 +78,10 @@ void o2::aod::emphotonhistograms::DefineHistograms(THashList* list, const char* list->Add(new TH1F("hPt", "pT;p_{T} (GeV/c)", 2000, 0.0f, 20)); list->Add(new TH2F("hEtaPhi", "#eta vs. #varphi;#varphi (rad.);#eta", 180, 0, TMath::TwoPi(), 40, -2.0f, 2.0f)); list->Add(new TH2F("hRadius", "V0Radius; radius in Z (cm);radius in XY (cm)", 200, -100, 100, 200, 0.0f, 100.0f)); - list->Add(new TH1F("hCosPA", "V0CosPA;cosine pointing angle", 100, 0.99f, 1.0f)); - list->Add(new TH1F("hPCA", "distance between 2 legs;PCA (cm)", 200, 0.0f, 2.0f)); - list->Add(new TH2F("hPCA_Rxy", "distance between 2 legs vs. R_{xy};R_{xy} (cm);PCA (cm)", 200, 0.f, 100.f, 200, 0.0f, 2.0f)); + list->Add(new TH1F("hCosPA", "V0CosPA;cosine pointing angle", 100, 0.9f, 1.0f)); + list->Add(new TH2F("hCosPA_Rxy", "cos PA vs. R_{xy};R_{xy} (cm);cosine pointing angle", 100, 0.f, 100.f, 100, 0.9f, 1.0f)); + list->Add(new TH1F("hPCA", "distance between 2 legs;PCA (cm)", 500, 0.0f, 5.0f)); + list->Add(new TH2F("hPCA_Rxy", "distance between 2 legs vs. R_{xy};R_{xy} (cm);PCA (cm)", 100, 0.f, 100.f, 500, 0.0f, 5.0f)); list->Add(new TH2F("hDCAxyz", "DCA to PV;DCA_{xy} (cm);DCA_{z} (cm)", 200, -5.f, +5.f, 200, -5.f, +5.f)); list->Add(new TH2F("hAPplot", "AP plot;#alpha;q_{T} (GeV/c)", 200, -1.0f, +1.0f, 250, 0.0f, 0.25f)); list->Add(new TH2F("hMassGamma", "hMassGamma;R_{xy} (cm);m_{ee} (GeV/c^{2})", 200, 0.0f, 100.0f, 100, 0.0f, 0.1f)); diff --git a/PWGEM/PhotonMeson/Core/HistogramsLibrary.h b/PWGEM/PhotonMeson/Core/HistogramsLibrary.h index a3e11a86a69..28c39fd1e7e 100644 --- a/PWGEM/PhotonMeson/Core/HistogramsLibrary.h +++ b/PWGEM/PhotonMeson/Core/HistogramsLibrary.h @@ -73,6 +73,7 @@ void FillHistClass(THashList* list, const char* subGroup, T const& obj) reinterpret_cast(list->FindObject("hEtaPhi"))->Fill(obj.phi(), obj.eta()); reinterpret_cast(list->FindObject("hRadius"))->Fill(obj.vz(), obj.v0radius()); reinterpret_cast(list->FindObject("hCosPA"))->Fill(obj.cospa()); + reinterpret_cast(list->FindObject("hCosPA_Rxy"))->Fill(obj.v0radius(), obj.cospa()); reinterpret_cast(list->FindObject("hPCA"))->Fill(obj.pca()); reinterpret_cast(list->FindObject("hPCA_Rxy"))->Fill(obj.v0radius(), obj.pca()); reinterpret_cast(list->FindObject("hDCAxyz"))->Fill(obj.dcaXYv0topv(), obj.dcaZv0topv()); diff --git a/PWGEM/PhotonMeson/Core/V0PhotonCut.h b/PWGEM/PhotonMeson/Core/V0PhotonCut.h index 1a2132cc640..f772ceadb86 100644 --- a/PWGEM/PhotonMeson/Core/V0PhotonCut.h +++ b/PWGEM/PhotonMeson/Core/V0PhotonCut.h @@ -385,14 +385,19 @@ class V0PhotonCut : public TNamed // if (abs(track.y()) > abs(track.x() * TMath::Tan(10.f * TMath::DegToRad())) + 15.f) { // return false; // } - + if (track.x() < 0.1 && abs(track.y()) > 15.f) { + return false; + } if (track.x() > 82.9 && abs(track.y()) > abs(track.x() * TMath::Tan(10.f * TMath::DegToRad())) + 5.f) { return false; } - - const float slope = TMath::Tan(2 * TMath::ATan(TMath::Exp(-0.5))); - return !(track.x() > 82.9 && abs(track.y()) < 15.f && abs(abs(track.z()) - track.x() / slope) < 7.f && 15.f < abs(track.dcaXY())); - // return !(track.x() > 82.9 && abs(track.y()) < 40.f && abs(abs(track.z()) - 47.f) < 3.f && 15.f < abs(track.dcaXY())); + if (track.x() > 82.9 && abs(track.y()) < 15.0 && abs(abs(track.z()) - 45.0) < 2.0) { + return false; + } + return true; + // const float slope = TMath::Tan(2 * TMath::ATan(TMath::Exp(-0.5))); + // return !(track.x() > 82.9 && abs(track.y()) < 15.f && abs(abs(track.z()) - track.x() / slope) < 3.f && 15.f < abs(track.dcaXY())); + //// return !(track.x() > 82.9 && abs(track.y()) < 40.f && abs(abs(track.z()) - 47.f) < 3.f && 15.f < abs(track.dcaXY())); } case V0PhotonCuts::kRequireITSTPC: return isITSTPCTrack(track); diff --git a/PWGEM/PhotonMeson/TableProducer/photonconversionbuilder.cxx b/PWGEM/PhotonMeson/TableProducer/photonconversionbuilder.cxx index 8ea0cd7ac9b..3545fba8514 100644 --- a/PWGEM/PhotonMeson/TableProducer/photonconversionbuilder.cxx +++ b/PWGEM/PhotonMeson/TableProducer/photonconversionbuilder.cxx @@ -78,6 +78,7 @@ struct PhotonConversionBuilder { Configurable useMatCorrType{"useMatCorrType", 0, "0: none, 1: TGeo, 2: LUT"}; // single track cuts + Configurable min_ncluster_tpc{"min_ncluster_tpc", 25, "min ncluster tpc"}; Configurable mincrossedrows{"mincrossedrows", 10, "min crossed rows"}; Configurable maxchi2tpc{"maxchi2tpc", 4.0, "max chi2/NclsTPC"}; Configurable maxchi2its{"maxchi2its", 5.0, "max chi2/NclsITS"}; @@ -85,18 +86,18 @@ struct PhotonConversionBuilder { Configurable maxTPCNsigmaEl{"maxTPCNsigmaEl", 4.0, "max. TPC n sigma for electron"}; Configurable dcanegtopv{"dcanegtopv", 0.1, "DCA Neg To PV"}; Configurable dcapostopv{"dcapostopv", 0.1, "DCA Pos To PV"}; - Configurable min_pt_leg{"min_pt_leg", 0.05, "min pT for v0 legs at SV"}; + Configurable min_pt_leg{"min_pt_leg", 0.04, "min pT for v0 legs at SV"}; Configurable maxX{"maxX", 83.1, "max X for track IU"}; // v0 cuts - Configurable min_v0cospa{"min_v0cospa", 0.99, "V0 CosPA"}; // double -> N.B. dcos(x)/dx = 0 at x=0) - Configurable max_dcav0dau{"max_dcav0dau", 2.0, "max distance btween 2 legs"}; + 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_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"}; Configurable margin_z{"margin_z", 7.0, "margin for z cut in cm"}; Configurable max_alpha_ap{"max_alpha_ap", 0.95, "max alpha for AP cut"}; - Configurable max_qt_ap{"max_qt_ap", 0.02, "max qT for AP cut"}; + Configurable max_qt_ap{"max_qt_ap", 0.01, "max qT for AP cut"}; Configurable min_pt_v0{"min_pt_v0", 0.05, "min pT for v0 photons at SV"}; Configurable max_pt_v0_itsonly{"max_pt_v0_itsonly", 0.3, "max pT for v0 photons wth 2 ITSonly tracks at SV"}; Configurable max_eta_v0{"max_eta_v0", 0.9, "max eta for v0 photons at SV"}; @@ -119,14 +120,14 @@ struct PhotonConversionBuilder { {"V0/hAP", "Armenteros Podolanski;#alpha;q_{T} (GeV/c)", {HistType::kTH2F, {{200, -1.0f, 1.0f}, {250, 0, 0.25}}}}, {"V0/hConversionPointXY", "conversion point in XY;X (cm);Y (cm)", {HistType::kTH2F, {{400, -100.0f, 100.0f}, {400, -100.f, 100.f}}}}, {"V0/hConversionPointRZ", "conversion point in RZ;Z (cm);R_{xy} (cm)", {HistType::kTH2F, {{200, -100.0f, 100.0f}, {200, 0.f, 100.f}}}}, - {"V0/hPt", "pT of V0 at PV;p_{T,#gamma} (GeV/c)", {HistType::kTH1F, {{1000, 0.0f, 10.0f}}}}, - {"V0/hEtaPhi", "#eta vs. #varphi of V0 at PV;#varphi (rad.);#eta", {HistType::kTH2F, {{72, 0.0f, TMath::TwoPi()}, {400, -2, +2}}}}, + {"V0/hPt", "pT of V0 at SV;p_{T,#gamma} (GeV/c)", {HistType::kTH1F, {{1000, 0.0f, 10.0f}}}}, + {"V0/hEtaPhi", "#eta vs. #varphi of V0 at SV;#varphi (rad.);#eta", {HistType::kTH2F, {{72, 0.0f, TMath::TwoPi()}, {400, -2, +2}}}}, {"V0/hCosPA", "cosine of pointing angle;cosine of pointing angle", {HistType::kTH1F, {{100, 0.9f, 1.f}}}}, + {"V0/hCosPA_Rxy", "cosine of pointing angle;r_{xy} (cm);cosine of pointing angle", {HistType::kTH2F, {{100, 0, 100}, {100, 0.9f, 1.f}}}}, {"V0/hPCA", "distance between 2 legs at SV;PCA (cm)", {HistType::kTH1F, {{500, 0.0f, 5.f}}}}, + {"V0/hPCA_Rxy", "distance between 2 legs at SV;R_{xy} (cm);PCA (cm)", {HistType::kTH2F, {{100, 0, 100}, {500, 0.0f, 5.f}}}}, {"V0/hDCAxyz", "DCA to PV;DCA_{xy} (cm);DCA_{z} (cm)", {HistType::kTH2F, {{200, -5.f, +5.f}, {200, -5.f, +5.f}}}}, - // {"V0/hMee_SVPV", "mee at PV and SV;m_{ee} at PV (GeV/c^{2});m_{ee} at SV (GeV/c^{2})", {HistType::kTH2F, {{100, 0.0f, 0.1f}, {100, 0, 0.1f}}}}, {"V0/hMeeSV_Rxy", "mee at SV vs. R_{xy};R_{xy} (cm);m_{ee} at SV (GeV/c^{2})", {HistType::kTH2F, {{200, 0.0f, 100.f}, {100, 0, 0.1f}}}}, - // {"V0/hMeePV_Rxy", "mee at PV vs. R_{xy};R_{xy} (cm);m_{ee} at PV (GeV/c^{2})", {HistType::kTH2F, {{200, 0.0f, 100.f}, {100, 0, 0.1f}}}}, {"V0Leg/hPt", "pT of leg at SV;p_{T,e} (GeV/c)", {HistType::kTH1F, {{1000, 0.0f, 10.0f}}}}, {"V0Leg/hEtaPhi", "#eta vs. #varphi of leg at SV;#varphi (rad.);#eta", {HistType::kTH2F, {{72, 0.0f, TMath::TwoPi()}, {400, -2, +2}}}}, {"V0Leg/hDCAxyz", "DCA xy vs. z to PV;DCA_{xy} (cm);DCA_{z} (cm)", {HistType::kTH2F, {{200, -10.f, 10.f}, {200, -10.f, +10.f}}}}, @@ -230,7 +231,14 @@ struct PhotonConversionBuilder { return false; } + if (track.hasITS() && !track.hasTPC() && (track.hasTRD() || track.hasTOF())) { // remove unrealistic track. this should not happen. + return false; + } + if (track.hasTPC()) { + if (track.tpcNClsFound() < min_ncluster_tpc) { + return false; + } if (track.tpcNClsCrossedRows() < mincrossedrows || track.tpcChi2NCl() > maxchi2tpc) { return false; } @@ -255,41 +263,19 @@ struct PhotonConversionBuilder { } } - if (!track.hasITS() && track.x() < 0.1) { // TPConly tracks which cannot be propagated to X=83cm during asynch. reco.. - auto track_par_cov = getTrackParCov(track); - o2::base::Propagator::Instance()->propagateToX(track_par_cov, 83.f, d_bz, o2::base::PropagatorImpl::MAX_SIN_PHI, o2::base::PropagatorImpl::MAX_STEP, matCorr); - if (40.0 < track_par_cov.getX() && track_par_cov.getX() < 82.9) { // propagation failed. - return false; - } - } - return true; } template void fillTrackTable(TTrack const& track, TKFParticle const& kfp, float dcaXY, float dcaZ) { - float trackiu_x = 0.0, trackiu_y = 0.0, trackiu_z = 0.0; - if (!track.hasITS() && track.x() < 0.1) { // TPConly tracks which cannot be propagated to X=83cm during asynch. reco.. - auto track_par_cov = getTrackParCov(track); - o2::base::Propagator::Instance()->propagateToX(track_par_cov, 83.f, d_bz, o2::base::PropagatorImpl::MAX_SIN_PHI, o2::base::PropagatorImpl::MAX_STEP, matCorr); - trackiu_x = track_par_cov.getX(); - // trackiu_y = track_par_cov.getY(); - trackiu_y = track.y(); - trackiu_z = track_par_cov.getZ(); - } else { - trackiu_x = track.x(); - trackiu_y = track.y(); - trackiu_z = track.z(); - } - v0legs(track.collisionId(), track.globalIndex(), track.sign(), kfp.GetPx(), kfp.GetPy(), kfp.GetPz(), dcaXY, dcaZ, track.tpcNClsFindable(), track.tpcNClsFindableMinusFound(), track.tpcNClsFindableMinusCrossedRows(), track.tpcChi2NCl(), track.tpcInnerParam(), track.tpcSignal(), track.tpcNSigmaEl(), track.tpcNSigmaPi(), track.itsClusterMap(), track.itsChi2NCl(), track.detectorMap(), - trackiu_x, trackiu_y, trackiu_z, track.tgl(), track.signed1Pt()); + track.x(), track.y(), track.z(), track.tgl(), track.signed1Pt()); } template @@ -308,10 +294,10 @@ struct PhotonConversionBuilder { return; } - if (isITSonlyTrack(pos) && isTPConlyTrack(ele)) { + if (isITSonlyTrack(pos) && !ele.hasITS()) { return; } - if (isITSonlyTrack(ele) && isTPConlyTrack(pos)) { + if (isITSonlyTrack(ele) && !pos.hasITS()) { return; } @@ -324,13 +310,11 @@ struct PhotonConversionBuilder { gpu::gpustd::array dcaInfo; auto pTrack = getTrackPar(pos); - // pTrack.setPID(o2::track::PID::Electron); o2::base::Propagator::Instance()->propagateToDCABxByBz({collision.posX(), collision.posY(), collision.posZ()}, pTrack, 2.f, matCorr, &dcaInfo); auto posdcaXY = dcaInfo[0]; auto posdcaZ = dcaInfo[1]; auto nTrack = getTrackPar(ele); - // nTrack.setPID(o2::track::PID::Electron); o2::base::Propagator::Instance()->propagateToDCABxByBz({collision.posX(), collision.posY(), collision.posZ()}, nTrack, 2.f, matCorr, &dcaInfo); auto eledcaXY = dcaInfo[0]; auto eledcaZ = dcaInfo[1]; @@ -346,6 +330,7 @@ struct PhotonConversionBuilder { if (rxy_tmp > maxX + margin_r_tpconly) { return; } + if (rxy_tmp < abs(xyz[2]) * TMath::Tan(2 * TMath::ATan(TMath::Exp(-max_eta_v0))) - margin_z) { return; // RZ line cut } @@ -397,6 +382,10 @@ struct PhotonConversionBuilder { } } + if (rxy < abs(gammaKF_DecayVtx.GetZ()) * TMath::Tan(2 * TMath::ATan(TMath::Exp(-max_eta_v0))) - margin_z) { + return; // RZ line cut + } + if ((!pos.hasITS() || !ele.hasITS()) && rxy < max_r_req_its) { // conversion points smaller than max_r_req_its have to be detected with ITS hits. return; } @@ -405,17 +394,20 @@ struct PhotonConversionBuilder { return; } - if (rxy < abs(gammaKF_DecayVtx.GetZ()) * TMath::Tan(2 * TMath::ATan(TMath::Exp(-max_eta_v0))) - margin_z) { - return; // RZ line cut - } + //// Apply a topological constraint of the gamma to the PV. Parameters will be given at the primary vertex. + // KFParticle gammaKF_PV = gammaKF_DecayVtx; + // gammaKF_PV.SetProductionVertex(KFPV); + // LOGF(info, "gammaKF_PV.GetPx() = %f, gammaKF_DecayVtx.GetPx() = %f", gammaKF_PV.GetPx(), gammaKF_DecayVtx.GetPx()); + // LOGF(info, "gammaKF_PV.GetPy() = %f, gammaKF_DecayVtx.GetPy() = %f", gammaKF_PV.GetPy(), gammaKF_DecayVtx.GetPy()); + // LOGF(info, "gammaKF_PV.GetPz() = %f, gammaKF_DecayVtx.GetPz() = %f", gammaKF_PV.GetPz(), gammaKF_DecayVtx.GetPz()); float v0pt = RecoDecay::sqrtSumOfSquares(gammaKF_DecayVtx.GetPx(), gammaKF_DecayVtx.GetPy()); float v0eta = RecoDecay::eta(std::array{gammaKF_DecayVtx.GetPx(), gammaKF_DecayVtx.GetPy(), gammaKF_DecayVtx.GetPz()}); float v0phi = RecoDecay::phi(gammaKF_DecayVtx.GetPx(), gammaKF_DecayVtx.GetPy()) > 0.f ? RecoDecay::phi(gammaKF_DecayVtx.GetPx(), gammaKF_DecayVtx.GetPy()) : RecoDecay::phi(gammaKF_DecayVtx.GetPx(), gammaKF_DecayVtx.GetPy()) + TMath::TwoPi(); - if (fabs(v0eta) > max_eta_v0 || v0pt < min_pt_v0) { - return; - } + // if (fabs(v0eta) > max_eta_v0 || v0pt < min_pt_v0) { + // return; + // } if (isITSonlyTrack(ele) && isITSonlyTrack(pos) && v0pt > max_pt_v0_itsonly) { return; @@ -426,11 +418,6 @@ struct PhotonConversionBuilder { kfp_pos_DecayVtx.TransportToPoint(xyz); // Don't set Primary Vertex kfp_ele_DecayVtx.TransportToPoint(xyz); // Don't set Primary Vertex - // KFParticle kfp_pos_PV = kfp_pos_DecayVtx; - // KFParticle kfp_ele_PV = kfp_ele_DecayVtx; - // kfp_pos_PV.SetProductionVertex(KFPV); - // kfp_ele_PV.SetProductionVertex(KFPV); - float pca_kf = kfp_pos_DecayVtx.GetDistanceFromParticle(kfp_ele_DecayVtx); if (pca_kf > max_dcav0dau) { return; @@ -442,18 +429,12 @@ struct PhotonConversionBuilder { return; } - if (isITSonlyTrack(pos)) { - float legpt = RecoDecay::sqrtSumOfSquares(kfp_pos_DecayVtx.GetPx(), kfp_pos_DecayVtx.GetPy()); - if (legpt > maxpt_itsonly) { - return; - } + if (isITSonlyTrack(pos) && pos_pt > maxpt_itsonly) { + return; } - if (isITSonlyTrack(ele)) { - float legpt = RecoDecay::sqrtSumOfSquares(kfp_ele_DecayVtx.GetPx(), kfp_ele_DecayVtx.GetPy()); - if (legpt > maxpt_itsonly) { - return; - } + if (isITSonlyTrack(ele) && ele_pt > maxpt_itsonly) { + return; } float alpha = v0_alpha(kfp_pos_DecayVtx.GetPx(), kfp_pos_DecayVtx.GetPy(), kfp_pos_DecayVtx.GetPz(), kfp_ele_DecayVtx.GetPx(), kfp_ele_DecayVtx.GetPy(), kfp_ele_DecayVtx.GetPz()); @@ -471,7 +452,9 @@ struct PhotonConversionBuilder { registry.fill(HIST("V0/hPt"), v0pt); registry.fill(HIST("V0/hEtaPhi"), v0phi, v0eta); registry.fill(HIST("V0/hCosPA"), cospa_kf); + registry.fill(HIST("V0/hCosPA_Rxy"), rxy, cospa_kf); registry.fill(HIST("V0/hPCA"), pca_kf); + registry.fill(HIST("V0/hPCA_Rxy"), rxy, pca_kf); // calculate DCAxy,z to PV float v0mom = RecoDecay::sqrtSumOfSquares(gammaKF_DecayVtx.GetPx(), gammaKF_DecayVtx.GetPy(), gammaKF_DecayVtx.GetPz()); @@ -499,16 +482,10 @@ struct PhotonConversionBuilder { registry.fill(HIST("V0Leg/hDCAxyz"), posdcaXY, posdcaZ); registry.fill(HIST("V0Leg/hDCAxyz"), eledcaXY, eledcaZ); - // ROOT::Math::PxPyPzMVector vpos_pv(kfp_pos_PV.GetPx(), kfp_pos_PV.GetPy(), kfp_pos_PV.GetPz(), o2::constants::physics::MassElectron); - // ROOT::Math::PxPyPzMVector vele_pv(kfp_ele_PV.GetPx(), kfp_ele_PV.GetPy(), kfp_ele_PV.GetPz(), o2::constants::physics::MassElectron); - // ROOT::Math::PxPyPzMVector v0_pv = vpos_pv + vele_pv; - ROOT::Math::PxPyPzMVector vpos_sv(kfp_pos_DecayVtx.GetPx(), kfp_pos_DecayVtx.GetPy(), kfp_pos_DecayVtx.GetPz(), o2::constants::physics::MassElectron); ROOT::Math::PxPyPzMVector vele_sv(kfp_ele_DecayVtx.GetPx(), kfp_ele_DecayVtx.GetPy(), kfp_ele_DecayVtx.GetPz(), o2::constants::physics::MassElectron); ROOT::Math::PxPyPzMVector v0_sv = vpos_sv + vele_sv; - // registry.fill(HIST("V0/hMee_SVPV"), v0_pv.M(), v0_sv.M()); registry.fill(HIST("V0/hMeeSV_Rxy"), rxy, v0_sv.M()); - // registry.fill(HIST("V0/hMeePV_Rxy"), rxy, v0_pv.M()); v0photonskf(collision.globalIndex(), v0legs.lastIndex() + 1, v0legs.lastIndex() + 2, gammaKF_DecayVtx.GetX(), gammaKF_DecayVtx.GetY(), gammaKF_DecayVtx.GetZ(),