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.13 by paus, Mon Jul 28 23:13:44 2008 UTC vs.
Revision 1.67 by paus, Sat May 5 16:49:59 2012 UTC

# Line 2 | Line 2
2  
3   #include "MitProd/TreeFiller/interface/FillMitTree.h"
4   #include "FWCore/MessageLogger/interface/MessageLogger.h"
5 + #include "FWCore/ParameterSet/interface/ParameterSet.h"
6   #include "FWCore/ServiceRegistry/interface/Service.h"
7 < #include "MitProd/TreeService/interface/TreeService.h"
7 > #include "MitProd/ObjectService/interface/ObjectService.h"
8   #include "MitProd/TreeFiller/interface/AssociationMaps.h"
9 < #include "MitProd/TreeFiller/interface/FillerMetaInfos.h"
10 < #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 < #include "MitProd/TreeFiller/interface/FillerElectrons.h"
9 > #include "MitProd/TreeFiller/interface/FillerBasicClusters.h"
10 > #include "MitProd/TreeFiller/interface/FillerBeamSpot.h"
11   #include "MitProd/TreeFiller/interface/FillerCaloJets.h"
12   #include "MitProd/TreeFiller/interface/FillerCaloMet.h"
13 + #include "MitProd/TreeFiller/interface/FillerCaloTaus.h"
14 + #include "MitProd/TreeFiller/interface/FillerCaloTowers.h"
15   #include "MitProd/TreeFiller/interface/FillerConversions.h"
16 < #include "MitProd/TreeFiller/interface/FillerConversionElectrons.h"
18 < #include "MitProd/TreeFiller/interface/FillerPhotons.h"
19 < #include "MitProd/TreeFiller/interface/FillerMCParticles.h"
16 > #include "MitProd/TreeFiller/interface/FillerConversionsDecay.h"
17   #include "MitProd/TreeFiller/interface/FillerDecayParts.h"
18 + #include "MitProd/TreeFiller/interface/FillerDCASig.h"
19 + #include "MitProd/TreeFiller/interface/FillerEmbedWeight.h"
20 + #include "MitProd/TreeFiller/interface/FillerElectrons.h"
21 + #include "MitProd/TreeFiller/interface/FillerEvtSelData.h"
22 + #include "MitProd/TreeFiller/interface/FillerGenJets.h"
23 + #include "MitProd/TreeFiller/interface/FillerGenMet.h"
24 + #include "MitProd/TreeFiller/interface/FillerJPTJets.h"
25 + #include "MitProd/TreeFiller/interface/FillerMCEventInfo.h"
26 + #include "MitProd/TreeFiller/interface/FillerMCParticles.h"
27 + #include "MitProd/TreeFiller/interface/FillerMCVertexes.h"
28 + #include "MitProd/TreeFiller/interface/FillerMet.h"
29 + #include "MitProd/TreeFiller/interface/FillerMetaInfos.h"
30 + #include "MitProd/TreeFiller/interface/FillerMetaInfos.h"
31 + #include "MitProd/TreeFiller/interface/FillerMuons.h"
32 + #include "MitProd/TreeFiller/interface/FillerPFCandidates.h"
33 + #include "MitProd/TreeFiller/interface/FillerPFJets.h"
34 + #include "MitProd/TreeFiller/interface/FillerPFMet.h"
35 + #include "MitProd/TreeFiller/interface/FillerPFTaus.h"
36 + #include "MitProd/TreeFiller/interface/FillerPhotons.h"
37 + #include "MitProd/TreeFiller/interface/FillerPileupInfo.h"
38 + #include "MitProd/TreeFiller/interface/FillerPileupEnergyDensity.h"
39 + #include "MitProd/TreeFiller/interface/FillerPixelHits.h"
40 + #include "MitProd/TreeFiller/interface/FillerPsClusters.h"
41   #include "MitProd/TreeFiller/interface/FillerStableParts.h"
42 + #include "MitProd/TreeFiller/interface/FillerStripHits.h"
43 + #include "MitProd/TreeFiller/interface/FillerSuperClusters.h"
44 + #include "MitProd/TreeFiller/interface/FillerTracks.h"
45 + #include "MitProd/TreeFiller/interface/FillerTrackJets.h"
46 + #include "MitProd/TreeFiller/interface/FillerVertexes.h"
47 + #include "MitAna/DataTree/interface/Names.h"
48 + #include "MitAna/DataTree/interface/BranchTable.h"
49 + #include "MitCommon/OptIO/interface/OptInt.h"
50  
51   using namespace std;
52   using namespace edm;
53   using namespace mithep;
54  
55 + mithep::ObjectService *mithep::FillMitTree::os_ = 0;
56 +
57   //--------------------------------------------------------------------------------------------------
58   FillMitTree::FillMitTree(const edm::ParameterSet &cfg) :
59 <  defactive_(cfg.getUntrackedParameter<bool>("defactive",1))
59 >  defactive_(cfg.getUntrackedParameter<bool>("defactive",1)),
60 >  brtable_(0),
61 >  acfnumber_(-1),
62 >  tws_(new TreeWriter(Names::gkEvtTreeName,0))
63   {
64    // Constructor.
65 <    
65 >
66    if (!configure(cfg)) {
67      throw edm::Exception(edm::errors::Configuration, "FillMitTree::FillMitTree()\n")
68        << "Could not configure fillers." << "\n";
# Line 39 | Line 72 | FillMitTree::FillMitTree(const edm::Para
72   //--------------------------------------------------------------------------------------------------
73   FillMitTree::~FillMitTree()
74   {
75 <  // Destructor: nothing to be done here.
75 >  // Destructor.
76 >
77 >  delete brtable_;
78 >  delete tws_;
79   }
80  
81   //--------------------------------------------------------------------------------------------------
82 < void FillMitTree::analyze(const edm::Event      &event,
47 <                          const edm::EventSetup &setup)
82 > bool FillMitTree::addActiveFiller(BaseFiller *bf)
83   {
84 <  // Access and copy event content.
84 >  // Check if filler is active and add it to list of fillers. Otherwise delete it.
85  
86 <  // First step: Loop over the data fillers of the various components
87 <  for (std::vector<BaseFiller*>::const_iterator iF = fillers_.begin(); iF != fillers_.end(); ++iF) {
53 <    (*iF)->FillDataBlock(event,setup);
54 <  }
86 >  if (!bf)
87 >    return 0;
88  
89 <  // Second step: Loop over the link resolution of the various components
90 <  for (std::vector<BaseFiller*>::const_iterator iF = fillers_.begin(); iF != fillers_.end(); ++iF) {
91 <    (*iF)->ResolveLinks(event,setup);
89 >  if (bf->Active()) {
90 >    fillers_.push_back(bf);
91 >    return 1;
92    }
93 +
94 +  delete bf;
95 +  bf = 0;
96 +  return 0;
97   }
98  
99   //--------------------------------------------------------------------------------------------------
100 < void FillMitTree::beginJob(const edm::EventSetup &event)
100 > void FillMitTree::beginRun(edm::Run const &run, edm::EventSetup const &setup)
101   {
102 <  // Access the tree and book branches.
102 >  // Access and copy event content.
103  
104 <  Service<TreeService> ts;
105 <  TreeWriter *tws = ts->get();
106 <  if (! tws) {
70 <    throw edm::Exception(edm::errors::Configuration, "FillMitTree::beginJob()\n")
71 <      << "Could not get pointer to tree." << "\n";
72 <    return;
104 >  // first step: Loop over the data fillers of the various components
105 >  for (std::vector<BaseFiller*>::const_iterator iF = fillers_.begin(); iF != fillers_.end(); ++iF) {
106 >    (*iF)->FillRunBlock(run,setup);
107    }
108    
75  // Loop over the various components and book the branches
76  for (std::vector<BaseFiller*>::iterator iF = fillers_.begin(); iF != fillers_.end(); ++iF) {
77    (*iF)->BookDataBlock(*tws);
78  }
109   }
110  
111   //--------------------------------------------------------------------------------------------------
112 < bool FillMitTree::configure(const edm::ParameterSet &cfg)
112 > void FillMitTree::analyze(const edm::Event      &event,
113 >                          const edm::EventSetup &setup)
114   {
115 <  // Configure our fillers.
116 <
117 <  FillerMetaInfos *fillerMetaInfos = new FillerMetaInfos(cfg);
118 <  if (fillerMetaInfos->Active())
88 <    fillers_.push_back(fillerMetaInfos);
89 <  else {
90 <    delete fillerMetaInfos;
91 <    fillerMetaInfos = 0;
92 <  }
93 <
94 <  FillerMCParticles *fillerMCParticles = new FillerMCParticles(cfg,"MCParticles",defactive_);
95 <  const GenParticleMap* genParticleMap = 0;
96 <  const SimParticleMap *simParticleMap = 0;
97 <  if (fillerMCParticles->Active()) {
98 <    fillers_.push_back(fillerMCParticles);
99 <    genParticleMap = fillerMCParticles->GetGenParticleMap();
100 <    simParticleMap = fillerMCParticles->GetSimParticleMap();
101 <  }
102 <  else {
103 <    delete fillerMCParticles;  
104 <    fillerMCParticles = 0;
105 <  }
106 <
107 <  FillerCaloJets *fillerCaloJets = new FillerCaloJets(cfg,"CaloJets",defactive_);
108 <  if (fillerCaloJets->Active()) {
109 <    fillers_.push_back(fillerCaloJets);
110 <  }
111 <  else {
112 <    delete fillerCaloJets;
113 <    fillerCaloJets = 0;
114 <  }
115 >  // Access and copy event content.
116 >  
117 >  //tree writer begin event actions
118 >  tws_->BeginEvent(kTRUE);
119  
120 <  FillerCaloMet *fillerCaloMet = new FillerCaloMet(cfg,"CaloMet",defactive_);
121 <  if (fillerCaloMet->Active()) {
122 <    fillers_.push_back(fillerCaloMet);
123 <  }
120 <  else {
121 <    delete fillerCaloMet;
122 <    fillerCaloMet = 0;
120 >  // first step: Loop over the data fillers of the various components
121 >  for (std::vector<BaseFiller*>::const_iterator iF = fillers_.begin(); iF != fillers_.end(); ++iF) {
122 >    //printf("%s FillDataBlock\n",(*iF)->Name().c_str());
123 >    (*iF)->FillDataBlock(event,setup);
124    }
125  
126 <  FillerTracks *fillerGeneralTracks =
127 <    new FillerTracks(cfg,"GeneralTracks",defactive_,simParticleMap);
128 <  const TrackMap *generalTrackMap=0;
129 <  if (fillerGeneralTracks->Active()) {
129 <    fillers_.push_back(fillerGeneralTracks);
130 <    generalTrackMap = fillerGeneralTracks->GetTrackMap();
131 <  }
132 <  else {
133 <    delete fillerGeneralTracks;
134 <    fillerGeneralTracks = 0;
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 >    //printf("%s ResolveLinks\n",(*iF)->Name().c_str());
129 >    (*iF)->ResolveLinks(event,setup);
130    }
131  
132 <  FillerTracks *fillerStandaloneMuonTracks =
133 <    new FillerTracks(cfg,"StandaloneMuonTracks",defactive_);
134 <  const TrackMap *standaloneMuonTrackMap=0;
135 <  if (fillerStandaloneMuonTracks->Active()) {
136 <    fillers_.push_back(fillerStandaloneMuonTracks);
137 <    standaloneMuonTrackMap = fillerStandaloneMuonTracks->GetTrackMap();
138 <  }
139 <  else {
140 <    delete fillerStandaloneMuonTracks;
141 <    fillerStandaloneMuonTracks = 0;
132 >  if (brtable_) { // only the first FillMitTree object has to deal with the branch table
133 >    if (acfnumber_==-1) {
134 >      brtable_->Rehash(brtable_->GetSize());
135 >      if (0)
136 >        brtable_->Print();
137 >    }
138 >    if (acfnumber_ != tws_->GetFileNumber()) {
139 >      tws_->StoreObject(brtable_);
140 >      acfnumber_ = tws_->GetFileNumber();
141 >    }
142    }
143  
144 <  FillerTracks *fillerStandaloneMuonTracksVtx =
145 <    new FillerTracks(cfg,"StandaloneMuonTracksWVtxConstraint",defactive_);
146 <  const TrackMap *standaloneMuonTrackVtxMap=0;
152 <  if (fillerStandaloneMuonTracksVtx->Active()) {
153 <    fillers_.push_back(fillerStandaloneMuonTracksVtx);
154 <    standaloneMuonTrackVtxMap = fillerStandaloneMuonTracksVtx->GetTrackMap();
155 <  }
156 <  else {
157 <    delete fillerStandaloneMuonTracksVtx;
158 <    fillerStandaloneMuonTracksVtx = 0;
159 <  }
144 >  //tree writer end of event actions
145 >  tws_->EndEvent(kTRUE);
146 > }
147  
148 <  FillerTracks *fillerGlobalMuonTracks = new FillerTracks(cfg,"GlobalMuonTracks",defactive_);
149 <  const TrackMap *globalMuonTrackMap=0;
150 <  if (fillerGlobalMuonTracks->Active()) {
151 <    fillers_.push_back(fillerGlobalMuonTracks);
165 <    globalMuonTrackMap = fillerGlobalMuonTracks->GetTrackMap();
166 <  }
167 <  else {
168 <    delete fillerGlobalMuonTracks;  
169 <    fillerGlobalMuonTracks = 0;
170 <  }
171 <    
172 <  FillerTracks *fillerConversionInOutTracks =
173 <    new FillerTracks(cfg,"ConversionInOutTracks",defactive_,simParticleMap);
174 <  const TrackMap *conversionInOutTrackMap=0;
175 <  const TrackCol *conversionInOutTracks=0;
176 <  if (fillerConversionInOutTracks->Active()) {
177 <    fillers_.push_back(fillerConversionInOutTracks);
178 <    conversionInOutTrackMap = fillerConversionInOutTracks->GetTrackMap();
179 <    conversionInOutTracks = fillerConversionInOutTracks->GetTrackCol();
180 <  }
181 <  else {
182 <    delete fillerConversionInOutTracks;
183 <    fillerConversionInOutTracks = 0;
184 <  }
148 > //--------------------------------------------------------------------------------------------------
149 > void FillMitTree::beginJob()
150 > {
151 >  // Access the tree and book branches.
152  
153 <  FillerTracks *fillerConversionOutInTracks =
154 <    new FillerTracks(cfg,"ConversionOutInTracks",defactive_,simParticleMap);
155 <  const TrackMap *conversionOutInTrackMap=0;
156 <  const TrackCol *conversionOutInTracks=0;
157 <  if (fillerConversionOutInTracks->Active()) {
158 <    fillers_.push_back(fillerConversionOutInTracks);
159 <    conversionOutInTrackMap = fillerConversionOutInTracks->GetTrackMap();
160 <    conversionOutInTracks = fillerConversionOutInTracks->GetTrackCol();
161 <  }
162 <  else {
163 <    delete fillerConversionOutInTracks;
164 <    fillerConversionOutInTracks = 0;
153 >  if (os_==0) { // only the first FillMitTree object has to deal with this
154 >    Service<ObjectService> os;
155 >    if (!os.isAvailable()) {
156 >      throw edm::Exception(edm::errors::Configuration, "FillMitTree::beginJob()\n")
157 >        << "Could not get object service. "
158 >        << "Do you have the ObjectService defined in your config?" << "\n";
159 >      return;
160 >    }
161 >    os_ = &(*os);
162 >    brtable_ = new BranchTable;
163 >    brtable_->SetName(Names::gkBranchTable);
164 >    brtable_->SetOwner();
165 >    os->add(brtable_, brtable_->GetName());
166    }
167  
168 <  FillerGsfTracks *fillerGsfTracks =
169 <    new FillerGsfTracks(cfg,"GsfTracks",defactive_,simParticleMap);
170 <  const GsfTrackMap *gsfTrackMap=0;
171 <  if (fillerGsfTracks->Active()) {
204 <    fillers_.push_back(fillerGsfTracks);
205 <    gsfTrackMap = (GsfTrackMap*)fillerGsfTracks->GetTrackMap();
206 <  }
207 <  else {
208 <    delete fillerGsfTracks;
209 <    fillerGsfTracks = 0;
168 >  // loop over the various components and book the branches
169 >  for (std::vector<BaseFiller*>::iterator iF = fillers_.begin(); iF != fillers_.end(); ++iF) {
170 >    edm::LogInfo("FillMitTree::beginJob") << "Booking for " << (*iF)->Name() << endl;
171 >    (*iF)->BookDataBlock(*tws_);
172    }
173  
174 <  FillerMuons *fillerMuons =
175 <    new FillerMuons(cfg,defactive_,globalMuonTrackMap,standaloneMuonTrackMap,
176 <                    standaloneMuonTrackVtxMap,generalTrackMap);
177 <  if (fillerMuons->Active())
178 <    fillers_.push_back(fillerMuons);
217 <  else {
218 <    delete fillerMuons;
219 <    fillerMuons = 0;
220 <  }
174 >  // call branch ref for the event tree
175 >  if (brtable_ && tws_->GetTree())
176 >    tws_->GetTree()->BranchRef();
177 >  
178 > }
179  
180 <  FillerElectrons *fillerElectrons =
181 <    new FillerElectrons(cfg,defactive_,gsfTrackMap,generalTrackMap);
182 <  if (fillerElectrons->Active())
225 <    fillers_.push_back(fillerElectrons);
226 <  else {
227 <    delete fillerElectrons;
228 <      fillerElectrons = 0;
229 <  }
180 > //--------------------------------------------------------------------------------------------------
181 > bool FillMitTree::configure(const edm::ParameterSet &cfg)
182 > {
183  
184 <  FillerConversionElectrons *fillerConversionElectrons =
185 <    new FillerConversionElectrons(cfg, defactive_, conversionInOutTracks, conversionOutInTracks,
186 <                                  conversionInOutTrackMap, conversionOutInTrackMap);
187 <  const ConversionElectronMap *convElectronMap=0;
188 <  if (fillerConversionElectrons->Active()) {
189 <    fillers_.push_back(fillerConversionElectrons);
190 <    convElectronMap = fillerConversionElectrons->GetConversionElectronMap();
191 <  }
192 <  else {
240 <    delete fillerConversionElectrons;
241 <    fillerConversionElectrons = 0;
242 <  }
184 >  // Configure TreeWriter
185 >  const std::string twsConfigName("TreeWriter");
186 >  ParameterSet twsConfig;
187 >  if (cfg.existsAs<ParameterSet>(twsConfigName,0))
188 >    twsConfig = cfg.getUntrackedParameter<ParameterSet>(twsConfigName);
189 >  
190 >  configureTreeWriter(twsConfig);
191 >  
192 >  // Configure our fillers according to given parameter ("fillers").
193  
194 <  FillerConversions *fillerConversions = new FillerConversions(cfg, defactive_, convElectronMap);
195 <  const ConversionMap *conversionMap=0;
196 <  if (fillerConversions->Active()) {
197 <    fillers_.push_back(fillerConversions);
198 <    conversionMap = fillerConversions->GetConversionMap();
199 <  }
200 <  else {
201 <    delete fillerConversions;
202 <    fillerConversions = 0;
194 >  std::vector<std::string> pars;
195 >  if (cfg.exists("fillers"))
196 >    pars=cfg.getUntrackedParameter<vector<string> >("fillers");
197 >  else
198 >    cfg.getParameterSetNames(pars, false);
199 >
200 >  // loop over psets
201 >  for (unsigned int i = 0; i<pars.size(); ++i) {
202 >
203 >    const string name(pars.at(i));
204 >
205 >    string ftype("Filler" + name);
206 >    if (cfg.existsAs<ParameterSet>(name,0)) {
207 >      ParameterSet next(cfg.getUntrackedParameter<ParameterSet>(name));
208 >      if (!next.exists("fillerType")) {
209 >        edm::LogError("FillMitTree") << "Cannot determine fillerType for pset named "
210 >                                     << name << std::endl;
211 >        throw edm::Exception(edm::errors::Configuration, "FillMitTree::configure\n")
212 >          << "Cannot determine fillerType for pset named "
213 >          << name << std::endl;
214 >      }
215 >      ftype = next.getUntrackedParameter<string>("fillerType");
216 >    }
217 >
218 >    edm::LogInfo("FillMitTree") << "Attempting to configure '" << ftype
219 >                                << "' for '" << name << "'" << std::endl;
220 >
221 >    if (ftype.compare("FillerMetaInfos")==0) {
222 >      FillerMetaInfos *fillerMetaInfos = new FillerMetaInfos(cfg, name.c_str(), defactive_);
223 >      addActiveFiller(fillerMetaInfos);
224 >      continue;
225 >    }
226 >    if (ftype.compare("FillerMCParticles")==0) {
227 >      FillerMCParticles *fillerMCParticles = new FillerMCParticles(cfg, name.c_str(), defactive_);
228 >      addActiveFiller(fillerMCParticles);
229 >      continue;
230 >    }
231 >    if (ftype.compare("FillerMCEventInfo")==0) {
232 >      FillerMCEventInfo *fillerMCEventInfo = new FillerMCEventInfo(cfg, name.c_str(), defactive_);
233 >      addActiveFiller(fillerMCEventInfo);
234 >      continue;
235 >    }
236 >    if (ftype.compare("FillerMCVertexes")==0) {
237 >      FillerMCVertexes *fillerMCVertexes = new FillerMCVertexes(cfg, name.c_str(), defactive_);
238 >      addActiveFiller(fillerMCVertexes);
239 >      continue;
240 >    }  
241 >    if (ftype.compare("FillerEvtSelData")==0) {
242 >      FillerEvtSelData *fillerEvtSelData = new FillerEvtSelData(cfg, name.c_str(), defactive_);
243 >      addActiveFiller(fillerEvtSelData);
244 >      continue;
245 >    }
246 >    if (ftype.compare("FillerBeamSpot")==0) {
247 >      FillerBeamSpot *fillerBeamSpot = new FillerBeamSpot(cfg, name.c_str(), defactive_);
248 >      addActiveFiller(fillerBeamSpot);
249 >      continue;
250 >    }
251 >    if (ftype.compare("FillerVertexes")==0) {
252 >      FillerVertexes *fillerVertexes = new FillerVertexes(cfg, name.c_str(), defactive_);
253 >      addActiveFiller(fillerVertexes);
254 >      continue;
255 >    }  
256 >    if (ftype.compare("FillerCaloTowers")==0) {
257 >      FillerCaloTowers *fillerCaloTowers = new FillerCaloTowers(cfg, name.c_str(), defactive_);
258 >      addActiveFiller(fillerCaloTowers);
259 >      continue;
260 >    }  
261 >    if (ftype.compare("FillerGenJets")==0) {
262 >      FillerGenJets *fillerGenJets = new FillerGenJets(cfg, name.c_str(), defactive_);
263 >      addActiveFiller(fillerGenJets);
264 >      continue;
265 >    }  
266 >    if (ftype.compare("FillerCaloJets")==0) {
267 >      FillerCaloJets *fillerCaloJets = new FillerCaloJets(cfg, name.c_str(), defactive_);
268 >      addActiveFiller(fillerCaloJets);
269 >      continue;
270 >    }  
271 >    if (ftype.compare("FillerMet")==0) {
272 >      FillerMet *fillerMet = new FillerMet(cfg, name.c_str(), defactive_);
273 >      addActiveFiller(fillerMet);
274 >      continue;
275 >    }  
276 >    if (ftype.compare("FillerGenMet")==0) {
277 >      FillerGenMet *fillerGenMet = new FillerGenMet(cfg, name.c_str(), defactive_);
278 >      addActiveFiller(fillerGenMet);
279 >      continue;
280 >    }  
281 >    if (ftype.compare("FillerCaloMet")==0) {
282 >      FillerCaloMet *fillerCaloMet = new FillerCaloMet(cfg, name.c_str(), defactive_);
283 >      addActiveFiller(fillerCaloMet);
284 >      continue;
285 >    }
286 >    if (ftype.compare("FillerPFMet")==0) {
287 >      FillerPFMet *fillerPFMet = new FillerPFMet(cfg, name.c_str(), defactive_);
288 >      addActiveFiller(fillerPFMet);
289 >      continue;
290 >    }  
291 >    if (ftype.compare("FillerBasicClusters")==0) {
292 >      FillerBasicClusters *fillerBasicClusters =
293 >        new FillerBasicClusters(cfg, name.c_str(), defactive_);
294 >      addActiveFiller(fillerBasicClusters);
295 >      continue;
296 >    }  
297 >    if (ftype.compare("FillerPsClusters")==0) {
298 >      FillerPsClusters *fillerPsClusters =
299 >        new FillerPsClusters(cfg, name.c_str(), defactive_);
300 >      addActiveFiller(fillerPsClusters);
301 >      continue;
302 >    }  
303 >    if (ftype.compare("FillerSuperClusters")==0) {
304 >      FillerSuperClusters *fillerSuperClusters =  
305 >        new FillerSuperClusters(cfg, name.c_str(), defactive_);
306 >      addActiveFiller(fillerSuperClusters);
307 >      continue;
308 >    }  
309 >    if (ftype.compare("FillerPixelHits")==0) {
310 >      FillerPixelHits *fillerPixelHits =  
311 >        new FillerPixelHits(cfg, name.c_str(), defactive_);
312 >      addActiveFiller(fillerPixelHits);
313 >      continue;
314 >    }  
315 >    if (ftype.compare("FillerPileupInfo")==0) {
316 >      FillerPileupInfo *fillerPileupInfo =  
317 >        new FillerPileupInfo(cfg, name.c_str(), defactive_);
318 >      addActiveFiller(fillerPileupInfo);
319 >      continue;
320 >    }  
321 >    if (ftype.compare("FillerPileupEnergyDensity")==0) {
322 >      FillerPileupEnergyDensity *fillerPileupEnergyDensity =  
323 >        new FillerPileupEnergyDensity(cfg, name.c_str(), defactive_);
324 >      addActiveFiller(fillerPileupEnergyDensity);
325 >      continue;
326 >    }  
327 >    if (ftype.compare("FillerStripHits")==0) {
328 >      FillerStripHits *fillerStripHits =  
329 >        new FillerStripHits(cfg, name.c_str(), defactive_);
330 >      addActiveFiller(fillerStripHits);
331 >      continue;
332 >    }  
333 >    if (ftype.compare("FillerTracks")==0) {
334 >      FillerTracks *fillerTracks = new FillerTracks(cfg, name.c_str(), defactive_);
335 >      addActiveFiller(fillerTracks);
336 >      continue;
337 >    }  
338 >    if (ftype.compare("FillerMuons")==0) {
339 >      FillerMuons *fillerMuons = new FillerMuons(cfg, name.c_str(), defactive_);
340 >      addActiveFiller(fillerMuons);
341 >      continue;
342 >    }  
343 >    if (ftype.compare("FillerElectrons")==0) {
344 >      FillerElectrons *fillerElectrons = new FillerElectrons(cfg, name.c_str(), defactive_);
345 >      addActiveFiller(fillerElectrons);
346 >      continue;
347 >    }  
348 >    if (ftype.compare("FillerConversions")==0) {
349 >      FillerConversions *fillerConversions = new FillerConversions(cfg, name.c_str(), defactive_);
350 >      addActiveFiller(fillerConversions);
351 >      continue;
352 >    }
353 >    if (ftype.compare("FillerConversionsDecay")==0) {
354 >      FillerConversionsDecay *fillerConversionsDecay = new FillerConversionsDecay(cfg, name.c_str(), defactive_);
355 >      addActiveFiller(fillerConversionsDecay);
356 >      continue;
357 >    }    
358 >    if (ftype.compare("FillerPhotons")==0) {
359 >      FillerPhotons *fillerPhotons = new FillerPhotons(cfg, name.c_str(), defactive_);
360 >      addActiveFiller(fillerPhotons);
361 >      continue;
362 >    }  
363 >    if (ftype.compare("FillerStableParts")==0) {
364 >      FillerStableParts *fillerStableParts = new FillerStableParts(cfg, name.c_str(), defactive_);
365 >      addActiveFiller(fillerStableParts);
366 >      continue;
367 >    }  
368 >    if (ftype.compare("FillerDecayParts")==0) {
369 >      FillerDecayParts *fillerDecayParts = new FillerDecayParts(cfg, name.c_str(), defactive_);
370 >      addActiveFiller(fillerDecayParts);
371 >      continue;
372 >    }  
373 >    if (ftype.compare("FillerPFCandidates")==0) {
374 >      FillerPFCandidates *fillerPFCands = new FillerPFCandidates(cfg, name.c_str(), defactive_);
375 >      addActiveFiller(fillerPFCands);
376 >      continue;
377 >    }  
378 >    if (ftype.compare("FillerPFJets")==0) {
379 >      FillerPFJets *fillerPFJets = new FillerPFJets(cfg, name.c_str(), defactive_);
380 >      addActiveFiller(fillerPFJets);
381 >      continue;
382 >    }  
383 >    if (ftype.compare("FillerJPTJets")==0) {
384 >      FillerJPTJets *fillerJPTJets = new FillerJPTJets(cfg, name.c_str(), defactive_);
385 >      addActiveFiller(fillerJPTJets);
386 >      continue;
387 >    }  
388 >    if (ftype.compare("FillerCaloTaus")==0) {
389 >      FillerCaloTaus *fillerCaloTaus = new FillerCaloTaus(cfg, name.c_str(), defactive_);
390 >      addActiveFiller(fillerCaloTaus);
391 >      continue;
392 >    }
393 >    if (ftype.compare("FillerPFTaus")==0) {
394 >      FillerPFTaus *fillerPFTaus = new FillerPFTaus(cfg, name.c_str(), defactive_);
395 >      addActiveFiller(fillerPFTaus);
396 >      continue;
397 >    }  
398 >    if (ftype.compare("FillerTrackJets")==0) {
399 >      FillerTrackJets *fillerTrackJets = new FillerTrackJets(cfg, name.c_str(), defactive_);
400 >      addActiveFiller(fillerTrackJets);
401 >      continue;
402 >    }
403 >    if (ftype.compare("FillerEmbedWeight")==0) {
404 >      FillerEmbedWeight *fillerEmbedWeight = new FillerEmbedWeight(cfg, name.c_str(), defactive_);
405 >      addActiveFiller(fillerEmbedWeight);
406 >      continue;
407 >    }
408 >    if (ftype.compare("FillerDCASig")==0) {
409 >      FillerDCASig *fillerDCASig = new FillerDCASig(cfg, name.c_str(), defactive_);
410 >      addActiveFiller(fillerDCASig);
411 >      continue;
412 >    }
413 >    
414 >    edm::LogError("FillMitTree")
415 >      << "Unknown fillerType " << ftype << " for pset named " << name << std::endl;
416 >    throw edm::Exception(edm::errors::Configuration, "FillMitTree::configure\n")
417 >      << "Unknown fillerType " << ftype << " for pset named " << name << std::endl;
418    }
419  
420 <  FillerPhotons *fillerPhotons = new FillerPhotons(cfg, defactive_, conversionMap);
421 <  if (fillerPhotons->Active())
257 <    fillers_.push_back(fillerPhotons);
258 <  else {
259 <    delete fillerPhotons;
260 <    fillerPhotons = 0;
261 <  }
420 >  return 1;
421 > }
422  
423 + //--------------------------------------------------------------------------------------------------
424 + bool FillMitTree::configureTreeWriter(const edm::ParameterSet &cfg)
425 + {
426 +  // Configure tree writer with options from config file.
427  
428 <  FillerStableParts *fillerStableParts = new FillerStableParts(cfg,"StableParts",defactive_);
429 <  if (fillerStableParts->Active()) {
430 <    fillers_.push_back(fillerStableParts);
431 <  }
432 <  else {
433 <    delete fillerStableParts;
434 <    fillerStableParts = 0;
435 <  }
436 <  FillerDecayParts *fillerDecayParts = new FillerDecayParts(cfg,"DecayParts",defactive_);
437 <  if (fillerDecayParts->Active()) {
438 <    fillers_.push_back(fillerDecayParts);
428 >  tws_->SetPrefix       (cfg.getUntrackedParameter<string>("fileName","mit-test"));
429 >  tws_->SetBaseURL      (cfg.getUntrackedParameter<string>("pathName","."));
430 >  tws_->SetMaxSize      ((Long64_t)
431 >                         cfg.getUntrackedParameter<unsigned>("maxSize",1024)*1024*1024);
432 >  tws_->SetCompressLevel(cfg.getUntrackedParameter<unsigned>("compLevel",9));
433 >  tws_->SetDefaultSL    (cfg.getUntrackedParameter<unsigned>("splitLevel",99));
434 >  tws_->SetDefaultBrSize(cfg.getUntrackedParameter<unsigned>("brSize",16*1024));
435 >  
436 >  if (OptInt::IsActivated()) {
437 >    OptInt::SetZipMode     (cfg.getUntrackedParameter<unsigned>("zipMode",99));
438 >    OptInt::SetGzipFraction(cfg.getUntrackedParameter<double>("gZipThres",1.0));
439 >    OptInt::SetBzipFraction(cfg.getUntrackedParameter<double>("bZipThres",-1.0));
440 >    OptInt::SetLzoFraction (cfg.getUntrackedParameter<double>("lzoThres",-1.0));
441 >    OptInt::SetLzmaFraction(cfg.getUntrackedParameter<double>("lzmaThres",0.95));
442 >    OptInt::SetVerbose     (cfg.getUntrackedParameter<unsigned>("optIOVerbose",0));
443    }
444    else {
445 <    delete fillerDecayParts;
446 <    fillerDecayParts = 0;
445 >    if (cfg.exists("zipMode")   || cfg.exists("bZipThres") || cfg.exists("gZipThres") ||
446 >        cfg.exists("lzoThres")  || cfg.exists("lzmaThres")) {
447 >      edm::LogError("FillMitTree") <<
448 >        "OptIO interface not properly pre-loaded, ignoring given settings." << std::endl;
449 >    }
450    }
451 <
451 >  
452    return 1;
453   }
454  
# Line 289 | Line 460 | void FillMitTree::endJob()
460    for (std::vector<BaseFiller*>::iterator iF = fillers_.begin(); iF != fillers_.end(); ++iF) {
461      delete *iF;
462    }
463 <
463 >  tws_->Clear();
464 >  
465    edm::LogInfo("FillMitTree::endJob") << "Ending Job" << endl;
466   }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines