28 #define LOG cout << fullname() << ": "
63 if(parameter(
"MaxTob").
value() > 0) {
64 p_NumberLeading1 = parameter(
"MaxTob").value();
65 p_NumberLeading2 = parameter(
"MaxTob").value();
67 p_NumberLeading1 = parameter(
"InputWidth").value();
68 p_NumberLeading2 = parameter(
"InputWidth").value();
71 for(
unsigned int i=0;
i<numberOutputBits(); ++
i) {
72 p_DeltaEtaMin[
i] = parameter(
"MinDeltaEta",
i).value();
73 p_DeltaEtaMax[
i] = parameter(
"MaxDeltaEta",
i).value();
75 p_MinET1[
i] = parameter(
"MinET1",
i).value();
76 p_MinET2[
i] = parameter(
"MinET2",
i).value();
81 for(
unsigned int i=0;
i<numberOutputBits(); ++
i) {
90 for(
unsigned int i=0;
i<numberOutputBits(); ++
i) {
91 std::string hname_accept =
"hDeltaEtaIncl1_accept_bit"+
std::to_string((
int)
i);
92 std::string hname_reject =
"hDeltaEtaIncl1_reject_bit"+
std::to_string((
int)
i);
94 bookHist(m_histAccept, hname_accept,
"DETA", 100, p_DeltaEtaMin[
i], p_DeltaEtaMax[
i]);
95 bookHist(m_histReject, hname_reject,
"DETA", 100, p_DeltaEtaMin[
i], p_DeltaEtaMax[
i]);
105 const std::vector<TCS::TOBArray *> & output,
109 if(input.size() == 1) {
110 unsigned int nLeading = p_NumberLeading1;
111 unsigned int nLeading2 = p_NumberLeading2;
113 tob1 != input[0]->end() &&
distance( input[0]->
begin(), tob1) < nLeading;
118 tob2 != input[0]->end() &&
distance( input[0]->
begin(), tob2) < nLeading2;
120 for(
unsigned int i=0;
i < numberOutputBits(); ++
i) {
126 unsigned int deltaEta = calcDeltaEtaBW( *tob1, *tob2 );
127 std::stringstream msgss;
128 msgss <<
"Combination : " <<
distance( input[0]->
begin(), tob1)
130 <<
" eta=" << (*tob1)->eta()
131 <<
" , eta=" << (*tob2)->eta()
132 <<
", DeltaEta = " <<
deltaEta <<
" -> ";
134 const bool fillAccept = fillHistos() and (fillHistosBasedOnHardware() ? getDecisionHardwareBit(
i) :
accept);
135 const bool fillReject = fillHistos() and not fillAccept;
136 const bool alreadyFilled = decision.
bit(
i);
141 if(fillAccept and not alreadyFilled) {
142 fillHist1D(m_histAccept[
i],(
float)
deltaEta);
143 }
else if(fillReject) {
144 fillHist1D(m_histReject[
i],(
float)
deltaEta);
146 msgss << (
accept?
"pass":
"fail") <<
"|";
151 for (
unsigned int i=0;
i < numberOutputBits(); ++
i) {
154 output[
i]->setAmbiguityFlag(hasAmbiguousInputs);
157 TCS_EXCEPTION(
"DeltaEtaIncl1 alg must have 1 input, but got " << input.size());
164 const std::vector<TCS::TOBArray *> & output,
167 if(input.size() == 1) {
169 unsigned int nLeading = p_NumberLeading1;
170 unsigned int nLeading2 = p_NumberLeading2;
171 if (nLeading < input[0]->
size() && nLeading2 < input[0]->
size()) { output[0]->setAmbiguityFlag(
false); }
173 tob1 != input[0]->end() &&
distance( input[0]->
begin(), tob1) < nLeading;
178 tob2 != input[0]->end() &&
distance( input[0]->
begin(), tob2) < nLeading2;
180 for(
unsigned int i=0;
i < numberOutputBits(); ++
i) {
181 if (input[0]->
size() >= nLeading2+1) {
183 if ((*tob2)->Et() == (*tob3)->Et() &&
distance(input[0]->
begin(), tob2) == nLeading2 - 1) {
184 output[0]->setAmbiguityFlag(
true);
192 unsigned int deltaEta = calcDeltaEta( *tob1, *tob2 );
193 std::stringstream msgss;
194 msgss <<
"Combination : " <<
distance( input[0]->
begin(), tob1)
196 <<
" eta=" << (*tob1)->eta()
197 <<
" , eta=" << (*tob2)->eta()
198 <<
", DeltaEta = " <<
deltaEta <<
" -> ";
200 const bool fillAccept = fillHistos() and (fillHistosBasedOnHardware() ? getDecisionHardwareBit(
i) :
accept);
201 const bool fillReject = fillHistos() and not fillAccept;
202 const bool alreadyFilled = decision.
bit(
i);
207 if(fillAccept and not alreadyFilled) {
208 fillHist1D(m_histAccept[
i],(
float)
deltaEta);
209 }
else if(fillReject) {
210 fillHist1D(m_histReject[
i],(
float)
deltaEta);
212 msgss << (
accept?
"pass":
"fail") <<
"|";
217 for (
unsigned int i=0;
i < numberOutputBits(); ++
i) {
220 output[
i]->setAmbiguityFlag(hasAmbiguousInputs);
223 TCS_EXCEPTION(
"DeltaEtaIncl1 alg must have 1 input, but got " << input.size());