1#include "GaudiKernel/MsgStream.h"
11#include "TBufferFile.h"
13#include "GaudiKernel/CnvFactory.h"
14#include "GaudiKernel/IOpaqueAddress.h"
15#include "GaudiKernel/DataObject.h"
16#include "GaudiKernel/IAddressCreator.h"
17#include "GaudiKernel/IDataProviderSvc.h"
18#include "GaudiKernel/IConversionSvc.h"
19#include "GaudiKernel/GenericAddress.h"
47 DataObject*& refpObject) {
49 MsgStream log(
msgSvc(),
"TreeDedxCalibDataCnv");
50 log<<MSG::DEBUG<<
"SetProperty"<<endreq;
66 TBufferFile *buf1 =
new TBufferFile(TBuffer::kRead);
67 TBufferFile *buf2 =
new TBufferFile(TBuffer::kRead);
68 TBufferFile *buf3 =
new TBufferFile(TBuffer::kRead);
69 TBufferFile *buf4 =
new TBufferFile(TBuffer::kRead);
70 TBufferFile *buf5 =
new TBufferFile(TBuffer::kRead);
71 TBufferFile *buf6 =
new TBufferFile(TBuffer::kRead);
72 TBufferFile *buf7 =
new TBufferFile(TBuffer::kRead);
73 TBufferFile *buf8 =
new TBufferFile(TBuffer::kRead);
74 TBufferFile *buf9 =
new TBufferFile(TBuffer::kRead);
76 buf1->SetBuffer((*records)[
"DriftDist"],512000,kFALSE);
77 buf2->SetBuffer((*records)[
"EntranceAng"],512000,kFALSE);
78 buf3->SetBuffer((*records)[
"MeanGain"],512000,kFALSE);
79 buf4->SetBuffer((*records)[
"GasGain"],512000,kFALSE);
80 buf5->SetBuffer((*records)[
"LayerGain"],512000,kFALSE);
81 buf6->SetBuffer((*records)[
"Resolution"],512000,kFALSE);
82 buf7->SetBuffer((*records)[
"WireGain"],512000,kFALSE);
83 buf8->SetBuffer((*records)[
"ZDep"],512000,kFALSE);
84 buf9->SetBuffer((*records)[
"RunGain"],512000,kFALSE);
88 std::cout<<
" SftVer is "<<(*records)[
"SftVer"];
89 std::cout<<
" CalVerSft is "<<(*records)[
"CalParVer"];
90 std::cout<<
" File name is "<<(*records)[
"FileName"]<<std::endl;
94 TTree* ddgtree =
new TTree();
95 ddgtree->Streamer(*buf1);
97 TTree* entratree =
new TTree();
98 entratree->Streamer(*buf2);
100 TTree* gaintree=
new TTree();
101 gaintree->Streamer(*buf3);
103 TTree* ggstree =
new TTree();
104 ggstree->Streamer(*buf4);
106 TTree* layergtree =
new TTree();
107 layergtree->Streamer(*buf5);
109 TTree* resoltree =
new TTree();
110 resoltree->Streamer(*buf6);
112 TTree* wiregtree =
new TTree();
113 wiregtree->Streamer(*buf7);
115 TTree* zdeptree =
new TTree();
116 zdeptree->Streamer(*buf8);
118 TTree *rungtree =
new TTree();
119 rungtree->Streamer(*buf9);
123 int runno, evtfrom, evtto;
130 if(rungtree->GetBranchStatus(
"evtfrom")){
138 int N = rungtree -> GetEntries();
139 tmpObject -> setrunNO(N);
140 for(
int i=0; i<N; i++){
142 tmpObject -> setrung(rungain,0);
143 tmpObject -> setrung(runmean,1);
144 tmpObject -> setrung(runno,2);
145 tmpObject -> setrung(runresol,3);
146 tmpObject -> setrung(evtfrom,4);
147 tmpObject -> setrung(evtto,5);
155 double id_doca[1600];
156 double iner_chi[1600];
157 double iner_gain[1600];
158 double iner_hits[1600];
159 double ip_eangle[1600];
160 double out_chi[1600];
161 double out_gain[1600];
162 double out_hits[1600];
168 TBranch *bbb = ddgtree->FindBranch(
"Id_doca");
181 for(
int i=0; i<43; i++){
183 tmpObject -> setddg(ddg0[i],0,i);
184 tmpObject -> setddg(ddg1[i],1,i);
185 tmpObject -> setddg(ddg2[i],2,i);
186 tmpObject -> setddg(ddg3[i],3,i);
189 for(
int i=0; i<1600; i++){
200 tmpObject -> set_id_doca(id_doca[i],i);
201 tmpObject -> set_iner_chi(iner_chi[i],i);
202 tmpObject -> set_iner_gain(iner_gain[i],i);
203 tmpObject -> set_iner_hits(iner_hits[i],i);
204 tmpObject -> set_ip_eangle(ip_eangle[i],i);
205 tmpObject -> set_out_chi(out_chi[i],i);
206 tmpObject -> set_out_gain(out_gain[i],i);
207 tmpObject -> set_out_hits(out_hits[i],i);
224 for(
int i=0; i<43; i++){
225 tmpObject -> setenta(entra0[i],0,i);
226 tmpObject -> setenta(entra1[i],1,i);
227 tmpObject -> setenta(entra2[i],2,i);
228 tmpObject -> setenta(entra3[i],3,i);
231 tmpObject -> set_enanglesize(engle_no);
232 for(
int i=0; i<engle_no; i++){
233 tmpObject -> set_enangle(engle[i],i);
244 double gcostheta[80];
256 for(
int i=0; i<43;i++){
257 tmpObject -> setggs(ggs0[i],0,i);
258 tmpObject -> setggs(ggs1[i],1,i);
259 tmpObject -> setggs(ggs2[i],2,i);
260 tmpObject -> setggs(ggs3[i],3,i);
262 for(
int i=0; i<80;i++){
263 if(!bbb) gcostheta[i]=0;
267 log<<MSG::FATAL<<
"hadron entry is larger than 20, larger than designed"<<endreq;
268 return StatusCode::FAILURE;
271 for(
int i=0;i<hadron_entry;i++){
287 for(
int i=0; i<43;i++){
288 tmpObject -> setzdep(zdep0[i],0,i);
289 tmpObject -> setzdep(zdep1[i],1,i);
290 tmpObject -> setzdep(zdep2[i],2,i);
291 tmpObject -> setzdep(zdep3[i],3,i);
295 double gt0[35],gdedx[35];
301 tmpObject -> setgain(gain);
302 for(
int i=0; i<35;i++){
307 tmpObject->
set_t0(gt0[i],i);
315 tmpObject -> setresol(resol);
321 for(
int i=0;i<6796;i++){
322 if(wireg[i]>5||wireg[i]<0.2) wireg[i]=0;
323 tmpObject -> setwireg(wireg[i],i);
331 for(
int i=0;i<43;i++){
332 tmpObject -> setlayerg(layerg[i],i);
340 refpObject=tmpObject;
352 return StatusCode::SUCCESS;
const CLID CLID_Calib_DedxCal
void set_costheta(const double aa, int i)
void set_hadronNo(int no)
void set_hadron(const double aa, int i)
void set_t0(const double aa, int i)
void set_dedx(const double aa, int i)
virtual DatabaseRecord * pp()
static const CLID & classID()
virtual StatusCode i_createObj(IOpaqueAddress *address, DataObject *&refpObject)
TreeDedxCalibDataCnv(ISvcLocator *svc)
const CLID & objType() const
curve SetBranchAddress("CurveSize",&CurveSize)