00046 {
00047
00048 MsgStream log(msgSvc(), "TreeDedxCalibDataCnv");
00049 log<<MSG::DEBUG<<"SetProperty"<<endreq;
00050
00051 CalibData::DedxCalibData *tmpObject = new CalibData::DedxCalibData;
00052 TreeAddress* add = dynamic_cast<TreeAddress*>(addr);
00053 DatabaseRecord *records=add->pp();
00054
00055 TBuffer *buf1 = new TBuffer(TBuffer::kRead);
00056 TBuffer *buf2 = new TBuffer(TBuffer::kRead);
00057 TBuffer *buf3 = new TBuffer(TBuffer::kRead);
00058 TBuffer *buf4 = new TBuffer(TBuffer::kRead);
00059 TBuffer *buf5 = new TBuffer(TBuffer::kRead);
00060 TBuffer *buf6 = new TBuffer(TBuffer::kRead);
00061 TBuffer *buf7 = new TBuffer(TBuffer::kRead);
00062 TBuffer *buf8 = new TBuffer(TBuffer::kRead);
00063 TBuffer *buf9 = new TBuffer(TBuffer::kRead);
00064
00065 buf1->SetBuffer((*records)["DriftDist"],512000,kFALSE);
00066 buf2->SetBuffer((*records)["EntranceAng"],512000,kFALSE);
00067 buf3->SetBuffer((*records)["MeanGain"],512000,kFALSE);
00068 buf4->SetBuffer((*records)["GasGain"],512000,kFALSE);
00069 buf5->SetBuffer((*records)["LayerGain"],512000,kFALSE);
00070 buf6->SetBuffer((*records)["Resolution"],512000,kFALSE);
00071 buf7->SetBuffer((*records)["WireGain"],512000,kFALSE);
00072 buf8->SetBuffer((*records)["ZDep"],512000,kFALSE);
00073 buf9->SetBuffer((*records)["RunGain"],512000,kFALSE);
00074
00075
00076
00077
00078 std::cout<<" CalVerSft is "<<(*records)["CalParVer"];
00079 std::cout<<" File name is "<<(*records)["FileName"]<<std::endl;
00080
00081
00082
00083 TTree* ddgtree = new TTree();
00084 ddgtree->Streamer(*buf1);
00085
00086 TTree* entratree = new TTree();
00087 entratree->Streamer(*buf2);
00088
00089 TTree* gaintree= new TTree();
00090 gaintree->Streamer(*buf3);
00091
00092 TTree* ggstree = new TTree();
00093 ggstree->Streamer(*buf4);
00094
00095 TTree* layergtree = new TTree();
00096 layergtree->Streamer(*buf5);
00097
00098 TTree* resoltree = new TTree();
00099 resoltree->Streamer(*buf6);
00100
00101 TTree* wiregtree = new TTree();
00102 wiregtree->Streamer(*buf7);
00103
00104 TTree* zdeptree = new TTree();
00105 zdeptree->Streamer(*buf8);
00106
00107 TTree *rungtree = new TTree();
00108 rungtree->Streamer(*buf9);
00109
00110 double rungain;
00111 double runmean;
00112 int runno;
00113 double runresol;
00114
00115 rungtree -> SetBranchAddress("rungain", &rungain);
00116 rungtree -> SetBranchAddress("runmean", &runmean);
00117 rungtree -> SetBranchAddress("runno", &runno);
00118 rungtree -> SetBranchAddress("runresol", &runresol);
00119 int N = rungtree -> GetEntries();
00120 tmpObject -> setrunNO(N);
00121 for(int i=0; i<N; i++){
00122 rungtree -> GetEntry(i);
00123 tmpObject -> setrung(rungain,0,i);
00124 tmpObject -> setrung(runmean,1,i);
00125 tmpObject -> setrung(runno,2,i);
00126 tmpObject -> setrung(runresol,3,i);
00127 }
00128
00129
00130 double ddg0[43];
00131 double ddg1[43];
00132 double ddg2[43];
00133 double ddg3[43];
00134 double id_doca[1600];
00135 double iner_chi[1600];
00136 double iner_gain[1600];
00137 double iner_hits[1600];
00138 double ip_eangle[1600];
00139 double out_chi[1600];
00140 double out_gain[1600];
00141 double out_hits[1600];
00142
00143 ddgtree -> SetBranchAddress("ddg0", ddg0);
00144 ddgtree -> SetBranchAddress("ddg1", ddg1);
00145 ddgtree -> SetBranchAddress("ddg2", ddg2);
00146 ddgtree -> SetBranchAddress("ddg3", ddg3);
00147 TBranch *bbb = ddgtree->FindBranch("Id_doca");
00148 if(bbb){
00149 ddgtree -> SetBranchAddress("Id_doca", id_doca);
00150 ddgtree -> SetBranchAddress("Iner_chi", iner_chi);
00151 ddgtree -> SetBranchAddress("Iner_gain", iner_gain);
00152 ddgtree -> SetBranchAddress("Iner_hits", iner_hits);
00153 ddgtree -> SetBranchAddress("Ip_eangle", ip_eangle);
00154 ddgtree -> SetBranchAddress("Out_chi", out_chi);
00155 ddgtree -> SetBranchAddress("Out_gain", out_gain);
00156 ddgtree -> SetBranchAddress("Out_hits", out_hits);
00157 }
00158
00159 ddgtree -> GetEntry(0);
00160 for(int i=0; i<43; i++){
00161
00162 tmpObject -> setddg(ddg0[i],0,i);
00163 tmpObject -> setddg(ddg1[i],1,i);
00164 tmpObject -> setddg(ddg2[i],2,i);
00165 tmpObject -> setddg(ddg3[i],3,i);
00166 }
00167
00168 for(int i=0; i<1600; i++){
00169 if(!bbb){
00170 id_doca[i]=0;
00171 iner_chi[i]=0;
00172 iner_gain[i]=0;
00173 iner_hits[i]=0;
00174 ip_eangle[i]=0;
00175 out_chi[i]=0;
00176 out_gain[i]=0;
00177 out_hits[i]=0;
00178 }
00179 tmpObject -> set_id_doca(id_doca[i],i);
00180 tmpObject -> set_iner_chi(iner_chi[i],i);
00181 tmpObject -> set_iner_gain(iner_gain[i],i);
00182 tmpObject -> set_iner_hits(iner_hits[i],i);
00183 tmpObject -> set_ip_eangle(ip_eangle[i],i);
00184 tmpObject -> set_out_chi(out_chi[i],i);
00185 tmpObject -> set_out_gain(out_gain[i],i);
00186 tmpObject -> set_out_hits(out_hits[i],i);
00187 }
00188
00189
00190 double entra0[43];
00191 double entra1[43];
00192 double entra2[43];
00193 double entra3[43];
00194 double engle[100];
00195 int engle_no;
00196 entratree -> SetBranchAddress("entra0", entra0);
00197 entratree -> SetBranchAddress("entra1", entra1);
00198 entratree -> SetBranchAddress("entra2", entra2);
00199 entratree -> SetBranchAddress("entra3", entra3);
00200 entratree -> SetBranchAddress("1denangle", engle);
00201 entratree -> SetBranchAddress("1denangle_entry", &engle_no);
00202 entratree -> GetEntry(0);
00203 for(int i=0; i<43; i++){
00204 tmpObject -> setenta(entra0[i],0,i);
00205 tmpObject -> setenta(entra1[i],1,i);
00206 tmpObject -> setenta(entra2[i],2,i);
00207 tmpObject -> setenta(entra3[i],3,i);
00208 }
00209
00210 tmpObject -> set_enanglesize(engle_no);
00211 for(int i=0; i<engle_no; i++){
00212 tmpObject -> set_enangle(engle[i],i);
00213 }
00214
00215
00216
00217
00218
00219 double ggs0[43];
00220 double ggs1[43];
00221 double ggs2[43];
00222 double ggs3[43];
00223 double gcostheta[80];
00224 int hadron_entry;
00225 double hadron[20];
00226 ggstree -> SetBranchAddress("ggs0", ggs0);
00227 ggstree -> SetBranchAddress("ggs1", ggs1);
00228 ggstree -> SetBranchAddress("ggs2", ggs2);
00229 ggstree -> SetBranchAddress("ggs3", ggs3);
00230 ggstree -> SetBranchAddress("hadron", hadron);
00231 ggstree -> SetBranchAddress("hadronNo", &hadron_entry);
00232 if(bbb){
00233 ggstree -> SetBranchAddress("costheta", gcostheta);}
00234 ggstree -> GetEntry(0);
00235 for(int i=0; i<43;i++){
00236 tmpObject -> setggs(ggs0[i],0,i);
00237 tmpObject -> setggs(ggs1[i],1,i);
00238 tmpObject -> setggs(ggs2[i],2,i);
00239 tmpObject -> setggs(ggs3[i],3,i);
00240 }
00241 for(int i=0; i<80;i++){
00242 if(!bbb) gcostheta[i]=0;
00243 tmpObject ->set_costheta(gcostheta[i],i);
00244 }
00245 if(hadron_entry>20){
00246 log<<MSG::FATAL<<"hadron entry is larger than 20, larger than designed"<<endreq;
00247 return StatusCode::FAILURE;
00248 }
00249 tmpObject->set_hadronNo(hadron_entry);
00250 for(int i=0;i<hadron_entry;i++){
00251 tmpObject->set_hadron(hadron[i],i);
00252 }
00253
00254
00255
00256 double zdep0[43];
00257 double zdep1[43];
00258 double zdep2[43];
00259 double zdep3[43];
00260 zdeptree -> SetBranchAddress("zdep0", zdep0);
00261 zdeptree -> SetBranchAddress("zdep1", zdep1);
00262 zdeptree -> SetBranchAddress("zdep2", zdep2);
00263 zdeptree -> SetBranchAddress("zdep3", zdep3);
00264 zdeptree -> GetEntry(0);
00265
00266 for(int i=0; i<43;i++){
00267 tmpObject -> setzdep(zdep0[i],0,i);
00268 tmpObject -> setzdep(zdep1[i],1,i);
00269 tmpObject -> setzdep(zdep2[i],2,i);
00270 tmpObject -> setzdep(zdep3[i],3,i);
00271 }
00272
00273 double gain;
00274 double gt0[35],gdedx[35];
00275 gaintree -> SetBranchAddress("gain", &gain);
00276 if(bbb){
00277 gaintree -> SetBranchAddress("t0", gt0);
00278 gaintree -> SetBranchAddress("dedx", gdedx);}
00279 gaintree -> GetEntry(0);
00280 tmpObject -> setgain(gain);
00281 for(int i=0; i<35;i++){
00282 if(!bbb){
00283 gt0[i]=0;
00284 gdedx[i]=0;
00285 }
00286 tmpObject->set_t0(gt0[i],i);
00287 tmpObject->set_dedx(gdedx[i],i);
00288 }
00289
00290
00291 double resol;
00292 resoltree -> SetBranchAddress("resol", &resol);
00293 resoltree -> GetEntry(0);
00294 tmpObject -> setresol(resol);
00295
00296
00297 double wireg[6796];
00298 wiregtree -> SetBranchAddress("wireg",wireg);
00299 wiregtree -> GetEntry(0);
00300 for(int i=0;i<6796;i++){
00301 if(wireg[i]>5||wireg[i]<0.2) wireg[i]=0;
00302 tmpObject -> setwireg(wireg[i],i);
00303 }
00304
00305
00306 double layerg[43];
00307 layergtree -> SetBranchAddress("layerg",layerg);
00308 layergtree -> GetEntry(0);
00309
00310 for(int i=0;i<43;i++){
00311 tmpObject -> setlayerg(layerg[i],i);
00312 }
00313
00314
00315
00316
00317
00318
00319 refpObject=tmpObject;
00320
00321 delete ddgtree;
00322 delete entratree;
00323 delete gaintree;
00324 delete ggstree;
00325 delete layergtree;
00326 delete resoltree;
00327 delete wiregtree;
00328 delete zdeptree;
00329 delete rungtree;
00330
00331 return StatusCode::SUCCESS;
00332
00333
00334 }