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

Comparing UserCode/MitProd/TreeFiller/interface/AssociationMap.h (file contents):
Revision 1.1 by loizides, Tue Jul 1 14:39:28 2008 UTC vs.
Revision 1.10 by paus, Sat May 5 16:49:58 2012 UTC

# Line 1 | Line 1
1   //--------------------------------------------------------------------------------------------------
2   // $Id$
3   //
4 < // Association Map
4 > // AssociationMap
5   //
6 < // wrapper for std::map, used to resolve links during tree filling
6 > // Wrapper for std::map, used to resolve links during tree filling.
7   //
8 < // Authors: J.Bendavid
8 > // Authors: C.Paus, J.Bendavid, C.Loizides
9   //--------------------------------------------------------------------------------------------------
10  
11 < #ifndef TREEFILLER_ASSOCIATIONMAP_H
12 < #define TREEFILLER_ASSOCIATIONMAP_H
11 > #ifndef MITPROD_TREEFILLER_ASSOCIATIONMAP_H
12 > #define MITPROD_TREEFILLER_ASSOCIATIONMAP_H
13  
14   #include <map>
15   #include <TObject.h>
16 + #include "FWCore/MessageLogger/interface/MessageLogger.h"
17  
18   namespace mithep
19   {
20    template <class EdmClass, class MitClass> class AssociationMap : public TObject
21    {
22 +  public:
23      typedef std::map<EdmClass, MitClass> fwdMapType;
24      typedef std::map<MitClass, EdmClass> revMapType;
25      
26 <    public:
27 <      AssociationMap() : edmProductId_(0) {}
28 <      ~AssociationMap() {}
29 <      
30 <      void Add(EdmClass edmObj, MitClass mitObj) {
31 <        fwdMap[edmObj]=mitObj;
32 <        //revMap[mitObj]=edmObj;
33 <        revMap.insert(std::pair<MitClass, EdmClass>(mitObj,edmObj));
34 <      }
35 <      
36 <      MitClass GetMit(EdmClass edmObj) const {
37 <        //MitClass iter = fwdMap.find(edmObj);
38 <        //fwdMapType::iterator iter;
39 <        //fwdIter = fwdMap.find(edmObj);
40 <        //if ( iter != fwdMap.end() )
41 <        //      return iter->second;
42 <        //else return 0;
43 <        return fwdMap.find(edmObj)->second;
44 <      }
45 <      
46 <       EdmClass GetEdmRef(MitClass mitObj) const {
47 < //         //EdmClass iter = revMap.find(mitObj);
48 < // //   revMapType::iterator iter = revMap.find(mitObj);
49 < // //   if ( iter != revMap.end() )
50 < // //           return iter->second;
51 < // //   else return 0;
52 <        return revMap.find(mitObj)->second;
53 <       }
54 <      
55 <      Int_t GetEntries() { return fwdMap.size(); }
56 <      
57 <      void Reset() {
58 <        fwdMap.clear();
59 <        revMap.clear();
60 <      }
61 <      
62 <        Int_t GetEdmProductId() const { return edmProductId_; }
63 <        void  SetEdmProductId(Int_t id) { edmProductId_ = id; }
26 >    AssociationMap() : edmProductId_(0) {}
27 >    ~AssociationMap() {}
28 >    
29 >    void              Add(EdmClass edmObj, MitClass mitObj);
30 >    EdmClass          GetEdm(MitClass mitObj)    const;
31 >    Int_t             GetEdmProductId()          const { return edmProductId_;  }
32 >    Int_t             GetEntries()               const { return fwdMap_.size(); }
33 >    MitClass          GetMit(EdmClass edmObj)    const;
34 >    const char       *GetBrName()                const { return brname_.c_str();           }
35 >    bool              HasMit(EdmClass edmObj)    const;
36 >    void              Reset()                          { fwdMap_.clear(); revMap_.clear(); }
37 >    void              SetEdmProductId(Int_t id)        { edmProductId_ = id;               }
38 >    void              SetBrName(const std::string &n)  { brname_ = n;                      }
39 >    void              SetBrName(const char *n)         { brname_ = n;                      }
40 >    const fwdMapType &FwdMap()                   const { return fwdMap_;                   }
41 >    const revMapType &RevMap()                   const { return revMap_;                   }
42 >    
43 >  protected:
44 >    fwdMapType   fwdMap_;       //map between edm ref and mit ptr
45 >    revMapType   revMap_;       //map between mit ptr and edm ref
46 >    Int_t        edmProductId_; //product id for consistency check
47 >    std::string  brname_;       //branch name of MIT objects
48 >  };
49 > }
50 >
51 > //--------------------------------------------------------------------------------------------------
52 > template <class EdmClass, class MitClass>
53 > inline void mithep::AssociationMap<EdmClass,MitClass>::Add(EdmClass edmObj, MitClass mitObj)
54 > {
55 >  fwdMap_[edmObj]=mitObj;
56 >  revMap_.insert(std::pair<MitClass, EdmClass>(mitObj,edmObj));
57 > }
58 >
59 > //--------------------------------------------------------------------------------------------------
60 > template <class EdmClass, class MitClass>
61 > inline MitClass mithep::AssociationMap<EdmClass,MitClass>::GetMit(EdmClass edmObj) const
62 > {
63 >  typename fwdMapType::const_iterator iter = fwdMap_.find(edmObj);
64  
65 <    protected:
66 <        fwdMapType fwdMap;
67 <        revMapType revMap;
68 <        Int_t edmProductId_;
65 >  if (iter != fwdMap_.end())
66 >    return iter->second;
67 >  else throw edm::Exception(edm::errors::Configuration, "AssociationMap::GetMit()\n")
68 >         << "Error! EDM Object (" << typeid(edmObj).name()
69 >         << ") not found in AssociationMap (" << typeid(*this).name() << ")." << std::endl;
70 > }
71        
72 <  };
72 > //--------------------------------------------------------------------------------------------------
73 > template <class EdmClass, class MitClass>
74 > inline EdmClass mithep::AssociationMap<EdmClass,MitClass>::GetEdm(MitClass mitObj) const
75 > {
76 >  typename revMapType::const_iterator iter = revMap_.find(mitObj);
77 >  if (iter != revMap_.end())
78 >    return iter->second;
79 >  else throw edm::Exception(edm::errors::Configuration, "AssociationMap::GetEdm()\n")
80 >         << "Error! MITHEP Object (" << typeid(mitObj).name()
81 >         << ") not found in AssociationMap (" << typeid(*this).name() << ")." << std::endl;
82 > }
83 >
84 > //--------------------------------------------------------------------------------------------------
85 > template <class EdmClass, class MitClass>
86 > inline bool mithep::AssociationMap<EdmClass,MitClass>::HasMit(EdmClass edmObj) const
87 > {
88 >  typename fwdMapType::const_iterator iter = fwdMap_.find(edmObj);
89 >
90 >  if (iter != fwdMap_.end())
91 >    return true;
92 >  else
93 >    return false;
94   }
95   #endif

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines