ATLAS Offline Software
CaloSinCosLoader.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
3 */
4 
6 //
7 //NAME: CaloSinCosLoader.cpp
8 //PACKAGE: TrigConfStorage
9 //
10 //AUTHOR: J.Haller (CERN) Johannes.Haller@cern.ch
11 //CREATED: 31. Oct. 2005
12 //
13 //PURPOSE:
14 //
15 //
17 
18 #include "./CaloSinCosLoader.h"
19 
20 #include <CoralBase/Attribute.h>
21 #include <CoralBase/AttributeList.h>
22 
23 #include "RelationalAccess/SchemaException.h"
24 #include "RelationalAccess/ITransaction.h"
25 #include "RelationalAccess/ITable.h"
26 #include "RelationalAccess/ISchema.h"
27 #include "RelationalAccess/ICursor.h"
28 #include "RelationalAccess/IQuery.h"
29 
31 
32 #include <iostream>
33 #include <stdexcept>
34 #include <typeinfo>
35 
36 bool
38  msg() << "CaloSinCosLoader started loading data via ID. ID = " << cscTarget.id() << std::endl;
39 
40  try {
41  startSession();
42  msg() << "Loading CaloSinCos " << cscTarget.id() << std::endl;
43 
44  coral::ITable& table = m_session.nominalSchema().tableHandle( "L1_CALO_SIN_COS");
45  coral::IQuery* query = table.newQuery();
46  query->setRowCacheSize( 5 );
47 
48  // the query condition
49  std::string condition = "L1CSC_ID = :l1cscid";
50 
51  // binding
52  coral::AttributeList boundvars;
53  boundvars.extend<int>("l1cscid");
54  boundvars[0].data<int>() = (int)cscTarget.id();
55 
56  query->setCondition( condition, boundvars );
57 
58  //Output
59  coral::AttributeList attList;
60  attList.extend<int>( "L1CSC_VERSION" );
61  attList.extend<std::string>( "L1CSC_NAME" );
62  attList.extend<int>( "L1CSC_VAL1" );
63  attList.extend<int>( "L1CSC_VAL2" );
64  attList.extend<int>( "L1CSC_VAL3" );
65  attList.extend<int>( "L1CSC_VAL4" );
66  attList.extend<int>( "L1CSC_VAL5" );
67  attList.extend<int>( "L1CSC_VAL6" );
68  attList.extend<int>( "L1CSC_VAL7" );
69  attList.extend<int>( "L1CSC_VAL8" );
70  attList.extend<int>( "L1CSC_ETA_MIN" );
71  attList.extend<int>( "L1CSC_ETA_MAX" );
72  attList.extend<int>( "L1CSC_PHI_MIN" );
73  attList.extend<int>( "L1CSC_PHI_MAX" );
74  query->defineOutput(attList);
75 
76  query->addToOutputList( "L1CSC_VERSION" );
77  query->addToOutputList( "L1CSC_NAME" );
78  query->addToOutputList( "L1CSC_VAL1" );
79  query->addToOutputList( "L1CSC_VAL2" );
80  query->addToOutputList( "L1CSC_VAL3" );
81  query->addToOutputList( "L1CSC_VAL4" );
82  query->addToOutputList( "L1CSC_VAL5" );
83  query->addToOutputList( "L1CSC_VAL6" );
84  query->addToOutputList( "L1CSC_VAL7" );
85  query->addToOutputList( "L1CSC_VAL8" );
86  query->addToOutputList( "L1CSC_ETA_MIN" );
87  query->addToOutputList( "L1CSC_ETA_MAX" );
88  query->addToOutputList( "L1CSC_PHI_MIN" );
89  query->addToOutputList( "L1CSC_PHI_MAX" );
90 
91  query->addToOrderList( "L1CSC_ID" );
92 
93  coral::ICursor& cursor = query->execute();
94 
95  if ( ! cursor.next() ) {
96  msg() << "CaloSinCosLoader >> No such deadtime exists " << cscTarget.id() << std::endl;
97  delete query;
98  commitSession();
99  throw std::runtime_error( "CaloSinCosLoader >> CaloSinCos not available" );
100  }
101 
102  const coral::AttributeList& row = cursor.currentRow();
103  std::string name = row["L1CSC_NAME"].data<std::string>();
104  int version = row["L1CSC_VERSION"].data<int>();
105  int val1 = row["L1CSC_VAL1"].data<int>();
106  int val2 = row["L1CSC_VAL2"].data<int>();
107  int val3 = row["L1CSC_VAL3"].data<int>();
108  int val4 = row["L1CSC_VAL4"].data<int>();
109  int val5 = row["L1CSC_VAL5"].data<int>();
110  int val6 = row["L1CSC_VAL6"].data<int>();
111  int val7 = row["L1CSC_VAL7"].data<int>();
112  int val8 = row["L1CSC_VAL8"].data<int>();
113  int eta_min = row["L1CSC_ETA_MIN"].data<int>();
114  int eta_max = row["L1CSC_ETA_MAX"].data<int>();
115  int phi_min = row["L1CSC_PHI_MIN"].data<int>();
116  int phi_max = row["L1CSC_PHI_MAX"].data<int>();
117 
118  if ( cursor.next() ) {
119  msg() << "CaloSinCosLoader >> More than one CaloSinCos exists "
120  << cscTarget.id() << std::endl;
121  delete query;
122  commitSession();
123  throw std::runtime_error( "CaloSinCosLoader >> CaloSinCos not available" );
124  }
125 
126  // fill the object with data
127  cscTarget.setName( name );
128  cscTarget.setVersion( version );
129  cscTarget.setVal1( val1 );
130  cscTarget.setVal2( val2 );
131  cscTarget.setVal3( val3 );
132  cscTarget.setVal4( val4 );
133  cscTarget.setVal5( val5 );
134  cscTarget.setVal6( val6 );
135  cscTarget.setVal7( val7 );
136  cscTarget.setVal8( val8 );
137  cscTarget.setEtaMin(eta_min);
138  cscTarget.setEtaMax(eta_max);
139  cscTarget.setPhiMin(phi_min);
140  cscTarget.setPhiMax(phi_max);
141 
142  delete query;
143  commitSession();
144  return true;
145  } catch( const coral::SchemaException& e ) {
146  msg() << "CaloSinCosLoader >> SchemaException: "
147  << e.what() << std::endl;
148  m_session.transaction().rollback();
149  return false;
150  } catch( const std::exception& e ) {
151  msg() << "CaloSinCosLoader >> Standard C++ exception: " << e.what() << std::endl;
152  m_session.transaction().rollback();
153  return false;
154  } catch(...) {
155  msg() << "CaloSinCosLoader >> unknown C++ exception" << std::endl;
156  m_session.transaction().rollback();
157  return false;
158  }
159 }
160 
161 
TrigConf::TrigConfData::setName
void setName(const std::string &name)
Definition: TrigConfData.h:30
query_example.row
row
Definition: query_example.py:24
TrigConf::CaloSinCos::setVal7
void setVal7(int val)
Definition: CaloSinCos.h:46
TrigConf::CaloSinCos::setVal5
void setVal5(int val)
Definition: CaloSinCos.h:44
TrigConf::CaloSinCos
Definition: CaloSinCos.h:13
TrigConf::CaloSinCos::setVal3
void setVal3(int val)
Definition: CaloSinCos.h:42
TrigConf::CaloSinCos::setVal6
void setVal6(int val)
Definition: CaloSinCos.h:45
TrigConf::CaloSinCosLoader::load
virtual bool load(CaloSinCos &data) override
Definition: CaloSinCosLoader.cxx:37
LArG4GenerateShowerLib.condition
condition
Definition: LArG4GenerateShowerLib.py:19
TrigConf::CaloSinCos::setVal2
void setVal2(int val)
Definition: CaloSinCos.h:41
python.PyKernel.AttributeList
AttributeList
Definition: PyKernel.py:36
TrigConf::DBLoader::m_session
coral::ISessionProxy & m_session
CORAL interface to database session.
Definition: DBLoader.h:68
query
Definition: query.py:1
CaloSinCos.h
TrigConf::CaloSinCos::setEtaMin
void setEtaMin(int val)
Definition: CaloSinCos.h:48
TrigConf::TrigConfMessaging::msg
MsgStreamTC & msg() const
The standard message stream.
Definition: TrigConfMessaging.h:81
calibdata.exception
exception
Definition: calibdata.py:496
TrigConf::CaloSinCos::setPhiMax
void setPhiMax(int val)
Definition: CaloSinCos.h:51
CaloSinCosLoader.h
query_example.query
query
Definition: query_example.py:15
TrigConf::name
Definition: HLTChainList.h:35
TrigConf::CaloSinCos::setVal1
void setVal1(int val)
Definition: CaloSinCos.h:40
TrigConf::TrigConfData::id
unsigned int id() const
Definition: TrigConfData.h:21
python.ext.table_printer.table
list table
Definition: table_printer.py:81
TrigConf::CaloSinCos::setVal8
void setVal8(int val)
Definition: CaloSinCos.h:47
TrigConf::DBLoader::commitSession
void commitSession()
commit session if not already done
Definition: DBLoader.cxx:45
get_generator_info.version
version
Definition: get_generator_info.py:33
DiTauMassTools::MaxHistStrategyV2::e
e
Definition: PhysicsAnalysis/TauID/DiTauMassTools/DiTauMassTools/HelperFunctions.h:26
query_example.cursor
cursor
Definition: query_example.py:21
TrigConf::TrigConfData::setVersion
void setVersion(unsigned int version)
Definition: TrigConfData.h:31
TrigConf::DBLoader::startSession
void startSession()
start session if not already active
Definition: DBLoader.cxx:35
TrigConf::CaloSinCos::setPhiMin
void setPhiMin(int val)
Definition: CaloSinCos.h:50
TrigConf::CaloSinCos::setEtaMax
void setEtaMax(int val)
Definition: CaloSinCos.h:49
TrigConf::CaloSinCos::setVal4
void setVal4(int val)
Definition: CaloSinCos.h:43