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

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines