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.41 by bendavid, Fri Mar 20 18:47:46 2009 UTC vs.
Revision 1.55 by bendavid, Wed Feb 24 17:38:27 2010 UTC

# Line 4 | Line 4
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/FillerBasicClusters.h"
# Line 13 | Line 12
12   #include "MitProd/TreeFiller/interface/FillerCaloMet.h"
13   #include "MitProd/TreeFiller/interface/FillerCaloTaus.h"
14   #include "MitProd/TreeFiller/interface/FillerCaloTowers.h"
16 #include "MitProd/TreeFiller/interface/FillerConversionElectrons.h"
15   #include "MitProd/TreeFiller/interface/FillerConversions.h"
16   #include "MitProd/TreeFiller/interface/FillerDecayParts.h"
17   #include "MitProd/TreeFiller/interface/FillerElectrons.h"
18 + #include "MitProd/TreeFiller/interface/FillerEvtSelData.h"
19   #include "MitProd/TreeFiller/interface/FillerGenJets.h"
20 < #include "MitProd/TreeFiller/interface/FillerMetaInfos.h"
20 > #include "MitProd/TreeFiller/interface/FillerGenMet.h"
21   #include "MitProd/TreeFiller/interface/FillerMCEventInfo.h"
22   #include "MitProd/TreeFiller/interface/FillerMCParticles.h"
23 + #include "MitProd/TreeFiller/interface/FillerMCVertexes.h"
24   #include "MitProd/TreeFiller/interface/FillerMet.h"
25   #include "MitProd/TreeFiller/interface/FillerMetaInfos.h"
26 + #include "MitProd/TreeFiller/interface/FillerMetaInfos.h"
27   #include "MitProd/TreeFiller/interface/FillerMuons.h"
28   #include "MitProd/TreeFiller/interface/FillerPFCandidates.h"
29   #include "MitProd/TreeFiller/interface/FillerPFJets.h"
30   #include "MitProd/TreeFiller/interface/FillerPFMet.h"
31   #include "MitProd/TreeFiller/interface/FillerPFTaus.h"
32   #include "MitProd/TreeFiller/interface/FillerPhotons.h"
33 + #include "MitProd/TreeFiller/interface/FillerPixelHits.h"
34   #include "MitProd/TreeFiller/interface/FillerStableParts.h"
35 + #include "MitProd/TreeFiller/interface/FillerStripHits.h"
36   #include "MitProd/TreeFiller/interface/FillerSuperClusters.h"
37 + #include "MitProd/TreeFiller/interface/FillerTrackJets.h"
38   #include "MitProd/TreeFiller/interface/FillerTracks.h"
39   #include "MitProd/TreeFiller/interface/FillerVertexes.h"
40   #include "MitAna/DataTree/interface/Names.h"
41   #include "MitAna/DataTree/interface/BranchTable.h"
42 + #include "MitCommon/OptIO/interface/OptInt.h"
43  
44   using namespace std;
45   using namespace edm;
# Line 46 | Line 51 | mithep::ObjectService *mithep::FillMitTr
51   FillMitTree::FillMitTree(const edm::ParameterSet &cfg) :
52    defactive_(cfg.getUntrackedParameter<bool>("defactive",1)),
53    brtable_(0),
54 <  acfnumber_(-1)
54 >  acfnumber_(-1),
55 >  tws_(new TreeWriter(Names::gkEvtTreeName,0))
56   {
57    // Constructor.
58  
# Line 62 | Line 68 | FillMitTree::~FillMitTree()
68    // Destructor.
69  
70    delete brtable_;
71 +  delete tws_;
72   }
73  
74   //--------------------------------------------------------------------------------------------------
# Line 83 | Line 90 | bool FillMitTree::addActiveFiller(BaseFi
90   }
91  
92   //--------------------------------------------------------------------------------------------------
93 + void FillMitTree::beginRun(edm::Run const &run, edm::EventSetup const &setup)
94 + {
95 +
96 +  // loop over the various components and book the branches
97 +  for (std::vector<BaseFiller*>::iterator iF = fillers_.begin(); iF != fillers_.end(); ++iF) {
98 +    edm::LogInfo("FillMitTree::beginJob") << "Booking for " << (*iF)->Name() << endl;
99 +    (*iF)->BookDataBlock(*tws_, setup);
100 +  }
101 +
102 +  // call branch ref for the event tree
103 +  if (brtable_ && tws_->GetTree())
104 +    tws_->GetTree()->BranchRef();
105 +
106 +  // Access and copy event content.
107 +
108 +  // first step: Loop over the data fillers of the various components
109 +  for (std::vector<BaseFiller*>::const_iterator iF = fillers_.begin(); iF != fillers_.end(); ++iF) {
110 +    (*iF)->FillRunBlock(run,setup);
111 +  }
112 +
113 + }
114 +
115 + //--------------------------------------------------------------------------------------------------
116   void FillMitTree::analyze(const edm::Event      &event,
117                            const edm::EventSetup &setup)
118   {
119    // Access and copy event content.
120 +  
121 +  //tree writer begin event actions
122 +  tws_->BeginEvent(kTRUE);
123  
124    // first step: Loop over the data fillers of the various components
125    for (std::vector<BaseFiller*>::const_iterator iF = fillers_.begin(); iF != fillers_.end(); ++iF) {
# Line 109 | Line 142 | void FillMitTree::analyze(const edm::Eve
142        acfnumber_ = tws_->GetFileNumber();
143      }
144    }
145 +  
146 +  //tree writer end of event actions
147 +  tws_->EndEvent(kTRUE);
148 +  
149   }
150  
151   //--------------------------------------------------------------------------------------------------
152 < void FillMitTree::beginJob(const edm::EventSetup &event)
152 > void FillMitTree::beginJob()
153   {
154    // Access the tree and book branches.
155  
119  Service<TreeService> ts;
120  tws_ = ts->get();
121  if (!tws_) {
122    throw edm::Exception(edm::errors::Configuration, "FillMitTree::beginJob()\n")
123      << "Could not get pointer to tree. "
124      << "Do you have the TreeServie define in your config?" << "\n";
125    return;
126  }
127
156    if (os_==0) { // only the first FillMitTree object has to deal with this
157      Service<ObjectService> os;
158      if (!os.isAvailable()) {
# Line 140 | Line 168 | void FillMitTree::beginJob(const edm::Ev
168      os->add(brtable_, brtable_->GetName());
169    }
170  
143  // loop over the various components and book the branches
144  for (std::vector<BaseFiller*>::iterator iF = fillers_.begin(); iF != fillers_.end(); ++iF) {
145    edm::LogInfo("FillMitTree::beginJob") << "Booking for " << (*iF)->Name() << endl;
146    (*iF)->BookDataBlock(*tws_);
147  }
171   }
172  
173   //--------------------------------------------------------------------------------------------------
174   bool FillMitTree::configure(const edm::ParameterSet &cfg)
175   {
176 +
177 +  // Configure TreeWriter
178 +  const std::string twsConfigName("TreeWriter");
179 +  ParameterSet twsConfig;
180 +  if (cfg.existsAs<ParameterSet>(twsConfigName,0))
181 +    twsConfig = cfg.getUntrackedParameter<ParameterSet>(twsConfigName);
182 +  
183 +  configureTreeWriter(twsConfig);
184 +  
185    // Configure our fillers according to given parameter ("fillers").
186  
187    std::vector<std::string> pars;
# Line 167 | Line 199 | bool FillMitTree::configure(const edm::P
199      if (cfg.existsAs<ParameterSet>(name,0)) {
200        ParameterSet next(cfg.getUntrackedParameter<ParameterSet>(name));
201        if (!next.exists("fillerType")) {
202 <        edm::LogError("FillMitTree") << "Can not determine fillerType for pset named "
202 >        edm::LogError("FillMitTree") << "Cannot determine fillerType for pset named "
203                                       << name << std::endl;
204          throw edm::Exception(edm::errors::Configuration, "FillMitTree::configure\n")
205 <          << "Can not determine fillerType for pset named "
205 >          << "Cannot determine fillerType for pset named "
206            << name << std::endl;
207        }
208        ftype = next.getUntrackedParameter<string>("fillerType");
# Line 197 | Line 229 | bool FillMitTree::configure(const edm::P
229        continue;
230      }
231  
232 +    if (ftype.compare("FillerMCVertexes")==0) {
233 +      FillerMCVertexes *fillerMCVertexes = new FillerMCVertexes(cfg, name.c_str(), defactive_);
234 +      addActiveFiller(fillerMCVertexes);
235 +      continue;
236 +    }  
237 +
238 +    if (ftype.compare("FillerEvtSelData")==0) {
239 +      FillerEvtSelData *fillerEvtSelData = new FillerEvtSelData(cfg, name.c_str(), defactive_);
240 +      addActiveFiller(fillerEvtSelData);
241 +      continue;
242 +    }
243 +
244      if (ftype.compare("FillerBeamSpot")==0) {
245        FillerBeamSpot *fillerBeamSpot = new FillerBeamSpot(cfg, name.c_str(), defactive_);
246        addActiveFiller(fillerBeamSpot);
247        continue;
248      }
249 <  
249 >
250      if (ftype.compare("FillerVertexes")==0) {
251        FillerVertexes *fillerVertexes = new FillerVertexes(cfg, name.c_str(), defactive_);
252        addActiveFiller(fillerVertexes);
# Line 232 | Line 276 | bool FillMitTree::configure(const edm::P
276        addActiveFiller(fillerMet);
277        continue;
278      }  
279 +    
280 +    if (ftype.compare("FillerGenMet")==0) {
281 +      FillerGenMet *fillerGenMet = new FillerGenMet(cfg, name.c_str(), defactive_);
282 +      addActiveFiller(fillerGenMet);
283 +      continue;
284 +    }  
285  
286      if (ftype.compare("FillerCaloMet")==0) {
287        FillerCaloMet *fillerCaloMet = new FillerCaloMet(cfg, name.c_str(), defactive_);
# Line 259 | Line 309 | bool FillMitTree::configure(const edm::P
309        continue;
310      }  
311  
312 +    if (ftype.compare("FillerPixelHits")==0) {
313 +      FillerPixelHits *fillerPixelHits =  
314 +        new FillerPixelHits(cfg, name.c_str(), defactive_);
315 +      addActiveFiller(fillerPixelHits);
316 +      continue;
317 +    }  
318 +
319 +    if (ftype.compare("FillerStripHits")==0) {
320 +      FillerStripHits *fillerStripHits =  
321 +        new FillerStripHits(cfg, name.c_str(), defactive_);
322 +      addActiveFiller(fillerStripHits);
323 +      continue;
324 +    }  
325 +
326      if (ftype.compare("FillerTracks")==0) {
327        FillerTracks *fillerTracks = new FillerTracks(cfg, name.c_str(), defactive_);
328        addActiveFiller(fillerTracks);
# Line 277 | Line 341 | bool FillMitTree::configure(const edm::P
341        continue;
342      }  
343  
280    if (ftype.compare("FillerConversionElectrons")==0) {
281      FillerConversionElectrons *fillerConversionElectrons =
282        new FillerConversionElectrons(cfg, name.c_str(), defactive_);
283      addActiveFiller(fillerConversionElectrons);
284      continue;
285    }  
286
344      if (ftype.compare("FillerConversions")==0) {
345        FillerConversions *fillerConversions = new FillerConversions(cfg, name.c_str(), defactive_);
346        addActiveFiller(fillerConversions);
# Line 332 | Line 389 | bool FillMitTree::configure(const edm::P
389        continue;
390      }  
391      
392 +    if (ftype.compare("FillerTrackJets")==0) {
393 +      FillerTrackJets *fillerTrackJets = new FillerTrackJets(cfg, name.c_str(), defactive_);
394 +      addActiveFiller(fillerTrackJets);
395 +      continue;
396 +    }  
397 +
398      edm::LogError("FillMitTree")
399        << "Unknown fillerType " << ftype << " for pset named " << name << std::endl;
400      throw edm::Exception(edm::errors::Configuration, "FillMitTree::configure\n")
# Line 342 | Line 405 | bool FillMitTree::configure(const edm::P
405   }
406  
407   //--------------------------------------------------------------------------------------------------
408 + bool FillMitTree::configureTreeWriter(const edm::ParameterSet &cfg)
409 + {
410 +  // Configure tree writer with options from config file.
411 +
412 +  tws_->SetPrefix(cfg.getUntrackedParameter<string>("fileName","mit-test"));
413 +  tws_->SetBaseURL(cfg.getUntrackedParameter<string>("pathName","."));
414 +  tws_->SetMaxSize((Long64_t)cfg.getUntrackedParameter<unsigned>("maxSize",1024)*1024*1024);
415 +  tws_->SetCompressLevel(cfg.getUntrackedParameter<unsigned>("compLevel",9));
416 +  tws_->SetDefaultSL(cfg.getUntrackedParameter<unsigned>("splitLevel",99));
417 +  tws_->SetDefaultBrSize(cfg.getUntrackedParameter<unsigned>("brSize",16*1024));
418 +  
419 +  if (OptInt::IsActivated()) {
420 +    OptInt::SetZipMode(cfg.getUntrackedParameter<unsigned>("zipMode",99));
421 +    OptInt::SetGzipFraction(cfg.getUntrackedParameter<double>("gZipThres",1.0));
422 +    OptInt::SetBzipFraction(cfg.getUntrackedParameter<double>("bZipThres",-1.0));
423 +    OptInt::SetLzoFraction(cfg.getUntrackedParameter<double>("lzoThres",-1.0));
424 +    OptInt::SetLzmaFraction(cfg.getUntrackedParameter<double>("lzmaThres",0.95));
425 +    OptInt::SetVerbose(cfg.getUntrackedParameter<unsigned>("optIOVerbose",0));
426 +
427 +  } else {
428 +
429 +    if (cfg.exists("zipMode")   || cfg.exists("bZipThres") ||
430 +        cfg.exists("gZipThres") || cfg.exists("lzoThres")  ||
431 +        cfg.exists("lzmaThres")) {
432 +      edm::LogError("FillMitTree") <<
433 +        "OptIO interface not properly pre-loaded, ignoring given settings." << std::endl;
434 +    }
435 +  }
436 +  
437 +  return 1;
438 + }
439 +
440 + //--------------------------------------------------------------------------------------------------
441   void FillMitTree::endJob()
442   {
443    // Delete fillers.
# Line 350 | Line 446 | void FillMitTree::endJob()
446      delete *iF;
447    }
448  
449 +  tws_->Clear();
450 +  
451    edm::LogInfo("FillMitTree::endJob") << "Ending Job" << endl;
452   }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines