36 {
37
38 MsgStream log(
msgSvc(),
"TreeDedxCalibDataCnv" );
39 log << MSG::DEBUG << "SetProperty" << endmsg;
40
41 CalibData::DedxCalibData* tmpObject = new CalibData::DedxCalibData;
42 TreeAddress* add = dynamic_cast<TreeAddress*>( addr );
43 DatabaseRecord* records = add->
pp();
44
45
46
47
48
49
50
51
52
53
54
55 TBufferFile* buf1 = new TBufferFile( TBuffer::kRead );
56 TBufferFile* buf2 = new TBufferFile( TBuffer::kRead );
57 TBufferFile* buf3 = new TBufferFile( TBuffer::kRead );
58 TBufferFile* buf4 = new TBufferFile( TBuffer::kRead );
59 TBufferFile* buf5 = new TBufferFile( TBuffer::kRead );
60 TBufferFile* buf6 = new TBufferFile( TBuffer::kRead );
61 TBufferFile* buf7 = new TBufferFile( TBuffer::kRead );
62 TBufferFile* buf8 = new TBufferFile( TBuffer::kRead );
63 TBufferFile* buf9 = new TBufferFile( TBuffer::kRead );
64
65 buf1->SetBuffer( ( *records )["DriftDist"], 512000, kFALSE );
66 buf2->SetBuffer( ( *records )["EntranceAng"], 512000, kFALSE );
67 buf3->SetBuffer( ( *records )["MeanGain"], 512000, kFALSE );
68 buf4->SetBuffer( ( *records )["GasGain"], 512000, kFALSE );
69 buf5->SetBuffer( ( *records )["LayerGain"], 512000, kFALSE );
70 buf6->SetBuffer( ( *records )["Resolution"], 512000, kFALSE );
71 buf7->SetBuffer( ( *records )["WireGain"], 512000, kFALSE );
72 buf8->SetBuffer( ( *records )["ZDep"], 512000, kFALSE );
73 buf9->SetBuffer( ( *records )["RunGain"], 1024000, kFALSE );
74
75 std::cout << " SftVer is " << ( *records )["SftVer"];
76 std::cout << " CalVerSft is " << ( *records )["CalParVer"];
77 std::cout << " File name is " << ( *records )["FileName"] << std::endl;
78
79 TTree* ddgtree = new TTree();
80 ddgtree->Streamer( *buf1 );
81
82 TTree* entratree = new TTree();
83 entratree->Streamer( *buf2 );
84
85 TTree* gaintree = new TTree();
86 gaintree->Streamer( *buf3 );
87
88 TTree* ggstree = new TTree();
89 ggstree->Streamer( *buf4 );
90
91 TTree* layergtree = new TTree();
92 layergtree->Streamer( *buf5 );
93
94 TTree* resoltree = new TTree();
95 resoltree->Streamer( *buf6 );
96
97 TTree* wiregtree = new TTree();
98 wiregtree->Streamer( *buf7 );
99
100 TTree* zdeptree = new TTree();
101 zdeptree->Streamer( *buf8 );
102
103 TTree* rungtree = new TTree();
104 rungtree->Streamer( *buf9 );
105
106 double rungain;
107 double runmean;
108 int runno, evtfrom, evtto;
109 double runresol;
110
111 rungtree->SetBranchAddress( "rungain", &rungain );
112 rungtree->SetBranchAddress( "runmean", &runmean );
113 rungtree->SetBranchAddress( "runno", &runno );
114 rungtree->SetBranchAddress( "runresol", &runresol );
115 if ( rungtree->GetBranchStatus( "evtfrom" ) )
116 {
117 rungtree->SetBranchAddress( "evtfrom", &evtfrom );
118 rungtree->SetBranchAddress( "evtto", &evtto );
119 }
120 else
121 {
122 evtfrom = 0;
123 evtto = 1000000000;
124 }
125 int N = rungtree->GetEntries();
127 for ( int i = 0; i < N; i++ )
128 {
129 rungtree->GetEntry( i );
130 tmpObject->
setrung( rungain, 0 );
131 tmpObject->
setrung( runmean, 1 );
132 tmpObject->
setrung( runno, 2 );
133 tmpObject->
setrung( runresol, 3 );
134 tmpObject->
setrung( evtfrom, 4 );
135 tmpObject->
setrung( evtto, 5 );
136 }
137
138 double ddg0[43];
139 double ddg1[43];
140 double ddg2[43];
141 double ddg3[43];
142 double id_doca[1600];
143 double iner_chi[1600];
144 double iner_gain[1600];
145 double iner_hits[1600];
146 double ip_eangle[1600];
147 double out_chi[1600];
148 double out_gain[1600];
149 double out_hits[1600];
150
151 ddgtree->SetBranchAddress( "ddg0", ddg0 );
152 ddgtree->SetBranchAddress( "ddg1", ddg1 );
153 ddgtree->SetBranchAddress( "ddg2", ddg2 );
154 ddgtree->SetBranchAddress( "ddg3", ddg3 );
155 TBranch* bbb = ddgtree->FindBranch( "Id_doca" );
156 if ( bbb )
157 {
158 ddgtree->SetBranchAddress( "Id_doca", id_doca );
159 ddgtree->SetBranchAddress( "Iner_chi", iner_chi );
160 ddgtree->SetBranchAddress( "Iner_gain", iner_gain );
161 ddgtree->SetBranchAddress( "Iner_hits", iner_hits );
162 ddgtree->SetBranchAddress( "Ip_eangle", ip_eangle );
163 ddgtree->SetBranchAddress( "Out_chi", out_chi );
164 ddgtree->SetBranchAddress( "Out_gain", out_gain );
165 ddgtree->SetBranchAddress( "Out_hits", out_hits );
166 }
167
168 ddgtree->GetEntry( 0 );
169 for ( int i = 0; i < 43; i++ )
170 {
171
172 tmpObject->
setddg( ddg0[i], 0, i );
173 tmpObject->
setddg( ddg1[i], 1, i );
174 tmpObject->
setddg( ddg2[i], 2, i );
175 tmpObject->
setddg( ddg3[i], 3, i );
176 }
177
178 for ( int i = 0; i < 1600; i++ )
179 {
180 if ( !bbb )
181 {
182 id_doca[i] = 0;
183 iner_chi[i] = 0;
184 iner_gain[i] = 0;
185 iner_hits[i] = 0;
186 ip_eangle[i] = 0;
187 out_chi[i] = 0;
188 out_gain[i] = 0;
189 out_hits[i] = 0;
190 }
199 }
200
201 double entra0[43];
202 double entra1[43];
203 double entra2[43];
204 double entra3[43];
205 double engle[100];
206 int engle_no;
207 entratree->SetBranchAddress( "entra0", entra0 );
208 entratree->SetBranchAddress( "entra1", entra1 );
209 entratree->SetBranchAddress( "entra2", entra2 );
210 entratree->SetBranchAddress( "entra3", entra3 );
211 entratree->SetBranchAddress( "1denangle", engle );
212 entratree->SetBranchAddress( "1denangle_entry", &engle_no );
213 entratree->GetEntry( 0 );
214 for ( int i = 0; i < 43; i++ )
215 {
216 tmpObject->
setenta( entra0[i], 0, i );
217 tmpObject->
setenta( entra1[i], 1, i );
218 tmpObject->
setenta( entra2[i], 2, i );
219 tmpObject->
setenta( entra3[i], 3, i );
220 }
221
223 for (
int i = 0; i < engle_no; i++ ) { tmpObject->
set_enangle( engle[i], i ); }
224
225
226 double ggs0[43];
227 double ggs1[43];
228 double ggs2[43];
229 double ggs3[43];
230 double gcostheta[80];
231 int hadron_entry;
232 double hadron[20];
233 ggstree->SetBranchAddress( "ggs0", ggs0 );
234 ggstree->SetBranchAddress( "ggs1", ggs1 );
235 ggstree->SetBranchAddress( "ggs2", ggs2 );
236 ggstree->SetBranchAddress( "ggs3", ggs3 );
237 ggstree->SetBranchAddress( "hadron", hadron );
238 ggstree->SetBranchAddress( "hadronNo", &hadron_entry );
239 if ( bbb ) { ggstree->SetBranchAddress( "costheta", gcostheta ); }
240 ggstree->GetEntry( 0 );
241 for ( int i = 0; i < 43; i++ )
242 {
243 tmpObject->
setggs( ggs0[i], 0, i );
244 tmpObject->
setggs( ggs1[i], 1, i );
245 tmpObject->
setggs( ggs2[i], 2, i );
246 tmpObject->
setggs( ggs3[i], 3, i );
247 }
248 for ( int i = 0; i < 80; i++ )
249 {
250 if ( !bbb ) gcostheta[i] = 0;
252 }
253 if ( hadron_entry > 20 )
254 {
255 log << MSG::FATAL << "hadron entry is larger than 20, larger than designed" << endmsg;
256 return StatusCode::FAILURE;
257 }
259 for (
int i = 0; i < hadron_entry; i++ ) { tmpObject->
set_hadron( hadron[i], i ); }
260
261
262 double zdep0[43];
263 double zdep1[43];
264 double zdep2[43];
265 double zdep3[43];
266 zdeptree->SetBranchAddress( "zdep0", zdep0 );
267 zdeptree->SetBranchAddress( "zdep1", zdep1 );
268 zdeptree->SetBranchAddress( "zdep2", zdep2 );
269 zdeptree->SetBranchAddress( "zdep3", zdep3 );
270 zdeptree->GetEntry( 0 );
271
272 for ( int i = 0; i < 43; i++ )
273 {
274 tmpObject->
setzdep( zdep0[i], 0, i );
275 tmpObject->
setzdep( zdep1[i], 1, i );
276 tmpObject->
setzdep( zdep2[i], 2, i );
277 tmpObject->
setzdep( zdep3[i], 3, i );
278 }
279
280 double gain;
281 double gt0[35], gdedx[35];
282 gaintree->SetBranchAddress( "gain", &gain );
283 if ( bbb )
284 {
285 gaintree->SetBranchAddress( "t0", gt0 );
286 gaintree->SetBranchAddress( "dedx", gdedx );
287 }
288 gaintree->GetEntry( 0 );
290 for ( int i = 0; i < 35; i++ )
291 {
292 if ( !bbb )
293 {
294 gt0[i] = 0;
295 gdedx[i] = 0;
296 }
297 tmpObject->
set_t0( gt0[i], i );
299 }
300
301
302 double resol;
303 resoltree->SetBranchAddress( "resol", &resol );
304 resoltree->GetEntry( 0 );
306
307
308 double wireg[6796];
309 wiregtree->SetBranchAddress( "wireg", wireg );
310 wiregtree->GetEntry( 0 );
311 for ( int i = 0; i < 6796; i++ )
312 {
313 if ( wireg[i] > 5 || wireg[i] < 0.2 ) wireg[i] = 0;
315 }
316
317
318 double layerg[43];
319 layergtree->SetBranchAddress( "layerg", layerg );
320 layergtree->GetEntry( 0 );
321
322 for (
int i = 0; i < 43; i++ ) { tmpObject->
setlayerg( layerg[i], i ); }
323
324
325
326 refpObject = tmpObject;
327
328 delete ddgtree;
329 delete entratree;
330 delete gaintree;
331 delete ggstree;
332 delete layergtree;
333 delete resoltree;
334 delete wiregtree;
335 delete zdeptree;
336 delete rungtree;
337
338 return StatusCode::SUCCESS;
339}
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)
virtual DatabaseRecord * pp()