ATLAS Offline Software
Loading...
Searching...
No Matches
CTPConfig.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
3*/
4
7
8#include <iostream>
9#include <fstream>
10
11using namespace std;
12using namespace TrigConf;
13
15 m_ctpVersion( 0 ),
16 m_l1Version( 0 ),
17 m_PrescaleSetId( 0 ),
19 m_LoadCtpFiles( true ),
20 m_LoadCtpcoreFiles( true ),
21 m_LoadCtpinFiles( true ),
22 m_LoadCtpmonFiles( true ),
23 m_CTPFiles( nullptr )
24{}
25
29
30
31
32void
33CTPConfig::setCTPVersion( unsigned int v ) {
34 m_ctpVersion = v;
36}
37
38void
39CTPConfig::setL1Version( unsigned int v ) {
40 m_l1Version = v;
42}
43
44void
46 for(int i=0; i<4; i++)
47 m_PrescaleSets[i].reset();
48}
49
50void
52 if(pss.partition()>3) {
53 cout << "Error: Partition " << pss.partition() << " of PrescaleSet " << pss.name() << " is larger than 3" << endl;
54 } else {
55 m_PrescaleSets[pss.partition()] = pss;
56 }
57}
58
59
60bool
61CTPConfig::equals(const CTPConfig* other, const std::string& filename) const {
62 bool equals = true;
63 DiffStruct* ds = compareTo(other);
64 if(ds) {
65 equals = false;
66 std::ofstream xmlfile;
67 xmlfile.open(filename.c_str());
68 // file will be empty if there are no differences
69 xmlfile << "<?xml version=\"1.0\" ?>" << std::endl;
70 ds->writeXML(xmlfile);
71 xmlfile.close();
72 delete ds;
73 }
74 return equals;
75}
76
79 DiffStruct * ds = new DiffStruct("LVL1Config");
80 ds->name = name();
81 ds->check("name", name(), o->name());
82
83 ds->addSub( menu().compareTo( & o->menu()) );
84 // ds->addSub( getHLTChainList().compareTo( & o->getHLTChainList()) );
85
86 if(ds->empty()) {
87 delete ds; ds=0;
88 }
89 return ds;
90}
91
92void
93CTPConfig::print(const std::string& indent, unsigned int detail) const {
94 if(detail>=1) {
95 cout << indent << "================================================================================" << endl;
96 cout << indent << "CTP Configuration";
97 if(smk()>0) cout << " (SMK = " << smk() << ")";
98 cout << ": "; printNameIdV(indent);
99 cout << indent << "CTP Version " << ctpVersion() << endl;
100 cout << indent << "L1 Version " << l1Version() << endl;
105 cout << indent << "================================================================================" << endl;
106 }
107}
108
109
110void
111CTPConfig::writeXML(const std::string & filename, int indentWidth) const {
112 std::ofstream xmlfile;
113 xmlfile.open( filename );
114 int indentLevel=1;
115 xmlfile << "<?xml version=\"1.0\"?>" << endl
116 << "<LVL1Config name=\"" << menu().name() << "\""
117 << " ctpVersion=\"" << ctpVersion() << "\""
118 << " l1Version=\"" << l1Version() << "\""
119 << ">" << endl
120 << " <!--File is generated by TrigConfReadWrite-->" << endl
121 << " <!--No. L1 thresholds defined: " << menu().thresholdConfig().size() << "-->" << endl
122 << " <!--No. L1 items defined: " << menu().size() << "-->" << endl;
123 writeXML(xmlfile,indentLevel,indentWidth);
124 xmlfile << "</LVL1Config>" << endl;
125 xmlfile.close();
126
127}
128
129
130void
131CTPConfig::writeXML(std::ostream & xmlfile, int indentLevel, int indentWidth) const {
132 menu().writeXMLItems(xmlfile, indentLevel, indentWidth);
133 for(const PrescaleSet& pss: m_PrescaleSets) {
134 if( ! pss.isNull()) {
135 pss.writeXML(xmlfile, indentLevel, indentWidth);
136 }
137 }
138 menu().writeXMLThresholds(xmlfile, indentLevel, indentWidth);
139 menu().writeXMLMonCounters(xmlfile, indentLevel, indentWidth);
140 random().writeXML(xmlfile, indentLevel, indentWidth);
141 bunchGroupSet().writeXML(xmlfile, indentLevel, indentWidth);
142 prescaledClock().writeXML(xmlfile, indentLevel, indentWidth);
143 menu().caloInfo().writeXML(xmlfile, indentLevel, indentWidth);
144 muCTPi().writeXML(xmlfile,indentLevel,indentWidth);
145}
146
virtual void print(const std::string &indent="", unsigned int detail=1) const override
void writeXML(std::ostream &xmlfile, int indentLevel=0, int indentWidth=2) const
const PrescaledClock & prescaledClock() const
Definition CTPConfig.h:41
unsigned int ctpVersion() const
Definition CTPConfig.h:33
virtual ~CTPConfig() override
Definition CTPConfig.cxx:26
const Random & random() const
Definition CTPConfig.h:43
unsigned int l1Version() const
Definition CTPConfig.h:34
void setPrescaleSet(const PrescaleSet &pss)
Definition CTPConfig.cxx:51
const BunchGroupSet & bunchGroupSet() const
Definition CTPConfig.h:40
virtual void print(const std::string &indent="", unsigned int detail=1) const override
Definition CTPConfig.cxx:93
unsigned int m_l1Version
Definition CTPConfig.h:105
PrescaleSet m_PrescaleSets[4]
Definition CTPConfig.h:109
const Menu & menu() const
Definition CTPConfig.h:38
const Muctpi & muCTPi() const
Definition CTPConfig.h:46
const PrescaleSet & prescaleSet(unsigned int partition=0) const
Definition CTPConfig.h:39
CTPFiles * m_CTPFiles
Definition CTPConfig.h:121
void writeXML(const std::string &filename, int indentWidth=2) const
void setL1Version(unsigned int v)
Definition CTPConfig.cxx:39
DiffStruct * compareTo(const CTPConfig *o) const
Definition CTPConfig.cxx:78
unsigned int m_ctpVersion
Definition CTPConfig.h:104
void setCTPVersion(unsigned int v)
Definition CTPConfig.cxx:33
bool equals(const CTPConfig *other, const std::string &filename) const
Definition CTPConfig.cxx:61
void writeXML(std::ostream &xmlfile, int indentLevel=0, int indentWidth=2) const
Definition CaloInfo.cxx:98
void writeXMLThresholds(std::ostream &xmlfile, int indentLevel=0, int indentWidth=2) const
Definition Menu.cxx:299
int size() const
Definition Menu.h:143
void writeXMLMonCounters(std::ostream &xmlfile, int indentLevel=0, int indentWidth=2) const
Definition Menu.cxx:313
virtual void print(const std::string &indent="", unsigned int detail=1) const override
Definition Menu.cxx:210
const CaloInfo & caloInfo() const
Definition Menu.h:74
const ThresholdConfig & thresholdConfig() const
Definition Menu.h:73
void writeXMLItems(std::ostream &xmlfile, int indentLevel=0, int indentWidth=2) const
Definition Menu.cxx:288
virtual void writeXML(std::ostream &xmlfile, int indentLevel=0, int indentWidth=2) const
Definition Muctpi.cxx:28
virtual void print(const std::string &indent="", unsigned int detail=1) const override
unsigned int partition() const
Definition PrescaleSet.h:40
virtual void writeXML(std::ostream &xmlfile, int indentLevel=0, int indentWidth=2) const
virtual void print(const std::string &indent="", unsigned int detail=1) const override
Definition Random.cxx:28
virtual void writeXML(std::ostream &xmlfile, int indentLevel=0, int indentWidth=2) const
Definition Random.cxx:49
std::ostream & indent(std::ostream &o, int lvl, int size) const
const std::string & name() const
void printNameIdV(const std::string &indent="") const
unsigned int smk() const
static std::vector< std::string > xmlfile
Definition iLumiCalc.h:29
Forward iterator to traverse the main components of the trigger configuration.
Definition Config.h:22
STL namespace.