@@ -502,6 +502,38 @@ struct LongrangecorrDerived {
502502 } // pair loop
503503 } // process MC mixed
504504
505+ template <typename TTriggers, typename TAssocs>
506+ void processMcGenSame (McCollsTable::iterator const & mccollision, TTriggers const & triggers, TAssocs const & assocs)
507+ {
508+ if (std::abs (mccollision.posZ ()) >= cfgSel.cfgVtxCut ) {
509+ return ;
510+ }
511+ fillCollQA (mccollision);
512+ auto multiplicity = mccollision.multiplicity ();
513+ fillCorrHist<CorrelationContainer::kCFStepAll >(same, triggers, assocs, false , mccollision.posZ (), multiplicity, 1.0 );
514+ } // process MC gen same
515+
516+ template <typename ... TrackTypes>
517+ void processMcGenMixed (McCollsTable const & mccollisions, TrackTypes&&... tracks)
518+ {
519+ auto getMultiplicity = [this ](auto & collision) {
520+ (void )this ;
521+ return collision.multiplicity ();
522+ };
523+ using MixedBinning = FlexibleBinningPolicy<std::tuple<decltype (getMultiplicity)>, aod::mccollision::PosZ, decltype (getMultiplicity)>;
524+ MixedBinning binningOnVtxAndMult{{getMultiplicity}, {cfgAxis.axisVtxZME , cfgAxis.axisMultME }, true };
525+ auto tracksTuple = std::make_tuple (std::forward<TrackTypes>(tracks)...);
526+ using TupleAtrack = std::tuple_element<0 , decltype (tracksTuple)>::type;
527+ using TupleBtrack = std::tuple_element<std::tuple_size_v<decltype (tracksTuple)> - 1 , decltype (tracksTuple)>::type;
528+ Pair<McCollsTable, TupleAtrack, TupleBtrack, MixedBinning> pairs{binningOnVtxAndMult, cfgSel.cfgNmixedevent , -1 , mccollisions, tracksTuple, &cache};
529+ for (auto it = pairs.begin (); it != pairs.end (); it++) {
530+ auto & [col1, tracks1, col2, tracks2] = *it;
531+ float eventweight = 1 .0f / it.currentWindowNeighbours ();
532+ auto multiplicity = getMultiplicity (col1);
533+ fillCorrHist<CorrelationContainer::kCFStepAll >(mixed, tracks1, tracks2, true , col1.posZ (), multiplicity, eventweight);
534+ } // pair loop
535+ } // process MC gen mixed
536+
505537 void processTpcft0aSE (CollsTable::iterator const & col, TrksTable const & tracks, Ft0aTrksTable const & ft0as)
506538 {
507539 processSame (col, tracks, ft0as);
@@ -700,6 +732,56 @@ struct LongrangecorrDerived {
700732 processMcMixed (mccollisions, collisions, ft0as, ft0cs);
701733 }
702734
735+ void processMcGenTpcft0aSE (McCollsTable::iterator const & mccollision, McTrksTable const & tracks, McFt0aTrksTable const & ft0as)
736+ {
737+ processMcGenSame (mccollision, tracks, ft0as);
738+ }
739+
740+ void processMcGenTpcft0cSE (McCollsTable::iterator const & mccollision, McTrksTable const & tracks, McFt0cTrksTable const & ft0cs)
741+ {
742+ processMcGenSame (mccollision, tracks, ft0cs);
743+ }
744+
745+ void processMcGenTpcmftSE (McCollsTable::iterator const & mccollision, McTrksTable const & tracks, McMftTrksTable const & mfts)
746+ {
747+ processMcGenSame (mccollision, tracks, mfts);
748+ }
749+
750+ void processMcGenMftft0aSE (McCollsTable::iterator const & mccollision, McMftTrksTable const & mfts, McFt0aTrksTable const & ft0as)
751+ {
752+ processMcGenSame (mccollision, mfts, ft0as);
753+ }
754+
755+ void processMcGenFt0aft0cSE (McCollsTable::iterator const & mccollision, McFt0aTrksTable const & ft0as, McFt0cTrksTable const & ft0cs)
756+ {
757+ processMcGenSame (mccollision, ft0as, ft0cs);
758+ }
759+
760+ void processMcGenTpcft0aME (McCollsTable const & mccollisions, McTrksTable const & tracks, McFt0aTrksTable const & ft0as)
761+ {
762+ processMcGenMixed (mccollisions, tracks, ft0as);
763+ }
764+
765+ void processMcGenTpcft0cME (McCollsTable const & mccollisions, McTrksTable const & tracks, McFt0cTrksTable const & ft0cs)
766+ {
767+ processMcGenMixed (mccollisions, tracks, ft0cs);
768+ }
769+
770+ void processMcGenTpcmftME (McCollsTable const & mccollisions, McTrksTable const & tracks, McMftTrksTable const & mfts)
771+ {
772+ processMcGenMixed (mccollisions, tracks, mfts);
773+ }
774+
775+ void processMcGenMftft0aME (McCollsTable const & mccollisions, McMftTrksTable const & mfts, McFt0aTrksTable const & ft0as)
776+ {
777+ processMcGenMixed (mccollisions, mfts, ft0as);
778+ }
779+
780+ void processMcGenFt0aft0cME (McCollsTable const & mccollisions, McFt0aTrksTable const & ft0as, McFt0cTrksTable const & ft0cs)
781+ {
782+ processMcGenMixed (mccollisions, ft0as, ft0cs);
783+ }
784+
703785 PROCESS_SWITCH (LongrangecorrDerived, processTpcft0aSE, " same event TPC vs FT0A" , false );
704786 PROCESS_SWITCH (LongrangecorrDerived, processTpcft0aME, " mixed event TPC vs FT0A" , false );
705787 PROCESS_SWITCH (LongrangecorrDerived, processTpcft0cSE, " same event TPC vs FT0C" , false );
@@ -736,6 +818,16 @@ struct LongrangecorrDerived {
736818 PROCESS_SWITCH (LongrangecorrDerived, processMcMftft0aME, " mixed MC event MFT vs FT0A" , false );
737819 PROCESS_SWITCH (LongrangecorrDerived, processMcFt0aft0cSE, " same MC event FT0A vs FT0C" , false );
738820 PROCESS_SWITCH (LongrangecorrDerived, processMcFt0aft0cME, " mixed MC event FT0A vs FT0C" , false );
821+ PROCESS_SWITCH (LongrangecorrDerived, processMcGenTpcft0aSE, " same MC gen event TPC vs FT0A" , false );
822+ PROCESS_SWITCH (LongrangecorrDerived, processMcGenTpcft0aME, " mixed MC gen event TPC vs FT0A" , false );
823+ PROCESS_SWITCH (LongrangecorrDerived, processMcGenTpcft0cSE, " same MC gen event TPC vs FT0C" , false );
824+ PROCESS_SWITCH (LongrangecorrDerived, processMcGenTpcft0cME, " mixed MC gen event TPC vs FT0C" , false );
825+ PROCESS_SWITCH (LongrangecorrDerived, processMcGenTpcmftSE, " same MC gen event TPC vs MFT" , false );
826+ PROCESS_SWITCH (LongrangecorrDerived, processMcGenTpcmftME, " mixed MC gen event TPC vs MFT" , false );
827+ PROCESS_SWITCH (LongrangecorrDerived, processMcGenMftft0aSE, " same MC gen event MFT vs FT0A" , false );
828+ PROCESS_SWITCH (LongrangecorrDerived, processMcGenMftft0aME, " mixed MC gen event MFT vs FT0A" , false );
829+ PROCESS_SWITCH (LongrangecorrDerived, processMcGenFt0aft0cSE, " same MC gen event FT0A vs FT0C" , false );
830+ PROCESS_SWITCH (LongrangecorrDerived, processMcGenFt0aft0cME, " mixed MC gen event FT0A vs FT0C" , false );
739831};
740832
741833WorkflowSpec defineDataProcessing (ConfigContext const & cfgc)
0 commit comments