ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/MitProd/TreeService/src/TreeService.cc
Revision: 1.14
Committed: Tue Nov 3 14:01:52 2009 UTC (15 years, 6 months ago) by bendavid
Content type: text/plain
Branch: MAIN
Changes since 1.13: +8 -10 lines
Log Message:
Disable TreeService as fwk service to prevent config mistakes

File Contents

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