ATLAS Offline Software
Loading...
Searching...
No Matches
TCS::AnomalyDetectionBDT Class Reference

#include <AnomalyDetectionBDT.h>

Inheritance diagram for TCS::AnomalyDetectionBDT:
Collaboration diagram for TCS::AnomalyDetectionBDT:

Public Member Functions

 AnomalyDetectionBDT (const std::string &name)
virtual ~AnomalyDetectionBDT ()
virtual StatusCode initialize ()
virtual StatusCode processBitCorrect (const std::vector< TCS::TOBArray const * > &input, const std::vector< TCS::TOBArray * > &output, Decision &decision)
virtual StatusCode process (const std::vector< TCS::TOBArray const * > &input, const std::vector< TCS::TOBArray * > &output, Decision &decision)
unsigned int numberOutputBits () const
void setNumberOutputBits (unsigned int numberOutputBits)
DecisionAlgsetHardwareBits (const unsigned int &bitNumber, const bool &valueDecision, const bool &valueOverflow)
 propagate the hardware decision bits for each output bit of this algo
DecisionAlgresetHardwareBits ()
 ! reset all hardware bits for this algo
bool getDecisionHardwareBit (const unsigned int &bitNumber) const
 ! get one hardware decision bit from this algo
bool getOverflowHardwareBit (const unsigned int &bitNumber) const
 ! get one hardware overflow bit from this algo
DecisionAlgsetFillHistosBasedOnHardware (const bool &value)
 ! toggle m_fillHistosBasedOnHardware
bool fillHistosBasedOnHardware () const
 ! getter
DecisionAlgsetSkipHistos (const bool &value)
 ! toggle m_skipHistos (see TopoSteering::setOutputAlgosSkipHistograms)
bool skipHistos () const
 ! getter
bool fillHistos () const
 whether the monitoring histograms should be filled
void setClassName (const std::string &className)
void setLegacyMode (bool isLegacyTopo)
const std::string & name () const
const std::string & className () const
std::string fullname () const
unsigned int algoId () const
StatusCode reset ()
bool isSortingAlg () const
bool isDecisionAlg () const
bool isCountingAlg () const
bool isLegacyTopo () const
unsigned int calcDeltaPhiBW (const TCS::GenericTOB *tob1, const TCS::GenericTOB *tob2)
unsigned int calcDeltaEtaBW (const TCS::GenericTOB *tob1, const TCS::GenericTOB *tob2)
unsigned int calcInvMassBW (const TCS::GenericTOB *tob1, const TCS::GenericTOB *tob2)
unsigned int calcTMassBW (const TCS::GenericTOB *tob1, const TCS::GenericTOB *tob2)
unsigned int calcDeltaR2BW (const TCS::GenericTOB *tob1, const TCS::GenericTOB *tob2)
unsigned long quadraticSumBW (int i1, int i2)
unsigned int calcDeltaPhi (const TCS::GenericTOB *tob1, const TCS::GenericTOB *tob2)
unsigned int calcDeltaEta (const TCS::GenericTOB *tob1, const TCS::GenericTOB *tob2)
unsigned int calcInvMass (const TCS::GenericTOB *tob1, const TCS::GenericTOB *tob2)
unsigned int calcTMass (const TCS::GenericTOB *tob1, const TCS::GenericTOB *tob2)
unsigned int calcDeltaR2 (const TCS::GenericTOB *tob1, const TCS::GenericTOB *tob2)
const Parameterparameter (const std::string &parameterName) const
const Parameterparameter (const std::string &parameterName, unsigned int selection) const
const ParameterSpaceparameters () const
void setParameters (const ParameterSpace &)
void setAlgoId (unsigned int algoId)
void setL1TopoHistSvc (std::shared_ptr< IL1TopoHistSvc >)
 sets the external hist service
void bookHistMult (std::vector< std::string > &regName, const std::string &name, const std::string &title, const std::string &xtitle, const int binx, const int xmin, const int xmax)
void bookHistMult (std::vector< std::string > &regName, const std::string &name, const std::string &title, const std::string &xtitle, const std::string &ytitle, const int binx, const int xmin, const int xmax, const int biny, const int ymin, const int ymax)
void bookHist (std::vector< std::string > &regName, const std::string &name, const std::string &title, const int binx, const int xmin, const int xmax)
void bookHist (std::vector< std::string > &regName, const std::string &name, const std::string &title, const int binx, const int xmin, const int xmax, const int biny, const int ymin, const int ymax)
bool msgLvl (const MSGTC::Level lvl) const
 Test the output level.
MsgStreamTC & msg () const
 The standard message stream.
MsgStreamTC & msg (const MSGTC::Level lvl) const
 The standard message stream.
const std::string & getName () const
 name accessor

Protected Types

enum  AlgType { NONE , SORT , DECISION , COUNT }

Protected Member Functions

void defineParameter (const std::string &name, TCS::parType_t value)
void defineParameter (const std::string &name, TCS::parType_t value, unsigned int selection)
void registerHist (TH1 *)
void registerHist (TH2 *)
void fillHist1D (const std::string &histName, double x)
void fillHist2D (const std::string &histName, double x, double y)
bool isocut (const std::string &threshold, const unsigned int bit) const
bool isocut (const unsigned int threshold, const unsigned int bit) const

Protected Attributes

std::vector< std::string > m_histAccept
std::vector< std::string > m_histReject
std::vector< std::string > m_histAcceptM
std::vector< std::string > m_histRejectM
std::vector< std::string > m_histAcceptX
std::vector< std::string > m_histRejectX
std::vector< std::string > m_histAcceptEta1Eta2
std::vector< std::string > m_histRejectEta1Eta2
std::vector< std::string > m_histAcceptEta2Eta3
std::vector< std::string > m_histRejectEta2Eta3
std::vector< std::string > m_histAcceptEta3Eta1
std::vector< std::string > m_histRejectEta3Eta1

Private Member Functions

virtual StatusCode doReset ()
void defineParameter (const Parameter &)
std::string ToString (const int val)

Private Attributes

