ROOT logo
//____________________________________________________________________
// 
// $Id$
//
// Script to try to fit the reponse function of the VA1 signals, based
// on a finite number of ALTRO samples. 
//
/** Make Va1 response
    @param n 
    @param B 
    @param dc 
    @param errors 
    @ingroup simple_script
*/
void 
VA1Response(Int_t n=2, Float_t B=5, Float_t dc=.01, Bool_t errors=kFALSE) 
{

  TF1* response = new TF1("response", "[0] * (1 - exp(-[1] * x))", 0, 1.4);
  response->SetParameters(1, B);
  response->SetParNames("A", "B");
  response->SetLineColor(2);
  
  TF1* fit = new TF1("fit",  "[0] * (1 - exp(-[1] * x))",  0, 1);
  fit->SetParameters(.5, B/2);
  fit->SetParNames("A", "B");
  fit->SetLineColor(3);
  
  TGraph* graph = 0;
  if (errors) graph = new TGraphErrors(n);
  else        graph = new TGraph(n);
  for (Int_t i = 0; i < n; i++) {
    Float_t t = Float_t(i + 1) / n;
    Float_t c = gRandom->Gaus(response->Eval(t), dc);
    graph->SetPoint(i, t, c);
    if (errors) ((TGraphErrors*)graph)->SetPointError(i, 0, dc);
  }
  
  response->Draw();
  response->GetHistogram()->GetYaxis()->SetRangeUser(0, 1.4);
  response->GetHistogram()->GetXaxis()->SetRangeUser(0, 1.4);
  graph->Draw("P*");
  TString fitOpt("E");
  if (!errors) fitOpt.Append("W");
  graph->Fit("fit", fitOpt.Data());
  graph->Fit("fit", fitOpt.Data());

  std::cout << "Chi^2/NDF = " << fit->GetChisquare() << "/" << fit->GetNDF()
	    << " = " << std::flush;
  if (fit->GetNDF() == 0) 
    std::cout << " undefined!" << std::endl;
  else
    std::cout << (fit->GetChisquare() / fit->GetNDF()) << std::endl;
  std::cout << "f(t) = " 
	    << fit->GetParameter(0) << "+/-" << fit->GetParError(0) 
	    << " * (1 - exp(" 
	    << fit->GetParameter(1) << "+/-" << fit->GetParError(1) 
	    << " * t))" << std::endl;
}
//____________________________________________________________________
//
// EOF
//
 VA1Response.C:1
 VA1Response.C:2
 VA1Response.C:3
 VA1Response.C:4
 VA1Response.C:5
 VA1Response.C:6
 VA1Response.C:7
 VA1Response.C:8
 VA1Response.C:9
 VA1Response.C:10
 VA1Response.C:11
 VA1Response.C:12
 VA1Response.C:13
 VA1Response.C:14
 VA1Response.C:15
 VA1Response.C:16
 VA1Response.C:17
 VA1Response.C:18
 VA1Response.C:19
 VA1Response.C:20
 VA1Response.C:21
 VA1Response.C:22
 VA1Response.C:23
 VA1Response.C:24
 VA1Response.C:25
 VA1Response.C:26
 VA1Response.C:27
 VA1Response.C:28
 VA1Response.C:29
 VA1Response.C:30
 VA1Response.C:31
 VA1Response.C:32
 VA1Response.C:33
 VA1Response.C:34
 VA1Response.C:35
 VA1Response.C:36
 VA1Response.C:37
 VA1Response.C:38
 VA1Response.C:39
 VA1Response.C:40
 VA1Response.C:41
 VA1Response.C:42
 VA1Response.C:43
 VA1Response.C:44
 VA1Response.C:45
 VA1Response.C:46
 VA1Response.C:47
 VA1Response.C:48
 VA1Response.C:49
 VA1Response.C:50
 VA1Response.C:51
 VA1Response.C:52
 VA1Response.C:53
 VA1Response.C:54
 VA1Response.C:55
 VA1Response.C:56
 VA1Response.C:57
 VA1Response.C:58
 VA1Response.C:59
 VA1Response.C:60
 VA1Response.C:61
 VA1Response.C:62
 VA1Response.C:63
 VA1Response.C:64