BOSS 8.0.0
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
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_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
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
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 19 of file RootDedxSimDataCnv.h.

Constructor & Destructor Documentation

◆ RootDedxSimDataCnv()

RootDedxSimDataCnv::RootDedxSimDataCnv ( ISvcLocator * svc)

Definition at line 34 of file RootDedxSimDataCnv.cxx.

35 : RootCalBaseCnv( svc, CLID_Dedx_Sim ) {}
RootCalBaseCnv(ISvcLocator *svc, const CLID &clid)

◆ ~RootDedxSimDataCnv()

virtual RootDedxSimDataCnv::~RootDedxSimDataCnv ( )
inlinevirtual

Definition at line 28 of file RootDedxSimDataCnv.h.

28{};

Member Function Documentation

◆ classID()

const CLID & RootDedxSimDataCnv::classID ( )
static

Definition at line 39 of file RootDedxSimDataCnv.cxx.

39{ return CLID_Dedx_Sim; }

Referenced by CalibRootCnvSvc::createConverter().

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

100 {
101 MsgStream log( msgSvc(), "RootDedxSimDataCnv" );
102
103 // Open the file, create the branch
104 StatusCode sc = openWrite( fname );
105 if ( !sc ) { log << MSG::ERROR << "unable to open files" << endmsg; }
106 // write the Data in the TCDS to RootFile
107 /* int i;
108 int j;
109 CalibData::TofCalibData* btof = dynamic_cast<CalibData::TofCalibData*>(pTDSObj);
110
111 // write btoftree----------------------------------------------------------------
112 double cnvP1[10];
113 double cnvP2[10];
114 double cnvW[4];
115 double cnvAtten[8];
116 double cnvQ;
117 double cnvSpeed[2];
118 TTree *btoftree = new TTree("BarTofPar", "BarTofPar");
119 btoftree -> Branch("Atten0",&cnvAtten[0], "Atten0/D");
120 btoftree -> Branch("Atten1",&cnvAtten[1], "Atten1/D");
121 btoftree -> Branch("Atten2",&cnvAtten[2], "Atten2/D");
122 btoftree -> Branch("Atten3",&cnvAtten[3], "Atten3/D");
123 btoftree -> Branch("Atten4",&cnvAtten[4], "Atten4/D");
124 btoftree -> Branch("Atten5",&cnvAtten[5], "Atten5/D");
125 btoftree -> Branch("Atten6",&cnvAtten[6], "Atten6/D");
126 btoftree -> Branch("Atten7",&cnvAtten[7], "Atten7/D");
127 btoftree -> Branch("Q0",&cnvQ, "Q0/D");
128 btoftree -> Branch("Speed0",&cnvSpeed[0], "Speed0/D");
129 btoftree -> Branch("Speed1",&cnvSpeed[1], "Speed1/D");
130 btoftree -> Branch("P0",&cnvP1[0], "P0/D");
131 btoftree -> Branch("P1",&cnvP1[1], "P1/D");
132 btoftree -> Branch("P2",&cnvP1[2], "P2/D");
133 btoftree -> Branch("P3",&cnvP1[3], "P3/D");
134 btoftree -> Branch("P4",&cnvP1[4], "P4/D");
135 btoftree -> Branch("P5",&cnvP1[5], "P5/D");
136 btoftree -> Branch("P6",&cnvP1[6], "P6/D");
137 btoftree -> Branch("P7",&cnvP1[7], "P7/D");
138 btoftree -> Branch("P8",&cnvP1[8], "P8/D");
139 btoftree -> Branch("P9",&cnvP1[9], "P9/D");
140 btoftree -> Branch("P10",&cnvP2[0], "P10/D");
141 btoftree -> Branch("P11",&cnvP2[1], "P11/D");
142 btoftree -> Branch("P12",&cnvP2[2], "P12/D");
143 btoftree -> Branch("P13",&cnvP2[3], "P13/D");
144 btoftree -> Branch("P14",&cnvP2[4], "P14/D");
145 btoftree -> Branch("P15",&cnvP2[5], "P15/D");
146 btoftree -> Branch("P16",&cnvP2[6], "P16/D");
147 btoftree -> Branch("P17",&cnvP2[7], "P17/D");
148 btoftree -> Branch("P18",&cnvP2[8], "P17/D");
149 btoftree -> Branch("P19",&cnvP2[9], "P17/D");
150 btoftree -> Branch("W0",&cnvW[0], "W0/D");
151 btoftree -> Branch("W1",&cnvW[1], "W1/D");
152 btoftree -> Branch("W2",&cnvW[2], "W2/D");
153 btoftree -> Branch("W3",&cnvW[3], "W3/D");
154
155 for(i=0; i<176; i++){
156 cnvAtten[0] = btof->getBTofAtten(i,0);
157 cnvAtten[1] = btof->getBTofAtten(i,1);
158 cnvAtten[2] = btof->getBTofAtten(i,2);
159 cnvQ = btof->getBTofQ(i);
160 cnvSpeed[0] = btof->getBTofSpeed(i,0);
161 cnvSpeed[1] = btof->getBTofSpeed(i,1);
162 for(j=0;j<10;j++){
163 cnvP1[j] = btof->getBTofPleft(i,j);
164 cnvP2[j] = btof->getBTofPright(i,j);
165 }
166 for(j=0;j<4;j++){
167 cnvW[j]=btof->getBTofW(i,j);
168 }
169 btoftree -> Fill();
170 }
171
172 //write etoftree----------------------------------------------------------------
173 double ecnvP[8];
174 double ecnvAtten[5];
175 double ecnvSpeed[3];
176 TTree *etoftree = new TTree("EndTofPar", "EndTofPar");
177 etoftree -> Branch("Atten0",&ecnvAtten[0], "Atten0/D");
178 etoftree -> Branch("Atten1",&ecnvAtten[1], "Atten1/D");
179 etoftree -> Branch("Atten2",&ecnvAtten[2], "Atten2/D");
180 etoftree -> Branch("Atten3",&ecnvAtten[3], "Atten3/D");
181 etoftree -> Branch("Atten4",&ecnvAtten[4], "Atten4/D");
182 etoftree -> Branch("Speed0",&ecnvSpeed[0], "Speed0/D");
183 etoftree -> Branch("Speed1",&ecnvSpeed[1], "Speed1/D");
184 etoftree -> Branch("P0",&ecnvP[0], "P0/D");
185 etoftree -> Branch("P1",&ecnvP[1], "P1/D");
186 etoftree -> Branch("P2",&ecnvP[2], "P2/D");
187 etoftree -> Branch("P3",&ecnvP[3], "P3/D");
188 etoftree -> Branch("P4",&ecnvP[4], "P4/D");
189 etoftree -> Branch("P5",&ecnvP[5], "P5/D");
190 etoftree -> Branch("P6",&ecnvP[6], "P6/D");
191 etoftree -> Branch("P7",&ecnvP[7], "P7/D");
192
193 for(i=0; i<96; i++){
194 ecnvAtten[0] = btof->getETofAtten(i,0);
195 ecnvAtten[1] = btof->getETofAtten(i,1);
196 ecnvAtten[2] = btof->getETofAtten(i,2);
197 ecnvSpeed[0] = btof->getETofSpeed(i,0);
198 ecnvSpeed[1] = btof->getETofSpeed(i,1);
199 for(j=0;j<8;j++){
200 ecnvP[j] = btof->getETofP(i,j);
201 }
202 etoftree -> Fill();
203 }
204 // write all the trees
205 btoftree -> Write();
206 etoftree -> Write();
207 delete btoftree;
208 delete etoftree;
209 closeWrite();
210 log<<MSG::INFO<<"successfully create RootFile"<<endmsg;
211 */
212 return sc;
213}
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 41 of file RootDedxSimDataCnv.cxx.

