ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/MitAna/PhysicsMod/interface/PublisherMod.h
Revision: 1.11
Committed: Fri Jun 26 16:47:18 2009 UTC (15 years, 10 months ago) by loizides
Content type: text/plain
Branch: MAIN
CVS Tags: Mit_032, Mit_031, Mit_025c_branch2, Mit_025c_branch1, Mit_030, Mit_029c, Mit_029b, Mit_030_pre1, Mit_029a, Mit_029, Mit_029_pre1, Mit_028a, Mit_025c_branch0, Mit_028, Mit_027a, Mit_027, Mit_026, Mit_025e, Mit_025d, Mit_025c, Mit_025b, Mit_025a, Mit_025, Mit_025pre2, Mit_024b, Mit_025pre1, Mit_024a, Mit_024, Mit_023, Mit_022a, Mit_022, Mit_020d, TMit_020d, Mit_020c, Mit_021, Mit_021pre2, Mit_021pre1, Mit_020b, Mit_020a, Mit_020, Mit_020pre1, Mit_018, Mit_017, Mit_017pre3, Mit_017pre2, Mit_017pre1, Mit_016, Mit_015b, Mit_015a, Mit_015, Mit_014e, Mit_014d, Mit_014c, Mit_014b, Mit_014a, Mit_014, Mit_014pre3, Mit_014pre2, Mit_014pre1, Mit_013d, Mit_013c, Mit_013b, Mit_013a, Mit_013, Mit_013pre1, Mit_012i, Mit_012h, Mit_012g, Mit_012f, Mit_012e, Mit_012d, Mit_012c, Mit_012b, Mit_012a, Mit_012, Mit_011a, Mit_011, Mit_010a, Mit_010, HEAD
Branch point for: Mit_025c_branch
Changes since 1.10: +5 -3 lines
Log Message:
Cleanup and added TrackToPartMod

File Contents

# User Rev Content
1 loizides 1.1 //--------------------------------------------------------------------------------------------------
2 loizides 1.11 // $Id: PublisherMod.h,v 1.10 2009/06/17 11:50:27 loizides Exp $
3 loizides 1.1 //
4     // PublisherMod
5     //
6 loizides 1.3 // This module simply loads a branch and publishes its content into an ObjArray.
7     // Using PublisherPerEvent() one can chose whether the array will be published
8     // globally (ie only in SlaveBegin) or on per-event basis.
9     //
10 loizides 1.1 // Authors: C.Loizides
11     //--------------------------------------------------------------------------------------------------
12    
13     #ifndef MITANA_PHYSICSMOD_PUBLISHERMOD_H
14     #define MITANA_PHYSICSMOD_PUBLISHERMOD_H
15    
16 loizides 1.9 #include "MitAna/DataCont/interface/Collection.h"
17     #include "MitAna/DataCont/interface/ObjArray.h"
18 loizides 1.1 #include "MitAna/TreeMod/interface/BaseMod.h"
19    
20     namespace mithep
21     {
22 bendavid 1.6 template<class TIn, class TOut=TIn>
23 loizides 1.1 class PublisherMod : public BaseMod
24     {
25     public:
26     PublisherMod(const char *name="PublisherMod",
27     const char *title="Publisher module");
28    
29 loizides 1.5 const char *GetBranchName() const { return fBranchName; }
30     const char *GetInputName() const { return GetBranchName(); }
31     const char *GetOutputName() const { return GetPublicName(); }
32     const char *GetPublicName() const { return fPublicName; }
33     Bool_t GetPubPerEvent() const { return fPubPerEvent; }
34     void SetBranchName(const char *n) { fBranchName=n; }
35     void SetInputName(const char *n) { SetBranchName(n); }
36     void SetOutputName(const char *n) { SetPublicName(n); }
37     void SetPublicName(const char *n) { fPublicName=n; }
38     void PublishPerEvent(Bool_t b) { fPubPerEvent = b; }
39 loizides 1.1
40     protected:
41     TString fBranchName; //name of collection
42     TString fPublicName; //name of collection
43 loizides 1.3 Bool_t fPubPerEvent; //=true then publish per event (def=1)
44 bendavid 1.6 const Collection<TIn> *fColIn; //!pointer to collection (in)
45     ObjArray<TOut> *fColOut; //!pointer to collection (out)
46 loizides 1.1
47     void Process();
48     void SlaveBegin();
49 loizides 1.3 void SlaveTerminate();
50 loizides 1.1
51 loizides 1.10 ClassDef(PublisherMod, 1) // Publisher module
52 loizides 1.1 };
53     }
54    
55     //--------------------------------------------------------------------------------------------------
56 bendavid 1.6 template<class TIn, class TOut>
57     mithep::PublisherMod<TIn, TOut>::PublisherMod(const char *name, const char *title) :
58 loizides 1.1 BaseMod(name,title),
59 loizides 1.3 fBranchName("SetMe"),
60 loizides 1.1 fPublicName(""),
61 loizides 1.3 fPubPerEvent(kTRUE),
62     fColIn(0),
63     fColOut(0)
64 loizides 1.1 {
65     // Constructor.
66     }
67    
68     //--------------------------------------------------------------------------------------------------
69 bendavid 1.6 template<class TIn, class TOut>
70     void mithep::PublisherMod<TIn, TOut>::Process()
71 loizides 1.1 {
72 loizides 1.3 // Load the branch, add pointers to the object array. Publish object array if needed.
73 loizides 1.1
74     LoadBranch(GetBranchName());
75 loizides 1.11
76     const UInt_t entries = fColIn->GetEntries();
77    
78 loizides 1.3 if (fPubPerEvent)
79 loizides 1.11 fColOut = new mithep::ObjArray<TOut>(entries, GetPublicName());
80 loizides 1.3 else
81     fColOut->Reset();
82    
83     for(UInt_t i=0; i<entries; ++i)
84     fColOut->Add(fColIn->At(i));
85    
86     if (fPubPerEvent)
87     AddObjThisEvt(fColOut);
88 loizides 1.1 }
89    
90     //--------------------------------------------------------------------------------------------------
91 bendavid 1.6 template<class TIn, class TOut>
92     void mithep::PublisherMod<TIn, TOut>::SlaveBegin()
93 loizides 1.1 {
94 loizides 1.3 // Request the branch to be published. Depending on the user's decision publish the array.
95 loizides 1.1
96 loizides 1.3 ReqBranch(GetBranchName(), fColIn);
97 loizides 1.1
98     if (fPublicName.IsNull())
99 loizides 1.8 fPublicName = GetBranchName();
100 loizides 1.3
101     if (!GetPubPerEvent()) {
102 bendavid 1.6 fColOut = new mithep::ObjArray<TOut>(0, GetPublicName());
103 loizides 1.3 PublishObj(fColOut);
104     }
105     }
106    
107     //--------------------------------------------------------------------------------------------------
108 bendavid 1.6 template<class TIn, class TOut>
109     void mithep::PublisherMod<TIn, TOut>::SlaveTerminate()
110 loizides 1.3 {
111     // Cleanup in case objects are published only once.
112    
113     if (!fPubPerEvent) {
114     RetractObj(GetPublicName());
115     delete fColOut;
116     }
117 loizides 1.1 }
118     #endif