ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/grimes/L1Menu/interface/l1menu/TriggerRatePlot.h
Revision: 1.1
Committed: Tue May 28 23:14:01 2013 UTC (11 years, 11 months ago) by grimes
Content type: text/plain
Branch: MAIN
Log Message:
Numerous changes

File Contents

# User Rev Content
1 grimes 1.1 #ifndef l1menu_TriggerRatePlot_h
2     #define l1menu_TriggerRatePlot_h
3    
4     #include <memory>
5     #include <string>
6    
7     //
8     // Forward declarations
9     //
10     class TH1;
11     namespace l1menu
12     {
13     class ITrigger;
14     class IEvent;
15     }
16    
17    
18     namespace l1menu
19     {
20     /** @brief Class that plots trigger rates versus threshold.
21     *
22     * @author Mark Grimes (mark.grimes@bristol.ac.uk)
23     * @date 24/May/2013
24     */
25     class TriggerRatePlot
26     {
27     public:
28     /** @brief Constructor that sets the trigger to plot for, the histogram to plot into, and the trigger parameter to vary.
29     *
30     * Note that the title of the histogram is modified to record the state of the trigger (all other parameters).
31     *
32     * @param[in] trigger The trigger that the plot will be created for. The trigger should be set exactly as you want
33     * the plots made for it, e.g. with the correct eta cuts already set. The other thresholds are
34     * not modified so you should set these to zero beforehand if that's what you want. The trigger
35     * is copied so these cannot be changed afterwards.
36     * @param[in] pHistogram The root histogram to fill with the rates. This should be set up with the required binning
37     * beforehand. The title is changed to record the trigger name, version, parameter plotted against
38     * and other parameter values.
39     * @param[in] versusParameter The trigger parameter to plot along the x-axis. Defaults to "threshold1".
40     */
41     TriggerRatePlot( const l1menu::ITrigger& trigger, std::unique_ptr<TH1> pHistogram, const std::string versusParameter="threshold1" );
42    
43     /** @brief Explicit rvalue constructor to allow moving of TriggerRatePlot objects. */
44     TriggerRatePlot( l1menu::TriggerRatePlot&& otherTriggerRatePlot ) noexcept;
45     /** @brief Explicit rvalue assignment operator to allow moving of TriggerRatePlot objects. */
46     TriggerRatePlot& operator=( l1menu::TriggerRatePlot&& otherTriggerRatePlot ) noexcept;
47    
48     virtual ~TriggerRatePlot();
49     void addEvent( const l1menu::IEvent& event ) const;
50    
51     /** @brief Returns the internal pointer to the root histogram. Ownership is retained by TriggerRatePlot. */
52     TH1* getPlot();
53    
54     /** @brief Tells TriggerRatePlot to relinquish ownership of the internal root histogram. A pointer to the
55     * histogram is also returned.
56     *
57     * Note that the pointer is still held so that further operations on this object are still valid,
58     * just that the TH1 won't be deleted when the instance goes out of scope. */
59     TH1* relinquishOwnershipOfPlot();
60     protected:
61     std::unique_ptr<l1menu::ITrigger> pTrigger_;
62     std::unique_ptr<TH1> pHistogram_;
63     /// The parameter to plot against, usually "threshold1";
64     std::string versusParameter_;
65     /// Flag to say whether the histogram should be deleted when this instance goes out of scope.
66     bool histogramOwnedByMe_;
67     };
68     }
69     #endif