42 {
43
44 MsgStream log( msgSvc(), "RootDedxSimDataCnv" );
45 log << MSG::DEBUG << "SetProperty" << endmsg;
46
47 CalibData::DedxSimData* tmpObject = new CalibData::DedxSimData;
48
49 TH1F* h1 = new TH1F();
50 // open the file
51 StatusCode sc = openRead( fname );
52 if ( !sc ) { log << MSG::ERROR << "unable to open files" << endmsg; }
53
54 std::vector<TH1F> hist;
55 std::vector<double> hRange;
56 // Read in the object
57 int cnt;
58 TTree* tree = (TTree*)m_inFile->Get( "TH1F_Col" );
59 tree->SetBranchAddress( "TH1F_Col", &h1 );
60 int entries = tree->GetEntries();
61 for ( cnt = 0; cnt < entries; cnt++ )
62 {
63 tree->GetEntry( cnt );
64 gROOT->cd();
65 TH1F* h2 = new TH1F();
66 h2 = (TH1F*)h1->Clone();
67 hist.push_back( *h2 );
68 }
69 // tmpObject->setHist(&hist);
70 int ver;
71 double betagamma[5000];
72 int totalNum;
73 int bgNum;
74 int thetaNum;
75 TTree* bin = (TTree*)m_inFile->Get( "bin" );
76 if ( bin->FindBranch( "version" ) ) bin->SetBranchAddress( "version", &ver );
77 else ver = 0;
78 if ( bin->FindBranch( "thetaNum" ) ) bin->SetBranchAddress( "thetaNum", &thetaNum );
79 else thetaNum = 16;
80 bin->SetBranchAddress( "totalNum", &totalNum );
81 bin->SetBranchAddress( "betagamma", betagamma );
82 bin->SetBranchAddress( "betagammaBounds", &bgNum );
83 bin->GetEntry( 0 );
84
85 // int tot=totalNum*2;
86 for ( cnt = 0; cnt < bgNum; cnt++ ) { hRange.push_back( betagamma[cnt] ); }
87
88 tmpObject->setVersion( ver );
89 tmpObject->setRangeNo( bgNum );
90 tmpObject->setRange( &hRange );
91 tmpObject->setThetaNo( thetaNum );
92 tmpObject->setHistNo( totalNum );
93 tmpObject->setHist( &hist );
94 refpObject = tmpObject;
95
96 return StatusCode::SUCCESS;
97}
*******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 setHist(const vector< TH1F > *hist)
void setRange(const vector< double > *hRange)
StatusCode openRead(const std::string &fname)

◆ objType()

const CLID & RootDedxSimDataCnv::objType ( ) const

Definition at line 37 of file RootDedxSimDataCnv.cxx.

37{ return CLID_Dedx_Sim; }

◆ repSvcType()

virtual long RootDedxSimDataCnv::repSvcType ( ) const
inlinevirtual

Definition at line 32 of file RootDedxSimDataCnv.h.

◆ 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: