5 #include "Math/ProbFunc.h" 6 #include "Math/DistFunc.h" 7 #include "Math/Minimizer.h" 8 #include "Math/Factory.h" 9 #include "Math/DistFunc.h" 13 #include "Math/Functor.h" 26 #include "TGraphErrors.h" 33 #include "TMultiGraph.h" 41 #define deleteWithPointer(ptr) {if(ptr!=NULL){ delete ptr;ptr=NULL;}} 44 enum content { SPECTRUM
48 enum forceType { DO_NOT_FORCE
53 enum analysisType { NO_ANALYSIS
58 enum parameterType { PARAMETER_OF_INTEREST
66 enum sentivityModes { MINUS_TWO_SIGMAS
74 enum systematicModes { ONE_SIGMA_BELOW = 0
80 enum rejectionFactor { REJECT995
87 enum basicParameter { PAR_SIGMA = -1
88 , PAR_SYST_BKG_TVALUE = -2
89 , PAR_LEFF_TVALUE = -3
91 , PAR_EFFICIENCY_TVALUE = -5
92 , PAR_SIGN_ACCEPTANCE_TVALUE = -6
93 , PAR_NOT_ASSIGNED = -900
94 , PAR_STAT_BKG_TVALUE = -120
95 , PAR_GAUSS_TVALUE = -220
107 enum sigmaModes { ESTIMATED, UPPER_LIMIT };
108 enum sigmaUnits { SIGMA_UNIT , EVENT_UNIT };
110 static const double DEFAULT_CL = 0.9 ;
111 static const double DEFAULT_SIMULATED_X0 = 0.1 ;
112 static const double DEFAULT_SIMULATED_SIGMA = 0.1 ;
113 static const double DEFAULT_SIMULATED_MU_GAUSS = 0.5 ;
114 static const double DEFAULT_SIMULATED_XMAX_B = 1.0 ;
115 static const double LOGSQR2PI = 0.918938533205 ;
116 static const double DEFAULT_EVENT_UPPER_LIMIT = 20.0 ;
118 static const double VERY_LARGE = 1.E19
120 , VERY_SMALL = -VERY_LARGE
121 , VERY_SMALL_LOG = -10000.
123 , AUTOMATIC = UNDEFINED*10.
124 , CRAZY = 98765432123456789.
128 enum flagType { VERY_LARGE_INT = 9999999
129 , VERY_SMALL_INT = -VERY_LARGE_INT
144 const string UNDEFINED_STRING=
"???";
146 const string LABEL_BAND =
"Band number" 147 , LABEL_ER =
"E_{r} (KeV)" 148 , LABEL_EVT_AFTER_SEL =
"Events after selection" 149 , LABEL_EVT_DAY =
"Events (day^{-1})" 150 , LABEL_EVT =
"Events" 151 , LABEL_EVT_MAX =
"Events_{max}" 152 , LABEL_EVT_KEV =
"Events (KeV^{-1})" 153 , LABEL_EVT_KG_DAY =
"Events (Kg^{-1} day^{-1})" 154 , LABEL_EVT_KG_DAY_KEV =
"Events (Kg^{-1} day^{-1} KeV^{-1})" 155 , LABEL_EVT_PE =
"Events (p.e^{-1})" 157 , LABEL_FLATTENED =
"Flattened log_{10}(S2/S1)" 158 , LABEL_LEFF =
"L_{eff}" 159 , LABEL_LEFF_TVALUE =
"t-Value for L_{eff}" 160 , LABEL_MASS =
"Mass (GeV/c^{2})" 161 , LABEL_NORMTO1 =
"Distribution norm. to 1" 162 , LABEL_LOG_LIKELIHOOD =
"-log(Likelihood)" 163 , LABEL_PVALUE =
"P-value" 164 , LABEL_Q_EXCLUSION =
"q_{excl.}" 165 , LABEL_S1 =
"S1 (p.e.)" 167 , LABEL_S2_OVER_S1 =
"S2/S1" 169 , LABEL_SIGMA =
"\\sigma (cm^{2})" 170 , LABEL_SIGMA_MAX =
"\\sigma_{max} (cm^{2})" 171 , LABEL_SLICE =
"Slice Number" 172 , LABEL_VESC =
"V_{esc}" 173 , LABEL_Y_UOVER2 =
"y=u/2" 282 void setName(TString nam=
"No_Name") { name = nam; };
295 static int analysisMode;
321 static TString getTypeName(
int type);
342 LKParameter(
int id,
int type,TString nam,
double initial,
double step
343 ,
double min,
double max);
346 virtual void printCurrent(
bool withErrors);
348 void setType(
int typ);
349 void setInitialValue(
double i);
350 virtual void setCurrentValue(
double c);
351 void setCurrentValueInMinuitUnits(
double c);
360 double getT0value() {
return t0;};
361 void setMinuitUnit(
double s=1.);
362 void setStep(
double st);
363 virtual void setSigma(
double sig);
364 void setSigmaInMinuitUnits(
double sig);
365 void setMinimum(
double mi);
366 void setMaximum(
double max);
369 double getCurrentValue();
370 double getCurrentValueInMinuitUnits();
371 double getInitialValue();
372 double getInitialValueInMinuitUnits();
374 double getMaximumInMinuitUnits();
376 double getMinimumInMinuitUnits();
378 double getStepInMinuitUnits();
380 TString getTypeName();
382 double getInitialSigma() {
return initialSigma;};
385 double getLLGausConstraint();
396 void setCommon(
bool c=
true);
405 void freeze(
bool doFreeze);
413 bool inCombinedMode();
415 void setCombinedMode(
bool mode=
true);
456 void setCurrentValue(
double val);
457 void setSigma(
double sig);
472 static TString getTheName(
int run);
481 void setUncertainty(
double unc) { uncertainty = unc;};
482 double getUncertainty() {
return uncertainty; };
484 static TString getTheName(
int b,
int run);
501 void setStatError(
double err);
502 void printCurrent(
bool withError);
505 static TString getTheName(
int b,
int run);
564 virtual double computeTheLogLikelihood()=0;
565 double computeTheConstraint();
579 double getSigmaHat();
589 bool parameterExists(
int p);
601 void addParameter(
int id,
int type,TString nam,
double initialVal
602 ,
double step,
double mi,
double ma);
628 void activateParameter(
LKParameter* param,
bool active=
true);
635 void removeParameter(
LKParameter* param,
bool tolerant=
false);
642 void removeParameter(
int id,
bool tolerant=
false);
644 void listParameters();
645 void printInitialParameters();
646 void printResultParameters();
647 void printCurrentParameters();
648 void printCurrentParameters(
bool with_err);
649 void ignoreParameter(
int id);
650 void setParameterType(
int id,
int type);
651 void setParameterValue(
int id,
double v);
652 void setInitialValue(
int id,
double v);
653 double getParameterValue(
int id);
654 double maximize(
bool freezeParametersOfInterest);
655 double maximizeNumerically(
int numberOfToys ,
bool freezeParametersOfInterest);
656 void setSeed(
double Inputseed) {seed = Inputseed;};
661 int getNTotalParameters();
662 int getNActiveParameters();
663 int getNParametersOfInterest();
664 int getNMinuitParameters();
665 int getNNuisanceParameters();
666 int getNParameters(
int type);
667 void resetParameters();
670 map<int,LKParameter*>* getParameters();
672 TH1F getPullsHisto();
685 static double shapeLikelihood( vector<int>* bins,
int nDist,
double** dists
692 void setCurrentValues(
const double* v,
const double* ers=NULL);
693 void setCurrentValuesInMinuitUnits(
const double*v,
const double*e=NULL);
694 void setCombinedMode(
bool mode=
true);
695 void printInitialHeader();
696 void printCurrentHeader();
697 bool checkConsistency();
698 bool inCombinedMode();
699 int mapMinuitParameters(
bool freezeParametersOfInterest);
700 int getNParametersForChi2();
701 void forceNParametersOfInterest(
int nF);
702 void clearTheParameters();
712 int nParametersOfInterest;
713 int nActiveParameters;
714 int nNuisanceParameters;
715 int forcedNParametersOfInterest;
717 vector<LKParameter*> MinuitParameters;
718 map<int,LKParameter*> parameters;
725 bool checkParameter(
int p,
bool shouldExist);
730 typedef map<int,LKParameter*>::iterator ParameterIterator;
732 #define TRAVERSE_PARAMETERS(it) \ 733 for(ParameterIterator it=parameters.begin(); it!=parameters.end(); it++) 774 void printFlagsAndParameters();
780 void estimateCrossSection();
781 bool initialize() {
return true;};
788 TGraph* getGraphOfLogLikelihood(
int n_points);
791 TGraph* getGraphAtQval(
double qval,
bool forceMuhatComp=
true);
792 double getSigmaAtQval(
double qval,
bool forceMuhatComp=
true);
793 double returnLimitHagar(
double cl,
bool forceMuhatComp=
true);
802 vector<TGraph*> getGraphOfParameters(
int n_points);
804 TGraph* getLikelihoodScanOfParameter(
int n_points,
LKParameter * par,
double mu = 0);
806 virtual double getWimpMass();
808 virtual void setData(
int dataType)=0;
810 virtual void generateAsimov(
double mu_prime)=0 ;
812 virtual void printEventSummary(
bool isForWiki=
false)=0;
814 virtual void generateToyDataset(
double seed,
double mu_prime)=0;
816 virtual double getSignalDefaultNorm()=0;
817 virtual double getSignalMultiplier()=0;
818 virtual void setSignalMultiplier(
double val)=0;
820 virtual void setTreeIndex(
int index )=0;
822 virtual vector<string> getTrueParamsNames() =0;
824 virtual vector<double> getTrueParams() =0;
826 virtual double getSafeguardValue()=0;
855 double computeTheLogLikelihood();
866 void printFlagsAndParameters();
868 double getWimpMass();
870 void setData(
int dataType);
872 void generateAsimov(
double mu_prime) ;
874 void generateToyDataset(
double seed,
double mu_prime);
876 double getSignalDefaultNorm();
877 double getSignalMultiplier();
878 void setSignalMultiplier(
double val);
880 void printEventSummary(
bool isForWiki=
false);
882 void setTreeIndex(
int index);
885 vector<string> getTrueParamsNames();
887 vector<double> getTrueParams();
890 double getSafeguardValue(){
return -999;};
892 double getSafeguardValue(
unsigned int exp);
907 map<int,ProfileLikelihood* > exps;
914 typedef map<int,ProfileLikelihood*>::iterator expIterator;
916 #define TRAVERSE_EXPERIMENTS(it) \ 917 for(expIterator it=exps.begin(); it!=exps.end(); it++) static TString getUpperSigmaLabel(int unit)
Definition: XeStat.cxx:61
static bool isAnalysisDefined(bool verbose=false)
Definition: XeStat.cxx:27
static void setAnalysisMode(int mode)
Definition: XeStat.cxx:12
TString getName()
helper method to return the name of this instance.
Definition: XeStat.h:285
static TString getSigmaUnitName(int unit)
Definition: XeStat.cxx:37
double LogD
Definition: XeStat.h:722
void setT0value(double val)
Definition: XeStat.h:359
Helper Class to send consistently formatted messages. It allows different levels of severity for the ...
Definition: XeUtils.h:22
static TString getAnalysisModeName()
Definition: XeStat.cxx:16
int getExperiment()
set the experiment number, usefull for combination
Definition: XeStat.h:291
double sigmaHat
Definition: XeStat.h:720
static TString getSigmaLabel(int unit)
Definition: XeStat.cxx:53
void setExperiment(int exp)
set the experiment number, usefull for combination
Definition: XeStat.h:288
static bool isCutsBased()
Definition: XeStat.cxx:13
static TString getSystematicModeName(int syst)
Definition: XeStat.cxx:18
static int getSigmaLinLog(int unit)
Definition: XeStat.cxx:69
LKParameter * sigPar
Definition: XeStat.h:835
static TString getSigmaModeName(int mode)
Definition: XeStat.cxx:45
static int getAnalysisMode()
Definition: XeStat.cxx:15
static bool checkAnalysisMode(TString name, int requested)
Definition: XeStat.cxx:80
vector< LKParameter * > paramList
add parameter to list of parame to be correlated
Definition: XeStat.h:460
void setName(TString nam="No_Name")
helper method to set the name of this instance.
Definition: XeStat.h:282
static bool isPL()
Definition: XeStat.cxx:14