@@ -94,6 +94,7 @@ int runMassFitter(TString configFileName)
9494 vector < double > massMax ;
9595 vector < double > fixSigmaManual ;
9696 vector < double > fixSecondSigmaManual ;
97+ vector < double > fixMeanManual ;
9798 vector < int > nRebin ;
9899 vector < int > bkgFuncConfig ;
99100 vector < int > sgnFuncConfig ;
@@ -132,6 +133,9 @@ int runMassFitter(TString configFileName)
132133 const Value & fixSecondSigmaManualValue = config ["FixSecondSigmaManual" ];
133134 readArray (fixSecondSigmaManualValue , fixSecondSigmaManual );
134135
136+ const Value & fixMeanManualValue = config ["FixMeanManual" ];
137+ readArray (fixMeanManualValue , fixMeanManual );
138+
135139 const Value & ptMinValue = config ["PtMin" ];
136140 readArray (ptMinValue , ptMin );
137141
@@ -396,16 +400,18 @@ int runMassFitter(TString configFileName)
396400
397401 TH1D * hMeanToFix = NULL ;
398402 if (fixMean ) {
399- auto inputFileMean = TFile ::Open (meanFile .data ());
400- if (!inputFileMean ) {
401- return -3 ;
402- }
403- hMeanToFix = static_cast < TH1D * > (inputFileMean -> Get ("hRawYieldsMean" ));
404- hMeanToFix -> SetDirectory (0 );
405- if (static_cast < unsigned int > (hMeanToFix -> GetNbinsX ()) != nPtBins ) {
406- cout << "WARNING: Different number of bins for this analysis and histo for fix mean" << endl ;
403+ if (fixMeanManual .empty ()) {
404+ auto inputFileMean = TFile ::Open (meanFile .data ());
405+ if (!inputFileMean ) {
406+ return -3 ;
407+ }
408+ hMeanToFix = static_cast < TH1D * > (inputFileMean -> Get ("hRawYieldsMean" ));
409+ hMeanToFix -> SetDirectory (0 );
410+ if (static_cast < unsigned int > (hMeanToFix -> GetNbinsX ()) != nPtBins ) {
411+ cout << "WARNING: Different number of bins for this analysis and histo for fix mean" << endl ;
412+ }
413+ inputFileMean -> Close ();
407414 }
408- inputFileMean -> Close ();
409415 }
410416
411417 TH1D * hSecondSigmaToFix = NULL ;
@@ -550,7 +556,19 @@ int runMassFitter(TString configFileName)
550556 massFitter -> setUseLikelihoodFit ();
551557 }
552558 if (fixMean ) {
553- massFitter -> setFixGaussianMean (hMeanToFix -> GetBinContent (iPt + 1 ));
559+ if (fixMeanManual .empty ()) {
560+ massFitter -> setFixGaussianMean (hMeanToFix -> GetBinContent (iPt + 1 ));
561+ cout << "*****************************"
562+ << "\n"
563+ << "FIXED MEAN: " << hMeanToFix -> GetBinContent (iPt + 1 ) << "\n"
564+ << "*****************************" << endl ;
565+ } else {
566+ massFitter -> setFixGaussianMean (fixMeanManual [iPt ]);
567+ cout << "*****************************"
568+ << "\n"
569+ << "FIXED MEAN: " << fixMeanManual [iPt ] << "\n"
570+ << "*****************************" << endl ;
571+ }
554572 }
555573 if (fixSigma ) {
556574 if (fixSigmaManual .empty ()) {
@@ -559,14 +577,12 @@ int runMassFitter(TString configFileName)
559577 << "\n"
560578 << "FIXED SIGMA: " << hSigmaToFix -> GetBinContent (iPt + 1 ) << "\n"
561579 << "*****************************" << endl ;
562- } else if (! fixSigmaManual . empty ()) {
580+ } else {
563581 massFitter -> setFixGaussianSigma (fixSigmaManual [iPt ]);
564582 cout << "*****************************"
565583 << "\n"
566584 << "FIXED SIGMA: " << fixSigmaManual [iPt ] << "\n"
567585 << "*****************************" << endl ;
568- } else {
569- cout << "WARNING: impossible to fix sigma! Wrong fix sigma file or value!" << endl ;
570586 }
571587 }
572588 if (fixSecondSigma ) {
@@ -576,14 +592,12 @@ int runMassFitter(TString configFileName)
576592 << "\n"
577593 << "FIXED SIGMA: " << hSecondSigmaToFix -> GetBinContent (iPt + 1 ) << "\n"
578594 << "*****************************" << endl ;
579- } else if (! fixSecondSigmaManual . empty ()) {
595+ } else {
580596 massFitter -> setFixSecondGaussianSigma (fixSecondSigmaManual [iPt ]);
581597 cout << "*****************************"
582598 << "\n"
583599 << "FIXED SIGMA: " << fixSecondSigmaManual [iPt ] << "\n"
584600 << "*****************************" << endl ;
585- } else {
586- cout << "WARNING: impossible to fix sigma! Wrong fix sigma file or value!" << endl ;
587601 }
588602 }
589603
0 commit comments