Ignore:
Timestamp:
12/05/03 01:08:44 (21 years ago)
Author:
gaug
Message:
*** empty log message ***
Location:
trunk/MagicSoft/Mars/manalysis
Files:
11 edited

Legend:

Unmodified
Added
Removed
  • trunk/MagicSoft/Mars/manalysis/MCalibrationBlindPix.cc

    r2525 r2603  
    5959  fErrLambda = fErrMu0 = fErrMu1 = fErrSigma0 = fErrSigma1 = 0;
    6060 
    61   fT = fErrT = 0;
     61  fTime = fErrTime = 0;
    6262}
    6363
     
    7676}
    7777
    78 Bool_t MCalibrationBlindPix::FitQ()
     78Bool_t MCalibrationBlindPix::FitCharge()
    7979{
    8080  if (!fHist->FitSinglePhe())
     
    9898
    9999
    100 Bool_t MCalibrationBlindPix::FitT()
     100Bool_t MCalibrationBlindPix::FitTime()
    101101{
    102102
    103   if(!fHist->FitT())
     103  if(!fHist->FitTime())
    104104    return kFALSE;
    105105
    106   fT    = fHist->GetMeanT();
    107   fErrT = fHist->GetMeanTErr();
     106  fTime    = fHist->GetMeanTime();
     107  fErrTime = fHist->GetMeanTimeErr();
    108108 
    109109  return kTRUE;
  • trunk/MagicSoft/Mars/manalysis/MCalibrationBlindPix.h

    r2599 r2603  
    2424  Float_t fErrSigma1;        // The error of the width of the first phe-peak 
    2525 
    26   Float_t fT;                // The mean arrival time after the fit 
    27   Float_t fErrT;             // The error of the mean arrival time after the fit
     26  Float_t fTime;                // The mean arrival time after the fit 
     27  Float_t fErrTime;             // The error of the mean arrival time after the fit
    2828 
    2929  MHCalibrationBlindPixel *fHist; // Pointer to the histograms performing the fits, etc. 
     
    4848  Float_t GetErrSigma1() const    { return fErrSigma1;  }
    4949
    50   Float_t GetT()         const    { return fT;         }
    51   Float_t GetErrT()      const    { return fErrT;      }
     50  Float_t GetTime()         const    { return fTime;         }
     51  Float_t GetErrTime()      const    { return fErrTime;      }
    5252 
    53   Bool_t FillQ(Int_t q)            { return fHist->FillBlindPixelQ(q); }
    54   Bool_t FillT(Int_t t)            { return fHist->FillBlindPixelT(t); } 
    55   Bool_t FillRQvsT(Float_t rq, Int_t t) { return fHist->FillBlindPixelQvsN(rq,t); }   
     53  Bool_t FillCharge(Int_t q)            { return fHist->FillBlindPixelCharge(q); }
     54  Bool_t FillTime(Int_t t)            { return fHist->FillBlindPixelTime(t); } 
     55  Bool_t FillRChargevsTime(Float_t rq, Int_t t) { return fHist->FillBlindPixelChargevsN(rq,t); }   
    5656 
    5757  Bool_t IsValid()                 { return fLambda > 0. || fErrLambda > 0.; }
    5858 
    59   Bool_t FitQ();
    60   Bool_t FitT();
     59  Bool_t FitCharge();
     60  Bool_t FitTime();
    6161 
    6262  virtual void Draw(Option_t *opt="")         { fHist->Draw(opt); }
  • trunk/MagicSoft/Mars/manalysis/MCalibrationCalc.cc

    r2599 r2603  
    5353//               Every MCalibrationPix holds a histogram class,             //
    5454//               MHCalibrationPixel which itself hold histograms of type:   //
    55 //               HQ(npix) (distribution of summed FADC time slice entries)  //
    56 //               HT(npix) (distribution of position of maximum)             //
    57 //               HQvsN(npix) (distribution of charges vs. event number.     //
    58 //                                                                          //
    59 // PostProcess:  All histograms HQ(npix) are fitted to a Gaussian           //
    60 //               All histograms HT(npix) are fitted to a Gaussian           //
    61 //               The histogram HBPQ (blind pixel) is fitted to a single     //
     55//               HCharge(npix) (distribution of summed FADC time slice entries)  //
     56//               HTime(npix) (distribution of position of maximum)             //
     57//               HChargevsN(npix) (distribution of charges vs. event number.     //
     58//                                                                          //
     59// PostProcess:  All histograms HCharge(npix) are fitted to a Gaussian           //
     60//               All histograms HTime(npix) are fitted to a Gaussian           //
     61//               The histogram HBlindPixelCharge (blind pixel) is fitted to a single     //
    6262//                   PhE fit                                                //
    63 //               The histogram HBPT (blind pixel) is fitted to a Gaussian   //
     63//               The histogram HBlindPixelTime (blind pixel) is fitted to a Gaussian   //
    6464//               The histograms of the PIN Diode are fitted to Gaussians    //
    6565//                                                                          //
    6666//               Fits can be excluded via the commands:                     //
    67 //               MalibrationCam::SetSkipTFits()   (skip all time fits)      //
    68 //               MalibrationCam::SetSkipBPFits()  (skip all blind pixel fits) //
    69 //               MalibrationCam::SetSkipPDFits()  (skip all PIN Diode fits) //
     67//               MalibrationCam::SetSkipTimeFits()   (skip all time fits)      //
     68//               MalibrationCam::SetSkipBlindPixelFits()  (skip all blind pixel fits) //
     69//               MalibrationCam::SetSkipPinDiodeFits()  (skip all PIN Diode fits) //
    7070//                                                                          //
    7171//////////////////////////////////////////////////////////////////////////////
     
    9494
    9595#include "MTime.h"
     96#include "TMath.h"
    9697
    9798ClassImp(MCalibrationCalc);
     
    115116    AddToBranchList("MRawEvtData.fLoGainFadcSamples");
    116117
    117     SETBIT(fFlags, kUseTFits);
    118     SETBIT(fFlags, kUseBPFit);
    119     SETBIT(fFlags, kUsePDFit);
     118    SETBIT(fFlags, kUseTimeFits);
     119    SETBIT(fFlags, kUseBlindPixelFit);
     120    SETBIT(fFlags, kUsePinDiodeFit);
    120121}
    121122
     
    219220      {
    220221        MCalibrationPix &pix = (*fCalibrations)[i];
    221         pix.ChangePixId(i);
     222        pix.DefinePixId(i);
    222223      }
    223224   
     
    244245    MRawEvtPixelIter pixel(fRawEvt);
    245246
     247    // Create a first loop to sort out the cosmics ...
     248    //
     249    // This is a very primitive check for the number of cosmicpixs
     250    // The cut will be applied in the fit, but for the blind pixel,
     251    // we need to remove this event
     252    //
     253    // FIXME: In the future need a much more sophisticated one!!!
     254    //
     255   
    246256    while (pixel.Next())
    247257      {
    248258
     259        const Int_t pixid = pixel.GetPixelId();
     260
     261        Int_t sum = pixel.GetSumHiGainSamples();
     262
     263        MPedestalPix    &ped = (*fPedestals)[pixid];
     264 
     265        Float_t pedes  = ped.GetPedestal();
     266        Float_t pedrms = ped.GetPedestalRms();
     267       
     268        if ((float)sum < (pedes*fNumHiGainSamples)+(1.5*pedrms) )
     269           cosmicpix++;
     270     }
     271
     272
     273    if (cosmicpix > 50.)
     274      {
     275        fCosmics++;
     276        return kTRUE;
     277      }
     278
     279    pixel.Reset();
     280
     281    while (pixel.Next())
     282      {
     283
    249284        UShort_t sat = 0;
     285        UShort_t lowgainoverflow = 0;
     286
    250287        const Int_t pixid = pixel.GetPixelId();
    251288
     
    269306            //         performed in the data?!?
    270307            //
    271             sum = (max > gkSaturationLimit              // overflow of LoGain ??? -> GimmeABreak!!!
    272                    ? fHistOverFlow++, gkLoGainOverFlow  // OUCH (Florian was maybe right)
    273                    : sum  );                            // OUFF (Florian was wrong) !!
    274             //                   : sum*gkConversionHiLo    );          // OUFF (Florian was wrong) !!
    275 
    276             if (fHistOverFlow)
    277               *fLog << err << dbginf << "Warning: Saturation of LoGain reached! "
    278                     << err << dbginf << "sum = " << sum << endl;
    279 
     308            sum = (max > gkSaturationLimit                // overflow of LoGain ??? -> GimmeABreak!!!
     309                   ? lowgainoverflow++, gkLoGainOverFlow  // OUCH (Florian was maybe right)
     310                   : sum*gkConversionHiLo    );          // OUFF (Florian was wrong) !!
     311                   //                   : sum  );
     312
     313            if (lowgainoverflow)
     314                {
     315                  *fLog << err << dbginf << "Warning: Saturation of LoGain reached in pixel: " << pixid << " "
     316                        << "   sum = " << sum << endl;
     317                    fHistOverFlow++;
     318                }
    280319          }
    281320
     
    293332        pedrms *= (sat ? fNumLoGainSamples : fNumHiGainSamples );
    294333
    295         //
    296         // This is a very primitive check for the number of cosmicpixs
    297         // The cut will be applied in the fit, but for the blind pixel,
    298         // we need to remove this event
    299         //
    300         // FIXME: In the future need a much more sophisticated one!!!
    301         //
    302 
    303         if ((float)sum < pedes+4.*pedrms)
    304            cosmicpix++;
    305 
    306334        Float_t rsum      = (float)sum - pedes;
    307335       
     
    315343            //        the rest of the pixels (which is the case right now)
    316344            //
    317             if (cosmicpix < 100.)
    318               {
    319                 if (!blindpixel.FillQ(sum))
    320                   *fLog << warn <<
    321                     "Overflow or Underflow occurred filling Blind Pixel sum = " << sum << endl;
    322 
    323                 if (!blindpixel.FillT((int)mid))
    324                   *fLog << warn <<
    325                     "Overflow or Underflow occurred filling Blind Pixel time = " << (int)mid << endl;
    326 
    327                 if (!blindpixel.FillRQvsT(rsum,fEvents))
    328                   *fLog << warn <<
    329                     "Overflow or Underflow occurred filling Blind Pixel eventnr = " << fEvents << endl;
    330               }
     345            if (!blindpixel.FillCharge(sum))
     346              *fLog << warn <<
     347                "Overflow or Underflow occurred filling Blind Pixel sum = " << sum << endl;
     348
     349            if (!blindpixel.FillTime((int)mid))
     350              *fLog << warn <<
     351                "Overflow or Underflow occurred filling Blind Pixel time = " << (int)mid << endl;
     352           
     353            if (!blindpixel.FillRChargevsTime(rsum,fEvents))
     354              *fLog << warn <<
     355                "Overflow or Underflow occurred filling Blind Pixel eventnr = " << fEvents << endl;
    331356           
    332357          case gkCalibrationPINDiodeId:
    333             if (!pindiode.FillQ(sum))
     358            if (!pindiode.FillCharge(sum))
    334359              *fLog << warn <<
    335                 "Overflow or Underflow occurred filling HQ: means = " << sum << endl;
    336             if (!pindiode.FillT((int)mid))
     360                "Overflow or Underflow occurred filling HCharge: means = " << sum << endl;
     361            if (!pindiode.FillTime((int)mid))
    337362              *fLog << warn <<
    338                 "Overflow or Underflow occurred filling HT: time = " << (int)mid << endl;
    339             if (!pindiode.FillRQvsT(rsum,fEvents))
     363                "Overflow or Underflow occurred filling HTime: time = " << (int)mid << endl;
     364            if (!pindiode.FillRChargevsTime(rsum,fEvents))
    340365              *fLog << warn <<
    341                 "Overflow or Underflow occurred filling HQvsN: eventnr = " << fEvents << endl;
     366                "Overflow or Underflow occurred filling HChargevsN: eventnr = " << fEvents << endl;
    342367
    343368          default:
    344369
    345             if (!pix.FillQ(sum))
    346               *fLog << warn << "Could not fill Q of pixel: " << pixid
     370            if (!pix.FillCharge(sum))
     371              *fLog << warn << "Could not fill Charge of pixel: " << pixid
    347372                    << " signal = " << sum << endl;
    348373
     
    350375            // Fill the reduced charge into the control histo for better visibility
    351376            //
    352             if (!pix.FillRQvsT(rsum,fEvents))
    353               *fLog << warn << "Could not fill red. Q vs. EvtNr of pixel: " << pixid
     377            if (!pix.FillRChargevsTime(rsum,fEvents))
     378              *fLog << warn << "Could not fill red. Charge vs. EvtNr of pixel: " << pixid
    354379                    << " signal = " << rsum  << " event Nr: " << fEvents << endl;
    355380
    356381
    357             if (!pix.FillT((int)mid))
    358             *fLog << warn << "Could not fill T of pixel: " << pixid << " time = " << (int)mid << endl;
     382            if (!pix.FillTime((int)mid))
     383            *fLog << warn << "Could not fill Time of pixel: " << pixid << " time = " << (int)mid << endl;
    359384
    360385
     
    362387
    363388      } /* while (pixel.Next()) */
    364 
    365     if (cosmicpix > 300.)
    366         fCosmics++;
    367389
    368390    return kTRUE;
     
    389411  // Fit the blind pixel
    390412  //
    391   if (TESTBIT(fFlags,kUseBPFit))
     413  if (TESTBIT(fFlags,kUseBlindPixelFit))
    392414    {
    393       if (!blindpixel.FitQ())
     415      if (blindpixel.FitCharge())
     416        if (!fCalibrations->CalcNrPhotInnerPixel())
     417          *fLog << err << dbginf << "Could not calculate Number of photons from the blind pixel " << endl;
     418      else
    394419        *fLog << err << dbginf << "Could not fit the blind pixel " << endl;
    395420     
    396       if (!blindpixel.FitT())
     421      if (!blindpixel.FitTime())
    397422        *fLog << warn << "Could not the Times of the blind pixel " << endl;
    398423
     
    412437
    413438      const Float_t ped    = (*fPedestals)[pixid].GetPedestal() * fNumHiGainSamples;
    414       const Float_t prms   = (*fPedestals)[pixid].GetPedestalRms() * fNumHiGainSamples;
     439      const Float_t prms   = (*fPedestals)[pixid].GetPedestalRms() * TMath::Sqrt((float)fNumHiGainSamples);
    415440
    416441      pix.SetPedestal(ped,prms);
    417442
    418       if (TESTBIT(fFlags,kUseTFits))
    419         pix.FitT();
     443      if (TESTBIT(fFlags,kUseTimeFits))
     444        pix.FitTime();
    420445     
    421       pix.FitQ();
     446      pix.FitCharge();
    422447    }
    423448
  • trunk/MagicSoft/Mars/manalysis/MCalibrationCalc.h

    r2581 r2603  
    4747  enum
    4848    {
    49       kUseTFits = 1,
    50       kUseBPFit = 2,
    51       kUsePDFit = 3
     49      kUseTimeFits = 1,
     50      kUseBlindPixelFit = 2,
     51      kUsePinDiodeFit = 3
    5252    };
    5353
     
    6969  MCalibrationCalc(const char *name=NULL, const char *title=NULL);
    7070
    71   void SetSkipTFits(Bool_t b=kTRUE)
    72       {b ? CLRBIT(fFlags, kUseTFits) : SETBIT(fFlags, kUseTFits);}
    73   void SetSkipBPFit(Bool_t b=kTRUE)
    74       {b ? CLRBIT(fFlags, kUseBPFit) : SETBIT(fFlags, kUseBPFit);}
    75   void SetSkipPDFit(Bool_t b=kTRUE)
    76       {b ? CLRBIT(fFlags, kUsePDFit) : SETBIT(fFlags, kUsePDFit);}
     71  void SetSkipTimeFits(Bool_t b=kTRUE)
     72      {b ? CLRBIT(fFlags, kUseTimeFits) : SETBIT(fFlags, kUseTimeFits);}
     73  void SetSkipBlindPixelFit(Bool_t b=kTRUE)
     74      {b ? CLRBIT(fFlags, kUseBlindPixelFit) : SETBIT(fFlags, kUseBlindPixelFit);}
     75  void SetSkipPinDiodeFit(Bool_t b=kTRUE)
     76      {b ? CLRBIT(fFlags, kUsePinDiodeFit) : SETBIT(fFlags, kUsePinDiodeFit);}
    7777
    7878  void SetPulserColor(PulserColor_t color)    { fColor = color; }
  • trunk/MagicSoft/Mars/manalysis/MCalibrationCam.cc

    r2599 r2603  
    5656//
    5757MCalibrationCam::MCalibrationCam(const char *name, const char *title)
    58     : fMeanNrPhotAvailable(kFALSE)
     58    : fMeanNrPhotAvailable(kFALSE),
     59      fMeanNrPhotInnerPix(-1.)
    5960{
    6061    fName  = name  ? name  : "MCalibrationCam";
     
    128129    return NULL;
    129130 
    130 //    return (*this)[idx];
    131131  return (MCalibrationPix*)fPixels->At(idx);
    132132}
     
    148148    return kFALSE;
    149149
    150   return (&(*this)[idx]);
     150  return kTRUE;
    151151}
    152152
    153153Bool_t MCalibrationCam::IsPixelFitted(Int_t idx) const
    154154{
    155   return ((*this)[idx].GetRQ() > 0. && (*this)[idx].GetErrRQ() > 0.);
     155  return ((*this)[idx].GetRCharge() > 0. && (*this)[idx].GetErrRCharge() > 0.);
    156156}
    157157
     
    170170// The number of succesful fits is returned
    171171//
    172 UShort_t MCalibrationCam::FitQ(Int_t i)
     172UShort_t MCalibrationCam::FitCharge(Int_t i)
    173173{
    174174
     
    189189      while ((pix=(MCalibrationPix*)Next()))
    190190        {
    191           if (pix->FitQ())
     191          if (pix->FitCharge())
    192192            nsuccess++;
    193193        }
     
    195195  else                  // fit only the pixel with index i
    196196    {
    197       if((*this)[i].FitQ())
     197      if((*this)[i].FitCharge())
    198198        nsuccess++;
    199199    }
     
    209209// The number of succesful fits is returned
    210210//
    211 UShort_t MCalibrationCam::FitAllQ()
     211UShort_t MCalibrationCam::FitAllCharge()
    212212{
    213213
     
    222222  while ((pix=(MCalibrationPix*)Next()))
    223223    {
    224       if (pix->FitQ())
    225         nsuccess++;
    226     }
    227  
    228   if (fBlindPixel->FitQ())
    229         nsuccess++;
    230 
    231   if (fPINDiode->FitQ())
     224      if (pix->FitCharge())
     225        nsuccess++;
     226    }
     227 
     228  if (fBlindPixel->FitCharge())
     229        nsuccess++;
     230
     231  if (fPINDiode->FitCharge())
    232232        nsuccess++;
    233233
     
    245245// The number of succesful fits is returned
    246246//
    247 UShort_t MCalibrationCam::FitT(Int_t i)
     247UShort_t MCalibrationCam::FitTime(Int_t i)
    248248{
    249249
     
    264264      while ((pix=(MCalibrationPix*)Next()))
    265265        {
    266          if (pix->FitT())
     266         if (pix->FitTime())
    267267            nsuccess++;
    268268        }
     
    270270  else                     // fit only the pixel with index i
    271271    {
    272       if((*this)[i].FitT())
     272      if((*this)[i].FitTime())
    273273        nsuccess++;
    274274    }
     
    285285// The number of succesful fits is returned
    286286//
    287 UShort_t MCalibrationCam::FitAllT()
     287UShort_t MCalibrationCam::FitAllTime()
    288288{
    289289
     
    298298  while ((pix=(MCalibrationPix*)Next()))
    299299    {
    300       if (pix->FitT())
    301         nsuccess++;
    302     }
    303  
    304   if (fBlindPixel->FitT())
    305         nsuccess++;
    306 
    307   if (fPINDiode->FitT())
     300      if (pix->FitTime())
     301        nsuccess++;
     302    }
     303 
     304  if (fBlindPixel->FitTime())
     305        nsuccess++;
     306
     307  if (fPINDiode->FitTime())
    308308       nsuccess++;
    309309
     
    364364    {
    365365
    366         *fLog << id << ": " << pix->GetPed() << " " << pix->GetPedRms() << " Charges: " ;
    367         *fLog << pix->GetQ() << " " << pix->GetRQ() << endl;
     366        *fLog << id << " Pedestals: " << pix->GetPed() << " +- " << pix->GetPedRms() << " Charge: "
     367              << pix->GetCharge() << " Reduced Charge: " << pix->GetRCharge() << " +- "
     368              << pix->GetSigmaCharge() << " Reduced Sigma: " << pix->GetRSigma() << endl;
    368369
    369370        id++;
     
    378379    {
    379380    case 0:
    380        val = (*this)[idx].GetQ();
     381       val = (*this)[idx].GetCharge();
    381382        break;
    382383    case 1:
    383        val = (*this)[idx].GetErrQ();
     384       val = (*this)[idx].GetErrCharge();
    384385        break;
    385386    case 2:
    386        val = (*this)[idx].GetSigmaQ();
     387       val = (*this)[idx].GetSigmaCharge();
    387388        break;
    388389    case 3:
    389        val = (*this)[idx].GetErrSigmaQ();
     390       val = (*this)[idx].GetErrSigmaCharge();
    390391        break;
    391392    case 4:
    392        val = (*this)[idx].GetQProb();
     393       val = (*this)[idx].GetChargeProb();
    393394        break;
    394395    case 5:
    395        val = (*this)[idx].GetT();
     396       val = (*this)[idx].GetTime();
    396397        break;
    397398    case 6:
    398        val = (*this)[idx].GetSigmaT();
     399       val = (*this)[idx].GetSigmaTime();
    399400        break;
    400401    case 7:
    401        val = (*this)[idx].GetTProb();
     402       val = (*this)[idx].GetTimeProb();
    402403        break;
    403404    case 8:
     
    408409        break;
    409410    case 10:
    410       val = (*this)[idx].GetRQ();
    411         break;
     411      val = (*this)[idx].GetRCharge();
     412      break;
    412413    case 11:
    413       val = (*this)[idx].GetErrRQ();
     414      val = (*this)[idx].GetRSigma();
    414415      break;
    415416    case 12:
     
    419420      val = (*this)[idx].GetConversionFFactorMethod();
    420421      break;
     422    case 14:
     423      val = (double)fMeanNrPhotInnerPix;
     424      break;
     425    case 15:
     426      if ((fMeanNrPhotInnerPix > 0. ) && ((*this)[idx].GetRCharge() > 100.))
     427        val = fMeanNrPhotInnerPix / (*this)[idx].GetRCharge();
     428      else
     429        val = -1.;
     430      break;
    421431    default:
    422432      return kFALSE;
     
    443453    {
    444454    case kECGreen:
    445       fMeanNrPhotInnerPix = mean /
    446                            (gkCalibrationBlindPixelQEGreen
    447                             *TMath::Power(10,gkCalibrationBlindPixelAttGreen)
    448                             *gkCalibrationBlindPixelArea);
     455      fMeanNrPhotInnerPix = (mean / gkCalibrationBlindPixelQEGreen) // real photons
     456                            *TMath::Power(10,gkCalibrationBlindPixelAttGreen) // correct for absorption
     457                            / gkCalibrationBlindPixelArea;          // correct for area
    449458      break;
    450459    case kECBlue:
    451       fMeanNrPhotInnerPix = mean /
    452                            (gkCalibrationBlindPixelQEBlue
     460      fMeanNrPhotInnerPix = (mean / gkCalibrationBlindPixelQEBlue )
    453461                            *TMath::Power(10,gkCalibrationBlindPixelAttBlue)
    454                             *gkCalibrationBlindPixelArea);
     462                            / gkCalibrationBlindPixelArea;
    455463      break;
    456464    case kECUV:
    457       fMeanNrPhotInnerPix = mean /
    458                            (gkCalibrationBlindPixelQEUV
     465      fMeanNrPhotInnerPix = (mean / gkCalibrationBlindPixelQEUV )
    459466                            *TMath::Power(10,gkCalibrationBlindPixelAttUV)
    460                             *gkCalibrationBlindPixelArea);
     467                            / gkCalibrationBlindPixelArea;
    461468      break;
    462469    }
     
    478485      return kFALSE;
    479486
    480   mean = fMeanNrPhotInnerPix / (*this)[ipx].GetRQ();
     487  mean = fMeanNrPhotInnerPix / (*this)[ipx].GetRCharge();
    481488
    482489  //
  • trunk/MagicSoft/Mars/manalysis/MCalibrationCam.h

    r2599 r2603  
    3333 
    3434  Int_t fNumPixels;
    35   TClonesArray *fPixels;             // FIXME: Change TClonesArray away from a pointer?
     35  TClonesArray *fPixels;             //! FIXME: Change TClonesArray away from a pointer?
    3636 
    37   MCalibrationBlindPix *fBlindPixel; // containing blind pixel data with fitresults
    38   MCalibrationPINDiode *fPINDiode;   // containing PIN Diode data with fit results   
     37  MCalibrationBlindPix *fBlindPixel; //! containing blind pixel data with fitresults
     38  MCalibrationPINDiode *fPINDiode;   //! containing PIN Diode data with fit results   
    3939
    4040  Float_t fMeanNrPhotInnerPix;       // The mean number of photons in an inner pixel 
     
    4242  Bool_t  fMeanNrPhotAvailable;
    4343
    44   Bool_t CalcNrPhotInnerPixel();
    45  
    4644public:
    4745 
     
    7068  MCalibrationPix &operator[](Int_t i) const;
    7169 
    72   UShort_t FitQ(Int_t i=-1);
    73   UShort_t FitAllQ();
    74   UShort_t FitT(Int_t i=-1);
    75   UShort_t FitAllT();
     70  UShort_t FitCharge(Int_t i=-1);
     71  UShort_t FitAllCharge();
     72  UShort_t FitTime(Int_t i=-1);
     73  UShort_t FitAllTime();
    7674 
    7775  Bool_t CheckBounds(Int_t i) const;
     
    8179  void CutEdges();
    8280 
     81  Bool_t CalcNrPhotInnerPixel();
    8382  Bool_t GetPixelContent(Double_t &val, Int_t idx, const MGeomCam &cam, Int_t type=0) const;
    8483  void DrawPixelContent(Int_t num) const;   
  • trunk/MagicSoft/Mars/manalysis/MCalibrationConfig.h

    r2525 r2603  
    1515
    1616// The conversion factor between High Gain and Low Gain
    17 const UShort_t gkConversionHiLo = 10;
     17const UShort_t gkConversionHiLo = 10.;
    1818
    1919// The penalty constant to produce overflow in the histogram
     
    2626
    2727// Average QE of Blind Pixel (three colours)
    28 const Float_t gkCalibrationBlindPixelQEGreen = 15.4;
    29 const Float_t gkCalibrationBlindPixelQEBlue  = 22.6;
    30 const Float_t gkCalibrationBlindPixelQEUV    = 24.7;
     28const Float_t gkCalibrationBlindPixelQEGreen = 0.154;
     29const Float_t gkCalibrationBlindPixelQEBlue  = 0.226;
     30const Float_t gkCalibrationBlindPixelQEUV    = 0.247;
    3131
    3232// Attenuation factor Blind Pixel (three colours)
  • trunk/MagicSoft/Mars/manalysis/MCalibrationPINDiode.cc

    r2525 r2603  
    4343//
    4444MCalibrationPINDiode::MCalibrationPINDiode(const char *name, const char *title)
    45     : fHist(NULL)
     45  : fHist(NULL),
     46    fCharge(-1.),
     47    fErrCharge(-1.),
     48    fPed(-1.),
     49    fPedRms(-1.),
     50    fSigmaCharge(-1.),
     51    fErrSigmaCharge(-1.),
     52    fTime(-1.),
     53    fErrTime(-1.),
     54    fRCharge(-1.),
     55    fErrRCharge(-1.)
    4656{
    4757
     
    5060
    5161  fHist = new MHCalibrationPINDiode();
    52 
    53   fQ   = fErrQ     = 0.;
    54   fPed = fPedRms   = 0.;
    55   fT   = fErrT  = 0.;
    56   fRQ  = fErrRQ = 0.;
    57   fSigmaQ = fErrSigmaQ = 0.;
    5862
    5963}
     
    7377}
    7478
    75 Bool_t MCalibrationPINDiode::FitQ()
     79Bool_t MCalibrationPINDiode::FitCharge()
    7680{
    77   if(!fHist->FitQ())
     81  if(!fHist->FitCharge())
    7882    return kFALSE;
    7983
    80   fQ         = fHist->GetQMean();
    81   fErrQ      = fHist->GetQMeanErr();
    82   fSigmaQ    = fHist->GetQSigma();
    83   fErrSigmaQ = fHist->GetQSigmaErr();
     84  fCharge         = fHist->GetChargeMean();
     85  fErrCharge      = fHist->GetChargeMeanErr();
     86  fSigmaCharge    = fHist->GetChargeSigma();
     87  fErrSigmaCharge = fHist->GetChargeSigmaErr();
    8488
    8589  return kTRUE;
     
    8791}
    8892
    89 Bool_t MCalibrationPINDiode::FitT()
     93Bool_t MCalibrationPINDiode::FitTime()
    9094{
    9195
    92   if(!fHist->FitT())
     96  if(!fHist->FitTime())
    9397    return kFALSE;
    9498
    95   fT = fHist->GetT();
    96   fErrT = fHist->GetErrT();
     99  fTime    = fHist->GetTime();
     100  fErrTime = fHist->GetErrTime();
    97101 
    98102  return kTRUE;
  • trunk/MagicSoft/Mars/manalysis/MCalibrationPINDiode.h

    r2525 r2603  
    1212private:
    1313
    14   Float_t fQ;                // The mean charge after the fit
    15   Float_t fErrQ;             // The error of mean charge after the fit
     14  MHCalibrationPINDiode *fHist; // Pointer to the histograms performing the fits, etc. 
     15 
     16  Float_t fCharge;                // The mean charge after the fit
     17  Float_t fErrCharge;             // The error of mean charge after the fit
    1618  Float_t fPed;              // The mean pedestal (from MPedestalPix)
    1719  Float_t fPedRms;           // The pedestal  RMS (from MPedestalPix)
    18   Float_t fSigmaQ;           // The sigma of the mean charge after the fit
    19   Float_t fErrSigmaQ;        // The error of the sigma of the mean charge after the fit
    20   Float_t fT;                // The mean arrival time after the fit 
    21   Float_t fErrT;             // The error of the mean arrival time after the fit
     20  Float_t fSigmaCharge;           // The sigma of the mean charge after the fit
     21  Float_t fErrSigmaCharge;        // The error of the sigma of the mean charge after the fit
     22  Float_t fTime;                // The mean arrival time after the fit 
     23  Float_t fErrTime;             // The error of the mean arrival time after the fit
    2224 
    23   Float_t fRQ;               // The reduced mean charge after the fit
    24   Float_t fErrRQ;            // The error of the reduced mean charge after the fit 
    25  
    26   MHCalibrationPINDiode *fHist; // Pointer to the histograms performing the fits, etc. 
     25  Float_t fRCharge;               // The reduced mean charge after the fit
     26  Float_t fErrRCharge;            // The error of the reduced mean charge after the fit 
    2727 
    2828public:
     
    3636  void SetPedRms(Float_t pedrms)    { fPedRms   = pedrms; }
    3737
    38   Bool_t IsValid() const { return fRQ >=0 || fErrRQ >= 0; }
     38  Bool_t IsValid() const { return fRCharge >=0 || fErrRCharge >= 0; }
    3939
    40   Bool_t FillQ(Int_t q)            { return fHist->FillQ(q); }
    41   Bool_t FillT(Int_t t)            { return fHist->FillT(t); } 
    42   Bool_t FillRQvsT(Float_t rq, Int_t t) { return fHist->FillQvsN(rq,t); }   
     40  Bool_t FillCharge(Int_t q)            { return fHist->FillCharge(q); }
     41  Bool_t FillTime(Int_t t)            { return fHist->FillTime(t); } 
     42  Bool_t FillRChargevsTime(Float_t rq, Int_t t) { return fHist->FillChargevsN(rq,t); }   
    4343 
    44   Bool_t FitQ();
    45   Bool_t FitT();
     44  Bool_t FitCharge();
     45  Bool_t FitTime();
    4646 
    4747  MHCalibrationPINDiode *GetHist()  const  { return fHist;  }
  • trunk/MagicSoft/Mars/manalysis/MCalibrationPix.cc

    r2599 r2603  
    2525/////////////////////////////////////////////////////////////////////////////
    2626//                                                                         //
    27 // MCalibrationPix                                                            //
     27// MCalibrationPix                                                         //
    2828//                                                                         //
    2929// This is the storage container to hold informations about the pedestal   //
     
    4646MCalibrationPix::MCalibrationPix(const char *name, const char *title)
    4747    : fPixId(-1),
    48       fQ(-1.),
    49       fErrQ(-1.),
    50       fSigmaQ(-1.),
    51       fErrSigmaQ(-1.),
    52       fQProb(-1.),
     48      fCharge(-1.),
     49      fErrCharge(-1.),
     50      fSigmaCharge(-1.),
     51      fErrSigmaCharge(-1.),
     52      fChargeProb(-1.),
    5353      fPed(-1.),
    5454      fPedRms(-1.),
    55       fT(-1.),
    56       fSigmaT(-1.),
    57       fTProb(-1.),
    58       fRQ(-1.),
    59       fErrRQ(-1.),
     55      fTime(-1.),
     56      fSigmaTime(-1.),
     57      fTimeProb(-1.),
     58      fRCharge(-1.),
     59      fErrRCharge(-1.),
     60      fRSigma(-1.),
    6061      fFactor(1.3),
    6162      fPheFFactorMethod(-1.),
     
    6667  fTitle = title ? title : "Container of the MHCalibrationPixels and the fit results";
    6768
    68   fHist = new MHCalibrationPixel("MHCalibrationPixel","Calibration Histograms Pixel");
     69  fHist = new MHCalibrationPixel("MHCalibrationPixel","Calibration Histograms Pixel ");
     70
    6971}
    7072
     
    7577
    7678
    77 void MCalibrationPix::ChangePixId(Int_t i)
     79void MCalibrationPix::DefinePixId(Int_t i)
    7880{
    7981 
     
    9395}
    9496
    95 Bool_t MCalibrationPix::FitQ()
     97Bool_t MCalibrationPix::FitCharge()
    9698{
    9799
    98   if (fHist->IsFitted())
     100  if (fHist->IsFitOK())
    99101    return kTRUE;
    100102
    101103  if (fPed && fPedRms)
    102     fHist->SetLowerFitRange(fPed + 2.0*fPedRms);
     104    fHist->SetLowerFitRange(fPed + 1.5*fPedRms);
    103105  else
    104106    *fLog << warn << "Cannot set lower fit range to suppress cosmics: Pedestals not available" << endl;
    105107
    106   if(!fHist->FitQ())
     108  if(!fHist->FitCharge())
    107109    {
    108110      *fLog << warn << "Could not fit charges of pixel " << fPixId << endl;
    109       fHist->PrintQFitResult();
     111      fHist->PrintChargeFitResult();
    110112      return kFALSE;
    111113    }
    112114 
    113   fQ         = fHist->GetQMean();
    114   fErrQ      = fHist->GetQMeanErr();
    115   fSigmaQ    = fHist->GetQSigma();
    116   fErrSigmaQ = fHist->GetQSigmaErr();
    117   fQProb     = fHist->GetQProb();
     115  fCharge         = fHist->GetChargeMean();
     116  fErrCharge      = fHist->GetChargeMeanErr();
     117  fSigmaCharge    = fHist->GetChargeSigma();
     118  fErrSigmaCharge = fHist->GetChargeSigmaErr();
     119  fChargeProb     = fHist->GetChargeProb();
    118120
    119121  if ((fPed > 0.)  && (fPedRms > 0.))
    120122    {
    121123     
    122     fRQ      = fQ - fPed;
    123     fErrRQ   = TMath::Sqrt(fErrQ*fErrQ + fPedRms*fPedRms);
     124    fRCharge      = fCharge - fPed;
     125    fErrRCharge   = TMath::Sqrt(fErrCharge*fErrCharge + fPedRms*fPedRms);
    124126
    125     fPheFFactorMethod =
    126       fFactor
    127       * fRQ * fRQ
    128       / (fSigmaQ * fSigmaQ - fPedRms*fPedRms) ;
     127    fRSigma       = (fSigmaCharge*fSigmaCharge) - (fPedRms*fPedRms);
    129128
    130     fConversionFFactorMethod = fPheFFactorMethod / fRQ ;
    131    
     129    if (fRSigma > 0. )
     130      {
     131       fPheFFactorMethod =  fFactor * fRCharge*fRCharge / fRSigma;
     132       fConversionFFactorMethod = fPheFFactorMethod / fRCharge ;
     133      }
     134    else
     135      {
     136        *fLog << warn << "Cannot apply F-Factor method: Reduced Sigmas are smaller than 0 in pixel: "
     137              << fPixId << endl;
     138      }
     139
    132140    }
    133141
     
    142150  fPedRms = pedrms;
    143151 
    144   if ((!fRQ) && fQ)
    145     fRQ = fQ - fPed;
    146   if ((!fErrRQ) && fErrQ)
    147     fErrRQ   = TMath::Sqrt(fErrQ*fErrQ + fPedRms*fPedRms);
     152  if ((fRCharge == -1.) && (fCharge > 0.))
     153    fRCharge = fCharge - fPed;
     154  if ((fErrRCharge == -1.) && (fErrCharge > 0.))
     155    fErrRCharge   = TMath::Sqrt(fErrCharge*fErrCharge + fPedRms*fPedRms);
    148156
    149157}
    150158
    151 Bool_t MCalibrationPix::FitT()
     159Bool_t MCalibrationPix::FitTime()
    152160{
    153161
    154   if(!fHist->FitT())
     162  if(!fHist->FitTime())
    155163    {
    156164      *fLog << warn << "Could not fit times of pixel " << fPixId << endl;
    157       fHist->PrintTFitResult();
     165      fHist->PrintTimeFitResult();
    158166      return kFALSE;
    159167    }
    160168
    161   fT       = fHist->GetTMean();
    162   fSigmaT  = fHist->GetTSigma();
    163   fTProb   = fHist->GetTProb();
     169  fTime       = fHist->GetTimeMean();
     170  fSigmaTime  = fHist->GetTimeSigma();
     171  fTimeProb   = fHist->GetTimeProb();
    164172
    165173  return kTRUE;
    166  
    167174}
    168175
  • trunk/MagicSoft/Mars/manalysis/MCalibrationPix.h

    r2599 r2603  
    1414  Int_t   fPixId;           // the pixel Id
    1515 
    16   Float_t fQ;                // The mean charge after the fit
    17   Float_t fErrQ;             // The error of mean charge after the fit
    18   Float_t fSigmaQ;           // The sigma of the mean charge after the fit
    19   Float_t fErrSigmaQ;        // The error of the sigma of the mean charge after the fit
    20   Float_t fQProb;            // The probability of the fit function
     16  Float_t fCharge;              // The mean charge after the fit
     17  Float_t fErrCharge;           // The error of mean charge after the fit
     18  Float_t fSigmaCharge;         // The sigma of the mean charge after the fit
     19  Float_t fErrSigmaCharge;      // The error of the sigma of the mean charge after the fit
     20  Float_t fChargeProb;          // The probability of the fit function
    2121
    22   Float_t fPed;              // The mean pedestal (from MPedestalPix)
    23   Float_t fPedRms;           // The pedestal  RMS (from MPedestalPix)
     22  Float_t fPed;                 // The mean pedestal (from MPedestalPix)
     23  Float_t fPedRms;              // The pedestal  RMS (from MPedestalPix)
    2424
    25   Float_t fT;                // The mean arrival time after the fit 
    26   Float_t fSigmaT;           // The error of the mean arrival time after the fit
    27   Float_t fTProb;            // The probability of the fit function
     25  Float_t fTime;                // The mean arrival time after the fit 
     26  Float_t fSigmaTime;           // The error of the mean arrival time after the fit
     27  Float_t fTimeProb;            // The probability of the fit function
    2828 
    29   Float_t fRQ;               // The reduced mean charge after the fit
    30   Float_t fErrRQ;            // The error of the reduced mean charge after the fit 
     29  Float_t fRCharge;             // The reduced mean charge after the fit
     30  Float_t fErrRCharge;          // The error of the reduced mean charge after the fit 
     31  Float_t fRSigma;              // The reduced squares of sigmas after the fit
     32 
     33  Float_t fFactor;                  // The laboratory F-factor
     34  Float_t fPheFFactorMethod;        // The number of Phe's calculated after the F-factor method
     35  Float_t fConversionFFactorMethod; // The conversion factor to Phe's calculated after the F-factor method
    3136
    32   Float_t fFactor;            // The F-factor
    33   Float_t fPheFFactorMethod;  // The number of Phe's calculated after the F-factor method
    34   Float_t fConversionFFactorMethod; // The conversion factor to Phe's calculated after the F-factor method
    35    
    36   MHCalibrationPixel *fHist; // Pointer to the histograms performing the fits, etc. 
     37  MHCalibrationPixel *fHist;    //! Pointer to the histograms performing the fits, etc. 
    3738 
    3839public:
     
    4344  void Clear(Option_t *o="");
    4445
    45   Float_t GetQ()     const    { return fQ;     }
    46   Float_t GetRQ()    const    { return fRQ;    }
     46  Float_t GetCharge()         const    { return fCharge;         }
     47  Float_t GetRCharge()        const    { return fRCharge;        }
     48  Float_t GetRSigma()         const    { return fRSigma;         }
    4749   
    48   Float_t GetErrQ()  const    { return fErrQ;  }
    49   Float_t GetErrRQ() const    { return fErrRQ; }   
    50   Float_t GetQProb() const    { return fQProb;    }   
     50  Float_t GetErrCharge()      const    { return fErrCharge;      }
     51  Float_t GetErrRCharge()     const    { return fErrRCharge;    }   
     52  Float_t GetChargeProb()     const    { return fChargeProb;     }   
    5153 
    52   Float_t GetSigmaQ()    const   { return fSigmaQ;    }
    53   Float_t GetErrSigmaQ() const   { return fErrSigmaQ; }
    54   Float_t GetT()         const   { return fT;         }
    55   Float_t GetSigmaT()    const   { return fSigmaT;    }
    56   Float_t GetTProb()     const   { return fTProb;    }   
     54  Float_t GetSigmaCharge()    const    { return fSigmaCharge;    }
     55  Float_t GetErrSigmaCharge() const    { return fErrSigmaCharge; }
     56  Float_t GetTime()         const    { return fTime;         }
     57  Float_t GetSigmaTime()    const    { return fSigmaTime;    }
     58  Float_t GetTimeProb()     const    { return fTimeProb;     }   
    5759 
    58   Float_t GetPed()       const    { return fPed;     }
    59   Float_t GetPedRms()    const    { return fPedRms;    }   
     60  Float_t GetPed()          const    { return fPed;       }
     61  Float_t GetPedRms()       const    { return fPedRms;    }   
    6062
    61   void SetPedestal(Float_t ped, Float_t pedrms);       
     63  void SetPedestal(Float_t ped, Float_t pedrms);
    6264
    63   Bool_t FillQ(Int_t q)                 { return fHist->FillQ(q); }
    64   Bool_t FillT(Int_t t)                 { return fHist->FillT(t); } 
    65   Bool_t FillRQvsT(Float_t rq, Int_t t) { return fHist->FillQvsN(rq,t); }   
     65  Bool_t FillCharge(Int_t q)           { return fHist->FillCharge(q); }
     66  Bool_t FillTime(Int_t t)             { return fHist->FillTime(t); } 
     67  Bool_t FillRChargevsTime(Float_t rq, Int_t t) { return fHist->FillChargevsN(rq,t); }   
    6668 
    67   Bool_t IsValid()      const           { return fRQ >=0 || fErrRQ >= 0; }
    68   Int_t  GetPixId()     const           { return fPixId;   }
    69   void ChangePixId(Int_t i);
     69  Bool_t IsValid()          const    { return fRCharge >=0 || fErrRCharge >= 0; }
     70  Int_t  GetPixId()         const    { return fPixId;   }
     71  void   DefinePixId(Int_t i);
    7072 
    71   Bool_t FitQ();
    72   Bool_t FitT();
     73  Bool_t FitCharge();
     74  Bool_t FitTime();
    7375 
    74   MHCalibrationPixel *GetHist()     const  { return fHist;  }
    75   virtual void Draw(Option_t *opt="")     { fHist->Draw(opt); }
     76  MHCalibrationPixel *GetHist() const  { return fHist;  }
     77  virtual void Draw(Option_t *opt="")   { fHist->Draw(opt); }
    7678 
    77   Float_t GetPheFFactorMethod() const        { return fPheFFactorMethod;  } 
    78   Float_t GetConversionFFactorMethod() const { return fConversionFFactorMethod;  }
     79  Float_t GetPheFFactorMethod()           const { return fPheFFactorMethod;           } 
     80  Float_t GetConversionFFactorMethod()    const { return fConversionFFactorMethod;    }
    7981 
    8082  ClassDef(MCalibrationPix, 1)  // Storage Container for Calibration information of one pixel
Note: See TracChangeset for help on using the changeset viewer.