From b0ec9a6650c839bec1950e7487e39f618ccdc2f0 Mon Sep 17 00:00:00 2001 From: vsorin <vsorin@cern.ch> Date: Thu, 29 Jan 2015 15:58:10 +0100 Subject: [PATCH] fixed bug in deta and change names in INVMASS (L1TopoAlgorithms-00-00-33) * Fixed bug on deta and fixed names on INVMASS algos * L1TopoAlgorithms-00-00-33 2015-01-27 Veronica Sorin * MAJOR CHANGES to ALL algos, to adjust to new FW generic conventions and paramters functionality * L1TopoAlgorithms-00-00-32 2015-01-21 Rolf Seuster * Fix compilation problem with gcc49 * L1TopoAlgorithms-00-00-31 --- .../L1TopoAlgorithms/DeltaEtaIncl1.h | 8 +- .../L1TopoAlgorithms/DeltaEtaIncl2.h | 8 +- .../L1TopoAlgorithms/DeltaRSqrIncl1.h | 2 +- .../L1TopoAlgorithms/DisambiguationDRIncl2.h | 45 ++++ .../L1TopoAlgorithms/DisambiguationDRIncl3.h | 1 + .../DisambiguationDetaDPhiIncl3.h | 52 +++++ .../L1TopoAlgorithms/DisambiguationIncl3.h | 1 + .../InvariantMassInclusive1.h | 8 +- .../InvariantMassInclusive2.h | 8 +- .../L1TopoAlgorithms/L1TopoAlgorithms/JetHT.h | 2 +- .../L1TopoAlgorithms/RatioSum.h | 1 + .../L1TopoAlgorithms/Root/DeltaEtaIncl1.cxx | 79 ++++--- .../L1TopoAlgorithms/Root/DeltaEtaIncl2.cxx | 62 +++-- .../L1TopoAlgorithms/Root/DeltaPhiIncl1.cxx | 19 +- .../L1TopoAlgorithms/Root/DeltaPhiIncl2.cxx | 8 +- .../Root/DeltaRApproxBoxCutIncl1.cxx | 14 +- .../Root/DeltaRApproxBoxCutIncl2.cxx | 8 +- .../L1TopoAlgorithms/Root/DeltaRSqrIncl1.cxx | 26 ++- .../L1TopoAlgorithms/Root/DeltaRSqrIncl2.cxx | 18 +- .../Root/DisambiguationDRIncl2.cxx | 160 +++++++++++++ .../Root/DisambiguationDRIncl3.cxx | 19 +- .../Root/DisambiguationDetaDPhiIncl3.cxx | 216 ++++++++++++++++++ .../Root/DisambiguationIncl2.cxx | 13 +- .../Root/DisambiguationIncl3.cxx | 19 +- .../Root/GenericListGenerator.cxx | 1 + .../Root/InvariantMassInclusive1.cxx | 78 ++++--- .../Root/InvariantMassInclusive2.cxx | 78 ++++--- .../L1Topo/L1TopoAlgorithms/Root/JetHT.cxx | 16 +- .../L1Topo/L1TopoAlgorithms/Root/JetMatch.cxx | 8 +- .../L1Topo/L1TopoAlgorithms/Root/LAR.cxx | 6 +- .../L1TopoAlgorithms/Root/MinDPhiIncl1.cxx | 21 +- .../L1TopoAlgorithms/Root/MinDPhiIncl2.cxx | 13 +- .../L1Topo/L1TopoAlgorithms/Root/NoMatch.cxx | 17 +- .../L1Topo/L1TopoAlgorithms/Root/Ratio.cxx | 4 + .../L1Topo/L1TopoAlgorithms/Root/Ratio2.cxx | 6 +- .../L1TopoAlgorithms/Root/RatioMatch.cxx | 21 +- .../L1Topo/L1TopoAlgorithms/Root/RatioSum.cxx | 13 +- 37 files changed, 885 insertions(+), 194 deletions(-) create mode 100644 Trigger/TrigT1/L1Topo/L1TopoAlgorithms/L1TopoAlgorithms/DisambiguationDRIncl2.h create mode 100644 Trigger/TrigT1/L1Topo/L1TopoAlgorithms/L1TopoAlgorithms/DisambiguationDetaDPhiIncl3.h create mode 100644 Trigger/TrigT1/L1Topo/L1TopoAlgorithms/Root/DisambiguationDRIncl2.cxx create mode 100644 Trigger/TrigT1/L1Topo/L1TopoAlgorithms/Root/DisambiguationDetaDPhiIncl3.cxx diff --git a/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/L1TopoAlgorithms/DeltaEtaIncl1.h b/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/L1TopoAlgorithms/DeltaEtaIncl1.h index cfd63ed5b83..1f35c1ae8fd 100644 --- a/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/L1TopoAlgorithms/DeltaEtaIncl1.h +++ b/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/L1TopoAlgorithms/DeltaEtaIncl1.h @@ -28,10 +28,10 @@ namespace TCS { parType_t p_NumberLeading1 = { 0 }; parType_t p_NumberLeading2 = { 0 }; - parType_t p_DeltaEtaMin[3] = {0, 0, 0}; - parType_t p_DeltaEtaMax[3] = {0, 0, 0}; - parType_t p_MinET1 = { 0 }; - parType_t p_MinET2 = { 0 }; + parType_t p_DeltaEtaMin[4] = {0, 0, 0,0}; + parType_t p_DeltaEtaMax[4] = {0, 0, 0,0}; + parType_t p_MinET1[4] = { 0,0,0,0 }; + parType_t p_MinET2[4] = { 0,0,0,0 }; }; diff --git a/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/L1TopoAlgorithms/DeltaEtaIncl2.h b/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/L1TopoAlgorithms/DeltaEtaIncl2.h index 50f28783244..9ffd6952696 100644 --- a/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/L1TopoAlgorithms/DeltaEtaIncl2.h +++ b/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/L1TopoAlgorithms/DeltaEtaIncl2.h @@ -28,10 +28,10 @@ namespace TCS { parType_t p_NumberLeading1 = { 0 }; parType_t p_NumberLeading2 = { 0 }; - parType_t p_DeltaEtaMin[3] = {0, 0, 0}; - parType_t p_DeltaEtaMax[3] = {0, 0, 0}; - parType_t p_MinET1 = { 0 }; - parType_t p_MinET2 = { 0 }; + parType_t p_DeltaEtaMin[4] = {0, 0, 0,0}; + parType_t p_DeltaEtaMax[4] = {0, 0, 0,0}; + parType_t p_MinET1[4] = { 0,0,0,0 }; + parType_t p_MinET2[4] = { 0,0,0,0 }; }; diff --git a/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/L1TopoAlgorithms/DeltaRSqrIncl1.h b/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/L1TopoAlgorithms/DeltaRSqrIncl1.h index 37b27c8680c..ac83c800870 100644 --- a/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/L1TopoAlgorithms/DeltaRSqrIncl1.h +++ b/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/L1TopoAlgorithms/DeltaRSqrIncl1.h @@ -32,7 +32,7 @@ namespace TCS { parType_t p_DeltaRMax[3] = {0, 0, 0}; parType_t p_MinET1 = { 0 }; parType_t p_MinET2 = { 0 }; - + parType_t p_OneBarrel = { 0 }; }; diff --git a/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/L1TopoAlgorithms/DisambiguationDRIncl2.h b/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/L1TopoAlgorithms/DisambiguationDRIncl2.h new file mode 100644 index 00000000000..7b46865febd --- /dev/null +++ b/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/L1TopoAlgorithms/DisambiguationDRIncl2.h @@ -0,0 +1,45 @@ +// DisambiguationDRIncl2.h +// TopoCore +// Created by Joerg Stelzer on 11/16/12. +// Copyright (c) 2012 Joerg Stelzer. All rights reserved. + +#ifndef __TopoCore__DisambiguationDRIncl2__ +#define __TopoCore__DisambiguationDRIncl2__ + +#include <iostream> +#include "L1TopoInterfaces/DecisionAlg.h" + +namespace TCS { + + class DisambiguationDRIncl2 : public DecisionAlg { + public: + DisambiguationDRIncl2(const std::string & name); + virtual ~DisambiguationDRIncl2(); + + virtual StatusCode initialize(); + + + virtual StatusCode process( const std::vector<TCS::TOBArray const *> & input, + const std::vector<TCS::TOBArray *> & output, + Decision & decison ); + + + private: + + parType_t p_NumberLeading1 = { 0 }; + parType_t p_NumberLeading2 = { 0 }; + parType_t p_MinET1 = { 0 }; + parType_t p_MinET2 = { 0 }; + parType_t p_EtaMin1 = { 0 }; + parType_t p_EtaMax1 = { 0 }; + parType_t p_EtaMin2 = { 0 }; + parType_t p_EtaMax2 = { 0 }; + parType_t p_DRCutMin = { 0 }; + parType_t p_DRCutMax = { 0 }; + + + }; + +} + +#endif diff --git a/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/L1TopoAlgorithms/DisambiguationDRIncl3.h b/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/L1TopoAlgorithms/DisambiguationDRIncl3.h index 53eea5eb86e..ef0e1669c13 100644 --- a/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/L1TopoAlgorithms/DisambiguationDRIncl3.h +++ b/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/L1TopoAlgorithms/DisambiguationDRIncl3.h @@ -28,6 +28,7 @@ namespace TCS { parType_t p_NumberLeading1 = { 0 }; parType_t p_NumberLeading2 = { 0 }; + parType_t p_NumberLeading3 = { 0 }; parType_t p_DisambDR[2] = {0, 0}; parType_t p_MinET1 = { 0 }; parType_t p_MinET2 = { 0 }; diff --git a/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/L1TopoAlgorithms/DisambiguationDetaDPhiIncl3.h b/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/L1TopoAlgorithms/DisambiguationDetaDPhiIncl3.h new file mode 100644 index 00000000000..2e2ee8d5a9f --- /dev/null +++ b/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/L1TopoAlgorithms/DisambiguationDetaDPhiIncl3.h @@ -0,0 +1,52 @@ +// DisambiguationDetaDPhiIncl3.h +// TopoCore +// Created by Joerg Stelzer on 11/16/12. +// Copyright (c) 2012 Joerg Stelzer. All rights reserved. + +#ifndef __TopoCore__DisambiguationDetaDPhiIncl3__ +#define __TopoCore__DisambiguationDetaDPhiIncl3__ + +#include <iostream> +#include "L1TopoInterfaces/DecisionAlg.h" + +namespace TCS { + + class DisambiguationDetaDPhiIncl3 : public DecisionAlg { + public: + DisambiguationDetaDPhiIncl3(const std::string & name); + virtual ~DisambiguationDetaDPhiIncl3(); + + virtual StatusCode initialize(); + + + virtual StatusCode process( const std::vector<TCS::TOBArray const *> & input, + const std::vector<TCS::TOBArray *> & output, + Decision & decison ); + + + private: + + parType_t p_NumberLeading1 = { 0 }; + parType_t p_NumberLeading2 = { 0 }; + parType_t p_NumberLeading3 = { 0 }; + parType_t p_DisambDR[2] = {0, 0}; + parType_t p_MinET1 = { 0 }; + parType_t p_MinET2 = { 0 }; + parType_t p_MinET3 = { 0 }; + parType_t p_EtaMin1 = { 0 }; + parType_t p_EtaMax1 = { 0 }; + parType_t p_EtaMin2 = { 0 }; + parType_t p_EtaMax2 = { 0 }; + parType_t p_EtaMin3 = { 0 }; + parType_t p_EtaMax3 = { 0 }; + parType_t p_DeltaPhiMin = { 0 }; + parType_t p_DeltaPhiMax = { 0 }; + parType_t p_DeltaEtaMin = { 0 }; + parType_t p_DeltaEtaMax = { 0 }; + + + }; + +} + +#endif diff --git a/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/L1TopoAlgorithms/DisambiguationIncl3.h b/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/L1TopoAlgorithms/DisambiguationIncl3.h index f39eaad4afc..0cbba74bd4b 100644 --- a/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/L1TopoAlgorithms/DisambiguationIncl3.h +++ b/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/L1TopoAlgorithms/DisambiguationIncl3.h @@ -28,6 +28,7 @@ namespace TCS { parType_t p_NumberLeading1 = { 0 }; parType_t p_NumberLeading2 = { 0 }; + parType_t p_NumberLeading3 = { 0 }; parType_t p_DisambDR[2] = {0, 0}; parType_t p_MinET1 = { 0 }; parType_t p_MinET2 = { 0 }; diff --git a/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/L1TopoAlgorithms/InvariantMassInclusive1.h b/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/L1TopoAlgorithms/InvariantMassInclusive1.h index c9c34ea5382..41ad161458c 100644 --- a/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/L1TopoAlgorithms/InvariantMassInclusive1.h +++ b/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/L1TopoAlgorithms/InvariantMassInclusive1.h @@ -28,10 +28,10 @@ namespace TCS { parType_t p_NumberLeading1 = { 0 }; parType_t p_NumberLeading2 = { 0 }; - parType_t p_InvMassMin[3] = {0, 0, 0}; - parType_t p_InvMassMax[3] = {0, 0, 0}; - parType_t p_MinET1 = { 0 }; - parType_t p_MinET2 = { 0 }; + parType_t p_InvMassMin[6] = {0, 0, 0,0,0,0}; + parType_t p_InvMassMax[6] = {0, 0, 0,0,0,0}; + parType_t p_MinET1[4] = { 0 ,0,0,0}; + parType_t p_MinET2[4] = { 0 ,0,0,0}; }; diff --git a/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/L1TopoAlgorithms/InvariantMassInclusive2.h b/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/L1TopoAlgorithms/InvariantMassInclusive2.h index ad60e8894d4..a36016212a3 100644 --- a/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/L1TopoAlgorithms/InvariantMassInclusive2.h +++ b/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/L1TopoAlgorithms/InvariantMassInclusive2.h @@ -28,10 +28,10 @@ namespace TCS { parType_t p_NumberLeading1 = { 0 }; parType_t p_NumberLeading2 = { 0 }; - parType_t p_InvMassMin[3] = {0, 0, 0}; - parType_t p_InvMassMax[3] = {0, 0, 0}; - parType_t p_MinET1 = { 0 }; - parType_t p_MinET2 = { 0 }; + parType_t p_InvMassMin[6] = {0, 0, 0,0,0,0}; + parType_t p_InvMassMax[6] = {0, 0, 0,0,0,0}; + parType_t p_MinET1[6] = { 0,0,0,0,0,0 }; + parType_t p_MinET2[6] = { 0,0,0,0,0,0 }; }; diff --git a/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/L1TopoAlgorithms/JetHT.h b/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/L1TopoAlgorithms/JetHT.h index d07a1e74530..07ac34be33b 100644 --- a/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/L1TopoAlgorithms/JetHT.h +++ b/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/L1TopoAlgorithms/JetHT.h @@ -29,7 +29,7 @@ namespace TCS { parType_t p_MinET = { 0 }; parType_t p_EtaMin = { 0 }; parType_t p_EtaMax = { 49 }; - parType_t p_HT[2] = { 0 , 0 }; + parType_t p_HT[6] = { 0 , 0,0,0,0,0 }; }; diff --git a/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/L1TopoAlgorithms/RatioSum.h b/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/L1TopoAlgorithms/RatioSum.h index fc7b678f55b..0fa0686a926 100644 --- a/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/L1TopoAlgorithms/RatioSum.h +++ b/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/L1TopoAlgorithms/RatioSum.h @@ -26,6 +26,7 @@ namespace TCS { private: parType_t p_NumberLeading1 = { 0 }; + parType_t p_NumberLeading2 = { 0 }; parType_t p_MinET1 = { 0 }; parType_t p_EtaMin1 = { 0 }; parType_t p_EtaMax1 = { 49 }; diff --git a/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/Root/DeltaEtaIncl1.cxx b/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/Root/DeltaEtaIncl1.cxx index 66823dc876c..d5cc21d5a65 100644 --- a/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/Root/DeltaEtaIncl1.cxx +++ b/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/Root/DeltaEtaIncl1.cxx @@ -35,12 +35,27 @@ namespace { TCS::DeltaEtaIncl1::DeltaEtaIncl1(const std::string & name) : DecisionAlg(name) { defineParameter("InputWidth", 0); - defineParameter("NumResultBits", 1); - defineParameter("MinEt1",0); - defineParameter("MinEt2",0); + defineParameter("MaxTob", 0); + defineParameter("NumResultBits", 4); + defineParameter("MinEt1",0,0); + defineParameter("MinEt2",0,0); + defineParameter("MinEt1",0,1); + defineParameter("MinEt2",0,1); + defineParameter("MinEt1",0,2); + defineParameter("MinEt2",0,2); + defineParameter("MinEt1",0,3); + defineParameter("MinEt2",0,3); + defineParameter("MinDeltaEta", 0, 0); defineParameter("MaxDeltaEta", 127, 0); - setNumberOutputBits(1); + defineParameter("MinDeltaEta", 0, 1); + defineParameter("MaxDeltaEta", 127, 1); + defineParameter("MinDeltaEta", 0, 2); + defineParameter("MaxDeltaEta", 127, 2); + defineParameter("MinDeltaEta", 0, 3); + defineParameter("MaxDeltaEta", 127, 3); + + setNumberOutputBits(4); } TCS::DeltaEtaIncl1::~DeltaEtaIncl1(){} @@ -48,22 +63,31 @@ TCS::DeltaEtaIncl1::~DeltaEtaIncl1(){} TCS::StatusCode TCS::DeltaEtaIncl1::initialize() { - p_NumberLeading1 = parameter("InputWidth").value(); - p_NumberLeading2 = parameter("InputWidth").value(); - for(int i=0; i<1; ++i) { + + if(parameter("MaxTob").value() > 0) { + p_NumberLeading1 = parameter("MaxTob").value(); + p_NumberLeading2 = parameter("MaxTob").value(); + } else { + p_NumberLeading1 = parameter("InputWidth").value(); + p_NumberLeading2 = parameter("InputWidth").value(); + } + + for(unsigned int i=0; i<numberOutputBits(); ++i) { p_DeltaEtaMin[i] = parameter("MinDeltaEta", i).value(); p_DeltaEtaMax[i] = parameter("MaxDeltaEta", i).value(); + + p_MinET1[i] = parameter("MinEt1",i).value(); + p_MinET2[i] = parameter("MinEt2",i).value(); } - p_MinET1 = parameter("MinEt1").value(); - p_MinET2 = parameter("MinEt2").value(); - TRG_MSG_INFO("NumberLeading1 : " << p_NumberLeading1); // note that the reading of generic parameters doesn't work yet TRG_MSG_INFO("NumberLeading2 : " << p_NumberLeading2); - TRG_MSG_INFO("DeltaEtaMin0 : " << p_DeltaEtaMin[0]); - TRG_MSG_INFO("DeltaEtaMax0 : " << p_DeltaEtaMax[0]); - TRG_MSG_INFO("MinET1 : " << p_MinET1); - TRG_MSG_INFO("MinET2 : " << p_MinET2); + for(unsigned int i=0; i<numberOutputBits(); ++i) { + TRG_MSG_INFO("DeltaEtaMin0 : " << p_DeltaEtaMin[i]); + TRG_MSG_INFO("DeltaEtaMax0 : " << p_DeltaEtaMax[i]); + TRG_MSG_INFO("MinET1 : " << p_MinET1[i]); + TRG_MSG_INFO("MinET2 : " << p_MinET2[i]); + } TRG_MSG_INFO("number output : " << numberOutputBits()); return StatusCode::SUCCESS; @@ -84,20 +108,24 @@ TCS::DeltaEtaIncl1::process( const std::vector<TCS::TOBArray const *> & input, unsigned int nLeading = p_NumberLeading1; unsigned int nLeading2 = p_NumberLeading2; - for( TOBArray::const_iterator tob1 = input[0]->begin(); + + for( TOBArray::const_iterator tob1 = input[0]->begin(); tob1 != input[0]->end() && distance( input[0]->begin(), tob1) < nLeading; ++tob1) { - if( parType_t((*tob1)->Et()) <= p_MinET1 ) continue; // ET cut TCS::TOBArray::const_iterator tob2 = tob1; ++tob2; for( ; tob2 != input[0]->end() && distance( input[0]->begin(), tob2) < nLeading2; ++tob2) { - if( parType_t((*tob2)->Et()) <= p_MinET2) continue; // ET cut + bool accept[4]; + for(unsigned int i=0; i < numberOutputBits(); ++i) { + if( parType_t((*tob1)->Et()) <= min(p_MinET1[i],p_MinET2[i])) continue; // ET cut + if( parType_t((*tob2)->Et()) <= min(p_MinET1[i],p_MinET2[i])) continue; // ET cut + if( (parType_t((*tob1)->Et()) <= max(p_MinET1[i],p_MinET2[i])) && (parType_t((*tob2)->Et()) <= max(p_MinET1[i],p_MinET2[i]))) continue; // DeltaEta cuts unsigned int deltaEta = calcDeltaEta( *tob1, *tob2 ); @@ -105,19 +133,18 @@ TCS::DeltaEtaIncl1::process( const std::vector<TCS::TOBArray const *> & input, msgss << "Combination : " << distance( input[0]->begin(), tob1) << " x " << distance( input[0]->begin(), tob2) << " eta=" << (*tob1)->eta() << " , eta=" << (*tob2)->eta() << ", DeltaEta = " << deltaEta << " -> "; - bool accept[1]; - for(unsigned int i=0; i < numberOutputBits(); ++i) { - accept[i] = deltaEta >= p_DeltaEtaMin[i] && deltaEta <= p_DeltaEtaMax[i]; - if( accept[i] ) { + + accept[i] = deltaEta >= p_DeltaEtaMin[i] && deltaEta <= p_DeltaEtaMax[i]; + if( accept[i] ) { decison.setBit(i, true); output[i]->push_back( TCS::CompositeTOB(*tob1, *tob2) ); - } - msgss << (accept[i]?"pass":"fail") << "|"; } - TRG_MSG_DEBUG(msgss.str()); - } + msgss << (accept[i]?"pass":"fail") << "|"; + + TRG_MSG_DEBUG(msgss.str()); + } } - + } } else { diff --git a/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/Root/DeltaEtaIncl2.cxx b/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/Root/DeltaEtaIncl2.cxx index eb9369843e1..ce4ba5f2749 100644 --- a/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/Root/DeltaEtaIncl2.cxx +++ b/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/Root/DeltaEtaIncl2.cxx @@ -36,12 +36,27 @@ TCS::DeltaEtaIncl2::DeltaEtaIncl2(const std::string & name) : DecisionAlg(name) { defineParameter("InputWidth1", 0); defineParameter("InputWidth2", 0); - defineParameter("NumResultBits", 1); - defineParameter("MinEt1",0); - defineParameter("MinEt2",0); + defineParameter("MaxTob1", 0); + defineParameter("MaxTob2", 0); + defineParameter("NumResultBits", 4); + defineParameter("MinEt1",0,0); + defineParameter("MinEt2",0,0); + defineParameter("MinEt1",0,1); + defineParameter("MinEt2",0,1); + defineParameter("MinEt1",0,2); + defineParameter("MinEt2",0,2); + defineParameter("MinEt1",0,3); + defineParameter("MinEt2",0,3); defineParameter("MinDeltaEta", 0, 0); defineParameter("MaxDeltaEta", 127, 0); - setNumberOutputBits(1); + defineParameter("MinDeltaEta", 0, 1); + defineParameter("MaxDeltaEta", 127, 1); + defineParameter("MinDeltaEta", 0, 2); + defineParameter("MaxDeltaEta", 127, 2); + defineParameter("MinDeltaEta", 0, 3); + defineParameter("MaxDeltaEta", 127, 3); + + setNumberOutputBits(4); } TCS::DeltaEtaIncl2::~DeltaEtaIncl2(){} @@ -51,20 +66,25 @@ TCS::StatusCode TCS::DeltaEtaIncl2::initialize() { p_NumberLeading1 = parameter("InputWidth1").value(); p_NumberLeading2 = parameter("InputWidth2").value(); - for(int i=0; i<1; ++i) { + if(parameter("MaxTob1").value() > 0) p_NumberLeading1 = parameter("MaxTob1").value(); + if(parameter("MaxTob2").value() > 0) p_NumberLeading2 = parameter("MaxTob2").value(); + + for(unsigned int i=0; i<numberOutputBits(); ++i) { p_DeltaEtaMin[i] = parameter("MinDeltaEta", i).value(); p_DeltaEtaMax[i] = parameter("MaxDeltaEta", i).value(); - } - p_MinET1 = parameter("MinEt1").value(); - p_MinET2 = parameter("MinEt2").value(); - + + p_MinET1[i] = parameter("MinEt1",i).value(); + p_MinET2[i] = parameter("MinEt2",i).value(); + } TRG_MSG_INFO("NumberLeading1 : " << p_NumberLeading1); // note that the reading of generic parameters doesn't work yet TRG_MSG_INFO("NumberLeading2 : " << p_NumberLeading2); - TRG_MSG_INFO("DeltaEtaMin0 : " << p_DeltaEtaMin[0]); - TRG_MSG_INFO("DeltaEtaMax0 : " << p_DeltaEtaMax[0]); - TRG_MSG_INFO("MinET1 : " << p_MinET1); - TRG_MSG_INFO("MinET2 : " << p_MinET2); + for(unsigned int i=0; i<numberOutputBits(); ++i) { + TRG_MSG_INFO("DeltaEtaMin0 : " << p_DeltaEtaMin[i]); + TRG_MSG_INFO("DeltaEtaMax0 : " << p_DeltaEtaMax[i]); + TRG_MSG_INFO("MinET1 : " << p_MinET1[i]); + TRG_MSG_INFO("MinET2 : " << p_MinET2[i]); + } TRG_MSG_INFO("number output : " << numberOutputBits()); return StatusCode::SUCCESS; @@ -86,28 +106,28 @@ TCS::DeltaEtaIncl2::process( const std::vector<TCS::TOBArray const *> & input, ++tob1) { - if( parType_t((*tob1)->Et()) <= p_MinET1) continue; // ET cut for( TCS::TOBArray::const_iterator tob2 = input[1]->begin(); tob2 != input[1]->end() && distance(input[1]->begin(), tob2) <= p_NumberLeading2; ++tob2) { - if( parType_t((*tob2)->Et()) <= p_MinET2) continue; // ET cut // test DeltaEtaMin, DeltaEtaMax unsigned int deltaEta = calcDeltaEta( *tob1, *tob2 ); - bool accept[1]; - for(unsigned int i=0; i<1; ++i) { + bool accept[4]; + for(unsigned int i=0; i<numberOutputBits(); ++i) { + if( parType_t((*tob1)->Et()) <= p_MinET1[i]) continue; // ET cut + if( parType_t((*tob2)->Et()) <= p_MinET2[i]) continue; // ET cut accept[i] = deltaEta >= p_DeltaEtaMin[i] && deltaEta <= p_DeltaEtaMax[i]; if( accept[i] ) { decison.setBit(i, true); output[i]->push_back(TCS::CompositeTOB(*tob1, *tob2)); } - } - TRG_MSG_DEBUG("DeltaEta = " << deltaEta << " -> " - << (accept[0]?"pass":"fail")); - + + TRG_MSG_DEBUG("DeltaEta = " << deltaEta << " -> accept bit " << i << " -> " + << (accept[i]?"pass":"fail")); + } } } diff --git a/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/Root/DeltaPhiIncl1.cxx b/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/Root/DeltaPhiIncl1.cxx index 40467b0dd90..61b72a00562 100644 --- a/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/Root/DeltaPhiIncl1.cxx +++ b/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/Root/DeltaPhiIncl1.cxx @@ -34,6 +34,7 @@ namespace { TCS::DeltaPhiIncl1::DeltaPhiIncl1(const std::string & name) : DecisionAlg(name) { defineParameter("InputWidth", 0); + defineParameter("MaxTob", 0); defineParameter("NumResultBits", 1); defineParameter("MinEt1",0); defineParameter("MinEt2",0); @@ -47,8 +48,15 @@ TCS::DeltaPhiIncl1::~DeltaPhiIncl1(){} TCS::StatusCode TCS::DeltaPhiIncl1::initialize() { - p_NumberLeading1 = parameter("InputWidth").value(); - p_NumberLeading2 = parameter("InputWidth").value(); + + if(parameter("MaxTob").value() > 0) { + p_NumberLeading1 = parameter("MaxTob").value(); + p_NumberLeading2 = parameter("MaxTob").value(); + } else { + p_NumberLeading1 = parameter("InputWidth").value(); + p_NumberLeading2 = parameter("InputWidth").value(); + } + for(int i=0; i<1; ++i) { p_DeltaPhiMin[i] = parameter("MinDeltaPhi", i).value(); p_DeltaPhiMax[i] = parameter("MaxDeltaPhi", i).value(); @@ -87,14 +95,15 @@ TCS::DeltaPhiIncl1::process( const std::vector<TCS::TOBArray const *> & input, ++tob1) { - if( parType_t((*tob1)->Et()) <= p_MinET1 ) continue; // ET cut - + if( parType_t((*tob1)->Et()) <= min(p_MinET1,p_MinET2)) continue; // ET cut + TCS::TOBArray::const_iterator tob2 = tob1; ++tob2; for( ; tob2 != input[0]->end() && distance( input[0]->begin(), tob2) < nLeading2; ++tob2) { - if( parType_t((*tob2)->Et()) <= p_MinET2) continue; // ET cut + if( parType_t((*tob2)->Et()) <= min(p_MinET1,p_MinET2)) continue; // ET cut + if( (parType_t((*tob1)->Et()) <= max(p_MinET1,p_MinET2)) && (parType_t((*tob2)->Et()) <= max(p_MinET1,p_MinET2))) continue; // DeltaPhi cuts unsigned int deltaPhi = calcDeltaPhi( *tob1, *tob2 ); diff --git a/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/Root/DeltaPhiIncl2.cxx b/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/Root/DeltaPhiIncl2.cxx index 97a26a64103..f10cbcb79a4 100644 --- a/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/Root/DeltaPhiIncl2.cxx +++ b/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/Root/DeltaPhiIncl2.cxx @@ -33,8 +33,10 @@ namespace { TCS::DeltaPhiIncl2::DeltaPhiIncl2(const std::string & name) : DecisionAlg(name) { - defineParameter("InputWidth1", 0); - defineParameter("InputWidth2", 0); + defineParameter("InputWidth1", 8); + defineParameter("InputWidth2", 8); + defineParameter("MaxTob1", 0); + defineParameter("MaxTob2", 0); defineParameter("NumResultBits", 1); defineParameter("MinEt1",0); defineParameter("MinEt2",0); @@ -50,6 +52,8 @@ TCS::StatusCode TCS::DeltaPhiIncl2::initialize() { p_NumberLeading1 = parameter("InputWidth1").value(); p_NumberLeading2 = parameter("InputWidth2").value(); + if(parameter("MaxTob1").value() > 0) p_NumberLeading1 = parameter("MaxTob1").value(); + if(parameter("MaxTob2").value() > 0) p_NumberLeading2 = parameter("MaxTob2").value(); for(int i=0; i<1; ++i) { p_DeltaPhiMin[i] = parameter("MinDeltaPhi", i).value(); p_DeltaPhiMax[i] = parameter("MaxDeltaPhi", i).value(); diff --git a/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/Root/DeltaRApproxBoxCutIncl1.cxx b/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/Root/DeltaRApproxBoxCutIncl1.cxx index 2752c6b9a64..6db94b67d36 100644 --- a/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/Root/DeltaRApproxBoxCutIncl1.cxx +++ b/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/Root/DeltaRApproxBoxCutIncl1.cxx @@ -39,8 +39,7 @@ namespace { TCS::DeltaRApproxBoxCutIncl1::DeltaRApproxBoxCutIncl1(const std::string & name) : DecisionAlg(name) { - defineParameter("NumberLeading1", 3); - defineParameter("NumberLeading2", 3); + defineParameter("InputWidth", 3); defineParameter("NumResultBits", 3); defineParameter("DeltaPhiMin", 0, 0); defineParameter("DeltaPhiMax", 63, 0); @@ -64,8 +63,8 @@ TCS::DeltaRApproxBoxCutIncl1::~DeltaRApproxBoxCutIncl1(){} TCS::StatusCode TCS::DeltaRApproxBoxCutIncl1::initialize() { - p_NumberLeading1 = parameter("NumberLeading1").value(); - p_NumberLeading2 = parameter("NumberLeading2").value(); + p_NumberLeading1 = parameter("InputWidth").value(); + p_NumberLeading2 = parameter("InputWidth").value(); for(int i=0; i<3; ++i) { p_DeltaPhiMin[i] = parameter("DeltaPhiMin", i).value(); p_DeltaPhiMax[i] = parameter("DeltaPhiMax", i).value(); @@ -116,14 +115,15 @@ TCS::DeltaRApproxBoxCutIncl1::process( const std::vector<TCS::TOBArray const *> ++tob1) { - if( parType_t((*tob1)->Et()) <= p_MinET1 ) continue; // ET cut - + if( parType_t((*tob1)->Et()) <= min(p_MinET1,p_MinET2)) continue; // ET cut + TCS::TOBArray::const_iterator tob2 = tob1; ++tob2; for( ; tob2 != input[0]->end() && distance( input[0]->begin(), tob2) < p_NumberLeading2; ++tob2) { - if( parType_t((*tob2)->Et()) <= p_MinET2) continue; // ET cut + if( parType_t((*tob2)->Et()) <= min(p_MinET1,p_MinET2)) continue; // ET cut + if( (parType_t((*tob1)->Et()) <= max(p_MinET1,p_MinET2)) && (parType_t((*tob2)->Et()) <= max(p_MinET1,p_MinET2))) continue; // DeltaPhi cuts unsigned int deltaPhi = calcDeltaPhi( *tob1, *tob2 ); diff --git a/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/Root/DeltaRApproxBoxCutIncl2.cxx b/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/Root/DeltaRApproxBoxCutIncl2.cxx index f71db3ed766..b848b1aab4f 100644 --- a/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/Root/DeltaRApproxBoxCutIncl2.cxx +++ b/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/Root/DeltaRApproxBoxCutIncl2.cxx @@ -38,8 +38,8 @@ namespace { TCS::DeltaRApproxBoxCutIncl2::DeltaRApproxBoxCutIncl2(const std::string & name) : DecisionAlg(name) { - defineParameter("NumberLeading1", 3); - defineParameter("NumberLeading2", 3); + defineParameter("InputWidth1", 5); + defineParameter("InputWidth2", 3); defineParameter("NumResultBits", 3); defineParameter("DeltaPhiMin", 0, 0); defineParameter("DeltaPhiMax", 63, 0); @@ -63,8 +63,8 @@ TCS::DeltaRApproxBoxCutIncl2::~DeltaRApproxBoxCutIncl2(){} TCS::StatusCode TCS::DeltaRApproxBoxCutIncl2::initialize() { - p_NumberLeading1 = parameter("NumberLeading1").value(); - p_NumberLeading2 = parameter("NumberLeading2").value(); + p_NumberLeading1 = parameter("InputWidth1").value(); + p_NumberLeading2 = parameter("InputWidth2").value(); for(int i=0; i<3; ++i) { p_DeltaPhiMin[i] = parameter("DeltaPhiMin", i).value(); p_DeltaPhiMax[i] = parameter("DeltaPhiMax", i).value(); diff --git a/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/Root/DeltaRSqrIncl1.cxx b/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/Root/DeltaRSqrIncl1.cxx index fb12d9af115..d35e832964d 100644 --- a/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/Root/DeltaRSqrIncl1.cxx +++ b/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/Root/DeltaRSqrIncl1.cxx @@ -40,9 +40,10 @@ namespace { TCS::DeltaRSqrIncl1::DeltaRSqrIncl1(const std::string & name) : DecisionAlg(name) { - defineParameter("NumberLeading1", 3); - defineParameter("NumberLeading2", 3); + defineParameter("InputWidth", 9); + defineParameter("MaxTob", 0); defineParameter("NumResultBits", 3); + defineParameter("RequireOneBarrel", 0); defineParameter("DeltaRMin", 0, 0); defineParameter("DeltaRMax", 0, 0); defineParameter("DeltaRMin", 0, 1); @@ -59,8 +60,15 @@ TCS::DeltaRSqrIncl1::~DeltaRSqrIncl1(){} TCS::StatusCode TCS::DeltaRSqrIncl1::initialize() { - p_NumberLeading1 = parameter("NumberLeading1").value(); - p_NumberLeading2 = parameter("NumberLeading2").value(); + if(parameter("MaxTob").value() > 0) { + p_NumberLeading1 = parameter("MaxTob").value(); + p_NumberLeading2 = parameter("MaxTob").value(); + } else { + p_NumberLeading1 = parameter("InputWidth").value(); + p_NumberLeading2 = parameter("InputWidth").value(); + } + p_OneBarrel = parameter("RequireOneBarrel").value(); + for(int i=0; i<3; ++i) { p_DeltaRMin[i] = parameter("DeltaRMin", i).value(); p_DeltaRMax[i] = parameter("DeltaRMax", i).value(); @@ -70,6 +78,8 @@ TCS::DeltaRSqrIncl1::initialize() { TRG_MSG_INFO("NumberLeading1 : " << p_NumberLeading1); TRG_MSG_INFO("NumberLeading2 : " << p_NumberLeading2); + TRG_MSG_INFO("RequireOneBarrel : " << p_OneBarrel); + for(int i=0; i<3; ++i) { TRG_MSG_INFO("DeltaRMin : " << p_DeltaRMin[i]); TRG_MSG_INFO("DeltaRMax : " << p_DeltaRMax[i]); @@ -99,15 +109,19 @@ TCS::DeltaRSqrIncl1::process( const std::vector<TCS::TOBArray const *> & input, ++tob1) { - if( parType_t((*tob1)->Et()) <= p_MinET1 ) continue; // ET cut + if( parType_t((*tob1)->Et()) <= min(p_MinET1,p_MinET2)) continue; // ET cut TCS::TOBArray::const_iterator tob2 = tob1; ++tob2; for( ; tob2 != input[0]->end() && distance( input[0]->begin(), tob2) < p_NumberLeading2; ++tob2) { - if( parType_t((*tob2)->Et()) <= p_MinET2) continue; // ET cut + if( parType_t((*tob2)->Et()) <= min(p_MinET1,p_MinET2)) continue; // ET cut + if( (parType_t((*tob1)->Et()) <= max(p_MinET1,p_MinET2)) && (parType_t((*tob2)->Et()) <= max(p_MinET1,p_MinET2))) continue; + + // OneBarrel + if (p_OneBarrel && parType_t(abs((*tob1)->eta())) > 10 && parType_t(abs((*tob2)->eta())) > 10 ) continue; // DeltaR2 cuts unsigned int deltaR2 = calcDeltaR2( *tob1, *tob2 ); diff --git a/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/Root/DeltaRSqrIncl2.cxx b/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/Root/DeltaRSqrIncl2.cxx index 7967fff72ca..661d19759d9 100644 --- a/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/Root/DeltaRSqrIncl2.cxx +++ b/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/Root/DeltaRSqrIncl2.cxx @@ -40,8 +40,10 @@ namespace { TCS::DeltaRSqrIncl2::DeltaRSqrIncl2(const std::string & name) : DecisionAlg(name) { - defineParameter("NumberLeading1", 3); - defineParameter("NumberLeading2", 3); + defineParameter("InputWidth1", 9); + defineParameter("InputWidth2", 9); + defineParameter("MaxTob1", 0); + defineParameter("MaxTob2", 0); defineParameter("NumResultBits", 3); defineParameter("DeltaRMin", 0, 0); defineParameter("DeltaRMax", 0, 0); @@ -59,8 +61,12 @@ TCS::DeltaRSqrIncl2::~DeltaRSqrIncl2(){} TCS::StatusCode TCS::DeltaRSqrIncl2::initialize() { - p_NumberLeading1 = parameter("NumberLeading1").value(); - p_NumberLeading2 = parameter("NumberLeading2").value(); + + p_NumberLeading1 = parameter("InputWidth1").value(); + p_NumberLeading2 = parameter("InputWidth2").value(); + if(parameter("MaxTob1").value() > 0) p_NumberLeading1 = parameter("MaxTob1").value(); + if(parameter("MaxTob2").value() > 0) p_NumberLeading2 = parameter("MaxTob2").value(); + for(int i=0; i<3; ++i) { p_DeltaRMin[i] = parameter("DeltaRMin", i).value(); p_DeltaRMax[i] = parameter("DeltaRMax", i).value(); @@ -98,13 +104,13 @@ TCS::DeltaRSqrIncl2::process( const std::vector<TCS::TOBArray const *> & input, ++tob1) { - if( parType_t((*tob1)->Et()) < p_MinET1) continue; // ET cut + if( parType_t((*tob1)->Et()) <= p_MinET1) continue; // ET cut for( TCS::TOBArray::const_iterator tob2 = input[1]->begin(); tob2 != input[1]->end() && distance(input[1]->begin(), tob2) < p_NumberLeading2; ++tob2) { - if( parType_t((*tob2)->Et()) < p_MinET2) continue; // ET cut + if( parType_t((*tob2)->Et()) <= p_MinET2) continue; // ET cut // test DeltaR2Min, DeltaR2Max unsigned int deltaR2 = calcDeltaR2( *tob1, *tob2 ); diff --git a/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/Root/DisambiguationDRIncl2.cxx b/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/Root/DisambiguationDRIncl2.cxx new file mode 100644 index 00000000000..a647a181bc6 --- /dev/null +++ b/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/Root/DisambiguationDRIncl2.cxx @@ -0,0 +1,160 @@ +/********************************* + * DisambiguationDRIncl2.cpp + * Created by Joerg Stelzer / V Sorin on 9/16/14. + * Copyright (c) 2012 Joerg Stelzer. All rights reserved. + * + * @brief algorithm calculates the dR distance between objects in two lists, + * but minimum value uses > instead of >= as dr algos + * + * @param NumberLeading +**********************************/ + +#include <cmath> + +#include "L1TopoAlgorithms/DisambiguationDRIncl2.h" +#include "L1TopoCommon/Exception.h" +#include "L1TopoInterfaces/Decision.h" + +REGISTER_ALG_TCS(DisambiguationDRIncl2) + +using namespace std; + +// not the best solution but we will move to athena where this comes for free +#define LOG cout << "TCS::DisambiguationDRIncl2: " + + + + +namespace { + unsigned int + calcDeltaR2(const TCS::GenericTOB* tob1, const TCS::GenericTOB* tob2) { + double deta = ( tob1->etaDouble() - tob2->etaDouble() ); + double dphi = fabs( tob1->phiDouble() - tob2->phiDouble() ); + if(dphi>M_PI) + dphi = 2*M_PI - dphi; + + return round ( 100 * ((dphi)*(dphi) + (deta)*(deta) )) ; + + } +} + + +TCS::DisambiguationDRIncl2::DisambiguationDRIncl2(const std::string & name) : DecisionAlg(name) +{ + defineParameter("InputWidth1", 9); + defineParameter("InputWidth2", 9); + defineParameter("MaxTob1", 0); + defineParameter("MaxTob2", 0); + defineParameter("NumResultBits", 2); + defineParameter("MinET1",1); + defineParameter("MinET2",1); + defineParameter("MinET3",1); + defineParameter("EtaMin1",0); + defineParameter("EtaMax1",49); + defineParameter("EtaMin2",0); + defineParameter("EtaMax2",49); + defineParameter("EtaMin3",0); + defineParameter("EtaMax3",49); + defineParameter("DRCutMin",0); + defineParameter("DRCutMax",0); + defineParameter("DisambDR",0,0); + defineParameter("DisambDR",0,1); + setNumberOutputBits(2); +} + +TCS::DisambiguationDRIncl2::~DisambiguationDRIncl2(){} + + +TCS::StatusCode +TCS::DisambiguationDRIncl2::initialize() { + p_NumberLeading1 = parameter("InputWidth1").value(); + p_NumberLeading2 = parameter("InputWidth2").value(); + if(parameter("MaxTob1").value() > 0) p_NumberLeading1 = parameter("MaxTob1").value(); + if(parameter("MaxTob2").value() > 0) p_NumberLeading2 = parameter("MaxTob2").value(); + + + p_MinET1 = parameter("MinET1").value(); + p_MinET2 = parameter("MinET2").value(); + p_EtaMin1 = parameter("EtaMin1").value(); + p_EtaMax1 = parameter("EtaMax1").value(); + p_EtaMin2 = parameter("EtaMin2").value(); + p_EtaMax2 = parameter("EtaMax2").value(); + p_DRCutMin = parameter("DRCutMin").value(); + p_DRCutMax = parameter("DRCutMax").value(); + + + + + TRG_MSG_INFO("MinET1 : " << p_MinET1); + TRG_MSG_INFO("EtaMin1 : " << p_EtaMin1); + TRG_MSG_INFO("EtaMax1 : " << p_EtaMax1); + TRG_MSG_INFO("MinET2 : " << p_MinET2); + TRG_MSG_INFO("EtaMin2 : " << p_EtaMin2); + TRG_MSG_INFO("EtaMax2 : " << p_EtaMax2); + TRG_MSG_INFO("DRCutMin : " << p_DRCutMin); + TRG_MSG_INFO("DRCutMax : " << p_DRCutMax); + TRG_MSG_INFO("number output : " << numberOutputBits()); + + + return StatusCode::SUCCESS; +} + + + +TCS::StatusCode +TCS::DisambiguationDRIncl2::process( const std::vector<TCS::TOBArray const *> & input, + const std::vector<TCS::TOBArray *> & output, + Decision & decision ) +{ + + + if( input.size() == 2) { + + + for( TOBArray::const_iterator tob1 = input[0]->begin(); + tob1 != input[0]->end() && distance(input[0]->begin(), tob1) < p_NumberLeading1; + ++tob1) + { + + if( parType_t((*tob1)->Et()) <= p_MinET1) continue; // ET cut + if( parType_t(fabs((*tob1)->eta())) > p_EtaMax1 ) continue; // Eta cut + if( parType_t(fabs((*tob1)->eta())) < p_EtaMin1 ) continue; // Eta cut + + for( TCS::TOBArray::const_iterator tob2 = input[1]->begin(); + tob2 != input[1]->end() && distance(input[1]->begin(), tob2) < p_NumberLeading2; + ++tob2) { + + if( parType_t((*tob2)->Et()) <= p_MinET2) continue; // ET cut + if( parType_t(fabs((*tob2)->eta())) > p_EtaMax2 ) continue; // Eta cut + if( parType_t(fabs((*tob2)->eta())) < p_EtaMin2 ) continue; // Eta cut + + // test DeltaR2Min, DeltaR2Max + unsigned int deltaR2Cut = calcDeltaR2( *tob1, *tob2 ); + + + bool accept[3]; + for(unsigned int i=0; i<numberOutputBits(); ++i) { + accept[i] = deltaR2Cut > p_DRCutMin*p_DRCutMin && deltaR2Cut <= p_DRCutMax*p_DRCutMax ; + + if( accept[i] ) { + decision.setBit(i, true); + output[i]->push_back(TCS::CompositeTOB(*tob1, *tob2)); + } + TRG_MSG_DEBUG("Decision " << i << ": " << (accept[i]?"pass":"fail") << " deltaR = " << deltaR2Cut ); + + + } + + } + + + + } + + } else { + + TCS_EXCEPTION("DisambiguationDRIncl2 alg must have 2 inputs, but got " << input.size()); + + } + return TCS::StatusCode::SUCCESS; +} diff --git a/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/Root/DisambiguationDRIncl3.cxx b/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/Root/DisambiguationDRIncl3.cxx index a90c691d9d9..adde4720985 100644 --- a/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/Root/DisambiguationDRIncl3.cxx +++ b/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/Root/DisambiguationDRIncl3.cxx @@ -41,8 +41,12 @@ namespace { TCS::DisambiguationDRIncl3::DisambiguationDRIncl3(const std::string & name) : DecisionAlg(name) { - defineParameter("NumberLeading1", 3); - defineParameter("NumberLeading2", 3); + defineParameter("InputWidth1", 9); + defineParameter("InputWidth2", 9); + defineParameter("InputWidth3", 9); + defineParameter("MaxTob1", 0); + defineParameter("MaxTob2", 0); + defineParameter("MaxTob3", 0); defineParameter("NumResultBits", 2); defineParameter("MinET1",1); defineParameter("MinET2",1); @@ -65,8 +69,15 @@ TCS::DisambiguationDRIncl3::~DisambiguationDRIncl3(){} TCS::StatusCode TCS::DisambiguationDRIncl3::initialize() { - p_NumberLeading1 = parameter("NumberLeading1").value(); - p_NumberLeading2 = parameter("NumberLeading2").value(); + p_NumberLeading1 = parameter("InputWidth1").value(); + p_NumberLeading2 = parameter("InputWidth2").value(); + p_NumberLeading3 = parameter("InputWidth3").value(); + + if(parameter("MaxTob1").value() > 0) p_NumberLeading1 = parameter("MaxTob1").value(); + if(parameter("MaxTob2").value() > 0) p_NumberLeading2 = parameter("MaxTob2").value(); + if(parameter("MaxTob3").value() > 0) p_NumberLeading3 = parameter("MaxTob3").value(); + + p_MinET1 = parameter("MinET1").value(); p_MinET2 = parameter("MinET2").value(); p_MinET3 = parameter("MinET3").value(); diff --git a/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/Root/DisambiguationDetaDPhiIncl3.cxx b/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/Root/DisambiguationDetaDPhiIncl3.cxx new file mode 100644 index 00000000000..7cdf4465201 --- /dev/null +++ b/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/Root/DisambiguationDetaDPhiIncl3.cxx @@ -0,0 +1,216 @@ +/********************************* + * DisambiguationDetaDPhiIncl3.cpp + * Created by Joerg Stelzer / V Sorin on 9/16/14. + * Copyright (c) 2012 Joerg Stelzer. All rights reserved. + * + * @brief algorithm calculates the dR distance between objects in three lists, check EM vs TAU , if those not match + * check agains 3rd object, passed if no match with 3rd + * + * @param NumberLeading +**********************************/ + +#include <cmath> + +#include "L1TopoAlgorithms/DisambiguationDetaDPhiIncl3.h" +#include "L1TopoCommon/Exception.h" +#include "L1TopoInterfaces/Decision.h" + +REGISTER_ALG_TCS(DisambiguationDetaDPhiIncl3) + +using namespace std; + +// not the best solution but we will move to athena where this comes for free +#define LOG cout << "TCS::DisambiguationDetaDPhiIncl3: " + + + +namespace { + unsigned int + calcDeltaPhi(const TCS::GenericTOB* tob1, const TCS::GenericTOB* tob2) { + double dphi = fabs( tob1->phiDouble() - tob2->phiDouble() ); + if(dphi>M_PI) + dphi = 2*M_PI - dphi; + + return round( 10 * dphi ); + } + + unsigned int + calcDeltaEta(const TCS::GenericTOB* tob1, const TCS::GenericTOB* tob2) { + double deta = fabs( tob1->eta() - tob2->eta() ); + return deta; + } + + unsigned int + calcDeltaR2(const TCS::GenericTOB* tob1, const TCS::GenericTOB* tob2) { + double deta = ( tob1->etaDouble() - tob2->etaDouble() ); + double dphi = fabs( tob1->phiDouble() - tob2->phiDouble() ); + if(dphi>M_PI) + dphi = 2*M_PI - dphi; + + return round ( 100 * ((dphi)*(dphi) + (deta)*(deta) )) ; + + } + +} + + + +TCS::DisambiguationDetaDPhiIncl3::DisambiguationDetaDPhiIncl3(const std::string & name) : DecisionAlg(name) +{ + defineParameter("InputWidth1", 9); + defineParameter("InputWidth2", 9); + defineParameter("InputWidth3", 9); + defineParameter("MaxTob1", 0); + defineParameter("MaxTob2", 0); + defineParameter("MaxTob3", 0); + defineParameter("NumResultBits", 2); + defineParameter("MinET1",1); + defineParameter("MinET2",1); + defineParameter("MinET3",1); + defineParameter("EtaMin1",0); + defineParameter("EtaMax1",49); + defineParameter("EtaMin2",0); + defineParameter("EtaMax2",49); + defineParameter("EtaMin3",0); + defineParameter("EtaMax3",49); + defineParameter("DeltaPhiMin", 0); + defineParameter("DeltaPhiMax", 64); + defineParameter("DeltaEtaMin", 0); + defineParameter("DeltaEtaMax", 99); + defineParameter("DisambDR",0,0); + defineParameter("DisambDR",0,1); + setNumberOutputBits(2); +} + +TCS::DisambiguationDetaDPhiIncl3::~DisambiguationDetaDPhiIncl3(){} + + +TCS::StatusCode +TCS::DisambiguationDetaDPhiIncl3::initialize() { + + p_NumberLeading1 = parameter("InputWidth1").value(); + p_NumberLeading2 = parameter("InputWidth2").value(); + p_NumberLeading3 = parameter("InputWidth3").value(); + + if(parameter("MaxTob1").value() > 0) p_NumberLeading1 = parameter("MaxTob1").value(); + if(parameter("MaxTob2").value() > 0) p_NumberLeading2 = parameter("MaxTob2").value(); + if(parameter("MaxTob3").value() > 0) p_NumberLeading3 = parameter("MaxTob3").value(); + + + p_MinET1 = parameter("MinET1").value(); + p_MinET2 = parameter("MinET2").value(); + p_MinET3 = parameter("MinET3").value(); + p_EtaMin1 = parameter("EtaMin1").value(); + p_EtaMax1 = parameter("EtaMax1").value(); + p_EtaMin2 = parameter("EtaMin2").value(); + p_EtaMax2 = parameter("EtaMax2").value(); + p_EtaMin3 = parameter("EtaMin3").value(); + p_EtaMax3 = parameter("EtaMax3").value(); + p_DeltaPhiMin = parameter("DeltaPhiMin").value(); + p_DeltaPhiMax = parameter("DeltaPhiMax").value(); + p_DeltaEtaMin = parameter("DeltaEtaMin").value(); + p_DeltaEtaMax = parameter("DeltaEtaMax").value(); + + + for(int i=0; i<2; ++i) { + p_DisambDR[i] = parameter("DisambDR", i).value(); + } + + + + TRG_MSG_INFO("MinET1 : " << p_MinET1); + TRG_MSG_INFO("EtaMin1 : " << p_EtaMin1); + TRG_MSG_INFO("EtaMax1 : " << p_EtaMax1); + TRG_MSG_INFO("MinET2 : " << p_MinET2); + TRG_MSG_INFO("EtaMin2 : " << p_EtaMin2); + TRG_MSG_INFO("EtaMax2 : " << p_EtaMax2); + TRG_MSG_INFO("MinET3 : " << p_MinET3); + TRG_MSG_INFO("EtaMin3 : " << p_EtaMin3); + TRG_MSG_INFO("EtaMax3 : " << p_EtaMax3); + TRG_MSG_INFO("DisambDR0 : " << p_DisambDR[0]); + TRG_MSG_INFO("DisambDR1 : " << p_DisambDR[1]); + TRG_MSG_INFO("DeltaPhimin : " << p_DeltaPhiMin); + TRG_MSG_INFO("DeltaPhimin : " << p_DeltaPhiMax); + TRG_MSG_INFO("DeltaEtamin : " << p_DeltaEtaMin); + TRG_MSG_INFO("DeltaEtamin : " << p_DeltaEtaMax); + + TRG_MSG_INFO("number output : " << numberOutputBits()); + + + return StatusCode::SUCCESS; +} + + + +TCS::StatusCode +TCS::DisambiguationDetaDPhiIncl3::process( const std::vector<TCS::TOBArray const *> & input, + const std::vector<TCS::TOBArray *> & output, + Decision & decision ) +{ + + + if( input.size() == 3) { + + + for( TOBArray::const_iterator tob1 = input[0]->begin(); + tob1 != input[0]->end() && distance(input[0]->begin(), tob1) < p_NumberLeading1; + ++tob1) + { + + if( parType_t((*tob1)->Et()) <= p_MinET1) continue; // ET cut + if( parType_t(fabs((*tob1)->eta())) > p_EtaMax1 ) continue; // Eta cut + if( parType_t(fabs((*tob1)->eta())) < p_EtaMin1 ) continue; // Eta cut + + for( TCS::TOBArray::const_iterator tob2 = input[1]->begin(); + tob2 != input[1]->end() && distance(input[1]->begin(), tob2) < p_NumberLeading2; + ++tob2) { + + if( parType_t((*tob2)->Et()) <= p_MinET2) continue; // ET cut + if( parType_t(fabs((*tob2)->eta())) > p_EtaMax2 ) continue; // Eta cut + if( parType_t(fabs((*tob2)->eta())) < p_EtaMin2 ) continue; // Eta cut + + // DeltaPhi cuts + unsigned int deltaPhi = calcDeltaPhi( *tob1, *tob2 ); + // DeltaEta cuts + unsigned int deltaEta = calcDeltaEta( *tob1, *tob2 ); + + if(deltaPhi > p_DeltaPhiMax || deltaEta > p_DeltaEtaMax) continue; + if (deltaEta < p_DeltaEtaMin && deltaPhi < p_DeltaPhiMin ) continue; + + for( TCS::TOBArray::const_iterator tob3 = input[2]->begin(); + tob3 != input[2]->end() ; + ++tob3) { + + if( parType_t((*tob3)->Et()) <= p_MinET3) continue; // ET cut + if( parType_t(fabs((*tob3)->eta())) > p_EtaMax3 ) continue; // Eta cut + if( parType_t(fabs((*tob3)->eta())) < p_EtaMin3 ) continue; // Eta cut + + unsigned int deltaR13 = calcDeltaR2( *tob1, *tob3 ); + unsigned int deltaR23 = calcDeltaR2( *tob2, *tob3 ); + + bool accept[3]; + for(unsigned int i=0; i<numberOutputBits(); ++i) { + accept[i] = deltaR13 > p_DisambDR[i]*p_DisambDR[i] && deltaR23 > p_DisambDR[i]*p_DisambDR[i] ; + if( accept[i] ) { + decision.setBit(i, true); + output[i]->push_back(TCS::CompositeTOB(*tob1, *tob2)); + } + TRG_MSG_DEBUG("Decision " << i << ": " << (accept[i]?"pass":"fail") << " deltaR13 = " << deltaR13 << " deltaR23 = " << deltaR23); + + } + + } + + + + + } + } + + } else { + + TCS_EXCEPTION("DisambiguationDetaDPhiIncl3 alg must have 3 inputs, but got " << input.size()); + + } + return TCS::StatusCode::SUCCESS; +} diff --git a/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/Root/DisambiguationIncl2.cxx b/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/Root/DisambiguationIncl2.cxx index 50171658435..5ea2deb1882 100644 --- a/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/Root/DisambiguationIncl2.cxx +++ b/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/Root/DisambiguationIncl2.cxx @@ -40,8 +40,10 @@ namespace { TCS::DisambiguationIncl2::DisambiguationIncl2(const std::string & name) : DecisionAlg(name) { - defineParameter("NumberLeading1", 3); - defineParameter("NumberLeading2", 3); + defineParameter("InputWidth1", 9); + defineParameter("InputWidth2", 9); + defineParameter("MaxTob1", 0); + defineParameter("MaxTob2", 0); defineParameter("NumResultBits", 2); defineParameter("MinET1",1); defineParameter("MinET2",1); @@ -59,8 +61,11 @@ TCS::DisambiguationIncl2::~DisambiguationIncl2(){} TCS::StatusCode TCS::DisambiguationIncl2::initialize() { - p_NumberLeading1 = parameter("NumberLeading1").value(); - p_NumberLeading2 = parameter("NumberLeading2").value(); + p_NumberLeading1 = parameter("InputWidth1").value(); + p_NumberLeading2 = parameter("InputWidth2").value(); + if(parameter("MaxTob1").value() > 0) p_NumberLeading1 = parameter("MaxTob1").value(); + if(parameter("MaxTob2").value() > 0) p_NumberLeading2 = parameter("MaxTob2").value(); + p_MinET1 = parameter("MinET1").value(); p_MinET2 = parameter("MinET2").value(); p_EtaMin1 = parameter("EtaMin1").value(); diff --git a/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/Root/DisambiguationIncl3.cxx b/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/Root/DisambiguationIncl3.cxx index 41188d816c2..c3ba0b29fe9 100644 --- a/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/Root/DisambiguationIncl3.cxx +++ b/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/Root/DisambiguationIncl3.cxx @@ -40,8 +40,12 @@ namespace { TCS::DisambiguationIncl3::DisambiguationIncl3(const std::string & name) : DecisionAlg(name) { - defineParameter("NumberLeading1", 3); - defineParameter("NumberLeading2", 3); + defineParameter("InputWidth1", 9); + defineParameter("InputWidth2", 9); + defineParameter("InputWidth3", 9); + defineParameter("MaxTob1", 0); + defineParameter("MaxTob2", 0); + defineParameter("MaxTob3", 0); defineParameter("NumResultBits", 2); defineParameter("MinET1",1); defineParameter("MinET2",1); @@ -62,8 +66,15 @@ TCS::DisambiguationIncl3::~DisambiguationIncl3(){} TCS::StatusCode TCS::DisambiguationIncl3::initialize() { - p_NumberLeading1 = parameter("NumberLeading1").value(); - p_NumberLeading2 = parameter("NumberLeading2").value(); + p_NumberLeading1 = parameter("InputWidth1").value(); + p_NumberLeading2 = parameter("InputWidth2").value(); + p_NumberLeading3 = parameter("InputWidth3").value(); + + if(parameter("MaxTob1").value() > 0) p_NumberLeading1 = parameter("MaxTob1").value(); + if(parameter("MaxTob2").value() > 0) p_NumberLeading2 = parameter("MaxTob2").value(); + if(parameter("MaxTob3").value() > 0) p_NumberLeading3 = parameter("MaxTob3").value(); + + p_MinET1 = parameter("MinET1").value(); p_MinET2 = parameter("MinET2").value(); p_MinET3 = parameter("MinET3").value(); diff --git a/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/Root/GenericListGenerator.cxx b/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/Root/GenericListGenerator.cxx index c9ffc87ef4c..f2ad5e6f1fe 100644 --- a/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/Root/GenericListGenerator.cxx +++ b/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/Root/GenericListGenerator.cxx @@ -10,6 +10,7 @@ #include "L1TopoEvent/JetTOBArray.h" #include "L1TopoEvent/GenericTOB.h" #include <algorithm> +#include <typeinfo> REGISTER_ALG_TCS(GenericListGenerator) diff --git a/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/Root/InvariantMassInclusive1.cxx b/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/Root/InvariantMassInclusive1.cxx index e04b4c58a23..40ad7659348 100644 --- a/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/Root/InvariantMassInclusive1.cxx +++ b/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/Root/InvariantMassInclusive1.cxx @@ -42,18 +42,31 @@ namespace { TCS::InvariantMassInclusive1::InvariantMassInclusive1(const std::string & name) : DecisionAlg(name) { - defineParameter("NumberLeading1", 6); - defineParameter("NumberLeading2", 6); - defineParameter("NumResultBits", 3); - defineParameter("InvMassMin", 0, 0); - defineParameter("InvMassMax", 999, 0); - defineParameter("InvMassMin", 0, 1); - defineParameter("InvMassMax", 999, 1); - defineParameter("InvMassMin", 0, 2); - defineParameter("InvMassMax", 999, 2); - defineParameter("MinET1",1); - defineParameter("MinET2",1); - setNumberOutputBits(3); + defineParameter("InputWidth", 3); + defineParameter("MaxTob", 0); + defineParameter("NumResultBits", 6); + defineParameter("MinMSqr", 0, 0); + defineParameter("MaxMSqr", 999, 0); + defineParameter("MinMSqr", 0, 1); + defineParameter("MaxMSqr", 999, 1); + defineParameter("MinMSqr", 0, 2); + defineParameter("MaxMSqr", 999, 2); + defineParameter("MinMSqr", 0, 3); + defineParameter("MaxMSqr", 999, 3); + defineParameter("MinMSqr", 0, 4); + defineParameter("MaxMSqr", 999, 4); + defineParameter("MinMSqr", 0, 5); + defineParameter("MaxMSqr", 999, 5); + defineParameter("MinET1",0,0); + defineParameter("MinET2",0,0); + defineParameter("MinET1",0,1); + defineParameter("MinET2",0,1); + defineParameter("MinET1",0,2); + defineParameter("MinET2",0,2); + defineParameter("MinET1",0,3); + defineParameter("MinET2",0,3); + + setNumberOutputBits(6); } TCS::InvariantMassInclusive1::~InvariantMassInclusive1(){} @@ -61,25 +74,31 @@ TCS::InvariantMassInclusive1::~InvariantMassInclusive1(){} TCS::StatusCode TCS::InvariantMassInclusive1::initialize() { - p_NumberLeading1 = parameter("NumberLeading1").value(); - p_NumberLeading2 = parameter("NumberLeading2").value(); - for(int i=0; i<3; ++i) { - p_InvMassMin[i] = parameter("InvMassMin", i).value(); - p_InvMassMax[i] = parameter("InvMassMax", i).value(); + if(parameter("MaxTob").value() > 0) { + p_NumberLeading1 = parameter("MaxTob").value(); + p_NumberLeading2 = parameter("MaxTob").value(); + } else { + p_NumberLeading1 = parameter("InputWidth").value(); + p_NumberLeading2 = parameter("InputWidth").value(); } - p_MinET1 = parameter("MinET1").value(); - p_MinET2 = parameter("MinET2").value(); + for(unsigned int i=0; i<numberOutputBits(); ++i) { + p_InvMassMin[i] = parameter("MinMSqr", i).value(); + p_InvMassMax[i] = parameter("MaxMSqr", i).value(); + + p_MinET1[i] = parameter("MinET1",i).value(); + p_MinET2[i] = parameter("MinET2",i).value(); + } TRG_MSG_INFO("NumberLeading1 : " << p_NumberLeading1); TRG_MSG_INFO("NumberLeading2 : " << p_NumberLeading2); - for(int i=0; i<3; ++i) { + for(unsigned int i=0; i<numberOutputBits(); ++i) { TRG_MSG_INFO("InvMassMin : " << p_InvMassMin[i]); TRG_MSG_INFO("InvMassMax : " << p_InvMassMax[i]); + + TRG_MSG_INFO("MinET1 : " << p_MinET1[i]); + TRG_MSG_INFO("MinET2 : " << p_MinET2[i]); } - TRG_MSG_INFO("MinET1 : " << p_MinET1); - TRG_MSG_INFO("MinET2 : " << p_MinET2); - TRG_MSG_INFO("number output : " << numberOutputBits()); return StatusCode::SUCCESS; @@ -102,23 +121,26 @@ TCS::InvariantMassInclusive1::process( const std::vector<TCS::TOBArray const *> ++tob1) { - if( parType_t((*tob1)->Et()) <= p_MinET1 ) continue; // ET cut - + TCS::TOBArray::const_iterator tob2 = tob1; ++tob2; for( ; tob2 != input[0]->end() && distance( input[0]->begin(), tob2) < p_NumberLeading2; ++tob2) { - if( parType_t((*tob2)->Et()) <= p_MinET2) continue; // ET cut // Inv Mass calculation unsigned int invmass2 = calcInvMass( *tob1, *tob2 ); - bool accept[3]; + bool accept[6]; for(unsigned int i=0; i<numberOutputBits(); ++i) { - accept[i] = invmass2 >= p_InvMassMin[i]*p_InvMassMin[i] && invmass2 <= p_InvMassMax[i]*p_InvMassMax[i]; // to-do : confirm that param is InvM, and not sq + if( parType_t((*tob1)->Et()) <= min(p_MinET1[i],p_MinET2[i])) continue; // ET cut + if( parType_t((*tob2)->Et()) <= min(p_MinET1[i],p_MinET2[i])) continue; // ET cut + if( (parType_t((*tob1)->Et()) <= max(p_MinET1[i],p_MinET2[i])) && (parType_t((*tob2)->Et()) <= max(p_MinET1[i],p_MinET2[i]))) continue; + + + accept[i] = invmass2 >= p_InvMassMin[i] && invmass2 <= p_InvMassMax[i]; // if( accept[i] ) { decison.setBit(i, true); output[i]->push_back( TCS::CompositeTOB(*tob1, *tob2) ); diff --git a/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/Root/InvariantMassInclusive2.cxx b/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/Root/InvariantMassInclusive2.cxx index 73c07ef2b74..46df23d1c92 100644 --- a/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/Root/InvariantMassInclusive2.cxx +++ b/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/Root/InvariantMassInclusive2.cxx @@ -42,18 +42,37 @@ namespace { TCS::InvariantMassInclusive2::InvariantMassInclusive2(const std::string & name) : DecisionAlg(name) { - defineParameter("NumberLeading1", 6); - defineParameter("NumberLeading2", 6); - defineParameter("NumResultBits", 3); - defineParameter("InvMassMin", 0, 0); - defineParameter("InvMassMax", 999, 0); - defineParameter("InvMassMin", 0, 1); - defineParameter("InvMassMax", 999, 1); - defineParameter("InvMassMin", 0, 2); - defineParameter("InvMassMax", 999, 2); - defineParameter("MinET1",0); - defineParameter("MinET2",0); - setNumberOutputBits(3); + defineParameter("InputWidth1", 9); + defineParameter("InputWidth2", 9); + defineParameter("MaxTob1", 0); + defineParameter("MaxTob2", 0); + defineParameter("NumResultBits", 6); + defineParameter("MinMSqr", 0, 0); + defineParameter("MaxMSqr", 999, 0); + defineParameter("MinMSqr", 0, 1); + defineParameter("MaxMSqr", 999, 1); + defineParameter("MinMSqr", 0, 2); + defineParameter("MaxMSqr", 999, 2); + defineParameter("MinMSqr", 0, 3); + defineParameter("MaxMSqr", 999, 3); + defineParameter("MinMSqr", 0, 4); + defineParameter("MaxMSqr", 999, 4); + defineParameter("MinMSqr", 0, 5); + defineParameter("MaxMSqr", 999, 5); + defineParameter("MinET1",0,0); + defineParameter("MinET2",0,0); + defineParameter("MinET1",0,1); + defineParameter("MinET2",0,1); + defineParameter("MinET1",0,2); + defineParameter("MinET2",0,2); + defineParameter("MinET1",0,3); + defineParameter("MinET2",0,3); + defineParameter("MinET1",0,4); + defineParameter("MinET2",0,4); + defineParameter("MinET1",0,5); + defineParameter("MinET2",0,5); + + setNumberOutputBits(6); } TCS::InvariantMassInclusive2::~InvariantMassInclusive2(){} @@ -61,24 +80,27 @@ TCS::InvariantMassInclusive2::~InvariantMassInclusive2(){} TCS::StatusCode TCS::InvariantMassInclusive2::initialize() { - p_NumberLeading1 = parameter("NumberLeading1").value(); - p_NumberLeading2 = parameter("NumberLeading2").value(); - for(int i=0; i<3; ++i) { - p_InvMassMin[i] = parameter("InvMassMin", i).value(); - p_InvMassMax[i] = parameter("InvMassMax", i).value(); + p_NumberLeading1 = parameter("InputWidth1").value(); + p_NumberLeading2 = parameter("InputWidth2").value(); + if(parameter("MaxTob1").value() > 0) p_NumberLeading1 = parameter("MaxTob1").value(); + if(parameter("MaxTob2").value() > 0) p_NumberLeading2 = parameter("MaxTob2").value(); + + for(unsigned int i=0; i<numberOutputBits(); ++i) { + p_InvMassMin[i] = parameter("MinMSqr", i).value(); + p_InvMassMax[i] = parameter("MaxMSqr", i).value(); + + p_MinET1[i] = parameter("MinET1",i).value(); + p_MinET2[i] = parameter("MinET2",i).value(); } - p_MinET1 = parameter("MinET1").value(); - p_MinET2 = parameter("MinET2").value(); - TRG_MSG_INFO("NumberLeading1 : " << p_NumberLeading1); TRG_MSG_INFO("NumberLeading2 : " << p_NumberLeading2); - for(int i=0; i<3; ++i) { + for(unsigned int i=0; i<numberOutputBits(); ++i) { TRG_MSG_INFO("InvMassMin : " << p_InvMassMin[i]); TRG_MSG_INFO("InvMassMax : " << p_InvMassMax[i]); + TRG_MSG_INFO("MinET1 : " << p_MinET1[i]); + TRG_MSG_INFO("MinET2 : " << p_MinET2[i]); } - TRG_MSG_INFO("MinET1 : " << p_MinET1); - TRG_MSG_INFO("MinET2 : " << p_MinET2); TRG_MSG_INFO("number output : " << numberOutputBits()); @@ -101,22 +123,24 @@ TCS::InvariantMassInclusive2::process( const std::vector<TCS::TOBArray const *> ++tob1) { - if( parType_t((*tob1)->Et()) <= p_MinET1) continue; // ET cut for( TCS::TOBArray::const_iterator tob2 = input[1]->begin(); tob2 != input[1]->end() && distance(input[1]->begin(), tob2) < p_NumberLeading2; ++tob2) { - if( parType_t((*tob2)->Et()) <= p_MinET2) continue; // ET cut // Inv Mass calculation unsigned int invmass2 = calcInvMass( *tob1, *tob2 ); - bool accept[3]; + bool accept[6]; for(unsigned int i=0; i<numberOutputBits(); ++i) { - accept[i] = invmass2 >= p_InvMassMin[i]*p_InvMassMin[i] && invmass2 <= p_InvMassMax[i]*p_InvMassMax[i]; // to-do : confirm that param is InvM, and not sq + if( parType_t((*tob1)->Et()) <= p_MinET1[i]) continue; // ET cut + if( parType_t((*tob2)->Et()) <= p_MinET2[i]) continue; // ET cut + + + accept[i] = invmass2 >= p_InvMassMin[i] && invmass2 <= p_InvMassMax[i]; if( accept[i] ) { decison.setBit(i, true); output[i]->push_back( TCS::CompositeTOB(*tob1, *tob2) ); diff --git a/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/Root/JetHT.cxx b/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/Root/JetHT.cxx index ad6cfb2b2e7..c8e94552f59 100644 --- a/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/Root/JetHT.cxx +++ b/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/Root/JetHT.cxx @@ -26,12 +26,19 @@ using namespace std; TCS::JetHT::JetHT(const std::string & name) : DecisionAlg(name) { defineParameter("InputWidth", 0); - defineParameter("NumResultBits",1); + defineParameter("MaxTob", 0); + defineParameter("NumResultBits",6); + defineParameter("NumRegisters", 2); defineParameter("MinEt",0); defineParameter("MinEta",0); defineParameter("MaxEta",31); defineParameter("MinHt",0,0); - setNumberOutputBits(1); + defineParameter("MinHt",0,1); + defineParameter("MinHt",0,2); + defineParameter("MinHt",0,3); + defineParameter("MinHt",0,4); + defineParameter("MinHt",0,5); + setNumberOutputBits(6); } TCS::JetHT::~JetHT() @@ -41,13 +48,16 @@ TCS::JetHT::~JetHT() TCS::StatusCode TCS::JetHT::initialize() { p_NumberLeading1 = parameter("InputWidth").value(); + if(parameter("MaxTob").value() > 0) p_NumberLeading1 = parameter("MaxTob").value(); p_MinET = parameter("MinEt").value(); p_EtaMin = parameter("MinEta").value(); p_EtaMax = parameter("MaxEta").value(); + + TRG_MSG_INFO("MaxTob : " << p_NumberLeading1); TRG_MSG_INFO("MinET : " << p_MinET); TRG_MSG_INFO("EtaMin : " << p_EtaMin); TRG_MSG_INFO("EtaMax : " << p_EtaMax); - for(int i=0; i<1; ++i) { + for(unsigned int i=0; i<numberOutputBits(); ++i) { p_HT[i] = parameter("MinHt", i).value(); TRG_MSG_INFO("HT " << i << " : " << p_HT[i]); } diff --git a/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/Root/JetMatch.cxx b/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/Root/JetMatch.cxx index 5500be855d3..0a7229b57c9 100644 --- a/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/Root/JetMatch.cxx +++ b/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/Root/JetMatch.cxx @@ -25,7 +25,8 @@ using namespace std; TCS::JetMatch::JetMatch(const std::string & name) : DecisionAlg(name) { - defineParameter("NumberLeading1", 3); + defineParameter("InputWidth", 3); + defineParameter("MaxTob", 0); defineParameter("NumResultBits", 1); defineParameter("MinET1",0); defineParameter("MinET2",0); @@ -40,11 +41,14 @@ TCS::JetMatch::~JetMatch() TCS::StatusCode TCS::JetMatch::initialize() { - p_NumberLeading1 = parameter("NumberLeading1").value(); + p_NumberLeading1 = parameter("InputWidth").value(); + if(parameter("MaxTob").value() > 0) p_NumberLeading1 = parameter("MaxTob").value(); p_MinET1 = parameter("MinET1").value(); p_MinET2 = parameter("MinET2").value(); p_EtaMin = parameter("EtaMin").value(); p_EtaMax = parameter("EtaMax").value(); + + TRG_MSG_INFO("MaxTob : " << p_NumberLeading1); TRG_MSG_INFO("MinET1 : " << p_MinET1); TRG_MSG_INFO("MinET2 : " << p_MinET2); TRG_MSG_INFO("EtaMin : " << p_EtaMin); diff --git a/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/Root/LAR.cxx b/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/Root/LAR.cxx index d4ac983abcd..f8fd82fa779 100644 --- a/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/Root/LAR.cxx +++ b/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/Root/LAR.cxx @@ -23,7 +23,8 @@ using namespace std; TCS::LAR::LAR(const std::string & name) : DecisionAlg(name) { - defineParameter("NumberLeading1", 3); + defineParameter("InputWidth", 3); + defineParameter("MaxTob", 0); defineParameter("NumResultBits", 1); defineParameter("PhiMin", 0); defineParameter("PhiMax", 63); @@ -38,7 +39,8 @@ TCS::LAR::~LAR(){} TCS::StatusCode TCS::LAR::initialize() { - p_NumberLeading1 = parameter("NumberLeading1").value(); + p_NumberLeading1 = parameter("InputWidth").value(); + if(parameter("MaxTob").value() > 0) p_NumberLeading1 = parameter("MaxTob").value(); p_PhiMin = parameter("PhiMin").value(); p_PhiMax = parameter("PhiMax").value(); p_EtaMin = parameter("EtaMin").value(); diff --git a/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/Root/MinDPhiIncl1.cxx b/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/Root/MinDPhiIncl1.cxx index 0b88fb10085..002691e720f 100644 --- a/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/Root/MinDPhiIncl1.cxx +++ b/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/Root/MinDPhiIncl1.cxx @@ -39,8 +39,8 @@ namespace { TCS::MinDPhiIncl1::MinDPhiIncl1(const std::string & name) : DecisionAlg(name) { - defineParameter("NumberLeading1", 3); - defineParameter("NumberLeading2", 3); + defineParameter("InputWidth", 3); + defineParameter("MaxTob", 0); defineParameter("NumResultBits", 3); defineParameter("DeltaPhiMin", 0, 0); defineParameter("DeltaPhiMin", 0, 1); @@ -54,8 +54,14 @@ TCS::MinDPhiIncl1::~MinDPhiIncl1(){} TCS::StatusCode TCS::MinDPhiIncl1::initialize() { - p_NumberLeading1 = parameter("NumberLeading1").value(); - p_NumberLeading2 = parameter("NumberLeading2").value(); + if(parameter("MaxTob").value() > 0) { + p_NumberLeading1 = parameter("MaxTob").value(); + p_NumberLeading2 = parameter("MaxTob").value(); + } else { + p_NumberLeading1 = parameter("InputWidth").value(); + p_NumberLeading2 = parameter("InputWidth").value(); + } + for(int i=0; i<3; ++i) { p_DeltaPhiMin[i] = parameter("DeltaPhiMin", i).value(); } @@ -100,14 +106,15 @@ TCS::MinDPhiIncl1::process( const std::vector<TCS::TOBArray const *> & input, ++tob1) { - if( parType_t((*tob1)->Et()) <= p_MinET1 ) continue; // ET cut - + if( parType_t((*tob1)->Et()) <= min(p_MinET1,p_MinET2)) continue; // ET cut + TCS::TOBArray::const_iterator tob2 = tob1; ++tob2; for( ; tob2 != input[0]->end() && distance( input[0]->begin(), tob2) < p_NumberLeading2; ++tob2) { - if( parType_t((*tob2)->Et()) <= p_MinET2) continue; // ET cut + if( parType_t((*tob2)->Et()) <= min(p_MinET1,p_MinET2)) continue; // ET cut + if( (parType_t((*tob1)->Et()) <= max(p_MinET1,p_MinET2)) && (parType_t((*tob2)->Et()) <= max(p_MinET1,p_MinET2))) continue; // DeltaPhi cuts unsigned int deltaPhi = calcDeltaPhi( *tob1, *tob2 ); diff --git a/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/Root/MinDPhiIncl2.cxx b/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/Root/MinDPhiIncl2.cxx index 6c4e3b82fff..5013dcab760 100644 --- a/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/Root/MinDPhiIncl2.cxx +++ b/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/Root/MinDPhiIncl2.cxx @@ -39,8 +39,10 @@ namespace { TCS::MinDPhiIncl2::MinDPhiIncl2(const std::string & name) : DecisionAlg(name) { - defineParameter("NumberLeading1", 3); - defineParameter("NumberLeading2", 3); + defineParameter("InputWidth1", 9); + defineParameter("InputWidth2", 9); + defineParameter("MaxTob1", 0); + defineParameter("MaxTob2", 0); defineParameter("NumResultBits", 3); defineParameter("DeltaPhiMin", 0, 0); defineParameter("DeltaPhiMin", 0, 1); @@ -55,8 +57,11 @@ TCS::MinDPhiIncl2::~MinDPhiIncl2(){} TCS::StatusCode TCS::MinDPhiIncl2::initialize() { - p_NumberLeading1 = parameter("NumberLeading1").value(); - p_NumberLeading2 = parameter("NumberLeading2").value(); + p_NumberLeading1 = parameter("InputWidth1").value(); + p_NumberLeading2 = parameter("InputWidth2").value(); + if(parameter("MaxTob1").value() > 0) p_NumberLeading1 = parameter("MaxTob1").value(); + if(parameter("MaxTob2").value() > 0) p_NumberLeading2 = parameter("MaxTob2").value(); + for(int i=0; i<3; ++i) { p_DeltaPhiMin[i] = parameter("DeltaPhiMin", i).value(); } diff --git a/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/Root/NoMatch.cxx b/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/Root/NoMatch.cxx index 2d0ce9fab8f..14e302e0428 100644 --- a/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/Root/NoMatch.cxx +++ b/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/Root/NoMatch.cxx @@ -40,8 +40,10 @@ namespace { TCS::NoMatch::NoMatch(const std::string & name) : DecisionAlg(name) { - defineParameter("NumberLeading1", 3); - defineParameter("NumberLeading2", 3); + defineParameter("InputWidth1", 9); + defineParameter("InputWidth2", 9); + defineParameter("MaxTob1", 0); + defineParameter("MaxTob2", 0); defineParameter("NumResultBits", 1); defineParameter("MinET1",1); defineParameter("MinET2",1); @@ -58,8 +60,11 @@ TCS::NoMatch::~NoMatch(){} TCS::StatusCode TCS::NoMatch::initialize() { - p_NumberLeading1 = parameter("NumberLeading1").value(); - p_NumberLeading2 = parameter("NumberLeading2").value(); + + p_NumberLeading1 = parameter("InputWidth1").value(); + p_NumberLeading2 = parameter("InputWidth2").value(); + if(parameter("MaxTob1").value() > 0) p_NumberLeading1 = parameter("MaxTob1").value(); + if(parameter("MaxTob2").value() > 0) p_NumberLeading2 = parameter("MaxTob2").value(); p_MinET1 = parameter("MinET1").value(); p_MinET2 = parameter("MinET2").value(); p_EtaMin1 = parameter("EtaMin1").value(); @@ -68,6 +73,8 @@ TCS::NoMatch::initialize() { p_EtaMax2 = parameter("EtaMax2").value(); p_DRCut = parameter("DRCut").value(); + TRG_MSG_INFO("Maxtob 1 : " << p_NumberLeading1); + TRG_MSG_INFO("Maxtob 2 : " << p_NumberLeading2); TRG_MSG_INFO("MinET1 : " << p_MinET1); TRG_MSG_INFO("EtaMin1 : " << p_EtaMin1); TRG_MSG_INFO("EtaMax1 : " << p_EtaMax1); @@ -127,7 +134,7 @@ TCS::NoMatch::process( const std::vector<TCS::TOBArray const *> & input, bool accept = matched?false:true ; - decision.setBit( i, accept ); + if (accept) decision.setBit( i, accept ); if(accept) output[i]->push_back( TCS::CompositeTOB(*tob1)); diff --git a/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/Root/Ratio.cxx b/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/Root/Ratio.cxx index 3bc39be501a..ea3b9665c7e 100644 --- a/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/Root/Ratio.cxx +++ b/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/Root/Ratio.cxx @@ -25,6 +25,10 @@ using namespace std; TCS::Ratio::Ratio(const std::string & name) : DecisionAlg(name) { + defineParameter("InputWidth1", 9); + defineParameter("InputWidth2", 9); + defineParameter("MaxTob1", 0); + defineParameter("MaxTob2", 0); defineParameter("NumResultBits", 2); defineParameter("MinET1",0); defineParameter("MinET2",0); diff --git a/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/Root/Ratio2.cxx b/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/Root/Ratio2.cxx index 389cc4b9067..ba9ae8c2104 100644 --- a/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/Root/Ratio2.cxx +++ b/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/Root/Ratio2.cxx @@ -24,7 +24,11 @@ using namespace std; TCS::Ratio2::Ratio2(const std::string & name) : DecisionAlg(name) -{ +{ + defineParameter("InputWidth1", 9); + defineParameter("InputWidth2", 9); + defineParameter("MaxTob1", 0); + defineParameter("MaxTob2", 0); defineParameter("NumResultBits", 2); defineParameter("MinET1",0); defineParameter("MinET2",0); diff --git a/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/Root/RatioMatch.cxx b/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/Root/RatioMatch.cxx index 089f9de41e0..44edddcfd70 100644 --- a/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/Root/RatioMatch.cxx +++ b/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/Root/RatioMatch.cxx @@ -38,8 +38,10 @@ namespace { TCS::RatioMatch::RatioMatch(const std::string & name) : DecisionAlg(name) { - defineParameter("NumberLeading1", 3); - defineParameter("NumberLeading2", 3); + defineParameter("InputWidth1", 9); + defineParameter("InputWidth2", 9); + defineParameter("MaxTob1", 0); + defineParameter("MaxTob2", 0); defineParameter("NumResultBits", 2); defineParameter("MinET1",0); defineParameter("MinET2",0); @@ -57,13 +59,20 @@ TCS::RatioMatch::~RatioMatch() TCS::StatusCode TCS::RatioMatch::initialize() { - p_NumberLeading1 = parameter("NumberLeading1").value(); - p_NumberLeading2 = parameter("NumberLeading2").value(); + p_NumberLeading1 = parameter("InputWidth1").value(); + p_NumberLeading2 = parameter("InputWidth2").value(); + if(parameter("MaxTob1").value() > 0) p_NumberLeading1 = parameter("MaxTob1").value(); + if(parameter("MaxTob2").value() > 0) p_NumberLeading2 = parameter("MaxTob2").value(); + p_MinET1 = parameter("MinET1").value(); p_MinET2 = parameter("MinET2").value(); p_EtaMin = parameter("EtaMin").value(); p_EtaMax = parameter("EtaMax").value(); p_DeltaR = parameter("DeltaR").value(); + + + TRG_MSG_INFO("Maxtob 1 : " << p_NumberLeading1); + TRG_MSG_INFO("Maxtob 2 : " << p_NumberLeading2); TRG_MSG_INFO("MinET1 : " << p_MinET1); TRG_MSG_INFO("MinET2 : " << p_MinET2); TRG_MSG_INFO("EtaMin : " << p_EtaMin); @@ -122,10 +131,10 @@ TCS::RatioMatch::process( const std::vector<TCS::TOBArray const *> & input, TRG_MSG_DEBUG("Decision " << i << ": " << (accept[i]?"pass":"fail") << " deltaR2 = " << deltaR2 ); } - } - } + } + } return TCS::StatusCode::SUCCESS; diff --git a/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/Root/RatioSum.cxx b/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/Root/RatioSum.cxx index 5dce4ccf919..d8274556a19 100644 --- a/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/Root/RatioSum.cxx +++ b/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/Root/RatioSum.cxx @@ -25,7 +25,10 @@ using namespace std; TCS::RatioSum::RatioSum(const std::string & name) : DecisionAlg(name) { - defineParameter("NumberLeading1", 3); + defineParameter("InputWidth1", 9); + defineParameter("InputWidth2", 9); + defineParameter("MaxTob1", 0); + defineParameter("MaxTob2", 0); defineParameter("NumResultBits", 2); defineParameter("MinET1",0); defineParameter("MinET2",0); @@ -48,7 +51,10 @@ TCS::RatioSum::~RatioSum() TCS::StatusCode TCS::RatioSum::initialize() { - p_NumberLeading1 = parameter("NumberLeading1").value(); + p_NumberLeading1 = parameter("InputWidth1").value(); + p_NumberLeading2 = parameter("InputWidth2").value(); + if(parameter("MaxTob1").value() > 0) p_NumberLeading1 = parameter("MaxTob1").value(); + if(parameter("MaxTob2").value() > 0) p_NumberLeading2 = parameter("MaxTob2").value(); p_MinET1 = parameter("MinET1").value(); p_MinET2 = parameter("MinET2").value(); p_EtaMin1 = parameter("EtaMin1").value(); @@ -56,6 +62,9 @@ TCS::RatioSum::initialize() { p_EtaMin2 = parameter("EtaMin2").value(); p_EtaMax2 = parameter("EtaMax2").value(); + + TRG_MSG_INFO("Maxtob 1 : " << p_NumberLeading1); + TRG_MSG_INFO("Maxtob 2 : " << p_NumberLeading2); TRG_MSG_INFO("MinET1 : " << p_MinET1); TRG_MSG_INFO("EtaMin1 : " << p_EtaMin1); TRG_MSG_INFO("EtaMax1 : " << p_EtaMax1); -- GitLab