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

Comparing UserCode/MitProd/TreeService/src/TreeService.cc (file contents):
Revision 1.2 by paus, Tue Jun 3 07:21:45 2008 UTC vs.
Revision 1.11 by bendavid, Tue Mar 3 18:06:10 2009 UTC

# Line 1 | Line 1
1   // $Id$
2  
3   #include "MitProd/TreeService/interface/TreeService.h"
4
4   #include "DataFormats/Provenance/interface/ModuleDescription.h"
5   #include "FWCore/ParameterSet/interface/ParameterSet.h"
6   #include "FWCore/ServiceRegistry/interface/ActivityRegistry.h"
7   #include "FWCore/ServiceRegistry/interface/Service.h"
8   #include "FWCore/MessageLogger/interface/JobReport.h"
10
9   #include "MitAna/DataUtil/interface/TreeWriter.h"
10 + #include "MitAna/DataTree/interface/Names.h"
11 + #include "MitCommon/OptIO/interface/OptInt.h"
12  
13   using namespace edm;
14   using namespace std;
15   using namespace mithep;
16  
17   //--------------------------------------------------------------------------------------------------
18 < TreeService::TreeService(const ParameterSet &cfg, ActivityRegistry &r)
19 <  : tws_(0),
20 <    treeNames_  (cfg.getUntrackedParameter<vector<string>   >("treeNames")),
21 <    fileNames_  (cfg.getUntrackedParameter<vector<string>   >("fileNames")),
22 <    pathNames_  (cfg.getUntrackedParameter<vector<string>   >("pathNames")),
23 <    maxSizes_   (cfg.getUntrackedParameter<vector<unsigned> >("maxSizes")),
24 <    compLevels_ (cfg.getUntrackedParameter<vector<unsigned> >("compLevels")),
25 <    splitLevels_(cfg.getUntrackedParameter<vector<unsigned> >("splitLevels")),
26 <    brSizes_    (cfg.getUntrackedParameter<vector<unsigned> >("brSizes"))
27 < {
28 <  if (treeNames_.size()!=treeNames_.size()) {
29 <    //todo throw !!!
18 > TreeService::TreeService(const ParameterSet &cfg, ActivityRegistry &ar) :
19 >  tws_(0),
20 >  fDoReset_(cfg.getUntrackedParameter<bool>("doReset",1))
21 > {
22 >  // Constructor.
23 >
24 >  if (cfg.exists("treeNames"))
25 >    treeNames_=cfg.getUntrackedParameter<vector<string>   >("treeNames");
26 >  else
27 >    treeNames_.push_back(Names::gkEvtTreeName);
28 >
29 >  if (cfg.exists("fileNames"))
30 >    fileNames_=cfg.getUntrackedParameter<vector<string>   >("fileNames");
31 >  else
32 >    fileNames_.push_back("mit-test");
33 >    
34 >  if (cfg.exists("pathNames"))
35 >    pathNames_=cfg.getUntrackedParameter<vector<string>   >("pathNames");
36 >  else
37 >    pathNames_.push_back(".");
38 >
39 >  if (cfg.exists("maxSizes"))
40 >    maxSizes_=cfg.getUntrackedParameter<vector<unsigned> >("maxSizes");
41 >  else
42 >    maxSizes_.push_back(1024);
43 >
44 >  if (cfg.exists("compLevels"))
45 >    compLevels_=cfg.getUntrackedParameter<vector<unsigned> >("compLevels");
46 >  else
47 >    compLevels_.push_back(9);
48 >
49 >  if (cfg.exists("splitLevels"))
50 >    splitLevels_=cfg.getUntrackedParameter<vector<unsigned> >("splitLevels");
51 >  else
52 >    splitLevels_.push_back(99);
53 >
54 >  if (cfg.exists("brSizes"))
55 >    brSizes_=cfg.getUntrackedParameter<vector<unsigned> >("brSizes");
56 >  else
57 >    brSizes_.push_back(64*1024);
58 >
59 >  if (cfg.exists("zipMode"))
60 >    zipMode_=cfg.getUntrackedParameter<unsigned>("zipMode");
61 >  else
62 >    zipMode_ = 99;
63 >
64 >  if (cfg.exists("bZipThres"))
65 >    bZipThres_=cfg.getUntrackedParameter<double>("bZipThres");
66 >  else
67 >    bZipThres_ = -1.0;
68 >
69 >  if (cfg.exists("gZipThres"))
70 >    gZipThres_=cfg.getUntrackedParameter<double>("gZipThres");
71 >  else
72 >    gZipThres_ = 1.0;
73 >
74 >  if (cfg.exists("lzoThres"))
75 >    lzoThres_=cfg.getUntrackedParameter<double>("lzoThres");
76 >  else
77 >    lzoThres_ = -1.0;
78 >
79 >  if (cfg.exists("lzmaThres"))
80 >    lzmaThres_=cfg.getUntrackedParameter<double>("lzmaThres");
81 >  else
82 >    lzmaThres_ = 0.95;
83 >
84 >  if (cfg.exists("optIOVerbose"))
85 >    optIOVerbose_=cfg.getUntrackedParameter<unsigned>("optIOVerbose");
86 >  else
87 >    optIOVerbose_ = 0;
88 >
89 >  if (treeNames_.size()!=fileNames_.size()) {
90 >    throw edm::Exception(edm::errors::Configuration, "TreeService::TreeService()\n")
91 >      << "Number of main trees should match number of files " << treeNames_.size()
92 >      << " " << fileNames_.size() << "\n";
93 >    return;
94    }
95  
96    // setup tw array
# Line 36 | Line 100 | TreeService::TreeService(const Parameter
100    // init tree writers
101    for (unsigned int i=0; i<treeNames_.size(); ++i) {
102  
103 <    TreeWriter *t = new TreeWriter(treeNames_.at(i).c_str(),1);
40 <
103 >    TreeWriter *t = new TreeWriter(treeNames_.at(i).c_str(),0);
104      t->SetPrefix(fileNames_.at(i).c_str());
105  
106 <    if      (i<pathNames_.size())
106 >    if (i<pathNames_.size())
107        t->SetBaseURL(pathNames_.at(i).c_str());
108      else if (pathNames_.size()>0)
109        t->SetBaseURL(pathNames_.at(0).c_str());
110  
111 <    if      (i<maxSizes_.size())
112 <      t->SetMaxSize(maxSizes_.at(i)*1024*1024);
111 >    if (i<maxSizes_.size())
112 >      t->SetMaxSize((Long64_t)maxSizes_.at(i)*1024*1024);
113      else if (maxSizes_.size()>0)
114 <      t->SetMaxSize(maxSizes_.at(0)*1024*1024);
114 >      t->SetMaxSize((Long64_t)maxSizes_.at(0)*1024*1024);
115  
116 <    if      (i<compLevels_.size())
116 >    if (i<compLevels_.size())
117        t->SetCompressLevel(compLevels_.at(i));
118      else if (compLevels_.size()>0)
119        t->SetCompressLevel(compLevels_.at(0));
120  
121 <    if      (i<splitLevels_.size())
121 >    if (i<splitLevels_.size())
122        t->SetDefaultSL(splitLevels_.at(i));
123      else if (splitLevels_.size()>0)
124        t->SetDefaultSL(splitLevels_.at(0));
125  
126 <    if      (i<brSizes_.size())
126 >    if (i<brSizes_.size())
127        t->SetDefaultBrSize(brSizes_.at(i));
128      else if (brSizes_.size()>0)
129        t->SetDefaultBrSize(brSizes_.at(0));
130  
131 +    OptInt::SetZipMode(zipMode_);
132 +
133 +    OptInt::SetGzipFraction(gZipThres_);
134 +
135 +    OptInt::SetBzipFraction(bZipThres_);
136 +
137 +    OptInt::SetLzoFraction(lzoThres_);
138 +
139 +    OptInt::SetLzmaFraction(lzmaThres_);
140 +
141 +    OptInt::SetVerbose(optIOVerbose_);
142 +
143      //t->Print();
144      tws_.Add(t);
145    }
146  
147    // set watchers
148 <  r.watchPreProcessEvent (this,&TreeService::preEventProcessing);
149 <  r.watchPostProcessEvent(this,&TreeService::postEventProcessing);
150 <  r.watchPostBeginJob    (this,&TreeService::postBeginJob);
151 <  r.watchPostEndJob      (this,&TreeService::postEndJob);
148 >  ar.watchPreProcessEvent (this,&TreeService::preEventProcessing);
149 >  ar.watchPostProcessEvent(this,&TreeService::postEventProcessing);
150 >  ar.watchPostBeginJob    (this,&TreeService::postBeginJob);
151 >  ar.watchPostEndJob      (this,&TreeService::postEndJob);
152   }
153  
154   //--------------------------------------------------------------------------------------------------
155   TreeService::~TreeService()
156   {
157 +  // Destructor.
158   }
159  
160   //--------------------------------------------------------------------------------------------------
161 < TreeWriter* TreeService::get(const char *name)
161 > TreeWriter *TreeService::get(const char *name)
162   {
163 +  // Get TreeWriter by name. If no name given, first one will be returned.
164 +
165    if (tws_.GetEntries()<=0)
166      return 0;
167  
# Line 98 | Line 176 | TreeWriter* TreeService::get(const char
176   //--------------------------------------------------------------------------------------------------
177   void TreeService::postBeginJob()
178   {
179 <  // nothing to be done for now
179 >  // Nothing to be done for now
180   }
181  
182   //--------------------------------------------------------------------------------------------------
183   void TreeService::postEndJob()
184   {
185 +  // Clear all TreeWriter objects.
186 +
187    tws_.Clear();
188   }
189  
190   //--------------------------------------------------------------------------------------------------
191   void TreeService::postEventProcessing(const Event&, const EventSetup&)
192   {
193 +  // Loop over all TreeWriter objects before processing of an event.
194 +
195    for (int i=0; i<tws_.GetEntries(); ++i) {
196      TreeWriter *tw=dynamic_cast<TreeWriter*>(tws_.At(i));
197 <    if (tw)
198 <      tw->EndEvent();
197 >    if (tw) {
198 >      if (i<tws_.GetEntries()-1)
199 >        tw->EndEvent();
200 >      else // make sure objects are only reset at the end (if at all)
201 >        tw->EndEvent(fDoReset_);
202 >    }
203    }
204   }
205  
206   //--------------------------------------------------------------------------------------------------
207   void TreeService::preEventProcessing(const EventID&, const Timestamp&)
208   {
209 +  // Loop over all TreeWriter objects after processing of a events.
210 +
211    for (int i=0; i<tws_.GetEntries(); ++i) {
212      TreeWriter *tw=dynamic_cast<TreeWriter*>(tws_.At(i));
213 <    if (tw)
214 <      tw->BeginEvent();
213 >    if (tw) {
214 >      if (i==0) // make sure objects are only reset at the beginning (if at all)
215 >        tw->BeginEvent(fDoReset_);
216 >      else
217 >        tw->BeginEvent();
218 >    }
219    }
220   }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines