26 defineParameter(
"InputWidth", 0);
27 defineParameter(
"MaxTob", 0);
28 defineParameter(
"NumResultBits", 2);
29 defineParameter(
"MinET1",0,0);
30 defineParameter(
"MinET2",0,0);
31 defineParameter(
"MinDeltaPhi", 0, 0);
32 defineParameter(
"MaxDeltaPhi", 31, 0);
33 defineParameter(
"MinET1",0,1);
34 defineParameter(
"MinET2",0,1);
35 defineParameter(
"MinDeltaPhi", 0, 1);
36 defineParameter(
"MaxDeltaPhi", 31, 1);
38 setNumberOutputBits(2);
47 if(parameter(
"MaxTob").
value() > 0) {
48 p_NumberLeading1 = parameter(
"MaxTob").value();
49 p_NumberLeading2 = parameter(
"MaxTob").value();
51 p_NumberLeading1 = parameter(
"InputWidth").value();
52 p_NumberLeading2 = parameter(
"InputWidth").value();
55 for(
unsigned int i=0;
i<numberOutputBits(); ++
i) {
56 p_DeltaPhiMin[
i] = parameter(
"MinDeltaPhi",
i).value();
57 p_DeltaPhiMax[
i] = parameter(
"MaxDeltaPhi",
i).value();
58 p_MinET1[
i] = parameter(
"MinET1",
i).value();
59 p_MinET2[
i] = parameter(
"MinET2",
i).value();
73 for(
unsigned int i=0;
i<numberOutputBits(); ++
i) {
74 std::string hname_accept =
"hDeltaPhiIncl1_accept_bit"+
std::to_string((
int)
i);
75 std::string hname_reject =
"hDeltaPhiIncl1_reject_bit"+
std::to_string((
int)
i);
77 bookHist(m_histAccept, hname_accept,
"DPHI", 100, p_DeltaPhiMin[
i], p_DeltaPhiMax[
i]);
78 bookHist(m_histReject, hname_reject,
"DPHI", 100, p_DeltaPhiMin[
i], p_DeltaPhiMax[
i]);
89 const std::vector<TCS::TOBArray *> & output,
92 if(input.size() == 1) {
94 unsigned int nLeading = p_NumberLeading1;
95 unsigned int nLeading2 = p_NumberLeading2;
97 tob1 != input[0]->end() &&
distance( input[0]->
begin(), tob1) < nLeading;
102 tob2 != input[0]->end() &&
distance( input[0]->
begin(), tob2) < nLeading2;
105 unsigned int deltaPhi = calcDeltaPhiBW( *tob1, *tob2 );
106 std::stringstream msgss;
107 msgss <<
" phi1=" << (*tob1)->phi() <<
" , phi2=" << (*tob2)->phi()
108 <<
", DeltaPhi = " <<
deltaPhi <<
" -> ";
109 for(
unsigned int i=0;
i<numberOutputBits(); ++
i) {
115 const bool fillAccept = fillHistos() and (fillHistosBasedOnHardware() ? getDecisionHardwareBit(
i) :
accept);
116 const bool fillReject = fillHistos() and not fillAccept;
117 const bool alreadyFilled = decision.
bit(
i);
122 if(fillAccept and not alreadyFilled) {
124 }
else if(fillReject) {
128 << (
accept?
"pass":
"fail"));
132 for (
unsigned int i=0;
i < numberOutputBits(); ++
i) {
135 output[
i]->setAmbiguityFlag(hasAmbiguousInputs);
138 TCS_EXCEPTION(
"DeltaPhiIncl1 alg must have 1 input, but got " << input.size());
145 const std::vector<TCS::TOBArray *> & output,
148 if(input.size() == 1) {
150 unsigned int nLeading = p_NumberLeading1;
151 unsigned int nLeading2 = p_NumberLeading2;
153 tob1 != input[0]->end() &&
distance( input[0]->
begin(), tob1) < nLeading;
156 if (nLeading < input[0]->
size()) {
158 if ((*tob1)->Et() == (*tob1_plus1)->Et() &&
distance(input[0]->
begin(), tob1) == nLeading - 1) {
159 for(
unsigned int i=0;
i<numberOutputBits(); ++
i) {
160 output[
i]->setAmbiguityFlag(
true);
166 tob2 != input[0]->end() &&
distance( input[0]->
begin(), tob2) < nLeading2;
169 unsigned int deltaPhi = calcDeltaPhi( *tob1, *tob2 );
170 std::stringstream msgss;
171 msgss <<
" Combination : " <<
distance( input[0]->
begin(), tob1)
173 <<
" phi1=" << (*tob1)->phi()
174 <<
" , phi2=" << (*tob2)->phi()
175 <<
", DeltaPhi = " <<
deltaPhi <<
" -> ";
176 for(
unsigned int i=0;
i<numberOutputBits(); ++
i) {
182 const bool fillAccept = fillHistos() and (fillHistosBasedOnHardware() ? getDecisionHardwareBit(
i) :
accept);
183 const bool fillReject = fillHistos() and not fillAccept;
184 const bool alreadyFilled = decision.
bit(
i);
189 if(fillAccept and not alreadyFilled) {
191 }
else if(fillReject) {
195 << (
accept?
"pass":
"fail"));
200 TCS_EXCEPTION(
"DeltaPhiIncl1 alg must have 1 input, but got " << input.size());