using namespace std;
#include "hpidtrackfillerpar.h"
#include <iostream>
#include <cstdlib>
#include "TH1.h"
ClassImp(HPidTrackFillerPar)
HPidTrackFillerPar::HPidTrackFillerPar(const Char_t *name, const Char_t *title,
const Char_t *context)
: HPidHistogramsCont(name, title, context,5)
{
}
Float_t HPidTrackFillerPar::getInterpolatedValue(TH1*pH, Int_t sector,Float_t MomValue)
{
TAxis *pA;
Int_t iBinX, iBinXLower;
pA = pH->GetXaxis();
iBinX = pA->FindBin(MomValue);
if(iBinX>1&&iBinX<=pA->GetNbins())
{
iBinXLower = iBinX-1;
Float_t InterpolationStartValue=pH->GetBinContent(iBinXLower);
Float_t InterpolationEndValue=pH->GetBinContent(iBinX);
Float_t InterpolationStartCoordinate = pA->GetBinUpEdge(iBinXLower);
Float_t Slope=(InterpolationEndValue-InterpolationStartValue)/pA->GetBinWidth(iBinX);
Float_t Interpolation=InterpolationStartValue+Slope*(MomValue-InterpolationStartCoordinate);
return Interpolation;
} else {
if(iBinX == 1) {
return pH->GetBinContent(1);
}
else if(iBinX < 1)
{
Error("HPidTrackFillerPar::getInterpolatedValue()","Non-intercepted bin-out-of-range-situation (bin too low)");
return pH->GetBinContent(1);
}
else
{
Error("HPidTrackFillerPar::getInterpolatedValue()","Non-intercepted bin-out-of-range-situation (bin too high)");
return pH->GetBinContent(pA->GetNbins());
}
}
}
Float_t HPidTrackFillerPar::getDeltaPhiMin(Int_t sector, Float_t MomValue)
{
TH1 *pH;
if((pH = (TH1 *) getHistogram(0,0, sector )) == NULL)
{
Error("HPidTrackFillerPar::getDeltaPhiMin","No parameter histogram found");
exit(-1);
}
if( MomValue <= pH->GetXaxis()->GetXmin() ||
MomValue >= pH->GetXaxis()->GetXmax()
) {
return (Float_t)getValue(0, 0, sector, MomValue);
}
return getInterpolatedValue(pH, sector, MomValue);
}
Float_t HPidTrackFillerPar::getDeltaPhiMax(Int_t sector, Float_t MomValue)
{
TH1 *pH;
if((pH = (TH1 *) getHistogram(0,1, sector )) == NULL)
{
Error("HPidTrackFillerPar::getDeltaPhiMin","No parameter histogram found");
exit(-1);
}
if( MomValue <= pH->GetXaxis()->GetXmin() ||
MomValue >= pH->GetXaxis()->GetXmax()
) {
return (Float_t)getValue(0, 1, sector, MomValue);
}
return getInterpolatedValue(pH, sector, MomValue);
}
Float_t HPidTrackFillerPar::getDeltaThetaMin(Int_t sector, Float_t MomValue)
{
TH1 *pH;
if((pH = (TH1 *) getHistogram(0,2, sector )) == NULL)
{
Error("HPidTrackFillerPar::getDeltaPhiMin","No parameter histogram found");
exit(-1);
}
if( MomValue <= pH->GetXaxis()->GetXmin() ||
MomValue >= pH->GetXaxis()->GetXmax()
) {
return (Float_t)getValue(0, 2, sector, MomValue);
}
return getInterpolatedValue(pH, sector, MomValue);
}
Float_t HPidTrackFillerPar::getDeltaThetaMax(Int_t sector, Float_t MomValue)
{
TH1 *pH;
if((pH = (TH1 *) getHistogram(0,3, sector )) == NULL)
{
Error("HPidTrackFillerPar::getDeltaPhiMin","No parameter histogram found");
exit(-1);
}
if( MomValue <= pH->GetXaxis()->GetXmin() ||
MomValue >= pH->GetXaxis()->GetXmax()
) {
return (Float_t)getValue(0, 3, sector, MomValue);
}
return getInterpolatedValue(pH, sector, MomValue);
}
Float_t HPidTrackFillerPar::getPolynomialCoeff(Int_t sector, Float_t VertexZCoord, Float_t* coefficients)
{
for(Int_t order=0;order<8;order++)
{
coefficients[order]=getValue(0, 4, sector, VertexZCoord, order);
}
return 0.0;
}
Last change: Sat May 22 13:07:36 2010
Last generated: 2010-05-22 13:07
This page has been automatically generated. If you have any comments or suggestions about the page layout send a mail to ROOT support, or contact the developers with any questions or problems regarding ROOT.