ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/MitProd/TreeService/src/TreeService.cc
Revision: 1.8
Committed: Thu Jul 3 08:25:12 2008 UTC (16 years, 10 months ago) by loizides
Content type: text/plain
Branch: MAIN
Changes since 1.7: +18 -7 lines
Log Message:
Coding conventions.

File Contents

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