Ignore:
Timestamp:
04/09/04 17:05:05 (20 years ago)
Author:
gaug
Message:
*** empty log message ***
File:
1 edited

Legend:

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

    r3669 r3697  
    144144const Float_t MHCalibrationChargeCam::fgNumHiGainSaturationLimit = 0.01;
    145145const Float_t MHCalibrationChargeCam::fgNumLoGainSaturationLimit = 0.005;
     146const Float_t MHCalibrationChargeCam::fgTimeLowerLimit           = 1.;
     147const Float_t MHCalibrationChargeCam::fgTimeUpperLimit           = 2.;
    146148// --------------------------------------------------------------------------
    147149//
     
    154156// - fNumHiGainSaturationLimit to fgNumHiGainSaturationLimit
    155157// - fNumLoGainSaturationLimit to fgNumLoGainSaturationLimit
     158// - fTimeLowerLimit           to fgTimeLowerLimit
     159// - fTimeUpperLimit           to fgTimeUpperLimit
    156160//
    157161MHCalibrationChargeCam::MHCalibrationChargeCam(const char *name, const char *title)
    158     : fRawEvt(NULL)
    159 {
    160     fName  = name  ? name  : "MHCalibrationChargeCam";
    161     fTitle = title ? title : "Class to fill the calibration histograms ";
    162 
    163     SetNumHiGainSaturationLimit();
    164     SetNumLoGainSaturationLimit();
     162    : fRawEvt(NULL), fSig(NULL)
     163{
     164  fName  = name  ? name  : "MHCalibrationChargeCam";
     165  fTitle = title ? title : "Class to fill the calibration histograms ";
     166 
     167  SetNumHiGainSaturationLimit();
     168  SetNumLoGainSaturationLimit();
     169  SetTimeLowerLimit();
     170  SetTimeUpperLimit();
    165171}
    166172
     
    169175// Gets the pointers to:
    170176// - MRawEvtData
     177// - MExtractedSignalCam
    171178//
    172179Bool_t MHCalibrationChargeCam::SetupHists(const MParList *pList)
     
    180187  }
    181188
     189  MExtractedSignalCam *fSig = (MExtractedSignalCam*)pList->FindObject("MExtractedSignalCam");
     190  if (!fSig)
     191  {
     192      *fLog << err << "MExtractedSignalCam not found... abort." << endl;
     193      return kFALSE;
     194  }
     195
    182196  return kTRUE;
    183197}
     
    187201// Gets or creates the pointers to:
    188202// - MCalibrationChargeCam
    189 //
    190 // Searches pointer to:
    191 // - MExtractedSignalCam
     203// - MBadPixelsCam
     204//
     205// Initializes the number of used FADC slices from MExtractedSignalCam
     206// into MCalibrationChargeCam and test for changes in that variable
    192207//
    193208// Initializes, if empty to MGeomCam::GetNumPixels():
     
    229244    }
    230245
    231   MExtractedSignalCam *signal = (MExtractedSignalCam*)pList->FindObject("MExtractedSignalCam");
    232   if (!signal)
    233   {
    234       *fLog << err << "MExtractedSignalCam not found... abort." << endl;
     246  const Float_t numhigain = fSig->GetNumUsedHiGainFADCSlices();
     247  const Float_t numlogain = fSig->GetNumUsedLoGainFADCSlices(); 
     248
     249  if (fCam->GetNumHiGainFADCSlices() == 0.)
     250    fCam->SetNumHiGainFADCSlices ( numhigain );
     251  else if (fCam->GetNumHiGainFADCSlices() != numhigain)
     252    {
     253      *fLog << err << GetDescriptor()
     254            << ": Number of High Gain FADC extraction slices has changes, abort..." << endl;
    235255      return kFALSE;
    236   }
     256    }
     257 
     258  if (fCam->GetNumLoGainFADCSlices() == 0.)
     259    fCam->SetNumLoGainFADCSlices ( numlogain );
     260  else if (fCam->GetNumLoGainFADCSlices() != numlogain)
     261    {
     262      *fLog << err << GetDescriptor()
     263            << ": Number of Low Gain FADC extraction slices has changes, abort..." << endl;
     264      return kFALSE;
     265    }
    237266
    238267  const Int_t npixels  = fGeom->GetNumPixels();
     
    532561{
    533562
     563  const Byte_t firsthi = fSig->GetFirstUsedSliceHiGain();
     564  const Byte_t lasthi  = fSig->GetLastUsedSliceHiGain();
     565  const Byte_t firstlo = fSig->GetFirstUsedSliceLoGain();
     566  const Byte_t lastlo  = fSig->GetLastUsedSliceLoGain();
     567
     568
    534569  for (Int_t i=0; i<fHiGainArray->GetSize(); i++)
    535570    {
     
    537572      MHCalibrationChargePix &histhi = (MHCalibrationChargePix&)(*this)[i];
    538573      MCalibrationChargePix  &pix    = (MCalibrationChargePix&)(*fCam)[i];
     574      MBadPixelsPix          &bad    = (*fBadPixels)[i];
    539575     
    540576      if (histhi.IsExcluded())
     
    548584        }
    549585
    550       pix.SetAbsTimeMean ( histhi.GetAbsTimeMean());
    551       pix.SetAbsTimeRms  ( histhi.GetAbsTimeRms() );
     586      FinalizeAbsTimes(histhi, pix, bad, firsthi, lasthi);
    552587    }
    553588
     
    572607     
    573608      if (pix.IsHiGainSaturation())
    574         {
    575           pix.SetAbsTimeMean     ( histlo.GetAbsTimeMean());
    576           pix.SetAbsTimeRms      ( histlo.GetAbsTimeRms() );
    577         }           
     609        FinalizeAbsTimes(histlo, pix, bad, firstlo, lastlo);
    578610    }
    579611
     
    583615      MHCalibrationChargePix &histhi = (MHCalibrationChargePix&)GetAverageHiGainArea(j);     
    584616      MCalibrationChargePix  &pix    = (MCalibrationChargePix&)fCam->GetAverageArea(j);
     617      MBadPixelsPix          &bad    = fCam->GetAverageBadArea(j);
    585618     
    586619      if (histhi.GetSaturated() > fNumHiGainSaturationLimit*histhi.GetHGausHist()->GetEntries())
     
    591624        }
    592625
    593       pix.SetAbsTimeMean ( histhi.GetAbsTimeMean());
    594       pix.SetAbsTimeRms  ( histhi.GetAbsTimeRms() );
    595     }
     626      FinalizeAbsTimes(histhi, pix, bad, firsthi, lasthi);
     627   }
    596628 
    597629  for (Int_t j=0; j<fAverageLoGainAreas->GetSize(); j++)
     
    600632      MHCalibrationChargePix &histlo = (MHCalibrationChargePix&)GetAverageLoGainArea(j);     
    601633      MCalibrationChargePix  &pix    = (MCalibrationChargePix&)fCam->GetAverageArea(j);
    602      
     634      MBadPixelsPix          &bad    = fCam->GetAverageBadArea(j);     
     635
    603636      if (histlo.GetSaturated() > fNumLoGainSaturationLimit*histlo.GetHGausHist()->GetEntries())
    604637        {
     
    609642
    610643      if (pix.IsHiGainSaturation())
    611         {
    612           pix.SetAbsTimeMean  ( histlo.GetAbsTimeMean());
    613           pix.SetAbsTimeRms   ( histlo.GetAbsTimeRms() );
    614         }           
     644        FinalizeAbsTimes(histlo, pix, bad, firstlo, lastlo);
    615645    }
    616646
     
    620650      MHCalibrationChargePix &histhi = (MHCalibrationChargePix&)GetAverageHiGainSector(j);     
    621651      MCalibrationChargePix  &pix    = (MCalibrationChargePix&)fCam->GetAverageSector(j);
    622      
     652      MBadPixelsPix          &bad    = fCam->GetAverageBadSector(j);     
     653
    623654      if (histhi.GetSaturated() > fNumHiGainSaturationLimit*histhi.GetHGausHist()->GetEntries())
    624655        {
     
    628659        }
    629660
    630       pix.SetAbsTimeMean ( histhi.GetAbsTimeMean());
    631       pix.SetAbsTimeRms  ( histhi.GetAbsTimeRms() );
     661      FinalizeAbsTimes(histhi, pix, bad, firsthi, lasthi);
    632662    }
    633663 
     
    648678
    649679      if (pix.IsHiGainSaturation())
    650         {
    651           pix.SetAbsTimeMean  ( histlo.GetAbsTimeMean());
    652           pix.SetAbsTimeRms   ( histlo.GetAbsTimeRms() );
    653         }           
     680        FinalizeAbsTimes(histlo, pix, bad, firstlo, lastlo);
    654681    }
    655682 
     
    670697}
    671698
     699// --------------------------------------------------------------------------------
     700//
     701// Fill the absolute time results into MCalibrationChargePix
     702//
     703// Check absolute time validity:
     704// - Mean arrival time is at least fTimeLowerLimit slices from the lower edge
     705// - Mean arrival time is at least fUpperLimit     slices from the upper edge
     706//
     707void MHCalibrationChargeCam::FinalizeAbsTimes(MHCalibrationChargePix &hist, MCalibrationChargePix &pix, MBadPixelsPix &bad,
     708                                              Byte_t first, Byte_t last)
     709{
     710 
     711  const Float_t mean = hist.GetAbsTimeMean();
     712  const Float_t rms  = hist.GetAbsTimeRms();
     713
     714  pix.SetAbsTimeMean ( mean );
     715  pix.SetAbsTimeRms  ( rms  );
     716 
     717  const Float_t lowerlimit = (Float_t)first + fTimeLowerLimit;
     718  const Float_t upperlimit = (Float_t)last  + fTimeUpperLimit; 
     719
     720  if ( mean < lowerlimit)
     721    {
     722      *fLog << warn << GetDescriptor()
     723            << Form("%s%3.1f%s%2i%s%4i",": Mean ArrivalTime: ",mean," smaller than ",fTimeLowerLimit,
     724                    " FADC slices from lower edge in pixel ",hist.GetPixId()) << endl;
     725      bad.SetUncalibrated( MBadPixelsPix::kMeanTimeInFirstBin );
     726    }
     727 
     728  if ( mean  > upperlimit )
     729    {
     730      *fLog << warn << GetDescriptor()
     731            << Form("%s%3.1f%s%2i%s%4i",": Mean ArrivalTime: ",mean," greater than ",fTimeUpperLimit,
     732                    " FADC slices from upper edge in pixel ",hist.GetPixId()) << endl;
     733      bad.SetUncalibrated( MBadPixelsPix::kMeanTimeInLast2Bins );
     734    }
     735}
     736
    672737// --------------------------------------------------------------------------
    673738//
Note: See TracChangeset for help on using the changeset viewer.