ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/MitProd/TreeFiller/src/FillMitTree.cc
Revision: 1.15
Committed: Wed Jul 30 08:39:50 2008 UTC (16 years, 9 months ago) by loizides
Content type: text/plain
Branch: MAIN
Changes since 1.14: +7 -6 lines
Log Message:
Use PairInt as name for key.

File Contents

# User Rev Content
1 loizides 1.15 // $Id: FillMitTree.cc,v 1.14 2008/07/29 22:54:37 bendavid 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.6 #include "MitProd/TreeFiller/interface/AssociationMaps.h"
8 loizides 1.3 #include "MitProd/TreeFiller/interface/FillerMetaInfos.h"
9 loizides 1.6 #include "MitProd/TreeFiller/interface/FillerTracks.h"
10     #include "MitProd/TreeFiller/interface/FillerGsfTracks.h"
11     #include "MitProd/TreeFiller/interface/FillerMuons.h"
12     #include "MitProd/TreeFiller/interface/FillerElectrons.h"
13 loizides 1.11 #include "MitProd/TreeFiller/interface/FillerElectrons.h"
14     #include "MitProd/TreeFiller/interface/FillerCaloJets.h"
15     #include "MitProd/TreeFiller/interface/FillerCaloMet.h"
16     #include "MitProd/TreeFiller/interface/FillerConversions.h"
17 bendavid 1.8 #include "MitProd/TreeFiller/interface/FillerConversionElectrons.h"
18     #include "MitProd/TreeFiller/interface/FillerPhotons.h"
19 bendavid 1.12 #include "MitProd/TreeFiller/interface/FillerMCParticles.h"
20 paus 1.13 #include "MitProd/TreeFiller/interface/FillerDecayParts.h"
21     #include "MitProd/TreeFiller/interface/FillerStableParts.h"
22 paus 1.1
23     using namespace std;
24     using namespace edm;
25     using namespace mithep;
26    
27 loizides 1.9 //--------------------------------------------------------------------------------------------------
28 loizides 1.7 FillMitTree::FillMitTree(const edm::ParameterSet &cfg) :
29     defactive_(cfg.getUntrackedParameter<bool>("defactive",1))
30 paus 1.1 {
31 loizides 1.6 // Constructor.
32 loizides 1.15
33 loizides 1.3 if (!configure(cfg)) {
34     throw edm::Exception(edm::errors::Configuration, "FillMitTree::FillMitTree()\n")
35     << "Could not configure fillers." << "\n";
36     }
37 paus 1.1 }
38    
39 loizides 1.9 //--------------------------------------------------------------------------------------------------
40 paus 1.1 FillMitTree::~FillMitTree()
41     {
42 loizides 1.2 // Destructor: nothing to be done here.
43 paus 1.1 }
44    
45 loizides 1.9 //--------------------------------------------------------------------------------------------------
46 loizides 1.3 void FillMitTree::analyze(const edm::Event &event,
47     const edm::EventSetup &setup)
48     {
49     // Access and copy event content.
50    
51     // First step: Loop over the data fillers of the various components
52     for (std::vector<BaseFiller*>::const_iterator iF = fillers_.begin(); iF != fillers_.end(); ++iF) {
53     (*iF)->FillDataBlock(event,setup);
54     }
55    
56     // Second step: Loop over the link resolution of the various components
57     for (std::vector<BaseFiller*>::const_iterator iF = fillers_.begin(); iF != fillers_.end(); ++iF) {
58     (*iF)->ResolveLinks(event,setup);
59     }
60     }
61    
62 loizides 1.9 //--------------------------------------------------------------------------------------------------
63 loizides 1.3 void FillMitTree::beginJob(const edm::EventSetup &event)
64 paus 1.1 {
65 loizides 1.2 // Access the tree and book branches.
66    
67 paus 1.1 Service<TreeService> ts;
68     TreeWriter *tws = ts->get();
69     if (! tws) {
70     throw edm::Exception(edm::errors::Configuration, "FillMitTree::beginJob()\n")
71 loizides 1.2 << "Could not get pointer to tree." << "\n";
72 paus 1.1 return;
73     }
74 loizides 1.6
75 paus 1.1 // Loop over the various components and book the branches
76     for (std::vector<BaseFiller*>::iterator iF = fillers_.begin(); iF != fillers_.end(); ++iF) {
77 loizides 1.15 cout << "Booking for " << (*iF)->Name() << endl;
78 loizides 1.4 (*iF)->BookDataBlock(*tws);
79 paus 1.1 }
80     }
81    
82 loizides 1.9 //--------------------------------------------------------------------------------------------------
83 loizides 1.3 bool FillMitTree::configure(const edm::ParameterSet &cfg)
84 paus 1.1 {
85 loizides 1.3 // Configure our fillers.
86    
87     FillerMetaInfos *fillerMetaInfos = new FillerMetaInfos(cfg);
88     if (fillerMetaInfos->Active())
89     fillers_.push_back(fillerMetaInfos);
90 loizides 1.11 else {
91 loizides 1.3 delete fillerMetaInfos;
92 loizides 1.11 fillerMetaInfos = 0;
93     }
94 loizides 1.2
95 bendavid 1.12 FillerMCParticles *fillerMCParticles = new FillerMCParticles(cfg,"MCParticles",defactive_);
96 loizides 1.11 const GenParticleMap* genParticleMap = 0;
97     const SimParticleMap *simParticleMap = 0;
98 bendavid 1.12 if (fillerMCParticles->Active()) {
99     fillers_.push_back(fillerMCParticles);
100     genParticleMap = fillerMCParticles->GetGenParticleMap();
101     simParticleMap = fillerMCParticles->GetSimParticleMap();
102 loizides 1.6 }
103 loizides 1.11 else {
104 bendavid 1.12 delete fillerMCParticles;
105     fillerMCParticles = 0;
106 loizides 1.11 }
107    
108     FillerCaloJets *fillerCaloJets = new FillerCaloJets(cfg,"CaloJets",defactive_);
109     if (fillerCaloJets->Active()) {
110     fillers_.push_back(fillerCaloJets);
111     }
112     else {
113     delete fillerCaloJets;
114     fillerCaloJets = 0;
115     }
116    
117     FillerCaloMet *fillerCaloMet = new FillerCaloMet(cfg,"CaloMet",defactive_);
118     if (fillerCaloMet->Active()) {
119     fillers_.push_back(fillerCaloMet);
120     }
121     else {
122     delete fillerCaloMet;
123     fillerCaloMet = 0;
124     }
125    
126 loizides 1.9 FillerTracks *fillerGeneralTracks =
127     new FillerTracks(cfg,"GeneralTracks",defactive_,simParticleMap);
128 loizides 1.11 const TrackMap *generalTrackMap=0;
129 loizides 1.6 if (fillerGeneralTracks->Active()) {
130     fillers_.push_back(fillerGeneralTracks);
131     generalTrackMap = fillerGeneralTracks->GetTrackMap();
132     }
133 loizides 1.11 else {
134 loizides 1.6 delete fillerGeneralTracks;
135 loizides 1.11 fillerGeneralTracks = 0;
136     }
137    
138 loizides 1.9 FillerTracks *fillerStandaloneMuonTracks =
139     new FillerTracks(cfg,"StandaloneMuonTracks",defactive_);
140 loizides 1.11 const TrackMap *standaloneMuonTrackMap=0;
141 loizides 1.6 if (fillerStandaloneMuonTracks->Active()) {
142     fillers_.push_back(fillerStandaloneMuonTracks);
143     standaloneMuonTrackMap = fillerStandaloneMuonTracks->GetTrackMap();
144     }
145 loizides 1.11 else {
146 loizides 1.6 delete fillerStandaloneMuonTracks;
147 loizides 1.11 fillerStandaloneMuonTracks = 0;
148     }
149 loizides 1.6
150     FillerTracks *fillerStandaloneMuonTracksVtx =
151 loizides 1.7 new FillerTracks(cfg,"StandaloneMuonTracksWVtxConstraint",defactive_);
152 loizides 1.11 const TrackMap *standaloneMuonTrackVtxMap=0;
153 loizides 1.6 if (fillerStandaloneMuonTracksVtx->Active()) {
154     fillers_.push_back(fillerStandaloneMuonTracksVtx);
155     standaloneMuonTrackVtxMap = fillerStandaloneMuonTracksVtx->GetTrackMap();
156     }
157 loizides 1.11 else {
158 loizides 1.6 delete fillerStandaloneMuonTracksVtx;
159 loizides 1.11 fillerStandaloneMuonTracksVtx = 0;
160     }
161    
162 loizides 1.7 FillerTracks *fillerGlobalMuonTracks = new FillerTracks(cfg,"GlobalMuonTracks",defactive_);
163 loizides 1.11 const TrackMap *globalMuonTrackMap=0;
164 loizides 1.6 if (fillerGlobalMuonTracks->Active()) {
165     fillers_.push_back(fillerGlobalMuonTracks);
166     globalMuonTrackMap = fillerGlobalMuonTracks->GetTrackMap();
167     }
168 loizides 1.11 else {
169 loizides 1.6 delete fillerGlobalMuonTracks;
170 loizides 1.11 fillerGlobalMuonTracks = 0;
171     }
172 loizides 1.6
173     FillerTracks *fillerConversionInOutTracks =
174 loizides 1.7 new FillerTracks(cfg,"ConversionInOutTracks",defactive_,simParticleMap);
175 loizides 1.11 const TrackMap *conversionInOutTrackMap=0;
176     const TrackCol *conversionInOutTracks=0;
177 loizides 1.6 if (fillerConversionInOutTracks->Active()) {
178     fillers_.push_back(fillerConversionInOutTracks);
179     conversionInOutTrackMap = fillerConversionInOutTracks->GetTrackMap();
180     conversionInOutTracks = fillerConversionInOutTracks->GetTrackCol();
181     }
182 loizides 1.11 else {
183 loizides 1.6 delete fillerConversionInOutTracks;
184 loizides 1.11 fillerConversionInOutTracks = 0;
185     }
186    
187 loizides 1.6 FillerTracks *fillerConversionOutInTracks =
188 loizides 1.7 new FillerTracks(cfg,"ConversionOutInTracks",defactive_,simParticleMap);
189 loizides 1.11 const TrackMap *conversionOutInTrackMap=0;
190     const TrackCol *conversionOutInTracks=0;
191 loizides 1.6 if (fillerConversionOutInTracks->Active()) {
192     fillers_.push_back(fillerConversionOutInTracks);
193     conversionOutInTrackMap = fillerConversionOutInTracks->GetTrackMap();
194     conversionOutInTracks = fillerConversionOutInTracks->GetTrackCol();
195     }
196 loizides 1.11 else {
197 loizides 1.6 delete fillerConversionOutInTracks;
198 loizides 1.11 fillerConversionOutInTracks = 0;
199     }
200    
201 loizides 1.9 FillerGsfTracks *fillerGsfTracks =
202     new FillerGsfTracks(cfg,"GsfTracks",defactive_,simParticleMap);
203 loizides 1.11 const GsfTrackMap *gsfTrackMap=0;
204 loizides 1.6 if (fillerGsfTracks->Active()) {
205     fillers_.push_back(fillerGsfTracks);
206     gsfTrackMap = (GsfTrackMap*)fillerGsfTracks->GetTrackMap();
207     }
208 loizides 1.11 else {
209 loizides 1.6 delete fillerGsfTracks;
210 loizides 1.11 fillerGsfTracks = 0;
211     }
212    
213 loizides 1.6 FillerMuons *fillerMuons =
214 loizides 1.7 new FillerMuons(cfg,defactive_,globalMuonTrackMap,standaloneMuonTrackMap,
215     standaloneMuonTrackVtxMap,generalTrackMap);
216 loizides 1.6 if (fillerMuons->Active())
217     fillers_.push_back(fillerMuons);
218 loizides 1.11 else {
219 loizides 1.6 delete fillerMuons;
220 loizides 1.11 fillerMuons = 0;
221     }
222    
223 loizides 1.9 FillerElectrons *fillerElectrons =
224     new FillerElectrons(cfg,defactive_,gsfTrackMap,generalTrackMap);
225 loizides 1.6 if (fillerElectrons->Active())
226     fillers_.push_back(fillerElectrons);
227 loizides 1.11 else {
228 loizides 1.6 delete fillerElectrons;
229 loizides 1.11 fillerElectrons = 0;
230     }
231    
232 loizides 1.9 FillerConversionElectrons *fillerConversionElectrons =
233 loizides 1.15 new FillerConversionElectrons(cfg,defactive_,conversionInOutTracks,conversionOutInTracks,
234     conversionInOutTrackMap,conversionOutInTrackMap);
235 loizides 1.11 const ConversionElectronMap *convElectronMap=0;
236 loizides 1.6 if (fillerConversionElectrons->Active()) {
237     fillers_.push_back(fillerConversionElectrons);
238     convElectronMap = fillerConversionElectrons->GetConversionElectronMap();
239     }
240 loizides 1.11 else {
241 loizides 1.6 delete fillerConversionElectrons;
242 loizides 1.11 fillerConversionElectrons = 0;
243     }
244    
245 loizides 1.15 FillerConversions *fillerConversions = new FillerConversions(cfg,defactive_,convElectronMap);
246 loizides 1.11 const ConversionMap *conversionMap=0;
247 bendavid 1.8 if (fillerConversions->Active()) {
248     fillers_.push_back(fillerConversions);
249     conversionMap = fillerConversions->GetConversionMap();
250     }
251 loizides 1.11 else {
252 bendavid 1.8 delete fillerConversions;
253 loizides 1.11 fillerConversions = 0;
254     }
255    
256 loizides 1.15 FillerPhotons *fillerPhotons = new FillerPhotons(cfg,defactive_,conversionMap);
257 loizides 1.6 if (fillerPhotons->Active())
258     fillers_.push_back(fillerPhotons);
259 loizides 1.11 else {
260 loizides 1.6 delete fillerPhotons;
261 loizides 1.11 fillerPhotons = 0;
262     }
263 loizides 1.5
264 bendavid 1.14 FillerStableParts *fillerStableParts = new FillerStableParts(cfg,"StableParts",defactive_, generalTrackMap);
265     const BasePartMap *particleMap=0;
266 paus 1.13 if (fillerStableParts->Active()) {
267     fillers_.push_back(fillerStableParts);
268 bendavid 1.14 particleMap = fillerStableParts->GetParticleMap();
269 paus 1.13 }
270     else {
271     delete fillerStableParts;
272     fillerStableParts = 0;
273     }
274 bendavid 1.14
275     FillerDecayParts *fillerDecayParts = new FillerDecayParts(cfg,"DecayParts",defactive_,particleMap);
276 paus 1.13 if (fillerDecayParts->Active()) {
277     fillers_.push_back(fillerDecayParts);
278     }
279     else {
280     delete fillerDecayParts;
281     fillerDecayParts = 0;
282     }
283    
284 loizides 1.3 return 1;
285 paus 1.1 }
286    
287 loizides 1.9 //--------------------------------------------------------------------------------------------------
288 paus 1.1 void FillMitTree::endJob()
289     {
290 loizides 1.2 // Delete fillers.
291    
292     for (std::vector<BaseFiller*>::iterator iF = fillers_.begin(); iF != fillers_.end(); ++iF) {
293     delete *iF;
294     }
295    
296 paus 1.1 edm::LogInfo("FillMitTree::endJob") << "Ending Job" << endl;
297     }