Hi all, I have a few changes that I'd like to commit to BRAT ASAP. I think you'll like most of 'em, but one (see point 4) below can give some users minor problems, so I thouhgt I'd give you a heads up. Changes to come: ---------------- 1) BrAppOption and subclasses automatically adds themselves to the singleton BrAppOptionManager object - that is, no need to send the message BrAppOptionManager::AddOption - in fact it will generate a warning. 2) BrAppIntOption, BrAppFloatOption and BrAppStringOption can take multiple values. That is, you can specify many runs as bratmain <config> -r <run1> -r <run2> ... and process these values like for (Int_t i = 0; i < runOption->GetNValues(); i++) { cout << runOption->GetValue(i) << endl; Defualt behaviour of BrApp[Int|Float|String]Option::GetValue() is to return the 0'th value. BrAppBoolOption does _not_ take multiple values, since I don't think that makes sense. Feel free to argue. 3) Introducing the concept of file sets. This is a bit hairy, but I'll try to outline it. One can bundle several files in to sets. If an input module reaches end of file, on a file in a set, it opens the next file, but with out changing the level - that is, the opening and closing of files in a set is done in the Event method. The input module does change level when ever it reaches the end of a set. That is, when all files in a set has been processed, the event loop is terminated, and the job start a new run level. Several sets can be added to an IO module, thereby giving the user the possiblity of having a tight coupling between BrModule 'run' levels and actual DAQ runs. Hence a job can process many runs, where each run may have one or more files each. If the flag BrIOModule::kBrJobFile is set, there's only one file set, and additional filesets are concatenated. Note that the concept of filesets does not apply to _output_ modules. A new output file can _only_ be opened in Init or Begin. This affects BrIOModule (alot), BrEventIO, BrRawDataInput and BrHistIOModule. 4) BrModule::Info(Int, const char*, const char*, ...) method for pretty-printing verbosity messages. The arguments are similar to forexample TObject::Warning, but does not change the state of the module. Also, an additional (mandetory) argument tells the module for which run levels is should print the message to stderr. This method is introduced to have consistent output from modules. Module authors are incouraged to go through thier code and substitute code like if (Verbose() > n) cout << "<message>" << ... with the simpler: Info(n+1, "<method>", "<message formt>" ...); Note that this method forces the removal of obsulete method BrModule::Info(void). This will cause no problem in BRAT, but may in user code. The solution is simple: exchange Info() with Print(). I don't think the last change will affect a lot of people, since the old Info method has been obsulted by Print for a long time. Anyway, that method will disappear (assmuing noone barks ASAP). I'll remind you when I do the actual commit. Yours, Christian Holm Christensen ------------------------------------------- Address: Sankt Hansgade 23, 1. th. Phone: (+45) 35 35 96 91 DK-2200 Copenhagen N Cell: (+45) 28 82 16 23 Denmark Office: (+45) 353 25 305 Email: cholm@nbi.dk Web: www.nbi.dk/~cholm
This archive was generated by hypermail 2b30 : Tue Dec 11 2001 - 17:53:42 EST