Changeset 3697 for trunk/MagicSoft/Mars/mcalib/MHCalibrationChargeCam.cc
- Timestamp:
- 04/09/04 17:05:05 (20 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/MagicSoft/Mars/mcalib/MHCalibrationChargeCam.cc
r3669 r3697 144 144 const Float_t MHCalibrationChargeCam::fgNumHiGainSaturationLimit = 0.01; 145 145 const Float_t MHCalibrationChargeCam::fgNumLoGainSaturationLimit = 0.005; 146 const Float_t MHCalibrationChargeCam::fgTimeLowerLimit = 1.; 147 const Float_t MHCalibrationChargeCam::fgTimeUpperLimit = 2.; 146 148 // -------------------------------------------------------------------------- 147 149 // … … 154 156 // - fNumHiGainSaturationLimit to fgNumHiGainSaturationLimit 155 157 // - fNumLoGainSaturationLimit to fgNumLoGainSaturationLimit 158 // - fTimeLowerLimit to fgTimeLowerLimit 159 // - fTimeUpperLimit to fgTimeUpperLimit 156 160 // 157 161 MHCalibrationChargeCam::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(); 165 171 } 166 172 … … 169 175 // Gets the pointers to: 170 176 // - MRawEvtData 177 // - MExtractedSignalCam 171 178 // 172 179 Bool_t MHCalibrationChargeCam::SetupHists(const MParList *pList) … … 180 187 } 181 188 189 MExtractedSignalCam *fSig = (MExtractedSignalCam*)pList->FindObject("MExtractedSignalCam"); 190 if (!fSig) 191 { 192 *fLog << err << "MExtractedSignalCam not found... abort." << endl; 193 return kFALSE; 194 } 195 182 196 return kTRUE; 183 197 } … … 187 201 // Gets or creates the pointers to: 188 202 // - 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 192 207 // 193 208 // Initializes, if empty to MGeomCam::GetNumPixels(): … … 229 244 } 230 245 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; 235 255 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 } 237 266 238 267 const Int_t npixels = fGeom->GetNumPixels(); … … 532 561 { 533 562 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 534 569 for (Int_t i=0; i<fHiGainArray->GetSize(); i++) 535 570 { … … 537 572 MHCalibrationChargePix &histhi = (MHCalibrationChargePix&)(*this)[i]; 538 573 MCalibrationChargePix &pix = (MCalibrationChargePix&)(*fCam)[i]; 574 MBadPixelsPix &bad = (*fBadPixels)[i]; 539 575 540 576 if (histhi.IsExcluded()) … … 548 584 } 549 585 550 pix.SetAbsTimeMean ( histhi.GetAbsTimeMean()); 551 pix.SetAbsTimeRms ( histhi.GetAbsTimeRms() ); 586 FinalizeAbsTimes(histhi, pix, bad, firsthi, lasthi); 552 587 } 553 588 … … 572 607 573 608 if (pix.IsHiGainSaturation()) 574 { 575 pix.SetAbsTimeMean ( histlo.GetAbsTimeMean()); 576 pix.SetAbsTimeRms ( histlo.GetAbsTimeRms() ); 577 } 609 FinalizeAbsTimes(histlo, pix, bad, firstlo, lastlo); 578 610 } 579 611 … … 583 615 MHCalibrationChargePix &histhi = (MHCalibrationChargePix&)GetAverageHiGainArea(j); 584 616 MCalibrationChargePix &pix = (MCalibrationChargePix&)fCam->GetAverageArea(j); 617 MBadPixelsPix &bad = fCam->GetAverageBadArea(j); 585 618 586 619 if (histhi.GetSaturated() > fNumHiGainSaturationLimit*histhi.GetHGausHist()->GetEntries()) … … 591 624 } 592 625 593 pix.SetAbsTimeMean ( histhi.GetAbsTimeMean()); 594 pix.SetAbsTimeRms ( histhi.GetAbsTimeRms() ); 595 } 626 FinalizeAbsTimes(histhi, pix, bad, firsthi, lasthi); 627 } 596 628 597 629 for (Int_t j=0; j<fAverageLoGainAreas->GetSize(); j++) … … 600 632 MHCalibrationChargePix &histlo = (MHCalibrationChargePix&)GetAverageLoGainArea(j); 601 633 MCalibrationChargePix &pix = (MCalibrationChargePix&)fCam->GetAverageArea(j); 602 634 MBadPixelsPix &bad = fCam->GetAverageBadArea(j); 635 603 636 if (histlo.GetSaturated() > fNumLoGainSaturationLimit*histlo.GetHGausHist()->GetEntries()) 604 637 { … … 609 642 610 643 if (pix.IsHiGainSaturation()) 611 { 612 pix.SetAbsTimeMean ( histlo.GetAbsTimeMean()); 613 pix.SetAbsTimeRms ( histlo.GetAbsTimeRms() ); 614 } 644 FinalizeAbsTimes(histlo, pix, bad, firstlo, lastlo); 615 645 } 616 646 … … 620 650 MHCalibrationChargePix &histhi = (MHCalibrationChargePix&)GetAverageHiGainSector(j); 621 651 MCalibrationChargePix &pix = (MCalibrationChargePix&)fCam->GetAverageSector(j); 622 652 MBadPixelsPix &bad = fCam->GetAverageBadSector(j); 653 623 654 if (histhi.GetSaturated() > fNumHiGainSaturationLimit*histhi.GetHGausHist()->GetEntries()) 624 655 { … … 628 659 } 629 660 630 pix.SetAbsTimeMean ( histhi.GetAbsTimeMean()); 631 pix.SetAbsTimeRms ( histhi.GetAbsTimeRms() ); 661 FinalizeAbsTimes(histhi, pix, bad, firsthi, lasthi); 632 662 } 633 663 … … 648 678 649 679 if (pix.IsHiGainSaturation()) 650 { 651 pix.SetAbsTimeMean ( histlo.GetAbsTimeMean()); 652 pix.SetAbsTimeRms ( histlo.GetAbsTimeRms() ); 653 } 680 FinalizeAbsTimes(histlo, pix, bad, firstlo, lastlo); 654 681 } 655 682 … … 670 697 } 671 698 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 // 707 void 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 672 737 // -------------------------------------------------------------------------- 673 738 //
Note:
See TracChangeset
for help on using the changeset viewer.