ATLAS Offline Software
Loading...
Searching...
No Matches
Connector.h
Go to the documentation of this file.
1// Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
2
3#ifndef L1TopoCoreSim_Connector
4#define L1TopoCoreSim_Connector
5
6#include <iostream>
7#include <vector>
8#include <string>
9
11#include "L1TopoCommon/Types.h"
12
13
14namespace TCS {
15
16 class ConfigurableAlg;
17
18 // std::vector<std::string> vectorize(const std::string& str);
19
20 // std::vector<std::string> vectorize2(const std::string &str1, const std::string &str2);
21
22 class Connector {
23 public:
24
26
27 // standard connector
28 Connector( const std::string & name,
29 ConnectorType conntype );
30
31 Connector( const std::string & name,
32 const std::vector<std::string> & inputnames,
33 const std::string & algorithm,
34 const std::vector<std::string> & outputnames,
35 ConnectorType conntype );
36
37 virtual ~Connector();
38
39 bool isInputConnector() const { return m_conntype == INPUT; }
40 bool isSortingConnector() const { return m_conntype == SORT; }
41 bool isDecisionConnector() const { return m_conntype == DECISION; }
42 bool isCountingConnector() const { return m_conntype == COUNT; }
43
44 const std::string & name() const { return m_name; }
45 const std::string & algorithmName() const { return m_algorithmName; }
46 const std::vector<std::string> & inputNames() const { return m_inputNames; }
47 const std::vector<std::string> & outputNames() const { return m_outputNames; }
48
49 const std::vector<TCS::Connector*> & inputConnectors() const { return m_inputConnectors; }
50 const TCS::ConfigurableAlg* algorithm() const { return m_algorithm; }
51
53
54 virtual StatusCode clearOutput() = 0;
55
57
58 // accessors
59 bool isExecuted() const { return m_isExecuted; }
60
62
63 unsigned int numberOutputBits() const;
64
69 void toggleInputOverflow(const bool value);
70 bool hasInputOverflow() const { return m_hasInputOverflow; }
71
72 void toggleAmbiguity(const bool value);
73 bool hasAmbiguity() const { return m_hasAmbiguity; }
74
75 protected: // functions
76
77 friend class TopoSteering;
79
80 // setters
82
83 void setExecutionStatusCode(StatusCode statusCode) { m_executionStatusCode = statusCode; }
84
85 std::vector<TCS::Connector*> & inputConnectors() { return m_inputConnectors; }
86
88
89 protected: // data
90
91 // configuration of the connector: name, input, algorithms
92 std::string m_name{""};
93 std::string m_algorithmName{""};
94 std::vector<std::string> m_inputNames;
95 std::vector<std::string> m_outputNames;
96
97 // the instances for input and algorithms (algorithms are owned by AlgFactory, connectors by the steering)
98 std::vector<TCS::Connector*> m_inputConnectors;
99
103
104 // status information
105 bool m_isExecuted {false}; // true if connector alg(s) have been executed on current event (must be reset at begin of event
106
107 StatusCode m_executionStatusCode {StatusCode::SUCCESS}; // StatusCode of last execution (for cache)
112
113 bool m_hasAmbiguity{false};
114
115 private:
116
118
119 };
120
121}
122
123std::ostream & operator<<(std::ostream &, const TCS::Connector&);
124
125#endif
std::ostream & operator<<(std::ostream &, const TCS::Connector &)
Definition Connector.cxx:87
bool hasInputOverflow() const
Definition Connector.h:70
bool isExecuted() const
Definition Connector.h:59
StatusCode reset()
Definition Connector.cxx:48
friend class TopoSteering
Definition Connector.h:77
std::string m_algorithmName
Definition Connector.h:93
void toggleInputOverflow(const bool value)
to be toggled after 'attachOutputData' is called.
Definition Connector.cxx:76
std::string m_name
Definition Connector.h:92
bool hasAmbiguity() const
Definition Connector.h:73
virtual StatusCode clearOutput()=0
void setExecutionStatusCode(StatusCode statusCode)
Definition Connector.h:83
const std::vector< TCS::Connector * > & inputConnectors() const
Definition Connector.h:49
Connector(const std::string &name, ConnectorType conntype)
Definition Connector.cxx:31
friend class TopoSteeringStructure
Definition Connector.h:78
const std::vector< std::string > & inputNames() const
Definition Connector.h:46
StatusCode m_executionStatusCode
Definition Connector.h:107
void setIsExecuted(bool isExecuted)
Definition Connector.h:81
void toggleAmbiguity(const bool value)
Definition Connector.cxx:81
std::vector< TCS::Connector * > m_inputConnectors
Definition Connector.h:98
const std::string & algorithmName() const
Definition Connector.h:45
bool isSortingConnector() const
Definition Connector.h:40
bool isInputConnector() const
Definition Connector.h:39
bool isDecisionConnector() const
Definition Connector.h:41
unsigned int numberOutputBits() const
Definition Connector.cxx:68
TCS::ConfigurableAlg * algorithm()
Definition Connector.h:87
ConnectorType m_conntype
Definition Connector.h:117
bool m_hasAmbiguity
Definition Connector.h:113
StatusCode executionStatusCode() const
Definition Connector.h:61
const std::vector< std::string > & outputNames() const
Definition Connector.h:47
bool isCountingConnector() const
Definition Connector.h:42
bool m_hasInputOverflow
whether the input data came with an overflow bit
Definition Connector.h:111
std::vector< TCS::Connector * > & inputConnectors()
Definition Connector.h:85
std::vector< std::string > m_inputNames
Definition Connector.h:94
const std::string & name() const
Definition Connector.h:44
virtual void setAlgorithm(TCS::ConfigurableAlg *)
Definition Connector.cxx:42
const TCS::ConfigurableAlg * algorithm() const
Definition Connector.h:50
virtual ~Connector()
Definition Connector.cxx:38
std::vector< std::string > m_outputNames
Definition Connector.h:95
TCS::ConfigurableAlg * m_algorithm
the algorithm that belongs to this connector
Definition Connector.h:102
std::string algorithm
Definition hcg.cxx:85