- Member __cudaSafeCall (cudaError err, const char *file, const int line)
KS: There is plenty of useful stuff here https://github.com/NVIDIA/cuda-samples/blob/master/Samples/1_Utilities/deviceQuery/deviceQuery.cpp
KS: We might want to port some of these utilities, for example having bool if there is unified memory etc.
- Member BinnedSplineHandler::BinnedSplineHandler (ParameterHandlerGeneric *xsec_, MaCh3Modes *Modes_)
- ETA - do all of these functions and members actually need to be public?
- Member BinnedSplineHandler::CalcSplineWeights () override
- KS: Once could use "ParamValues" but this will result in tiny bit different results due to floating point precision
- Member BinnedSplineHandler::~BinnedSplineHandler ()
- it need some love
- Member CalculateEnu (double PLep, double cosTheta, double EB, bool neutrino)
- WARNING this is hardcoded
- Member CleanVector (std::vector< std::vector< std::vector< std::vector< std::vector< std::vector< std::vector< T > > > > > > > &vec)
- Use recursive to make it more scalable in future
- Member CompareHistograms (const TH1 *h1, const TH1 *h2, const std::string &histName, const std::string &folderName)
- add checks for stuff like bin content etc
- Member FitterBase::SanitiseInputs ()
- consider expanding into ParmaterHandler and add more sanitisers
- Member FitterBase::StartFromPreviousFit (const std::string &FitName)
- implement some check that number of params matches etc
- File GetPenaltyTerm.cpp
- KS: This should really be moved to MCMC Processor
- Member MaCh3CovarianceFactory (manager *FitManager, const std::string &PreFix)
- add adaptive stuff
- Member MaCh3ManagerFactory (int argc, char **argv)
- KS: May need some recursive magic to reduce amount of hardcoding
- Member MaCh3Plotting::InputFile::Dump () const
- Same as for Summarise(), could add a check that the file info has actually been filled.
- Member MaCh3Plotting::InputFile::hasLLHScans
I think it would be nice to store all the InputFile data in some non root, maybe custom c++ types, and have separate reader classes for potential different input file formats that can convert to these types.
Currently all fitters use root but maybe some wonderful day in the far far future this wont be the case. Doing things this way we could maintain the possible future option of moving away from root???
- Member MaCh3Plotting::InputFile::Summarise () const
- Could add some flag to this to check if the relevant information has actually been filled already and if not give some warning or print only some of the values.
- Class MaCh3Plotting::InputManager
A lot of string comparisons going on in the code for the post fit errors, would maybe be good to implement some kind of indexing for parameters and just have a map between the parameter names and this index to be used internally by the class.
Add code to read MCMC from input file
Add code to read Sigma variations. There are usually so many of these that we might not want to read them all into memory at once when adding the file but maybe just check to see what ones are in the file, then be able to read them on the fly later.
Add code to read in Violin plots from the postfit error output files.
- Member MaCh3Plotting::InputManager::fillFileInfo (InputFile &inputFileDef, bool printThoughts=true)
add a check here to make sure all the scans that are in the file are being picked up by the reader, and warn if any are not being used
Would like to be able to specify what kind of file and what fitter an input is from on the command like: e.g. like `plotApp [options] <fileName1>;<fileType>;<fitterName>... and only try to auto-detect it if its not specified, this would save some time and would also be very helpful in situations where we can't auto-detect e.g. if there is some kind of overlap in the file structure between two fitters
- Member MaCh3Plotting::PlottingManager::addUserOption ()
Implement this.
Would be good to add functionality to this to allow user to add their own options.
The way I can think to do this would be have fn addUserOption() to set the options, defining the cmd line option (e.g. -x), the name of the option, and maybe some description of the option to be used in the help message
can then store these options in some map or something to be retrieved later by getUserOption()
- Member MaCh3Plotting::PlottingManager::getOutputName (const std::string &suffix)
- Make this support .root files too
- Member MaCh3Plotting::PlottingManager::getUserOption (std::string option)
- Implement this.
- Member MaCh3Plotting::PlottingManager::initialise ()
- should add some kind of validataConfigs() method to got throught all of the specified config files and make sure that all provided options are valid and all necessary options are provided as it can be pretty annoying and difficult to identify what's going wrong when yaml just fails to find an option at runtime
- Member MaCh3Plotting::PlottingManager::parseInputs (int argc, char *const *argv)
- make this able to return any un-parsed arguments so that user can specify their own arguments for use in their plotting scripts
- Member MaCh3Plotting::PlottingManager::usage ()
Implement this.
could add some function to allow user to specify the help message for their particular script, then auto generate what the cmd line syntax looks like based on user specified options?
- Member mcmc::StartFromPreviousFit (const std::string &FitName) override
- implement some check that number of params matches etc
- Member MCMCProcessor::DrawPostfit ()
- this need revision
- Member MCMCProcessor::PowerSpectrumAnalysis ()
- KS: Code is awfully slow... I know how to make it faster (GPU scream in a distant) but for now just make it for two params, bit hacky sry...
- Member MinuitFit::MinuitFit (manager *const fitMan)
- KS: Make this in future configurable, for more see: https://root.cern.ch/doc/master/classROOT_1_1Math_1_1Minimizer.html
- Member OscProcessor::LoadAdditionalInfo () override
we should actually calculate central value and prior error but leave it for now...
remove this hardcoding (e.g., use a map or enum-to-name function)
- Member OscProcessor::OscProcessor (const std::string &InputFile)
- Here where we should add all unitarity triangles, fancy Jarlskog studies and other hacky things that only make sense for oscitations
- Member OscProcessor::PerformJarlskogAnalysis ()
- KS: We need to fix this hardcoding here. As right we do not have a way for storing reweight info in a chain...
- Member ParameterEnum
KS: Apply reweighted weight to plotting and Bayes Factor.
KS: Implement 2D reweighing like DayaBay.
KS: Implement Diagnostics/GetPenaltyTerm.cpp here.
- Member ParameterHandlerBase::PrintParameters () const
- remove it
- Member PCAHandler::ThrowParameters (const std::vector< std::unique_ptr< TRandom3 > > &random_number, double **throwMatrixCholDecomp, double *randParams, double *corr_throw, const std::vector< double > &fPreFitValue, const std::vector< double > &fLowBound, const std::vector< double > &fUpBound, int _fNumPar)
- KS: We don't check if param is out of bounds. This is more problematic for PCA params.
- File PlotMCMCDiag.cpp
- this need serious refactor
- Member SampleHandlerFD::SetupSplines ()=0
- abstract the spline initialisation completely to core
- Member SystType
- KS: Consider using enum class, it is generally recommended as safer. It will require many static_cast