ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/MitProd/TreeFiller/src/FillMitTree.cc
(Generate patch)

Comparing UserCode/MitProd/TreeFiller/src/FillMitTree.cc (file contents):
Revision 1.1 by paus, Wed Jun 18 13:23:22 2008 UTC vs.
Revision 1.10 by bendavid, Mon Jul 7 13:29:05 2008 UTC

# Line 1 | Line 1
1   // $Id$
2  
3 + #include "MitProd/TreeFiller/interface/FillMitTree.h"
4   #include "FWCore/MessageLogger/interface/MessageLogger.h"
4 #include "FWCore/Framework/interface/ESHandle.h"
5 #include "DataFormats/Common/interface/Handle.h"
5   #include "FWCore/ServiceRegistry/interface/Service.h"
6 <
7 < #include "MitProd/TreeFiller/interface/FillerGlobalMuons.h"
8 < #include "MitProd/TreeFiller/interface/FillMitTree.h"
6 > #include "MitProd/TreeService/interface/TreeService.h"
7 > #include "MitProd/TreeFiller/interface/AssociationMaps.h"
8 > #include "MitProd/TreeFiller/interface/FillerMetaInfos.h"
9 > #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 > #include "MitProd/TreeFiller/interface/FillerConversionElectrons.h"
15 > #include "MitProd/TreeFiller/interface/FillerConversions.h"
16 > #include "MitProd/TreeFiller/interface/FillerPhotons.h"
17 > #include "MitProd/TreeFiller/interface/FillerGenParts.h"
18  
19   using namespace std;
20   using namespace edm;
21   using namespace mithep;
22  
23 < //-------------------------------------------------------------------------------------------------
23 > //--------------------------------------------------------------------------------------------------
24   FillMitTree::FillMitTree(const edm::ParameterSet &cfg) :
25 <  fillerGlobalMuons_(0)
25 >  defactive_(cfg.getUntrackedParameter<bool>("defactive",1))
26   {
27 <  // initialize fillers
28 <  fillerGlobalMuons_ = new FillerGlobalMuons(cfg);
29 <  if (fillerGlobalMuons_->Active())
30 <    fillers_.push_back(fillerGlobalMuons_);
27 >  // Constructor.
28 >    
29 >  if (!configure(cfg)) {
30 >    throw edm::Exception(edm::errors::Configuration, "FillMitTree::FillMitTree()\n")
31 >      << "Could not configure fillers." << "\n";
32 >  }
33   }
34  
35 < //-------------------------------------------------------------------------------------------------
35 > //--------------------------------------------------------------------------------------------------
36   FillMitTree::~FillMitTree()
37   {
38 <  // We own the fillers so we have to delete them
29 <  delete fillerGlobalMuons_;
38 >  // Destructor: nothing to be done here.
39   }
40  
41 < //-------------------------------------------------------------------------------------------------
42 < void FillMitTree::beginJob(edm::EventSetup const &event)
41 > //--------------------------------------------------------------------------------------------------
42 > 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 + //--------------------------------------------------------------------------------------------------
59 + void FillMitTree::beginJob(const edm::EventSetup &event)
60 + {
61 +  // Access the tree and book branches.
62 +
63    Service<TreeService> ts;
64    TreeWriter *tws = ts->get();
65    if (! tws) {
66      throw edm::Exception(edm::errors::Configuration, "FillMitTree::beginJob()\n")
67 <      << "Could not get pointer to Tree with name " << tws->GetName() << "\n";
67 >      << "Could not get pointer to tree." << "\n";
68      return;
69    }
70 <
70 >  
71    // Loop over the various components and book the branches
72    for (std::vector<BaseFiller*>::iterator iF = fillers_.begin(); iF != fillers_.end(); ++iF) {
73 <    (*iF)->BookDataBlock(tws);
73 >    (*iF)->BookDataBlock(*tws);
74    }
47  return;
75   }
76  
77 < //-------------------------------------------------------------------------------------------------
78 < void FillMitTree::analyze(const edm::Event      &event,
52 <                          const edm::EventSetup &setup)
77 > //--------------------------------------------------------------------------------------------------
78 > bool FillMitTree::configure(const edm::ParameterSet &cfg)
79   {
80 <  // First step: Loop over the data fillers of the various components
81 <  for (std::vector<BaseFiller*>::const_iterator iF = fillers_.begin(); iF != fillers_.end(); ++iF) {
82 <    (*iF)->FillDataBlock(event,setup);
80 >  // 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 >
88 >  FillerGenParts *fillerGenParts = new FillerGenParts(cfg,defactive_);
89 >  const GenParticleMap* genParticleMap=0;
90 >  if (fillerGenParts->Active()) {
91 >    fillers_.push_back(fillerGenParts);
92 >    genParticleMap = fillerGenParts->GetGenParticleMap();
93 >  }
94 >  else
95 >    delete fillerGenParts;  
96 >    
97 >  FillerSimParticles *fillerSimParticles = new FillerSimParticles(cfg,defactive_, genParticleMap);
98 >  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 >  FillerTracks *fillerGeneralTracks =
107 >    new FillerTracks(cfg,"GeneralTracks",defactive_,simParticleMap);
108 >  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 +  FillerTracks *fillerStandaloneMuonTracks =
117 +    new FillerTracks(cfg,"StandaloneMuonTracks",defactive_);
118 +  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 <  // Second step: Loop over the link resolution of the various components
127 <  for (std::vector<BaseFiller*>::const_iterator iF = fillers_.begin(); iF != fillers_.end(); ++iF) {
128 <    (*iF)->ResolveLinks(event,setup);
126 >  FillerTracks *fillerStandaloneMuonTracksVtx =
127 >    new FillerTracks(cfg,"StandaloneMuonTracksWVtxConstraint",defactive_);
128 >  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 >  FillerTracks *fillerGlobalMuonTracks = new FillerTracks(cfg,"GlobalMuonTracks",defactive_);
137 >  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 +    new FillerTracks(cfg,"ConversionInOutTracks",defactive_,simParticleMap);
147 +  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 +    new FillerTracks(cfg,"ConversionOutInTracks",defactive_,simParticleMap);
159 +  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 +  FillerGsfTracks *fillerGsfTracks =
170 +    new FillerGsfTracks(cfg,"GsfTracks",defactive_,simParticleMap);
171 +  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 +    new FillerMuons(cfg,defactive_,globalMuonTrackMap,standaloneMuonTrackMap,
181 +                    standaloneMuonTrackVtxMap,generalTrackMap);
182 +  if (fillerMuons->Active())
183 +    fillers_.push_back(fillerMuons);
184 +  else
185 +    delete fillerMuons;
186 +    
187 +  FillerElectrons *fillerElectrons =
188 +    new FillerElectrons(cfg,defactive_,gsfTrackMap,generalTrackMap);
189 +  if (fillerElectrons->Active())
190 +    fillers_.push_back(fillerElectrons);
191 +  else
192 +    delete fillerElectrons;
193 +  
194 +  FillerConversionElectrons *fillerConversionElectrons =
195 +    new FillerConversionElectrons(cfg, defactive_, conversionInOutTracks, conversionOutInTracks,
196 +                                  conversionInOutTrackMap, conversionOutInTrackMap);
197 +  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 +  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 +  if (fillerPhotons->Active())
216 +    fillers_.push_back(fillerPhotons);
217 +  else
218 +    delete fillerPhotons;
219 +
220 +
221 +  return 1;
222   }
223  
224 < //-------------------------------------------------------------------------------------------------
224 > //--------------------------------------------------------------------------------------------------
225   void FillMitTree::endJob()
226   {
227 +  // Delete fillers.
228 +
229 +  for (std::vector<BaseFiller*>::iterator iF = fillers_.begin(); iF != fillers_.end(); ++iF) {
230 +    delete *iF;
231 +  }
232 +
233    edm::LogInfo("FillMitTree::endJob") << "Ending Job" << endl;
234   }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines