ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/MitProd/TreeFiller/interface/BaseFiller.h
(Generate patch)

Comparing UserCode/MitProd/TreeFiller/interface/BaseFiller.h (file contents):
Revision 1.8 by loizides, Tue Jul 8 12:38:19 2008 UTC vs.
Revision 1.12 by loizides, Wed Sep 10 03:30:22 2008 UTC

# Line 8 | Line 8
8   // Authors: C.Paus
9   //--------------------------------------------------------------------------------------------------
10  
11 < #ifndef TREEFILLER_BASEFILLER_H
12 < #define TREEFILLER_BASEFILLER_H
11 > #ifndef MITPROD_TREEFILLER_BASEFILLER_H
12 > #define MITPROD_TREEFILLER_BASEFILLER_H
13  
14   #include "FWCore/Framework/interface/Event.h"
15   #include "FWCore/Framework/interface/Frameworkfwd.h"
# Line 17 | Line 17
17   #include "FWCore/MessageLogger/interface/MessageLogger.h"
18   #include "DataFormats/Common/interface/Handle.h"
19   #include "MitAna/DataUtil/interface/TreeWriter.h"
20 + #include "MitProd/ObjectService/interface/ObjectService.h"
21 + #include "MitProd/TreeFiller/interface/FillMitTree.h"
22 + #include <TString.h>
23  
24   namespace mithep
25   {
# Line 36 | Line 39 | namespace mithep
39        const edm::ParameterSet &Conf()   const { return config_; }
40        void                     PrintErrorAndExit(const char *msg) const;
41        template <typename TYPE>
42 <      void                     GetProduct(const std::string name, edm::Handle<TYPE> &product,
42 >      void                     GetProduct(const std::string name, edm::Handle<TYPE> &prod,
43                                            const edm::Event &event) const;    
44 +      template <typename TYPE>
45 +      bool                     GetProductSafe(const std::string name, edm::Handle<TYPE> &prod,
46 +                                              const edm::Event &event) const;    
47 +
48 +      ObjectService           *OS() { return FillMitTree::os(); }
49  
50        const std::string        name_;    //name of this filler
51        const edm::ParameterSet  config_;  //parameter set for this filler
# Line 47 | Line 55 | namespace mithep
55  
56   //--------------------------------------------------------------------------------------------------
57   template <typename TYPE>
58 < inline void mithep::BaseFiller::GetProduct(const std::string edmname, edm::Handle<TYPE> &product,
58 > inline void mithep::BaseFiller::GetProduct(const std::string edmname, edm::Handle<TYPE> &prod,
59                                             const edm::Event &event) const
60   {
61    // Try to access data collection from EDM file. We check if we really get just one
62    // product with the given name. If not we print an error and exit.
63  
64    try {
65 <    event.getByLabel(edm::InputTag(edmname),product);
66 <    if (!product.isValid())
65 >    event.getByLabel(edm::InputTag(edmname),prod);
66 >    if (!prod.isValid())
67        throw edm::Exception(edm::errors::Configuration, "BaseFiller::GetProduct()\n")
68          << "Cannot get collection with label " << edmname << std::endl;
69    } catch (...) {
# Line 64 | Line 72 | inline void mithep::BaseFiller::GetProdu
72      PrintErrorAndExit(Form("Cannot get collection with label %s", edmname.c_str()));
73    }
74   }
75 +
76 + //--------------------------------------------------------------------------------------------------
77 + template <typename TYPE>
78 + inline bool mithep::BaseFiller::GetProductSafe(const std::string edmname, edm::Handle<TYPE> &prod,
79 +                                               const edm::Event &event) const
80 + {
81 +  // Try to safely access data collection from EDM file. We check if we really get just one
82 +  // product with the given name. If not, we return false.
83 +
84 +  try {
85 +    event.getByLabel(edm::InputTag(edmname),prod);
86 +    if (!prod.isValid())
87 +      return false;
88 +  } catch (...) {
89 +    return false;
90 +  }
91 +  return true;
92 + }
93   #endif

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines