JAPAn
Just Another Parity Analyzer
Loading...
Searching...
No Matches
QwDBInterface.cc
Go to the documentation of this file.
1/*!
2 * \file QwDBInterface.cc
3 * \brief Database interface implementation for QwIntegrationPMT and subsystems
4 * \author wdconinc, jhlee
5 * \date 2010-12-14
6 */
7
8#include "QwDBInterface.h"
9
10// Qweak headers
11#ifdef __USE_DATABASE__
12#include "QwParitySchema.h"
13#include "QwParitySchemaRow.h"
14#include "QwParityDB.h"
15#endif // __USE_DATABASE__
16
17std::map<TString, TString> QwDBInterface::fPrefix;
18
19TString QwDBInterface::DetermineMeasurementTypeID(TString type, TString suffix,
20 Bool_t forcediffs)
21{
22 if (fPrefix.empty()){
23 fPrefix["yield"] = "y";
24 fPrefix["difference"] = "d";
25 fPrefix["asymmetry"] = "a";
26 fPrefix["asymmetry1"] = "a12";
27 fPrefix["asymmetry2"] = "aeo";
28 }
29 TString measurement_type("");
30 if (fPrefix.count(type)==1){
31 measurement_type = fPrefix[type];
32 if (measurement_type[0] == 'a' &&
33 (forcediffs
34 || (suffix == "p" || suffix == "a"
35 || suffix == "m")) ){
36 // Change the type to difference for position,
37 // angle, or slope asymmetry variables.
38 measurement_type[0] = 'd';
39 } else if (measurement_type[0] == 'y') {
40 measurement_type += suffix;
41 }
42 }
43 QwDebug << "\n"
44 << type << ", " << suffix
45 << " \'" << measurement_type.Data() << "\'" << QwLog::endl;
46 return measurement_type;
47}
48
49#ifdef __USE_DATABASE__
50void QwDBInterface::SetMonitorID(QwParityDB *db)
51{
52 fDeviceId = db->GetMonitorID(fDeviceName.Data());
53}
54
55void QwDBInterface::SetMainDetectorID(QwParityDB *db)
56{
57 fDeviceId = db->GetMainDetectorID(fDeviceName.Data());
58}
59
60void QwDBInterface::SetLumiDetectorID(QwParityDB *db)
61{
62 fDeviceId = db->GetLumiDetectorID(fDeviceName.Data());
63}
64
66{
67 fDeviceId = db->GetMonitorID(fDeviceName.Data(),kFALSE);
68 if (fDeviceId!=0) return kQwDBI_BeamTable;
69 fDeviceId = db->GetMainDetectorID(fDeviceName.Data(),kFALSE);
70 if (fDeviceId!=0) return kQwDBI_MDTable;
71 fDeviceId = db->GetLumiDetectorID(fDeviceName.Data(),kFALSE);
72 if (fDeviceId!=0) return kQwDBI_LumiTable;
73 return kQwDBI_OtherTable;
74}
75#endif // __USE_DATABASE__
76
77template <class T>
79{
80 T row(0);
81 return row;
82}
83
84
85#ifdef __USE_DATABASE__
86/// Specifications of the templated function
87/// template \verbatim<class T>\endverbatim inline T QwDBInterface::TypedDBClone();
88template<> QwParitySchema::md_data_row
90 QwParitySchema::md_data md_data;
91 QwParitySchema::md_data_row row;
92 row[md_data.analysis_id] = fAnalysisId;
93 row[md_data.main_detector_id] = fDeviceId;
94 row[md_data.measurement_type_id] = fMeasurementTypeId;
95 row[md_data.subblock] = fSubblock;
96 row[md_data.n] = fN;
97 row[md_data.value] = fValue;
98 row[md_data.error] = fError;
99 return row;
100}
101
102template<> QwParitySchema::lumi_data_row
104 QwParitySchema::lumi_data lumi_data;
105 QwParitySchema::lumi_data_row row;
106 row[lumi_data.analysis_id] = fAnalysisId;
107 row[lumi_data.lumi_detector_id] = fDeviceId;
108 row[lumi_data.measurement_type_id] = fMeasurementTypeId;
109 row[lumi_data.subblock] = fSubblock;
110 row[lumi_data.n] = fN;
111 row[lumi_data.value] = fValue;
112 row[lumi_data.error] = fError;
113 return row;
114}
115
116template<> QwParitySchema::beam_row
118 QwParitySchema::beam beam;
119 QwParitySchema::beam_row row;
120 row[beam.analysis_id] = fAnalysisId;
121 row[beam.monitor_id] = fDeviceId;
122 row[beam.measurement_type_id] = fMeasurementTypeId;
123 row[beam.subblock] = fSubblock;
124 row[beam.n] = fN;
125 row[beam.value] = fValue;
126 row[beam.error] = fError;
127 return row;
128}
129#endif // __USE_DATABASE__
130
131
132
133
134// QwErrDBInterface
135
136#ifdef __USE_DATABASE__
137void QwErrDBInterface::SetMonitorID(QwParityDB *db)
138{
139 fDeviceId = db->GetMonitorID(fDeviceName.Data());
140}
141
142void QwErrDBInterface::SetMainDetectorID(QwParityDB *db)
143{
144 fDeviceId = db->GetMainDetectorID(fDeviceName.Data());
145}
146
147void QwErrDBInterface::SetLumiDetectorID(QwParityDB *db)
148{
149 fDeviceId = db->GetLumiDetectorID(fDeviceName.Data());
150}
151#endif // __USE_DATABASE__
152template <class T>
154{
155 T row(0);
156 return row;
157}
158#ifdef __USE_DATABASE__
159// Simplified error interface TypedDBClone implementations
160template<> QwParitySchema::md_errors_row
162 QwParitySchema::md_errors_row row;
163 QwParitySchema::md_errors md_errors;
164 row[md_errors.analysis_id] = fAnalysisId;
165 row[md_errors.main_detector_id] = fDeviceId;
166 row[md_errors.error_code_id] = fErrorCodeId;
167 row[md_errors.n] = fN;
168 return row;
169}
170
171template<> QwParitySchema::lumi_errors_row
173 QwParitySchema::lumi_errors_row row;
174 QwParitySchema::lumi_errors lumi_errors;
175 row[lumi_errors.analysis_id] = fAnalysisId;
176 row[lumi_errors.lumi_detector_id] = fDeviceId;
177 row[lumi_errors.error_code_id] = fErrorCodeId;
178 row[lumi_errors.n] = fN;
179 return row;
180}
181
182template<> QwParitySchema::beam_errors_row
184 QwParitySchema::beam_errors_row row;
185 QwParitySchema::beam_errors beam_errors;
186 row[beam_errors.analysis_id] = fAnalysisId;
187 row[beam_errors.monitor_id] = fDeviceId;
188 row[beam_errors.error_code_id] = fErrorCodeId;
189 row[beam_errors.n] = fN;
190 return row;
191}
192
193template<> QwParitySchema::general_errors_row
195 QwParitySchema::general_errors_row row;
196 QwParitySchema::general_errors general_errors;
197 row[general_errors.analysis_id] = fAnalysisId;
198 row[general_errors.error_code_id] = fErrorCodeId;
199 row[general_errors.n] = fN;
200 return row;
201}
202#endif // __USE_DATABASE__
203
204
#define QwDebug
Predefined log drain for debugging output.
Definition QwLog.h:59
Database interface for QwIntegrationPMT and subsystems.
void SetMonitorID(QwParityDB *db)
static std::map< TString, TString > fPrefix
static TString DetermineMeasurementTypeID(TString type, TString suffix="", Bool_t forcediffs=kFALSE)
void SetMainDetectorID(QwParityDB *db)
TString fDeviceName
EQwDBIDataTableType SetDetectorID(QwParityDB *db)
void SetLumiDetectorID(QwParityDB *db)
void SetMonitorID(QwParityDB *db)
void SetLumiDetectorID(QwParityDB *db)
void SetMainDetectorID(QwParityDB *db)
static std::ostream & endl(std::ostream &)
End of the line.
Definition QwLog.cc:297