std::vector< Treem_trees
int m_nVar {0}
int64_t m_totalScore {0}
float m_mu1_ptmin {0}
float m_mu1_ptmax {0}
float m_mu1_etamin {0}
float m_mu1_etamax {0}
float m_mu1_phimin {0}
float m_mu1_phimax {0}
float m_mu2_ptmin {0}
float m_mu2_ptmax {0}
float m_mu2_etamin {0}
float m_mu2_etamax {0}
float m_mu2_phimin {0}
float m_mu2_phimax {0}
std::string m_sim_mode
parType_t p_ScoreThreshold [2] = { 0, 0 }
parType_t p_minEt1 {0}
parType_t p_minEt2 {0}
size_t p_MaxTob {3}
unsigned int m_numberOutputBits {1}
uint32_t m_hardwareDecisionBits {0}
 ! decision bits from hardware (assume the algo won't have >31 output bits)
uint32_t m_hardwareOverflowBits {0}
 ! overflow bits from hardware (assume the algo won't have >31 output bits)
bool m_fillHistosBasedOnHardware {0}
 ! fill accept/reject monitoring histos based on hdw decision
bool m_skipHistos {0}
 ! skip filling monitoring histos, used only when m_fillHistosBasedOnHardware==true
std::unique_ptr< ConfigurableAlgImplm_impl
std::string m_name {""}
std::string m_className {""}
unsigned int m_algoId {0}
ParameterSpace m_parameters {""}
AlgType m_algType
bool m_isLegacyTopo
boost::thread_specific_ptr< MsgStreamTC > m_msg_tls
 MsgStreamTC instance (a std::cout like with print-out levels)

Detailed Description

Definition at line 49 of file AnomalyDetectionBDT.h.

Member Enumeration Documentation

◆ AlgType

enum TCS::ConfigurableAlg::AlgType
protectedinherited
Enumerator
NONE 
SORT 
DECISION 
COUNT 

Definition at line 32 of file ConfigurableAlg.h.

Constructor & Destructor Documentation

◆ AnomalyDetectionBDT()

TCS::AnomalyDetectionBDT::AnomalyDetectionBDT ( const std::string & name)

Definition at line 383 of file AnomalyDetectionBDT.cxx.

384: DecisionAlg(name) {
385 defineParameter("MinET1",0);
386 defineParameter("MinET2",0);
387 defineParameter("ScoreThreshold", 1, 0);
388 defineParameter("ScoreThreshold", 1, 1);
389 defineParameter("MaxTob",3);
390 defineParameter("NumResultBits",2);
391 setNumberOutputBits(2); // 2 decision bits for 2 different score thresholds
392 // (BDT Regression score is calculated internally)
393}
const std::string & name() const
void defineParameter(const std::string &name, TCS::parType_t value)
void setNumberOutputBits(unsigned int numberOutputBits)
Definition DecisionAlg.h:40
DecisionAlg(const std::string &name)
Definition DecisionAlg.h:25

◆ ~AnomalyDetectionBDT()

TCS::AnomalyDetectionBDT::~AnomalyDetectionBDT ( )
virtual

Definition at line 396 of file AnomalyDetectionBDT.cxx.

397{}

Member Function Documentation

◆ algoId()

unsigned int TCS::ConfigurableAlg::algoId ( ) const
inlineinherited

Definition at line 53 of file ConfigurableAlg.h.

53{ return m_algoId; }

◆ bookHist() [1/2]

void ConfigurableAlg::bookHist ( std::vector< std::string > & regName,
const std::string & name,
const std::string & title,
const int binx,
const int xmin,
const int xmax )
inherited

Definition at line 270 of file ConfigurableAlg.cxx.

270 {
271 std::string xmin_str = ToString(xmin);
272 std::string xmax_str = ToString(xmax);
273 std::string newTitle = title;
274 std::string newName = name;
275
276 newTitle = xmin_str+title+xmax_str;
277 newName = name+"_"+xmin_str+title+xmax_str;
278 std::replace( newName.begin(), newName.end(), '-', 'n');
279 std::replace( newName.begin(), newName.end(), ' ', '_');
280
281 regName.push_back(m_name+"/"+newName);
282
283 // Add units to axis labels
284 std::string xTitle = title;
285 if (m_isLegacyTopo) {
286 if (title == "ETA" || title == "DETA" || title == "PHI" || title == "DPHI" || title == "DR") { xTitle = title+"#times10"; }
287 if (title == "PT" || title == "ET" || title == "HT" || title == "INVM" || title == "MT") { xTitle = title+" [GeV]"; }
288 }
289 else {
290 if (title == "ETA" || title == "DETA" || title == "DR") { xTitle = title+"#times40"; }
291 if (title == "PHI" || title == "DPHI") { xTitle = title+"#times20"; }
292 if (title == "PT" || title == "ET" || title == "HT" || title == "INVM" || title == "MT") { xTitle = title+" [100 MeV]"; }
293 }
294
295 int xmin_new,xmax_new,binx_new=binx;
296 if ( xmin > 0.0)
297 { xmin_new=0.0; }
298 else
299 { xmin_new=1.5*xmin; }
300
301 // if the maximum inv. mass cut defined by the menu over 4000 MeV,
302 // set x-axis range maximum to 4000 MeV. This is only for legacy triggers,
303 // phase1 does not exceed this limit- asonay 08/2022
304 if (xmax > 4000 && m_isLegacyTopo) {
305 xmax_new = 4000;
306 binx_new = 200;
307 }
308 else {xmax_new = 1.5*xmax;}
309
310 // if angular kinematics, use fixed range
311 int eta_max = 50;
312 int phi_max = 64;
313 int dr_max = 30;
314 if (not m_isLegacyTopo) {
315 eta_max *= 4;
316 phi_max *= 2;
317 dr_max *= 4;
318 }
319
320 if ( title.find("ETA") != std::string::npos ){
321 xmin_new=-eta_max;
322 xmax_new=eta_max;
323 }
324 if ( title.find("PHI") != std::string::npos || title.find("DPHI") != std::string::npos ){
325 xmin_new=0;
326 xmax_new=phi_max;
327 }
328 if ( title.find("DETA") != std::string::npos || title.find("DR") != std::string::npos ){
329 xmin_new=0;
330 xmax_new=dr_max;
331 }
332
333 TH1 *h = new TH1F(newName.c_str(), newTitle.c_str(), binx_new, xmin_new, xmax_new);
334 h->GetXaxis()->SetTitle(xTitle.c_str());
335 m_impl->registerHist(h);
336}
std::string ToString(const int val)
std::unique_ptr< ConfigurableAlgImpl > m_impl
double xmax
Definition listroot.cxx:61
double xmin
Definition listroot.cxx:60
TH1F(name, title, nxbins, bins_par2, bins_par3=None, path='', **kwargs)

◆ bookHist() [2/2]

void ConfigurableAlg::bookHist ( std::vector< std::string > & regName,
const std::string & name,
const std::string & title,
const int binx,
const int xmin,
const int xmax,
const int biny,
const int ymin,
const int ymax )
inherited

Definition at line 347 of file ConfigurableAlg.cxx.

347 {
348 auto usPos = title.find(" vs ");
349 std::string xName = title.substr(0,usPos);
350 std::string yName = title.substr(usPos+4);
351 std::string xmin_str = ToString(xmin);
352 std::string xmax_str = ToString(xmax);
353 std::string ymin_str = ToString(ymin);
354 std::string ymax_str = ToString(ymax);
355 std::string newTitle = title;
356 std::string newName = name;
357
358 newTitle = xmin_str+xName+xmax_str+" vs "+ymin_str+yName+ymax_str;
359 newName = name+"_"+xmin_str+xName+xmax_str+"_"+ymin_str+yName+ymax_str;
360 std::replace( newName.begin(), newName.end(), '-', 'n');
361 std::replace( newName.begin(), newName.end(), ' ', '_');
362
363 regName.push_back(m_name+"/"+newName);
364
365 // Add units to axis labels
366 std::string xTitle = xName;
367 std::string yTitle = yName;
368 if (m_isLegacyTopo) {
369 if (xName == "ETA" || xName == "DETA" || xName == "PHI" || xName == "DPHI" || xName == "DR") { xTitle = xName+"#times10"; }
370 if (xName == "PT" || xName == "ET" || xName == "HT" || xName == "INVM" || xName == "MT") { xTitle = xName+" [GeV]"; }
371
372 if (yName == "ETA" || yName == "DETA" || yName == "PHI" || yName == "DPHI" || yName == "DR") { yTitle = yName+"#times10"; }
373 if (yName == "PT" || yName == "ET" || yName == "HT" || yName == "INVM" || yName == "MT") { yTitle = yName+" [GeV]"; }
374 }
375 else {
376 if (xName == "ETA" || xName == "DETA" || xName == "DR") { xTitle = xName+"#times40"; }
377 if (xName == "PHI" || xName == "DPHI") { xTitle = xName+"#times20"; }
378 if (xName == "PT" || xName == "ET" || xName == "HT" || xName == "INVM" || xName == "MT") { xTitle = xName+" [100 MeV]"; }
379
380 if (yName == "ETA" || yName == "DETA" || yName == "DR") { yTitle = yName+"#times40"; }
381 if (yName == "PHI" || yName == "DPHI") { yTitle = yName+"#times20"; }
382 if (yName == "PT" || yName == "ET" || yName == "HT" || yName == "INVM" || yName == "MT") { yTitle = yName+" [100 MeV]"; }
383 }
384
385 int xmin_new,xmax_new,binx_new=binx;
386 if ( xmin > 0.0)
387 { xmin_new=0.0; }
388 else
389 { xmin_new=1.5*xmin; }
390
391 // if the maximum inv. mass cut defined by the menu over 4000 MeV,
392 // set x-axis range maximum to 4000 MeV. This is only for legacy triggers,
393 // phase1 does not exceed this limit- asonay 08/2022
394 if (xmax > 4000 && m_isLegacyTopo) {
395 xmax_new = 4000;
396 binx_new = 200;
397 }
398 else {xmax_new = 1.5*xmax;}
399
400 int ymin_new,ymax_new,biny_new=biny;
401 if ( ymin > 0.0)
402 { ymin_new=0.0; }
403 else
404 { ymin_new=1.5*ymin; }
405
406 // if the maximum inv. mass cut defined by the menu over 4000 MeV,
407 // set y-axis range maximum to 4000 MeV. This is only for legacy triggers,
408 // phase1 does not exceed this limit- asonay 08/2022
409 if (ymax > 4000 && m_isLegacyTopo) {
410 ymax_new = 4000;
411 biny_new = 200;
412 }
413 else {ymax_new = 1.5*ymax;}
414
415
416 // if angular kinematics, use fixed range
417 int eta_max = 50;
418 int phi_max = 64;
419 int dr_max = 30;
420 if (not m_isLegacyTopo) {
421 eta_max *= 4;
422 phi_max *= 2;
423 dr_max *= 4;
424 }
425
426 if ( xName.find("ETA") != std::string::npos ){
427 xmin_new=-eta_max;
428 xmax_new=eta_max;
429 }
430 if ( yName.find("ETA") != std::string::npos ){
431 ymin_new=-eta_max;
432 ymax_new=eta_max;
433 }
434 if ( xName.find("PHI") != std::string::npos || xName.find("DPHI") != std::string::npos ){
435 xmin_new=0;
436 xmax_new=phi_max;
437 }
438 if ( yName.find("PHI") != std::string::npos || yName.find("DPHI") != std::string::npos ){
439 ymin_new=0;
440 ymax_new=phi_max;
441 }
442 if ( xName.find("DETA") != std::string::npos || xName.find("DR") != std::string::npos ){
443 xmin_new=0;
444 xmax_new=dr_max;
445 }
446 if ( yName.find("DETA") != std::string::npos || yName.find("DR") != std::string::npos ){
447 ymin_new=0;
448 ymax_new=dr_max;
449 }
450
451 TH2 *h = new TH2F(newName.c_str(), newTitle.c_str(), binx_new, xmin_new, xmax_new, biny_new, ymin_new, ymax_new);
452 h->GetXaxis()->SetTitle(xTitle.c_str());
453 h->GetYaxis()->SetTitle(yTitle.c_str());
454 m_impl->registerHist(h);
455}
double ymin
Definition listroot.cxx:63
double ymax
Definition listroot.cxx:64
TH2F(name, title, nxbins, bins_par2, bins_par3, bins_par4, bins_par5=None, bins_par6=None, path='', **kwargs)

◆ bookHistMult() [1/2]

void ConfigurableAlg::bookHistMult ( std::vector< std::string > & regName,
const std::string & name,
const std::string & title,
const std::string & xtitle,
const int binx,
const int xmin,
const int xmax )
inherited

Definition at line 338 of file ConfigurableAlg.cxx.

338 {
339
340 regName.push_back(m_name+"/"+name);
341
342 TH1 *h = new TH1F(name.c_str(), title.c_str(), binx, xmin, xmax);
343 h->GetXaxis()->SetTitle(xtitle.c_str());
344 m_impl->registerHist(h);
345}

◆ bookHistMult() [2/2]

void ConfigurableAlg::bookHistMult ( std::vector< std::string > & regName,
const std::string & name,
const std::string & title,
const std::string & xtitle,
const std::string & ytitle,
const int binx,
const int xmin,
const int xmax,
const int biny,
const int ymin,
const int ymax )
inherited

Definition at line 457 of file ConfigurableAlg.cxx.

457 {
458
459 regName.push_back(m_name+"/"+name);
460
461 TH2 *h = new TH2F(name.c_str(), title.c_str(), binx, xmin, xmax, biny, ymin, ymax);
462 h->GetXaxis()->SetTitle(xtitle.c_str());
463 h->GetYaxis()->SetTitle(ytitle.c_str());
464 m_impl->registerHist(h);
465}

◆ calcDeltaEta()

unsigned int ConfigurableAlg::calcDeltaEta ( const TCS::GenericTOB * tob1,
const TCS::GenericTOB * tob2 )
inherited

Definition at line 173 of file ConfigurableAlg.cxx.

173 {
174 if (m_isLegacyTopo)
175 {return TSU::Kinematics::calcDeltaEtaLegacy(tob1,tob2);}
176 else
177 {return TSU::Kinematics::calcDeltaEta(tob1,tob2);}
178}
static unsigned int calcDeltaEta(const TCS::GenericTOB *tob1, const TCS::GenericTOB *tob2)
static unsigned int calcDeltaEtaLegacy(const TCS::GenericTOB *tob1, const TCS::GenericTOB *tob2)

◆ calcDeltaEtaBW()

unsigned int ConfigurableAlg::calcDeltaEtaBW ( const TCS::GenericTOB * tob1,
const TCS::GenericTOB * tob2 )
inherited

Definition at line 128 of file ConfigurableAlg.cxx.

128 {
129 if (m_isLegacyTopo)
130 {return TSU::Kinematics::calcDeltaEtaBWLegacy(tob1,tob2);}
131 else
132 {return TSU::Kinematics::calcDeltaEtaBW(tob1,tob2);}
133}
static unsigned int calcDeltaEtaBWLegacy(const TCS::GenericTOB *tob1, const TCS::GenericTOB *tob2)
static unsigned int calcDeltaEtaBW(const TCS::GenericTOB *tob1, const TCS::GenericTOB *tob2)

◆ calcDeltaPhi()

unsigned int ConfigurableAlg::calcDeltaPhi ( const TCS::GenericTOB * tob1,
const TCS::GenericTOB * tob2 )
inherited

Definition at line 165 of file ConfigurableAlg.cxx.

165 {
166 if (m_isLegacyTopo)
167 {return TSU::Kinematics::calcDeltaPhiLegacy(tob1,tob2);}
168 else
169 {return TSU::Kinematics::calcDeltaPhi(tob1,tob2);}
170}
static unsigned int calcDeltaPhi(const TCS::GenericTOB *tob1, const TCS::GenericTOB *tob2)
static unsigned int calcDeltaPhiLegacy(const TCS::GenericTOB *tob1, const TCS::GenericTOB *tob2)

◆ calcDeltaPhiBW()

unsigned int ConfigurableAlg::calcDeltaPhiBW ( const TCS::GenericTOB * tob1,
const TCS::GenericTOB * tob2 )
inherited

Definition at line 120 of file ConfigurableAlg.cxx.

120 {
121 if (m_isLegacyTopo)
122 {return TSU::Kinematics::calcDeltaPhiBWLegacy(tob1,tob2);}
123 else
124 {return TSU::Kinematics::calcDeltaPhiBW(tob1,tob2);}
125}
static unsigned int calcDeltaPhiBWLegacy(const TCS::GenericTOB *tob1, const TCS::GenericTOB *tob2)
static unsigned int calcDeltaPhiBW(const TCS::GenericTOB *tob1, const TCS::GenericTOB *tob2)

◆ calcDeltaR2()

unsigned int ConfigurableAlg::calcDeltaR2 ( const TCS::GenericTOB * tob1,
const TCS::GenericTOB * tob2 )
inherited

Definition at line 191 of file ConfigurableAlg.cxx.

191 {
192 if (m_isLegacyTopo)
193 {return TSU::Kinematics::calcDeltaR2Legacy(tob1,tob2);}
194 else
195 {return TSU::Kinematics::calcDeltaR2(tob1,tob2);}
196}
static unsigned int calcDeltaR2Legacy(const TCS::GenericTOB *tob1, const TCS::GenericTOB *tob2)
static unsigned int calcDeltaR2(const TCS::GenericTOB *tob1, const TCS::GenericTOB *tob2)

◆ calcDeltaR2BW()

unsigned int ConfigurableAlg::calcDeltaR2BW ( const TCS::GenericTOB * tob1,
const TCS::GenericTOB * tob2 )
inherited

Definition at line 152 of file ConfigurableAlg.cxx.

152 {
153 if (m_isLegacyTopo)
154 {return TSU::Kinematics::calcDeltaR2BWLegacy(tob1,tob2);}
155 else
156 {return TSU::Kinematics::calcDeltaR2BW(tob1,tob2);}
157}
static unsigned int calcDeltaR2BW(const TCS::GenericTOB *tob1, const TCS::GenericTOB *tob2)
static unsigned int calcDeltaR2BWLegacy(const TCS::GenericTOB *tob1, const TCS::GenericTOB *tob2)

◆ calcInvMass()

unsigned int ConfigurableAlg::calcInvMass ( const TCS::GenericTOB * tob1,
const TCS::GenericTOB * tob2 )
inherited

Definition at line 181 of file ConfigurableAlg.cxx.

181 {
182 return TSU::Kinematics::calcInvMass(tob1,tob2);
183}
static unsigned int calcInvMass(const TCS::GenericTOB *tob1, const TCS::GenericTOB *tob2)

◆ calcInvMassBW()

unsigned int ConfigurableAlg::calcInvMassBW ( const TCS::GenericTOB * tob1,
const TCS::GenericTOB * tob2 )
inherited

Definition at line 136 of file ConfigurableAlg.cxx.

136 {
137 if (m_isLegacyTopo)
138 {return TSU::Kinematics::calcInvMassBWLegacy(tob1,tob2);}
139 else
140 {return TSU::Kinematics::calcInvMassBW(tob1,tob2);}
141}
static unsigned int calcInvMassBW(const TCS::GenericTOB *tob1, const TCS::GenericTOB *tob2)
static unsigned int calcInvMassBWLegacy(const TCS::GenericTOB *tob1, const TCS::GenericTOB *tob2)

◆ calcTMass()

unsigned int ConfigurableAlg::calcTMass ( const TCS::GenericTOB * tob1,
const TCS::GenericTOB * tob2 )
inherited

Definition at line 186 of file ConfigurableAlg.cxx.

186 {
187 return TSU::Kinematics::calcTMass(tob1,tob2);
188}
static unsigned int calcTMass(const TCS::GenericTOB *tob1, const TCS::GenericTOB *tob2)

◆ calcTMassBW()

unsigned int ConfigurableAlg::calcTMassBW ( const TCS::GenericTOB * tob1,
const TCS::GenericTOB * tob2 )
inherited

Definition at line 144 of file ConfigurableAlg.cxx.

144 {
145 if (m_isLegacyTopo)
146 {return TSU::Kinematics::calcTMassBWLegacy(tob1,tob2);}
147 else
148 {return TSU::Kinematics::calcTMassBW(tob1,tob2);}
149}
static unsigned int calcTMassBWLegacy(const TCS::GenericTOB *tob1, const TCS::GenericTOB *tob2)
static unsigned int calcTMassBW(const TCS::GenericTOB *tob1, const TCS::GenericTOB *tob2)

◆ className()

const std::string & TCS::ConfigurableAlg::className ( ) const
inlineinherited

Definition at line 49 of file ConfigurableAlg.h.

49{ return m_className; }

◆ defineParameter() [1/3]

void ConfigurableAlg::defineParameter ( const Parameter & parameter)
privateinherited

Definition at line 213 of file ConfigurableAlg.cxx.

213 {
214 if( parameters().contains( parameter.name(), parameter.selection() ) ) {
215 TCS_EXCEPTION("Duplicate parameter definition '" << parameter.name() << "' for algorithm '" << name() << "'");
216 }
217 m_parameters.addParameter(parameter);
218}
const ParameterSpace & parameters() const
const Parameter & parameter(const std::string &parameterName) const
ParameterSpace m_parameters
bool contains(const std::string &s, const std::string &regx)
does a string contain the substring
Definition hcg.cxx:114

◆ defineParameter() [2/3]

void ConfigurableAlg::defineParameter ( const std::string & name,
TCS::parType_t value )
protectedinherited

Definition at line 201 of file ConfigurableAlg.cxx.

201 {
202 defineParameter( Parameter(name, value) );
203}

◆ defineParameter() [3/3]

void ConfigurableAlg::defineParameter ( const std::string & name,
TCS::parType_t value,
unsigned int selection )
protectedinherited

Definition at line 207 of file ConfigurableAlg.cxx.

207 {
208 defineParameter( Parameter(name, value, selection) );
209}
const std::string selection

◆ doReset()

TCS::StatusCode TCS::DecisionAlg::doReset ( )
privatevirtualinherited

◆ fillHist1D()

void ConfigurableAlg::fillHist1D ( const std::string & histName,
double x )
protectedinherited

Definition at line 467 of file ConfigurableAlg.cxx.

467 {
468 m_impl->fillHist1D(histName,x);
469}
#define x

◆ fillHist2D()

void ConfigurableAlg::fillHist2D ( const std::string & histName,
double x,
double y )
protectedinherited

Definition at line 471 of file ConfigurableAlg.cxx.

471 {
472 m_impl->fillHist2D(histName,x,y);
473}
#define y

◆ fillHistos()

bool TCS::DecisionAlg::fillHistos ( ) const
inherited

whether the monitoring histograms should be filled

Either we are filling based on the simulated decision, or based on the hdw decision with skipHistos==false.

Definition at line 100 of file DecisionAlg.cxx.

101{
102 return (not m_fillHistosBasedOnHardware or not m_skipHistos);
103}
bool m_skipHistos
! skip filling monitoring histos, used only when m_fillHistosBasedOnHardware==true
bool m_fillHistosBasedOnHardware
! fill accept/reject monitoring histos based on hdw decision

◆ fillHistosBasedOnHardware()

bool TCS::DecisionAlg::fillHistosBasedOnHardware ( ) const
inherited

! getter

Definition at line 84 of file DecisionAlg.cxx.

85{
87}

◆ fullname()

std::string TCS::ConfigurableAlg::fullname ( ) const
inlineinherited

Definition at line 50 of file ConfigurableAlg.h.

50{ return m_className + "/" + m_name; }

◆ getDecisionHardwareBit()

bool TCS::DecisionAlg::getDecisionHardwareBit ( const unsigned int & bitNumber) const
inherited

! get one hardware decision bit from this algo

Definition at line 52 of file DecisionAlg.cxx.

53{
54 bool value = false;
55 if(bitNumber<m_numberOutputBits){
56 value = (m_hardwareDecisionBits >> bitNumber) & 1;
57 } else {
58 TRG_MSG_WARNING("Cannot get hardware decision bit "<<bitNumber
59 <<" > "<<m_numberOutputBits<<" N output bits "
60 <<" for algo "<<name());
61 }
62 return value;
63}
unsigned int m_numberOutputBits
Definition DecisionAlg.h:94
uint32_t m_hardwareDecisionBits
! decision bits from hardware (assume the algo won't have >31 output bits)
Definition DecisionAlg.h:96

◆ getName()

const std::string & TrigConf::TrigConfMessaging::getName ( ) const
inlineinherited

name accessor

Returns
the name

Definition at line 101 of file TrigConfMessaging.h.

101 {
102 return m_name;
103 }

◆ getOverflowHardwareBit()

bool TCS::DecisionAlg::getOverflowHardwareBit ( const unsigned int & bitNumber) const
inherited

! get one hardware overflow bit from this algo

Definition at line 65 of file DecisionAlg.cxx.

66{
67 bool value = false;
68 if(bitNumber<m_numberOutputBits){
69 value = (m_hardwareOverflowBits >> bitNumber) & 1;
70 } else {
71 TRG_MSG_WARNING("Cannot get hardware overflow bit "<<bitNumber
72 <<" > "<<m_numberOutputBits<<" N output bits "
73 <<" for algo "<<name());
74 }
75 return value;
76}
uint32_t m_hardwareOverflowBits
! overflow bits from hardware (assume the algo won't have >31 output bits)
Definition DecisionAlg.h:98

◆ initialize()

TCS::StatusCode TCS::AnomalyDetectionBDT::initialize ( )
virtual

Reimplemented from TCS::ConfigurableAlg.

Definition at line 400 of file AnomalyDetectionBDT.cxx.

400 {
401
402 p_MaxTob = parameter("MaxTob").value();
403 p_minEt1 = parameter("MinET1").value();
404 p_minEt2 = parameter("MinET2").value();
405 for (size_t i=0; i <numberOutputBits(); ++i) {
406 p_ScoreThreshold[i] = parameter("ScoreThreshold", i).value();
407 }
408 TRG_MSG_INFO("ADBDT: Threshold set to " << p_ScoreThreshold);
409 const std::string bdtfn = "TrigAnomalyDetectionBDT/2025-06-18/fwX-config_nomAD_Jun3_2pi200t20d.json";
410
411 std::string fileLocation;
412
413 #ifndef TRIGCONF_STANDALONE
414 fileLocation = PathResolver::find_calib_file(bdtfn);
415 #else
416 return StatusCode::SUCCESS;
417 #endif
418 // Reading in the config
419 std::ifstream configFile(fileLocation);
420
421 if (!configFile.is_open()) {
422 TRG_MSG_ERROR("Unable to open BDT configuration file." << fileLocation);
423 return StatusCode::FAILURE;
424 }
425
426 nlohmann::json bdt_config; // BDT configuration
428 m_nVar = bdt_config["nDim"];
429 m_mu1_ptmin = bdt_config["variable_float_ranges"]["flat_dimu_mu1_pt_100MeV"]["min"];
430 m_mu1_ptmax = bdt_config["variable_float_ranges"]["flat_dimu_mu1_pt_100MeV"]["max"];
431 m_mu1_etamin = bdt_config["variable_float_ranges"]["flat_dimu_mu1_eta"]["min"];
432 m_mu1_etamax = bdt_config["variable_float_ranges"]["flat_dimu_mu1_eta"]["max"];
433 m_mu1_phimin = bdt_config["variable_float_ranges"]["flat_dimu_mu1_phi_2pi"]["min"];
434 m_mu1_phimax = bdt_config["variable_float_ranges"]["flat_dimu_mu1_phi_2pi"]["max"];
435 m_mu2_ptmin = bdt_config["variable_float_ranges"]["flat_dimu_mu2_pt_100MeV"]["min"];
436 m_mu2_ptmax = bdt_config["variable_float_ranges"]["flat_dimu_mu2_pt_100MeV"]["max"];
437 m_mu2_etamin = bdt_config["variable_float_ranges"]["flat_dimu_mu2_eta"]["min"];
438 m_mu2_etamax = bdt_config["variable_float_ranges"]["flat_dimu_mu2_eta"]["max"];
439 m_mu2_phimin = bdt_config["variable_float_ranges"]["flat_dimu_mu2_phi_2pi"]["min"];
440 m_mu2_phimax = bdt_config["variable_float_ranges"]["flat_dimu_mu2_phi_2pi"]["max"];
441
442 for (auto& [treeName, tree] : bdt_config["trees"].items()) {
443 m_trees.emplace_back(tree, m_nVar);
444 }
445
446 TRG_MSG_DEBUG("In initialize. There are " << m_trees.size() << " trees for AnomalyDetectionBDT.");
447
448 //Setting simulation mode.
449 //This can be set to "lut" or to "math"
450 //"lut" mimics exactly what is done in firmware
451 m_sim_mode = "lut";
452 TRG_MSG_INFO("The sim_mode is " << m_sim_mode);
453
454 //Booking histograms
455 for (size_t i=0; i<numberOutputBits(); ++i) {
456 std::string hname_accept = "hAnomalyDetecionBDT_accept_bit"+std::to_string((int)i);
457 std::string hname_reject = "hAnomalyDetecionBDT_reject_bit"+std::to_string((int)i);
458
459 bookHist(m_histAccept, hname_accept, "AnomalyScore", 100, 0, 128);
460 bookHist(m_histReject, hname_reject, "AnomalyScore", 100, 0, 128);
461 }
462 return StatusCode::SUCCESS;
463}
static std::string find_calib_file(const std::string &logical_file_name)
std::vector< Tree > m_trees
void bookHist(std::vector< std::string > &regName, const std::string &name, const std::string &title, const int binx, const int xmin, const int xmax)
std::vector< std::string > m_histAccept
Definition DecisionAlg.h:73
std::vector< std::string > m_histReject
Definition DecisionAlg.h:74
unsigned int numberOutputBits() const
Definition DecisionAlg.h:39
parType_t value() const
Definition Parameter.h:35
TChain * tree

◆ isCountingAlg()

bool TCS::ConfigurableAlg::isCountingAlg ( ) const
inlineinherited

Definition at line 64 of file ConfigurableAlg.h.

64{ return m_algType == COUNT; }

◆ isDecisionAlg()

bool TCS::ConfigurableAlg::isDecisionAlg ( ) const
inlineinherited

Definition at line 62 of file ConfigurableAlg.h.

62{ return m_algType == DECISION; }

◆ isLegacyTopo()

bool TCS::ConfigurableAlg::isLegacyTopo ( ) const
inlineinherited

Definition at line 66 of file ConfigurableAlg.h.

66{ return m_isLegacyTopo; }

◆ isocut() [1/2]

bool ConfigurableAlg::isocut ( const std::string & threshold,
const unsigned int bit ) const
protectedinherited

Definition at line 484 of file ConfigurableAlg.cxx.

484 {
485 unsigned int value = 0;
486 if (threshold == "None") {value = 0;}
487 else if (threshold == "Loose") {value = 1;}
488 else if (threshold == "Medium") {value = 2;}
489 else if (threshold == "HadMedium") {value = 2;}
490 else if (threshold == "Tight") {value = 3;}
491 else {
492 TRG_MSG_WARNING("No isolation defined as " << threshold);
493 }
494
495 if (bit >= value) {return true;}
496 else {return false;}
497}

◆ isocut() [2/2]

bool ConfigurableAlg::isocut ( const unsigned int threshold,
const unsigned int bit ) const
protectedinherited

Definition at line 500 of file ConfigurableAlg.cxx.

500 {
501 if (bit >= threshold) {return true;}
502 else {return false;}
503}

◆ isSortingAlg()

bool TCS::ConfigurableAlg::isSortingAlg ( ) const
inlineinherited

Definition at line 60 of file ConfigurableAlg.h.

60{ return m_algType == SORT; }

◆ msg() [1/2]

MsgStreamTC & TrigConf::TrigConfMessaging::msg ( ) const
inlineinherited

The standard message stream.

Returns a reference to the message stream May not be invoked before sysInitialize() has been invoked.

Definition at line 86 of file TrigConfMessaging.h.

87 {
88 MsgStreamTC* ms = m_msg_tls.get();
89 if (!ms) {
90 ms = new MsgStreamTC(m_name);
91 m_msg_tls.reset(ms);
92 }
93 return *ms;
94 }
boost::thread_specific_ptr< MsgStreamTC > m_msg_tls
MsgStreamTC instance (a std::cout like with print-out levels)

◆ msg() [2/2]

MsgStreamTC & TrigConf::TrigConfMessaging::msg ( const MSGTC::Level lvl) const
inlineinherited

The standard message stream.

Returns a reference to the default message stream May not be invoked before sysInitialize() has been invoked.

Definition at line 96 of file TrigConfMessaging.h.

97 {
98 return msg() << lvl;
99 }
MsgStreamTC & msg() const
The standard message stream.

◆ msgLvl()

bool TrigConf::TrigConfMessaging::msgLvl ( const MSGTC::Level lvl) const
inlineinherited

Test the output level.

Parameters
lvlThe message level to test against
Returns
boolean Indicting if messages at given level will be printed
Return values
trueMessages at level "lvl" will be printed

Definition at line 75 of file TrigConfMessaging.h.

76 {
77 if (msg().level() <= lvl) {
78 msg() << lvl;
79 return true;
80 }
81 else {
82 return false;
83 }
84 }

◆ name()

const std::string & TCS::ConfigurableAlg::name ( ) const
inlineinherited

Definition at line 48 of file ConfigurableAlg.h.

48{ return m_name; }

◆ numberOutputBits()

unsigned int TCS::DecisionAlg::numberOutputBits ( ) const
inlineinherited

Definition at line 39 of file DecisionAlg.h.

39{ return m_numberOutputBits; }

◆ parameter() [1/2]

const TCS::Parameter & ConfigurableAlg::parameter ( const std::string & parameterName) const
inherited

Definition at line 243 of file ConfigurableAlg.cxx.

243 {
244 return parameters().parameter(parameterName);
245}
const Parameter & parameter(const std::string &parameterName) const

◆ parameter() [2/2]

const TCS::Parameter & ConfigurableAlg::parameter ( const std::string & parameterName,
unsigned int selection ) const
inherited

Definition at line 249 of file ConfigurableAlg.cxx.

249 {
250 return parameters().parameter(parameterName, selection);
251}

◆ parameters()

const ParameterSpace & TCS::ConfigurableAlg::parameters ( ) const
inlineinherited

Definition at line 87 of file ConfigurableAlg.h.

87{ return m_parameters; }

◆ process()

TCS::StatusCode TCS::AnomalyDetectionBDT::process ( const std::vector< TCS::TOBArray const * > & input,
const std::vector< TCS::TOBArray * > & output,
Decision & decision )
virtual

Implements TCS::DecisionAlg.

Definition at line 615 of file AnomalyDetectionBDT.cxx.

617 {
618#ifdef TRIGCONF_STANDALONE
619 return StatusCode::SUCCESS;
620#endif
621 TCS::StatusCode status = processBitCorrect(input,output,decision);
622 if (!status.isSuccess()){
623 return status;
624 }
625
626 // Check if totalScore exceeds the bits that we expect
627 if (m_totalScore >= (1L << 8)) {
628 TRG_MSG_WARNING("ADBDT:The calculated anomaly score exceeds the allowed number of bits.");
629 }
630
632}
virtual StatusCode processBitCorrect(const std::vector< TCS::TOBArray const * > &input, const std::vector< TCS::TOBArray * > &output, Decision &decision)
status
Definition merge.py:16

◆ processBitCorrect()

TCS::StatusCode TCS::AnomalyDetectionBDT::processBitCorrect ( const std::vector< TCS::TOBArray const * > & input,
const std::vector< TCS::TOBArray * > & output,
Decision & decision )
virtual

Implements TCS::DecisionAlg.

Definition at line 466 of file AnomalyDetectionBDT.cxx.

468 {
469
470 if (input.size() != 1){
471 TCS_EXCEPTION("ADBDT algorithm expects only one TOBArray input (muons), but got " << input.size());
472 }
473
474 const TCS::TOBArray* muons = input[0];
475
476 //Reading in number of muons:
477 TRG_MSG_DEBUG("There are " << muons->size() << " muons.");
478
479 if (muons->size() < 2) {
480 TRG_MSG_DEBUG("There are less than 2 muons. Skipping event.");
481 m_totalScore = 0;
482 return StatusCode::SUCCESS;
483 }
484
485 bool hasAmbiguousInputs = TSU::isAmbiguousAnywhere(muons, p_MaxTob, std::min(p_minEt1, p_minEt2));
486
487 int64_t maxScore = 0;
488
489 size_t nMuons = p_MaxTob > 0 ? std::min(muons->size(), p_MaxTob) : muons->size();
490 //We define muon pairs based on the 2-3 leading muons
491 std::vector<std::pair<int, int>> muonPairs;
492 for (size_t i = 0; i < nMuons; ++i) {
493 for (size_t j = i+1; j < nMuons; ++j) {
494 muonPairs.emplace_back(i, j);
495 }
496 }
497
498 for (const auto& [i,j] : muonPairs) {
499
500 std::vector<int64_t> eventValues;
501
502 const auto& mu1 = (*muons)[i];
503 const auto& mu2 = (*muons)[j];
504
505 //ignore combinations failing minET cuts
506 if ( parType_t( mu1.Et() ) <= p_minEt1 ) continue;
507 if ( parType_t( mu2.Et() ) <= p_minEt2 ) continue;
508
509 if (scale(mu1.Et(),m_mu1_ptmin, m_mu1_ptmax) != mapval(mu1.Et(), "pt")
510 || scale(mu1.eta()/40.0, m_mu1_etamin, m_mu1_etamax) != mapval(mu1.eta(), "eta")
511 || scale(mu1.phi()/20.0, m_mu1_phimin, m_mu1_phimax) != mapval(mu1.phi(), "phi")
512 || scale(mu2.Et(),m_mu2_ptmin, m_mu2_ptmax) != mapval(mu2.Et(), "pt")
513 || scale(mu2.eta()/40.0, m_mu2_etamin, m_mu2_etamax) != mapval(mu2.eta(), "eta")
514 || scale(mu2.phi()/20.0, m_mu2_phimin, m_mu2_phimax) != mapval(mu2.phi(), "phi")){
515
516 TRG_MSG_WARNING("The math function for the mapping of Muon pt,eta,or phi does not match the LUT mapping. Check LUT, 'scale' function, or if illegal vartype was given to 'mapval' function");
517
518 }
519
520 if (mapval(mu1.Et(), "pt") == int(mu1.Et()) || mapval(mu2.Et(), "pt") == int(mu2.Et())) {
521
522 TRG_MSG_WARNING("No input transformation done by LUT for muon ET");
523
524 }
525
526 if (mapval(mu1.eta(), "eta") == mu1.eta() || mapval(mu2.eta(), "eta") == mu2.eta()) {
527
528 TRG_MSG_WARNING("No input transformation done by LUT for muon Eta");
529
530 }
531
532 if (mapval(mu1.phi(), "phi") == mu1.phi() || mapval(mu2.phi(), "phi") == mu2.phi()) {
533
534
535 TRG_MSG_DEBUG("No input transformation done by LUT for muon Phi"); //Not a warning, since current transformation for phi
536 //does not change the value except for one input number
537 }
538
539 if (m_sim_mode == "math"){
540 eventValues.push_back(scale(mu1.Et(), m_mu1_ptmin, m_mu1_ptmax)); // muon pT (100MeV)
541 eventValues.push_back(scale(mu1.eta()/40.0, m_mu1_etamin, m_mu1_etamax)); // muon eta (25mrad)
542 eventValues.push_back(scale(mu1.phi()/20.0, m_mu1_phimin, m_mu1_phimax)); // muon phi (50mrad)
543
544 eventValues.push_back(scale(mu2.Et(), m_mu2_ptmin, m_mu2_ptmax)); // muon pT (100MeV)
545 eventValues.push_back(scale(mu2.eta()/40.0, m_mu2_etamin, m_mu2_etamax)); // muon eta (25mrad)
546 eventValues.push_back(scale(mu2.phi()/20.0, m_mu2_phimin, m_mu2_phimax)); // muon phi (50mrad)
547 }
548
549 else if(m_sim_mode == "lut"){
550 eventValues.push_back(mapval(mu1.Et(), "pt"));
551 eventValues.push_back(mapval(mu1.eta(), "eta"));
552 eventValues.push_back(mapval(mu1.phi(), "phi"));
553
554 eventValues.push_back(mapval(mu2.Et(), "pt"));
555 eventValues.push_back(mapval(mu2.eta(), "eta"));
556 eventValues.push_back(mapval(mu2.phi(), "phi"));
557 }
558
559 else{
560 eventValues.push_back(scale(mu1.Et(), m_mu1_ptmin, m_mu1_ptmax)); // muon pT (100MeV)
561 eventValues.push_back(scale(mu1.eta()/40.0, m_mu1_etamin, m_mu1_etamax)); // muon eta (25mrad)
562 eventValues.push_back(scale(mu1.phi()/20.0, m_mu1_phimin, m_mu1_phimax)); // muon phi (50mrad)
563
564 eventValues.push_back(scale(mu2.Et(), m_mu2_ptmin, m_mu2_ptmax)); // muon pT (100MeV)
565 eventValues.push_back(scale(mu2.eta()/40.0, m_mu2_etamin, m_mu2_etamax)); // muon eta (25mrad)
566 eventValues.push_back(scale(mu2.phi()/20.0, m_mu2_phimin, m_mu2_phimax)); // muon phi (50mrad)
567 }
568
569 // calculate the score as sum of score from all trees
570 int64_t score = 0;
571 for (Tree tree : m_trees) {
572 score += tree.getTreeScore(eventValues);
573 }
574
575 // from all muon combinations keep the highest score
576 if (score > maxScore) {
577 maxScore = score;
578 }
579 }
580
581 m_totalScore = maxScore;
582 TRG_MSG_DEBUG("Anomaly Score = " << m_totalScore);
583
584 //Now, we compare and set the decision bit:
585 for (size_t i=0; i<numberOutputBits(); ++i){
586 bool accept = false;
587 // const bool fillAccept = fillHistos() && (fillHistosBasedOnHardware() ? getDecisionHardwareBit(i) : accept);
588 // const bool fillReject = fillHistos() && !fillAccept;
589 // const bool alreadyFilled = decision.bit(i);
590
592 accept = true;
593 decision.setBit(i,true);
594 for (size_t k = 0; k < 3 && k < muons->size(); ++k){
595 output[i]->push_back((*muons)[k]);
596 }
597 }
598
599 output[i]->setAmbiguityFlag(hasAmbiguousInputs);
600
601 if(fillHistos()) {
602 const bool fillAccept = fillHistosBasedOnHardware() ? getDecisionHardwareBit(i) : accept;
603 if (fillAccept) {
605 } else {
607 }
608 }
609
610 TRG_MSG_DEBUG("Decision for bit " << i << ": " <<(accept?"pass":"fail") << "with an anomaly score = " << m_totalScore << std::endl);
611 }
612 return StatusCode::SUCCESS;
613}
void fillHist1D(const std::string &histName, double x)
size_t size() const
bool fillHistosBasedOnHardware() const
! getter
bool fillHistos() const
whether the monitoring histograms should be filled
bool getDecisionHardwareBit(const unsigned int &bitNumber) const
! get one hardware decision bit from this algo
StatusCode accept(const xAOD::Muon *mu)
uint32_t parType_t
Definition Parameter.h:22
bool isAmbiguousAnywhere(TCS::TOBArray const *tobs, size_t pos, unsigned minEt=0)
output
Definition merge.py:16

◆ quadraticSumBW()

unsigned long ConfigurableAlg::quadraticSumBW ( int i1,
int i2 )
inherited

Definition at line 160 of file ConfigurableAlg.cxx.

160 {
161 return TSU::Kinematics::quadraticSumBW(i1, i2);
162}
static unsigned long quadraticSumBW(int i1, int i2)
compute the sum in quadrature of two ints

◆ registerHist() [1/2]

void ConfigurableAlg::registerHist ( TH1 * h)
protectedinherited

Definition at line 262 of file ConfigurableAlg.cxx.

262 {
263 m_impl->registerHist(h);
264}

◆ registerHist() [2/2]

void ConfigurableAlg::registerHist ( TH2 * h)
protectedinherited

Definition at line 266 of file ConfigurableAlg.cxx.

266 {
267 m_impl->registerHist(h);
268}

◆ reset()

StatusCode TCS::ConfigurableAlg::reset ( )
inlineinherited

Definition at line 58 of file ConfigurableAlg.h.

58{ return doReset(); }
virtual StatusCode doReset()=0

◆ resetHardwareBits()

TCS::DecisionAlg & TCS::DecisionAlg::resetHardwareBits ( )
inherited

! reset all hardware bits for this algo

Definition at line 45 of file DecisionAlg.cxx.

46{
49 return *this;
50}

◆ setAlgoId()

void TCS::ConfigurableAlg::setAlgoId ( unsigned int algoId)
inlineinherited

Definition at line 93 of file ConfigurableAlg.h.

93{ m_algoId = algoId; }
unsigned int algoId() const

◆ setClassName()

void TCS::ConfigurableAlg::setClassName ( const std::string & className)
inlineinherited

Definition at line 43 of file ConfigurableAlg.h.

const std::string & className() const

◆ setFillHistosBasedOnHardware()

TCS::DecisionAlg & TCS::DecisionAlg::setFillHistosBasedOnHardware ( const bool & value)
inherited

! toggle m_fillHistosBasedOnHardware

Definition at line 78 of file DecisionAlg.cxx.

79{
81 return *this;
82}

◆ setHardwareBits()

TCS::DecisionAlg & TCS::DecisionAlg::setHardwareBits ( const unsigned int & bitNumber,
const bool & valueDecision,
const bool & valueOverflow )
inherited

propagate the hardware decision bits for each output bit of this algo

These bits are used only to fill the monitoring histograms. They do not have any use in the L1TopoSimulation itself.

Definition at line 25 of file DecisionAlg.cxx.

28{
29 if(bitNumber<m_numberOutputBits){
30 if(valueDecision)
31 m_hardwareDecisionBits |= (1 << bitNumber);
32 if(valueOverflow)
33 m_hardwareOverflowBits |= (1 << bitNumber);
34 } else if(bitNumber<32) {
35 TRG_MSG_WARNING("Cannot set hardware bits for bit number "<<bitNumber
36 <<" > "<<m_numberOutputBits<<" N output bits "
37 <<" for algo "<<name());
38 } else {
39 TRG_MSG_WARNING("Cannot set hardware bits for bit number "<<bitNumber
40 <<" > 31 N output bits for algo "<<name());
41 }
42 return *this;
43}

◆ setL1TopoHistSvc()

void ConfigurableAlg::setL1TopoHistSvc ( std::shared_ptr< IL1TopoHistSvc > histSvc)
inherited

sets the external hist service

forwarding public interface

Definition at line 258 of file ConfigurableAlg.cxx.

258 {
259 m_impl->setL1TopoHistSvc(std::move(histSvc));
260}

◆ setLegacyMode()

void TCS::ConfigurableAlg::setLegacyMode ( bool isLegacyTopo)
inlineinherited

Definition at line 45 of file ConfigurableAlg.h.

◆ setNumberOutputBits()

void TCS::DecisionAlg::setNumberOutputBits ( unsigned int numberOutputBits)
inlineinherited

Definition at line 40 of file DecisionAlg.h.

◆ setParameters()

void ConfigurableAlg::setParameters ( const ParameterSpace & parameters)
inherited

Definition at line 222 of file ConfigurableAlg.cxx.

222 {
223
224 // check if parameterspace is for this algorithm
225 if(name() != parameters.algName()) {
226 TCS_EXCEPTION("Name of parameter set (" << parameters.algName() << ") do not match configurable name (" << name() << ")" );
227 }
228
229 // copy parameters
230 for(const Parameter & p : parameters) {
231 try {
232 m_parameters.setParameter(p);
233 }
234 catch(const TCS::Exception& e) {
235 TCS_EXCEPTION("Algorithm configuration failed for " << name() << "! Caught exception: " << e.what());
236 }
237 }
238}

◆ setSkipHistos()

TCS::DecisionAlg & TCS::DecisionAlg::setSkipHistos ( const bool & value)
inherited

! toggle m_skipHistos (see TopoSteering::setOutputAlgosSkipHistograms)

Definition at line 89 of file DecisionAlg.cxx.

90{
92 return *this;
93}

◆ skipHistos()

bool TCS::DecisionAlg::skipHistos ( ) const
inherited

! getter

Definition at line 95 of file DecisionAlg.cxx.

96{
97 return m_skipHistos;
98}

◆ ToString()

std::string ConfigurableAlg::ToString ( const int val)
privateinherited

Definition at line 475 of file ConfigurableAlg.cxx.

476{
477 const int val_int = static_cast<int>(val);
478 std::ostringstream temp;
479 temp << val_int;
480 return temp.str();
481}

Member Data Documentation

◆ m_algoId

unsigned int TCS::ConfigurableAlg::m_algoId {0}
privateinherited

Definition at line 138 of file ConfigurableAlg.h.

138{0};

◆ m_algType

AlgType TCS::ConfigurableAlg::m_algType
privateinherited

Definition at line 142 of file ConfigurableAlg.h.

◆ m_className

std::string TCS::ConfigurableAlg::m_className {""}
privateinherited

Definition at line 135 of file ConfigurableAlg.h.

135{""};

◆ m_fillHistosBasedOnHardware

bool TCS::DecisionAlg::m_fillHistosBasedOnHardware {0}
privateinherited

! fill accept/reject monitoring histos based on hdw decision

Definition at line 100 of file DecisionAlg.h.

100{0};

◆ m_hardwareDecisionBits

uint32_t TCS::DecisionAlg::m_hardwareDecisionBits {0}
privateinherited

! decision bits from hardware (assume the algo won't have >31 output bits)

Definition at line 96 of file DecisionAlg.h.

96{0};

◆ m_hardwareOverflowBits

uint32_t TCS::DecisionAlg::m_hardwareOverflowBits {0}
privateinherited

! overflow bits from hardware (assume the algo won't have >31 output bits)

Definition at line 98 of file DecisionAlg.h.

98{0};

◆ m_histAccept

std::vector<std::string> TCS::DecisionAlg::m_histAccept
protectedinherited

Definition at line 73 of file DecisionAlg.h.

◆ m_histAcceptEta1Eta2

std::vector<std::string> TCS::DecisionAlg::m_histAcceptEta1Eta2
protectedinherited

Definition at line 79 of file DecisionAlg.h.

◆ m_histAcceptEta2Eta3

std::vector<std::string> TCS::DecisionAlg::m_histAcceptEta2Eta3
protectedinherited

Definition at line 81 of file DecisionAlg.h.

◆ m_histAcceptEta3Eta1

std::vector<std::string> TCS::DecisionAlg::m_histAcceptEta3Eta1
protectedinherited

Definition at line 83 of file DecisionAlg.h.

◆ m_histAcceptM

std::vector<std::string> TCS::DecisionAlg::m_histAcceptM
protectedinherited

Definition at line 75 of file DecisionAlg.h.

◆ m_histAcceptX

std::vector<std::string> TCS::DecisionAlg::m_histAcceptX
protectedinherited

Definition at line 77 of file DecisionAlg.h.

◆ m_histReject

std::vector<std::string> TCS::DecisionAlg::m_histReject
protectedinherited

Definition at line 74 of file DecisionAlg.h.

◆ m_histRejectEta1Eta2

std::vector<std::string> TCS::DecisionAlg::m_histRejectEta1Eta2
protectedinherited

Definition at line 80 of file DecisionAlg.h.

◆ m_histRejectEta2Eta3

std::vector<std::string> TCS::DecisionAlg::m_histRejectEta2Eta3
protectedinherited

Definition at line 82 of file DecisionAlg.h.

◆ m_histRejectEta3Eta1

std::vector<std::string> TCS::DecisionAlg::m_histRejectEta3Eta1
protectedinherited

Definition at line 84 of file DecisionAlg.h.

◆ m_histRejectM

std::vector<std::string> TCS::DecisionAlg::m_histRejectM
protectedinherited

Definition at line 76 of file DecisionAlg.h.

◆ m_histRejectX

std::vector<std::string> TCS::DecisionAlg::m_histRejectX
protectedinherited

Definition at line 78 of file DecisionAlg.h.

◆ m_impl

std::unique_ptr<ConfigurableAlgImpl> TCS::ConfigurableAlg::m_impl
privateinherited

Definition at line 129 of file ConfigurableAlg.h.

◆ m_isLegacyTopo

bool TCS::ConfigurableAlg::m_isLegacyTopo
privateinherited

Definition at line 144 of file ConfigurableAlg.h.

◆ m_msg_tls

boost::thread_specific_ptr<MsgStreamTC> TrigConf::TrigConfMessaging::m_msg_tls
mutableprivateinherited

MsgStreamTC instance (a std::cout like with print-out levels)

Definition at line 71 of file TrigConfMessaging.h.

◆ m_mu1_etamax

float TCS::AnomalyDetectionBDT::m_mu1_etamax {0}
private

Definition at line 68 of file AnomalyDetectionBDT.h.

68{0}, m_mu1_ptmax{0}, m_mu1_etamin{0}, m_mu1_etamax{0}, m_mu1_phimin{0}, m_mu1_phimax{0}; // range of the first muon

◆ m_mu1_etamin

float TCS::AnomalyDetectionBDT::m_mu1_etamin {0}
private

Definition at line 68 of file AnomalyDetectionBDT.h.

68{0}, m_mu1_ptmax{0}, m_mu1_etamin{0}, m_mu1_etamax{0}, m_mu1_phimin{0}, m_mu1_phimax{0}; // range of the first muon

◆ m_mu1_phimax

float TCS::AnomalyDetectionBDT::m_mu1_phimax {0}
private

Definition at line 68 of file AnomalyDetectionBDT.h.

68{0}, m_mu1_ptmax{0}, m_mu1_etamin{0}, m_mu1_etamax{0}, m_mu1_phimin{0}, m_mu1_phimax{0}; // range of the first muon

◆ m_mu1_phimin

float TCS::AnomalyDetectionBDT::m_mu1_phimin {0}
private

Definition at line 68 of file AnomalyDetectionBDT.h.

68{0}, m_mu1_ptmax{0}, m_mu1_etamin{0}, m_mu1_etamax{0}, m_mu1_phimin{0}, m_mu1_phimax{0}; // range of the first muon

◆ m_mu1_ptmax

float TCS::AnomalyDetectionBDT::m_mu1_ptmax {0}
private

Definition at line 68 of file AnomalyDetectionBDT.h.

68{0}, m_mu1_ptmax{0}, m_mu1_etamin{0}, m_mu1_etamax{0}, m_mu1_phimin{0}, m_mu1_phimax{0}; // range of the first muon

◆ m_mu1_ptmin

float TCS::AnomalyDetectionBDT::m_mu1_ptmin {0}
private

Definition at line 68 of file AnomalyDetectionBDT.h.

68{0}, m_mu1_ptmax{0}, m_mu1_etamin{0}, m_mu1_etamax{0}, m_mu1_phimin{0}, m_mu1_phimax{0}; // range of the first muon

◆ m_mu2_etamax

float TCS::AnomalyDetectionBDT::m_mu2_etamax {0}
private

Definition at line 69 of file AnomalyDetectionBDT.h.

69{0}, m_mu2_ptmax{0}, m_mu2_etamin{0}, m_mu2_etamax{0}, m_mu2_phimin{0}, m_mu2_phimax{0}; // range of the second muon

◆ m_mu2_etamin

float TCS::AnomalyDetectionBDT::m_mu2_etamin {0}
private

Definition at line 69 of file AnomalyDetectionBDT.h.

69{0}, m_mu2_ptmax{0}, m_mu2_etamin{0}, m_mu2_etamax{0}, m_mu2_phimin{0}, m_mu2_phimax{0}; // range of the second muon

◆ m_mu2_phimax

float TCS::AnomalyDetectionBDT::m_mu2_phimax {0}
private

Definition at line 69 of file AnomalyDetectionBDT.h.

69{0}, m_mu2_ptmax{0}, m_mu2_etamin{0}, m_mu2_etamax{0}, m_mu2_phimin{0}, m_mu2_phimax{0}; // range of the second muon

◆ m_mu2_phimin

float TCS::AnomalyDetectionBDT::m_mu2_phimin {0}
private

Definition at line 69 of file AnomalyDetectionBDT.h.

69{0}, m_mu2_ptmax{0}, m_mu2_etamin{0}, m_mu2_etamax{0}, m_mu2_phimin{0}, m_mu2_phimax{0}; // range of the second muon

◆ m_mu2_ptmax

float TCS::AnomalyDetectionBDT::m_mu2_ptmax {0}
private

Definition at line 69 of file AnomalyDetectionBDT.h.

69{0}, m_mu2_ptmax{0}, m_mu2_etamin{0}, m_mu2_etamax{0}, m_mu2_phimin{0}, m_mu2_phimax{0}; // range of the second muon

◆ m_mu2_ptmin

float TCS::AnomalyDetectionBDT::m_mu2_ptmin {0}
private

Definition at line 69 of file AnomalyDetectionBDT.h.

69{0}, m_mu2_ptmax{0}, m_mu2_etamin{0}, m_mu2_etamax{0}, m_mu2_phimin{0}, m_mu2_phimax{0}; // range of the second muon

◆ m_name

std::string TCS::ConfigurableAlg::m_name {""}
privateinherited

Definition at line 134 of file ConfigurableAlg.h.

134{""};

◆ m_numberOutputBits

unsigned int TCS::DecisionAlg::m_numberOutputBits {1}
privateinherited

Definition at line 94 of file DecisionAlg.h.

94{1};

◆ m_nVar

int TCS::AnomalyDetectionBDT::m_nVar {0}
private

Definition at line 66 of file AnomalyDetectionBDT.h.

66{0}; // dimension of the BDT

◆ m_parameters

ParameterSpace TCS::ConfigurableAlg::m_parameters {""}
privateinherited

Definition at line 140 of file ConfigurableAlg.h.

140{""};

◆ m_sim_mode

std::string TCS::AnomalyDetectionBDT::m_sim_mode
private

Definition at line 70 of file AnomalyDetectionBDT.h.

◆ m_skipHistos

bool TCS::DecisionAlg::m_skipHistos {0}
privateinherited

! skip filling monitoring histos, used only when m_fillHistosBasedOnHardware==true

Definition at line 102 of file DecisionAlg.h.

102{0};

◆ m_totalScore

int64_t TCS::AnomalyDetectionBDT::m_totalScore {0}
private

Definition at line 67 of file AnomalyDetectionBDT.h.

67{0}; // score of the input event

◆ m_trees

std::vector<Tree> TCS::AnomalyDetectionBDT::m_trees
private

Definition at line 65 of file AnomalyDetectionBDT.h.

◆ p_MaxTob

size_t TCS::AnomalyDetectionBDT::p_MaxTob {3}
private

Definition at line 74 of file AnomalyDetectionBDT.h.

74{3}; //Number of TOBs (e.g., 3 muon events)

◆ p_minEt1

parType_t TCS::AnomalyDetectionBDT::p_minEt1 {0}
private

Definition at line 72 of file AnomalyDetectionBDT.h.

72{0};

◆ p_minEt2

parType_t TCS::AnomalyDetectionBDT::p_minEt2 {0}
private

Definition at line 73 of file AnomalyDetectionBDT.h.

73{0};

◆ p_ScoreThreshold

parType_t TCS::AnomalyDetectionBDT::p_ScoreThreshold[2] = { 0, 0 }
private

Definition at line 71 of file AnomalyDetectionBDT.h.

71{ 0, 0 };

The documentation for this class was generated from the following files: