ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/MitProd/TreeFiller/src/FillMitTree.cc
(Generate patch)

Comparing UserCode/MitProd/TreeFiller/src/FillMitTree.cc (file contents):
Revision 1.35 by loizides, Sun Mar 15 11:20:41 2009 UTC vs.
Revision 1.41 by bendavid, Fri Mar 20 18:47:46 2009 UTC

# Line 7 | Line 7
7   #include "MitProd/TreeService/interface/TreeService.h"
8   #include "MitProd/ObjectService/interface/ObjectService.h"
9   #include "MitProd/TreeFiller/interface/AssociationMaps.h"
10 #include "MitProd/TreeFiller/interface/FillerMetaInfos.h"
11 #include "MitProd/TreeFiller/interface/FillerVertexes.h"
12 #include "MitProd/TreeFiller/interface/FillerBeamSpot.h"
13 #include "MitProd/TreeFiller/interface/FillerTracks.h"
10   #include "MitProd/TreeFiller/interface/FillerBasicClusters.h"
11 < #include "MitProd/TreeFiller/interface/FillerSuperClusters.h"
11 > #include "MitProd/TreeFiller/interface/FillerBeamSpot.h"
12 > #include "MitProd/TreeFiller/interface/FillerCaloJets.h"
13 > #include "MitProd/TreeFiller/interface/FillerCaloMet.h"
14 > #include "MitProd/TreeFiller/interface/FillerCaloTaus.h"
15   #include "MitProd/TreeFiller/interface/FillerCaloTowers.h"
16 < #include "MitProd/TreeFiller/interface/FillerMuons.h"
16 > #include "MitProd/TreeFiller/interface/FillerConversionElectrons.h"
17 > #include "MitProd/TreeFiller/interface/FillerConversions.h"
18 > #include "MitProd/TreeFiller/interface/FillerDecayParts.h"
19   #include "MitProd/TreeFiller/interface/FillerElectrons.h"
20   #include "MitProd/TreeFiller/interface/FillerGenJets.h"
21 < #include "MitProd/TreeFiller/interface/FillerCaloJets.h"
22 < #include "MitProd/TreeFiller/interface/FillerPFJets.h"
21 > #include "MitProd/TreeFiller/interface/FillerMetaInfos.h"
22 > #include "MitProd/TreeFiller/interface/FillerMCEventInfo.h"
23 > #include "MitProd/TreeFiller/interface/FillerMCParticles.h"
24   #include "MitProd/TreeFiller/interface/FillerMet.h"
25 < #include "MitProd/TreeFiller/interface/FillerCaloMet.h"
25 > #include "MitProd/TreeFiller/interface/FillerMetaInfos.h"
26 > #include "MitProd/TreeFiller/interface/FillerMuons.h"
27 > #include "MitProd/TreeFiller/interface/FillerPFCandidates.h"
28 > #include "MitProd/TreeFiller/interface/FillerPFJets.h"
29   #include "MitProd/TreeFiller/interface/FillerPFMet.h"
30 < #include "MitProd/TreeFiller/interface/FillerConversions.h"
26 < #include "MitProd/TreeFiller/interface/FillerConversionElectrons.h"
30 > #include "MitProd/TreeFiller/interface/FillerPFTaus.h"
31   #include "MitProd/TreeFiller/interface/FillerPhotons.h"
28 #include "MitProd/TreeFiller/interface/FillerMCParticles.h"
29 #include "MitProd/TreeFiller/interface/FillerDecayParts.h"
32   #include "MitProd/TreeFiller/interface/FillerStableParts.h"
33 < #include "MitProd/TreeFiller/interface/FillerPFCandidates.h"
34 < #include "MitProd/TreeFiller/interface/FillerPATMuons.h"
35 < #include "MitProd/TreeFiller/interface/FillerPATElectrons.h"
33 > #include "MitProd/TreeFiller/interface/FillerSuperClusters.h"
34 > #include "MitProd/TreeFiller/interface/FillerTracks.h"
35 > #include "MitProd/TreeFiller/interface/FillerVertexes.h"
36   #include "MitAna/DataTree/interface/Names.h"
37   #include "MitAna/DataTree/interface/BranchTable.h"
38  
# Line 43 | Line 45 | mithep::ObjectService *mithep::FillMitTr
45   //--------------------------------------------------------------------------------------------------
46   FillMitTree::FillMitTree(const edm::ParameterSet &cfg) :
47    defactive_(cfg.getUntrackedParameter<bool>("defactive",1)),
48 <  brtable_(new BranchTable)
48 >  brtable_(0),
49 >  acfnumber_(-1)
50   {
51    // Constructor.
52  
# Line 51 | Line 54 | FillMitTree::FillMitTree(const edm::Para
54      throw edm::Exception(edm::errors::Configuration, "FillMitTree::FillMitTree()\n")
55        << "Could not configure fillers." << "\n";
56    }
54
55  brtable_->SetName(Names::gkBranchTable);
56  brtable_->SetOwner();
57   }
58  
59   //--------------------------------------------------------------------------------------------------
# Line 97 | Line 97 | void FillMitTree::analyze(const edm::Eve
97    for (std::vector<BaseFiller*>::const_iterator iF = fillers_.begin(); iF != fillers_.end(); ++iF) {
98      (*iF)->ResolveLinks(event,setup);
99    }
100 +
101 +  if (brtable_) { // only the first FillMitTree object has to deal with the branch table
102 +    if (acfnumber_==-1) {
103 +      brtable_->Rehash(brtable_->GetSize());
104 +      if (0)
105 +        brtable_->Print();
106 +    }
107 +    if (acfnumber_ != tws_->GetFileNumber()) {
108 +      tws_->StoreObject(brtable_);
109 +      acfnumber_ = tws_->GetFileNumber();
110 +    }
111 +  }
112   }
113  
114   //--------------------------------------------------------------------------------------------------
# Line 105 | Line 117 | void FillMitTree::beginJob(const edm::Ev
117    // Access the tree and book branches.
118  
119    Service<TreeService> ts;
120 <  TreeWriter *tws = ts->get();
121 <  if (! tws) {
120 >  tws_ = ts->get();
121 >  if (!tws_) {
122      throw edm::Exception(edm::errors::Configuration, "FillMitTree::beginJob()\n")
123        << "Could not get pointer to tree. "
124        << "Do you have the TreeServie define in your config?" << "\n";
125      return;
126    }
127  
128 <  if (os_==0) {
128 >  if (os_==0) { // only the first FillMitTree object has to deal with this
129      Service<ObjectService> os;
130      if (!os.isAvailable()) {
131        throw edm::Exception(edm::errors::Configuration, "FillMitTree::beginJob()\n")
# Line 122 | Line 134 | void FillMitTree::beginJob(const edm::Ev
134        return;
135      }
136      os_ = &(*os);
137 +    brtable_ = new BranchTable;
138 +    brtable_->SetName(Names::gkBranchTable);
139 +    brtable_->SetOwner();
140      os->add(brtable_, brtable_->GetName());
141    }
142  
143    // loop over the various components and book the branches
144    for (std::vector<BaseFiller*>::iterator iF = fillers_.begin(); iF != fillers_.end(); ++iF) {
145      edm::LogInfo("FillMitTree::beginJob") << "Booking for " << (*iF)->Name() << endl;
146 <    (*iF)->BookDataBlock(*tws);
146 >    (*iF)->BookDataBlock(*tws_);
147    }
148   }
149  
150   //--------------------------------------------------------------------------------------------------
151   bool FillMitTree::configure(const edm::ParameterSet &cfg)
152   {
153 <  // Configure our fillers according to given order ("fillerOrder").
153 >  // Configure our fillers according to given parameter ("fillers").
154  
155    std::vector<std::string> pars;
156 <  if (cfg.exists("fillerOrder"))
157 <    pars=cfg.getUntrackedParameter<vector<string> >("fillerOrder");
156 >  if (cfg.exists("fillers"))
157 >    pars=cfg.getUntrackedParameter<vector<string> >("fillers");
158    else
159      cfg.getParameterSetNames(pars, false);
160  
# Line 147 | Line 162 | bool FillMitTree::configure(const edm::P
162    for (unsigned int i = 0; i<pars.size(); ++i) {
163  
164      const string name(pars.at(i));
150    if (!cfg.existsAs<ParameterSet>(name,0))
151      continue;
165  
166 <    ParameterSet next(cfg.getUntrackedParameter<ParameterSet>(name));
167 <    if (!next.exists("fillerType")) {
168 <      edm::LogError("FillMitTree") << "Can not determine fillerType for pset named "
169 <                                   << name << std::endl;
170 <      throw edm::Exception(edm::errors::Configuration, "FillMitTree::configure\n")
171 <        << "Can not determine fillerType for pset named "
172 <        << name << std::endl;
166 >    string ftype("Filler" + name);
167 >    if (cfg.existsAs<ParameterSet>(name,0)) {
168 >      ParameterSet next(cfg.getUntrackedParameter<ParameterSet>(name));
169 >      if (!next.exists("fillerType")) {
170 >        edm::LogError("FillMitTree") << "Can not determine fillerType for pset named "
171 >                                     << name << std::endl;
172 >        throw edm::Exception(edm::errors::Configuration, "FillMitTree::configure\n")
173 >          << "Can not determine fillerType for pset named "
174 >          << name << std::endl;
175 >      }
176 >      ftype = next.getUntrackedParameter<string>("fillerType");
177      }
178  
179 <    string ftype(next.getUntrackedParameter<string>("fillerType"));
180 <
164 <    edm::LogInfo("FillMitTree") << "Configure '" << ftype << "' for '"
165 <                                << name << "'" << std::endl;
179 >    edm::LogInfo("FillMitTree") << "Attempting to configure '" << ftype
180 >                                << "' for '" << name << "'" << std::endl;
181  
182      if (ftype.compare("FillerMetaInfos")==0) {
183        FillerMetaInfos *fillerMetaInfos = new FillerMetaInfos(cfg, name.c_str(), defactive_);
184        addActiveFiller(fillerMetaInfos);
185        continue;
186      }
187 +
188      if (ftype.compare("FillerMCParticles")==0) {
189        FillerMCParticles *fillerMCParticles = new FillerMCParticles(cfg, name.c_str(), defactive_);
190        addActiveFiller(fillerMCParticles);
191        continue;
192      }
193 +
194 +    if (ftype.compare("FillerMCEventInfo")==0) {
195 +      FillerMCEventInfo *fillerMCEventInfo = new FillerMCEventInfo(cfg, name.c_str(), defactive_);
196 +      addActiveFiller(fillerMCEventInfo);
197 +      continue;
198 +    }
199 +
200      if (ftype.compare("FillerBeamSpot")==0) {
201        FillerBeamSpot *fillerBeamSpot = new FillerBeamSpot(cfg, name.c_str(), defactive_);
202        addActiveFiller(fillerBeamSpot);
203        continue;
204      }
205 +  
206      if (ftype.compare("FillerVertexes")==0) {
207        FillerVertexes *fillerVertexes = new FillerVertexes(cfg, name.c_str(), defactive_);
208        addActiveFiller(fillerVertexes);
# Line 295 | Line 319 | bool FillMitTree::configure(const edm::P
319        addActiveFiller(fillerPFJets);
320        continue;
321      }  
322 +
323 +    if (ftype.compare("FillerCaloTaus")==0) {
324 +      FillerCaloTaus *fillerCaloTaus = new FillerCaloTaus(cfg, name.c_str(), defactive_);
325 +      addActiveFiller(fillerCaloTaus);
326 +      continue;
327 +    }
328 +    
329 +    if (ftype.compare("FillerPFTaus")==0) {
330 +      FillerPFTaus *fillerPFTaus = new FillerPFTaus(cfg, name.c_str(), defactive_);
331 +      addActiveFiller(fillerPFTaus);
332 +      continue;
333 +    }  
334      
335      edm::LogError("FillMitTree")
336        << "Unknown fillerType " << ftype << " for pset named " << name << std::endl;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines