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
}