26 {
27 StatusFlagCOOL::
28 StatusFlagCOOL (const std::string& dbStr, const std::string& folderStr, int runS, int lumiS, int runU, int lumiU)
29 : StatusFlagCOOLBase(dbStr, folderStr, runS, lumiS, runU, lumiU) {
30 }
31
32 StatusFlagCOOL::
33 StatusFlagCOOL (int runS, int lumiS, int runU, int lumiU)
34 : StatusFlagCOOLBase(runS, lumiS, runU, lumiU) {
35 }
36
37 StatusFlagCOOL::
38 StatusFlagCOOL()
39 : StatusFlagCOOLBase() {
40 }
41
42 cool::RecordSpecification
43 StatusFlagCOOL::
44 createSpec() {
45
46 cool::RecordSpecification
spec;
47 spec.extend(
"Code", cool::StorageType::Int32);
48 spec.extend(
"deadFrac", cool::StorageType::Float);
49 spec.extend(
"Thrust", cool::StorageType::Float);
50 if (!(spec == m_coolFolder->payloadSpecification())) {
51 std::cout << "ERROR Source and destination folder specifications differ." << std::endl;
52 }
54 }
55
56 coral::AttributeList
57 StatusFlagCOOL::
58 createPayload(int colourCode, float dfrac, float thrust, const cool::RecordSpecification& spec) {
59 coral::AttributeList
payload = cool::Record(spec).attributeList();
60 payload[
"Code"].data<cool::Int32>() = colourCode;
61 payload[
"deadFrac"].data<cool::Float>() = dfrac;
62 payload[
"Thrust"].data<cool::Float>() = thrust;
63
64
65
66
68 }
69
70 void
71 StatusFlagCOOL::
72 insert(cool::ChannelId channelId, int code, float dfrac, float thrust, const std::string& tag_name) {
73 try {
74 cool::RecordSpecification
spec = this->createSpec();
76
77
78 insert_helper(channelId, payload, tag_name);
79 }
80 catch (cool::Exception& e) {
81 std::cout <<
"Unknown exception caught!" <<
e.what() << std::endl;
82 }
83 }
84
85 void
86 StatusFlagCOOL::
87 insert(std::string channelName, int code, float dfrac, float thrust, const std::string& tag_name) {
88 try {
89 this->insert(this->getCoolFolder()->
channelId(channelName), code, dfrac, thrust, tag_name);
90 }
91 catch (cool::Exception& e) {
92 std::cout <<
"Unknown exception caught!" <<
e.what() << std::endl;
93 }
94 }
95}