ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/MitAna/TreeMod/interface/BaseMod.h
Revision: 1.13
Committed: Thu Dec 4 13:48:34 2008 UTC (16 years, 5 months ago) by loizides
Content type: text/plain
Branch: MAIN
Changes since 1.12: +46 -2 lines
Log Message:
Have ReqBranch(const)

File Contents

# User Rev Content
1 loizides 1.6 //--------------------------------------------------------------------------------------------------
2 loizides 1.13 // $Id: BaseMod.h,v 1.12 2008/12/03 17:38:16 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 loizides 1.12 class HLTFwkMod;
26 loizides 1.5
27 loizides 1.1 class BaseMod : public TAModule {
28     public:
29 loizides 1.12 BaseMod(const char *name="BaseMod", const char *title="Base analysis module");
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.12 const HLTFwkMod *GetHltFwkMod() const { return fHltFwkMod; }
36     const TriggerObjectCol *GetHLTObjects(const char *name) const;
37     const TriggerObjectsTable *GetHLTObjectsTable() const;
38     const TriggerTable *GetHLTTable() const;
39 loizides 1.13 Int_t GetNEventsProcessed() const { return fNEventsProcessed; }
40     template <class T> const T *GetObjThisEvt(const char *name) const;
41 loizides 1.10 template <class T> T *GetObjThisEvt(const char *name);
42 loizides 1.13 template <class T> const T *GetPublicObj(const char *name) const;
43 loizides 1.10 template <class T> T *GetPublicObj(const char *name);
44 loizides 1.9 const RunInfo *GetRunInfo() const { return GetSel()->GetRunInfo(); }
45     const Selector *GetSel() const;
46 loizides 1.12 Bool_t HasHLTInfo() const;
47 loizides 1.13 template <class T> void ReqBranch(const char *bname, const T *&address);
48 loizides 1.9 Bool_t ValidRunInfo() const { return GetSel()->ValidRunInfo(); }
49     void SaveNEventsProcessed(const char *name="hDEvents");
50    
51     private:
52 loizides 1.12 mutable const HLTFwkMod *fHltFwkMod; //!pointer to HLTFwdMod
53     const TString fHltFwkModName; //!name of HLTFwkMod
54 loizides 1.9 Int_t fNEventsProcessed; //number of events
55 loizides 1.1
56 loizides 1.4 ClassDef(BaseMod,1) // Base TAM module
57 loizides 1.1 };
58 loizides 1.6 }
59 loizides 1.4
60 loizides 1.6 //--------------------------------------------------------------------------------------------------
61 loizides 1.8 inline const mithep::TriggerObjectCol *mithep::BaseMod::GetHLTObjects(const char *name) const
62     {
63     // Get pointer to HLT TriggerObjects collection with given name for the current event.
64    
65     return (dynamic_cast<const TriggerObjectCol *>(FindObjThisEvt(name)));
66     }
67    
68     //--------------------------------------------------------------------------------------------------
69 loizides 1.10 template <class T>
70 loizides 1.13 inline const T *mithep::BaseMod::GetObjThisEvt(const char *name) const
71     {
72     // Get published object for the current event.
73    
74     T *ret = dynamic_cast<T*>(FindObjThisEvt(name));
75     if (!ret) {
76     SendError(kWarning, "GetObjThisEvent",
77     "Could not obtain object with name %s and type %s for current event!",
78     name, T::Class_Name());
79     }
80     return ret;
81     }
82    
83     //--------------------------------------------------------------------------------------------------
84     template <class T>
85 loizides 1.10 inline T *mithep::BaseMod::GetObjThisEvt(const char *name)
86     {
87     // Get published object for the current event.
88    
89     T *ret = dynamic_cast<T*>(FindObjThisEvt(name));
90     if (!ret) {
91     SendError(kWarning, "GetObjThisEvent",
92     "Could not obtain object with name %s and type %s for current event!",
93     name, T::Class_Name());
94     }
95     return ret;
96     }
97    
98     //--------------------------------------------------------------------------------------------------
99     template <class T>
100 loizides 1.13 inline const T *mithep::BaseMod::GetPublicObj(const char *name) const
101     {
102     // Get public object.
103    
104    
105     T *ret = dynamic_cast<T*>(FindPublicObj(name));
106     if (!ret) {
107     SendError(kWarning, "GetPublicObject",
108     "Could not obtain public object with name %s and type %s!",
109     name, T::Class_Name());
110     }
111     return ret;
112     }
113    
114     //--------------------------------------------------------------------------------------------------
115     template <class T>
116 loizides 1.10 inline T *mithep::BaseMod::GetPublicObj(const char *name)
117     {
118     // Get public object.
119    
120 loizides 1.11
121 loizides 1.10 T *ret = dynamic_cast<T*>(FindPublicObj(name));
122     if (!ret) {
123     SendError(kWarning, "GetPublicObject",
124     "Could not obtain public object with name %s and type %s!",
125     name, T::Class_Name());
126     }
127     return ret;
128     }
129    
130     //--------------------------------------------------------------------------------------------------
131 loizides 1.6 inline const mithep::Selector *mithep::BaseMod::GetSel() const
132     {
133 loizides 1.8 // Get pointer to selector.
134    
135 loizides 1.6 return static_cast<const Selector*>(GetSelector());
136 loizides 1.1 }
137 loizides 1.13
138     //--------------------------------------------------------------------------------------------------
139     template <class T>
140     inline void mithep::BaseMod::ReqBranch(const char *bname, const T *&address)
141     {
142     // Requests that the branch with the specified name be made available
143     // during processing and that it be read in to the address specified.
144    
145     TAModule::ReqBranch(bname, const_cast<T*&>(address));
146     }
147 loizides 1.1 #endif