ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/MitProd/TreeFiller/src/FillMitTree.cc
Revision: 1.10
Committed: Mon Jul 7 13:29:05 2008 UTC (16 years, 9 months ago) by bendavid
Content type: text/plain
Branch: MAIN
Changes since 1.9: +6 -3 lines
Log Message:
implemented GenPart links and Sim-Gen links

File Contents

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