@@ -549,63 +549,63 @@ struct ProbeThirdTrack {
549549 {
550550 // ITS-TPC tracks (global tracks)
551551 trackSelector[aod::tagandprobe::TrackTypes::GlobalWoDca].SetTrackType (o2::aod::track::TrackTypeEnum::Track);
552- trackSelector[aod::tagandprobe::TrackTypes::GlobalWoDca].SetPtRange (0 .1f , 1e10f);
553- trackSelector[aod::tagandprobe::TrackTypes::GlobalWoDca].SetEtaRange (-0 . 8f , 0 . 8f );
552+ trackSelector[aod::tagandprobe::TrackTypes::GlobalWoDca].SetPtRange (0 .05f , 1e10f);
553+ trackSelector[aod::tagandprobe::TrackTypes::GlobalWoDca].SetEtaRange (-1 . f , 1 . f );
554554 trackSelector[aod::tagandprobe::TrackTypes::GlobalWoDca].SetRequireITSRefit (true );
555555 trackSelector[aod::tagandprobe::TrackTypes::GlobalWoDca].SetRequireTPCRefit (true );
556- trackSelector[aod::tagandprobe::TrackTypes::GlobalWoDca].SetRequireGoldenChi2 (true );
557- trackSelector[aod::tagandprobe::TrackTypes::GlobalWoDca].SetMinNCrossedRowsTPC (70 );
558- trackSelector[aod::tagandprobe::TrackTypes::GlobalWoDca].SetMinNCrossedRowsOverFindableClustersTPC (0 .8f );
559- trackSelector[aod::tagandprobe::TrackTypes::GlobalWoDca].SetMaxChi2PerClusterTPC (4 .f );
556+ trackSelector[aod::tagandprobe::TrackTypes::GlobalWoDca].SetMinNCrossedRowsTPC (50 );
557+ trackSelector[aod::tagandprobe::TrackTypes::GlobalWoDca].SetMaxChi2PerClusterTPC (10 .f );
560558 trackSelector[aod::tagandprobe::TrackTypes::GlobalWoDca].SetRequireHitsInITSLayers (1 , {0 , 1 , 2 }); // one hit in any IB layer
561559 trackSelector[aod::tagandprobe::TrackTypes::GlobalWoDca].SetMaxChi2PerClusterITS (36 .f );
562560 trackSelector[aod::tagandprobe::TrackTypes::GlobalWoDca].SetMaxDcaZ (2 .f );
563561
564562 // TPC tracks (global tracks without ITS IB requirement)
565563 trackSelector[aod::tagandprobe::TrackTypes::GlobalWoDcaWoItsIb].SetTrackType (o2::aod::track::TrackTypeEnum::Track);
566- trackSelector[aod::tagandprobe::TrackTypes::GlobalWoDcaWoItsIb].SetPtRange (0 .1f , 1e10f);
567- trackSelector[aod::tagandprobe::TrackTypes::GlobalWoDcaWoItsIb].SetEtaRange (-0 .8f , 0 .8f );
568- trackSelector[aod::tagandprobe::TrackTypes::GlobalWoDcaWoItsIb].SetRequireITSRefit (true );
564+ trackSelector[aod::tagandprobe::TrackTypes::GlobalWoDcaWoItsIb].SetPtRange (0 .05f , 1e10f);
565+ trackSelector[aod::tagandprobe::TrackTypes::GlobalWoDcaWoItsIb].SetEtaRange (-1 .f , 1 .f );
569566 trackSelector[aod::tagandprobe::TrackTypes::GlobalWoDcaWoItsIb].SetRequireTPCRefit (true );
570- trackSelector[aod::tagandprobe::TrackTypes::GlobalWoDcaWoItsIb].SetRequireGoldenChi2 (true );
571- trackSelector[aod::tagandprobe::TrackTypes::GlobalWoDcaWoItsIb].SetMinNCrossedRowsTPC (70 );
572- trackSelector[aod::tagandprobe::TrackTypes::GlobalWoDcaWoItsIb].SetMinNCrossedRowsOverFindableClustersTPC (0 .8f );
573- trackSelector[aod::tagandprobe::TrackTypes::GlobalWoDcaWoItsIb].SetMaxChi2PerClusterTPC (4 .f );
567+ trackSelector[aod::tagandprobe::TrackTypes::GlobalWoDcaWoItsIb].SetMinNCrossedRowsTPC (50 );
568+ trackSelector[aod::tagandprobe::TrackTypes::GlobalWoDcaWoItsIb].SetMaxChi2PerClusterTPC (10 .f );
574569 trackSelector[aod::tagandprobe::TrackTypes::GlobalWoDcaWoItsIb].SetRequireHitsInITSLayers (3 , {0 , 1 , 2 , 3 , 4 , 5 , 6 }); // at least three hits in whatever layer
575570 trackSelector[aod::tagandprobe::TrackTypes::GlobalWoDcaWoItsIb].SetMaxChi2PerClusterITS (36 .f );
576571 trackSelector[aod::tagandprobe::TrackTypes::GlobalWoDcaWoItsIb].SetMaxDcaZ (2 .f );
577572
578573 // TPC tracks (global tracks without ITS requirements)
579574 trackSelector[aod::tagandprobe::TrackTypes::GlobalWoDcaWoIts].SetTrackType (o2::aod::track::TrackTypeEnum::Track);
580- trackSelector[aod::tagandprobe::TrackTypes::GlobalWoDcaWoIts].SetPtRange (0 .1f , 1e10f);
581- trackSelector[aod::tagandprobe::TrackTypes::GlobalWoDcaWoIts].SetEtaRange (-0 . 8f , 0 . 8f );
575+ trackSelector[aod::tagandprobe::TrackTypes::GlobalWoDcaWoIts].SetPtRange (0 .05f , 1e10f);
576+ trackSelector[aod::tagandprobe::TrackTypes::GlobalWoDcaWoIts].SetEtaRange (-1 . f , 1 . f );
582577 trackSelector[aod::tagandprobe::TrackTypes::GlobalWoDcaWoIts].SetRequireTPCRefit (true );
583- trackSelector[aod::tagandprobe::TrackTypes::GlobalWoDcaWoIts].SetRequireGoldenChi2 (true );
584- trackSelector[aod::tagandprobe::TrackTypes::GlobalWoDcaWoIts].SetMinNCrossedRowsTPC (70 );
585- trackSelector[aod::tagandprobe::TrackTypes::GlobalWoDcaWoIts].SetMinNCrossedRowsOverFindableClustersTPC (0 .8f );
586- trackSelector[aod::tagandprobe::TrackTypes::GlobalWoDcaWoIts].SetMaxChi2PerClusterTPC (4 .f );
578+ trackSelector[aod::tagandprobe::TrackTypes::GlobalWoDcaWoIts].SetMinNCrossedRowsTPC (50 );
579+ trackSelector[aod::tagandprobe::TrackTypes::GlobalWoDcaWoIts].SetMaxChi2PerClusterTPC (10 .f );
587580
588581 // ITS tracks (global tracks without TPC requirements)
589582 trackSelector[aod::tagandprobe::TrackTypes::GlobalWoDcaWoTpc].SetTrackType (o2::aod::track::TrackTypeEnum::Track);
590- trackSelector[aod::tagandprobe::TrackTypes::GlobalWoDcaWoTpc].SetPtRange (0 .1f , 1e10f);
591- trackSelector[aod::tagandprobe::TrackTypes::GlobalWoDcaWoTpc].SetEtaRange (-0 . 8f , 0 . 8f );
583+ trackSelector[aod::tagandprobe::TrackTypes::GlobalWoDcaWoTpc].SetPtRange (0 .05f , 1e10f);
584+ trackSelector[aod::tagandprobe::TrackTypes::GlobalWoDcaWoTpc].SetEtaRange (-1 . f , 1 . f );
592585 trackSelector[aod::tagandprobe::TrackTypes::GlobalWoDcaWoTpc].SetRequireITSRefit (true );
593586 trackSelector[aod::tagandprobe::TrackTypes::GlobalWoDcaWoTpc].SetRequireHitsInITSLayers (1 , {0 , 1 , 2 }); // one hit in any SPD layer
594587 trackSelector[aod::tagandprobe::TrackTypes::GlobalWoDcaWoTpc].SetMaxChi2PerClusterITS (36 .f );
595588 trackSelector[aod::tagandprobe::TrackTypes::GlobalWoDcaWoTpc].SetMaxDcaZ (2 .f );
596589
597- const AxisSpec axisPtProbe{250 , 0 .f , 25 .f };
598- const AxisSpec axisPtTag{250 , 0 .f , 50 .f };
599- const AxisSpec axisPtD{50 , 0 .f , 50 .f };
600- std::array<AxisSpec, aod::tagandprobe::TagChannels::NTagChannels> axisMass = {AxisSpec{450 , 1 .65f , 2 .10f }, AxisSpec{450 , 1 .65f , 2 .10f }, AxisSpec{350 , 0 .135f , 0 .17f }, AxisSpec{350 , 0 .135f , 0 .17f }};
601- std::array<AxisSpec, aod::tagandprobe::TagChannels::NTagChannels> axisMassTag = {AxisSpec{250 , 0 .f , 2 .5f }, AxisSpec{200 , constants::physics::MassPhi - 0 .05f , constants::physics::MassPhi + 0 .05f }, AxisSpec{400 , constants::physics::MassD0 - 0 .2f , constants::physics::MassD0 + 0 .2f }, AxisSpec{400 , constants::physics::MassD0 - 0 .2f , constants::physics::MassD0 + 0 .2f }};
590+ const AxisSpec axisPtProbe{{0 .05f , 0 .1f , 0 .2f , 0 .3f , 0 .4f , 0 .5f , 0 .6f , 0 .7f , 0 .8f , 0 .9f , 1 .0f , 1 .2f , 1 .5f , 2 .0f , 2 .5f , 3 .0f , 3 .5f , 4 .0f , 4 .5f , 5 .0f , 6 .0f , 7 .0f , 8 .0f , 9 .0f , 10 .f , 12 .f , 15 .f , 20 .f , 25 .f , 30 .f }};
591+ const AxisSpec axisPtTag{{0 .05f , 0 .1f , 0 .2f , 0 .3f , 0 .4f , 0 .5f , 0 .6f , 0 .7f , 0 .8f , 0 .9f , 1 .0f , 1 .2f , 1 .5f , 2 .0f , 2 .5f , 3 .0f , 3 .5f , 4 .0f , 4 .5f , 5 .0f , 6 .0f , 7 .0f , 8 .0f , 9 .0f , 10 .f , 12 .f , 15 .f , 20 .f , 25 .f , 30 .f }};
592+ const AxisSpec axisPtD{{0 .f , 0 .5f , 1 .f , 1 .5f , 2 .0f , 2 .5f , 3 .0f , 3 .5f , 4 .0f , 4 .5f , 5 .0f , 5 .5f , 6 .0f , 6 .5f , 7 .0f , 7 .5f , 8 .0f , 8 .5f , 9 .0f , 9 .5f , 10 .f , 11 .f , 12 .f , 14 .f , 16 .f , 20 .f , 24 .f , 36 .f , 50 .f }};
593+ const AxisSpec axisEtaProbe{20 , -1 .f , 1 .f };
594+ const AxisSpec axisPhiProbe{45 , 0 .f , o2::constants::math::TwoPI};
595+ const AxisSpec axisNumCrossRowTpc{51 , 49 .5f , 100 .5f };
596+ const AxisSpec axisTpcChi2PerClus{8 , 2 .f , 10 .f };
597+ const AxisSpec axisNumCluIts{5 , 2 .5f , 7 .5f };
598+ std::array<AxisSpec, aod::tagandprobe::TagChannels::NTagChannels> axisMass = {AxisSpec{225 , 1 .65f , 2 .10f }, AxisSpec{225 , 1 .65f , 2 .10f }, AxisSpec{350 , 0 .135f , 0 .17f }, AxisSpec{350 , 0 .135f , 0 .17f }};
599+ std::array<AxisSpec, aod::tagandprobe::TagChannels::NTagChannels> axisMassTag = {AxisSpec{125 , 0 .f , 2 .5f }, AxisSpec{100 , constants::physics::MassPhi - 0 .05f , constants::physics::MassPhi + 0 .05f }, AxisSpec{200 , constants::physics::MassD0 - 0 .2f , constants::physics::MassD0 + 0 .2f }, AxisSpec{200 , constants::physics::MassD0 - 0 .2f , constants::physics::MassD0 + 0 .2f }};
602600
603601 std::string trackTypes[aod::tagandprobe::TrackTypes::NTrackTypes] = {" ItsTpc" , " ItsTpcNoIb" , " Tpc" , " Its" };
604602 std::string tagChannels[aod::tagandprobe::TagChannels::NTagChannels] = {" DplusToKPiPi" , " DsOrDplusToKKPi" , " DstarPlusToDzeroPi" , " DstarMinusToDzeroBarPi" };
605603
606604 for (int iChannel{0 }; iChannel < aod::tagandprobe::TagChannels::NTagChannels; ++iChannel) {
607605 for (int iTrackType{0 }; iTrackType < aod::tagandprobe::TrackTypes::NTrackTypes; ++iTrackType) {
608- histos[iChannel][iTrackType] = registry.add <THnSparse>(Form (" h%sVsPtProbeTag_%s" , tagChannels[iChannel].data (), trackTypes[iTrackType].data ()), " ; #it{p}_{T}(D) (GeV/#it{c}); #it{p}_{T}(tag) (GeV/#it{c}); #it{p}_{T}(probe track) (GeV/#it{c}); #it{M}(D) (GeV/#it{c}^{2}); #it{M}(tag) (GeV/#it{c}^{2});" , HistType::kTHnSparseF , {axisPtD, axisPtTag, axisPtProbe, axisMass[iChannel], axisMassTag[iChannel]});
606+ histos[iChannel][iTrackType] = registry.add <THnSparse>(Form (" h%sVsPtProbeTag_%s" , tagChannels[iChannel].data (), trackTypes[iTrackType].data ()),
607+ " ; #it{p}_{T}(D) (GeV/#it{c}); #it{p}_{T}(tag) (GeV/#it{c}); #it{p}_{T}(probe) (GeV/#it{c}); #it{p}_{T}^{TPC in}(probe) (GeV/#it{c}); #it{M}(D) (GeV/#it{c}^{2}); #it{M}(tag) (GeV/#it{c}^{2}); #it{#eta}(probe); #varphi(probe); #it{N}_{cross rows}^{TPC}(probe); #chi^{2}/#it{N}_{clusters}^{TPC}(probe); #it{N}_{clusters}^{ITS}(probe);" ,
608+ HistType::kTHnSparseF , {axisPtD, axisPtTag, axisPtProbe, axisPtProbe, axisMass[iChannel], axisMassTag[iChannel], axisEtaProbe, axisPhiProbe, axisNumCrossRowTpc, axisTpcChi2PerClus, axisNumCluIts});
609609 }
610610 }
611611 }
@@ -647,6 +647,12 @@ struct ProbeThirdTrack {
647647 continue ;
648648 }
649649 auto ptTrackThird = trackThird.pt ();
650+ auto ptTpcInnerTrackThird = trackThird.tpcInnerParam () / std::sqrt (1 .f + trackThird.tgl () * trackThird.tgl ());
651+ auto etaTrackThird = trackThird.eta ();
652+ auto phiTrackThird = trackThird.phi ();
653+ auto numTpcCrossRowTrackThird = trackThird.tpcNClsCrossedRows ();
654+ auto numTpcChi2NumCluTrackThird = trackThird.tpcChi2NCl ();
655+ auto numItsCluTrackThird = trackThird.itsNCls ();
650656 float invMass{-1 .f }, invMassTag{-1 .f }, ptTag{-1 .f }, ptD{-1 .f };
651657 computeInvariantMass (trackFirst, trackSecond, trackThird, channel, ptTag, invMassTag, ptD, invMass);
652658 if ((channel == aod::tagandprobe::TagChannels::DstarPlusToDzeroPi || channel == aod::tagandprobe::TagChannels::DstarMinusToDzeroBarPi) && invMass > 0 .17f ) {
@@ -656,7 +662,7 @@ struct ProbeThirdTrack {
656662 }
657663 for (int iTrackType{0 }; iTrackType < aod::tagandprobe::TrackTypes::NTrackTypes; ++iTrackType) {
658664 if (trackSelector[iTrackType].IsSelected (trackThird)) {
659- histos[channel][iTrackType]->Fill (ptD, ptTag, ptTrackThird, invMass, invMassTag);
665+ histos[channel][iTrackType]->Fill (ptD, ptTag, ptTrackThird, ptTpcInnerTrackThird, invMass, invMassTag, etaTrackThird, phiTrackThird, numTpcCrossRowTrackThird, numTpcChi2NumCluTrackThird, numItsCluTrackThird );
660666 }
661667 }
662668 }
0 commit comments