30 float betaFix =
round(
beta * 10.0 ) / 10.0;
31 if( std::abs(
beta-betaFix) > 1.0
e-5 )
ATH_MSG_DEBUG(
"beta = " <<
beta <<
" has been rounded to " << betaFix );
59 m_dec_L1 = std::make_unique< SG::AuxElement::Decorator<float> >(
m_prefix+
"L1");
60 m_dec_L2 = std::make_unique< SG::AuxElement::Decorator<float> >(
m_prefix+
"L2");
61 m_dec_L3 = std::make_unique< SG::AuxElement::Decorator<float> >(
m_prefix+
"L3");
62 m_dec_L4 = std::make_unique< SG::AuxElement::Decorator<float> >(
m_prefix+
"L4");
63 m_dec_L5 = std::make_unique< SG::AuxElement::Decorator<float> >(
m_prefix+
"L5");
65 return StatusCode::SUCCESS;
73 std::string
suffix = moment.second.suffix;
76 if( !moment.second.acc_ECFG_2_1->isAvailable(
jet) ) {
81 if( !moment.second.acc_ECFG_3_2->isAvailable(
jet) ) {
87 if( !moment.second.acc_ECFG_3_1->isAvailable(
jet) ) {
94 if( !moment.second.acc_ECFG_4_1->isAvailable(
jet) ) {
101 if( !moment.second.acc_ECFG_4_2->isAvailable(
jet) ) {
108 if( !moment.second.acc_ECFG_2_1_ungroomed->isAvailable(
jet) ) {
113 if( !moment.second.acc_ECFG_3_1_ungroomed->isAvailable(
jet) ) {
118 if( !moment.second.acc_ECFG_3_2_ungroomed->isAvailable(
jet) ) {
124 float ecfg_2_1 = (*moment.second.acc_ECFG_2_1)(
jet);
125 float ecfg_3_1 = (*moment.second.acc_ECFG_3_1)(
jet);
126 float ecfg_3_2 = (*moment.second.acc_ECFG_3_2)(
jet);
127 float ecfg_4_1 = (*moment.second.acc_ECFG_4_2)(
jet);
128 float ecfg_4_2 = (*moment.second.acc_ECFG_4_2)(
jet);
130 float ecfg_2_1_ungroomed = -999.0;
131 float ecfg_3_1_ungroomed = -999.0;
132 float ecfg_3_2_ungroomed = -999.0;
135 ecfg_2_1_ungroomed = (*moment.second.acc_ECFG_2_1_ungroomed)(
jet);
136 ecfg_3_1_ungroomed = (*moment.second.acc_ECFG_3_1_ungroomed)(
jet);
137 ecfg_3_2_ungroomed = (*moment.second.acc_ECFG_3_2_ungroomed)(
jet);
146 float M2_dichroic = -999.0;
147 float N2_dichroic = -999.0;
150 if( ecfg_2_1 > 1
e-8 )
153 M2 = ecfg_3_1 / ecfg_2_1;
155 if( ecfg_3_1_ungroomed > 1
e-8 )
157 M2_dichroic = ecfg_3_1_ungroomed / ecfg_2_1;
163 if(
m_doM3 && ecfg_3_1 > 1
e-8 )
165 M3 = ecfg_4_1 / ecfg_3_1;
169 if( ecfg_2_1 > 1
e-8 )
172 N2 = ecfg_3_2 /
pow( ecfg_2_1, 2.0 );
174 if( ecfg_3_2_ungroomed > 1
e-8 && ecfg_2_1_ungroomed > 1
e-8 )
176 N2_dichroic = ecfg_3_2_ungroomed / ( ecfg_2_1_ungroomed * ecfg_2_1 );
182 if(
m_doN3 && ecfg_3_1 > 1
e-8 )
184 N3 = ecfg_4_2 /
pow( ecfg_3_1, 2.0 );
187 (*moment.second.dec_M2)(
jet) = M2;
188 (*moment.second.dec_M3)(
jet) = M3;
190 (*moment.second.dec_N2)(
jet) =
N2;
191 (*moment.second.dec_N3)(
jet) = N3;
193 (*moment.second.dec_M2_dichroic)(
jet) = M2_dichroic;
194 (*moment.second.dec_N2_dichroic)(
jet) = N2_dichroic;
228 ATH_MSG_WARNING(
"L series energy correlation functions with prefix '" <<
m_prefix <<
"' are not all available. Exiting..");
232 float ecfg_2_1_2 = (*m_acc_ECFG_2_1_2)(
jet);
233 float ecfg_3_1_1 = (*m_acc_ECFG_3_1_1)(
jet);
234 float ecfg_3_2_1 = (*m_acc_ECFG_3_2_1)(
jet);
235 float ecfg_3_2_2 = (*m_acc_ECFG_3_2_2)(
jet);
236 float ecfg_3_3_1 = (*m_acc_ECFG_3_3_1)(
jet);
237 float ecfg_4_2_2 = (*m_acc_ECFG_4_2_2)(
jet);
238 float ecfg_4_4_1 = (*m_acc_ECFG_4_4_1)(
jet);
240 if( ecfg_2_1_2 > 1
e-8 )
242 L1 = ecfg_3_2_1 /
pow( ecfg_2_1_2, 1.0 );
243 L2 = ecfg_3_3_1 /
pow( ecfg_2_1_2, (3.0/2.0) );
246 if( ecfg_3_3_1 > 1
e-8 )
248 L3 = ecfg_3_1_1 /
pow( ecfg_3_3_1, (1.0/3.0) );
249 L4 = ecfg_3_2_2 /
pow( ecfg_3_3_1, (4.0/3.0) );
252 if( ecfg_4_4_1 > 1
e-8 )
254 L5 = ecfg_4_2_2 /
pow( ecfg_4_4_1, 1.0 );
260 (*m_dec_L1)(
jet) =
L1;
261 (*m_dec_L2)(
jet) =
L2;
262 (*m_dec_L3)(
jet) =
L3;
263 (*m_dec_L4)(
jet) = L4;
264 (*m_dec_L5)(
jet) = L5;