72 const EventContext& ctx = Gaudi::Hive::currentContext();
75 if (!
jets.isValid()) {
77 return StatusCode::FAILURE;
79 unsigned int nJets(
jets->size());
80 std::vector<const xAOD::Jet*> jetToCheck; jetToCheck.clear();
84 std::vector<int>
entries = m_parser->evaluateAsVector();
88 ATH_MSG_ERROR(
"Sizes incompatible! Are you sure your selection string used jets??");
89 return StatusCode::FAILURE;
92 for (
unsigned int i=0;
i<nJets; ++
i)
if (
entries[
i]==1) jetToCheck.push_back((*
jets)[
i]);
95 for (
unsigned int i=0;
i<nJets; ++
i) jetToCheck.push_back((*
jets)[
i]);
98 std::vector<const xAOD::IParticle*> mergedGhostConstits;
99 std::vector<const xAOD::IParticle*> ghosts;
100 std::vector<fastjet::PseudoJet> constituents;
105 mergedGhostConstits.clear();
108 ATH_CHECK(
jet->getAssociatedObjects(ghostName, ghosts));
109 mergedGhostConstits.insert(mergedGhostConstits.end(), ghosts.begin(), ghosts.end());
113 constituents.clear();
116 for (
auto constit : mergedGhostConstits){
117 if (constit==
nullptr) {
122 if (constit->e()<0) {
ATH_MSG_INFO(
"################## Negative energy cluster");
continue;}
123 constituents.push_back( fastjet::PseudoJet(constit->p4()) );
128 double eConstit = caloConstit->
e()* caloConstit->e();
129 time += caloConstit->time()* eConstit;
142 int nConstits = constituents.size();
145 fastjet::PseudoJet groomed_jet;
149 fastjet::PseudoJet recluster_jet = cs.inclusive_jets(0.0).front();
153 groomed_jet =
m_trimmer->result(recluster_jet);
157 ATH_MSG_DEBUG(
" No grooming requested or wrong one, will not apply grooming");
158 groomed_jet = recluster_jet;
162 nConstits = groomed_jet.constituents().size();
195 return StatusCode::SUCCESS;
210 fastjet::contrib::WTA_KT_Axes wta_kt_axes;
211 fastjet::contrib::NormalizedCutoffMeasure normalized_measure(1.0, 1.0, 1000000);
216 float tau1_wta = Tau1_wta.result(groomed_jet);
217 float tau2_wta = Tau2_wta.result(groomed_jet);
218 float tau3_wta = Tau3_wta.result(groomed_jet);
219 float tau4_wta = Tau4_wta.result(groomed_jet);
220 float tau21_wta = -999;
221 float tau32_wta = -999;
223 if( tau1_wta > 1
e-8 ) {
224 tau21_wta = tau2_wta / tau1_wta;
226 if( tau2_wta > 1
e-8 ) {
227 tau32_wta = tau3_wta / tau2_wta;
241 float split12 = Split12.result(groomed_jet);
242 float split23 = Split23.result(groomed_jet);
243 float split34 = Split34.result(groomed_jet);
254 float ecf1 = ECF1.result(groomed_jet);
255 float ecf2 = ECF2.result(groomed_jet);
256 float ecf3 = ECF3.result(groomed_jet);
257 float ecf4 = ECF4.result(groomed_jet);
262 c2 = ecf3 * ecf1 /
pow( ecf2, 2.0 );
263 d2 = ecf3 *
pow( ecf1, 3.0 ) /
pow( ecf2, 3.0 );
275 return StatusCode::SUCCESS;