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.2 by loizides, Wed Jun 18 19:17:21 2008 UTC vs.
Revision 1.9 by loizides, Thu Jul 3 07:56:14 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/FillMitTree.h"
8 < #include "MitProd/TreeFiller/interface/FillerGlobalMuons.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 < //-------------------------------------------------------------------------------------------------
24 < FillMitTree::FillMitTree(const edm::ParameterSet &cfg)
23 > //--------------------------------------------------------------------------------------------------
24 > FillMitTree::FillMitTree(const edm::ParameterSet &cfg) :
25 >  defactive_(cfg.getUntrackedParameter<bool>("defactive",1))
26   {
27 <  // Constructor: initialize fillers
28 <
29 <  FillerGlobalMuons *fillerGlobalMuons = new FillerGlobalMuons(cfg);
30 <  if (fillerGlobalMuons->Active())
31 <    fillers_.push_back(fillerGlobalMuons);
32 <  else
24 <    delete 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    // 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  
# Line 42 | Line 67 | void FillMitTree::beginJob(edm::EventSet
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    }
50  return;
75   }
76  
77 < //-------------------------------------------------------------------------------------------------
78 < void FillMitTree::analyze(const edm::Event      &event,
55 <                          const edm::EventSetup &setup)
77 > //--------------------------------------------------------------------------------------------------
78 > bool FillMitTree::configure(const edm::ParameterSet &cfg)
79   {
80 <  // Access and copy event content.
80 >  // Configure our fillers.
81  
82 <  // First step: Loop over the data fillers of the various components
83 <  for (std::vector<BaseFiller*>::const_iterator iF = fillers_.begin(); iF != fillers_.end(); ++iF) {
84 <    (*iF)->FillDataBlock(event,setup);
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 >  if (fillerGenParts->Active())
90 >    fillers_.push_back(fillerGenParts);
91 >  else
92 >    delete fillerGenParts;  
93 >    
94 >  FillerSimParticles *fillerSimParticles = new FillerSimParticles(cfg,defactive_);
95 >  const SimParticleMap* simParticleMap=0;
96 >  if (fillerSimParticles->Active()) {
97 >    fillers_.push_back(fillerSimParticles);
98 >    simParticleMap = fillerSimParticles->GetSimParticleMap();
99 >  }
100 >  else
101 >    delete fillerSimParticles;  
102 >  
103 >  FillerTracks *fillerGeneralTracks =
104 >    new FillerTracks(cfg,"GeneralTracks",defactive_,simParticleMap);
105 >  const TrackMap* generalTrackMap=0;
106 >  if (fillerGeneralTracks->Active()) {
107 >    fillers_.push_back(fillerGeneralTracks);
108 >    generalTrackMap = fillerGeneralTracks->GetTrackMap();
109 >  }
110 >  else
111 >    delete fillerGeneralTracks;
112 >    
113 >  FillerTracks *fillerStandaloneMuonTracks =
114 >    new FillerTracks(cfg,"StandaloneMuonTracks",defactive_);
115 >  const TrackMap* standaloneMuonTrackMap=0;
116 >  if (fillerStandaloneMuonTracks->Active()) {
117 >    fillers_.push_back(fillerStandaloneMuonTracks);
118 >    standaloneMuonTrackMap = fillerStandaloneMuonTracks->GetTrackMap();
119    }
120 +  else
121 +    delete fillerStandaloneMuonTracks;
122  
123 <  // Second step: Loop over the link resolution of the various components
124 <  for (std::vector<BaseFiller*>::const_iterator iF = fillers_.begin(); iF != fillers_.end(); ++iF) {
125 <    (*iF)->ResolveLinks(event,setup);
123 >  FillerTracks *fillerStandaloneMuonTracksVtx =
124 >    new FillerTracks(cfg,"StandaloneMuonTracksWVtxConstraint",defactive_);
125 >  const TrackMap* standaloneMuonTrackVtxMap=0;
126 >  if (fillerStandaloneMuonTracksVtx->Active()) {
127 >    fillers_.push_back(fillerStandaloneMuonTracksVtx);
128 >    standaloneMuonTrackVtxMap = fillerStandaloneMuonTracksVtx->GetTrackMap();
129 >  }
130 >  else
131 >    delete fillerStandaloneMuonTracksVtx;
132 >    
133 >  FillerTracks *fillerGlobalMuonTracks = new FillerTracks(cfg,"GlobalMuonTracks",defactive_);
134 >  const TrackMap* globalMuonTrackMap=0;
135 >  if (fillerGlobalMuonTracks->Active()) {
136 >    fillers_.push_back(fillerGlobalMuonTracks);
137 >    globalMuonTrackMap = fillerGlobalMuonTracks->GetTrackMap();
138 >  }
139 >  else
140 >    delete fillerGlobalMuonTracks;  
141 >    
142 >  FillerTracks *fillerConversionInOutTracks =
143 >    new FillerTracks(cfg,"ConversionInOutTracks",defactive_,simParticleMap);
144 >  const TrackMap* conversionInOutTrackMap=0;
145 >  const TrackCol* conversionInOutTracks=0;
146 >  if (fillerConversionInOutTracks->Active()) {
147 >    fillers_.push_back(fillerConversionInOutTracks);
148 >    conversionInOutTrackMap = fillerConversionInOutTracks->GetTrackMap();
149 >    conversionInOutTracks = fillerConversionInOutTracks->GetTrackCol();
150 >  }
151 >  else
152 >    delete fillerConversionInOutTracks;
153 >    
154 >  FillerTracks *fillerConversionOutInTracks =
155 >    new FillerTracks(cfg,"ConversionOutInTracks",defactive_,simParticleMap);
156 >  const TrackMap* conversionOutInTrackMap=0;
157 >  const TrackCol* conversionOutInTracks=0;
158 >  if (fillerConversionOutInTracks->Active()) {
159 >    fillers_.push_back(fillerConversionOutInTracks);
160 >    conversionOutInTrackMap = fillerConversionOutInTracks->GetTrackMap();
161 >    conversionOutInTracks = fillerConversionOutInTracks->GetTrackCol();
162 >  }
163 >  else
164 >    delete fillerConversionOutInTracks;
165 >    
166 >  FillerGsfTracks *fillerGsfTracks =
167 >    new FillerGsfTracks(cfg,"GsfTracks",defactive_,simParticleMap);
168 >  const GsfTrackMap* gsfTrackMap=0;
169 >  if (fillerGsfTracks->Active()) {
170 >    fillers_.push_back(fillerGsfTracks);
171 >    gsfTrackMap = (GsfTrackMap*)fillerGsfTracks->GetTrackMap();
172 >  }
173 >  else
174 >    delete fillerGsfTracks;
175 >    
176 >  FillerMuons *fillerMuons =
177 >    new FillerMuons(cfg,defactive_,globalMuonTrackMap,standaloneMuonTrackMap,
178 >                    standaloneMuonTrackVtxMap,generalTrackMap);
179 >  if (fillerMuons->Active())
180 >    fillers_.push_back(fillerMuons);
181 >  else
182 >    delete fillerMuons;
183 >    
184 >  FillerElectrons *fillerElectrons =
185 >    new FillerElectrons(cfg,defactive_,gsfTrackMap,generalTrackMap);
186 >  if (fillerElectrons->Active())
187 >    fillers_.push_back(fillerElectrons);
188 >  else
189 >    delete fillerElectrons;
190 >  
191 >  FillerConversionElectrons *fillerConversionElectrons =
192 >    new FillerConversionElectrons(cfg, defactive_, conversionInOutTracks, conversionOutInTracks,
193 >                                  conversionInOutTrackMap, conversionOutInTrackMap);
194 >  const ConversionElectronMap* convElectronMap=0;
195 >  if (fillerConversionElectrons->Active()) {
196 >    fillers_.push_back(fillerConversionElectrons);
197 >    convElectronMap = fillerConversionElectrons->GetConversionElectronMap();
198 >  }
199 >  else
200 >    delete fillerConversionElectrons;
201 >    
202 >  FillerConversions *fillerConversions = new FillerConversions(cfg, defactive_, convElectronMap);
203 >  const ConversionMap* conversionMap=0;
204 >  if (fillerConversions->Active()) {
205 >    fillers_.push_back(fillerConversions);
206 >    conversionMap = fillerConversions->GetConversionMap();
207    }
208 +  else
209 +    delete fillerConversions;
210 +    
211 +  FillerPhotons *fillerPhotons = new FillerPhotons(cfg, defactive_, conversionMap);
212 +  if (fillerPhotons->Active())
213 +    fillers_.push_back(fillerPhotons);
214 +  else
215 +    delete fillerPhotons;
216 +
217 +
218 +  return 1;
219   }
220  
221 < //-------------------------------------------------------------------------------------------------
221 > //--------------------------------------------------------------------------------------------------
222   void FillMitTree::endJob()
223   {
224    // Delete fillers.

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines