BOSS 7.0.4
BESIII Offline Software System
Loading...
Searching...
No Matches
TreeTofSimCnv.cxx
Go to the documentation of this file.
1#include "GaudiKernel/MsgStream.h"
2#include "TreeTofSimCnv.h"
3#include "CalibData/Tof/TofSimData.h"
4#include "CalibDataSvc/IInstrumentName.h"
5#include "CalibMySQLCnv/TreeAddress.h"
6#include "TFile.h"
7#include "TTree.h"
8#include "TDirectory.h"
9#include "TObject.h"
10#include "TBuffer.h"
11
12#include "GaudiKernel/CnvFactory.h"
13#include "GaudiKernel/IOpaqueAddress.h"
14#include "GaudiKernel/DataObject.h"
15#include "GaudiKernel/IAddressCreator.h"
16#include "GaudiKernel/IDataProviderSvc.h"
17#include "GaudiKernel/IConversionSvc.h"
18#include "GaudiKernel/GenericAddress.h"
19
20#include "CalibDataSvc/ICalibTreeSvc.h" //maybe
21#include "CalibDataSvc/ICalibMetaCnvSvc.h"
22
23// Temporary. Hope to find a better way to do this
24#include "CalibData/CalibModel.h"
25using namespace CalibData;
26//static CnvFactory<TreeTofSimDataCnv> TofCal_factory;
27//const ICnvFactory& TreeTofSimDataCnvFactory = TofCal_factory;
28
29
30
33
34 }
35
36
37const CLID& TreeTofSimDataCnv::objType() const {
38 return CLID_Calib_TofSim;
39}
40
42 return CLID_Calib_TofSim;
43}
44
45StatusCode TreeTofSimDataCnv::i_createObj(IOpaqueAddress* addr,
46 DataObject*& refpObject) {
47
48 MsgStream log(msgSvc(), "TreeTofSimDataCnv");
49 log<<MSG::DEBUG<<"SetProperty"<<endreq;
50
51 TreeAddress* add = dynamic_cast<TreeAddress*>(addr);
52
53 DatabaseRecord *records=add->pp();
54
55 TBufferFile *buf1 = new TBufferFile(TBuffer::kRead);
56 TBufferFile *buf2 = new TBufferFile(TBuffer::kRead);
57 TBufferFile *buf3 = new TBufferFile(TBuffer::kRead);
58
59 buf1->SetBuffer((*records)["BTofSim"],512000,kFALSE);
60 buf2->SetBuffer((*records)["ETofSim"],512000,kFALSE);
61 buf3->SetBuffer((*records)["SimConstants"],512000,kFALSE);
62
63
64 std::cout<<" SftVer is "<<(*records)["SftVer"];
65 std::cout<<" CalVerSft is "<<(*records)["TofSimParVer"];
66 std::cout<<" File name is "<<(*records)["FileName"]<<std::endl;
67
68
69
70 TTree *btoftree= new TTree();
71 TTree *etoftree= new TTree();
72 TTree *btofcommontree = new TTree();
73 btoftree->Streamer(*buf1);
74 etoftree->Streamer(*buf2);
75 btofcommontree->Streamer(*buf3);
76
80 std::vector<CalibData::BTofSimBase> tmpbTof;//; = new vector<CalibData::bTofCalibBase>;
81 std::vector<CalibData::ETofSimBase> tmpeTof;
82 std::vector<CalibData::TofSimConstBase> tofbaseCol;
83 // Read in the object
84 int cnt;
85 // read btoftree ------------------------------------------------------------
86 double AttenLength;
87 double Gain;
88 double Ratio;
89 double NoiseSmear;
90 btoftree -> SetBranchAddress("AttenLength", &AttenLength);
91 btoftree -> SetBranchAddress("Gain", &Gain);
92 btoftree -> SetBranchAddress("Ratio", &Ratio);
93 int entries=btoftree->GetEntries();
94 for(cnt=0; cnt<entries; cnt++){
95 btoftree -> GetEntry(cnt);
96 bTof.setGain(Gain);
97 bTof.setRatio(Ratio);
98 bTof.setAttenLength(AttenLength);
99 tmpbTof.push_back(bTof);
100 }
101 //read etoftree
102 etoftree -> SetBranchAddress("Gain", &Gain);
103 etoftree -> SetBranchAddress("AttenLength", &AttenLength);
104 etoftree -> SetBranchAddress("NoiseSmear", &NoiseSmear );
105 entries=etoftree->GetEntries();
106 for(cnt=0; cnt<entries; cnt++){
107 etoftree->GetEntry(cnt);
108 eTof.setGain(Gain);
109 eTof.setAttenLength(AttenLength);
110 eTof.setNoiseSmear(NoiseSmear);
111 tmpeTof.push_back(eTof);
112 }
113 //read SimConstants
114 double BarConstant,BarPMTGain,BarHighThres,BarLowThres,EndConstant,EndPMTGain,EndHighThres,EndLowThres,EndNoiseSwitch;
115 btofcommontree-> SetBranchAddress("BarConstant", &BarConstant);
116 btofcommontree-> SetBranchAddress("BarPMTGain", &BarPMTGain);
117 btofcommontree-> SetBranchAddress("BarHighThres", &BarHighThres);
118 btofcommontree-> SetBranchAddress("BarLowThres", &BarLowThres);
119 btofcommontree-> SetBranchAddress("EndConstant", &EndConstant);
120 btofcommontree-> SetBranchAddress("EndPMTGain", &EndPMTGain);
121 btofcommontree-> SetBranchAddress("EndHighThres", &EndHighThres);
122 btofcommontree-> SetBranchAddress("EndLowThres", &EndLowThres);
123 btofcommontree-> SetBranchAddress("EndNoiseSwitch", &EndNoiseSwitch);
124 entries = btofcommontree->GetEntries();
125 for(cnt=0;cnt<entries;cnt++){
126 btofcommontree->GetEntry(cnt);
127 tofbase.setBarLowThres(BarLowThres);
128 tofbase.setBarHighThres(BarHighThres);
129 tofbase.setEndLowThres(EndLowThres);
130 tofbase.setEndHighThres(EndHighThres);
131 tofbase.setBarPMTGain(BarPMTGain);
132 tofbase.setEndPMTGain(EndPMTGain);
133 tofbase.setBarConstant(BarConstant);
134 tofbase.setEndConstant(EndConstant);
135 tofbase.setEndNoiseSwitch(EndNoiseSwitch);
136 tofbaseCol.push_back(tofbase);
137 }
138
139 CalibData::TofSimData *tmpObject = new CalibData::TofSimData(&tofbaseCol,&tmpbTof,&tmpeTof);
140 refpObject=tmpObject;
141 delete btoftree;
142 delete etoftree;
143 delete btofcommontree;
144
145 return StatusCode::SUCCESS;
146
147
148}
149
data SetBranchAddress("time",&time)
data GetEntry(0)
virtual StatusCode i_createObj(IOpaqueAddress *address, DataObject *&refpObject)
const CLID & objType() const
TreeTofSimDataCnv(ISvcLocator *svc)
static const CLID & classID()