#include "TFile.h"
// --- Standard library ---
-#include <fstream>
+#include <fstream>
// --- AliRoot header files ---
#include "AliPHOSConTableDB.h"
//____________________________________________________________________________
AliPHOSCalibrManager::AliPHOSCalibrManager():TNamed()
{
+ // default ctor: nott to be used
fctdb = 0 ;
fFileName="" ;
Fatal("Default constructor","Should not use") ;
//____________________________________________________________________________
AliPHOSCalibrManager::~AliPHOSCalibrManager()
{
+ //dtor
TFile * f = gROOT->GetFile(fFileName) ;
if(f && f->IsOpen())
f->Close() ;
//____________________________________________________________________________
AliPHOSCalibrManager * AliPHOSCalibrManager::GetInstance(void)
{
+ // gets the instance of the unique object
return fgCaMa ;
}
//____________________________________________________________________________
AliPHOSCalibrManager * AliPHOSCalibrManager::GetInstance(const char* filename )
{
+ // gets the instance of the unique object
+
if(!fgCaMa)
fgCaMa = new AliPHOSCalibrManager(filename) ;
else{
return fgCaMa ;
}
//____________________________________________________________________________
-void AliPHOSCalibrManager::ReadFromASCII(AliPHOSCalibrationData &data,const char * filename){
+void AliPHOSCalibrManager::ReadFromASCII(AliPHOSCalibrationData &data,const char * filename)
+{
//reads calibration parameters from ascii file
if(!fctdb){
file.close();
}
//____________________________________________________________________________
-void AliPHOSCalibrManager::ReadFromRoot(AliPHOSCalibrationData & data,Int_t run){
+void AliPHOSCalibrManager::ReadFromRoot(AliPHOSCalibrationData & data,Int_t run)
+{
//reads calibration parameters from root file
//construct name
Error("ReadFromRoot","Can not find key %s for run %d in file %s \n",searchname.Data(),run,fFileName.Data()) ;
}
//____________________________________________________________________________
-void AliPHOSCalibrManager::WriteData(AliPHOSCalibrationData * data){
+void AliPHOSCalibrManager::WriteData(AliPHOSCalibrationData * data)
+{
+ //Writes data
TFile * file = gROOT->GetFile(fFileName) ;
if(!file || !file->IsOpen()){
file = TFile::Open(fFileName,"UPDATE") ;
//____________________________________________________________________________
AliPHOSCalibrManager& AliPHOSCalibrManager::operator=(AliPHOSCalibrManager const & cdb)
{
- //
+ //overloads = operator
fFileName = cdb.fFileName;
return *this ;
}
//_________________________________________________________________________
-// Calibration data and their quality
+// Calibration data
+// and their
+// quality
//
//*-- Author : D.Peressounko
//////////////////////////////////////////////////////////////////////////////
//____________________________________________________________________________
- AliPHOSCalibrationData::AliPHOSCalibrationData():TObject() {
+ AliPHOSCalibrationData::AliPHOSCalibrationData():TObject()
+{
+ // default ctor : does nothing
fBegin=0;
fEnd=0;
fData = 0 ;
}
//____________________________________________________________________________
- AliPHOSCalibrationData::AliPHOSCalibrationData(const char * category, const char * version, Int_t nchannels){
+ AliPHOSCalibrationData::AliPHOSCalibrationData(const char * category, const char * version, Int_t nchannels)
+{
+ // ctor: sets up the calibration IO
fData = new TArrayF(nchannels) ;
fDataCheck = new TArrayF(nchannels) ;
fCategory=category;
fVersion=version ;
}
//____________________________________________________________________________
-AliPHOSCalibrationData::AliPHOSCalibrationData(const AliPHOSCalibrationData & cd){
+AliPHOSCalibrationData::AliPHOSCalibrationData(const AliPHOSCalibrationData & cd)
+{
+ //copy ctor
fData = new TArrayF(*cd.fData) ;
fDataCheck = new TArrayF(*cd.fDataCheck) ;
fCategory=cd.fCategory;
//____________________________________________________________________________
AliPHOSCalibrationData::~AliPHOSCalibrationData()
{
+ // dtor: deletes the arrays
if(fData){
delete fData ;
fData=0 ;
}
}
//____________________________________________________________________________
-Float_t AliPHOSCalibrationData::Data(Int_t channel)const {
+Float_t AliPHOSCalibrationData::Data(Int_t channel)const
+{
+ // returns calibration data for a given channel
return fData->At(channel) ;
}
//____________________________________________________________________________
-Float_t AliPHOSCalibrationData::DataCheck(Int_t channel)const {
+Float_t AliPHOSCalibrationData::DataCheck(Int_t channel)const
+{
+ // returns calibration data check for a given channel
return fDataCheck->At(channel) ;
}
//____________________________________________________________________________
-AliPHOSCalibrationData & AliPHOSCalibrationData::operator = (const AliPHOSCalibrationData & rvalue){
+AliPHOSCalibrationData & AliPHOSCalibrationData::operator = (const AliPHOSCalibrationData & rvalue)
+{
+ // overload of =
if(fData)
delete fData;
fData = new TArrayF(*rvalue.fData) ;
// --- ROOT system ---
#include "TROOT.h"
-#include "TH1F.h"
#include "TF1.h"
-#include "TMinuit.h"
#include "TObjString.h"
// --- Standard library ---
//____________________________________________________________________________
AliPHOSCalibrator::AliPHOSCalibrator(const char* file, const char* title,Bool_t toSplit):
TTask("AliPHOSCalibrator",title)
-{ //Constructor which should normally be used.
+{
+ //Constructor which should normally be used.
//file: path/galice.root - header file
//title: branch name of PHOS reconstruction (e.g. "Default")
//toSplit: wether we work in Split mode?
//____________________________________________________________________________
AliPHOSCalibrator::~AliPHOSCalibrator()
{
+ // dtor
if(fPedHistos)
delete fPedHistos ;
if(fGainHistos)
delete fRunList ;
}
//____________________________________________________________________________
-void AliPHOSCalibrator::AddRun(const char * filename){
+void AliPHOSCalibrator::AddRun(const char * filename)
+{
//Adds one more run to list of runs, which will be scanned in ScanXXX methods
TObjString * fn = new TObjString(filename) ;
//____________________________________________________________________________
void AliPHOSCalibrator::Exec(Option_t * option)
{
+ // reads parameters and does the calibration
ScanPedestals(option);
CalculatePedestals();
WritePedestals();
WriteGains() ;
}
//____________________________________________________________________________
-void AliPHOSCalibrator::Init(void){
+void AliPHOSCalibrator::Init(void)
+{
+ // intializes everything
//check if ConTableDB already read
if(!fctdb){
fhGainsWid = new TH1F("hGainsWid","Gains width",fNch,0.,fNch) ;
}
//____________________________________________________________________________
-void AliPHOSCalibrator::SetConTableDB(const char * file,const char * name){
+void AliPHOSCalibrator::SetConTableDB(const char * file,const char * name)
+{
//Reads Connection Table database with name "name" from file "file"
if(file==0 || name == 0){
}
//____________________________________________________________________________
-void AliPHOSCalibrator::PlotPedestal(Int_t chanel){
+void AliPHOSCalibrator::PlotPedestal(Int_t chanel)
+{
//Plot histogram for a given channel, filled in Scan method
if(fPedHistos && fPedHistos->GetEntriesFast()){
static_cast<TH1F*>(fPedHistos->At(chanel))->Draw() ;
}
}
//____________________________________________________________________________
-void AliPHOSCalibrator::PlotPedestals(void){
+void AliPHOSCalibrator::PlotPedestals(void)
+{
+ // draws pedestals distribution
fhPedestals->Draw() ;
}
//____________________________________________________________________________
-void AliPHOSCalibrator::PlotGain(Int_t chanel){
+void AliPHOSCalibrator::PlotGain(Int_t chanel)
+{
//Plot histogram for a given channel, filled in Scan method
if(fGainHistos && fGainHistos->GetEntriesFast()){
static_cast<TH1F*>(fGainHistos->At(chanel))->Draw() ;
}
}
//____________________________________________________________________________
-void AliPHOSCalibrator::PlotGains(void){
+void AliPHOSCalibrator::PlotGains(void)
+{
+ // draws gains distribution
fhGains->Draw() ;
}
//____________________________________________________________________________
-void AliPHOSCalibrator::ScanPedestals(Option_t * option ){
+void AliPHOSCalibrator::ScanPedestals(Option_t * option )
+{
//scan all files in list fRunList and fill pedestal hisgrams
//option: "clear" - clear pedestal histograms filled up to now
// "deb" - plot file name currently processed
}
//____________________________________________________________________________
-void AliPHOSCalibrator::CalculatePedestals(){
+void AliPHOSCalibrator::CalculatePedestals()
+{
//Fit histograms, filled in ScanPedestals method with Gaussian
//find mean and width, check deviation from mean for each channel.
}
//____________________________________________________________________________
-void AliPHOSCalibrator::ScanGains(Option_t * option){
+void AliPHOSCalibrator::ScanGains(Option_t * option)
+{
//Scan all runs, listed in fRunList and fill histograms for all channels
//options: "clear" - clean histograms, filled up to now
// "deb" - print current file name
Int_t ich = fctdb->AbsId2Raw(digit->GetId());
if(ich>=0){
Float_t pedestal = fhPedestals->GetBinContent(ich) ;
- const Float_t showerInCrystall = 0.9 ;
+ const Float_t kshowerInCrystall = 0.9 ;
Float_t beamEnergy = gime->BeamEnergy() ;
- Float_t gain = beamEnergy*showerInCrystall/
+ Float_t gain = beamEnergy*kshowerInCrystall/
(digit->GetAmp() - pedestal) ;
static_cast<TH1F*>(fGainHistos->At(ich))->Fill(gain) ;
}
}
}
//____________________________________________________________________________
-void AliPHOSCalibrator::CalculateGains(void){
+void AliPHOSCalibrator::CalculateGains(void)
+{
+ //calculates gain
if(!fGainHistos || !fGainHistos->GetEntriesFast()){
Error("CalculateGains","You should run ScanGains first!") ;
//_____________________________________________________________________________
void AliPHOSCalibrator::WritePedestals(const char * version,
- Int_t begin,Int_t end){
+ Int_t begin,Int_t end)
+{
//Write calculated data to file using AliPHOSCalibrManager
//version and validitirange (begin-end) will be used to identify data
//_____________________________________________________________________________
void AliPHOSCalibrator::ReadPedestals(const char * version,
Int_t range)
-{ //Read data from file using AliPHOSCalibrManager
+{
+ //Read data from file using AliPHOSCalibrManager
//version and range will be used to choose proper data
AliPHOSCalibrationData ped("Pedestals",version);
//_____________________________________________________________________________
void AliPHOSCalibrator::ReadGains(const char * version,
Int_t range)
-{ //Read data from file using AliPHOSCalibrManager
+{
+ //Read data from file using AliPHOSCalibrManager
//version and range will be used to choose proper data
AliPHOSCalibrationData gains("Gains",version);
//_____________________________________________________________________________
void AliPHOSCalibrator::WriteGains(const char * version,
Int_t begin,Int_t end)
-{ //Write gains through AliPHOSCalibrManager
+{
+ //Write gains through AliPHOSCalibrManager
//version and validity range(begin-end) are used to identify data
if(!fctdb){
cmngr->WriteData(&gains) ;
}
//_____________________________________________________________________________
-void AliPHOSCalibrator::Print(const Option_t * option)const {
+void AliPHOSCalibrator::Print(const Option_t * option)const
+{
+ // prints everything
printf("--------------AliPHOSCalibrator-----------------\n") ;
printf("Files to handle:\n") ;
TIter next(fRunList) ;