CGEM BOSS 6.6.5.h
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 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
 

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_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
 

Friends

class CnvFactory< RootDedxSimDataCnv >
 

Additional Inherited Members

- Public Types inherited from Converter< Ty1, Ty2 >
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)

Definition at line 35 of file RootDedxSimDataCnv.cxx.

35 :
37 }
const CLID CLID_Dedx_Sim
Definition CalibModel.h:61
RootCalBaseCnv(ISvcLocator *svc, const CLID &clid)

◆ ~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 102 of file RootDedxSimDataCnv.cxx.

103 {
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}
IMessageSvc * msgSvc()
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 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}
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 setHistNo(const int No)
Definition DedxSimData.h:42
void setRange(const vector< double > *hRange)
void setHist(const vector< TH1F > *hist)
void setRangeNo(const int No)
Definition DedxSimData.h:46
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.

31 {
33 }
unsigned const char CALIBROOT_StorageType

Friends And Related Symbol 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: