ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/MitProd/TreeFiller/src/FillMitTree.cc
Revision: 1.17
Committed: Thu Jul 31 12:34:04 2008 UTC (16 years, 9 months ago) by loizides
Content type: text/plain
Branch: MAIN
Changes since 1.16: +50 -173 lines
Log Message:
Consistently introduced ObjectService. Updated comments. Updated .cfg files. Switched off default handling of Stable and DecayParts (for now). ZmmFullReco.cfg shows how to use standard filler with extensions.

File Contents

# User Rev Content
1 loizides 1.17 // $Id: FillMitTree.cc,v 1.16 2008/07/30 16:39:58 loizides Exp $
2 paus 1.1
3 loizides 1.3 #include "MitProd/TreeFiller/interface/FillMitTree.h"
4 paus 1.1 #include "FWCore/MessageLogger/interface/MessageLogger.h"
5     #include "FWCore/ServiceRegistry/interface/Service.h"
6 loizides 1.3 #include "MitProd/TreeService/interface/TreeService.h"
7 loizides 1.16 #include "MitProd/ObjectService/interface/ObjectService.h"
8 loizides 1.6 #include "MitProd/TreeFiller/interface/AssociationMaps.h"
9 loizides 1.3 #include "MitProd/TreeFiller/interface/FillerMetaInfos.h"
10 loizides 1.6 #include "MitProd/TreeFiller/interface/FillerTracks.h"
11     #include "MitProd/TreeFiller/interface/FillerGsfTracks.h"
12     #include "MitProd/TreeFiller/interface/FillerMuons.h"
13     #include "MitProd/TreeFiller/interface/FillerElectrons.h"
14 loizides 1.11 #include "MitProd/TreeFiller/interface/FillerElectrons.h"
15     #include "MitProd/TreeFiller/interface/FillerCaloJets.h"
16     #include "MitProd/TreeFiller/interface/FillerCaloMet.h"
17     #include "MitProd/TreeFiller/interface/FillerConversions.h"
18 bendavid 1.8 #include "MitProd/TreeFiller/interface/FillerConversionElectrons.h"
19     #include "MitProd/TreeFiller/interface/FillerPhotons.h"
20 bendavid 1.12 #include "MitProd/TreeFiller/interface/FillerMCParticles.h"
21 paus 1.13 #include "MitProd/TreeFiller/interface/FillerDecayParts.h"
22     #include "MitProd/TreeFiller/interface/FillerStableParts.h"
23 paus 1.1
24     using namespace std;
25     using namespace edm;
26     using namespace mithep;
27    
28 loizides 1.16 mithep::ObjectService *mithep::FillMitTree::os_ = 0;
29    
30 loizides 1.9 //--------------------------------------------------------------------------------------------------
31 loizides 1.7 FillMitTree::FillMitTree(const edm::ParameterSet &cfg) :
32     defactive_(cfg.getUntrackedParameter<bool>("defactive",1))
33 paus 1.1 {
34 loizides 1.6 // Constructor.
35 loizides 1.15
36 loizides 1.3 if (!configure(cfg)) {
37     throw edm::Exception(edm::errors::Configuration, "FillMitTree::FillMitTree()\n")
38     << "Could not configure fillers." << "\n";
39     }
40 paus 1.1 }
41    
42 loizides 1.9 //--------------------------------------------------------------------------------------------------
43 paus 1.1 FillMitTree::~FillMitTree()
44     {
45 loizides 1.2 // Destructor: nothing to be done here.
46 paus 1.1 }
47    
48 loizides 1.9 //--------------------------------------------------------------------------------------------------
49 loizides 1.17 bool FillMitTree::addActiveFiller(BaseFiller *bf)
50     {
51     // Check if filler is active and add it to list of fillers. Otherwise delete it.
52    
53     if (bf->Active()) {
54     fillers_.push_back(bf);
55     return 1;
56     }
57    
58     delete bf;
59     bf = 0;
60     return 0;
61     }
62    
63     //--------------------------------------------------------------------------------------------------
64 loizides 1.3 void FillMitTree::analyze(const edm::Event &event,
65     const edm::EventSetup &setup)
66     {
67     // Access and copy event content.
68    
69     // First step: Loop over the data fillers of the various components
70     for (std::vector<BaseFiller*>::const_iterator iF = fillers_.begin(); iF != fillers_.end(); ++iF) {
71     (*iF)->FillDataBlock(event,setup);
72     }
73    
74     // Second step: Loop over the link resolution of the various components
75     for (std::vector<BaseFiller*>::const_iterator iF = fillers_.begin(); iF != fillers_.end(); ++iF) {
76     (*iF)->ResolveLinks(event,setup);
77     }
78     }
79    
80 loizides 1.9 //--------------------------------------------------------------------------------------------------
81 loizides 1.3 void FillMitTree::beginJob(const edm::EventSetup &event)
82 paus 1.1 {
83 loizides 1.2 // Access the tree and book branches.
84    
85 paus 1.1 Service<TreeService> ts;
86     TreeWriter *tws = ts->get();
87     if (! tws) {
88     throw edm::Exception(edm::errors::Configuration, "FillMitTree::beginJob()\n")
89 loizides 1.17 << "Could not get pointer to tree. "
90     << "Do you have the TreeServie define in your config?" << "\n";
91 paus 1.1 return;
92     }
93 loizides 1.16
94     if (os_==0) {
95     Service<ObjectService> os;
96     if (!os.isAvailable()) {
97     throw edm::Exception(edm::errors::Configuration, "FillMitTree::beginJob()\n")
98 loizides 1.17 << "Could not get object service. "
99     << "Do you have the ObjectService defined in your config?" << "\n";
100 loizides 1.16 return;
101     }
102     os_ = &(*os);
103     }
104    
105 paus 1.1 // Loop over the various components and book the branches
106     for (std::vector<BaseFiller*>::iterator iF = fillers_.begin(); iF != fillers_.end(); ++iF) {
107 loizides 1.16 edm::LogInfo("FillMitTree::beginJob") << "Booking for " << (*iF)->Name() << endl;
108 loizides 1.4 (*iF)->BookDataBlock(*tws);
109 paus 1.1 }
110     }
111    
112 loizides 1.9 //--------------------------------------------------------------------------------------------------
113 loizides 1.3 bool FillMitTree::configure(const edm::ParameterSet &cfg)
114 paus 1.1 {
115 loizides 1.3 // Configure our fillers.
116    
117 loizides 1.17 FillerMetaInfos *fillerMetaInfos = new FillerMetaInfos(cfg,defactive_);
118     addActiveFiller(fillerMetaInfos);
119 loizides 1.2
120 bendavid 1.12 FillerMCParticles *fillerMCParticles = new FillerMCParticles(cfg,"MCParticles",defactive_);
121 loizides 1.17 addActiveFiller(fillerMCParticles);
122 loizides 1.11
123     FillerCaloJets *fillerCaloJets = new FillerCaloJets(cfg,"CaloJets",defactive_);
124 loizides 1.17 addActiveFiller(fillerCaloJets);
125 loizides 1.11
126     FillerCaloMet *fillerCaloMet = new FillerCaloMet(cfg,"CaloMet",defactive_);
127 loizides 1.17 addActiveFiller(fillerCaloMet);
128 loizides 1.11
129 loizides 1.17 FillerTracks *fillerGeneralTracks = new FillerTracks(cfg,"GeneralTracks",defactive_);
130     addActiveFiller(fillerGeneralTracks);
131 loizides 1.11
132 loizides 1.9 FillerTracks *fillerStandaloneMuonTracks =
133     new FillerTracks(cfg,"StandaloneMuonTracks",defactive_);
134 loizides 1.17 addActiveFiller(fillerStandaloneMuonTracks);
135 loizides 1.6
136     FillerTracks *fillerStandaloneMuonTracksVtx =
137 loizides 1.7 new FillerTracks(cfg,"StandaloneMuonTracksWVtxConstraint",defactive_);
138 loizides 1.17 addActiveFiller(fillerStandaloneMuonTracksVtx);
139 loizides 1.11
140 loizides 1.7 FillerTracks *fillerGlobalMuonTracks = new FillerTracks(cfg,"GlobalMuonTracks",defactive_);
141 loizides 1.17 addActiveFiller(fillerGlobalMuonTracks);
142 loizides 1.6
143     FillerTracks *fillerConversionInOutTracks =
144 loizides 1.17 new FillerTracks(cfg,"ConversionInOutTracks",defactive_);
145     addActiveFiller(fillerConversionInOutTracks);
146 loizides 1.11
147 loizides 1.6 FillerTracks *fillerConversionOutInTracks =
148 loizides 1.17 new FillerTracks(cfg,"ConversionOutInTracks",defactive_);
149     addActiveFiller(fillerConversionOutInTracks);
150 loizides 1.11
151 loizides 1.17 FillerGsfTracks *fillerGsfTracks = new FillerGsfTracks(cfg,"GsfTracks",defactive_);
152     addActiveFiller(fillerGsfTracks);
153 loizides 1.11
154 loizides 1.17 FillerMuons *fillerMuons = new FillerMuons(cfg,defactive_);
155     addActiveFiller(fillerMuons);
156 loizides 1.11
157 loizides 1.17 FillerElectrons *fillerElectrons = new FillerElectrons(cfg,defactive_);
158     addActiveFiller(fillerElectrons);
159 loizides 1.11
160 loizides 1.9 FillerConversionElectrons *fillerConversionElectrons =
161 loizides 1.17 new FillerConversionElectrons(cfg,defactive_);
162     addActiveFiller(fillerConversionElectrons);
163 loizides 1.11
164 loizides 1.17 FillerConversions *fillerConversions = new FillerConversions(cfg,defactive_);
165     addActiveFiller(fillerConversions);
166 loizides 1.11
167 loizides 1.17 FillerPhotons *fillerPhotons = new FillerPhotons(cfg,defactive_);
168     addActiveFiller(fillerPhotons);
169 loizides 1.5
170 loizides 1.17 FillerStableParts *fillerStableParts = new FillerStableParts(cfg,"StableParts",defactive_);
171     addActiveFiller(fillerStableParts);
172 bendavid 1.14
173 loizides 1.17 FillerDecayParts *fillerDecayParts = new FillerDecayParts(cfg,"DecayParts",defactive_);
174     addActiveFiller(fillerDecayParts);
175 paus 1.13
176 loizides 1.3 return 1;
177 paus 1.1 }
178    
179 loizides 1.9 //--------------------------------------------------------------------------------------------------
180 paus 1.1 void FillMitTree::endJob()
181     {
182 loizides 1.2 // Delete fillers.
183    
184     for (std::vector<BaseFiller*>::iterator iF = fillers_.begin(); iF != fillers_.end(); ++iF) {
185     delete *iF;
186     }
187    
188 paus 1.1 edm::LogInfo("FillMitTree::endJob") << "Ending Job" << endl;
189     }