Hi let me add a few words,
a) Thesefirst two week period is a testing of the startup on rcas0005; if
there are problems the DB (i.e calib, main and
geometry) may be cleaned out and restrated. Hopefully this does not become
necessary.
b) In the list below I think that you also must use
>   if (!mainDb->ConnectToCalib("query"))     // connect to the calibration
>     return;                      // database
Otherwise I trust the default is brahmlib (as least as of 10 days ago);
You should also have the .bratdbrc in $HOME set properly for query  as a
local knowledgeable person what the password - otherwise the description for
Djam is a good intro (should be added to the Brat guide - yes pelase)
Flemming
>
------------------------------------------------------
Flemming Videbaek
Physics Department
Brookhaven National Laboratory
tlf: 631-344-4106
fax 631-344-1334
> On Wed, 8 Aug 2001, Peter H. L. Christiansen wrote:
>
> > I think this needs an official announcement with a few words for how to
> > connect to the database for the stupid guys like me.
> >
>
>
> Peter et al,
>
> Here's a short description on how to get and use the DB parameters:
>
> In your bratmain config script, you should have this after the option
> manager thing:
>
>
>   BrMainDb* mainDb = BrMainDb::Instance();
>   mainDb->SetUserName("query"); // DB user name for READING the DB only
>   mainDb->SetHostName("rcas0005.rcf.bnl.gov");  // where the DB is
>   mainDb->SetDbName("BrahmsMain");  // the main database
>
>   // Un comment if you need access to database
>   if (!mainDb->Connect())       // connect to the main
>     return;
>
>   if (!mainDb->ConnectToRun("query"))  // connect to the run DB (only
>     return;                            // query is allowed for you)
>
>   if (!mainDb->ConnectToCalib())     // connect to the calibration
>     return;                      // database
>
>
>   // run info manager
>
>   BrRunInfoManager* runMan = BrRunInfoManager::Instance();
>   runMan->SetDebugLevel(debugOption->GetValue());
>   runMan->Register(runOption->GetValue());
>
> the register method is very important. If you are to scan a file where you
> have a mixture of several runs, you have to register all runs in the right
> order, this is very important! :
>   runMan->Register(run1);
>   runMan->Register(run2);
>   runMan->Register(run3);
> etc....
>
> Then just before your analysis modules, you have to write this:
>      ~~~~~~~~~~~
>
>   // db update module
>   BrDbUpdateModule* dbMod = new BrDbUpdateModule("DB", "DB Update");
>   mainModule->AddModule(dbMod);
>
>
> This module will update the run info and calibration parameter managers
> depending on the run number. That's why this module should be before all
> your analysis modules, so that all info is updated when you need it (and
> not after when it's too late).
>
> That's it for the script. If you are prompted for the DB password as user
> query, it means that you don't have the .bratdbrc file (in your home
> directory) set correctly.
> Ask Flemming to you show that since the info in that file is very
confidential.
>
>
> Now, if you want to use a calibration parameter in your analysis module,
> you have to do it this way:
>
> In the init method, you should write something like that:
>        ~~~~~~~~~~~
>  BrParameterElementManager* calibMan =
>      BrParameterElementManager::Instance();
>
>  fCalibration = (Br<some det>Calibration*)calibMan->
>        Register("Br<some det>Calibration", "<det name>");
>
> here fCalibration is a private member of your module, its type is
> Br<some det>Calibration*, e.g.: BrTofCalibration, BrChkvCalibration or
> BrBbCalibration.
>
> Once, you have registered it, you have to specify which parameters you
> want to use:
>
>  fCalibration->Use("<parameter name>");
>
> example:
>   fTofCalibration->Use("topAdcGain");
>   fTofCalibration->Use("deltaDelay");
>
> the parameter name is exactly the name used in the SQL database.
> It is sometimes useful to know how to browse the SQL database by hand...
>
>
> Ok, that's it for the Init method.
> You might want to check if a revision exists (otherwise, you'll be in
> trouble...) for the runs you're scanning:
>
> you can do it in the Begin method:
>
>   if (!fCalibration->RevisionExists("<parameter name>") {
>     Fatal("Begin", "Couldn't find revision for <parameter name>. Giving
up");
>     return;
>   }
>
>
> Now, how to use the parameter:
> In your Event method:
>
>   ...
>   ...
>   Float_t param = fCalibration->Get<parameter>(<tube no>);
>   ...
>   ...
>
> eg:
>
>  Float_t ped = fC1Calibration->GetPedestal(tube);
>  Float_t adc = c1Dig->GetAdc(tube) - ped;
>
> (BTW Peter, Claus will commit tomorrow the change in the tube numbering :)
>
> That'all. If you have a problem using what I told you, then you can give
in
> working on Brahms rigth now :)
>
> Ciao
> Djam
>
>
>
>
This archive was generated by hypermail 2b30 : Wed Aug 08 2001 - 20:33:15 EDT