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.1 by loizides, Tue May 27 20:09:09 2008 UTC vs.
Revision 1.9 by loizides, Wed Jul 30 11:30:02 2008 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"
10
9   #include "MitAna/DataUtil/interface/TreeWriter.h"
10 + #include "MitAna/DataTree/interface/Names.h"
11  
12   using namespace edm;
13   using namespace std;
14   using namespace mithep;
15  
16 < //-------------------------------------------------------------------------------------------------
17 < TreeService::TreeService(const ParameterSet &cfg, ActivityRegistry &r)
18 <  : tws_(0),
19 <    treeNames_(cfg.getUntrackedParameter<std::vector<std::string> >("treeNames")),
20 <    fileNames_(cfg.getUntrackedParameter<std::vector<std::string> >("fileNames")),
21 <    pathNames_(cfg.getUntrackedParameter<std::vector<std::string> >("pathNames")),
22 <    maxSizes_(cfg.getUntrackedParameter<std::vector<unsigned> >("maxSizes")),
23 <    compLevels_(cfg.getUntrackedParameter<std::vector<unsigned> >("compLevels")),
24 <    splitLevels_(cfg.getUntrackedParameter<std::vector<unsigned> >("splitLevels")),
25 <    brSizes_(cfg.getUntrackedParameter<std::vector<unsigned> >("brSizes"))
26 < {
27 <  if(treeNames_.size()!=treeNames_.size()) {
28 <    //todo throw !!!
16 > //--------------------------------------------------------------------------------------------------
17 > TreeService::TreeService(const ParameterSet &cfg, ActivityRegistry &ar) :
18 >  tws_(0)
19 > {
20 >  // Constructor.
21 >
22 >  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 >  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    }
63  
64    // setup tw array
# Line 34 | Line 66 | TreeService::TreeService(const Parameter
66    tws_.Expand(treeNames_.size());
67  
68    // init tree writers
69 <  for(unsigned int i=0;i<treeNames_.size();++i) {
69 >  for (unsigned int i=0; i<treeNames_.size(); ++i) {
70  
71      TreeWriter *t = new TreeWriter(treeNames_.at(i).c_str(),1);
40
72      t->SetPrefix(fileNames_.at(i).c_str());
73 <    if(i<pathNames_.size()) t->SetBaseURL(pathNames_.at(i).c_str());
74 <    else if (pathNames_.size()>0) t->SetBaseURL(pathNames_.at(0).c_str());
75 <    if(i<maxSizes_.size()) t->SetMaxSize(maxSizes_.at(i)*1024*1024);
76 <    else if (maxSizes_.size()>0) t->SetMaxSize(maxSizes_.at(0)*1024*1024);
77 <    if(i<compLevels_.size()) t->SetCompressLevel(compLevels_.at(i));
78 <    else if (compLevels_.size()>0) t->SetCompressLevel(compLevels_.at(0));
79 <    if(i<splitLevels_.size()) t->SetDefaultSL(splitLevels_.at(i));
80 <    else if (splitLevels_.size()>0) t->SetDefaultSL(splitLevels_.at(0));
81 <    if(i<brSizes_.size()) t->SetDefaultBrSize(brSizes_.at(i));
82 <    else if (brSizes_.size()>0) t->SetDefaultBrSize(brSizes_.at(0));
73 >
74 >    if (i<pathNames_.size())
75 >      t->SetBaseURL(pathNames_.at(i).c_str());
76 >    else if (pathNames_.size()>0)
77 >      t->SetBaseURL(pathNames_.at(0).c_str());
78 >
79 >    if (i<maxSizes_.size())
80 >      t->SetMaxSize((Long64_t)maxSizes_.at(i)*1024*1024);
81 >    else if (maxSizes_.size()>0)
82 >      t->SetMaxSize((Long64_t)maxSizes_.at(0)*1024*1024);
83 >
84 >    if (i<compLevels_.size())
85 >      t->SetCompressLevel(compLevels_.at(i));
86 >    else if (compLevels_.size()>0)
87 >      t->SetCompressLevel(compLevels_.at(0));
88 >
89 >    if (i<splitLevels_.size())
90 >      t->SetDefaultSL(splitLevels_.at(i));
91 >    else if (splitLevels_.size()>0)
92 >      t->SetDefaultSL(splitLevels_.at(0));
93 >
94 >    if (i<brSizes_.size())
95 >      t->SetDefaultBrSize(brSizes_.at(i));
96 >    else if (brSizes_.size()>0)
97 >      t->SetDefaultBrSize(brSizes_.at(0));
98  
99      //t->Print();
100      tws_.Add(t);
101    }
102  
103    // set watchers
104 <  r.watchPreProcessEvent(this,&TreeService::preEventProcessing);
105 <  r.watchPostProcessEvent(this,&TreeService::postEventProcessing);
106 <  r.watchPostBeginJob(this,&TreeService::postBeginJob);
107 <  r.watchPostEndJob(this,&TreeService::postEndJob);
104 >  ar.watchPreProcessEvent (this,&TreeService::preEventProcessing);
105 >  ar.watchPostProcessEvent(this,&TreeService::postEventProcessing);
106 >  ar.watchPostBeginJob    (this,&TreeService::postBeginJob);
107 >  ar.watchPostEndJob      (this,&TreeService::postEndJob);
108   }
109  
110 < //-------------------------------------------------------------------------------------------------
110 > //--------------------------------------------------------------------------------------------------
111   TreeService::~TreeService()
112   {
113 +  // Destructor.
114   }
115  
116 < //-------------------------------------------------------------------------------------------------
117 < TreeWriter* TreeService::get(const char *name)
116 > //--------------------------------------------------------------------------------------------------
117 > TreeWriter *TreeService::get(const char *name)
118   {
119 <  if(tws_.GetEntries()<=0) return 0;
119 >  // Get TreeWriter by name. If no name given, first one will be returned.
120  
121 <  if(name==0)
121 >  if (tws_.GetEntries()<=0)
122 >    return 0;
123 >
124 >  if (name==0)
125      return dynamic_cast<TreeWriter*>(tws_.At(0));
126  
127    TObject *ret = tws_.FindObject(name);
128 +
129    return dynamic_cast<TreeWriter*>(ret);
130   }
131  
132 < //-------------------------------------------------------------------------------------------------
132 > //--------------------------------------------------------------------------------------------------
133   void TreeService::postBeginJob()
134   {
135 <  // nothing to be done for now
135 >  // Nothing to be done for now
136   }
137  
138 < //-------------------------------------------------------------------------------------------------
138 > //--------------------------------------------------------------------------------------------------
139   void TreeService::postEndJob()
140   {
141 +  // Clear all TreeWriter objects.
142 +
143    tws_.Clear();
144   }
145  
146 < //-------------------------------------------------------------------------------------------------
146 > //--------------------------------------------------------------------------------------------------
147   void TreeService::postEventProcessing(const Event&, const EventSetup&)
148   {
149 <  for(int i=0;i<tws_.GetEntries();++i) {
149 >  // Loop over all TreeWriter objects before processing of an event.
150 >
151 >  for (int i=0; i<tws_.GetEntries(); ++i) {
152      TreeWriter *tw=dynamic_cast<TreeWriter*>(tws_.At(i));
153 <    if(tw)
153 >    if (tw)
154        tw->EndEvent();
155    }
156   }
157  
158 < //-------------------------------------------------------------------------------------------------
158 > //--------------------------------------------------------------------------------------------------
159   void TreeService::preEventProcessing(const EventID&, const Timestamp&)
160   {
161 <  for(int i=0;i<tws_.GetEntries();++i) {
161 >  // Loop over all TreeWriter objects after processing of a events.
162 >
163 >  for (int i=0; i<tws_.GetEntries(); ++i) {
164      TreeWriter *tw=dynamic_cast<TreeWriter*>(tws_.At(i));
165 <    if(tw)
165 >    if (tw)
166        tw->BeginEvent();
167    }
168   }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines