BRAT 2.4.5
Class index
Full class index
brahmlib
BRAHMS
ROOT page
//____________________________________________________________________
// 
// Calibration parameter class for Beam-Beam counters 
// 

//____________________________________________________________________
//
// $Id: BrBbCalibration.cxx,v 1.7 2001/11/05 06:48:20 ouerdane Exp $
// $Author: ouerdane $
// $Date: 2001/11/05 06:48:20 $
// $Copyright: (C) 2001 BRAHMS Collaboration <brahmlib@rhic.bnl.gov>
//
#ifndef BRAT_BrBbCalibration
#include "BrBbCalibration.h"
#endif
#ifndef BRAT_BrCalibration
#include "BrCalibration.h"
#endif
#ifndef ROOT_TString
#include "TString.h"
#endif
#ifndef BRAT_BrParameterDbManager
#include "BrParameterDbManager.h"
#endif

//____________________________________________________________________
ClassImp(BrBbCalibration);

//____________________________________________________________________
 BrBbCalibration::BrBbCalibration()
{
  // Default constructor
}

//_________________________________________________________________________
 BrBbCalibration::BrBbCalibration(Char_t *name, Char_t *title) :
  BrCalibration(name, title)
{
  // Standard constructor. 
  // the name should be that of the associated detector e.g. "TOF1"
  // Create the Db Objects needed for the specific tables.
  // Beware difference between constructor and Init. 
  
  AddParameterData("pedestal",      &fPedestal);
  AddParameterData("pedestalWidth", &fPedestalWidth);
  AddParameterData("tdcGain",       &fTdcGain);
  AddParameterData("deltaTdc",      &fDeltaTdc);
  AddParameterData("adcGain0",      &fAdcGain0);
  AddParameterData("adcGain1",      &fAdcGain1);
  AddParameterData("adcGain2",      &fAdcGain2);
  AddParameterData("adcGapStart",   &fAdcGapStart);
  AddParameterData("adcGap",        &fAdcGap);
  AddParameterData("slewK",         &fSlewK);
  AddParameterData("slewDt",        &fSlewDt);
  AddParameterData("slewP",        &fSlewP);
  
  BrParameterDbManager* parMan = BrParameterDbManager::Instance();
  fParamsBb = (BrDetectorParamsBB*)parMan->
    GetDetectorParameters("BrDetectorParamsBB", "BB");
  
}

//_________________________________________________________________________
 BrBbCalibration::~BrBbCalibration()
{
  // Default destructor
  //
}


//_____________________________________________________________________________
 Int_t BrBbCalibration::GetAccessMode(const Char_t* par) const
{
  // get the accessmode of the parameter data  
  TString s(par);
  Int_t mode = 0;
  
  if (s == "pedestal")
    mode = fPedestal.fAccessMode;
  if (s == "pedestalWidth")
    mode = fPedestalWidth.fAccessMode;

  if (s == "adcGain0")
    mode = fAdcGain0.fAccessMode;
  if (s == "adcGain1")
    mode = fAdcGain1.fAccessMode;
  if (s == "adcGain2")
    mode = fAdcGain2.fAccessMode;
  if (s == "adcGap")
    mode = fAdcGap.fAccessMode;
  if (s == "adcGapStart")
    mode = fAdcGapStart.fAccessMode;

  if (s == "tdcGain")
    mode = fTdcGain.fAccessMode;
  if (s == "deltaTdc")
    mode = fDeltaTdc.fAccessMode;

  if (s == "slewK")
    mode = fSlewK.fAccessMode;
  if (s == "slewDt")
    mode = fSlewDt.fAccessMode;
  if (s == "slewP")
    mode = fSlewP.fAccessMode;

  
  return mode;
}

//_____________________________________________________________________________
 void BrBbCalibration::SetPedestal(Int_t tube, Float_t value) {
  CheckTube(tube);
  if (fTubeOutOfBound)
    return;
  
  if(fPedestal.fAccessMode){
    Float_t* array = (Float_t*)fPedestal.fRevision->GetArray();
    array[tube-1]= value;
  }
}

//_____________________________________________________________________________
 void BrBbCalibration::SetPedestalWidth(Int_t tube, Float_t value) {
  CheckTube(tube);
  if (fTubeOutOfBound)
    return;

  if(fPedestalWidth.fAccessMode){
    Float_t* array = (Float_t*)fPedestalWidth.fRevision->GetArray();
    array[tube-1]= value;
  }
}

