@@ -321,10 +321,12 @@ struct DiphotonHadronMPC {
321321 delete emh_ref;
322322 emh_ref = 0x0 ;
323323
324- used_photonIds.clear ();
325- used_photonIds.shrink_to_fit ();
326- used_dileptonIds.clear ();
327- used_dileptonIds.shrink_to_fit ();
324+ used_photonIds_per_col.clear ();
325+ used_photonIds_per_col.shrink_to_fit ();
326+ used_dileptonIds_per_col.clear ();
327+ used_dileptonIds_per_col.shrink_to_fit ();
328+ used_diphotonIds_per_col.clear ();
329+ used_diphotonIds_per_col.shrink_to_fit ();
328330
329331 map_mixed_eventId_to_globalBC.clear ();
330332 }
@@ -482,9 +484,9 @@ struct DiphotonHadronMPC {
482484 MyEMH_track* emh_diphoton = nullptr ;
483485 MyEMH_track* emh_ref = nullptr ;
484486
485- std::vector<std::pair< int , int >> used_photonIds; // <ndf, trackId>
486- std::vector<std::tuple <int , int , int , int >> used_dileptonIds; // <ndf, trackId>
487- std::vector<std::tuple<int , int , int , int >> used_diphotonIds ; // <ndf, trackId>
487+ std::vector<int > used_photonIds_per_col; // <ndf, trackId>
488+ std::vector<std::pair <int , int >> used_dileptonIds_per_col; // <ndf, trackId>
489+ std::vector<std::tuple<int , int , int >> used_diphotonIds_per_col ; // <ndf, trackId>
488490 std::map<std::pair<int , int >, uint64_t > map_mixed_eventId_to_globalBC;
489491
490492 template <bool isTriggerAnalysis, typename TCollisions, typename TPhotons1, typename TPhotons2, typename TSubInfos1, typename TSubInfos2, typename TPreslice1, typename TPreslice2, typename TCut1, typename TCut2, typename TRefTracks>
@@ -599,22 +601,20 @@ struct DiphotonHadronMPC {
599601 } // end of ref track loop
600602
601603 if (npair > 0 ) {
602- std::tuple<int , int , int , int > tuple_tmp_diphoton = std::make_tuple (ndf, g1.globalIndex (), g2.globalIndex (), -1 );
603- if (std::find (used_diphotonIds .begin (), used_diphotonIds .end (), tuple_tmp_diphoton) == used_diphotonIds .end ()) {
604+ std::tuple<int , int , int > tuple_tmp_diphoton = std::make_tuple (g1.globalIndex (), g2.globalIndex (), -1 );
605+ if (std::find (used_diphotonIds_per_col .begin (), used_diphotonIds_per_col .end (), tuple_tmp_diphoton) == used_diphotonIds_per_col .end ()) {
604606 emh_diphoton->AddTrackToEventPool (key_df_collision, EMTrack (ndf, -1 , collision.globalIndex (), -1 , v12.Pt (), v12.Eta (), v12.Phi (), v12.M ()));
605- used_diphotonIds .emplace_back (tuple_tmp_diphoton);
607+ used_diphotonIds_per_col .emplace_back (tuple_tmp_diphoton);
606608 }
607609 }
608610
609- std::pair<int , int > pair_tmp_id1 = std::make_pair (ndf, g1.globalIndex ());
610- std::pair<int , int > pair_tmp_id2 = std::make_pair (ndf, g2.globalIndex ());
611- if (std::find (used_photonIds.begin (), used_photonIds.end (), pair_tmp_id1) == used_photonIds.end ()) {
611+ if (std::find (used_photonIds_per_col.begin (), used_photonIds_per_col.end (), g1.globalIndex ()) == used_photonIds_per_col.end ()) {
612612 emh1->AddTrackToEventPool (key_df_collision, EMTrack (ndf, g1.globalIndex (), collision.globalIndex (), g1.globalIndex (), g1.pt (), g1.eta (), g1.phi (), 0 ));
613- used_photonIds .emplace_back (pair_tmp_id1 );
613+ used_photonIds_per_col .emplace_back (g1. globalIndex () );
614614 }
615- if (std::find (used_photonIds .begin (), used_photonIds .end (), pair_tmp_id2) == used_photonIds .end ()) {
615+ if (std::find (used_photonIds_per_col .begin (), used_photonIds_per_col .end (), g2. globalIndex ()) == used_photonIds_per_col .end ()) {
616616 emh1->AddTrackToEventPool (key_df_collision, EMTrack (ndf, g2.globalIndex (), collision.globalIndex (), g2.globalIndex (), g2.pt (), g2.eta (), g2.phi (), 0 ));
617- used_photonIds .emplace_back (pair_tmp_id2 );
617+ used_photonIds_per_col .emplace_back (g2. globalIndex () );
618618 }
619619 ndiphoton++;
620620 } // end of pairing loop
@@ -677,28 +677,34 @@ struct DiphotonHadronMPC {
677677 } // end of ref track loop
678678
679679 if (npair > 0 ) {
680- std::tuple<int , int , int , int > tuple_tmp_diphoton = std::make_tuple (ndf, g1.globalIndex (), pos2.trackId (), ele2.trackId ());
681- if (std::find (used_diphotonIds .begin (), used_diphotonIds .end (), tuple_tmp_diphoton) == used_diphotonIds .end ()) {
680+ std::tuple<int , int , int > tuple_tmp_diphoton = std::make_tuple (g1.globalIndex (), pos2.trackId (), ele2.trackId ());
681+ if (std::find (used_diphotonIds_per_col .begin (), used_diphotonIds_per_col .end (), tuple_tmp_diphoton) == used_diphotonIds_per_col .end ()) {
682682 emh_diphoton->AddTrackToEventPool (key_df_collision, EMTrack (ndf, -1 , collision.globalIndex (), -1 , veeg.Pt (), veeg.Eta (), veeg.Phi (), veeg.M ()));
683- used_diphotonIds .emplace_back (tuple_tmp_diphoton);
683+ used_diphotonIds_per_col .emplace_back (tuple_tmp_diphoton);
684684 }
685685 }
686686
687- std::pair<int , int > pair_tmp_id1 = std::make_pair (ndf, g1.globalIndex ());
688- std::tuple<int , int , int , int > tuple_tmp_id2 = std::make_tuple (ndf, collision.globalIndex (), pos2.trackId (), ele2.trackId ());
689- if (std::find (used_photonIds.begin (), used_photonIds.end (), pair_tmp_id1) == used_photonIds.end ()) {
687+ std::pair<int , int > tuple_tmp_id2 = std::make_tuple (pos2.trackId (), ele2.trackId ());
688+ if (std::find (used_photonIds_per_col.begin (), used_photonIds_per_col.end (), g1.globalIndex ()) == used_photonIds_per_col.end ()) {
690689 emh1->AddTrackToEventPool (key_df_collision, EMTrack (ndf, g1.globalIndex (), collision.globalIndex (), -1 , g1.pt (), g1.eta (), g1.phi (), 0 ));
691- used_photonIds .emplace_back (pair_tmp_id1 );
690+ used_photonIds_per_col .emplace_back (g1. globalIndex () );
692691 }
693- if (std::find (used_dileptonIds .begin (), used_dileptonIds .end (), tuple_tmp_id2) == used_dileptonIds .end ()) {
692+ if (std::find (used_dileptonIds_per_col .begin (), used_dileptonIds_per_col .end (), tuple_tmp_id2) == used_dileptonIds_per_col .end ()) {
694693 emh2->AddTrackToEventPool (key_df_collision, EMTrack (ndf, -1 , collision.globalIndex (), -1 , v_ee.Pt (), v_ee.Eta (), v_ee.Phi (), v_ee.M ()));
695- used_dileptonIds .emplace_back (tuple_tmp_id2);
694+ used_dileptonIds_per_col .emplace_back (tuple_tmp_id2);
696695 }
697696 ndiphoton++;
698697 } // end of dielectron loop
699698 } // end of g1 loop
700699 } // end of pairing in same event
701700
701+ used_photonIds_per_col.clear ();
702+ used_photonIds_per_col.shrink_to_fit ();
703+ used_dileptonIds_per_col.clear ();
704+ used_dileptonIds_per_col.shrink_to_fit ();
705+ used_diphotonIds_per_col.clear ();
706+ used_diphotonIds_per_col.shrink_to_fit ();
707+
702708 if (ndiphoton > 0 ) {
703709 emh_ref->ReserveNTracksPerCollision (key_df_collision, refTracks_per_collision.size ());
704710 for (const auto & track : refTracks_per_collision) {
0 commit comments