BOSS 6.6.4.p01
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.4 2011/02/17 05:12:53 maqm Exp $
2#include "GaudiKernel/MsgStream.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
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
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 double betagamma[5000];
80 int totalNum;
81 int bgNum;
82 TTree* bin = (TTree*)m_inFile->Get("bin");
83 bin->SetBranchAddress("totalNum", &totalNum);
84 bin->SetBranchAddress("betagamma", betagamma);
85 bin->SetBranchAddress("betagammaBounds", &bgNum);
86 bin->GetEntry(0);
87
88 //int tot=totalNum*2;
89 for (cnt = 0; cnt < bgNum; cnt++) {
90 hRange.push_back(betagamma[cnt]);
91 }
92
93 tmpObject->setRangeNo(bgNum);
94 tmpObject->setRange(&hRange);
95 tmpObject->setHistNo(totalNum);
96 tmpObject->setHist(&hist);
97 refpObject = tmpObject;
98
99 return StatusCode::SUCCESS;
100}
101
102StatusCode RootDedxSimDataCnv::createRoot(const std::string& fname,
103 CalibData::CalibBase1* pTDSObj) {
104 MsgStream log(msgSvc(), "RootDedxSimDataCnv");
105
106 // Open the file, create the branch
107 StatusCode sc = openWrite(fname);
108 if(!sc)
109 { log<<MSG::ERROR<<"unable to open files"<<endreq;
110 }
111 // write the Data in the TCDS to RootFile
112 /* int i;
113 int j;
114 CalibData::TofCalibData* btof = dynamic_cast<CalibData::TofCalibData*>(pTDSObj);
115
116 // write btoftree----------------------------------------------------------------
117 double cnvP1[10];
118 double cnvP2[10];
119 double cnvW[4];
120 double cnvAtten[8];
121 double cnvQ;
122 double cnvSpeed[2];
123 TTree *btoftree = new TTree("BarTofPar", "BarTofPar");
124 btoftree -> Branch("Atten0",&cnvAtten[0], "Atten0/D");
125 btoftree -> Branch("Atten1",&cnvAtten[1], "Atten1/D");
126 btoftree -> Branch("Atten2",&cnvAtten[2], "Atten2/D");
127 btoftree -> Branch("Atten3",&cnvAtten[3], "Atten3/D");
128 btoftree -> Branch("Atten4",&cnvAtten[4], "Atten4/D");
129 btoftree -> Branch("Atten5",&cnvAtten[5], "Atten5/D");
130 btoftree -> Branch("Atten6",&cnvAtten[6], "Atten6/D");
131 btoftree -> Branch("Atten7",&cnvAtten[7], "Atten7/D");
132 btoftree -> Branch("Q0",&cnvQ, "Q0/D");
133 btoftree -> Branch("Speed0",&cnvSpeed[0], "Speed0/D");
134 btoftree -> Branch("Speed1",&cnvSpeed[1], "Speed1/D");
135 btoftree -> Branch("P0",&cnvP1[0], "P0/D");
136 btoftree -> Branch("P1",&cnvP1[1], "P1/D");
137 btoftree -> Branch("P2",&cnvP1[2], "P2/D");
138 btoftree -> Branch("P3",&cnvP1[3], "P3/D");
139 btoftree -> Branch("P4",&cnvP1[4], "P4/D");
140 btoftree -> Branch("P5",&cnvP1[5], "P5/D");
141 btoftree -> Branch("P6",&cnvP1[6], "P6/D");
142 btoftree -> Branch("P7",&cnvP1[7], "P7/D");
143 btoftree -> Branch("P8",&cnvP1[8], "P8/D");
144 btoftree -> Branch("P9",&cnvP1[9], "P9/D");
145 btoftree -> Branch("P10",&cnvP2[0], "P10/D");
146 btoftree -> Branch("P11",&cnvP2[1], "P11/D");
147 btoftree -> Branch("P12",&cnvP2[2], "P12/D");
148 btoftree -> Branch("P13",&cnvP2[3], "P13/D");
149 btoftree -> Branch("P14",&cnvP2[4], "P14/D");
150 btoftree -> Branch("P15",&cnvP2[5], "P15/D");
151 btoftree -> Branch("P16",&cnvP2[6], "P16/D");
152 btoftree -> Branch("P17",&cnvP2[7], "P17/D");
153 btoftree -> Branch("P18",&cnvP2[8], "P17/D");
154 btoftree -> Branch("P19",&cnvP2[9], "P17/D");
155 btoftree -> Branch("W0",&cnvW[0], "W0/D");
156 btoftree -> Branch("W1",&cnvW[1], "W1/D");
157 btoftree -> Branch("W2",&cnvW[2], "W2/D");
158 btoftree -> Branch("W3",&cnvW[3], "W3/D");
159
160 for(i=0; i<176; i++){
161 cnvAtten[0] = btof->getBTofAtten(i,0);
162 cnvAtten[1] = btof->getBTofAtten(i,1);
163 cnvAtten[2] = btof->getBTofAtten(i,2);
164 cnvQ = btof->getBTofQ(i);
165 cnvSpeed[0] = btof->getBTofSpeed(i,0);
166 cnvSpeed[1] = btof->getBTofSpeed(i,1);
167 for(j=0;j<10;j++){
168 cnvP1[j] = btof->getBTofPleft(i,j);
169 cnvP2[j] = btof->getBTofPright(i,j);
170 }
171 for(j=0;j<4;j++){
172 cnvW[j]=btof->getBTofW(i,j);
173 }
174 btoftree -> Fill();
175 }
176
177 //write etoftree----------------------------------------------------------------
178 double ecnvP[8];
179 double ecnvAtten[5];
180 double ecnvSpeed[3];
181 TTree *etoftree = new TTree("EndTofPar", "EndTofPar");
182 etoftree -> Branch("Atten0",&ecnvAtten[0], "Atten0/D");
183 etoftree -> Branch("Atten1",&ecnvAtten[1], "Atten1/D");
184 etoftree -> Branch("Atten2",&ecnvAtten[2], "Atten2/D");
185 etoftree -> Branch("Atten3",&ecnvAtten[3], "Atten3/D");
186 etoftree -> Branch("Atten4",&ecnvAtten[4], "Atten4/D");
187 etoftree -> Branch("Speed0",&ecnvSpeed[0], "Speed0/D");
188 etoftree -> Branch("Speed1",&ecnvSpeed[1], "Speed1/D");
189 etoftree -> Branch("P0",&ecnvP[0], "P0/D");
190 etoftree -> Branch("P1",&ecnvP[1], "P1/D");
191 etoftree -> Branch("P2",&ecnvP[2], "P2/D");
192 etoftree -> Branch("P3",&ecnvP[3], "P3/D");
193 etoftree -> Branch("P4",&ecnvP[4], "P4/D");
194 etoftree -> Branch("P5",&ecnvP[5], "P5/D");
195 etoftree -> Branch("P6",&ecnvP[6], "P6/D");
196 etoftree -> Branch("P7",&ecnvP[7], "P7/D");
197
198 for(i=0; i<96; i++){
199 ecnvAtten[0] = btof->getETofAtten(i,0);
200 ecnvAtten[1] = btof->getETofAtten(i,1);
201 ecnvAtten[2] = btof->getETofAtten(i,2);
202 ecnvSpeed[0] = btof->getETofSpeed(i,0);
203 ecnvSpeed[1] = btof->getETofSpeed(i,1);
204 for(j=0;j<8;j++){
205 ecnvP[j] = btof->getETofP(i,j);
206 }
207 etoftree -> Fill();
208 }
209// write all the trees
210 btoftree -> Write();
211 etoftree -> Write();
212 delete btoftree;
213 delete etoftree;
214 closeWrite();
215 log<<MSG::INFO<<"successfully create RootFile"<<endreq;
216*/
217 return sc;
218
219}
const CLID CLID_Dedx_Sim
Definition: CalibModel.h:61
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
IMessageSvc * msgSvc()
void setHistNo(const int No)
Definition: DedxSimData.h:42
void setRange(const vector< double > *hRange)
Definition: DedxSimData.cxx:42
void setHist(const vector< TH1F > *hist)
Definition: DedxSimData.cxx:37
void setRangeNo(const int No)
Definition: DedxSimData.h:46
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)