/* ======================================================================== *\
!
! *
! * This file is part of MARS, the MAGIC Analysis and Reconstruction
! * Software. It is distributed to you in the hope that it can be a useful
! * and timesaving tool in analysing Data of imaging Cerenkov telescopes.
! * It is distributed WITHOUT ANY WARRANTY.
! *
! * Permission to use, copy, modify and distribute this software and its
! * documentation for any purpose is hereby granted without fee,
! * provided that the above copyright notice appear in all copies and
! * that both that copyright notice and this permission notice appear
! * in supporting documentation. It is provided "as is" without express
! * or implied warranty.
! *
!
!
!   Author(s): Markus Gaug 02/2004 <mailto:markus@ifae.es>
!
!   Copyright: MAGIC Software Development, 2000-2004
!
!
\* ======================================================================== */

//////////////////////////////////////////////////////////////////////////////
//
//  MHCalibrationChargeLoGainPix
//
//  Performs all the necessary fits to extract the mean number of summed FADC slices
//
//////////////////////////////////////////////////////////////////////////////
#include "MHCalibrationChargeLoGainPix.h"

#include <TH1.h>
#include <TPad.h>
#include <TVirtualPad.h>
#include <TCanvas.h>

#include "MLog.h"
#include "MLogManip.h"

#include "MParList.h"

#include "MExtractedSignalCam.h"


ClassImp(MHCalibrationChargeLoGainPix);

using namespace std;

const Int_t   MHCalibrationChargeLoGainPix::fgChargeNbins     = 200;
const Axis_t  MHCalibrationChargeLoGainPix::fgChargeFirst     = -0.5;
const Axis_t  MHCalibrationChargeLoGainPix::fgChargeLast      = 199.5;
const Int_t   MHCalibrationChargeLoGainPix::fgAbsTimeNbins    = 15;
const Axis_t  MHCalibrationChargeLoGainPix::fgAbsTimeFirst    = -0.5;
const Axis_t  MHCalibrationChargeLoGainPix::fgAbsTimeLast     = 14.5;
// --------------------------------------------------------------------------
//
// Default Constructor. 
//
MHCalibrationChargeLoGainPix::MHCalibrationChargeLoGainPix(const char *name, const char *title)
{
  fName  = name  ? name  : "MHCalibrationChargeLoGainPix";
  fTitle = title ? title : "Fill the FADC sums of the Low Gain events and perform the fits Pixel ";
  
  SetChargeNbins();
  SetChargeFirst();
  SetChargeLast();
  
  SetAbsTimeNbins();
  SetAbsTimeFirst();
  SetAbsTimeLast();
}


void MHCalibrationChargeLoGainPix::Init()
{

  fHGausHist.SetName("HCalibrationChargeLoGainPix");
  fHGausHist.SetTitle("Distribution of Summed Hi Gain FADC slices Pixel ");  
  fHGausHist.SetXTitle("Sum FADC Slices");
  fHGausHist.SetYTitle("Nr. of events");
  fHGausHist.SetBins(fChargeNbins,fChargeFirst,fChargeLast);
  //  fHGausHist.Sumw2();

  fHAbsTime.SetName("HAbsTimeLoGainPix");
  fHAbsTime.SetTitle("Distribution of Absolute Arrival Times Hi Gain Pixel ");  
  fHAbsTime.SetXTitle("Absolute Arrival Time [FADC slice nr]");
  fHAbsTime.SetYTitle("Nr. of events");
  fHAbsTime.SetBins(fAbsTimeNbins,fAbsTimeFirst,fAbsTimeLast);

}




void MHCalibrationChargeLoGainPix::ChangeHistId(Int_t id)
{

  fPixId = id;

  fHGausHist.SetName(Form("%s%d", fHGausHist.GetName(), id));
  fHGausHist.SetTitle(Form("%s%d", fHGausHist.GetTitle(), id));

  fHAbsTime.SetName(Form("%s%d", fHAbsTime.GetName(), id));
  fHAbsTime.SetTitle(Form("%s%d", fHAbsTime.GetTitle(), id));

  fName  = Form("%s%d", fName.Data(), id);
  fTitle = Form("%s%d", fTitle.Data(), id);
}




