Changeset 4602 for trunk/MagicSoft/Mars/mcalib
- Timestamp:
- 08/12/04 21:28:37 (20 years ago)
- Location:
- trunk/MagicSoft/Mars/mcalib
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/MagicSoft/Mars/mcalib/MHCalibrationCam.h
r4336 r4602 120 120 121 121 // Clone 122 virtual TObject *Clone(const char * ) const;122 virtual TObject *Clone(const char *name="") const; 123 123 124 124 // Draw -
trunk/MagicSoft/Mars/mcalib/MHCalibrationChargeBlindCam.cc
r4553 r4602 62 62 // Initializes and sets owner of: 63 63 // - fBlindPixelsArray 64 // 65 // Sets fFitFunc to kEPoisson4 64 66 // 65 67 MHCalibrationChargeBlindCam::MHCalibrationChargeBlindCam(const char *name, const char *title) … … 72 74 fBlindPixelsArray = new TObjArray; 73 75 fBlindPixelsArray->SetOwner(); 76 77 fFitFunc = MHCalibrationChargeBlindPix::kEPoisson4; 78 74 79 } 75 80 … … 212 217 TH1F *h = (*this)[i].GetHGausHist(); 213 218 h->SetTitle( Form("%s%s", h->GetTitle()," Runs: ")); 219 (*this)[i].ChangeFitFunc(fFitFunc); 214 220 (*this)[i].SetupFill(pList); 215 221 (*this)[i].SetCalibrationChargeBlindPix(&(*fCam)[i]); -
trunk/MagicSoft/Mars/mcalib/MHCalibrationChargeBlindCam.h
r4553 r4602 12 12 #include "MCamEvent.h" 13 13 #endif 14 15 14 #ifndef MARS_MBadPixelsPix 16 15 #include "MBadPixelsPix.h" 16 #endif 17 #ifndef MARS_MHCalibrationChargeBlindPix 18 #include "MHCalibrationChargeBlindPix.h" 17 19 #endif 18 20 … … 31 33 TObjArray *fBlindPixelsArray; //-> Array of calibration pixels, one per pixel 32 34 35 MHCalibrationChargeBlindPix::FitFunc_t fFitFunc; 36 33 37 public: 34 38 … … 51 55 MHCalibrationChargeBlindPix &operator[] (UInt_t i); 52 56 const MHCalibrationChargeBlindPix &operator[] (UInt_t i) const; 57 58 void SetFitFunc(const MHCalibrationChargeBlindPix::FitFunc_t func) { fFitFunc = func; } 53 59 54 60 ClassDef(MHCalibrationChargeBlindCam, 1) // Histogram class for Blind Pixel Calibration -
trunk/MagicSoft/Mars/mcalib/MHCalibrationChargeBlindPix.cc
r4399 r4602 74 74 #include <TCanvas.h> 75 75 #include <TPaveText.h> 76 #include <TPaveStats.h> 76 77 77 78 #include <TVector.h> 78 79 #include <TF1.h> 79 80 #include <TH1.h> 81 #include <TH2D.h> 80 82 #include <TRandom.h> 81 83 … … 99 101 const Float_t MHCalibrationChargeBlindPix::gkSignalInitializer = -9999.; 100 102 101 const Int_t MHCalibrationChargeBlindPix::fgChargeNbins = 512;103 const Int_t MHCalibrationChargeBlindPix::fgChargeNbins = 128; 102 104 const Axis_t MHCalibrationChargeBlindPix::fgChargeFirst = -0.5; 103 const Axis_t MHCalibrationChargeBlindPix::fgChargeLast = 255.5;104 const Float_t MHCalibrationChargeBlindPix::fgSinglePheCut = 30.;105 const Axis_t MHCalibrationChargeBlindPix::fgChargeLast = 511.5; 106 const Float_t MHCalibrationChargeBlindPix::fgSinglePheCut = 20.; 105 107 const Float_t MHCalibrationChargeBlindPix::fgNumSinglePheLimit = 50.; 106 108 // -------------------------------------------------------------------------- … … 150 152 SetNumSinglePheLimit(); 151 153 SetProbLimit(0.001); 152 SetBinsAfterStripping( 64);154 SetBinsAfterStripping(0); 153 155 154 156 fHGausHist.SetName("HCalibrationChargeBlindPix"); 155 157 fHGausHist.SetTitle("Distribution of Summed FADC slices Blind Pixel"); 156 fHGausHist.SetXTitle("S um FADC Slices");158 fHGausHist.SetXTitle("Signal Amplitude"); 157 159 fHGausHist.SetYTitle("Nr. of events"); 158 160 … … 222 224 223 225 // fFitFunc = kEMichele; 224 fFitFunc = kEPoisson 4;226 fFitFunc = kEPoisson5; 225 227 226 228 fNumSinglePhes = 0; … … 257 259 fHPedestalFADCSlices = NULL; 258 260 } 259 260 261 261 262 MHGausEvents::Clear(); … … 504 505 fBlindPix->SetValid(IsPedestalFitOK()); 505 506 506 fBlindPix->SetLambda ( fLambda Check);507 fBlindPix->SetLambdaVar ( fLambda CheckErr*fLambdaCheckErr );507 fBlindPix->SetLambda ( fLambda ); 508 fBlindPix->SetLambdaVar ( fLambdaErr*fLambdaErr ); 508 509 fBlindPix->SetMu0 ( fMu0 ); 509 510 fBlindPix->SetMu0Err ( fMu0Err ); … … 516 517 fBlindPix->SetProb ( fProb ); 517 518 518 fBlindPix->SetLambdaCheck ( fLambda 519 fBlindPix->SetLambdaCheckErr ( fLambda Err);519 fBlindPix->SetLambdaCheck ( fLambdaCheck ); 520 fBlindPix->SetLambdaCheckErr ( fLambdaCheckErr ); 520 521 521 522 return kTRUE; … … 630 631 // 631 632 const Stat_t entries = fHGausHist.Integral("width"); 632 const Double_t lambda_guess = 0. 05;633 const Double_t lambda_guess = 0.5; 633 634 const Double_t maximum_bin = fHGausHist.GetBinCenter(fHGausHist.GetMaximumBin()); 634 635 const Double_t norm = entries/TMath::Sqrt(TMath::TwoPi()); … … 641 642 case kEPoisson4: 642 643 fSinglePheFit = new TF1("SinglePheFit",&fPoissonKto4,rmin,rmax,6); 644 rmin += 6.5; 643 645 break; 644 646 case kEPoisson5: … … 652 654 break; 653 655 case kEMichele: 654 fSinglePheFit = new TF1("SinglePheFit",&fFitFuncMichele,rmin,rmax, 10);656 fSinglePheFit = new TF1("SinglePheFit",&fFitFuncMichele,rmin,rmax,9); 655 657 break; 656 658 default: … … 666 668 } 667 669 668 const Double_t mu_0_guess = maximum_bin;669 const Double_t si_0_guess = 40.;670 const Double_t mu_1_guess = mu_0_guess + 4000.;670 const Double_t mu_0_guess = 13.5; 671 const Double_t si_0_guess = 2.5; 672 const Double_t mu_1_guess = 30.; 671 673 const Double_t si_1_guess = si_0_guess + si_0_guess; 672 674 // Michele 673 const Double_t lambda_1cat_guess = 0.05;675 const Double_t lambda_1cat_guess = 1.00; 674 676 const Double_t lambda_1dyn_guess = lambda_1cat_guess/10.; 675 const Double_t mu_1cat_guess = 1000.; 676 const Double_t mu_1dyn_guess = 2500.; 677 const Double_t si_1cat_guess = si_0_guess+ 500.; 678 const Double_t si_1dyn_guess = si_0_guess+ 1000.; 679 const Double_t offset_guess = 0.5; 677 const Double_t mu_1cat_guess = 50.; 678 const Double_t mu_1dyn_guess = 17.; 679 const Double_t si_1cat_guess = si_0_guess + si_0_guess; 680 const Double_t si_1dyn_guess = si_0_guess + si_0_guess/2.; 680 681 // Polya 681 682 const Double_t excessPoisson_guess = 0.5; … … 693 694 case kEPoisson4: 694 695 fSinglePheFit->SetParNames( "#lambda", "#mu_{0}", "#mu_{1}", "#sigma_{0}", "#sigma_{1}","Area"); 695 // fSinglePheFit->SetParameters(lambda_guess,fMeanPedestal,mu_1_guess,fSigmaPedestal,si_1_guess,norm); 696 fSinglePheFit->SetParameters(0.05,10.,75.,20.,70.,norm); 697 698 fSinglePheFit->SetParLimits(0,0.,0.5); 699 // fSinglePheFit->SetParLimits(1, 700 // fMeanPedestal-5.*fMeanPedestalErr, 701 // fMeanPedestal+5.*fMeanPedestalErr); 702 fSinglePheFit->SetParLimits(1,0.,30.); 703 // fSinglePheFit->SetParLimits(2,rmin,rmax); 704 fSinglePheFit->SetParLimits(2,50.,150.); 705 // fSinglePheFit->SetParLimits(3, 706 // fSigmaPedestal-5.*fSigmaPedestalErr, 707 // fSigmaPedestal+5.*fSigmaPedestalErr); 708 fSinglePheFit->SetParLimits(3,0.,50.); 709 // fSinglePheFit->SetParLimits(4,0.,(rmax-rmin)); 710 fSinglePheFit->SetParLimits(4,0.,100.); 711 fSinglePheFit->SetParLimits(5,norm-(0.5*norm),norm+(0.5*norm)); 696 fSinglePheFit->SetParameters(lambda_guess,mu_0_guess,mu_1_guess,si_0_guess,si_1_guess,norm); 697 fSinglePheFit->SetParLimits(0,0.,2.); 698 fSinglePheFit->SetParLimits(1,10.,17.); 699 fSinglePheFit->SetParLimits(2,17.,50.); 700 fSinglePheFit->SetParLimits(3,1.,5.); 701 fSinglePheFit->SetParLimits(4,5.,30.); 702 fSinglePheFit->SetParLimits(5,norm-(0.5*norm),norm+(0.7*norm)); 712 703 break; 713 704 case kEPoisson5: 714 705 case kEPoisson6: 715 fSinglePheFit->SetParameters(lambda_guess,mu_0_guess,mu_1_guess,si_0_guess,si_1_guess,norm);716 706 fSinglePheFit->SetParNames("#lambda","#mu_{0}","#mu_{1}","#sigma_{0}","#sigma_{1}","Area"); 717 fSinglePheFit->SetParLimits(0,0.,1.); 718 fSinglePheFit->SetParLimits(1,rmin,(rmax-rmin)/1.5); 719 fSinglePheFit->SetParLimits(2,(rmax-rmin)/2.,(rmax-0.05*(rmax-rmin))); 720 fSinglePheFit->SetParLimits(3,1.0,(rmax-rmin)/2.0); 721 fSinglePheFit->SetParLimits(4,1.0,(rmax-rmin)/2.5); 722 fSinglePheFit->SetParLimits(5,norm-0.1,norm+0.1); 707 fSinglePheFit->SetParameters(lambda_guess,mu_0_guess,800.,si_0_guess,500.,norm); 708 fSinglePheFit->SetParLimits(0,0.,2.); 709 fSinglePheFit->SetParLimits(1,0.,100.); 710 fSinglePheFit->SetParLimits(2,200.,1500.); 711 fSinglePheFit->SetParLimits(3,0.,250.); 712 fSinglePheFit->SetParLimits(4,100.,1000.); 713 fSinglePheFit->SetParLimits(5,norm/2.,norm+(0.7*norm)); 723 714 break; 724 715 … … 749 740 break; 750 741 case kEMichele: 751 fSinglePheFit->SetParameters(lambda_1cat_guess, lambda_1dyn_guess,752 20., mu_1cat_guess,mu_1dyn_guess,753 si_0_guess, si_1cat_guess,si_1dyn_guess,754 norm, offset_guess);755 742 fSinglePheFit->SetParNames("#lambda_{cat}","#lambda_{dyn}", 756 743 "#mu_{0}","#mu_{1cat}","#mu_{1dyn}", 757 744 "#sigma_{0}","#sigma_{1cat}","#sigma_{1dyn}", 758 "Area","offset"); 759 fSinglePheFit->SetParLimits(0,0.,0.5); 760 fSinglePheFit->SetParLimits(1,0.,0.05); 761 fSinglePheFit->SetParLimits(2,0.,fSinglePheCut); 762 fSinglePheFit->SetParLimits(3,1500.,5500.); 763 fSinglePheFit->SetParLimits(4,fSinglePheCut,1500.); 764 fSinglePheFit->SetParLimits(5,0.1,fSinglePheCut/1.25); 765 fSinglePheFit->SetParLimits(6,fSinglePheCut/1.25,1000.); 766 fSinglePheFit->SetParLimits(7,1000.,1500.); 767 fSinglePheFit->SetParLimits(8,norm/1.1,norm*1.1); 768 fSinglePheFit->SetParLimits(9,0.,1.); 745 "Area"); 746 fSinglePheFit->SetParameters(lambda_1cat_guess, lambda_1dyn_guess, 747 mu_0_guess, mu_1cat_guess,mu_1dyn_guess, 748 si_0_guess, si_1cat_guess,si_1dyn_guess, 749 norm); 750 fSinglePheFit->SetParLimits(0,0.01,2.0); 751 fSinglePheFit->SetParLimits(1,0.,0.5); 752 fSinglePheFit->SetParLimits(2,10.,16.); 753 fSinglePheFit->SetParLimits(3,25.,50.); 754 fSinglePheFit->SetParLimits(4,16.,18.5); 755 fSinglePheFit->SetParLimits(5,1.,5.); 756 fSinglePheFit->SetParLimits(6,10.,50.); 757 fSinglePheFit->SetParLimits(7,5.,10.); 758 fSinglePheFit->SetParLimits(8,norm/2.,norm*2.5); 769 759 break; 770 760 … … 944 934 // Draw a legend with the fit results 945 935 // 946 void MHCalibrationChargeBlindPix::DrawLegend() 947 { 936 void MHCalibrationChargeBlindPix::DrawLegend(Option_t *opt) 937 { 938 939 TString option(opt); 948 940 949 941 if (!fFitLegend) … … 967 959 968 960 const TString line6 = 969 Form("Mean #lambda (check)= %2.2f #pm %2.2f",fLambdaCheck,fLambdaCheckErr);961 Form("Mean #lambda_{check} = %2.2f #pm %2.2f",fLambdaCheck,fLambdaCheckErr); 970 962 TText *t2 = fFitLegend->AddText(line6.Data()); 971 963 t2->SetBit(kCanDelete); 972 973 const TString line2 = 974 Form("Pedestal: #mu_{0} = %2.2f #pm %2.2f",fMu0,fMu0Err); 975 TText *t3 = fFitLegend->AddText(line2.Data()); 976 t3->SetBit(kCanDelete); 977 978 const TString line3 = 979 Form("Width Pedestal: #sigma_{0} = %2.2f #pm %2.2f",fSigma0,fSigma0Err); 980 TText *t4 = fFitLegend->AddText(line3.Data()); 981 t4->SetBit(kCanDelete); 982 983 const TString line4 = 984 Form("1^{st} Phe-peak: #mu_{1} = %2.2f #pm %2.2f",fMu1,fMu1Err); 985 TText *t5 = fFitLegend->AddText(line4.Data()); 986 t5->SetBit(kCanDelete); 987 988 const TString line5 = 989 Form("Width 1^{st} Phe-peak: #sigma_{1} = %2.2f #pm %2.2f",fSigma1,fSigma1Err); 990 TText *t6 = fFitLegend->AddText(line5.Data()); 991 t6->SetBit(kCanDelete); 964 965 if (option.Contains("datacheck")) 966 { 967 if (fLambda + 3.*fLambdaErr < fLambdaCheck - 3.*fLambdaCheckErr 968 || 969 fLambda - 3.*fLambdaErr > fLambdaCheck + 3.*fLambdaCheckErr ) 970 { 971 TText *t = fFitLegend->AddText("#lambda and #lambda_{check} more than 3#sigma apart!"); 972 t->SetBit(kCanDelete); 973 } 974 } 975 else 976 { 977 978 const TString line2 = 979 Form("Pedestal: #mu_{0} = %2.2f #pm %2.2f",fMu0,fMu0Err); 980 TText *t3 = fFitLegend->AddText(line2.Data()); 981 t3->SetBit(kCanDelete); 982 983 const TString line3 = 984 Form("Width Pedestal: #sigma_{0} = %2.2f #pm %2.2f",fSigma0,fSigma0Err); 985 TText *t4 = fFitLegend->AddText(line3.Data()); 986 t4->SetBit(kCanDelete); 987 988 const TString line4 = 989 Form("1^{st} Phe-peak: #mu_{1} = %2.2f #pm %2.2f",fMu1,fMu1Err); 990 TText *t5 = fFitLegend->AddText(line4.Data()); 991 t5->SetBit(kCanDelete); 992 993 const TString line5 = 994 Form("Width 1^{st} Phe-peak: #sigma_{1} = %2.2f #pm %2.2f",fSigma1,fSigma1Err); 995 TText *t6 = fFitLegend->AddText(line5.Data()); 996 t6->SetBit(kCanDelete); 997 } 992 998 993 999 const TString line7 = 994 1000 Form("#chi^{2} / N_{dof}: %4.2f / %3i",fChisquare,fNDF); 995 1001 TText *t7 = fFitLegend->AddText(line7.Data()); 996 1002 t7->SetBit(kCanDelete); 997 1003 998 1004 const TString line8 = 999 Form("Probability: % 4.2f ",fProb);1005 Form("Probability: %6.4f ",fProb); 1000 1006 TText *t8 = fFitLegend->AddText(line8.Data()); 1001 1007 t8->SetBit(kCanDelete); … … 1003 1009 if (IsSinglePheFitOK()) 1004 1010 { 1005 TText *t = fFitLegend->AddText( 0.,0.,"Result of the Fit: OK");1011 TText *t = fFitLegend->AddText("Result of the Fit: OK"); 1006 1012 t->SetBit(kCanDelete); 1007 1013 } … … 1054 1060 { 1055 1061 pad = oldpad; 1056 pad->Divide( 2,1);1062 pad->Divide(1,2); 1057 1063 pad->cd(1); 1064 fHGausHist.SetStats(0); 1058 1065 } 1059 1066 else … … 1064 1071 } 1065 1072 1066 if (!IsEmpty() )1073 if (!IsEmpty() && !IsOnlyOverflow()) 1067 1074 gPad->SetLogy(); 1068 1075 … … 1070 1077 1071 1078 fHGausHist.Draw(); 1072 if (fFGausFit )1079 if (fFGausFit ) 1073 1080 { 1074 1081 fFGausFit->SetLineColor(kBlue); 1075 1082 fFGausFit->Draw("same"); 1076 TLine *line = new TLine(fSinglePheCut, 0., fSinglePheCut, 10.); 1077 line->SetBit(kCanDelete); 1078 line->SetLineColor(kBlue); 1079 line->SetLineWidth(3); 1080 line->DrawLine(fSinglePheCut, 0., fSinglePheCut, 2.); 1081 } 1083 if (!option.Contains("datacheck")) 1084 { 1085 TLine *line = new TLine(fSinglePheCut, 0., fSinglePheCut, 10.); 1086 line->SetBit(kCanDelete); 1087 line->SetLineColor(kBlue); 1088 line->SetLineWidth(3); 1089 line->DrawLine(fSinglePheCut, 0., fSinglePheCut, 2.); 1090 } 1091 } 1092 1082 1093 if (fSinglePheFit) 1083 1094 { 1084 fSinglePheFit->SetLineColor(IsSinglePheFitOK() ? kGreen : kRed); 1085 fSinglePheFit->Draw("same"); 1095 fSinglePheFit->SetFillStyle(0); 1096 fSinglePheFit->SetLineWidth(3); 1097 fSinglePheFit->SetLineColor(IsSinglePheFitOK() ? kGreen : kRed); 1098 fSinglePheFit->Draw("same"); 1086 1099 } 1087 1100 1088 1101 pad->cd(2); 1089 DrawLegend( );1102 DrawLegend(option.Data()); 1090 1103 1091 1104 if (option.Contains("datacheck")) … … 1098 1111 if (fHSinglePheFADCSlices) 1099 1112 delete fHSinglePheFADCSlices; 1113 1100 1114 fHSinglePheFADCSlices = new TH1F(fASinglePheFADCSlices); 1101 1115 fHSinglePheFADCSlices->SetName("SinglePheFADCSlices"); 1102 fHSinglePheFADCSlices->SetTitle(Form("%s% f","Assumed Single Phe FADC Slices, Sum > ",fSinglePheCut));1116 fHSinglePheFADCSlices->SetTitle(Form("%s%4.1f","Assumed Single Phe FADC Slices, Sum > ",fSinglePheCut)); 1103 1117 fHSinglePheFADCSlices->SetXTitle("FADC slice number"); 1104 1118 fHSinglePheFADCSlices->SetYTitle("FADC counts"); 1105 fHSinglePheFADCSlices->Draw(); 1119 const Int_t nbins = fHSinglePheFADCSlices->GetNbinsX(); 1120 TH2D *nulls = new TH2D("Nulls",fHSinglePheFADCSlices->GetTitle(),nbins,0., 1121 fHSinglePheFADCSlices->GetXaxis()->GetBinCenter(nbins), 1122 100,0.,50.); 1123 nulls->SetDirectory(NULL); 1124 nulls->SetBit(kCanDelete); 1125 nulls->GetXaxis()->SetTitle(fHSinglePheFADCSlices->GetXaxis()->GetTitle()); 1126 nulls->GetYaxis()->SetTitle(fHSinglePheFADCSlices->GetYaxis()->GetTitle()); 1127 nulls->GetXaxis()->CenterTitle(); 1128 nulls->GetYaxis()->CenterTitle(); 1129 nulls->SetStats(0); 1130 nulls->Draw(); 1131 fHSinglePheFADCSlices->Draw("same"); 1106 1132 } 1107 1133 … … 1115 1141 fHPedestalFADCSlices = new TH1F(fAPedestalFADCSlices); 1116 1142 fHPedestalFADCSlices->SetName("PedestalFADCSlices"); 1117 fHPedestalFADCSlices->SetTitle(Form("%s% f","Pedestal FADC Slices, Sum < ",fSinglePheCut));1143 fHPedestalFADCSlices->SetTitle(Form("%s%4.1f","Pedestal FADC Slices, Sum < ",fSinglePheCut)); 1118 1144 fHPedestalFADCSlices->SetXTitle("FADC slice number"); 1119 1145 fHPedestalFADCSlices->SetYTitle("FADC counts"); 1120 fHPedestalFADCSlices->Draw(); 1146 const Int_t nbins = fHPedestalFADCSlices->GetNbinsX(); 1147 TH2D *nullp = new TH2D("Nullp",fHPedestalFADCSlices->GetTitle(),nbins,0., 1148 fHPedestalFADCSlices->GetXaxis()->GetBinCenter(nbins), 1149 100,0.,50.); 1150 nullp->SetDirectory(NULL); 1151 nullp->SetBit(kCanDelete); 1152 nullp->GetXaxis()->SetTitle(fHPedestalFADCSlices->GetXaxis()->GetTitle()); 1153 nullp->GetYaxis()->SetTitle(fHPedestalFADCSlices->GetYaxis()->GetTitle()); 1154 nullp->GetXaxis()->CenterTitle(); 1155 nullp->GetYaxis()->CenterTitle(); 1156 nullp->SetStats(0); 1157 nullp->Draw(); 1158 fHPedestalFADCSlices->Draw("same"); 1121 1159 } 1122 1160 -
trunk/MagicSoft/Mars/mcalib/MHCalibrationChargeBlindPix.h
r4399 r4602 144 144 145 145 private: 146 void DrawLegend( );146 void DrawLegend(Option_t *opt=""); 147 147 148 148 // Fits … … 177 177 Double_t sigma1cat = par[6]; 178 178 Double_t sigma1dyn = par[7]; 179 Double_t offset = par[9];180 179 181 180 Double_t sumcat = 0.; … … 222 221 arg = (x[0] - mu0)/sigma0; 223 222 sumcat = TMath::Exp(-0.5*arg*arg)/sigma0; 224 sumdyn = sumcat;223 sumdyn = sumcat; 225 224 226 225 // k=1cat: … … 249 248 sumdyn = TMath::Exp(-1.*lambda1dyn)*sumdyn; 250 249 251 return par[8]*(sumcat+sumdyn)/2. + offset;250 return par[8]*(sumcat+sumdyn)/2.; 252 251 253 252 } … … 518 517 } 519 518 520 521 522 519 ClassDef(MHCalibrationChargeBlindPix, 1) // Histogram class for Charge Blind Pixel Calibration 523 520 }; -
trunk/MagicSoft/Mars/mcalib/MHCalibrationChargeCam.cc
r4537 r4602 606 606 { 607 607 608 *fLog << endl; 609 608 610 if (fHiGainOverFlow) 609 611 *fLog << warn << GetDescriptor() 610 << ": WARNING:Histogram Overflow has occurred " << fHiGainOverFlow << " in the High-Gain! " << endl;612 << ": Histogram Overflow has occurred " << fHiGainOverFlow << " in the High-Gain! " << endl; 611 613 if (fLoGainOverFlow) 612 614 *fLog << warn << GetDescriptor() 613 << ": WARNING:Histogram Overflow has occurred " << fLoGainOverFlow << " in the Low-Gain! " << endl;615 << ": Histogram Overflow has occurred " << fLoGainOverFlow << " in the Low-Gain! " << endl; 614 616 615 617 for (Int_t i=0; i<fHiGainArray->GetSize(); i++) … … 902 904 // Creates new MHCalibrationCam 903 905 // 904 TObject *MHCalibrationChargeCam::Clone(const char * ) const906 TObject *MHCalibrationChargeCam::Clone(const char *name) const 905 907 { 906 908 … … 958 960 959 961 gPad->SetTicks(); 960 if (!pix.IsEmpty() )962 if (!pix.IsEmpty() && !pix.IsOnlyOverflow()) 961 963 gPad->SetLogy(); 962 964 -
trunk/MagicSoft/Mars/mcalib/MHCalibrationChargeCam.h
r4389 r4602 55 55 ~MHCalibrationChargeCam() {} 56 56 57 TObject *Clone(const char * ) const;57 TObject *Clone(const char *name="") const; 58 58 59 59 void SetTimeLowerLimit ( const Float_t f=fgTimeLowerLimit ) { fTimeLowerLimit = f; }
Note:
See TracChangeset
for help on using the changeset viewer.