ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/MitProd/TreeService/src/TreeService.cc
Revision: 1.15
Committed: Wed Nov 4 16:59:22 2009 UTC (15 years, 6 months ago) by loizides
Content type: text/plain
Branch: MAIN
CVS Tags: Mit_032, Mit_031, Mit_025c_branch2, Mit_025c_branch1, Mit_030, Mit_029c, Mit_029b, Mit_030_pre1, Mit_029a, Mit_029, Mit_029_pre1, Mit_028a, Mit_025c_branch0, Mit_028, Mit_027a, Mit_027, Mit_026, Mit_025e, Mit_025d, Mit_025c, Mit_025b, Mit_025a, Mit_025, Mit_025pre2, Mit_024b, Mit_025pre1, Mit_024a, Mit_024, Mit_023, Mit_022a, Mit_022, Mit_020d, TMit_020d, Mit_020c, Mit_021, Mit_021pre2, Mit_021pre1, Mit_020b, Mit_020a, Mit_020, Mit_020pre1, Mit_018, Mit_017, Mit_017pre3, Mit_017pre2, Mit_017pre1, Mit_016, Mit_015b, Mit_015a, Mit_015, Mit_014e, Mit_014d, Mit_014c, Mit_014b, Mit_014a, Mit_014, Mit_014pre3, Mit_014pre2, Mit_014pre1, Mit_013d, Mit_013c, Mit_013b, Mit_013a, Mit_013, Mit_013pre1, Mit_012i, Mit_012h, Mit_012g, Mit_012f, Mit_012e, Mit_012d, Mit_012c, Mit_012b, Mit_012a, Mit_012, HEAD
Branch point for: Mit_025c_branch
Changes since 1.14: +14 -9 lines
Log Message:
Service by default off.

File Contents

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