BOSS 7.0.1
BESIII Offline Software System
Loading...
Searching...
No Matches
RootDedxSimDataCnv Class Reference

#include <RootDedxSimDataCnv.h>

+ Inheritance diagram for RootDedxSimDataCnv:

Public Member Functions

const CLID & objType () const
 
 RootDedxSimDataCnv (ISvcLocator *svc)
 
virtual ~RootDedxSimDataCnv ()
 
virtual StatusCode createRoot (const std::string &fname, CalibData::CalibBase1 *pTDSObj)
 
virtual long repSvcType () const
 
- Public Member Functions inherited from RootCalBaseCnv
virtual ~RootCalBaseCnv ()
 
virtual StatusCode initialize ()
 
virtual StatusCode finalize ()
 
virtual StatusCode createObj (IOpaqueAddress *addr, DataObject *&refpObject)
 
ICalibRootSvcgetCalibRootSvc ()
 
 RootCalBaseCnv (ISvcLocator *svc, const CLID &clid)
 
virtual StatusCode createRoot (const std::string &fname, CalibData::CalibBase1 *pTDSObj)
 
virtual StatusCode readRootObj (const std::string &treename, const std::string &branch, TObject *&pCalib, unsigned index=0)
 
virtual StatusCode readRootObj (TTree *tree, const std::string &branch, TObject *&pCalib, unsigned index=0)
 
- Public Member Functions inherited from Converter< Ty1, Ty2 >
destinationoperator (const source &) const
 
destinationoperator (const source &) const
 

Static Public Member Functions

static const CLID & classID ()
 
- Static Public Member Functions inherited from RootCalBaseCnv
static const unsigned char storageType ()
 

Protected Member Functions

virtual StatusCode i_createObj (const std::string &fname, DataObject *&refpObject)
 
- Protected Member Functions inherited from RootCalBaseCnv
virtual StatusCode internalCreateObj (const std::string &fname, DataObject *&refpObject, IOpaqueAddress *address)
 
virtual StatusCode i_createObj (const std::string &fname, DataObject *&refpObject)
 
virtual StatusCode i_processObj (DataObject *pObject, IOpaqueAddress *address)
 In case there is additional work to do on the created object.
 
virtual StatusCode fillRoot (CalibData::CalibBase *pTDSObj, TObject *pRootObj)
 
virtual StatusCode openWrite (const std::string &fname)
 
StatusCode closeWrite ()
 
StatusCode openRead (const std::string &fname)
 
StatusCode closeRead ()
 
void setBaseInfo (CalibData::CalibBase1 *pObj)
 Another utility for derived classes to use.
 
- Protected Member Functions inherited from Converter< Ty1, Ty2 >
virtual destinationconvert (const source &) const =0
 
virtual destinationconvert (const source &) const =0
 

Friends

class CnvFactory< RootDedxSimDataCnv >
 

Additional Inherited Members

- Public Types inherited from Converter< Ty1, Ty2 >
typedef Ty1 source
 
typedef Ty2 destination
 
typedef Ty1 source
 
typedef Ty2 destination
 
- Protected Attributes inherited from RootCalBaseCnv
ICalibRootSvcm_rootSvc
 
ICalibMetaCnvSvcm_metaSvc
 
IInstrumentNamem_instrSvc
 
int m_serNo
 
ITime * m_vstart
 
ITime * m_vend
 
int m_runfrm
 
int m_runto
 
TFile * m_outFile
 
TTree * m_ttree
 
TFile * m_inFile
 
TDirectory * m_saveDir
 

Detailed Description

Definition at line 17 of file RootDedxSimDataCnv.h.

Constructor & Destructor Documentation

◆ RootDedxSimDataCnv()

RootDedxSimDataCnv::RootDedxSimDataCnv ( ISvcLocator *  svc)

◆ ~RootDedxSimDataCnv()

virtual RootDedxSimDataCnv::~RootDedxSimDataCnv ( )
inlinevirtual

Definition at line 26 of file RootDedxSimDataCnv.h.

26{};

Member Function Documentation

◆ classID()

const CLID & RootDedxSimDataCnv::classID ( )
static

Definition at line 44 of file RootDedxSimDataCnv.cxx.

44 {
45 return CLID_Dedx_Sim;
46}

◆ createRoot()

StatusCode RootDedxSimDataCnv::createRoot ( const std::string &  fname,
CalibData::CalibBase1 pTDSObj 
)
virtual

Create ROOT file corresponding to TDS object input.
Default implementation is to return an error. Must be separately implemented for each calibration type.

Parameters
fnameFilename for output file
pTDSObjPointer to tds object to be converted

Reimplemented from RootCalBaseCnv.

Definition at line 106 of file RootDedxSimDataCnv.cxx.

107 {
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}
virtual StatusCode openWrite(const std::string &fname)

◆ i_createObj()

StatusCode RootDedxSimDataCnv::i_createObj ( const std::string &  fname,
DataObject *&  refpObject 
)
protectedvirtual

Create the transient representation of an object, given an opaque address. This and the following update method comprise the core functionality of calibration converters. Convenience routine used by most CAL calibration types, which have a <dimension> element describing how the remainder of the Data is laid out. Read from TDS; store information internally in protected members.
Given a pointer to a TDS object which can be cast to "our" type, fill in corresponding information in the corresponding root class

Parameters
pTDSObjPointer to tds object to be converted
pRootObjPointer to destination root object Read in object from specified branch. Don't need tree name; it's always Calib

Reimplemented from RootCalBaseCnv.

Definition at line 48 of file RootDedxSimDataCnv.cxx.

49 {
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}
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)

◆ objType()

const CLID & RootDedxSimDataCnv::objType ( ) const

Definition at line 40 of file RootDedxSimDataCnv.cxx.

40 {
41 return CLID_Dedx_Sim;
42}

◆ repSvcType()

virtual long RootDedxSimDataCnv::repSvcType ( ) const
inlinevirtual

Definition at line 31 of file RootDedxSimDataCnv.h.

Friends And Related Function Documentation

◆ CnvFactory< RootDedxSimDataCnv >

friend class CnvFactory< RootDedxSimDataCnv >
friend

Definition at line 1 of file RootDedxSimDataCnv.h.


The documentation for this class was generated from the following files: