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.2 by paus, Tue Jun 3 07:21:45 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),
20 <    treeNames_  (cfg.getUntrackedParameter<vector<string>   >("treeNames")),
21 <    fileNames_  (cfg.getUntrackedParameter<vector<string>   >("fileNames")),
22 <    pathNames_  (cfg.getUntrackedParameter<vector<string>   >("pathNames")),
23 <    maxSizes_   (cfg.getUntrackedParameter<vector<unsigned> >("maxSizes")),
24 <    compLevels_ (cfg.getUntrackedParameter<vector<unsigned> >("compLevels")),
25 <    splitLevels_(cfg.getUntrackedParameter<vector<unsigned> >("splitLevels")),
26 <    brSizes_    (cfg.getUntrackedParameter<vector<unsigned> >("brSizes"))
17 > TreeService::TreeService(const ParameterSet &cfg, ActivityRegistry &ar) :
18 >  tws_(0)
19   {
20 <  if (treeNames_.size()!=treeNames_.size()) {
21 <    //todo throw !!!
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 37 | Line 69 | TreeService::TreeService(const Parameter
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  
74 <    if      (i<pathNames_.size())
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(maxSizes_.at(i)*1024*1024);
79 >    if (i<maxSizes_.size())
80 >      t->SetMaxSize((Long64_t)maxSizes_.at(i)*1024*1024);
81      else if (maxSizes_.size()>0)
82 <      t->SetMaxSize(maxSizes_.at(0)*1024*1024);
82 >      t->SetMaxSize((Long64_t)maxSizes_.at(0)*1024*1024);
83  
84 <    if      (i<compLevels_.size())
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())
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())
94 >    if (i<brSizes_.size())
95        t->SetDefaultBrSize(brSizes_.at(i));
96      else if (brSizes_.size()>0)
97        t->SetDefaultBrSize(brSizes_.at(0));
# Line 70 | Line 101 | TreeService::TreeService(const Parameter
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   //--------------------------------------------------------------------------------------------------
111   TreeService::~TreeService()
112   {
113 +  // Destructor.
114   }
115  
116   //--------------------------------------------------------------------------------------------------
117 < TreeWriter* TreeService::get(const char *name)
117 > TreeWriter *TreeService::get(const char *name)
118   {
119 +  // Get TreeWriter by name. If no name given, first one will be returned.
120 +
121    if (tws_.GetEntries()<=0)
122      return 0;
123  
# Line 98 | Line 132 | TreeWriter* TreeService::get(const char
132   //--------------------------------------------------------------------------------------------------
133   void TreeService::postBeginJob()
134   {
135 <  // nothing to be done for now
135 >  // Nothing to be done for now
136   }
137  
138   //--------------------------------------------------------------------------------------------------
139   void TreeService::postEndJob()
140   {
141 +  // Clear all TreeWriter objects.
142 +
143    tws_.Clear();
144   }
145  
146   //--------------------------------------------------------------------------------------------------
147   void TreeService::postEventProcessing(const Event&, const EventSetup&)
148   {
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)
# Line 120 | Line 158 | void TreeService::postEventProcessing(co
158   //--------------------------------------------------------------------------------------------------
159   void TreeService::preEventProcessing(const EventID&, const Timestamp&)
160   {
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)

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines