@@ -198,6 +198,9 @@ struct Derivedupcanalysis {
198198 Configurable<float > minOccupancy{" minOccupancy" , -1 , " minimum occupancy from neighbouring collisions" };
199199 Configurable<float > maxOccupancy{" maxOccupancy" , 1000 , " maximum occupancy from neighbouring collisions" };
200200
201+ // z vertex cut
202+ Configurable<float > maxZVtxPosition{" maxZVtxPosition" , 10 .0f , " max Z vtx position" };
203+
201204 // Kinematic axes
202205 ConfigurableAxis axisPt{" axisPt" , {VARIABLE_WIDTH, 0 .0f , 0 .1f , 0 .2f , 0 .3f , 0 .4f , 0 .5f , 0 .6f , 0 .7f , 0 .8f , 0 .9f , 1 .0f , 1 .1f , 1 .2f , 1 .3f , 1 .4f , 1 .5f , 1 .6f , 1 .7f , 1 .8f , 1 .9f , 2 .0f , 2 .2f , 2 .4f , 2 .6f , 2 .8f , 3 .0f , 3 .2f , 3 .4f , 3 .6f , 3 .8f , 4 .0f , 4 .4f , 4 .8f , 5 .2f , 5 .6f , 6 .0f , 6 .5f , 7 .0f , 7 .5f , 8 .0f , 9 .0f , 10 .0f , 11 .0f , 12 .0f , 13 .0f , 14 .0f , 15 .0f , 17 .0f , 19 .0f , 21 .0f , 23 .0f , 25 .0f , 30 .0f , 35 .0f , 40 .0f , 50 .0f }, " pt axis for v0 analysis" };
203206 ConfigurableAxis axisPtXi{" axisPtXi" , {VARIABLE_WIDTH, 0 .0f , 0 .1f , 0 .2f , 0 .3f , 0 .4f , 0 .5f , 0 .6f , 0 .7f , 0 .8f , 0 .9f , 1 .0f , 1 .1f , 1 .2f , 1 .3f , 1 .4f , 1 .5f , 1 .6f , 1 .7f , 1 .8f , 1 .9f , 2 .0f , 2 .2f , 2 .4f , 2 .6f , 2 .8f , 3 .0f , 3 .2f , 3 .4f , 3 .6f , 3 .8f , 4 .0f , 4 .4f , 4 .8f , 5 .2f , 5 .6f , 6 .0f , 6 .5f , 7 .0f , 7 .5f , 8 .0f , 9 .0f , 10 .0f , 11 .0f , 12 .0f , 13 .0f , 14 .0f , 15 .0f , 17 .0f , 19 .0f , 21 .0f , 23 .0f , 25 .0f , 30 .0f , 35 .0f , 40 .0f , 50 .0f }, " pt axis for cascade analysis" };
@@ -1014,7 +1017,7 @@ struct Derivedupcanalysis {
10141017 const std::array<SelectionCheck, 15 > checks = {{
10151018 {true , true , 0.0 }, // All collisions
10161019 {requireIsTriggerTVX, collision.selection_bit (aod::evsel::kIsTriggerTVX ), 1.0 }, // Triggered by FT0M
1017- {true , std::fabs (collision.posZ ()) <= 10 . f , 2.0 }, // Vertex-Z selected
1020+ {true , std::fabs (collision.posZ ()) < maxZVtxPosition , 2.0 }, // Vertex-Z selected
10181021 {rejectITSROFBorder, collision.selection_bit (o2::aod::evsel::kNoITSROFrameBorder ), 3.0 }, // Not at ITS ROF border
10191022 {rejectTFBorder, collision.selection_bit (o2::aod::evsel::kNoTimeFrameBorder ), 4.0 }, // Not at TF border
10201023 {requireIsVertexITSTPC, collision.selection_bit (o2::aod::evsel::kIsVertexITSTPC ), 5.0 }, // At least one ITS-TPC track
@@ -1576,10 +1579,10 @@ struct Derivedupcanalysis {
15761579
15771580 PresliceUnsorted<StraCollisonsFullMC> perMcCollision = aod::v0data::straMCCollisionId;
15781581
1579- std::vector<int > getListOfRecoCollIndices (StraMCCollisionsFull const & mcCollisions,
1580- StraCollisonsFullMC const & collisions)
1582+ std::vector<int > getListOfRecoCollIds (StraMCCollisionsFull const & mcCollisions,
1583+ StraCollisonsFullMC const & collisions)
15811584 {
1582- std::vector<int > listBestCollisionIdx (mcCollisions.size (), -1 );
1585+ std::vector<int > listBestCollisionIds (mcCollisions.size (), -1 );
15831586
15841587 for (auto const & mcCollision : mcCollisions) {
15851588 auto groupedCollisions = collisions.sliceBy (perMcCollision, mcCollision.globalIndex ());
@@ -1588,15 +1591,23 @@ struct Derivedupcanalysis {
15881591 int biggestNContribs = -1 ;
15891592 int bestCollisionIndex = -1 ;
15901593 for (auto const & collision : groupedCollisions) {
1594+ if (!acceptEvent (collision, false )) {
1595+ continue ;
1596+ }
1597+
1598+ int selGapSide = collision.isUPC () ? getGapSide (collision) : -1 ;
1599+ if (studyUPConly && (selGapSide < -0.5 ))
1600+ continue ;
1601+
15911602 if (biggestNContribs < collision.multPVTotalContributors ()) {
15921603 biggestNContribs = collision.multPVTotalContributors ();
15931604 bestCollisionIndex = collision.globalIndex ();
15941605 }
15951606 }
1596- listBestCollisionIdx [mcCollision.globalIndex ()] = bestCollisionIndex;
1607+ listBestCollisionIds [mcCollision.globalIndex ()] = bestCollisionIndex;
15971608 }
15981609
1599- return listBestCollisionIdx ;
1610+ return listBestCollisionIds ;
16001611 }
16011612
16021613 void fillGenMCHistogramsQA (StraMCCollisionsFull const & mcCollisions, StraCollisonsFullMC const & collisions)
@@ -1605,7 +1616,7 @@ struct Derivedupcanalysis {
16051616 histos.fill (HIST (" eventQA/mc/hEventSelectionMC" ), 0.0 );
16061617 histos.fill (HIST (" eventQA/mc/hMCNParticlesEta10" ), mcCollision.multMCNParticlesEta10 (), 0 /* all gen. events*/ );
16071618
1608- if (std::abs (mcCollision.posZ ()) > 10 . f )
1619+ if (std::abs (mcCollision.posZ ()) > maxZVtxPosition )
16091620 continue ;
16101621
16111622 histos.fill (HIST (" eventQA/mc/hEventSelectionMC" ), 1.0 );
@@ -1629,14 +1640,14 @@ struct Derivedupcanalysis {
16291640 if (studyUPConly && (selGapSide < -0.5 ))
16301641 continue ;
16311642
1643+ ++nCollisions;
1644+ atLeastOne = true ;
1645+
16321646 if (biggestNContribs < collision.multPVTotalContributors ()) {
16331647 biggestNContribs = collision.multPVTotalContributors ();
16341648 centrality = collision.centFT0C ();
16351649 nTracksGlobal = collision.multNTracksGlobal ();
16361650 }
1637-
1638- ++nCollisions;
1639- atLeastOne = true ;
16401651 }
16411652
16421653 // Fill histograms
@@ -1759,7 +1770,7 @@ struct Derivedupcanalysis {
17591770 StraCollisonsFullMC const & collisions)
17601771 {
17611772 fillGenMCHistogramsQA (mcCollisions, collisions);
1762- std::vector<int > listBestCollisionIdx = getListOfRecoCollIndices (mcCollisions, collisions);
1773+ std::vector<int > listBestCollisionIds = getListOfRecoCollIds (mcCollisions, collisions);
17631774 // V0 start
17641775 for (auto const & v0MC : V0MCCores) {
17651776 // Consider only primaries
@@ -1777,13 +1788,15 @@ struct Derivedupcanalysis {
17771788 continue ;
17781789
17791790 auto mcCollision = v0MC.straMCCollision_as <StraMCCollisionsFull>(); // take gen. collision
1780- if (std::abs (mcCollision.posZ ()) > 10 .f )
1791+
1792+ if (std::abs (mcCollision.posZ ()) > maxZVtxPosition)
17811793 continue ;
17821794
17831795 float centrality = -1 .f ;
17841796 int nTracksGlobal = -1 ;
1785- if (listBestCollisionIdx[mcCollision.globalIndex ()] > -1 ) {
1786- auto collision = collisions.iteratorAt (listBestCollisionIdx[mcCollision.globalIndex ()]);
1797+
1798+ if (listBestCollisionIds[mcCollision.globalIndex ()] > -1 ) {
1799+ auto collision = collisions.iteratorAt (listBestCollisionIds[mcCollision.globalIndex ()]);
17871800 centrality = collision.centFT0C ();
17881801 nTracksGlobal = collision.multNTracksGlobal ();
17891802 }
@@ -1816,13 +1829,14 @@ struct Derivedupcanalysis {
18161829 continue ;
18171830
18181831 auto mcCollision = cascMC.straMCCollision_as <StraMCCollisionsFull>(); // take gen. collision
1819- if (std::abs (mcCollision.posZ ()) > 10 . f )
1832+ if (std::abs (mcCollision.posZ ()) > maxZVtxPosition )
18201833 continue ;
18211834
18221835 float centrality = -1 .f ;
18231836 int nTracksGlobal = -1 ;
1824- if (listBestCollisionIdx[mcCollision.globalIndex ()] > -1 ) {
1825- auto collision = collisions.iteratorAt (listBestCollisionIdx[mcCollision.globalIndex ()]);
1837+
1838+ if (listBestCollisionIds[mcCollision.globalIndex ()] > -1 ) {
1839+ auto collision = collisions.iteratorAt (listBestCollisionIds[mcCollision.globalIndex ()]);
18261840 centrality = collision.centFT0C ();
18271841 nTracksGlobal = collision.multNTracksGlobal ();
18281842 }
0 commit comments