1 research outputs found

    GRIFFINCollaboration/GRSISort: Overdue Ozelot

    No full text
    <p><strong>New</strong></p> <ul> <li>grsiframe: Replacement for grsiproof, based on ROOT's RDataFrame instead of the obsolete PROOF. grsiframe uses "helpers" instead of "selectors" and a number of the latter that have been translated into the former can be found in the examples directory.</li> <li>FastTiminingHistSelector: A selector to create fast timing histograms from a prepared tree of fast timing information.</li> <li>checklog.sh script in examples is a quick script to check a log-file to see if the sort of a subrun ended successfully or not. Simply checks if the last line is "bye,bye" (good) or "Deleting thread" (bad).</li> <li>sort.sh script in examples can be used to sort files and can be run with multiple instances in parallel. Automatically saves the output of the sorting into log files which can be check with checklog.sh script to see if the sorting finished.</li> <li>TLevelScheme: New class to create, plot, and save level schemes. Includes some modification to the behavior of GCanvas if the canvas name is "LevelScheme".</li> <li>TEfficiencyCalibrator: New GUI to automatically take spectra created by the effiency helper to calculate efficiency curves, including summing in and summing out. The calculation of the latter still has some bugs in it.</li> <li>TRedirect class redirect stdout and stderr to a file as long as the object exists, i.e. until it goes out of scope or is deleted.</li> <li>EnableCrosstalkCorrection program allows enabling crosstalk correction for a list of analysis files.</li> <li>PlotVsRun allows plotting histograms vs the run number.</li> <li>ReadCalFromRoot loops over the provided root files and writes out a .cal file for each one of them.</li> <li>SetOdbFromData loops over the provided root files and checks if the PPG information read from the ODB matches the data. Writes out a line for each file whether the information was already correct, some error occured, or if it was updated.</li> <li>checkSort loops over the provided analysis root files and checks if any problem with repeated events occured (the bug making this check necessary has been fixed by now).</li> </ul> <p><strong>Improvements</strong></p> <ul> <li>TGRSIUtilities now provides a trim function and the separate versions in GValue, TChannel, and TRunInfo have been removed.</li> <li>GValue: It is now possible to provide a default value to <code>GValue::Value</code> which is used instead of <code>NaN</code> if the requested value is not found.</li> <li>Globals.h now provides a function <code>std::string hex(T val, int width = -1)</code> that formats the provided value in hexadecimal with lead 0x and if the provided width is positive pads it with zeroes up to that width. It also provides a <code>void SetGRSIEnv()</code> function to set the environment for grsisort, and for linux systems a <code>void PrintGdbStacktrace()</code> function to print the stack trace using gdb.</li> <li>TSinglePeak and all its children now have a working Sigma and FWHM function, and the <code>InitializeParameters</code> function can take a range which is used as limits for the centroid.</li> <li>TPeakFitter uses the range as limit for the centroid and doesn't include it when releasing all parameters if the fit failed to give good errors. Also returns the <code>TFitResultPtr</code> to allow users to access e.g. the covariance matrix.</li> <li>Made some adjustments to make grsisort work with ROOT 6.24 and 6.26.</li> <li>TCalibrationGraphSet: Added options to set marker type, as well as setting line colors and marker colors in one single function and adding axis titles. Also added functions to get minimum and maximum x- and y-values. When adding graphs to the set, the colors are initialized to the current size of the set.</li> <li>TChannel now supports multiple ranges for calibrations, corrections for time drifts (if digitizer clocks are not synched properly) and added GetTime function which is now called by <code>TDetectorHit</code> and simply calles the GetTime function of the mnemonic.</li> <li>TMnemomic warns if the base class is being used instead of the version defined in the data library. Also includes GetTime function that takes care of the different time stamp units of different digitizer etc.</li> <li>Instead of looping over the vector of fragments and adding the fragments on at a time to the <code>UnpackedEvent</code> class, we now simply set the raw data to the whole vector at once.</li> <li>TGRSIMaps includes a function to emplace elements.</li> <li>Added multiple new options to grsisort, mostly used by grsiproof and grsiframe.</li> <li>TGRSISelector includes a check for the size of object to warn if ROOT's limit of 1 GB is reached.</li> <li>Replaced (most?) uses of <code>printf</code> with <code>std::cout</code>.</li> <li>TNucleus offers option to get the transition sorted by energy or intensity. To that effect two lists of transitions are kept simultaneously.</li> <li>TPulseAnalyzer has been ported to the latest version from SFU TIPSort code.</li> <li>Updated TScaler to get ratio of two variables of the last scaler entry (used in EMMA). Also scalers are now actually written to file at the end.</li> <li>TSortingDiagnostics now includes a map of channels missing in the calibration file.</li> <li>TSourceCalibration zooms graph and residual simultaneously, had some bugs fixed as well.</li> <li>Improved and unified <code>Print</code> statements for detectors.</li> <li>TRunInfo now has a function <code>CreateLabel</code> that returns a string created using the run and sub-run numbers in it. Before this code was copied in multiple places of grsisort.</li> <li>Added new event building mode "Skip" that skips the step of sorting the fragments because they are already sorted.</li> <li>The makefile honors the c++ standard root-config returns and includes support for HIL data library.</li> <li>WriteCalToRoot output updated to show more clearly which files were update successfully and where problems occured.</li> </ul> <p><strong>Bug fixes</strong></p> <ul> <li>grsiproof: <code>--max-events</code> flag now works, additional options for PROOF added, log file names now include the run and sub-run number(s).</li> <li>The use of multiple threads to write the analysis file has led to problems with single events being repeated thousands of times, leading to spikes in the energy or time histograms. So we have reverted now to having TAnalysisWriteLoop write a single TFile directly instead of using the <code>TAnaysisWriteLoopClient</code> class.</li> <li>TPeakFitter used to crash when adding and removing peaks between fits.</li> <li>TSinglePeak and children now first set the parameter, then the limits, this avoids warnings that the parameter (which is 0 at that point) is outside the limits.</li> </ul&gt
    corecore