//_____________________________________________________________________________
 void BrBbCalibration::SetAdcGain0(Int_t tube, Float_t value) {
  CheckTube(tube);
  if (fTubeOutOfBound)
    return;

  if(fAdcGain0.fAccessMode){
    Float_t* array = (Float_t*)fAdcGain0.fRevision->GetArray();
    array[tube-1]= value;
  }
}

//_____________________________________________________________________________
 void BrBbCalibration::SetAdcGain1(Int_t tube, Float_t value) {
  CheckTube(tube);
  if (fTubeOutOfBound)
    return;

  if(fAdcGain1.fAccessMode){
    Float_t* array = (Float_t*)fAdcGain1.fRevision->GetArray();
    array[tube-1]= value;
  }
}

//_____________________________________________________________________________
 void BrBbCalibration::SetAdcGain2(Int_t tube, Float_t value) {
  CheckTube(tube);
  if (fTubeOutOfBound)
    return;

  if(fAdcGain2.fAccessMode){
    Float_t* array = (Float_t*)fAdcGain2.fRevision->GetArray();
    array[tube-1]= value;
  }
}

//_____________________________________________________________________________
 void BrBbCalibration::SetAdcGapStart(Int_t tube, Float_t value) {
  CheckTube(tube);
  if (fTubeOutOfBound)
    return;

  if(fAdcGapStart.fAccessMode){
    Float_t* array = (Float_t*)fAdcGapStart.fRevision->GetArray();
    array[tube-1]= value;
  }
}

//_____________________________________________________________________________
 void BrBbCalibration::SetAdcGap(Int_t tube, Float_t value) {
  CheckTube(tube);
  if (fTubeOutOfBound)
    return;

  if(fAdcGap.fAccessMode){
    Float_t* array = (Float_t*)fAdcGap.fRevision->GetArray();
    array[tube-1]= value;
  }
}

//_____________________________________________________________________________
 void BrBbCalibration::SetTdcGain(Int_t tube, Float_t value) {
  CheckTube(tube);
  if (fTubeOutOfBound)
    return;
  
  if(fTdcGain.fAccessMode){
    Float_t* array = (Float_t*)fTdcGain.fRevision->GetArray();
    array[tube-1]= value;
  }
}

//_____________________________________________________________________________
 void BrBbCalibration::SetDeltaTdc(Int_t tube, Float_t value) {
  CheckTube(tube);
  if (fTubeOutOfBound)
    return;

  if(fDeltaTdc.fAccessMode){
    Float_t* array = (Float_t*)fDeltaTdc.fRevision->GetArray();
    array[tube-1]= value;
  }
}
//_____________________________________________________________________________
 void BrBbCalibration::SetSlewK(Int_t tube, Float_t value) {
  CheckTube(tube);
  if (fTubeOutOfBound)
    return;

  if(fSlewK.fAccessMode){
    Float_t* array = (Float_t*)fSlewK.fRevision->GetArray();
    array[tube-1]= value;
  }
}
//_____________________________________________________________________________
 void BrBbCalibration::SetSlewP(Int_t tube, Float_t value) {
  CheckTube(tube);
  if (fTubeOutOfBound)
    return;
  
  if(fSlewP.fAccessMode){
    Float_t* array = (Float_t*)fSlewP.fRevision->GetArray();
    array[tube-1]= value;
  }
}
//_____________________________________________________________________________
 void BrBbCalibration::SetSlewDt(Int_t tube, Float_t value) {
  CheckTube(tube);
  if (fTubeOutOfBound)
    return;
  
  if(fSlewDt.fAccessMode){
    Float_t* array = (Float_t*)fSlewDt.fRevision->GetArray();
    array[tube-1]= value;
  }
}

//_____________________________________________________________________________
 Float_t BrBbCalibration::GetPedestal(Int_t tube) const {
  CheckTube(tube);
  if (fTubeOutOfBound)
    return 0;

  if(fPedestal.fAccessMode )
    return ((Float_t*) fPedestal.fRevision->GetArray())[tube-1] ;
  else
    return 0;
}
//_____________________________________________________________________________
 Float_t BrBbCalibration::GetPedestalWidth(Int_t tube) const {
  CheckTube(tube);
  if (fTubeOutOfBound)
    return 0;

  if(fPedestalWidth.fAccessMode ) 
    return ((Float_t*) fPedestalWidth.fRevision->GetArray())[tube-1] ;
  else
    return 0;
}

//_____________________________________________________________________________
 Float_t BrBbCalibration::GetAdcGain0(Int_t tube) const {
  CheckTube(tube);
  if (fTubeOutOfBound)
    return 0;

  if(fAdcGain0.fAccessMode ) 
    return ((Float_t*) fAdcGain0.fRevision->GetArray())[tube-1] ;
  else
    return 0;
}

//_____________________________________________________________________________
 Float_t BrBbCalibration::GetAdcGain1(Int_t tube) const {
  CheckTube(tube);
  if (fTubeOutOfBound)
    return 0;

  if(fAdcGain1.fAccessMode ) 
    return ((Float_t*) fAdcGain1.fRevision->GetArray())[tube-1] ;
  else
    return 0;
}

//_____________________________________________________________________________
 Float_t BrBbCalibration::GetAdcGain2(Int_t tube) const {
  CheckTube(tube);
  if (fTubeOutOfBound)
    return 0;

  if(fAdcGain2.fAccessMode ) 
    return ((Float_t*) fAdcGain2.fRevision->GetArray())[tube-1] ;
  else
    return 0;
}

//_____________________________________________________________________________
 Float_t BrBbCalibration::GetAdcGapStart(Int_t tube) const {
  CheckTube(tube);
  if (fTubeOutOfBound)
    return 0;

  if(fAdcGapStart.fAccessMode ) 
    return ((Float_t*) fAdcGapStart.fRevision->GetArray())[tube-1] ;
  else
    return 0;
}

//_____________________________________________________________________________
 Float_t BrBbCalibration::GetAdcGap(Int_t tube) const {
  CheckTube(tube);
  if (fTubeOutOfBound)
    return 0;
  
  if(fAdcGap.fAccessMode ) 
    return ((Float_t*) fAdcGap.fRevision->GetArray())[tube-1] ;
  else
    return 0;
}

//_____________________________________________________________________________
 Float_t BrBbCalibration::GetTdcGain(Int_t tube) const {
  CheckTube(tube);
  if (fTubeOutOfBound)
    return 0;

  if(fTdcGain.fAccessMode ) 
    return ((Float_t*) fTdcGain.fRevision->GetArray())[tube-1] ;
  else
    return 0;
}

//_____________________________________________________________________________
 Float_t BrBbCalibration::GetDeltaTdc(Int_t tube) const {
  CheckTube(tube);
  if (fTubeOutOfBound)
    return 0;

  if(fDeltaTdc.fAccessMode ) 
    return ((Float_t*) fDeltaTdc.fRevision->GetArray())[tube-1] ;
  else
    return 0;
}
//_____________________________________________________________________________
 Float_t BrBbCalibration::GetSlewK(Int_t tube) const {
  CheckTube(tube);
  if (fTubeOutOfBound)
    return 0;

  if(fSlewK.fAccessMode ) 
    return ((Float_t*) fSlewK.fRevision->GetArray())[tube-1] ;
  else
    return 0;
}
//_____________________________________________________________________________
 Float_t BrBbCalibration::GetSlewP(Int_t tube) const {
  CheckTube(tube);
  if (fTubeOutOfBound)
    return 0;
  
  if(fSlewP.fAccessMode ) 
    return ((Float_t*) fSlewP.fRevision->GetArray())[tube-1] ;
  else
    return 0;
}
//_____________________________________________________________________________
 Float_t BrBbCalibration::GetSlewDt(Int_t tube) const {
  CheckTube(tube);
  if (fTubeOutOfBound)
    return 0;

  if(fSlewDt.fAccessMode ) 
    return ((Float_t*) fSlewDt.fRevision->GetArray())[tube-1] ;
  else
    return 0;
}

