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.3 by loizides, Wed Jun 11 13:10:27 2008 UTC vs.
Revision 1.11 by bendavid, Tue Mar 3 18:06:10 2009 UTC

# Line 7 | Line 7
7   #include "FWCore/ServiceRegistry/interface/Service.h"
8   #include "FWCore/MessageLogger/interface/JobReport.h"
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) :
18 > TreeService::TreeService(const ParameterSet &cfg, ActivityRegistry &ar) :
19    tws_(0),
20 <  treeNames_  (cfg.getUntrackedParameter<vector<string>   >("treeNames")),
19 <  fileNames_  (cfg.getUntrackedParameter<vector<string>   >("fileNames")),
20 <  pathNames_  (cfg.getUntrackedParameter<vector<string>   >("pathNames")),
21 <  maxSizes_   (cfg.getUntrackedParameter<vector<unsigned> >("maxSizes")),
22 <  compLevels_ (cfg.getUntrackedParameter<vector<unsigned> >("compLevels")),
23 <  splitLevels_(cfg.getUntrackedParameter<vector<unsigned> >("splitLevels")),
24 <  brSizes_    (cfg.getUntrackedParameter<vector<unsigned> >("brSizes"))
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()
# Line 37 | 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);
41 <
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 99 | 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