53 {
54
55
56
57 size_t nconst = constituents.size();
58 if( nconst < 3 ) return 0;
59
60
61 fastjet::ClusterSequence cs(constituents,
m_jetdef);
62
63 double scaleF = 1.;
64
65 std::vector<fastjet::PseudoJet> outjets;
66
69 outjets= cs.exclusive_jets(3);
70
71
72 break;
73
75 outjets= cs.exclusive_jets(3);
76 fastjet::PseudoJet sumTot(0,0,0,0) ;
77 sumTot = outjets[0] + outjets[1] + outjets[2];
78
79
80 std::vector<fastjet::PseudoJet> tmp_subjets; tmp_subjets.reserve(4);
81 decomposeToJetMass(outjets[0],
m_massCut , tmp_subjets);
82 decomposeToJetMass(outjets[1],
m_massCut , tmp_subjets);
83 decomposeToJetMass(outjets[2],
m_massCut , tmp_subjets);
84
85 outjets = fastjet::sorted_by_pt( tmp_subjets) ;
86 outjets.resize(3);
87
88
89
90 fastjet::PseudoJet sumSubJ(0,0,0,0);
91 sumSubJ = outjets[0] + outjets[1] + outjets[2];
92 scaleF = sumTot.pt()/sumSubJ.pt();
93
94
95 }
96 break;
98 outjets = fastjet::sorted_by_pt(cs.inclusive_jets());
99
100
101
102 size_t nsubjets = outjets.size();
103 if( nsubjets < 3 ) return 0;
104
105
106
107 fastjet::PseudoJet sumTot(0,0,0,0), sumSubJ(0,0,0,0);
108 for( fastjet::PseudoJet& c: constituents) sumTot+=
c;
109
110
111 outjets.resize(3);
112
113 for( fastjet::PseudoJet& c: outjets ) sumSubJ+=
c;
114 scaleF = sumTot.pt()/sumSubJ.pt();
115
116 }
117 break;
118 }
119
120 double m12 = (outjets[0]+outjets[1]).
m();
121 double m23 = (outjets[2]+outjets[1]).
m();
122 double m13 = (outjets[2]+outjets[0]).
m();
123
124
125 return scaleF*std::min(m12, std::min(m23,m13) );
126}