1 / 13

Updates on ALPHA++ Alpha++ Meeting, 14.9.99

Updates on ALPHA++ Alpha++ Meeting, 14.9.99. Agenda: G.Dissertori : The Driver Part M.Hörndl : The Analysis Part. The Driver for the ALPHA++ Analysis Program. Günther Dissertori. Situation. Versions being worked with Objectivity 5.1 (on OSF1) ObjectSpace 2.1 (idem)

toviel
Télécharger la présentation

Updates on ALPHA++ Alpha++ Meeting, 14.9.99

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Updates on ALPHA++Alpha++ Meeting, 14.9.99 Agenda: G.Dissertori : The Driver Part M.Hörndl : The Analysis Part

  2. The Driver for the ALPHA++ Analysis Program Günther Dissertori

  3. Situation • Versions being worked with • Objectivity 5.1 (on OSF1) • ObjectSpace 2.1 (idem) • What we had up to now • only a single program file (with a single application class, to be edited by the user for his requirements) • driven by command line input and ALPHA cards G. Dissertori

  4. Motivation and Requirements for a Driver • A setup which allows for easy switching • between READ or WRITE transaction • between BATCH and INTERACTIVE work • between different DATABASE TYPES • functionality should resemble the one from ALPHA • e.g. the user can edit his init, run and term routines • the interactive mode might allow easy interfacing with DALI • everything should be cards and/or terminal driven G. Dissertori

  5. G. Dissertori

  6. Working with Singletons • AlephSession and the Managers are Singletons • can be created only once • are accessible from everywhere a la AlephSession theSession = AlephSession::TheAlephSession(); • preferably managers are accessed via the session: AlephManager theDbManager = AlephSession::TheAlephSession()->aAlephManager(“DbManager”); G. Dissertori

  7. The Cards : A simple ASCII file G. Dissertori

  8. The main program int main(int argc, char *argv[]) { // set the input defaults int debuglevel = 0; // read the input if (argc < 2) { usage(argv[0]); } else { for (int i=1; i<argc; i++) { if (argv[i][0]=='-' && argv[i][1]=='l') { switch(argv[i][2]) { case '0': debuglevel = 0; break; ……. } } } } // create the session singleton AlephSession* aSession = AlephSession::TheAlephSession(); // store the debuglevel aSession->setDebugLevel(debuglevel); // init AlephRC rc; rc = aSession->initialize(); fout << endl << " return code from session.init = " << rc << endl << endl; // run the session rc = aSession->run(); fout << endl << " return code from session.run = " << rc << endl << endl; // term rc = aSession->terminate(); fout << endl << " return code from session.term = " << rc << endl << endl; return AlephOK; } G. Dissertori

  9. Example : initialize AlephRC AlephSession::initialize() { AlephRC rc; // start the timer startTimer(); // print out some stuff ……... // create and init the various managers // the IO manager _theAlephIoManager = AlephIoManager::TheAlephIoManager(); rc = _theAlephIoManager->initialize(); // the DB manager _theAlephDbManager = AlephDbManager::TheAlephDbManager(); rc = _theAlephDbManager->initialize(); // the Ex manager _theAlephExManager = AlephExManager::TheAlephExManager(); rc = _theAlephExManager->initialize(); return rc; } G. Dissertori

  10. User routines are methods of the Execution manager... /////////////////////////////////////////////////////////////////////// // User Init /////////////////////////////////////////////////////////////////////// void AlephExManager::UserInit() { fout << endl << " =====> in UserInit " << endl; } /////////////////////////////////////////////////////////////////////// // User Event /////////////////////////////////////////////////////////////////////// void AlephExManager::UserEvent(AlphaBanks& bb) { fout << endl << " =====> in UserEvent " << endl; } /////////////////////////////////////////////////////////////////////// // User Term /////////////////////////////////////////////////////////////////////// void AlephExManager::UserTerm() { fout << endl << " =====> in UserTerm " << endl; } An example for a user file user_void.cpp G. Dissertori

  11. And this is the output... ************************************************** * * * ALEPHSESSION * * Version 1.0 * * * * The session has been initialized at: * * Thu Sep 9 18:16:17 1999 * * * ************************************************** ======== AlephCardsReader : ========= Cardsfile = alpha++.input NEVT 200 FILI mc94_1 CLAS 16 HIST test.hbook DBTY objy TATY read AFIO testmc.EPIO preparing alpha cards ... ==== End AlephCardsReader : ========= AlephIoManager : initializing .... An AlephObjyDbManager has been created AlephObjyDbManager : initializing .... AlephObjyDbManager : The FD Boot file name = shift50::/wg/objy/alpha++/dev/db/ALEPHDB AlephObjyDbManager : A READ transaction has been started An AlephObjyExManager has been created AlephObjyExManager : initializing .... C bos_initialize CALLED ******* AlephObjyExManager : calling user init =====> in UserInit return code from session.init = 1 AlephSession starts running ... The session type is BATCH AlephObjyDbManager.openExistDb : The database mc94_1 has been opened for READ ONLY -------------------------------- Run Number = 410 Nev, Irun, Ievt = 1 410 1 Nev, Irun, Ievt = 2 410 2 Nev, Irun, Ievt = 200 410 205 Ngood = 149 =====> in UserEvent 200 *** 200 Events have been read AlephObjyDbManager : stopping the current transaction ****** AlephObjyExManager::loopAllRead : transaction stopped ****** return code from session.run = 1 AlephIoManager : terminating .... AlephObjyDbManager : terminating .... AlephObjyDbManager.stopTransaction : the transaction is already HALTED AlephObjyExManager : terminating .... AlephObjyExManager : calling user term =====> in UserTerm Number of selected events = 149 ************************************************** * * * ALEPHSESSION * * Version 1.0 * * * * The session has terminated at: * * Thu Sep 9 18:18:29 1999 * * * * Elapsed time in seconds = 132.0000000 * ************************************************** return code from session.term = 1 G. Dissertori

  12. What remains to do - Problems • Implement the write transaction • Implement the interactive session • example: there user can ask for a handle to a database by entering the dbname on the terminal • interface then with Dali • Problems on our database: • several important banks are missing • RLEP, RALE, AJOB, PART , ..? • Problems when running on MC • QELEP=0 , crash when filling MC-truth • applied a patch for the moment….. G. Dissertori

  13. So the next plans are • Upgrade of the schema • could be major intervention… • If that happens, implement also naming tree • more detailed performance studies Where can you find all the stuff? /> setenv CVSROOT /afs/cern.ch/aleph/project/alpha++ /> cvs co Applications G. Dissertori

More Related