ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/MitProd/TreeService/src/TreeService.cc
Revision: 1.7
Committed: Tue Jul 1 16:33:55 2008 UTC (16 years, 10 months ago) by loizides
Content type: text/plain
Branch: MAIN
Changes since 1.6: +7 -8 lines
Log Message:
Cosmetics.

File Contents

# User Rev Content
1 loizides 1.7 // $Id: TreeService.cc,v 1.6 2008/06/20 17:52:24 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/ServiceRegistry/interface/ActivityRegistry.h"
7     #include "FWCore/ServiceRegistry/interface/Service.h"
8     #include "FWCore/MessageLogger/interface/JobReport.h"
9     #include "MitAna/DataUtil/interface/TreeWriter.h"
10 loizides 1.6 #include "MitAna/DataTree/interface/Names.h"
11 loizides 1.1
12     using namespace edm;
13     using namespace std;
14     using namespace mithep;
15    
16 paus 1.2 //--------------------------------------------------------------------------------------------------
17 loizides 1.3 TreeService::TreeService(const ParameterSet &cfg, ActivityRegistry &r) :
18 loizides 1.7 tws_(0)
19 loizides 1.3 {
20 loizides 1.6 if (cfg.exists("treeNames"))
21     treeNames_=cfg.getUntrackedParameter<vector<string> >("treeNames");
22     else
23     treeNames_.push_back(Names::gkEvtTreeName);
24    
25     if (cfg.exists("fileNames"))
26     fileNames_=cfg.getUntrackedParameter<vector<string> >("fileNames");
27     else
28     fileNames_.push_back("mit-test");
29    
30     if (cfg.exists("pathNames"))
31     pathNames_=cfg.getUntrackedParameter<vector<string> >("pathNames");
32     else
33     pathNames_.push_back(".");
34    
35     if (cfg.exists("maxSizes"))
36     maxSizes_=cfg.getUntrackedParameter<vector<unsigned> >("maxSizes");
37     else
38     maxSizes_.push_back(1024);
39    
40     if (cfg.exists("compLevels"))
41     compLevels_=cfg.getUntrackedParameter<vector<unsigned> >("compLevels");
42     else
43     compLevels_.push_back(9);
44    
45     if (cfg.exists("splitLevels"))
46     splitLevels_=cfg.getUntrackedParameter<vector<unsigned> >("splitLevels");
47     else
48     splitLevels_.push_back(99);
49    
50     if (cfg.exists("brSizes"))
51     brSizes_=cfg.getUntrackedParameter<vector<unsigned> >("brSizes");
52     else
53     brSizes_.push_back(32*1024);
54    
55 loizides 1.3 if (treeNames_.size()!=fileNames_.size()) {
56     throw edm::Exception(edm::errors::Configuration, "TreeService::TreeService()\n")
57     << "Number of main trees should match number of files " << treeNames_.size()
58     << " " << fileNames_.size() << "\n";
59     return;
60 loizides 1.1 }
61    
62     // setup tw array
63     tws_.SetOwner(kTRUE);
64     tws_.Expand(treeNames_.size());
65    
66     // init tree writers
67 paus 1.2 for (unsigned int i=0; i<treeNames_.size(); ++i) {
68 loizides 1.1
69     TreeWriter *t = new TreeWriter(treeNames_.at(i).c_str(),1);
70     t->SetPrefix(fileNames_.at(i).c_str());
71 paus 1.2
72 loizides 1.7 if (i<pathNames_.size())
73 paus 1.2 t->SetBaseURL(pathNames_.at(i).c_str());
74     else if (pathNames_.size()>0)
75     t->SetBaseURL(pathNames_.at(0).c_str());
76    
77 loizides 1.7 if (i<maxSizes_.size())
78 loizides 1.4 t->SetMaxSize((Long64_t)maxSizes_.at(i)*1024*1024);
79 paus 1.2 else if (maxSizes_.size()>0)
80 loizides 1.4 t->SetMaxSize((Long64_t)maxSizes_.at(0)*1024*1024);
81 paus 1.2
82 loizides 1.7 if (i<compLevels_.size())
83 paus 1.2 t->SetCompressLevel(compLevels_.at(i));
84     else if (compLevels_.size()>0)
85     t->SetCompressLevel(compLevels_.at(0));
86    
87 loizides 1.7 if (i<splitLevels_.size())
88 paus 1.2 t->SetDefaultSL(splitLevels_.at(i));
89     else if (splitLevels_.size()>0)
90     t->SetDefaultSL(splitLevels_.at(0));
91    
92 loizides 1.7 if (i<brSizes_.size())
93 paus 1.2 t->SetDefaultBrSize(brSizes_.at(i));
94     else if (brSizes_.size()>0)
95     t->SetDefaultBrSize(brSizes_.at(0));
96 loizides 1.1
97     //t->Print();
98     tws_.Add(t);
99     }
100    
101     // set watchers
102 paus 1.2 r.watchPreProcessEvent (this,&TreeService::preEventProcessing);
103 loizides 1.1 r.watchPostProcessEvent(this,&TreeService::postEventProcessing);
104 paus 1.2 r.watchPostBeginJob (this,&TreeService::postBeginJob);
105     r.watchPostEndJob (this,&TreeService::postEndJob);
106 loizides 1.1 }
107    
108 paus 1.2 //--------------------------------------------------------------------------------------------------
109 loizides 1.1 TreeService::~TreeService()
110     {
111     }
112    
113 paus 1.2 //--------------------------------------------------------------------------------------------------
114 loizides 1.1 TreeWriter* TreeService::get(const char *name)
115     {
116 paus 1.2 if (tws_.GetEntries()<=0)
117     return 0;
118 loizides 1.1
119 paus 1.2 if (name==0)
120 loizides 1.1 return dynamic_cast<TreeWriter*>(tws_.At(0));
121    
122     TObject *ret = tws_.FindObject(name);
123 paus 1.2
124 loizides 1.1 return dynamic_cast<TreeWriter*>(ret);
125     }
126    
127 paus 1.2 //--------------------------------------------------------------------------------------------------
128 loizides 1.1 void TreeService::postBeginJob()
129     {
130     // nothing to be done for now
131     }
132    
133 paus 1.2 //--------------------------------------------------------------------------------------------------
134 loizides 1.1 void TreeService::postEndJob()
135     {
136     tws_.Clear();
137     }
138    
139 paus 1.2 //--------------------------------------------------------------------------------------------------
140 loizides 1.1 void TreeService::postEventProcessing(const Event&, const EventSetup&)
141     {
142 paus 1.2 for (int i=0; i<tws_.GetEntries(); ++i) {
143 loizides 1.1 TreeWriter *tw=dynamic_cast<TreeWriter*>(tws_.At(i));
144 paus 1.2 if (tw)
145 loizides 1.1 tw->EndEvent();
146     }
147     }
148    
149 paus 1.2 //--------------------------------------------------------------------------------------------------
150 loizides 1.1 void TreeService::preEventProcessing(const EventID&, const Timestamp&)
151     {
152 paus 1.2 for (int i=0; i<tws_.GetEntries(); ++i) {
153 loizides 1.1 TreeWriter *tw=dynamic_cast<TreeWriter*>(tws_.At(i));
154 paus 1.2 if (tw)
155 loizides 1.1 tw->BeginEvent();
156     }
157     }