@@ -50,7 +50,9 @@ enum JetTaggingSpecies {
5050 beauty = 2 ,
5151 lightflavour = 3 ,
5252 lightquark = 4 ,
53- gluon = 5
53+ gluon = 5 ,
54+ udg = 6 ,
55+ strange = 7 ,
5456};
5557
5658enum BJetTaggingMethod {
@@ -413,6 +415,45 @@ int16_t getJetFlavor(AnyJet const& jet, AllMCParticles const& mcparticles)
413415 return JetTaggingSpecies::lightflavour; // Light flavor jet
414416}
415417
418+ /* *
419+ * return also the s-jet flavor: 1 for c-jet, 2 for b-jet, 7 for s-jet
420+ * 6 for u,d or g jets.
421+ *
422+ * @param AnyJet the jet that we need to study its flavor
423+ * @param AllMCParticles a vector of all the mc particles stack
424+ */
425+ template <typename AnyJet, typename AllMCParticles>
426+ int16_t getSJetFlavor (AnyJet const & jet, AllMCParticles const & mcparticles)
427+ {
428+ bool charmQuark = false ;
429+ bool strangeQuark = false ;
430+
431+ for (auto const & mcpart : mcparticles) {
432+ int pdgcode = mcpart.pdgCode ();
433+ if (std::abs (pdgcode) == 21 || (std::abs (pdgcode) >= 1 && std::abs (pdgcode) <= 5 )) {
434+ double dR = jetutilities::deltaR (jet, mcpart);
435+
436+ if (dR < jet.r () / 100 .f ) {
437+ if (std::abs (pdgcode) == 5 ) {
438+ return JetTaggingSpecies::beauty; // Beauty jet
439+ } else if (std::abs (pdgcode) == 4 ) {
440+ charmQuark = true ;
441+ } else if (std::abs (pdgcode) == 3 ) {
442+ strangeQuark = true ;
443+ }
444+ }
445+ }
446+ }
447+
448+ if (charmQuark) {
449+ return JetTaggingSpecies::charm; // Charm jet
450+ } else if (strangeQuark) {
451+ return JetTaggingSpecies::strange; // Strange jet
452+ }
453+
454+ return JetTaggingSpecies::udg; // Up, Down or Gluon jet
455+ }
456+
416457/* *
417458 * return the jet flavor if it finds a HF hadron inside the jet: 0 for lf-jet, 1 for c-jet, 2 for b-jet
418459 *
0 commit comments