Create the transient representation of an object, given an opaque address. This and the following update method comprise the core functionality of calibration converters. Convenience routine used by most CAL calibration types, which have a <dimension> element describing how the remainder of the data is laid out. Read from TDS; store information internally in protected members. Given a pointer to a TDS object which can be cast to "our" type, fill in corresponding information in the corresponding root class
42 {
43
44 MsgStream log(
msgSvc(),
"RootDedxCalibDataCnv" );
45 log << MSG::DEBUG << "SetProperty" << endmsg;
47 if ( !sc ) { log << MSG::ERROR << "unable to open files" << endmsg; }
48
49 CalibData::DedxCalibData* tmpObject = new CalibData::DedxCalibData;
50
51 int i;
52
53 double rungain;
54 double runmean;
55 int runno, evtfrom, evtto;
56 double runresol;
57 TTree* rungtree = (TTree*)
m_inFile->Get(
"runcalib" );
58 rungtree->SetBranchAddress( "rungain", &rungain );
59 rungtree->SetBranchAddress( "runmean", &runmean );
60 rungtree->SetBranchAddress( "runno", &runno );
61 rungtree->SetBranchAddress( "runresol", &runresol );
62 if ( rungtree->GetBranchStatus( "evtfrom" ) )
63 {
64 rungtree->SetBranchAddress( "evtfrom", &evtfrom );
65 rungtree->SetBranchAddress( "evtto", &evtto );
66 }
67 else
68 {
69 evtfrom = 0;
70 evtto = 1000000000;
71 }
72 int N = rungtree->GetEntries();
74
75 for ( i = 0; i < N; i++ )
76 {
77 rungtree->GetEntry( i );
78
79 tmpObject->
setrung( rungain, 0 );
80 tmpObject->
setrung( runmean, 1 );
82 tmpObject->
setrung( runresol, 3 );
83 tmpObject->
setrung( evtfrom, 4 );
85 }
86
87
88 double ddg0[43];
89 double ddg1[43];
90 double ddg2[43];
91 double ddg3[43];
92 double id_doca[1600];
93 double iner_chi[1600];
94 double iner_gain[1600];
95 double iner_hits[1600];
96 double ip_eangle[1600];
97 double out_chi[1600];
98 double out_gain[1600];
99 double out_hits[1600];
100
101 TTree* ddgtree = (TTree*)
m_inFile->Get(
"ddgcalib" );
102 ddgtree->SetBranchAddress( "ddg0", ddg0 );
103 ddgtree->SetBranchAddress( "ddg1", ddg1 );
104 ddgtree->SetBranchAddress( "ddg2", ddg2 );
105 ddgtree->SetBranchAddress( "ddg3", ddg3 );
106 TBranch* bbb = ddgtree->FindBranch( "Id_doca" );
107 if ( bbb )
108 {
109 ddgtree->SetBranchAddress( "Id_doca", id_doca );
110 ddgtree->SetBranchAddress( "Iner_chi", iner_chi );
111 ddgtree->SetBranchAddress( "Iner_gain", iner_gain );
112 ddgtree->SetBranchAddress( "Iner_hits", iner_hits );
113 ddgtree->SetBranchAddress( "Ip_eangle", ip_eangle );
114 ddgtree->SetBranchAddress( "Out_chi", out_chi );
115 ddgtree->SetBranchAddress( "Out_gain", out_gain );
116 ddgtree->SetBranchAddress( "Out_hits", out_hits );
117 }
118 ddgtree->GetEntry( 0 );
119 for ( i = 0; i < 43; i++ )
120 {
121 tmpObject->
setddg( ddg0[i], 0, i );
122 tmpObject->
setddg( ddg1[i], 1, i );
123 tmpObject->
setddg( ddg2[i], 2, i );
124 tmpObject->
setddg( ddg3[i], 3, i );
125 }
126
127 for ( i = 0; i < 1600; i++ )
128 {
129 if ( !bbb )
130 {
131 id_doca[i] = 0;
132 iner_chi[i] = 0;
133 iner_gain[i] = 0;
134 iner_hits[i] = 0;
135 ip_eangle[i] = 0;
136 out_chi[i] = 0;
137 out_gain[i] = 0;
138 out_hits[i] = 0;
139 }
148 }
149
150
151 double entra0[43];
152 double entra1[43];
153 double entra2[43];
154 double entra3[43];
155 double engle[100];
156 int engle_no;
157 TTree* entratree = (TTree*)
m_inFile->Get(
"entracalib" );
158 entratree->SetBranchAddress( "entra0", entra0 );
159 entratree->SetBranchAddress( "entra1", entra1 );
160 entratree->SetBranchAddress( "entra2", entra2 );
161 entratree->SetBranchAddress( "entra3", entra3 );
162 entratree->SetBranchAddress( "1denangle", engle );
163 entratree->SetBranchAddress( "1denangle_entry", &engle_no );
164 entratree->GetEntry( 0 );
165 for ( i = 0; i < 43; i++ )
166 {
167 tmpObject->
setenta( entra0[i], 0, i );
168 tmpObject->
setenta( entra1[i], 1, i );
169 tmpObject->
setenta( entra2[i], 2, i );
170 tmpObject->
setenta( entra3[i], 3, i );
171 }
173 for ( i = 0; i < engle_no; i++ ) { tmpObject->
set_enangle( engle[i], i ); }
174
175
176 double ggs0[43];
177 double ggs1[43];
178 double ggs2[43];
179 double ggs3[43];
180 double gcostheta[80];
181 int hadron_entry;
182 double hadron[20];
183 TTree* ggstree = (TTree*)
m_inFile->Get(
"ggscalib" );
184 ggstree->SetBranchAddress( "ggs0", ggs0 );
185 ggstree->SetBranchAddress( "ggs1", ggs1 );
186 ggstree->SetBranchAddress( "ggs2", ggs2 );
187 ggstree->SetBranchAddress( "ggs3", ggs3 );
188 ggstree->SetBranchAddress( "hadron", hadron );
189 ggstree->SetBranchAddress( "hadronNo", &hadron_entry );
190 if ( bbb ) { ggstree->SetBranchAddress( "costheta", gcostheta ); }
191 ggstree->GetEntry( 0 );
192 for ( i = 0; i < 43; i++ )
193 {
194 tmpObject->
setggs( ggs0[i], 0, i );
195 tmpObject->
setggs( ggs1[i], 1, i );
196 tmpObject->
setggs( ggs2[i], 2, i );
197 tmpObject->
setggs( ggs3[i], 3, i );
198 }
199
200 for ( i = 0; i < 80; i++ )
201 {
202 if ( !bbb ) gcostheta[i] = 0;
204 }
205
206 if ( hadron_entry > 20 )
207 {
208 log << MSG::FATAL << "hadron entry is larger than 20, larger than designed" << endmsg;
209 return StatusCode::FAILURE;
210 }
211
213
214 for ( i = 0; i < hadron_entry; i++ ) { tmpObject->
set_hadron( hadron[i], i ); }
215
216
217 double zdep0[43];
218 double zdep1[43];
219 double zdep2[43];
220 double zdep3[43];
221 TTree* zdeptree = (TTree*)
m_inFile->Get(
"zdepcalib" );
222 zdeptree->SetBranchAddress( "zdep0", zdep0 );
223 zdeptree->SetBranchAddress( "zdep1", zdep1 );
224 zdeptree->SetBranchAddress( "zdep2", zdep2 );
225 zdeptree->SetBranchAddress( "zdep3", zdep3 );
226 zdeptree->GetEntry( 0 );
227
228 for ( i = 0; i < 43; i++ )
229 {
230 tmpObject->
setzdep( zdep0[i], 0, i );
231 tmpObject->
setzdep( zdep1[i], 1, i );
232 tmpObject->
setzdep( zdep2[i], 2, i );
233 tmpObject->
setzdep( zdep3[i], 3, i );
234 }
235
236
237 double gain;
238 double gt0[35], gdedx[35];
239 TTree* gaintree = (TTree*)
m_inFile->Get(
"gaincalib" );
240 gaintree->SetBranchAddress( "gain", &gain );
241 if ( bbb )
242 {
243 gaintree->SetBranchAddress( "t0", gt0 );
244 gaintree->SetBranchAddress( "dedx", gdedx );
245 }
246 gaintree->GetEntry( 0 );
248 for ( i = 0; i < 35; i++ )
249 {
250 if ( !bbb )
251 {
252 gt0[i] = 0;
253 gdedx[i] = 0;
254 }
255 tmpObject->
set_t0( gt0[i], i );
257 }
258
259
260 double resol;
261 TTree* resoltree = (TTree*)
m_inFile->Get(
"resolcalib" );
262 resoltree->SetBranchAddress( "resol", &resol );
263 resoltree->GetEntry( 0 );
265
266
267 double wireg[6796];
268 TTree* wiregtree = (TTree*)
m_inFile->Get(
"wiregcalib" );
269 wiregtree->SetBranchAddress( "wireg", wireg );
270 wiregtree->GetEntry( 0 );
271 for ( i = 0; i < 6796; i++ ) { tmpObject->
setwireg( wireg[i], i ); }
272
273
274 double layerg[43];
275 TTree* layergtree = (TTree*)
m_inFile->Get(
"layergcalib" );
276 layergtree->SetBranchAddress( "layerg", layerg );
277 layergtree->GetEntry( 0 );
278
279 for ( i = 0; i < 43; i++ ) { tmpObject->
setlayerg( layerg[i], i ); }
280
281 refpObject = tmpObject;
282
283
284
285
286
287
288 return StatusCode::SUCCESS;
289}
void setlayerg(const double layerg, int i)
void setggs(const double ggs, int i, int j)
void setenta(const double enta, int i, int j)
void set_out_hits(const double aa, int i)
void setresol(const double resol)
void set_out_gain(const double aa, int i)
void setddg(const double ddg, int i, int j)
void set_costheta(const double aa, int i)
void set_enangle(const double aa, int i)
void set_iner_gain(const double aa, int i)
void set_iner_hits(const double aa, int i)
void setwireg(const double wireg, int i)
void setgain(const double gain)
void set_hadronNo(int no)
void set_ip_eangle(const double aa, int i)
void set_out_chi(const double aa, int i)
void setzdep(const double zdep, int i, int j)
void set_hadron(const double aa, int i)
void setrunNO(const int run_NO)
void set_enanglesize(int no)
void set_t0(const double aa, int i)
void set_dedx(const double aa, int i)
void set_iner_chi(const double aa, int i)
void set_id_doca(const double aa, int i)
void setrung(const double rung, int i)
StatusCode openRead(const std::string &fname)