ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/grimes/L1Menu/interface/l1menu/TriggerRatePlot.h
Revision: 1.6
Committed: Tue Jul 2 23:30:35 2013 UTC (11 years, 10 months ago) by grimes
Content type: text/plain
Branch: MAIN
Changes since 1.5: +2 -4 lines
Log Message:
Various changes to make interface conformance better, and dropping old unrequired methods

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 grimes 1.5 #include <vector>
7 grimes 1.1
8     //
9     // Forward declarations
10     //
11     class TH1;
12     namespace l1menu
13     {
14 grimes 1.6 class IEvent;
15 grimes 1.1 class ITrigger;
16 grimes 1.4 class L1TriggerDPGEvent;
17 grimes 1.2 class ReducedMenuSample;
18 grimes 1.4 class ReducedEvent;
19     class ISample;
20 grimes 1.1 }
21    
22    
23     namespace l1menu
24     {
25     /** @brief Class that plots trigger rates versus threshold.
26     *
27     * @author Mark Grimes (mark.grimes@bristol.ac.uk)
28     * @date 24/May/2013
29     */
30     class TriggerRatePlot
31     {
32     public:
33     /** @brief Constructor that sets the trigger to plot for, the histogram to plot into, and the trigger parameter to vary.
34     *
35     * Note that the title of the histogram is modified to record the state of the trigger (all other parameters).
36     *
37 grimes 1.5 * @param[in] trigger The trigger that the plot will be created for. The trigger should be set exactly as you want
38     * the plots made for it, e.g. with the correct eta cuts already set. The other thresholds are
39     * not modified so you should set these to zero beforehand if that's what you want. The trigger
40     * is copied so these cannot be changed afterwards.
41     * @param[in] pHistogram The root histogram to fill with the rates. This should be set up with the required binning
42     * beforehand. The title is changed to record the trigger name, version, parameter plotted against
43     * and other parameter values.
44     * @param[in] versusParameter The trigger parameter to plot along the x-axis. Defaults to "threshold1".
45     * @param[in] scaledParameters A list of parameters that should be scaled along with the versusParameter. The ratio between each
46     * parameter and the versusParameter at the time of construction is kept as the versusParameter is
47     * changed. A check is made to ensure the versusParameter is taken out of the list if it is present.
48 grimes 1.1 */
49 grimes 1.5 TriggerRatePlot( const l1menu::ITrigger& trigger, std::unique_ptr<TH1> pHistogram, const std::string& versusParameter="threshold1", const std::vector<std::string> scaledParameters=std::vector<std::string>() );
50 grimes 1.2 TriggerRatePlot( l1menu::TriggerRatePlot& otherTriggerRatePlot ) = delete;
51     TriggerRatePlot& operator=( l1menu::TriggerRatePlot& otherTriggerRatePlot ) = delete;
52 grimes 1.1
53     /** @brief Explicit rvalue constructor to allow moving of TriggerRatePlot objects. */
54     TriggerRatePlot( l1menu::TriggerRatePlot&& otherTriggerRatePlot ) noexcept;
55     /** @brief Explicit rvalue assignment operator to allow moving of TriggerRatePlot objects. */
56     TriggerRatePlot& operator=( l1menu::TriggerRatePlot&& otherTriggerRatePlot ) noexcept;
57    
58     virtual ~TriggerRatePlot();
59 grimes 1.4
60 grimes 1.6 void addEvent( const l1menu::IEvent& event );
61 grimes 1.4 void addSample( const l1menu::ISample& sample );
62 grimes 1.1
63 grimes 1.3 /** @brief Returns the trigger being used to create the plot. */
64     const l1menu::ITrigger& getTrigger() const;
65    
66 grimes 1.1 /** @brief Returns the internal pointer to the root histogram. Ownership is retained by TriggerRatePlot. */
67     TH1* getPlot();
68    
69     /** @brief Tells TriggerRatePlot to relinquish ownership of the internal root histogram. A pointer to the
70     * histogram is also returned.
71     *
72     * Note that the pointer is still held so that further operations on this object are still valid,
73     * just that the TH1 won't be deleted when the instance goes out of scope. */
74     TH1* relinquishOwnershipOfPlot();
75     protected:
76     std::unique_ptr<l1menu::ITrigger> pTrigger_;
77     std::unique_ptr<TH1> pHistogram_;
78     /// The parameter to plot against, usually "threshold1";
79     std::string versusParameter_;
80 grimes 1.2 /// Pointer to the versusParameter_ reference in pTrigger_ to avoid expensive string comparison look ups
81     float* pParameter_;
82 grimes 1.5 /// A vector of pointers of any other parameters that should be scaled, and what the scaling should be.
83     std::vector< std::pair<float*,float> > otherParameterScalings_;
84 grimes 1.1 /// Flag to say whether the histogram should be deleted when this instance goes out of scope.
85     bool histogramOwnedByMe_;
86     };
87     }
88     #endif