BRAT 2.4.5
Class index
Full class index
brahmlib
BRAHMS
ROOT page
//____________________________________________________________________
// 
// Module that dumps the SQL db calibration
// into an ascii file that can be read by the cal hits module 
//

//____________________________________________________________________
//
// $Id: BrBbDumpCalModule.cxx,v 1.2 2002/02/15 21:20:18 videbaek Exp $
// $Author: videbaek $
// $Date: 2002/02/15 21:20:18 $
// $Copyright: (C) 2001 BRAHMS Collaboration <brahmlib@rhic.bnl.gov>
//
#ifndef WIN32
#include <iostream>
#include <iomanip>
#include <fstream>
#else
#include <iostream.h>
#include <iomanip.h>
#include <fstream.h>
#endif
#ifndef BRAT_BrBbDumpCalModule
#include "BrBbDumpCalModule.h"
#endif
#ifndef BRAT_BrParameterDbManager
#include "BrParameterDbManager.h"
#endif
#ifndef BRAT_BrCalibrationManager
#include "BrCalibrationManager.h"
#endif
#ifndef BRAT_BrRunInfoManager
#include "BrRunInfoManager.h"
#endif

#include <TDatime.h>
//____________________________________________________________________
ClassImp(BrBbDumpCalModule);

//____________________________________________________________________
 BrBbDumpCalModule::BrBbDumpCalModule()
  : BrModule()
{
  // Default constructor. DO NOT USE
  SetState(kSetup);

  fParamsBb       = 0;

  fCalibration[0] = 0;
  fCalibration[1] = 0;
}

//____________________________________________________________________
 BrBbDumpCalModule::BrBbDumpCalModule(const Char_t* name, const Char_t* title)
  : BrModule(name, title)
{
  // Named Constructor
  SetState(kSetup);
  
  fParamsBb   = 0;

  fCalibration[0] = 0;
  fCalibration[1] = 0;
}

//____________________________________________________________________
 void BrBbDumpCalModule::Init()
{
  // Job-level initialisation
  SetState(kInit);

  // -------------------------------------------
  // calibration parameters and others
  BrParameterDbManager* parMan =
    BrParameterDbManager::Instance();
  
  fParamsBb = 
    (BrDetectorParamsBB*)parMan->
    GetDetectorParameters("BrDetectorParamsBB", "BB");
  
  BrCalibrationManager* calMan = 
    BrCalibrationManager::Instance();
  
  if (!calMan) {
    Abort("Init", "could not get calibration manager");
    return;
  }  

  fCalibration[0] =
    (BrBbCalibration*)calMan->Register("BrBbCalibration", "BBL");
  fCalibration[1] =
    (BrBbCalibration*)calMan->Register("BrBbCalibration", "BBR");
  
  if (!fCalibration[0] || !fCalibration[1]) {
    Abort("Init", "could not get calibration parameters");
    return;
  }

  
  // set access mode to SQL read:
  BrCalibration::EAccessMode mode = BrCalibration::kRead;

  const Int_t ntubes[]  = {
    fParamsBb->GetNoLeftTubes(),
    fParamsBb->GetNoRightTubes()
  };

  for (Int_t i = 0; i < 2; i++) {
    fCalibration[i]->Use("pedestal",      mode, ntubes[i]);
    fCalibration[i]->Use("pedestalWidth", mode, ntubes[i]);
    fCalibration[i]->Use("adcGain0",      mode, ntubes[i]);
    fCalibration[i]->Use("adcGap",        mode, ntubes[i]);
    fCalibration[i]->Use("adcGapStart",   mode, ntubes[i]);
    fCalibration[i]->Use("tdcGain",       mode, ntubes[i]);
    fCalibration[i]->Use("deltaTdc",      mode, ntubes[i]);
    fCalibration[i]->Use("slewK",         mode, ntubes[i]);
    fCalibration[i]->Use("slewDt",        mode, ntubes[i]);
    fCalibration[i]->Use("slewP",         mode, ntubes[i]);
  }
}

//____________________________________________________________________
 void BrBbDumpCalModule::Begin() 
{
  
  // check if revisions exist
  if (!fCalibration[0]->RevisionExists("*") ||
      !fCalibration[1]->RevisionExists("*")) {
    Abort("Begin", "Could not find revisions!! Aborting...");
    return;
  }
  BrRunInfoManager* runMan = BrRunInfoManager::Instance();
  Int_t nrun  = runMan->GetNumberOfRuns();
  Int_t* runs = runMan->GetRunNumbers();

  for (Int_t r = 0; r < nrun; r++) {
    DumpCalibration(0, fParamsBb->GetNoLeftTubes(),  runs[r]);
    DumpCalibration(1, fParamsBb->GetNoRightTubes(), runs[r]);
  }
}


