//____________________________________________________________________
//
// $Id$
//
// Small script that shows a signal train from a VA1 pre-amp.
//
/** Make VA1 sample train
@ingroup simple_script
*/
void
VA1Train()
{
gStyle->SetOptTitle(0);
gStyle->SetOptFit(0);
gStyle->SetOptStat(0);
TCanvas* c = new TCanvas("c", "C", 800, 400);
c->SetFillColor(0);
c->SetBorderMode(0);
c->SetBorderSize(0);
TArrayF measurements(6);
std::cout << "Measurements are: " << std::flush;
for (Int_t i = 0; i < measurements.fN; i++) {
measurements[i] = gRandom->Uniform(0,1);
std::cout << measurements[i] << " " << std::flush;
}
std::cout << std::endl;
Float_t last = 0;
Float_t B = 5;
TH2* frame = new TH2F("frame", "Frame", measurements.fN, 0,
measurements.fN, 10, 0, 1.1);
frame->Draw();
for (Int_t i = 0; i < measurements.fN; i++) {
TF1* f = new TF1("f", "[2] + exp(-[1] * (x - [3])) * ([0] - [2])",
i, i + 1);
f->SetParameter(3, i);
f->SetParameter(1, B);
f->SetParameter(2, measurements[i]);
f->SetParameter(0, last);
if (measurements[i] > last) {
// f = new TF1("f", "[0] * (1 - exp(-[1] * (x - [2]))) + [3]", i, i+1);
// f->SetParameters(measurements[i] - last, B, i, last);
// f->SetParameter(0, measurements[i]);
// f->SetParameter(2, last);
}
else {
// f->SetParameter(2, measurements[i]);
// f->SetParameter(0, last);
// f = new TF1("f", "[0] * (exp(-[1] * (x - [2]))) + [3]", i, i+1);
// f->SetParameters(last - measurements[i], B, i, measurements[i]);
}
f->Draw("same");
last = measurements[i];
}
}
//____________________________________________________________________
//
// EOF
//