24 #define LOG std::cout << "TCS::DisambiguationIncl3: "
52 p_NumberLeading1 = parameter(
"InputWidth1").value();
53 p_NumberLeading2 = parameter(
"InputWidth2").value();
54 p_NumberLeading3 = parameter(
"InputWidth3").value();
56 if(parameter(
"MaxTob1").
value() > 0) p_NumberLeading1 = parameter(
"MaxTob1").value();
57 if(parameter(
"MaxTob2").
value() > 0) p_NumberLeading2 = parameter(
"MaxTob2").value();
58 if(parameter(
"MaxTob3").
value() > 0) p_NumberLeading3 = parameter(
"MaxTob3").value();
61 for(
unsigned int i=0;
i<numberOutputBits(); ++
i) {
62 p_MinET1[
i] = parameter(
"MinET1",
i).value();
63 p_MinET2[
i] = parameter(
"MinET2",
i).value();
64 p_MinET3[
i] = parameter(
"MinET3",
i).value();
66 p_DisambDR[
i] = parameter(
"DisambDRSqr",
i).value();
90 const std::vector<TCS::TOBArray *> & output,
95 if( input.size() == 3) {
99 tob1 != input[0]->end() &&
distance(input[0]->
begin(), tob1) < p_NumberLeading1;
105 tob2 != input[1]->end() &&
distance(input[1]->
begin(), tob2) < p_NumberLeading2;
111 if (((*tob1)->eta() == (*tob2)->eta()) && ((*tob1)->phi() == (*tob2)->phi()) )
continue;
114 tob3 != input[2]->end() ;
118 unsigned int deltaR13 = calcDeltaR2BW( *tob1, *tob3 );
119 unsigned int deltaR23 = calcDeltaR2BW( *tob2, *tob3 );
121 for(
unsigned int i=0;
i<numberOutputBits(); ++
i) {
123 if(
parType_t((*tob1)->Et()) <= p_MinET1[
i])
continue;
124 if(
parType_t((*tob2)->Et()) <= p_MinET2[
i])
continue;
125 if(
parType_t((*tob3)->Et()) <= p_MinET3[
i])
continue;
127 accept = deltaR13 > p_DisambDR[
i] && deltaR23 > p_DisambDR[
i] ;
132 TRG_MSG_DEBUG(
"Decision " <<
i <<
": " << (
accept?
"pass":
"fail") <<
" deltaR13 = " << deltaR13 <<
" deltaR23 = " << deltaR23);
143 for (
unsigned int i=0;
i < numberOutputBits(); ++
i) {
147 output[
i]->setAmbiguityFlag(hasAmbiguousInputs);
152 TCS_EXCEPTION(
"DisambiguationIncl3 alg must have 3 inputs, but got " << input.size());
161 const std::vector<TCS::TOBArray *> & output,
166 if( input.size() == 3) {
170 tob1 != input[0]->end() &&
distance(input[0]->
begin(), tob1) < p_NumberLeading1;
176 tob2 != input[1]->end() &&
distance(input[1]->
begin(), tob2) < p_NumberLeading2;
182 if (((*tob1)->etaDouble() == (*tob2)->etaDouble()) && ((*tob1)->phiDouble() == (*tob2)->phiDouble()) )
continue;
185 tob3 != input[2]->end() ;
189 unsigned int deltaR13 = calcDeltaR2( *tob1, *tob3 );
190 unsigned int deltaR23 = calcDeltaR2( *tob2, *tob3 );
192 for(
unsigned int i=0;
i<numberOutputBits(); ++
i) {
194 if(
parType_t((*tob1)->Et()) <= p_MinET1[
i])
continue;
195 if(
parType_t((*tob2)->Et()) <= p_MinET2[
i])
continue;
196 if(
parType_t((*tob3)->Et()) <= p_MinET3[
i])
continue;
197 accept = deltaR13 > p_DisambDR[
i] && deltaR23 > p_DisambDR[
i] ;
202 TRG_MSG_DEBUG(
"Decision " <<
i <<
": " << (
accept?
"pass":
"fail") <<
" deltaR13 = " << deltaR13 <<
" deltaR23 = " << deltaR23);
215 TCS_EXCEPTION(
"DisambiguationIncl3 alg must have 3 inputs, but got " << input.size());