10 #include "Math/Interpolator.h"
23 fFunction->SetParameter(parName.Data(), parValue);
31 if (
fFunction->GetParameter(
"constantcurrent") <= 0){
32 Error(
"PndSdsFE::GetTotFromCharge",
"const. current is less or equal zero -> now set to 60 e/ns");
33 fFunction->SetParameter(
"constantcurrent",60);
36 if (
fFunction->GetParameter(
"chargetime")<= 0){
37 Error(
"PndSdsFE::GetTotFromCharge",
"charge time is less than zero -> now set to 100 ns");
38 fFunction->SetParameter(
"chargetime",100);
42 Error(
"PndSdsFE::GetTotFromCharge",
"Threshold is less than zero -> now set to 0 e");
47 Warning(
"PndSdsFE::GetTotFromCharge",
"charge is equal or less than threshold -> zero TOT");
66 return inter->Eval(tot);
125 printf(
"++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%d \n",
i );
142 int size_x = charge.size();
143 int size_y = tot.size();
145 TVectorD charge_root(size_x);
146 TVectorD tot_root(size_y);
148 for(
int bx=0; bx < size_x;bx++)
150 charge_root[bx] = charge.at(bx);
153 for(
int by=0; by < size_x;by++)
155 tot_root[by] = tot.at(by);
165 TFile
f1(s,
"RECREATE");
167 TGraph* graph =
new TGraph(charge.size(), &charge.at(0),&tot.at(0));
171 charge_root.Write(
"charge");
172 tot_root.Write(
"tot");
181 TFile *fInFile =
new TFile(s,
"read");
183 if(fInFile->IsZombie()) {
184 std::cout <<
"No interpolator list to load, create one... " << std::endl;
191 std::cout <<
"Loading Interpolator List " << std::endl;
203 TFile *fInFile =
new TFile(dd);
205 if(fInFile->IsZombie()) {
206 std::cout <<
"PndSdsFE::LoadInterpolatorList(): error loading root file " << std::endl;
212 std::cout <<
"PndSdsFE::LoadInterpolatorList(): Loading list done " << std::endl;
216 TVectorD *charge = (TVectorD*)fInFile->Get(
"charge");
217 TVectorD *tot = (TVectorD*)fInFile->Get(
"tot");
219 int size_charge = charge->GetNoElements();
220 int size_tot = tot->GetNoElements();
225 for(
int bxx=0; bxx < size_charge;bxx++)
232 for(
int byy=0; byy < size_tot;byy++)
void CreateInterpolatorList()
printf("RealTime=%f seconds, CpuTime=%f seconds\n", rtime, ctime)
virtual double GetTimeStamp(double eventtime, double tof, double charge)
virtual double GetChargeFromTot(double tot)
virtual double GetTotFromCharge(Double_t charge)
virtual double GetTimeWalkFromCharge(double charge)
std::vector< double > fCharge_list
virtual void SetParameter(TString parName, double parValue)
ROOT::Math::Interpolator * inter
virtual double GetTimeBackToBaseline(double charge)
void LoadInterpolatorList()
std::vector< double > fTot_list
void GetInterpolatorList()
void SaveInterpolatorList(std::vector< double > charge, std::vector< double > tot)
virtual double GetTimeWalkFromTot(double tot)
double DigitizeTime(double time)
PndSdsFEAmpModelSimple * fFrontEndModel
int fNumberOfSupportPoints