ROOT Home
Objectivity Home
 
Introduction
Naming Rules
Examples
FAQ
Class Reference
Availability
TODO
PHENIX DBrowser

Examples and Howtos

How to initiate session
How to open PHENIX federated database
How to dump catalog of federated database
How to open database
How to traverse databases inside federated database
How to traverse containers inside database
How to obtain/print object's class name
How to print out object's persistent data
How to traverse objects inside container
How to get object's class description
How to determine/print out object's class attributes


How to initiate session

gSystem->Load("/phenix/data12/onuchin/rooObjy/librooObjy.so"); // load lib rooInit(); // Initializes Objectivity/DB for the application process // rooNoLock(); <- initiate non-locking mode for non-critical applications rooTrans tran; // create transaction object tran.start(kooMROW); // start transaction in Multiple Readers One Writer mode // this typical transaction mode for PHENIX applications


How to open PHENIX federated database

rooFDObj fd; // federated database object handle fd.open(gSystem->Getenv("PHENIX_FD_BOOT")); // open federated database


How to dump catalog of federated database

fd.dumpCatalog();


How to open database

rooDBObj db; // database object handle db.open("pbsc_tag"); // open database, return kTRUE in case of success


How to traverse databases inside federated database

rooDBItr di; // database iterator fd.contains(di); // initiate iterator while(di.next()) { // iterate through databases cout << di.name() << endl; // print out database name } // Comment: rooDBItr class is derived from rooDBObj class // all methods of rooDBObj are valid for rooDBItr


How to traverse containers inside database

rooContItr ci; // container iterator db.contains(ci); // initiate iterator while(ci.next()) { // iterate through container cout << ci.name() << endl; // print out system name of container }


How to obtain/print object's class name

// Use rooObj::typeName() method. // Previous example can be rewritten as following rooContItr ci; // container iterator db.contains(ci); // initiate iterator while(ci.next()) { // iterate through container cout << ci.typeName() << endl; // print out class name }


How to print out object's persistent data

// Use rooShowData(rooClassObject&) global function

rooClassObject co(ci); // initiate rooClassObject rooShowData(co); // print out all persistent data // Comment: // rooClassObject contains class description of referenced object // rooClassObject can be used to retrieve persistent data


How to traverse objects inside container

rooObjItr oi; // object iterator ci.contains(oi); // initiate object iterator while(oi.next()) { // iterate through the obects in container rooClassObject co(oi); // initiate rooClassObject cout << co.type_of().name() << endl; // print out class names of objects }


... to be continued



top



If you have any comments about this page please send them to Valeriy Onuchin