ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/MitAna/TreeMod/interface/BaseMod.h
Revision: 1.10
Committed: Thu Nov 27 22:32:24 2008 UTC (16 years, 5 months ago) by loizides
Content type: text/plain
Branch: MAIN
Changes since 1.9: +34 -3 lines
Log Message:
Add handy accessors for published/public objects

File Contents

# User Rev Content
1 loizides 1.6 //--------------------------------------------------------------------------------------------------
2 loizides 1.10 // $Id: BaseMod.h,v 1.9 2008/11/25 15:57:49 loizides Exp $
3 loizides 1.2 //
4     // BaseMod
5     //
6 loizides 1.8 // This TAM module is the base module for all our TAM modules. It defines a couple of useful
7     // getters to retrieve information from the underlying framework code, such as the EventHeader,
8     // RunInfo or Trigger information.
9 loizides 1.2 //
10     // Authors: C.Loizides
11 loizides 1.6 //--------------------------------------------------------------------------------------------------
12 loizides 1.2
13 loizides 1.7 #ifndef MITANA_TREEMOD_BASEMOD_H
14     #define MITANA_TREEMOD_BASEMOD_H
15 loizides 1.1
16     #include "MitAna/TAM/interface/TAModule.h"
17 loizides 1.8 #include "MitAna/TreeMod/interface/Selector.h"
18     #include "MitAna/DataTree/interface/Collections.h"
19     #include "MitAna/DataTree/interface/TriggerName.h"
20     #include "MitAna/DataTree/interface/TriggerObject.h"
21 loizides 1.1
22     namespace mithep
23     {
24 loizides 1.5 class Selector;
25    
26 loizides 1.1 class BaseMod : public TAModule {
27     public:
28     BaseMod(const char *name="BaseMod", const char *title="Base analysis module")
29 loizides 1.9 : TAModule(name,title), fNEventsProcessed(0) {}
30 loizides 1.4 ~BaseMod() {}
31    
32     protected:
33 loizides 1.9 void IncNEventsProcessed() { ++fNEventsProcessed; }
34     const EventHeader *GetEventHeader() const { return GetSel()->GetEventHeader(); }
35 loizides 1.8 const TriggerObjectCol *GetHLTObjects(const char *name) const;
36     const TriggerObjectsTable *GetHLTObjectsTable(const char *hltfwk="HLTFwkMod") const;
37     const TriggerTable *GetHLTTable(const char *hltfwk="HLTFwkMod") const;
38 loizides 1.10 Int_t GetNEventsProcessed() const { return fNEventsProcessed; }
39     template <class T> T *GetObjThisEvt(const char *name);
40     template <class T> T *GetPublicObj(const char *name);
41 loizides 1.9 const RunInfo *GetRunInfo() const { return GetSel()->GetRunInfo(); }
42     const Selector *GetSel() const;
43 loizides 1.8 Bool_t HasHLTInfo(const char *hltfwk="HLTFwkMod") const;
44 loizides 1.9 Bool_t ValidRunInfo() const { return GetSel()->ValidRunInfo(); }
45     void SaveNEventsProcessed(const char *name="hDEvents");
46    
47     private:
48     Int_t fNEventsProcessed; //number of events
49 loizides 1.1
50 loizides 1.4 ClassDef(BaseMod,1) // Base TAM module
51 loizides 1.1 };
52 loizides 1.6 }
53 loizides 1.4
54 loizides 1.6 //--------------------------------------------------------------------------------------------------
55 loizides 1.8 inline const mithep::TriggerObjectCol *mithep::BaseMod::GetHLTObjects(const char *name) const
56     {
57     // Get pointer to HLT TriggerObjects collection with given name for the current event.
58    
59     return (dynamic_cast<const TriggerObjectCol *>(FindObjThisEvt(name)));
60     }
61    
62     //--------------------------------------------------------------------------------------------------
63 loizides 1.10 template <class T>
64     inline T *mithep::BaseMod::GetObjThisEvt(const char *name)
65     {
66     // Get published object for the current event.
67    
68     T *ret = dynamic_cast<T*>(FindObjThisEvt(name));
69     if (!ret) {
70     SendError(kWarning, "GetObjThisEvent",
71     "Could not obtain object with name %s and type %s for current event!",
72     name, T::Class_Name());
73     }
74     return ret;
75     }
76    
77     //--------------------------------------------------------------------------------------------------
78     template <class T>
79     inline T *mithep::BaseMod::GetPublicObj(const char *name)
80     {
81     // Get public object.
82    
83     T *ret = dynamic_cast<T*>(FindPublicObj(name));
84     if (!ret) {
85     SendError(kWarning, "GetPublicObject",
86     "Could not obtain public object with name %s and type %s!",
87     name, T::Class_Name());
88     }
89     return ret;
90     }
91    
92     //--------------------------------------------------------------------------------------------------
93 loizides 1.6 inline const mithep::Selector *mithep::BaseMod::GetSel() const
94     {
95 loizides 1.8 // Get pointer to selector.
96    
97 loizides 1.6 return static_cast<const Selector*>(GetSelector());
98 loizides 1.1 }
99     #endif