Changeset 4390


Ignore:
Timestamp:
07/15/04 13:57:55 (20 years ago)
Author:
gaug
Message:
*** empty log message ***
Location:
trunk/MagicSoft/Mars
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/MagicSoft/Mars/Changelog

    r4389 r4390  
    2626    - hard coded the reference lines for the DataCheck Display. Should be faster and
    2727      easier to read than the TArrayF's.
     28
     29  * mcalib/MCalibrationChargeCalc.[h,cc]
     30    - removed obsolete pointer to MEvtTime
     31    - fixed bug in calculation of RMS for FFactor of inner pixels in case that the
     32      fit does not converge.
     33    - introduced blind pixel and PIN Diode result flags for later output or
     34      storage in DB.
    2835
    2936
  • trunk/MagicSoft/Mars/mcalib/MCalibrationChargeCalc.cc

    r4360 r4390  
    236236// Default constructor.
    237237//
    238 // Sets all pointers to NULL
     238// Sets the pointer to fQECam and fGeom to NULL
    239239//
    240240// Calls AddToBranchList for:
     
    255255// - fOutputPath        to "."
    256256// - fOutputFile        to "ChargeCalibStat.txt"
    257 //
     257// - flag debug         to kFALSE
     258//
    258259// Calls:
    259260// - Clear()
    260261//
    261262MCalibrationChargeCalc::MCalibrationChargeCalc(const char *name, const char *title)
    262     : fBadPixels(NULL), fCam(NULL), fBlindPixel(NULL), fPINDiode(NULL),
    263       fQECam(NULL), fGeom(NULL), fPedestals(NULL), fEvtTime(NULL)
     263    : fQECam(NULL), fGeom(NULL)
    264264{
    265265       
     
    279279  SetLambdaErrLimit    ();
    280280  SetPheErrLimit       ();
    281   SetPulserColor       ( MCalibrationCam::kNONE );
    282281  SetOutputPath        ();
    283282  SetOutputFile        ();
    284   SetDebug             ( kFALSE );
     283  SetDebug       ( kFALSE );
    285284
    286285  Clear();
     
    293292// - all variables to 0.,
    294293// - all flags to kFALSE
     294// - all pointers to NULL
     295// - the pulser colour to kNONE
     296// - fBlindPixelFlags to 0
     297// - fPINDiodeFlags   to 0
    295298//
    296299void MCalibrationChargeCalc::Clear(const Option_t *o)
     
    302305    fSqrtLoGainSamples         = 0.;
    303306    fNumInnerFFactorMethodUsed = 0;
    304     SkipHiLoGainCalibration( kFALSE );   
     307
     308    fBadPixels  = NULL;
     309    fCam        = NULL;
     310    fBlindPixel = NULL;
     311    fPINDiode   = NULL;
     312    fPedestals  = NULL;
     313
     314    SetPulserColor ( MCalibrationCam::kNONE );
     315   
     316    fBlindPixelFlags.Set(0);
     317    fPINDiodeFlags  .Set(0);
     318    fResultFlags    .Set(0);
    305319}
    306320
     
    316330//  - MBadPixelsCam
    317331//
    318 // The following output containers are only searched,  but not created. If they
    319 // cannot be found, the corresponding calibration part is only skipped.
    320 //
    321 //  - MTime
    322 //
    323332Int_t MCalibrationChargeCalc::PreProcess(MParList *pList)
    324333{
     
    352361
    353362 
    354   fEvtTime = (MTime*)pList->FindObject("MTime");
    355 
    356363  //
    357364  // Check the pulser colour --> FIXME: this solution is only valid until the arrival of the DM's
     
    953960     
    954961      const Float_t nphe  = pix.GetPheFFactorMethod();
    955       const Float_t nvar  = pix.GetPheFFactorMethod()*pix.GetPheFFactorMethod();
    956962      const Int_t   aidx  = (*fGeom)[i].GetAidx();
    957963
     
    960966
    961967      areaphes    [aidx] += nphe;
    962       areavars    [aidx] += nvar;
     968      areavars    [aidx] += nphe*nphe;
    963969      numareavalid[aidx] ++;
    964970    }
     
    973979        }
    974980
     981      areavars[i] = (areavars[i] - areaphes[i]*areaphes[i]/numareavalid[i]) / (numareavalid[i]-1.);
    975982      areaphes[i] = areaphes[i] / numareavalid[i];
    976       areavars[i] = (areavars[i] - areaphes[i]*areaphes[i]/numareavalid[i]) / (numareavalid[i]-1.);
    977 
    978       if (areavars[i] > 0.)
    979         areavars[i] = TMath::Sqrt(areavars[i]);
    980       else
     983
     984      if (areavars[i] < 0.)
    981985        {
    982986          *fLog << warn << GetDescriptor() << ": No pixels with valid variance of photo-electrons found "
     
    13841388
    13851389      avffactorphotons[aidx] += ffactor;
    1386       avffactorphotvar[aidx] += pix.GetMeanFFactorFADC2PhotVar();
     1390      avffactorphotvar[aidx] += ffactor*ffactor;
    13871391      numffactor[aidx]++;
    13881392    }
     
    13901394  for (UInt_t i=0; i<nareas; i++)
    13911395    {
    1392       avffactorphotons[i] /= numffactor[i];
    1393       avffactorphotvar[i] /= numffactor[i];
     1396
     1397      if (numffactor[i] == 0)
     1398        {
     1399          *fLog << warn << GetDescriptor() << ": No pixels with valid total F-Factor found "
     1400                << "in area index: " << i << endl;
     1401          continue;
     1402        }
     1403
     1404      avffactorphotvar[i] = (avffactorphotvar[i] - avffactorphotons[i]*avffactorphotons[i]/numffactor[i]) / (numffactor[i]-1.);
     1405      avffactorphotons[i] = avffactorphotons[i] / numffactor[i];
     1406
     1407      if (avffactorphotvar[i] < 0.)
     1408        {
     1409          *fLog << warn << GetDescriptor() << ": No pixels with valid variance of total F-Factor found "
     1410                << "in area index: " << i << endl;
     1411          continue;
     1412        }
    13941413
    13951414      lowlim  [i] = 1.1;   // Lowest known F-Factor of a PMT
  • trunk/MagicSoft/Mars/mcalib/MCalibrationChargeCalc.h

    r4360 r4390  
    2323#endif
    2424
     25#ifndef ROOT_TArrayC
     26#include "TArrayC.h"
     27#endif
     28
    2529class MRawEvtData;
    2630class MRawRunHeader;
     
    4347private:
    4448
    45   static const Float_t fgChargeLimit;            //! Default for fChargeLimit            (now set to: 2.5)
    46   static const Float_t fgChargeErrLimit;         //! Default for fChargeErrLimit         (now set to: 0.)
    47   static const Float_t fgChargeRelErrLimit;      //! Default for fChargeRelErrLimit      (now set to: 1.)
    48   static const Float_t fgLambdaCheckLimit;       //! Default for fLambdaCheckLimit       (now set to: 0.2)
    49   static const Float_t fgLambdaErrLimit;         //! Default for fLabmdaErrLimit         (now set to: 0.2)
    50   static const Float_t fgPheErrLimit;            //! Default for fPheErrLimit            (now set to: 4.)
    51   static const Float_t fgFFactorErrLimit;        //! Default for fFFactorErrLimit        (now set to: 3.)
     49  static const Float_t fgChargeLimit;          //! Default for fChargeLimit            (now set to: 2.5)
     50  static const Float_t fgChargeErrLimit;       //! Default for fChargeErrLimit         (now set to: 0.)
     51  static const Float_t fgChargeRelErrLimit;    //! Default for fChargeRelErrLimit      (now set to: 1.)
     52  static const Float_t fgLambdaCheckLimit;     //! Default for fLambdaCheckLimit       (now set to: 0.2)
     53  static const Float_t fgLambdaErrLimit;       //! Default for fLabmdaErrLimit         (now set to: 0.5)
     54  static const Float_t fgPheErrLimit;          //! Default for fPheErrLimit            (now set to: 4.)
     55  static const Float_t fgFFactorErrLimit;      //! Default for fFFactorErrLimit        (now set to: 4.)
    5256 
    5357  // Variables
     
    5559  Float_t fChargeErrLimit;                     // Limit acceptance charge error (in abs. numbers)
    5660  Float_t fChargeRelErrLimit;                  // Limit acceptance rel. error mean (in abs. numbers)
    57   Byte_t  fFlags;                              // Bit-field for the flags
    5861  Float_t fLambdaCheckLimit;                   // Limit rel. diff. lambda and lambdacheck in Blind Pixel
    5962  Float_t fLambdaErrLimit;                     // Limit acceptance lambda error in Blind Pixel
     
    6669  MCalibrationCam::PulserColor_t fPulserColor; // Calibration LEDs colour
    6770  Int_t   fNumInnerFFactorMethodUsed;          // Number of inner pixels used for F-Factor Method calibration
     71
     72  Byte_t  fFlags;                              // Bit-field for the general flags
     73  TArrayC fResultFlags;                        // Bit-fields for the fitting results   (one field per area index)
     74  TArrayC fBlindPixelFlags;                    // Bit-fields for the blind pixel flags (one field per blind pixel)
     75  TArrayC fPINDiodeFlags;                      // Bit-fields for the PIN Diode flags   (one field per PIN Diode  )
    6876 
    6977  TString fOutputPath;                         // Path to the output file
     
    7886  MGeomCam                   *fGeom;           //! Camera geometry
    7987  MPedestalCam               *fPedestals;      //! Pedestals all pixels (calculated previously from ped.file)
    80   MTime                      *fEvtTime;        //! Time of the event
    8188
    8289  // enums
    83   enum  { kHiLoGainCalibration, kDebug };
     90  enum  { kDebug, kPheFitOK, kFFactorFitOK, kBlindPixelFitOK, kBlindPixelPedFitOK, kPINDiodeFitOK };
    8491
    8592  // functions
    8693  const char* GetOutputFile();
    87   void   FinalizePedestals      ( const MPedestalPix &ped, MCalibrationChargePix &cal, const Int_t aidx );
    88   Bool_t FinalizeCharges        ( MCalibrationChargePix &cal, MBadPixelsPix &bad      );
    89   Bool_t FinalizePINDiode       ();
    90   Bool_t FinalizeBlindPixel     ();
    91   Bool_t FinalizeFFactorMethod  ();
    92   void   FinalizeBadPixels      ();
    93   void   FinalizeFFactorQECam   (); 
    94   void   FinalizeBlindPixelQECam();
    95   void   FinalizePINDiodeQECam  ();
     94  void   FinalizePedestals       ( const MPedestalPix    &ped, MCalibrationChargePix &cal, const Int_t aidx );
     95  Bool_t FinalizeCharges         ( MCalibrationChargePix &cal, MBadPixelsPix &bad                           );
     96  Bool_t FinalizePINDiode        ();
     97  Bool_t FinalizeBlindPixel      ();
     98  Bool_t FinalizeFFactorMethod   ();
     99  void   FinalizeBadPixels       ();
     100  void   FinalizeFFactorQECam    (); 
     101  void   FinalizeBlindPixelQECam ();
     102  void   FinalizePINDiodeQECam   ();
    96103  void   FinalizeUnsuitablePixels();
    97104
    98105  void   PrintUncalibrated( MBadPixelsPix::UncalibratedType_t typ, const char *text) const;
     106
     107  void   SetPheFitOK          ( const Int_t aidx, const Bool_t b=kTRUE ) { b ? SETBIT(fResultFlags[aidx], kPheFitOK)
     108                                                                             : CLRBIT(fResultFlags[aidx], kPheFitOK);      }
     109  void   SetFFactorFitOK      ( const Int_t aidx, const Bool_t b=kTRUE ) { b ? SETBIT(fResultFlags[aidx], kFFactorFitOK)
     110                                                                             : CLRBIT(fResultFlags[aidx], kFFactorFitOK);  }
     111  void   SetBlindPixelFitOK   ( const Int_t  idx, const Bool_t b=kTRUE ) { b ? SETBIT(fBlindPixelFlags[idx], kBlindPixelFitOK)
     112                                                                             : CLRBIT(fBlindPixelFlags[idx], kBlindPixelFitOK); }
     113  void   SetBlindPixelPedFitOK( const Int_t  idx, const Bool_t b=kTRUE ) { b ? SETBIT(fBlindPixelFlags[idx], kBlindPixelPedFitOK)
     114                                                                             : CLRBIT(fBlindPixelFlags[idx], kBlindPixelPedFitOK); }
     115  void   SetPINDiodeFitOK     ( const Int_t  idx, const Bool_t b=kTRUE ) { b ? SETBIT(fPINDiodeFlags[idx], kPINDiodeFitOK)
     116                                                                             : CLRBIT(fPINDiodeFlags[idx], kPINDiodeFitOK); }
    99117
    100118  Int_t  PreProcess (MParList *pList);
     
    111129  Bool_t IsDebug() const   {  return TESTBIT(fFlags,kDebug); }
    112130 
    113   void SetChargeLimit       ( const Float_t f=fgChargeLimit            ) { fChargeLimit       = f;   }
    114   void SetChargeErrLimit    ( const Float_t f=fgChargeErrLimit         ) { fChargeErrLimit    = f;   }
    115   void SetChargeRelErrLimit ( const Float_t f=fgChargeRelErrLimit      ) { fChargeRelErrLimit = f;   }
    116   void SetFFactorErrLimit   ( const Float_t f=fgFFactorErrLimit        ) { fFFactorErrLimit   = f;   }
    117   void SetLambdaErrLimit    ( const Float_t f=fgLambdaErrLimit         ) { fLambdaErrLimit    = f;   }
    118   void SetLambdaCheckLimit  ( const Float_t f=fgLambdaCheckLimit       ) { fLambdaCheckLimit  = f;   }
     131  void SetChargeLimit       ( const Float_t f=fgChargeLimit            ) { fChargeLimit       = f;     }
     132  void SetChargeErrLimit    ( const Float_t f=fgChargeErrLimit         ) { fChargeErrLimit    = f;     }
     133  void SetChargeRelErrLimit ( const Float_t f=fgChargeRelErrLimit      ) { fChargeRelErrLimit = f;     }
     134  void SetDebug             ( const Bool_t  b=kTRUE                    ) { b ? SETBIT(fFlags, kDebug)
     135                                                                             : CLRBIT(fFlags, kDebug); }
     136  void SetFFactorErrLimit   ( const Float_t f=fgFFactorErrLimit        ) { fFFactorErrLimit   = f;     }
     137  void SetLambdaErrLimit    ( const Float_t f=fgLambdaErrLimit         ) { fLambdaErrLimit    = f;     }
     138  void SetLambdaCheckLimit  ( const Float_t f=fgLambdaCheckLimit       ) { fLambdaCheckLimit  = f;     }
    119139  void SetOutputPath        ( TString path="."                   );
    120140  void SetOutputFile        ( TString file="ChargeCalibStat.txt" );
    121   void SetPheErrLimit       ( const Float_t f=fgPheErrLimit            ) { fPheErrLimit       = f;   
    122   void SetPulserColor       ( const MCalibrationCam::PulserColor_t col ) { fPulserColor       = col; }
     141  void SetPheErrLimit       ( const Float_t f=fgPheErrLimit            ) { fPheErrLimit       = f;    
     142  void SetPulserColor       ( const MCalibrationCam::PulserColor_t col ) { fPulserColor       = col;   }
    123143
    124   void SkipHiLoGainCalibration ( const Bool_t b=kTRUE )
    125       { b ? CLRBIT(fFlags, kHiLoGainCalibration) : SETBIT(fFlags, kHiLoGainCalibration); }
    126   void SetDebug              ( const Bool_t b=kTRUE )
    127       { b ? SETBIT(fFlags, kDebug              ) : CLRBIT(fFlags, kDebug              ); }
    128144
    129145  ClassDef(MCalibrationChargeCalc, 1)   // Task calculating Calibration Containers and Quantum Efficiencies
Note: See TracChangeset for help on using the changeset viewer.