Ignore:
Timestamp:
12/11/03 14:01:52 (21 years ago)
Author:
gaug
Message:
*** empty log message ***
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/MagicSoft/Mars/mhist/MHCalibrationBlindPixel.cc

    r2627 r2641  
    6262//
    6363MHCalibrationBlindPixel::MHCalibrationBlindPixel(const char *name, const char *title)
    64     : fSinglePheFit(NULL), fTimeGausFit(NULL)
     64  : fSinglePheFit(NULL), fTimeGausFit(NULL), fSinglePhePedFit(NULL),
     65    fLambda(0.), fMu0(0.), fMu1(0.), fSigma0(0.), fSigma1(0.),
     66    fLambdaErr(0.), fMu0Err(0.), fMu1Err(0.), fSigma0Err(0.), fSigma1Err(0.),   
     67    fChisquare(0.), fProb(0.),  fNdf(0),
     68    fMeanTime(0.),  fMeanTimeErr(0.), fSigmaTime(0.), fSigmaTimeErr(0.),
     69    fLambdaCheck(0.), fLambdaCheckErr(0.)
    6570{
    6671
     
    7782    fHBlindPixelCharge->SetXTitle("Sum FADC Slices");
    7883    fHBlindPixelCharge->SetYTitle("Nr. of events");
    79     fHBlindPixelCharge->Sumw2();
     84    //    fHBlindPixelCharge->Sumw2();
    8085
    8186    fErrBlindPixelChargefirst = 0.;
     
    120125  if (fSinglePheFit)
    121126    delete fSinglePheFit;
     127  if (fSinglePhePedFit)
     128    delete fSinglePhePedFit;
    122129  if (fTimeGausFit)
    123130    delete fTimeGausFit;
     
    155162  fFitLegend->AddText(line1);
    156163
     164  const TString line6 =
     165  Form("Mean #lambda (check) = %2.2f #pm %2.2f",GetLambdaCheck(),GetLambdaCheckErr());
     166  fFitLegend->AddText(line6);
     167
    157168  const TString line2 =
    158169  Form("Pedestal: #mu_{0} = %2.2f #pm %2.2f",GetMu0(),GetMu0Err());
     
    215226      {
    216227        if (fFitOK)
    217           fSinglePheFit->SetLineColor(kGreen);         
     228          fSinglePheFit->SetLineColor(kGreen);         
    218229        else
    219230          fSinglePheFit->SetLineColor(kRed);
     
    222233        c->Modified();
    223234        c->Update();
     235
     236        if (fSinglePhePedFit)
     237          {
     238            fSinglePhePedFit->SetLineColor(kBlue);
     239            fSinglePhePedFit->DrawCopy("same");
     240          }
    224241      }
     242
    225243
    226244    c->cd(2);
     
    311329  // otherwise the fit goes gaga because of high number of dimensions ...
    312330  //
    313   const Stat_t   entries      = fHBlindPixelCharge->GetSumOfWeights();
    314   const Double_t lambda_guess = 0.2;
     331  const Stat_t   entries      = fHBlindPixelCharge->GetEntries();
     332  const Double_t lambda_guess = 0.5;
    315333  const Double_t mu_0_guess = fHBlindPixelCharge->GetBinCenter(fHBlindPixelCharge->GetMaximumBin());
    316   const Double_t si_0_guess = mu_0_guess/5.;
    317   const Double_t mu_1_guess = mu_0_guess + 50.;
     334  const Double_t si_0_guess = 20.;
     335  const Double_t mu_1_guess = mu_0_guess + 100.;
    318336  const Double_t si_1_guess = si_0_guess + si_0_guess;
    319337
     
    321339  fSinglePheFit->SetParameters(lambda_guess,mu_0_guess,mu_1_guess,si_0_guess,si_1_guess,entries);
    322340  fSinglePheFit->SetParNames("#lambda","#mu_0","#mu_1","#sigma_0","#sigma_1","area");
    323   fSinglePheFit->SetParLimits(0,0.,5.);
     341  fSinglePheFit->SetParLimits(0,0.,3.);
    324342  fSinglePheFit->SetParLimits(1,rmin,rmax);
    325343  fSinglePheFit->SetParLimits(2,rmin,rmax);
    326344  fSinglePheFit->SetParLimits(3,1.0,rmax-rmin);
    327345  fSinglePheFit->SetParLimits(4,1.7,rmax-rmin);
    328   fSinglePheFit->SetParLimits(5,0.,2.5*entries);
     346  fSinglePheFit->SetParLimits(5,0.,1.5*entries);
    329347  //
    330348  // Normalize the histogram to facilitate faster fitting of the area
     
    355373
    356374  fHBlindPixelCharge->Fit(fSinglePheFit,opt);
     375  fHBlindPixelCharge->Fit(fSinglePheFit,opt);
    357376
    358377  fLambda = fSinglePheFit->GetParameter(0);
     
    372391  fNdf       = fSinglePheFit->GetNDF();
    373392
     393  // Perform the cross-check fitting only the pedestal:
     394  fSinglePhePedFit = new TF1("GausPed","gaus",rmin,fMu0);
     395  fHBlindPixelCharge->Fit(fSinglePhePedFit,opt);
     396
     397  Double_t pedarea = fSinglePhePedFit->GetParameter(0)*gkSq2Pi*fSinglePhePedFit->GetParameter(2);
     398  cout << "Parameter0: " << fSinglePhePedFit->GetParameter(0) << endl;
     399  cout << "Parameter2: " << fSinglePhePedFit->GetParameter(2) << endl;
     400  cout << "Pedarea: " << pedarea << endl;
     401  cout << "entries: " << entries << endl;
     402  fLambdaCheck     = TMath::Log((double)entries/pedarea);
     403  fLambdaCheckErr  = fSinglePhePedFit->GetParError(0)/fSinglePhePedFit->GetParameter(0)
     404                     + fSinglePhePedFit->GetParError(2)/fSinglePhePedFit->GetParameter(2);
     405
    374406  *fLog << "Results of the Blind Pixel Fit: " << endl;
    375407  *fLog << "Chisquare: " << fChisquare << endl;
     
    380412  //
    381413  // The fit result is accepted under condition
    382   // The Probability is greater than gkProbLimit (default 0.01 == 99%)
     414  // The fit result is accepted under condition
     415  // The Probability is greater than gkProbLimit (default 0.001 == 99.7%)
    383416  //
    384417  if (fProb < gkProbLimit)
Note: See TracChangeset for help on using the changeset viewer.