@@ -83,16 +83,20 @@ struct PseudorapidityDensityMFT {
8383 Configurable<bool > useEvSel{" useEvSel" , true , " use event selection" };
8484 Configurable<bool > disableITSROFCut{" disableITSROFCut" , false , " Disable ITS ROF cut for event selection" };
8585 ConfigurableAxis multBinning{" multBinning" , {701 , -0.5 , 700.5 }, " " };
86- ConfigurableAxis EtaAxis = {" etaBinning" , {18 , -4.6 , -1 .}, " " };
86+ ConfigurableAxis EtaAxis = {" etaBinning" , {36 , -4.6 , -1 .}, " " };
8787
8888 Configurable<bool > useZDiffCut{" useZDiffCut" , true , " use Z difference cut" };
8989 Configurable<float > maxZDiff{
9090 " maxZDiff" , 1 .0f ,
9191 " max allowed Z difference for reconstructed collisions (cm)" };
9292
93- Configurable<bool > usePhiCut{" usePhiCut" , false , " use azimuthal angle cut" };
93+ Configurable<bool > usePhiCut{" usePhiCut" , true , " use azimuthal angle cut" };
9494 Configurable<float > cfgPhiCut{" cfgPhiCut" , 0 .1f ,
9595 " Cut on azimuthal angle of MFT tracks" };
96+ Configurable<float > cfgPhiCut1{" cfgPhiCut1" , 0 .0f ,
97+ " low Cut on azimuthal angle of MFT tracks" };
98+ Configurable<float > cfgPhiCut2{" cfgPhiCut2" , 6 .3f ,
99+ " high Cut on azimuthal angle of MFT tracks" };
96100 Configurable<float > cfgVzCut1{" cfgVzCut1" , -30 .0f ,
97101 " Cut1 on vertex position of MFT tracks" };
98102 Configurable<float > cfgVzCut2{" cfgVzCut2" , 30 .0f ,
@@ -576,15 +580,23 @@ struct PseudorapidityDensityMFT {
576580 registry.fill (HIST (" EventSelection" ), 2 .);
577581 for (const auto & retrack : retracks) {
578582 auto track = retrack.mfttrack ();
579- if ((cfgnEta1 < track.eta ()) && (track.eta () < cfgnEta2) && track.nClusters () >= cfgnCluster && retrack.ambDegree () > 0 ) {
583+ float ndf = std::max (2 .0f * track.nClusters () - 5 .0f , 1 .0f );
584+ float chi2ndf = track.chi2 () / ndf;
585+ float phi = track.phi ();
586+ o2::math_utils::bringTo02Pi (phi);
587+ if (usePhiCut) {
588+ if ((phi <= 0.02 ) || ((phi >= 3.10 ) && (phi <= 3.23 )) || (phi >= 6.21 ))
589+ continue ;
590+ }
591+ if ((cfgnEta1 < track.eta ()) && (track.eta () < cfgnEta2) && track.nClusters () >= cfgnCluster && retrack.ambDegree () > 0 && chi2ndf < cfgChi2NDFMax && (phi > cfgPhiCut1 && phi < cfgPhiCut2)) {
580592 registry.fill (HIST (" Tracks/2Danalysis/EtaZvtx" ), track.eta (), z);
581593 }
582594 }
583595 if (!disableITSROFCut && !collision.selection_bit (aod::evsel::kNoITSROFrameBorder )) {
584596 return ;
585597 }
586598 registry.fill (HIST (" EventSelection" ), 3 .);
587- if (!useEvSel || (useEvSel && collision.selection_bit (aod::evsel::kIsTriggerTVX ) && collision.selection_bit (aod::evsel::kNoTimeFrameBorder ))) {
599+ if (!useEvSel || (useEvSel && collision.selection_bit (aod::evsel::kIsTriggerTVX ) && collision.selection_bit (aod::evsel::kNoTimeFrameBorder ) && collision. selection_bit (aod::evsel:: kNoSameBunchPileup ) )) {
588600 registry.fill (HIST (" EventSelection" ), 4 .);
589601 registry.fill (HIST (" Tracks/2Danalysis/EventsNtrkZvtx_sel8" ), Ntrk, z);
590602 std::unordered_set<int > uniqueEvents;
@@ -610,7 +622,13 @@ struct PseudorapidityDensityMFT {
610622 auto track = retrack.mfttrack ();
611623 float ndf = std::max (2 .0f * track.nClusters () - 5 .0f , 1 .0f );
612624 float chi2ndf = track.chi2 () / ndf;
613- if ((cfgnEta1 < track.eta ()) && (track.eta () < cfgnEta2) && track.nClusters () >= cfgnCluster && retrack.ambDegree () > 0 && chi2ndf < cfgChi2NDFMax) {
625+ float phi = track.phi ();
626+ o2::math_utils::bringTo02Pi (phi);
627+ if (usePhiCut) {
628+ if ((phi <= 0.02 ) || ((phi >= 3.10 ) && (phi <= 3.23 )) || (phi >= 6.21 ))
629+ continue ;
630+ }
631+ if ((cfgnEta1 < track.eta ()) && (track.eta () < cfgnEta2) && track.nClusters () >= cfgnCluster && retrack.ambDegree () > 0 && chi2ndf < cfgChi2NDFMax && (phi > cfgPhiCut1 && phi < cfgPhiCut2)) {
614632 registry.fill (HIST (" Tracks/Control/Chi2NDF" ), chi2ndf);
615633 registry.fill (HIST (" Tracks/2Danalysis/EtaZvtx_sel8" ), track.eta (), z);
616634 if (midtracks.size () > 0 && retrack.ambDegree () > 0 ) {
@@ -627,8 +645,13 @@ struct PseudorapidityDensityMFT {
627645 auto track = retrack.mfttrack ();
628646 float ndf = std::max (2 .0f * track.nClusters () - 5 .0f , 1 .0f );
629647 float chi2ndf = track.chi2 () / ndf;
630-
631- if ((cfgnEta1 < track.eta ()) && (track.eta () < cfgnEta2) && track.nClusters () >= cfgnCluster && chi2ndf < cfgChi2NDFMax) {
648+ float phi = track.phi ();
649+ o2::math_utils::bringTo02Pi (phi);
650+ if ((cfgnEta1 < track.eta ()) && (track.eta () < cfgnEta2) && track.nClusters () >= cfgnCluster && chi2ndf < cfgChi2NDFMax && (phi > cfgPhiCut1 && phi < cfgPhiCut2)) {
651+ if (usePhiCut) {
652+ if ((phi <= 0.02 ) || ((phi >= 3.10 ) && (phi <= 3.23 )) || (phi >= 6.21 ))
653+ continue ;
654+ }
632655 registry.fill (HIST (" TracksEtaZvtx" ), track.eta (), z);
633656 if (midtracks.size () > 0 && retrack.ambDegree () > 0 ) {
634657 registry.fill (HIST (" Tracks/EtaZvtx_gt0" ), track.eta (), z);
@@ -866,7 +889,7 @@ struct PseudorapidityDensityMFT {
866889 if (!disableITSROFCut && !collision.selection_bit (aod::evsel::kNoITSROFrameBorder )) {
867890 return ;
868891 }
869- if (!useEvSel || (useEvSel && collision.selection_bit (aod::evsel::kIsTriggerTVX ) && collision.selection_bit (aod::evsel::kNoTimeFrameBorder ))) {
892+ if (!useEvSel || (useEvSel && collision.selection_bit (aod::evsel::kIsTriggerTVX ) && collision.selection_bit (aod::evsel::kNoTimeFrameBorder ) && collision. selection_bit (aod::evsel:: kNoSameBunchPileup ) )) {
870893 atLeastOne = true ;
871894 auto perCollisionSample = sample->sliceByCached (
872895 o2::aod::fwdtrack::collisionId, collision.globalIndex (), cache);
@@ -912,7 +935,13 @@ struct PseudorapidityDensityMFT {
912935 if (std::abs (charge) < 3 .) {
913936 continue ;
914937 }
915- if (cfgnEta1 < particle.eta () && particle.eta () < cfgnEta2) {
938+ float phi = particle.phi ();
939+ o2::math_utils::bringTo02Pi (phi);
940+ if (usePhiCut) {
941+ if ((phi <= 0.02 ) || ((phi >= 3.10 ) && (phi <= 3.23 )) || (phi >= 6.21 ))
942+ continue ;
943+ }
944+ if (cfgnEta1 < particle.eta () && particle.eta () < cfgnEta2 && (phi > cfgPhiCut1 && phi < cfgPhiCut2)) {
916945 registry.fill (HIST (" TracksEtaZvtxGen_t" ), particle.eta (),
917946 mcCollision.posZ ());
918947 if (perCollisionMCSampleCentral.size () > 0 ) {
0 commit comments