Changeset 6680 for trunk


Ignore:
Timestamp:
02/25/05 18:08:21 (20 years ago)
Author:
gaug
Message:
*** empty log message ***
Location:
trunk/MagicSoft/Mars
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/MagicSoft/Mars/Changelog

    r6679 r6680  
    3737   * mhcalib/MHCalibrationHiLoCam.cc
    3838     - set default range up to 30.
     39
     40   * mhcalib/MHCalibrationChargeBlindPix.h
     41     - take the TVectors out of the streamer, to be exectuable with
     42       root.04.02
    3943
    4044 2005/02/24 Thomas Hengstebeck
  • trunk/MagicSoft/Mars/mcalib/MCalibrationIntensityRelTimeCam.cc

    r5812 r6680  
    8383}
    8484
    85 TGraphErrors *MCalibrationIntensityRelTimeCam::GetTimeResVsCharge( const UInt_t pixid, const MCalibrationIntensityChargeCam &chargecam,
    86                                   const MCalibrationCam::PulserColor_t col)
     85TGraphErrors *MCalibrationIntensityRelTimeCam::GetTimeResVsCharge( const UInt_t pixid, const MCalibrationIntensityChargeCam &chargecam, const MCalibrationCam::PulserColor_t col)
    8786{
    8887
     
    178177      return NULL;
    179178    }
     179
     180  if (col == MCalibrationCam::kBLUE)
     181    size -= 5;
     182  if (col == MCalibrationCam::kNONE)
     183    size -= 5;
     184 
     185  const Float_t sqrt2   = 1.414;
     186  const Float_t fadc2ns = 3.333;
     187  const Float_t norm    = fadc2ns / sqrt2;
     188
     189  TArrayD res(size);
     190  TArrayD reserr(size);
     191  TArrayD sig(size);
     192  TArrayD sigerr(size);
     193 
     194  Int_t cnt = 0;
     195
     196  TH1D *h = 0;
     197
     198  for (Int_t i=0;i<GetSize();i++)
     199    {
     200      //
     201      // Get the calibration cam from the intensity cam
     202      //
     203      MCalibrationRelTimeCam *relcam = (MCalibrationRelTimeCam*)GetCam(i);
     204      MCalibrationChargeCam *cam = (MCalibrationChargeCam*)chargecam.GetCam(i);
     205
     206      if (relcam->GetPulserColor() != col && col != MCalibrationCam::kNONE)
     207        continue;
     208
     209      const MCalibrationChargePix &apix = (MCalibrationChargePix&)cam->GetAverageArea(aidx);
     210      const Double_t phe          = (Double_t)apix.GetPheFFactorMethod();
     211      const Double_t pheerr       = (Double_t)apix.GetPheFFactorMethodErr();
     212
     213      if (relcam->GetPulserColor() == MCalibrationCam::kBLUE)
     214        if (aidx == 0)
     215          {
     216            if (phe > 100. && phe < 190.)
     217              continue;
     218          }
     219        else
     220          {
     221            if (phe > 200. && phe < 480.)
     222              continue;
     223          }
     224
     225      if (relcam->GetPulserColor() == MCalibrationCam::kUV)
     226        *fLog << inf << "NUMBER: " << i << endl;
     227
     228      sig[cnt]       = phe;
     229      sigerr[cnt]    = pheerr;
     230
     231      Double_t resol  = 0.;
     232      Double_t resol2 = 0.;
     233      Double_t var    = 0.;
     234      Int_t    num    = 0;
     235
     236      MHCamera camres(geom,"CamRes","Time Resolution;Time Resolution [ns];channels");
     237      //
     238      // Get the area calibration pix from the calibration cam
     239      //
     240      for (Int_t j=0; j<cam->GetSize(); j++)
     241        {
     242          const MCalibrationChargePix &pix = (MCalibrationChargePix&)(*cam)[j];
     243          const MCalibrationRelTimePix &relpix = (MCalibrationRelTimePix&)(*relcam)[j];
     244          //
     245          // Don't use bad pixels
     246          //
     247          if (!pix.IsFFactorMethodValid())
     248            continue;
     249          //
     250          //
     251          if (aidx != geom[j].GetAidx())
     252            continue;
     253         
     254          const Double_t pres = (Double_t)relpix.GetTimePrecision();
     255
     256          resol  += pres;
     257          resol2 += pres;
     258          num++;
     259         
     260          camres.Fill(j,pres);
     261          camres.SetUsed(j);
     262        }
     263     
     264      if (num > 100)
     265        {
     266          resol /= num;
     267          var  = (resol2 - resol*resol*num) / (num-1);
     268
     269          res[cnt] = resol;
     270          if (var > 0.)
     271            reserr[cnt] = TMath::Sqrt(var);
     272          else
     273            reserr[cnt] = 0.;
     274
     275          //
     276          // Make also a Gauss-fit to the distributions. The RMS can be determined by
     277          // outlier, thus we look at the sigma and the RMS and take the smaller one, afterwards.
     278          //
     279          h = camres.ProjectionS(TArrayI(),TArrayI(1,&aidx),"_py",750);
     280          h->SetDirectory(NULL);
     281          h->Fit("gaus","QL");
     282          TF1 *fit = h->GetFunction("gaus");
     283
     284          Double_t ci2   = fit->GetChisquare();
     285          Double_t sigma = fit->GetParameter(2);
     286
     287          if (ci2 > 500. || sigma > reserr[cnt])
     288            {
     289              h->Fit("gaus","QLM");
     290              fit = h->GetFunction("gaus");
     291
     292              ci2   = fit->GetChisquare();
     293              sigma = fit->GetParameter(2);
     294            }
     295         
     296          const Double_t mean  = fit->GetParameter(1);
     297          const Int_t ndf      = fit->GetNDF();
     298         
     299          *fLog << inf << "Mean number photo-electrons: " << sig[cnt] << endl;
     300          *fLog << inf << "Time Resolution area idx: " << aidx << " Results: " << endl;
     301          *fLog << inf << "Mean: " << Form("%4.3f",mean)
     302                << "+-" << Form("%4.3f",fit->GetParError(1))
     303                << "  Sigma: " << Form("%4.3f",sigma) << "+-" << Form("%4.3f",fit->GetParError(2))
     304                << "  Chisquare: " << Form("%4.3f",fit->GetChisquare()) << "  NDF  : " << ndf << endl;         
     305
     306          delete h;
     307          gROOT->GetListOfFunctions()->Remove(fit);
     308
     309          if ((sigma < reserr[cnt] || reserr[cnt]<0.001) && ndf > 2)
     310            {
     311              res   [cnt] = mean;
     312              reserr[cnt] = sigma;
     313            }
     314          else
     315            *fLog << warn << "Do not take fit results, but Mean and RMS: " << Form("%4.3f",res[cnt]) << "+-" << Form("%4.3f",reserr[cnt]) << endl;
     316
     317          res[cnt]    *= norm;
     318          reserr[cnt] *= norm;
     319          cnt++;
     320        }
     321   }
     322 
     323  TGraphErrors *gr = new TGraphErrors(size,
     324                                      sig.GetArray(),res.GetArray(),
     325                                      sigerr.GetArray(),reserr.GetArray());
     326  gr->SetTitle(Form("%s%3i","Area Index ",aidx));
     327  gr->GetXaxis()->SetTitle("<phes> [1]");
     328  gr->GetYaxis()->SetTitle("Time Resolution [ns]");     
     329  return gr;
     330}
     331
     332TGraphErrors *MCalibrationIntensityRelTimeCam::GetTimeResVsSqrtPhePerArea( const Int_t aidx,const MCalibrationIntensityChargeCam &chargecam, const MGeomCam &geom, const MCalibrationCam::PulserColor_t col)
     333{
     334 
     335  const Int_t size = CountNumEntries(col);
     336 
     337  if (size == 0)
     338    return NULL;
     339
     340  const Int_t asiz = chargecam.CountNumEntries(col);
     341
     342  if (size != asiz)
     343    {
     344      *fLog << err << GetDescriptor() << ": Size mismatch in colour between MCalibrationIntensityRelTimeCam "
     345            << "and MCalibrationIntensityChargeCam. " << endl;
     346      return NULL;
     347    }
    180348 
    181349  const Float_t sqrt2   = 1.414;
     
    200368      MCalibrationChargeCam *cam = (MCalibrationChargeCam*)chargecam.GetCam(i);
    201369
    202       if (relcam->GetPulserColor() != col)
     370      if (relcam->GetPulserColor() != col && col != MCalibrationCam::kNONE)
    203371        continue;
    204372
    205373      const MCalibrationChargePix &apix = (MCalibrationChargePix&)cam->GetAverageArea(aidx);
    206374      const Float_t phe          = apix.GetPheFFactorMethod();
    207       const Float_t pheerr       = apix.GetPheFFactorMethodErr();
    208 
    209       sig[cnt]       = phe;
    210       sigerr[cnt]    = pheerr;
     375      const Float_t phesq        = phe > 0. ? TMath::Sqrt(phe) : 0.;
     376      const Float_t phesqerr     = phe > 0. ? 0.5*apix.GetPheFFactorMethodErr()/phesq : 0.;
     377
     378      sig[cnt]       = phesq;
     379      sigerr[cnt]    = phesqerr;
    211380
    212381      Double_t resol  = 0.;
     
    279448
    280449         
    281           *fLog << inf << "Mean number photo-electrons: " << sig[cnt] << endl;
     450          *fLog << inf << "Sqrt Mean number photo-electrons: " << sig[cnt] << endl;
    282451          *fLog << inf << "Time Resolution area idx: " << aidx << " Results: " << endl;
    283452          *fLog << inf << "Mean: " << Form("%4.3f",mean)
     
    310479                                      sigerr.GetArray(),reserr.GetArray());
    311480  gr->SetTitle(Form("%s%3i","Area Index ",aidx));
    312   gr->GetXaxis()->SetTitle("<phes> [1]");
     481  gr->GetXaxis()->SetTitle("Sqrt(<phes>) [1]");
    313482  gr->GetYaxis()->SetTitle("Time Resolution [ns]");     
    314483  return gr;
  • trunk/MagicSoft/Mars/mcalib/MCalibrationIntensityRelTimeCam.h

    r5660 r6680  
    2323  TGraphErrors *GetTimeResVsCharge( const UInt_t pixid, const MCalibrationIntensityChargeCam &chargecam,
    2424                                    const MCalibrationCam::PulserColor_t col=MCalibrationCam::kNONE);
     25
    2526  TGraphErrors *GetTimeResVsChargePerArea( const Int_t aidx, const MCalibrationIntensityChargeCam &chargecam,
     27                                           const MGeomCam &geom,
     28                                           const MCalibrationCam::PulserColor_t col=MCalibrationCam::kNONE);
     29
     30  TGraphErrors *GetTimeResVsSqrtPhePerArea( const Int_t aidx, const MCalibrationIntensityChargeCam &chargecam,
    2631                                           const MGeomCam &geom,
    2732                                           const MCalibrationCam::PulserColor_t col=MCalibrationCam::kNONE);
  • trunk/MagicSoft/Mars/mcalib/MCalibrationPulseTimeCam.cc

    r6599 r6680  
    144144
    145145          *fLog << all
    146                 << Form("%s%4i%s%4.2f%s%4.2f%s%4.2f%s%4.2f","Pix  ",pix->GetPixId(),
    147                         ":            Mean Time: ",pix->GetMean()," +- ",pix->GetMeanErr(),
    148                         "   Time Jitter: ",pix->GetSigma()," +- ",pix->GetSigmaErr())
     146                << Form("Pix  %4i:  Mean Time: %4.2f+-%4.2f Time Jitter: %4.2f+-%4.2f",pix->GetPixId(),
     147                        pix->GetMean(),pix->GetMeanErr(),pix->GetSigma(),pix->GetSigmaErr())
    149148                << endl;
    150149          id++;
     
    178177  {
    179178    *fLog << all
    180           << Form("%s%4i%s%4.2f%s%4.2f%s%4.2f%s%4.2f","Average Area   ",pix->GetPixId(),
    181                   ":  Mean Time: ",pix->GetMean()," +- ",pix->GetMeanErr(),
    182                   "   Time Jitter: ",pix->GetSigma()," +- ",pix->GetSigmaErr())
     179          << Form("Pix  %4i:  Mean Time: %4.2f+-%4.2f Time Jitter: %4.2f+-%4.2f",pix->GetPixId(),
     180                  pix->GetMean(),pix->GetMeanErr(),pix->GetSigma(),pix->GetSigmaErr())
    183181          << endl;
    184182  }
     
    188186  {
    189187    *fLog << all
    190           << Form("%s%4i%s%4.2f%s%4.2f%s%4.2f%s%4.2f","Average Sector ",pix->GetPixId(),
    191                   ":  Mean Time: ",pix->GetMean()," +- ",pix->GetMeanErr(),
    192                   "   Time Jitter: ",pix->GetSigma()," +- ",pix->GetSigmaErr())
     188          << Form("Pix  %4i:  Mean Time: %4.2f+-%4.2f Time Jitter: %4.2f+-%4.2f",pix->GetPixId(),
     189                  pix->GetMean(),pix->GetMeanErr(),pix->GetSigma(),pix->GetSigmaErr())
    193190          << endl;
    194191  }
     
    231228      if (pix.IsExcluded())
    232229        return kFALSE;
    233       val = pix.GetMean();
     230      val = pix.GetHiGainMean();
    234231      break;
    235232    case 1:
    236233      if (pix.IsExcluded())
    237234        return kFALSE;
    238       val = pix.GetMeanErr();
     235      val = pix.GetHiGainMeanErr();
    239236      break;
    240237    case 2:
    241238      if (pix.IsExcluded())
    242239        return kFALSE;
    243       val = pix.GetSigma();
     240      val = pix.GetHiGainSigma();
    244241      break;
    245242    case 3:
    246243      if (pix.IsExcluded())
    247244        return kFALSE;
    248       val = pix.GetSigmaErr();
     245      val = pix.GetHiGainSigmaErr();
    249246      break;
    250247    case 4:
  • trunk/MagicSoft/Mars/mhcalib/MHCalibrationChargeBlindPix.h

    r6214 r6680  
    3333  Float_t fNumSinglePheLimit;                // Minimum number of single-phe events
    3434
    35   TVector fASinglePheFADCSlices;             // Averaged FADC slice entries supposed single-phe events
    36   TVector fAPedestalFADCSlices;              // Averaged FADC slice entries supposed pedestal   events
     35  TVector fASinglePheFADCSlices;             //! Averaged FADC slice entries supposed single-phe events
     36  TVector fAPedestalFADCSlices;              //! Averaged FADC slice entries supposed pedestal   events
    3737 
    3838  TF1 *fSinglePheFit;                        // Single Phe Fit (Gaussians convoluted with Poisson)
  • trunk/MagicSoft/Mars/mjobs/MJCalibrateSignal.cc

    r6676 r6680  
    5555#include "MPedestalCam.h"
    5656#include "MBadPixelsCam.h"
     57#include "MArrivalTimeCam.h"
    5758
    5859#include "MCalibrationQECam.h"
     
    7980#include "MHCalibrationRelTimeCam.h"
    8081#include "MHCalibrationPulseTimeCam.h"
     82#include "MHCalibrationHiLoCam.h"
    8183#include "MHCamera.h"
    8284
     
    287289        interlacedcont.Add(&hpndiod);
    288290        if (fIsRelTimesUpdate)
    289             interlacedcont.Add(&hrelcam);
    290         if (fIsHiLoCalibration)
    291             interlacedcont.Add(&hilcam);
     291          interlacedcont.Add(&hrelcam);
    292292    }
    293293
     
    395395    plist.AddToList(&pedcambias);
    396396    plist.AddToList(&pedcamab);
     397
     398    MArrivalTimeCam timecam;
     399    plist.AddToList(&timecam);
    397400
    398401    // Check for interleaved events
     
    551554    MHCamEvent evt6(2, "Unsuitable", "Fraction of unsuitable events per Pixel;;[1]");
    552555    MHCamEvent evt7(0, "Times",      "Calibrated Arrival Time;;T [fadc sl]");
    553     MHCamEvent evt8(2, "Conv",       "Calibration Conv. Factors;;[phe/fadc cnts]");
    554     MHCamEvent evt9(0, "TimeTest",   "Tested Arrival Time of Cherenkov Events;;[fadc sl]");
     556    MHCamEvent evt8(0, "Conv",       "Calibration Conv. Factors;;[phe/fadc cnts]");
    555557
    556558    evt0.EnableSqrtVariance();
     
    562564    evt7.EnableSqrtVariance();
    563565    evt8.EnableSqrtVariance();
    564     evt9.EnableSqrtVariance();
    565566
    566567    MFillH fill0(&evt0, "MPedestalFundamental",    "FillPedFLG");
     
    573574    MFillH fill7(&evt7, "MArrivalTime",            "FillTimes");
    574575    MFillH fill8(&evt8, "MCalibConstCam",          "FillConv");
    575     MFillH fill9(&evt9, "MCalibrationPulseTimeCam","FillPulseTime");
    576576
    577577    MTaskEnv fillflorian("FinalFantasy");
     
    695695    if (extractor2 || extractor1->InheritsFrom("MExtractTimeAndCharge"))
    696696      tlist2.AddToList(&fill7);
    697     tlist2.AddToList(&fill9);
    698697
    699698    tlist2.AddToList(&fillflorian);
     
    750749    DisplayResult(plist);
    751750
     751    if (fPixelCheck)
     752      {
     753        MHCalibrationPulseTimeCam *pcam = (MHCalibrationPulseTimeCam*)plist.FindObject("MHCalibrationPulseCam");
     754        MHCalibrationPix &pix1 = (*pcam)[fCheckedPixId];
     755        pix1.DrawClone("");
     756       
     757        if (fIsHiLoCalibration)
     758          {
     759            MHCalibrationHiLoCam *hcam = (MHCalibrationHiLoCam*)plist.FindObject("MHCalibrationPulseCam");
     760            MHCalibrationPix &pix2 = (*hcam)[fCheckedPixId];
     761            pix2.DrawClone("");
     762          }
     763}
     764
     765
    752766    if (!WriteResult(interlacedcont))
    753         return kFALSE;
     767      return kFALSE;
     768
     769    TObjArray addcont;
     770    addcont.Add(&pulcam);
     771
     772    if (fIsHiLoCalibration)
     773      addcont.Add(&hilcam);
     774
     775    if (!WriteResult(addcont))
     776      return kFALSE;
    754777
    755778    // return if job went ok
Note: See TracChangeset for help on using the changeset viewer.