1 |
grimes |
1.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
|