//____________________________________________________________________________
 void BrBbDumpCalModule::DumpCalibration(Int_t array, Int_t ntubes, Int_t runno)
{
  //
  // here, dumping the calibration to an ascii file
  //
  const Char_t* bbName[] = { "Beam-Beam Left", "Beam-Beam Right" };
  TString calibFile = Form("%sCalibRun%d.dat", 
			   fCalibration[array]->GetName(), runno);
  
  ofstream file(calibFile.Data(), ios::out);
  
  file << "******************************************************* " << endl;
  file << "*     Whole Calibration for BB counter " << bbName[array] << endl;
  file << "*     Calibration valid for run " << runno << endl;
  file << "******************************************************* " <<endl;
  file << "* table           y/m/d     h/min/sec   Valid Start   *" << endl;
  TDatime startDate;
  startDate.Set((UInt_t) fCalibration[array]->GetRevisionValidStart("pedestal"));
  file << "* pedestal      " << setw(8) <<startDate.GetDate() << " - " << setw(8) << startDate.GetTime() << " *" <<endl ;
  startDate.Set((UInt_t) fCalibration[array]->GetRevisionValidStart("pedestalWidth"));
  file << "* pedestalWidth " << setw(8) <<startDate.GetDate() << " - " << setw(8)<< startDate.GetTime() << " *"<<endl ;
  startDate.Set((UInt_t) fCalibration[array]->GetRevisionValidStart("adcGain0"));
  file << "* adcGain0      " << setw(8) <<startDate.GetDate() << " - " << setw(8)<< startDate.GetTime() << " *"<<endl ;
  startDate.Set((UInt_t) fCalibration[array]->GetRevisionValidStart("adcGap"));
  file << "* adcGap        " << setw(8) <<startDate.GetDate() << " - " << setw(8)<< startDate.GetTime() << " *"<<endl ;
  startDate.Set((UInt_t) fCalibration[array]->GetRevisionValidStart("adcGapStart"));
  file << "* adcGapStart   " << setw(8) <<startDate.GetDate() << " - " << setw(8)<< startDate.GetTime() << " *"<<endl ;
  startDate.Set((UInt_t) fCalibration[array]->GetRevisionValidStart("tdcGain"));
  file << "* tdcGain       " << setw(8) <<startDate.GetDate() << " - " << setw(8)<< startDate.GetTime() << " *"<<endl ;
  startDate.Set((UInt_t) fCalibration[array]->GetRevisionValidStart("deltaTdc"));
  file << "* deltaTdc      " << setw(8) <<startDate.GetDate() << " - " << setw(8)<< startDate.GetTime() << " *"<<endl ;
  startDate.Set((UInt_t) fCalibration[array]->GetRevisionValidStart("slewK"));
  file << "* slewK         " << setw(8) <<startDate.GetDate() << " - " << setw(8)<< startDate.GetTime() << " *"<<endl ;
  startDate.Set((UInt_t) fCalibration[array]->GetRevisionValidStart("slewDt"));
  file << "* slewDt        " << setw(8) <<startDate.GetDate() << " - " << setw(8)<< startDate.GetTime() << " *"<<endl ;
  startDate.Set((UInt_t) fCalibration[array]->GetRevisionValidStart("slewP"));
  file << "* slewP         " << setw(8) <<startDate.GetDate() << " - " << setw(8)<< startDate.GetTime() << " *" << endl;
  file << "******************************************************* " <<endl;
  file << "*" << endl;    
  file << "* tube "
       << "|  Pedestal  |  Ped. Width |  Adc gain0  "    
       << "|  Adc Gap | Gap Start "
       << "|  Tdc Gain  |  Delta Tdc  |  Slewing K  "
       << "| Slewing Dt |  Slewing P "  << endl;
  file << "* ---------------------------------------" 
       << "-----------------------" 
       << "-----------------------------------------" 
       << "---------------------------" << endl << endl; 
  
  file.setf(ios::fixed);
  
  for (Int_t i = 0; i < ntubes; i++) {
    Int_t tube = i + 1;
    file << setw(5)  << tube  
	 << setw(13) << setprecision(6) 
	 << fCalibration[array]->GetPedestal(tube) 
	 << setw(13) << setprecision(6) 
	 << fCalibration[array]->GetPedestalWidth(tube) 
	 << setw(13) << setprecision(6) 
	 << fCalibration[array]->GetAdcGain0(tube) 
	 << setw(13) << setprecision(6) 
	 << fCalibration[array]->GetAdcGap(tube) 
	 << setw(13) << setprecision(6) 
	 << fCalibration[array]->GetAdcGapStart(tube) 
	 << setw(13) << setprecision(6) 
	 << fCalibration[array]->GetTdcGain(tube) 
	 << setw(13) << setprecision(6) 
	 << fCalibration[array]->GetDeltaTdc(tube) 
	 << setw(13) << setprecision(6) 
	 << fCalibration[array]->GetSlewK(tube) 
	 << setw(13) << setprecision(6) 
	 << fCalibration[array]->GetSlewDt(tube) 
	 << setw(13) << setprecision(6) 
	 << fCalibration[array]->GetSlewP(tube) 
	 << endl;
  }
  
  file << "* ---------------------------------------" 
       << "-----------------------" 
       << "-----------------------------------------" 
       << "---------------------------" << endl << endl; 


}  

//____________________________________________________________________
//
// $Log: BrBbDumpCalModule.cxx,v $
// Revision 1.2  2002/02/15 21:20:18  videbaek
// Add revision times to listing
//
// Revision 1.1  2001/11/04 01:54:03  ouerdane
// Added a new class, BrBbDumpCalModule to be able to have some
// back up ascii files that the cal hits module can load in case
// of bad connection with the SQL db (Steve Sander's suggestion)
//
// A script is available in brat/scripts/calib/bb/ called BbDumpSqlCal.C
//
// Usage: bratmain BbDumpSqlCal.C -r <run number>
// It will create 2 ascii files with all the cal. found in the SQL db.
// One is for BB Left, the other is for BB Right
//

This page automatically generated by script docBrat by Christian Holm

Copyright ; 2002 BRAHMS Collaboration <brahmlib@rcf.rhic.bnl.gov>
Last Update on by

Validate HTML
Validate CSS