1 |
#ifndef l1menu_ReducedSample_h
|
2 |
#define l1menu_ReducedSample_h
|
3 |
|
4 |
#include <string>
|
5 |
#include <memory>
|
6 |
#include <map>
|
7 |
|
8 |
#include "l1menu/ReducedEvent.h"
|
9 |
#include "l1menu/ISample.h"
|
10 |
|
11 |
// Forward declarations
|
12 |
namespace l1menu
|
13 |
{
|
14 |
class FullSample;
|
15 |
class TriggerMenu;
|
16 |
class ITrigger;
|
17 |
}
|
18 |
|
19 |
|
20 |
namespace l1menu
|
21 |
{
|
22 |
/** @brief A simplified sample that has been reduced to just storing the thresholds required for each trigger to pass.
|
23 |
*
|
24 |
* @author Mark Grimes (mark.grimes@bristol.ac.uk)
|
25 |
* @date 28/May/2013
|
26 |
*/
|
27 |
class ReducedSample : public l1menu::ISample
|
28 |
{
|
29 |
public:
|
30 |
/** @brief Load from a file in protobuf format. */
|
31 |
ReducedSample( const std::string& filename );
|
32 |
ReducedSample( const l1menu::FullSample& originalSample, const l1menu::TriggerMenu& triggerMenu );
|
33 |
ReducedSample( const l1menu::TriggerMenu& triggerMenu );
|
34 |
virtual ~ReducedSample();
|
35 |
|
36 |
void addSample( const l1menu::FullSample& originalSample );
|
37 |
|
38 |
/** @brief Save to a file in protobuf format (protobuf in src/protobuf/l1menu.proto). */
|
39 |
void saveToFile( const std::string& filename ) const;
|
40 |
|
41 |
const l1menu::TriggerMenu& getTriggerMenu() const;
|
42 |
bool containsTrigger( const l1menu::ITrigger& trigger, bool allowOlderVersion=false ) const;
|
43 |
const std::map<std::string,ReducedEvent::ParameterID> getTriggerParameterIdentifiers( const l1menu::ITrigger& trigger, bool allowOlderVersion=false ) const;
|
44 |
|
45 |
//
|
46 |
// Implementations required for the ISample interface
|
47 |
//
|
48 |
virtual size_t numberOfEvents() const;
|
49 |
virtual const l1menu::IEvent& getEvent( size_t eventNumber ) const;
|
50 |
virtual std::unique_ptr<l1menu::ICachedTrigger> createCachedTrigger( const l1menu::ITrigger& trigger ) const;
|
51 |
virtual float eventRate() const;
|
52 |
virtual void setEventRate( float rate );
|
53 |
virtual float sumOfWeights() const;
|
54 |
virtual std::unique_ptr<const l1menu::IMenuRate> rate( const l1menu::TriggerMenu& menu ) const;
|
55 |
|
56 |
private:
|
57 |
std::unique_ptr<class ReducedSamplePrivateMembers> pImple_;
|
58 |
}; // end of class ReducedSample
|
59 |
|
60 |
} // end of namespace l1menu
|
61 |
|
62 |
#endif
|