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

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines