ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/MitProd/TreeFiller/interface/BaseFiller.h
Revision: 1.8
Committed: Tue Jul 8 12:38:19 2008 UTC (16 years, 9 months ago) by loizides
Content type: text/plain
Branch: MAIN
Changes since 1.7: +28 -2 lines
Log Message:
Updated Fillers to use GetProduct function in BaseFiller. This function will determine whether a product is valid and otherwise exit.

File Contents

# Content
1 //--------------------------------------------------------------------------------------------------
2 // $Id: BaseFiller.h,v 1.7 2008/07/07 16:14:01 loizides Exp $
3 //
4 // BaseFiller
5 //
6 // Base class to define the interface for a filler.
7 //
8 // Authors: C.Paus
9 //--------------------------------------------------------------------------------------------------
10
11 #ifndef TREEFILLER_BASEFILLER_H
12 #define TREEFILLER_BASEFILLER_H
13
14 #include "FWCore/Framework/interface/Event.h"
15 #include "FWCore/Framework/interface/Frameworkfwd.h"
16 #include "FWCore/ParameterSet/interface/ParameterSet.h"
17 #include "FWCore/MessageLogger/interface/MessageLogger.h"
18 #include "DataFormats/Common/interface/Handle.h"
19 #include "MitAna/DataUtil/interface/TreeWriter.h"
20
21 namespace mithep
22 {
23 class BaseFiller
24 {
25 public:
26 BaseFiller(const edm::ParameterSet &cfg, const char *name, bool active=true);
27 virtual ~BaseFiller() {}
28
29 bool Active() const { return active_; }
30 virtual void BookDataBlock(TreeWriter &tws) = 0;
31 virtual void FillDataBlock(const edm::Event &e, const edm::EventSetup &es) = 0;
32 const std::string &Name() const { return name_; }
33 virtual void ResolveLinks(const edm::Event &e, const edm::EventSetup &es) {}
34
35 protected:
36 const edm::ParameterSet &Conf() const { return config_; }
37 void PrintErrorAndExit(const char *msg) const;
38 template <typename TYPE>
39 void GetProduct(const std::string name, edm::Handle<TYPE> &product,
40 const edm::Event &event) const;
41
42 const std::string name_; //name of this filler
43 const edm::ParameterSet config_; //parameter set for this filler
44 const bool active_; //=1 if active
45 };
46 }
47
48 //--------------------------------------------------------------------------------------------------
49 template <typename TYPE>
50 inline void mithep::BaseFiller::GetProduct(const std::string edmname, edm::Handle<TYPE> &product,
51 const edm::Event &event) const
52 {
53 // Try to access data collection from EDM file. We check if we really get just one
54 // product with the given name. If not we print an error and exit.
55
56 try {
57 event.getByLabel(edm::InputTag(edmname),product);
58 if (!product.isValid())
59 throw edm::Exception(edm::errors::Configuration, "BaseFiller::GetProduct()\n")
60 << "Cannot get collection with label " << edmname << std::endl;
61 } catch (...) {
62 edm::LogError("BaseFiller") << "Cannot get collection with label "
63 << edmname << std::endl;
64 PrintErrorAndExit(Form("Cannot get collection with label %s", edmname.c_str()));
65 }
66 }
67 #endif