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