Ignore:
Timestamp:
02/10/04 16:10:52 (21 years ago)
Author:
gaug
Message:
*** empty log message ***
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/MagicSoft/Mars/mcalib/MHCalibrationPixel.cc

    r3075 r3081  
    6161const Int_t   MHCalibrationPixel::fNDFLimit          = 5;
    6262
    63 const Axis_t  MHCalibrationPixel::fMinFreq           = 0.;
    64 const Int_t   MHCalibrationPixel::fPSDNbins          = 50;
     63const Int_t   MHCalibrationPixel::fPSDNbins          = 30;
    6564 
    6665// --------------------------------------------------------------------------
     
    268267  fPSDHiGain = fourier.PowerSpectrumDensity(fHiGains);
    269268
    270   Int_t entries;
    271   TArrayF *array;
    272 
    273   const Double_t max_freq = (fChargeSigma > 0.) ? fChargeSigma*0.2 : 2.;
    274   const Double_t min_freq = 0.;
    275 
    276269  if (IsUseLoGain())
    277     {
    278       fHPSD = new TH1F(Form("%s%d","HPSD",fPixId),
    279                        Form("%s%s","Power Spectrum Density Projection ","LoGain"),
    280                        fPSDNbins,min_freq,max_freq);
    281      
    282       array = fPSDLoGain;
    283     }
     270    fHPSD = MH::ProjectArray(fPSDLoGain, fPSDNbins,
     271                             Form("%s%d","PSDProjection",fPixId),
     272                             Form("%s%d","Power Spectrum Density Projection LoGain ",fPixId));
    284273  else
    285     {
    286 
    287       fHPSD = new TH1F(Form("%s%d","HPSD",fPixId),
    288                        Form("%s%s","Power Spectrum Density Projection ","HiGain"),
    289                        fPSDNbins,min_freq,max_freq);
    290      
    291       array = fPSDHiGain;
    292     }
    293  
    294   entries = array->GetSize();
    295  
    296   for (Int_t i=0;i<entries;i++)
    297     fHPSD->Fill(array->At(i));
     274    fHPSD = MH::ProjectArray(fPSDHiGain, fPSDNbins,
     275                             Form("%s%d","PSDProjection",fPixId),
     276                             Form("%s%d","Power Spectrum Density Projection HiGain ",fPixId));
    298277
    299278  //
    300279  // First guesses for the fit (should be as close to reality as possible,
    301280  //
    302   const Double_t area_guess  = entries*10.;
    303 
    304   fPSDExpFit = new TF1(Form("%s%d","PSDExpFit",fPixId),"[0]*exp(-[1]*x)",0.,1.);
    305 
    306   fPSDExpFit->SetParameters(area_guess,10.);
    307   fPSDExpFit->SetParNames("Area","slope");
    308   fPSDExpFit->SetParLimits(0,0.,20.*area_guess);
    309   fPSDExpFit->SetParLimits(1,0.,30.);
    310   fPSDExpFit->SetRange(min_freq,max_freq);
     281  const Double_t xmax = fHPSD->GetXaxis()->GetXmax();
     282
     283  fPSDExpFit = new TF1(Form("%s%d","PSDExpFit",fPixId),"exp([0]-[1]*x)",0.,xmax);
     284
     285  const Double_t slope_guess  = (TMath::Log(fHPSD->GetEntries())+1.)/xmax;
     286  const Double_t offset_guess = slope_guess*xmax;
     287
     288  fPSDExpFit->SetParameters(offset_guess, slope_guess);
     289  fPSDExpFit->SetParNames("Offset","Slope");
     290  fPSDExpFit->SetParLimits(0,offset_guess/2.,2.*offset_guess);
     291  fPSDExpFit->SetParLimits(1,slope_guess/2.,2.*slope_guess);
     292  fPSDExpFit->SetRange(0.,xmax);
    311293
    312294  fHPSD->Fit(fPSDExpFit,"RQL0");
Note: See TracChangeset for help on using the changeset viewer.