BOSS 7.0.1
BESIII Offline Software System
Loading...
Searching...
No Matches
RootDedxSimDataCnv.cxx
Go to the documentation of this file.
1// $Header: /bes/bes/BossCvs/Calibration/CalibSvc/CalibROOTCnv/src/cnv/RootDedxSimDataCnv.cxx,v 1.5 2016/06/16 03:18:37 zhaog Exp $
2#include "GaudiKernel/MsgStream.h"
4#include "CalibData/Dedx/DedxSimData.h"
5#include "CalibDataSvc/IInstrumentName.h"
6
7#include "TFile.h"
8#include "TTree.h"
9#include "TDirectory.h"
10#include "TObject.h"
11#include "TROOT.h"
12
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"
20
21#include "CalibDataSvc/ICalibRootSvc.h" //maybe
22#include "CalibDataSvc/ICalibMetaCnvSvc.h"
23//#include "CalibData/CalibTime.h"
24//#include "commonRootData/idents/CalXtalId.h"
25//#include "idents/CalXtalId.h"
26
27// Temporary. Hope to find a better way to do this
28#include "CalibData/CalibModel.h"
29using namespace CalibData;
30//static CnvFactory<RootDedxSimDataCnv> TofCalib_factory;
31//const ICnvFactory& RootDedxSimDataCnvFactory = TofCalib_factory;
32
33
34
37 }
38
39
40const CLID& RootDedxSimDataCnv::objType() const {
41 return CLID_Dedx_Sim;
42}
43
45 return CLID_Dedx_Sim;
46}
47
48StatusCode RootDedxSimDataCnv::i_createObj(const std::string& fname,
49 DataObject*& refpObject) {
50
51 MsgStream log(msgSvc(), "RootDedxSimDataCnv");
52 log<<MSG::DEBUG<<"SetProperty"<<endreq;
53
55
56 TH1F *h1=new TH1F();
57 // open the file
58 StatusCode sc = openRead(fname);
59 if(!sc)
60 {
61 log<<MSG::ERROR<<"unable to open files"<<endreq;
62 }
63
64 std::vector<TH1F> hist;
65 std::vector<double> hRange;
66 // Read in the object
67 int cnt;
68 TTree *tree=(TTree*)m_inFile->Get("TH1F_Col");
69 tree->SetBranchAddress("TH1F_Col", &h1);
70 int entries=tree->GetEntries();
71 for (cnt = 0; cnt < entries; cnt++) {
72 tree -> GetEntry(cnt);
73 gROOT->cd();
74 TH1F *h2=new TH1F();
75 h2=(TH1F*)h1->Clone();
76 hist.push_back(*h2);
77 }
78// tmpObject->setHist(&hist);
79 int ver;
80 double betagamma[5000];
81 int totalNum;
82 int bgNum;
83 TTree* bin = (TTree*)m_inFile->Get("bin");
84 if (bin->FindBranch("version")) bin->SetBranchAddress("version", &ver);
85 else ver = 0;
86 bin->SetBranchAddress("totalNum", &totalNum);
87 bin->SetBranchAddress("betagamma", betagamma);
88 bin->SetBranchAddress("betagammaBounds", &bgNum);
89 bin->GetEntry(0);
90
91 //int tot=totalNum*2;
92 for (cnt = 0; cnt < bgNum; cnt++) {
93 hRange.push_back(betagamma[cnt]);
94 }
95
96 tmpObject->setVersion(ver);
97 tmpObject->setRangeNo(bgNum);
98 tmpObject->setRange(&hRange);
99 tmpObject->setHistNo(totalNum);
100 tmpObject->setHist(&hist);
101 refpObject = tmpObject;
102
103 return StatusCode::SUCCESS;
104}
105
106StatusCode RootDedxSimDataCnv::createRoot(const std::string& fname,
107 CalibData::CalibBase1* pTDSObj) {
108 MsgStream log(msgSvc(), "RootDedxSimDataCnv");
109
110 // Open the file, create the branch
111 StatusCode sc = openWrite(fname);
112 if(!sc)
113 { log<<MSG::ERROR<<"unable to open files"<<endreq;
114 }
115 // write the Data in the TCDS to RootFile
116 /* int i;
117 int j;
118 CalibData::TofCalibData* btof = dynamic_cast<CalibData::TofCalibData*>(pTDSObj);
119
120 // write btoftree----------------------------------------------------------------
121 double cnvP1[10];
122 double cnvP2[10];
123 double cnvW[4];
124 double cnvAtten[8];
125 double cnvQ;
126 double cnvSpeed[2];
127 TTree *btoftree = new TTree("BarTofPar", "BarTofPar");
128 btoftree -> Branch("Atten0",&cnvAtten[0], "Atten0/D");
129 btoftree -> Branch("Atten1",&cnvAtten[1], "Atten1/D");
130 btoftree -> Branch("Atten2",&cnvAtten[2], "Atten2/D");
131 btoftree -> Branch("Atten3",&cnvAtten[3], "Atten3/D");
132 btoftree -> Branch("Atten4",&cnvAtten[4], "Atten4/D");
133 btoftree -> Branch("Atten5",&cnvAtten[5], "Atten5/D");
134 btoftree -> Branch("Atten6",&cnvAtten[6], "Atten6/D");
135 btoftree -> Branch("Atten7",&cnvAtten[7], "Atten7/D");
136 btoftree -> Branch("Q0",&cnvQ, "Q0/D");
137 btoftree -> Branch("Speed0",&cnvSpeed[0], "Speed0/D");
138 btoftree -> Branch("Speed1",&cnvSpeed[1], "Speed1/D");
139 btoftree -> Branch("P0",&cnvP1[0], "P0/D");
140 btoftree -> Branch("P1",&cnvP1[1], "P1/D");
141 btoftree -> Branch("P2",&cnvP1[2], "P2/D");
142 btoftree -> Branch("P3",&cnvP1[3], "P3/D");
143 btoftree -> Branch("P4",&cnvP1[4], "P4/D");
144 btoftree -> Branch("P5",&cnvP1[5], "P5/D");
145 btoftree -> Branch("P6",&cnvP1[6], "P6/D");
146 btoftree -> Branch("P7",&cnvP1[7], "P7/D");
147 btoftree -> Branch("P8",&cnvP1[8], "P8/D");
148 btoftree -> Branch("P9",&cnvP1[9], "P9/D");
149 btoftree -> Branch("P10",&cnvP2[0], "P10/D");
150 btoftree -> Branch("P11",&cnvP2[1], "P11/D");
151 btoftree -> Branch("P12",&cnvP2[2], "P12/D");
152 btoftree -> Branch("P13",&cnvP2[3], "P13/D");
153 btoftree -> Branch("P14",&cnvP2[4], "P14/D");
154 btoftree -> Branch("P15",&cnvP2[5], "P15/D");
155 btoftree -> Branch("P16",&cnvP2[6], "P16/D");
156 btoftree -> Branch("P17",&cnvP2[7], "P17/D");
157 btoftree -> Branch("P18",&cnvP2[8], "P17/D");
158 btoftree -> Branch("P19",&cnvP2[9], "P17/D");
159 btoftree -> Branch("W0",&cnvW[0], "W0/D");
160 btoftree -> Branch("W1",&cnvW[1], "W1/D");
161 btoftree -> Branch("W2",&cnvW[2], "W2/D");
162 btoftree -> Branch("W3",&cnvW[3], "W3/D");
163
164 for(i=0; i<176; i++){
165 cnvAtten[0] = btof->getBTofAtten(i,0);
166 cnvAtten[1] = btof->getBTofAtten(i,1);
167 cnvAtten[2] = btof->getBTofAtten(i,2);
168 cnvQ = btof->getBTofQ(i);
169 cnvSpeed[0] = btof->getBTofSpeed(i,0);
170 cnvSpeed[1] = btof->getBTofSpeed(i,1);
171 for(j=0;j<10;j++){
172 cnvP1[j] = btof->getBTofPleft(i,j);
173 cnvP2[j] = btof->getBTofPright(i,j);
174 }
175 for(j=0;j<4;j++){
176 cnvW[j]=btof->getBTofW(i,j);
177 }
178 btoftree -> Fill();
179 }
180
181 //write etoftree----------------------------------------------------------------
182 double ecnvP[8];
183 double ecnvAtten[5];
184 double ecnvSpeed[3];
185 TTree *etoftree = new TTree("EndTofPar", "EndTofPar");
186 etoftree -> Branch("Atten0",&ecnvAtten[0], "Atten0/D");
187 etoftree -> Branch("Atten1",&ecnvAtten[1], "Atten1/D");
188 etoftree -> Branch("Atten2",&ecnvAtten[2], "Atten2/D");
189 etoftree -> Branch("Atten3",&ecnvAtten[3], "Atten3/D");
190 etoftree -> Branch("Atten4",&ecnvAtten[4], "Atten4/D");
191 etoftree -> Branch("Speed0",&ecnvSpeed[0], "Speed0/D");
192 etoftree -> Branch("Speed1",&ecnvSpeed[1], "Speed1/D");
193 etoftree -> Branch("P0",&ecnvP[0], "P0/D");
194 etoftree -> Branch("P1",&ecnvP[1], "P1/D");
195 etoftree -> Branch("P2",&ecnvP[2], "P2/D");
196 etoftree -> Branch("P3",&ecnvP[3], "P3/D");
197 etoftree -> Branch("P4",&ecnvP[4], "P4/D");
198 etoftree -> Branch("P5",&ecnvP[5], "P5/D");
199 etoftree -> Branch("P6",&ecnvP[6], "P6/D");
200 etoftree -> Branch("P7",&ecnvP[7], "P7/D");
201
202 for(i=0; i<96; i++){
203 ecnvAtten[0] = btof->getETofAtten(i,0);
204 ecnvAtten[1] = btof->getETofAtten(i,1);
205 ecnvAtten[2] = btof->getETofAtten(i,2);
206 ecnvSpeed[0] = btof->getETofSpeed(i,0);
207 ecnvSpeed[1] = btof->getETofSpeed(i,1);
208 for(j=0;j<8;j++){
209 ecnvP[j] = btof->getETofP(i,j);
210 }
211 etoftree -> Fill();
212 }
213// write all the trees
214 btoftree -> Write();
215 etoftree -> Write();
216 delete btoftree;
217 delete etoftree;
218 closeWrite();
219 log<<MSG::INFO<<"successfully create RootFile"<<endreq;
220*/
221 return sc;
222
223}
data GetEntry(0)
*******INTEGER m_nBinMax INTEGER m_NdiMax !No of bins in histogram for cell exploration division $ !Last vertex $ !Last active cell $ !Last cell in buffer $ !No of sampling when dividing cell $ !No of function total $ !Flag for random ceel for $ !Flag for type of for WtMax $ !Flag which decides whether vertices are included in the sampling $ entire domain is hyp !Maximum effective eevents per bin
Definition: FoamA.h:85
void setRange(const vector< double > *hRange)
Definition: DedxSimData.cxx:43
void setHist(const vector< TH1F > *hist)
Definition: DedxSimData.cxx:38
StatusCode openRead(const std::string &fname)
virtual StatusCode openWrite(const std::string &fname)
virtual StatusCode i_createObj(const std::string &fname, DataObject *&refpObject)
static const CLID & classID()
virtual StatusCode createRoot(const std::string &fname, CalibData::CalibBase1 *pTDSObj)
const CLID & objType() const
RootDedxSimDataCnv(ISvcLocator *svc)