//_____________________________________________________________________________
 Bool_t BrBbCalibration::ValidCalibration(Int_t tube)
{
  CheckTube(tube);
  if (fTubeOutOfBound)
    return kFALSE;

  if (GetPedestal(tube)      == kCalException ||
      GetPedestalWidth(tube) == kCalException ||
      GetAdcGain0(tube)      == kCalException ||
      GetAdcGain1(tube)      == kCalException ||
      GetAdcGain2(tube)      == kCalException ||
      GetAdcGapStart(tube)   == kCalException ||
      GetAdcGap(tube)        == kCalException ||
      GetTdcGain(tube)       == kCalException ||
      GetDeltaTdc(tube)      == kCalException ||
      GetSlewK(tube)         == kCalException ||
      GetSlewP(tube)         == kCalException ||
      GetSlewDt(tube)        == kCalException)
    return kFALSE;
  
  return kTRUE;
}

//_________________________________________________________________________
 Bool_t BrBbCalibration::MissingRevision() 
{
  // check if a parameter is missing for a hit recontruction
  
  if (!RevisionExists("pedestal")) {
    cerr << " *** " << GetName() << " calibration: "
	 << " pedestal revision missing ***" << endl;
    return kTRUE;
  }
  if (!RevisionExists("tdcGain")) {
    cerr << " *** " << GetName() << " calibration: "
	 << " tdcGain revision missing ***" << endl;
    return kTRUE;
  }
  if (!RevisionExists("deltaTdc")) {
    cerr << " *** " << GetName() << " calibration: "
	 << " deltaTdc revision missing ***" << endl;
    return kTRUE;
  }
  if (!RevisionExists("adcGain0")) {
    cerr << " *** " << GetName() << " calibration: "
	 << " adcGain0 revision missing ***" << endl;
    return kTRUE;
  }
  if (!RevisionExists("adcGapStart")) {
    cerr << " *** " << GetName() << " calibration: "
	 << " adcGapStart revision missing ***" << endl;
    return kTRUE;
  }
  if (!RevisionExists("adcGap")) {
    cerr << " *** " << GetName() << " calibration: "
	 << " adcGap revision missing ***" << endl;
    return kTRUE;
  }
  if (!RevisionExists("slewK")) {
    cerr << " *** " << GetName() << " calibration: "
	 << " slewK revision missing ***" << endl;
    return kTRUE;
  } 
  if (!RevisionExists("slewDt")) {
    cerr << " *** " << GetName() << " calibration: "
	 << " slewDt revision missing ***" << endl;
    return kTRUE;
  }
  if (!RevisionExists("slewP")) {
    cerr << " *** " << GetName() << " calibration: "
	 << " slewP revision missing ***" << endl;
    return kTRUE;
  }

  return kFALSE;
}

//_____________________________________________________________________________
 void BrBbCalibration::CheckTube(Int_t tube) const
{
  fTubeOutOfBound = kFALSE;
  Int_t noTubes = fParamsBb->GetNoLeftTubes();
  if (strcmp(GetName(), "BBR") == 0)
    noTubes = fParamsBb->GetNoRightTubes();
  
  if (tube < 1 || tube > noTubes) {
    cerr << GetName() << " tube number " << tube 
	 << " is out of bound" << endl;
    fTubeOutOfBound = kTRUE;
  }
}


//____________________________________________________________________
//
// $Log: BrBbCalibration.cxx,v $
// Revision 1.7  2001/11/05 06:48:20  ouerdane
// uncommented the check of the delta tdc calibration
//
// Revision 1.6  2001/10/15 00:36:02  ouerdane
// Added method GetAccessMode(const Char_t* parName)
//
// Revision 1.5  2001/10/08 10:26:45  cholm
// Changed detector calibration data classes to derive from BrCalibration,
// rather than BrParameterElement, since that has been replaced. Impact
// on various modules, and so on.  Some user code may need to be changed to.
//
// Revision 1.4  2001/09/23 01:37:04  videbaek
// Add a second parameter as per DO code
//
// Revision 1.3  2001/07/31 09:10:09  ouerdane
// made getters const, member fTubeOutOfBound mutable and non persistent
// class version number is now 2
//
// Revision 1.2  2001/07/27 11:28:03  ouerdane
// added method Bool_t MissingRevision() to check if a parameter is missing for reconstruction
//
// Revision 1.1  2001/07/23 11:42:13  ouerdane
// Added calibration data class for Beam-Beam counter calibration
//  BrBbCalibration
//
// has the following parameters
//  pedestal
//  pedestalWidth
//  adcGain0
//  adcGain1
//  adcGain2
//  adcGapStart
//  adcGap
//  tdcGain
//  deltaTdc
//  slewK
//  slewDt
//

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