BOSS 7.0.8
BESIII Offline Software System
Loading...
Searching...
No Matches
RootCnvSvc.cxx
Go to the documentation of this file.
1#define RootCnvSvc_CXX
2#include <iostream>
3#include "GaudiKernel/SmartIF.h"
4#include "GaudiKernel/SvcFactory.h"
5
6#include "GaudiKernel/MsgStream.h"
7#include "GaudiKernel/ISvcLocator.h"
8#include "GaudiKernel/IDataProviderSvc.h"
9#include "GaudiKernel/IDataManagerSvc.h"
10#include "GaudiKernel/RegistryEntry.h"
11#include "GaudiKernel/GenericAddress.h"
12
13#include "RawEvent/DigiEvent.h"
14#include "DstEvent/DstEvent.h"
15#include "McTruth/McEvent.h"
16#include "TrigEvent/TrigEvent.h"//caogf
17#include "HltEvent/HltEvent.h"//fucd
19
23
24
30#include "RootCnvSvc/EventCnv.h"
32#include "RootCnvSvc/Mc/McCnv.h"
46
64
74
75
78
83
86
87#include <math.h>
88
89using namespace std;
90
91// RCS Id for identification of object version
92static const char* rcsid = "$Id: RootCnvSvc.cxx,v 1.72 2019/10/09 05:57:47 zoujh Exp $";
93
94
95// Instantiation of a static factory class used by clients to create
96// instances of this service
97//static const SvcFactory<RootCnvSvc> s_RootCnvSvcFactory;
98//const ISvcFactory& RootCnvSvcFactory = s_RootCnvSvcFactory;
99
100RootCnvSvc::RootCnvSvc(const std::string& name, ISvcLocator* svc)
101 : ConversionSvc(name, svc, ROOT_StorageType), m_minSplit(1), m_evtsel(0)
102{
103 StatusCode sc;
104 MsgStream log(msgSvc(), "RootCnvSvc");
105 log << MSG::DEBUG << "RootCnvSvc::constructor" << endreq;
106
107 IService* isvc = 0;
108 sc = serviceLocator()->getService ("RootEvtSelector", isvc, false);
109 if (!sc.isSuccess()) sc = serviceLocator()->getService ("EventSelector", isvc, false);
110 if (sc.isSuccess()) {
111 sc = isvc->queryInterface(IID_IRootEvtSelector, (void**)&m_evtsel);
112 }
113 if(sc.isFailure()) {
114 log << MSG::WARNING << "Unable to start event selector service within RootCnvSvc" << endreq;
115 }
116
117 m_rootInterface= RootInterface::Instance(log);
118 if (!m_rootInterface) log << MSG::ERROR << "Unable to start Root service within RootCnvSvc" << endreq;
119
120
121
122 //Digi
123 declareProperty("digiTreeName", m_dtreeName="Event"); //"Rec"->"Event"
124
125 declareProperty("digiRootInputFile",m_difileName);
126 //if (m_difileName.size()==0){
127 // m_difileName.push_back("digi.root");
128 //}
129 declareProperty("digiRootOutputFile",m_dofileName = "");
130
131 // Split mode for writing the TTree [0,99]
132 declareProperty("digiSplitMode", m_dsplitMode=m_minSplit);
133 // Buffer size for writing ROOT data
134 declareProperty("digiBufferSize", m_dbufSize=3200000);
135 // ROOT default compression
136 declareProperty("digiCompressionLevel", m_dcompressionLevel=1);
137 declareProperty("selectFromTag", m_selectFromTag=0);
138 declareProperty("tagInputFile", m_tagInputFile);
139 //declareProperty("tagFileFormat", m_tagFileFormat=1);
140
141 declareProperty("readETS", m_readETS = false);
142}
143
145 // Purpose and Method: Setup GLAST's Event Converter Service.
146 // Associate RootCnvSvc with the EventDataSvc
147 // Associate the list of known converters with this RootCnvSvc
148 // configure map of leaves
149
150 MsgStream log(msgSvc(), name());
151 log << MSG::DEBUG << "RootCnvSvc::initialize" << endreq;
152 StatusCode status = ConversionSvc::initialize();
153 if ( status.isSuccess() ) {
154 // ISvcLocator* svclocator = serviceLocator(); [unused for now]
155 IDataProviderSvc *pIDP = 0;
156 // Set event data service
157 status = service("EventDataSvc", pIDP, true);
158 if ( status.isSuccess() ) {
159 status = setDataProvider ( pIDP );
160 }
161 else {
162 return status;
163 }
164
165
166 // Add converters to the service
167 status = addConverters();
168 if ( !status.isSuccess() ) {
169 log << MSG::ERROR << "Unable to add converters to the service" << endreq;
170 return status;
171 }
172
173
174 // Now we have to configure the map of leaves
175 // Which should contain the association of converters with
176 // paths on the TDS
177 for (LeafMap::iterator k = m_leaves.begin(); k != m_leaves.end(); k++ ) {
178 std::string path = (*k).first;
179 for (LeafMap::iterator j = m_leaves.begin(); j != m_leaves.end(); j++ ) {
180 std::string path2 = (*j).first;
181 std::string pp = (*j).first.substr(0, (*j).first.rfind("/"));
182 if ( path == pp && path != (*j).first ) {
183 (*k).second->push_back((*j).second);
184 }
185 }
186 }
187 }
188
189 // get properties and tell RootInterface about files
190 status=initFiles();
191
192 m_rootInterface->setSelectFromTag(m_selectFromTag);
193 if ( m_selectFromTag && m_tagInputFile.empty() ) {
194 m_tagInputFile = m_difileName;
195 }
196 m_rootInterface->setTagInputFile(m_tagInputFile);
197 //m_rootInterface->setTagFileFormat(m_tagFileFormat);
198
199 return status;
200}
201
203 MsgStream log(msgSvc(), name());
204 log << MSG::DEBUG << "RootCnvSvc::finalize" << endreq;
205
206 ConversionSvc::finalize();
207 // log << MSG::INFO<<"this is the end of RootCnvsvc finalize"<<endreq;
208 for (LeafMap::iterator k = m_leaves.begin(); k != m_leaves.end(); k++ ) {
209 delete (*k).second;
210 }
211 m_leaves.erase(m_leaves.begin(), m_leaves.end());
212
213 return m_rootInterface->finalize();
214}
215
216StatusCode RootCnvSvc::initFiles () {
217 MsgStream log(msgSvc(), name());
218 log << MSG::DEBUG << "RootCnvSvc::initFiles" << endreq;
219 StatusCode sc=StatusCode::SUCCESS;
220
221 // Use the Job options service to set the Algorithm's parameters
222 // This will retrieve parameters set in the job options file
223 setProperties();
224
225 //Read inpout files files from job options
226 int nSize = m_difileName.size();
227 log<<MSG::INFO<<"Root Input files "<<nSize<<endreq;
228 if(nSize == 0){
229 log<<MSG::INFO<<"Unable to find input file"<<endreq;
230 //return StatusCode::FAILURE;
231 }
232
233 for(int i = 0;i<nSize;i++){
234 facilities::Util::expandEnvVar(&m_difileName[i]);
235 std::string s=m_difileName[i];
236 std::vector<int> wildcardPos;
237 for(int pos=0;pos<s.size();pos++) {
238 pos=s.find_first_of('?',pos);
239 if(pos!=-1) {
240 wildcardPos.push_back(pos);
241 }
242 else{
243 break;
244 }
245 }
246 if(wildcardPos.size()!=0) {
248 int maxNo=pow(10.,(int)wildcardPos.size());
249 if(nEnd!=0&&nEnd<maxNo) maxNo=nEnd;
250 int nStart=facilities::Util::catchOptionVal(&s,0,"&(",")");
251 int i=1;
252 if(nStart!=-1) i=nStart;
253 if(nStart>nEnd) log<<MSG::WARNING<<"file's StartNo>EndNo"<<endreq;
254 for(;i<maxNo;i++){
255 std::vector<int>::iterator it=wildcardPos.end();
256 int id=i;
257 while(it!=wildcardPos.begin()){
258 it--;
259 char c=id%10+48;
260 id /=10;
261 s.replace((*it),1,1,c);
262 }
263 if(access(s.c_str(),0)!=-1) {
264 sc = m_rootInterface->addInput(m_dtreeName,s);
265 if (sc.isFailure()) return sc;
266 }
267 }
268 }
269 else {
270 sc = m_rootInterface->addInput(m_dtreeName,m_difileName[i]);
271 if (sc.isFailure()) return sc;
272 }
273 }
274
275 //facilities::Util::expandEnvVar(&m_difileName[0]);
276 //sc = m_rootInterface->addInput(m_dtreeName,m_difileName[0]);
277 //if (sc.isFailure()) return sc;
278
279
280 //Digi
281 //facilities::Util::expandEnvVar(&m_difileName);
282 facilities::Util::expandEnvVar(&m_dofileName);
283 // sc = m_rootInterface->addInput(m_dtreeName,m_difileName);
284 // if (sc.isFailure()) return sc;
285
286 if (m_dsplitMode<m_minSplit) {
287 log << MSG::WARNING << "RootCnvSvc::initFiles Recon splitlevel cant be lower than "<<m_minSplit<<", reset" << endreq;
288 m_dsplitMode=m_minSplit;
289 }
290
291 if( "" != m_dofileName ){
292 sc=m_rootInterface->addOutput(m_dtreeName,m_dofileName,m_dsplitMode,m_dbufSize,m_dcompressionLevel);
293 }else{
294 log << MSG::WARNING << "No specified digiRootOutputFile!" << endreq;
295 }
296
297 return sc;
298}
299
300
301StatusCode RootCnvSvc::declareObject(const Leaf& leaf) {
302 // Purpose and Method: Callback from each of the individual converters that allows
303 // association of TDS path and converter.
304 MsgStream log(msgSvc(), name());
305 log << MSG::DEBUG << "RootCnvSvc::declareObject " << leaf.path << " classid: " << leaf.clid << endreq;
306 Leaf* ll = new Leaf(leaf);
307 std::pair<LeafMap::iterator, bool> p = m_leaves.insert(LeafMap::value_type( leaf.path, ll) );
308 if( p.second ) {
309 return StatusCode::SUCCESS;
310 }
311 delete ll;
312 return StatusCode::FAILURE;
313}
314
315/// Update state of the service
316StatusCode RootCnvSvc::updateServiceState(IOpaqueAddress* pAddress) {
317
318 // not sure about the use of recid or bank...
319 MsgStream log(msgSvc(), name());
320
321 log << MSG::DEBUG << "RootCnvSvc::updateServiceState" << endreq;
322
323 StatusCode status = INVALID_ADDRESS;
324 IRegistry* ent = pAddress->registry();
325 if ( 0 != ent ) {
326 SmartIF<IDataManagerSvc> iaddrReg(dataProvider());
327 // if ( 0 != iaddrReg ) {
328 status = StatusCode::SUCCESS;
329 std::string path = ent->identifier();
330 LeafMap::iterator itm = m_leaves.find(path);
331 if ( itm != m_leaves.end() ) {
332 Leaf* leaf = (*itm).second;
333 if ( 0 != leaf ) {
334 for ( Leaf::iterator il = leaf->begin(); il != leaf->end(); il++ ) {
335 IOpaqueAddress* newAddr = 0;
336 unsigned long ipars[2] = {0, 0}; //
337 if (m_evtsel) ipars[0]=m_evtsel->getRecId();
338
339 std::string spars[3]={(*il)->path,(*il)->treename,(*il)->branchname};
340
341 StatusCode ir =createAddress(ROOT_StorageType,
342 (*il)->clid,
343 spars,
344 ipars,
345 newAddr);
346 log << MSG::DEBUG << "RootCnvSvc::updateService " << " ***** " <<
347 (*il)->clid << " ***** " << (*il)->path <<endreq;
348
349 if ( ir.isSuccess() ) {
350 ir = iaddrReg->registerAddress((*il)->path, newAddr);
351 if ( !ir.isSuccess() ) {
352 newAddr->release();
353 status = ir;
354 }
355 }
356 }
357 }
358 }
359 }
360 return StatusCode::SUCCESS;
361 }
362
363 StatusCode RootCnvSvc::queryInterface(const InterfaceID& riid, void** ppvInterface) {
364
365 if ( IID_IRootCnvSvc == riid ) {
366 *ppvInterface = (RootCnvSvc*)this;
367 }
368 else {
369 // Interface is not directly availible: try out a base class
370 return ConversionSvc::queryInterface(riid, ppvInterface);
371 }
372 addRef();
373 return StatusCode::SUCCESS;
374 }
375
376 StatusCode RootCnvSvc::createAddress(long int svc_type,
377 const CLID& clid,
378 const std::string* spars,
379 const unsigned long* ipars,
380 IOpaqueAddress*& refpAddress)
381 {
382 MsgStream log( msgSvc(), name() );
383
384 if (svc_type != repSvcType() ) {
385 log << MSG::ERROR << "RootCnvSvc::bad storage type" << svc_type << endreq;
386 return StatusCode::FAILURE;
387 }
388
389 std::string path = spars[0];
390 std::string treename = spars[1];
391 std::string branchname = spars[2];
392 int entry=ipars[0];
393 if (path.size()==0) path="/Event";
394 refpAddress = new RootAddress(ROOT_StorageType,
395 clid,
396 path,treename,branchname,entry);
397 return StatusCode::SUCCESS;
398 }
399
400
401 StatusCode RootCnvSvc::commitOutput(const std::string& output, bool do_commit)
402 {
403
404
405
406 MsgStream log( msgSvc(), name() );
407 log << MSG::INFO << "RootCnvSvc::commitOutput starts." << endreq;
408
409 StatusCode sc=m_rootInterface->fillTrees();
410 if (sc.isFailure())
411 log << MSG::ERROR << "No Root tree was filled" << endreq;
412
413 // objects must be cleared after fill
414 else{
415 TObject* oEvtHeader = m_evtheaderCnv->getWriteObject();
416 if (oEvtHeader) oEvtHeader->Clear();
417 TObject* oEvtNavigator = m_evtnavigatorCnv->getWriteObject();
418 if (oEvtNavigator) oEvtNavigator->Clear();
419 TObject* o=m_dCnv->getWriteObject();
420 if (o) o->Clear();
421 TObject* oDst=m_dstCnv->getWriteObject();
422 if (oDst) oDst->Clear();
423 TObject* oMc=m_mcCnv->getWriteObject();
424 if (oMc) oMc->Clear();
425 TObject* oRecTrack=m_rectrackCnv->getWriteObject();
426 if (oRecTrack) oRecTrack->Clear();
427 TObject* oEvtRecEvent = m_evtRecCnv->getWriteObject();
428 if (oEvtRecEvent) oEvtRecEvent->Clear();
429 TObject* oTrig = m_trigCnv->getWriteObject();
430 if(oTrig) oTrig->Clear();
431 TObject* oHlt = m_hltCnv->getWriteObject();
432 if(oHlt) oHlt->Clear();
433 }
434 m_common.clear();
435
436 return sc;
437 }
438
439 StatusCode RootCnvSvc::createAddress(DataObject *obj,IOpaqueAddress*& newAddr) {
440
441 // create address for this object
442 MsgStream log(msgSvc(), name());
443
444
445 log << MSG::DEBUG << "RootCnvSvc::createAddress"<<endreq;
446
447 StatusCode status = INVALID_ADDRESS;
448 IRegistry* ent = obj->registry();
449
450 if ( 0 != ent ) {
451 SmartIF<IDataManagerSvc> iaddrReg(dataProvider());
452 std::string path = ent->identifier();
453 LeafMap::iterator itm = m_leaves.find(path);
454
455
456 if ( itm != m_leaves.end() ) {
457 Leaf* leaf = (*itm).second;
458 if ( 0 != leaf ) {
459 std::string spars[3] ;
460 spars[0]=path;
461 spars[1]=leaf->treename;
462 spars[2]=leaf->branchname;
463
464
465 unsigned long ipars[2] ={0,0};
466 if (m_evtsel) ipars[0]=m_evtsel->getRecId();
467
468 status=addressCreator()->createAddress(ROOT_StorageType,leaf->clid,spars,ipars,newAddr);
469 if ( status.isSuccess() ) {
470 status = iaddrReg->registerAddress((IRegistry*)0,path, newAddr);
471 if ( !status.isSuccess() ) {
472 newAddr->release();
473 }
474 }
475 return StatusCode::SUCCESS;
476 }
477 }
478 }
479 return status;
480 }
481
482 StatusCode RootCnvSvc::createAddress(std::string path,IOpaqueAddress*& newAddr) {
483
484 // create address for this object
485 MsgStream log(msgSvc(), name());
486
487 StatusCode status;
488 LeafMap::iterator itm = m_leaves.find(path);
489 SmartIF<IDataManagerSvc> iaddrReg(dataProvider());
490 if ( itm != m_leaves.end() ) {
491 Leaf* leaf = (*itm).second;
492 if ( 0 != leaf ) {
493 std::string spars[3] ;
494 spars[0]=path;
495 spars[1]=leaf->treename;
496 spars[2]=leaf->branchname;
497
498 unsigned long ipars[2] = {0,0};
499 if (m_evtsel) ipars[0]=m_evtsel->getRecId();
500 status=addressCreator()->createAddress(ROOT_StorageType,leaf->clid,spars,ipars,newAddr);
501 if ( status.isSuccess() ) {
502 status = iaddrReg->registerAddress((IRegistry*)0,path, newAddr);
503 if ( !status.isSuccess() ) {
504 newAddr->release();
505 }
506 }
507 return StatusCode::SUCCESS;
508 }
509 }
510
511
512 return StatusCode::FAILURE;
513 }
514
515
516 /// Add converters to the service
517 StatusCode RootCnvSvc::addConverters () {
518 MsgStream log(msgSvc(), name());
519 declareObject(Leaf(EventModel::Dst::DstMdcDedxCol, MdcDedxCnv::classID(), "Event", "m_mdcDedxCol"));
521 declareObject(Leaf(EventModel::Digi::EmcDigiCol, EmcDigiCnv::classID(), "Event", "m_emcDigiCol"));
522 declareObject(Leaf(EventModel::MC::EmcMcHitCol, EmcMcHitCnv::classID(), "Event", "m_emcMcHitCol"));
523 declareObject(Leaf(EventModel::Dst::DstEmcShowerCol, EmcTrackCnv::classID(), "Event", "m_emcTrackCol"));
524
525 declareObject(Leaf("/Event", EventCnv::classID(), "", ""));
526 if ( m_readETS ) {
527 declareObject(Leaf(EventModel::EventHeader, EvtHeaderCnv::classID(), "Event", "m_runId:m_eventId:m_time:m_eventTag:m_flag1:m_flag2:m_etsT1:m_etsT2"));
528 }
529 else {
530 declareObject(Leaf(EventModel::EventHeader, EvtHeaderCnv::classID(), "Event", "m_runId:m_eventId:m_time:m_eventTag:m_flag1:m_flag2"));
531 }
532 declareObject(Leaf(EventModel::Navigator, EvtNavigatorCnv::classID(), "Event", "m_mcMdcMcHits:m_mcMdcTracks:m_mcEmcMcHits:m_mcEmcRecShowers"));
533 declareObject(Leaf(EventModel::Dst::DstExtTrackCol, ExtTrackCnv::classID(), "Event", "m_extTrackCol"));
535 declareObject(Leaf(EventModel::MC::McParticleCol, McParticleCnv::classID(), "Event", "m_mcParticleCol"));
536 declareObject(Leaf(EventModel::Digi::MdcDigiCol, MdcDigiCnv::classID(), "Event", "m_mdcDigiCol"));
537 declareObject(Leaf(EventModel::Dst::DstMdcKalTrackCol, MdcKalTrackCnv::classID(), "Event", "m_mdcKalTrackCol"));
538 declareObject(Leaf(EventModel::MC::MdcMcHitCol, MdcMcHitCnv::classID(), "Event", "m_mdcMcHitCol"));
539 declareObject(Leaf(EventModel::Dst::DstMdcTrackCol, MdcTrackCnv::classID(), "Event", "m_mdcTrackCol"));
540 declareObject(Leaf(EventModel::Digi::MucDigiCol, MucDigiCnv::classID(), "Event", "m_mucDigiCol"));
541 declareObject(Leaf(EventModel::MC::MucMcHitCol, MucMcHitCnv::classID(), "Event", "m_mucMcHitCol"));
542 declareObject(Leaf(EventModel::Dst::DstMucTrackCol, MucTrackCnv::classID(), "Event", "m_mucTrackCol"));
543 declareObject(Leaf(EventModel::Digi::Event, DigiCnv::classID(), "Event", "m_fromMc"));
544 declareObject(Leaf(EventModel::Digi::TofDigiCol, TofDigiCnv::classID(), "Event", "m_tofDigiCol"));
545 declareObject(Leaf(EventModel::MC::TofMcHitCol, TofMcHitCnv::classID(), "Event", "m_tofMcHitCol"));
546 declareObject(Leaf(EventModel::Dst::DstTofTrackCol, TofTrackCnv::classID(), "Event", "m_tofTrackCol"));
547 //declareObject(Leaf("/Event/Digi/LumiDigiCol", LumiDigiCnv::classID(), "Event", "m_lumiDigiCol"));
548 declareObject(Leaf(EventModel::Digi::LumiDigiCol, LumiDigiCnv::classID(), "Event", "m_lumiDigiCol"));
549
551 declareObject(Leaf(EventModel::Trig::TrigData, TrigDataCnv::classID(), "Event", "m_trigData"));
552
554 declareObject(Leaf(EventModel::Hlt::HltRawCol, HltRawCnv::classID(), "Event", "m_hltRawCol"));
555 declareObject(Leaf(EventModel::Hlt::HltInf, HltInfCnv::classID(), "Event", "m_hltInf"));
556 declareObject(Leaf(EventModel::Hlt::DstHltInf, DstHltInfCnv::classID(), "Event", "m_dstHltInf"));
557
559
560 declareObject(Leaf(EventModel::Recon::RecMdcTrackCol, RecMdcTrackCnv::classID(), "Event", "m_recMdcTrackCol"));
561 declareObject(Leaf(EventModel::Recon::RecMdcHitCol, RecMdcHitCnv::classID(), "Event", "m_recMdcHitCol"));
564 declareObject(Leaf(EventModel::Recon::RecMdcDedxCol, RecMdcDedxCnv::classID(),"Event", "m_recMdcDedxCol"));
566
567 declareObject(Leaf(EventModel::Recon::RecEsTimeCol, RecEvTimeCnv::classID(),"Event", "m_recEvTimeCol"));
568 declareObject(Leaf(EventModel::Recon::RecTofTrackCol, RecTofTrackCnv::classID(), "Event", "m_recTofTrackCol"));
569 declareObject(Leaf(EventModel::Recon::RecBTofCalHitCol, RecBTofCalHitCnv::classID(), "Event", "m_recBTofCalHitCol"));
570 declareObject(Leaf(EventModel::Recon::RecETofCalHitCol, RecETofCalHitCnv::classID(), "Event", "m_recETofCalHitCol"));
571 declareObject(Leaf(EventModel::Recon::RecEmcHitCol, RecEmcHitCnv::classID(), "Event", "m_recEmcHitCol"));
572 declareObject(Leaf(EventModel::Recon::RecEmcClusterCol, RecEmcClusterCnv::classID(), "Event", "m_recEmcClusterCol"));
573 declareObject(Leaf(EventModel::Recon::RecEmcShowerCol, RecEmcShowerCnv::classID(), "Event", "m_recEmcShowerCol"));
574 declareObject(Leaf(EventModel::Recon::RecMucTrackCol, RecMucTrackCnv::classID(), "Event", "m_recMucTrackCol"));
576 declareObject(Leaf(EventModel::Recon::RecExtTrackCol, RecExtTrackCnv::classID(),"Event", "m_recExtTrackCol"));
577 declareObject(Leaf(EventModel::Recon::RecZddChannelCol, RecZddChannelCnv::classID(), "Event", "m_recZddChannelCol"));
580 declareObject(Leaf(EventModel::EvtRec::EvtRecTrackCol, EvtRecTrackCnv::classID(), "Event", "m_evtRecTrackCol"));
582 declareObject(Leaf(EventModel::EvtRec::EvtRecVeeVertexCol, EvtRecVeeVertexCnv::classID(), "Event", "m_evtRecVeeVertexCol"));
583 declareObject(Leaf(EventModel::EvtRec::EvtRecPi0Col, EvtRecPi0Cnv::classID(), "Event", "m_evtRecPi0Col"));
584 declareObject(Leaf(EventModel::EvtRec::EvtRecEtaToGGCol, EvtRecEtaToGGCnv::classID(), "Event", "m_evtRecEtaToGGCol"));
585 declareObject(Leaf(EventModel::EvtRec::EvtRecDTagCol, EvtRecDTagCnv::classID(), "Event", "m_evtRecDTagCol"));
586
587 return StatusCode::SUCCESS;
588
589 }
*******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 saves r n generator level $ !Flag for chat level in output
Definition: FoamA.h:89
XmlRpcServer s
Definition: HelloServer.cpp:11
const long int ROOT_StorageType
const InterfaceID IID_IRootCnvSvc
IMessageSvc * msgSvc()
static const CLID & classID()
Definition: DigiCnv.h:25
static TDigiEvent * getWriteObject()
returns object to be written (maintained here for all DIGI-converters)
Definition: DigiCnv.h:35
static const CLID & classID()
Definition: DstCnv.h:25
static TDstEvent * getWriteObject()
returns object to be written (maintained here for all DIGI-converters)
Definition: DstCnv.h:36
static const CLID & classID()
Definition: DstHltInfCnv.h:25
static const CLID & classID()
Definition: EmcDigiCnv.h:24
static const CLID & classID()
Definition: EmcMcHitCnv.h:24
static const CLID & classID()
Definition: EmcTrackCnv.h:20
static const CLID & classID()
Definition: EventCnv.h:26
static TEvtHeader * getWriteObject()
returns object to be written (maintained here for all DIGI-converters)
Definition: EvtHeaderCnv.h:37
static const CLID & classID()
Definition: EvtHeaderCnv.h:26
static TEvtNavigator * getWriteObject()
returns object to be written (maintained here for all DIGI-converters)
static const CLID & classID()
static TEvtRecObject * getWriteObject()
Definition: EvtRecCnv.h:26
static const CLID & classID()
Definition: EvtRecCnv.h:20
static const CLID & classID()
Definition: EvtRecDTagCnv.h:19
static const CLID & classID()
static const CLID & classID()
static const CLID & classID()
Definition: EvtRecPi0Cnv.h:19
static const CLID & classID()
static const CLID & classID()
static const CLID & classID()
static const CLID & classID()
Definition: ExtTrackCnv.h:20
static THltEvent * getWriteObject()
returns object to be written (maintained here for all DIGI-converters)
Definition: HltCnv.h:35
static const CLID & classID()
Definition: HltCnv.h:25
static const CLID & classID()
Definition: HltInfCnv.h:25
static const CLID & classID()
Definition: HltRawCnv.h:24
static const CLID & classID()
Definition: LumiDigiCnv.h:20
static TMcEvent * getWriteObject()
returns object to be written (maintained here for all DIGI-converters)
Definition: McCnv.h:35
static const CLID & classID()
Definition: McCnv.h:25
static const CLID & classID()
Definition: McParticleCnv.h:24
static const CLID & classID()
Definition: MdcDedxCnv.h:20
static const CLID & classID()
Definition: MdcDigiCnv.h:24
static const CLID & classID()
static const CLID & classID()
Definition: MdcMcHitCnv.h:24
static const CLID & classID()
Definition: MdcTrackCnv.h:20
static const CLID & classID()
Definition: MucDigiCnv.h:20
static const CLID & classID()
Definition: MucMcHitCnv.h:24
static const CLID & classID()
Definition: MucTrackCnv.h:20
static const CLID & classID()
static const CLID & classID()
static const CLID & classID()
static const CLID & classID()
Definition: RecEmcHitCnv.h:20
static const CLID & classID()
static const CLID & classID()
Definition: RecEvTimeCnv.h:20
static const CLID & classID()
static const CLID & classID()
Definition: RecMdcDedxCnv.h:20
static const CLID & classID()
static const CLID & classID()
Definition: RecMdcHitCnv.h:20
static const CLID & classID()
static const CLID & classID()
static const CLID & classID()
static const CLID & classID()
static const CLID & classID()
static const CLID & classID()
static TRecTrackEvent * getWriteObject()
returns object to be written (maintained here for all DIGI-converters)
Definition: RecTrackCnv.h:36
static const CLID & classID()
Definition: RecTrackCnv.h:26
static const CLID & classID()
Definition of a Root address, derived from IOpaqueAddress.
Definition: RootAddress.h:21
object regrouping CLID and pathname with treename/branchname
Definition: RootCnvSvc.h:48
std::string path
Definition: RootCnvSvc.h:50
std::string treename
Definition: RootCnvSvc.h:51
std::string branchname
Definition: RootCnvSvc.h:52
Root Event Conversion Service which coordinates all of our converters.
Definition: RootCnvSvc.h:40
virtual StatusCode createAddress(long int svc_type, const CLID &clid, const std::string *par, const unsigned long *ip, IOpaqueAddress *&refpAddress)
create address containing ROOT treename, branchname, entry number
Definition: RootCnvSvc.cxx:376
virtual StatusCode initialize()
Definition: RootCnvSvc.cxx:144
virtual StatusCode updateServiceState(IOpaqueAddress *pAddress)
Update state of the service.
Definition: RootCnvSvc.cxx:316
virtual StatusCode commitOutput(const std::string &output, bool do_commit)
Commit pending output (fill the TTrees).
Definition: RootCnvSvc.cxx:401
RootCnvSvc(const std::string &name, ISvcLocator *svc)
Definition: RootCnvSvc.cxx:100
virtual StatusCode declareObject(const Leaf &leaf)
Associates a path on TDS with a particular converter.
Definition: RootCnvSvc.cxx:301
virtual StatusCode finalize()
Definition: RootCnvSvc.cxx:202
virtual StatusCode queryInterface(const InterfaceID &riid, void **ppvInterface)
Override inherited queryInterface due to enhanced interface.
Definition: RootCnvSvc.cxx:363
int getRecId() const
virtual StatusCode finalize()
virtual void setTagInputFile(std::vector< std::string > input)
virtual StatusCode addInput(const std::string &treename, const std::string &file)
add input tree to the list
static RootInterface * Instance(MsgStream log)
singleton behaviour
virtual StatusCode addOutput(const std::string &treename, const std::string &file, int splitx, int bufsize, int compression)
add output tree to the list
virtual StatusCode fillTrees()
fill in all trees
virtual void setSelectFromTag(bool temp)
Definition: RootInterface.h:62
void Clear(Option_t *option="")
Definition: TDigiEvent.cxx:83
void Clear(Option_t *option="")
Definition: TDstEvent.cxx:108
void Clear(Option_t *option="")
Definition: TEvtHeader.cxx:31
void Clear(Option_t *option="")
void Clear(Option_t *option="")
void Clear(Option_t *option="")
Definition: THltEvent.cxx:55
void Clear(Option_t *option="")
Definition: TMcEvent.cxx:93
void Clear(Option_t *option="")
void Clear(Option_t *option="")
Definition: TTrigEvent.cxx:35
static const CLID & classID()
Definition: TofDigiCnv.h:20
static const CLID & classID()
Definition: TofMcHitCnv.h:24
static const CLID & classID()
Definition: TofTrackCnv.h:20
static const CLID & classID()
Definition: TrigCnv.h:25
static TTrigEvent * getWriteObject()
returns object to be written (maintained here for all DIGI-converters)
Definition: TrigCnv.h:35
static const CLID & classID()
Definition: TrigDataCnv.h:25
void clear()
Definition: commonData.cxx:150
static int expandEnvVar(std::string *toExpand, const std::string &openDel=std::string("$("), const std::string &closeDel=std::string(")"))
static int catchOptionVal(std::string *toCatch, const int ops=0, const std::string &openDel=std::string("#("), const std::string &closeDel=std::string(")"))
_EXTERN_ std::string Event
Definition: EventModel.h:56
_EXTERN_ std::string MdcDigiCol
Definition: EventModel.h:57
_EXTERN_ std::string MucDigiCol
Definition: EventModel.h:60
_EXTERN_ std::string LumiDigiCol
Definition: EventModel.h:61
_EXTERN_ std::string EmcDigiCol
Definition: EventModel.h:58
_EXTERN_ std::string TofDigiCol
Definition: EventModel.h:59
_EXTERN_ std::string Event
Definition: EventModel.h:128
_EXTERN_ std::string DstEmcShowerCol
Definition: EventModel.h:134
_EXTERN_ std::string DstMdcKalTrackCol
Definition: EventModel.h:130
_EXTERN_ std::string DstExtTrackCol
Definition: EventModel.h:136
_EXTERN_ std::string DstMdcDedxCol
Definition: EventModel.h:132
_EXTERN_ std::string DstTofTrackCol
Definition: EventModel.h:133
_EXTERN_ std::string DstMdcTrackCol
Definition: EventModel.h:129
_EXTERN_ std::string DstMucTrackCol
Definition: EventModel.h:135
_EXTERN_ std::string EvtRecPi0Col
Definition: EventModel.h:123
_EXTERN_ std::string Event
Definition: EventModel.h:115
_EXTERN_ std::string EvtRecPrimaryVertex
Definition: EventModel.h:120
_EXTERN_ std::string EvtRecEvent
Definition: EventModel.h:116
_EXTERN_ std::string EvtRecVeeVertexCol
Definition: EventModel.h:121
_EXTERN_ std::string EvtRecEtaToGGCol
Definition: EventModel.h:124
_EXTERN_ std::string EvtRecDTagCol
Definition: EventModel.h:122
_EXTERN_ std::string EvtRecTrackCol
Definition: EventModel.h:117
_EXTERN_ std::string Event
Definition: EventModel.h:72
_EXTERN_ std::string HltInf
Definition: EventModel.h:74
_EXTERN_ std::string HltRawCol
Definition: EventModel.h:73
_EXTERN_ std::string DstHltInf
Definition: EventModel.h:75
_EXTERN_ std::string EmcMcHitCol
Definition: EventModel.h:46
_EXTERN_ std::string MucMcHitCol
Definition: EventModel.h:47
_EXTERN_ std::string MdcMcHitCol
Definition: EventModel.h:44
_EXTERN_ std::string TofMcHitCol
Definition: EventModel.h:45
_EXTERN_ std::string McParticleCol
Definition: EventModel.h:41
_EXTERN_ std::string Event
Definition: EventModel.h:39
_EXTERN_ std::string RecMdcKalHelixSegCol
Definition: EventModel.h:91
_EXTERN_ std::string RecEmcClusterCol
Definition: EventModel.h:102
_EXTERN_ std::string MucRecHitCol
Definition: EventModel.h:105
_EXTERN_ std::string RecETofCalHitCol
Definition: EventModel.h:99
_EXTERN_ std::string RecBTofCalHitCol
Definition: EventModel.h:98
_EXTERN_ std::string RecExtTrackCol
Definition: EventModel.h:93
_EXTERN_ std::string RecMdcDedxCol
Definition: EventModel.h:88
_EXTERN_ std::string RecZddChannelCol
Definition: EventModel.h:108
_EXTERN_ std::string RecTofTrackCol
Definition: EventModel.h:97
_EXTERN_ std::string RecEsTimeCol
Definition: EventModel.h:92
_EXTERN_ std::string RecEmcHitCol
Definition: EventModel.h:101
_EXTERN_ std::string RecMdcTrackCol
Definition: EventModel.h:86
_EXTERN_ std::string RecMdcDedxHitCol
Definition: EventModel.h:89
_EXTERN_ std::string Event
Definition: EventModel.h:84
_EXTERN_ std::string RecMdcKalTrackCol
Definition: EventModel.h:90
_EXTERN_ std::string RecMucTrackCol
Definition: EventModel.h:106
_EXTERN_ std::string RecMdcHitCol
Definition: EventModel.h:85
_EXTERN_ std::string RecEmcShowerCol
Definition: EventModel.h:103
_EXTERN_ std::string TrigData
Definition: EventModel.h:68
_EXTERN_ std::string Event
Definition: EventModel.h:66