ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/MitProd/TreeFiller/src/FillMitTree.cc
Revision: 1.19
Committed: Sat Aug 30 19:09:09 2008 UTC (16 years, 8 months ago) by sixie
Content type: text/plain
Branch: MAIN
Changes since 1.18: +4 -1 lines
Log Message:
Add SisCone5CaloJets collection to OAK

File Contents

# User Rev Content
1 sixie 1.19 // $Id: FillMitTree.cc,v 1.18 2008/08/08 11:21:08 sixie Exp $
2 paus 1.1
3 loizides 1.3 #include "MitProd/TreeFiller/interface/FillMitTree.h"
4 paus 1.1 #include "FWCore/MessageLogger/interface/MessageLogger.h"
5     #include "FWCore/ServiceRegistry/interface/Service.h"
6 loizides 1.3 #include "MitProd/TreeService/interface/TreeService.h"
7 loizides 1.16 #include "MitProd/ObjectService/interface/ObjectService.h"
8 loizides 1.6 #include "MitProd/TreeFiller/interface/AssociationMaps.h"
9 loizides 1.3 #include "MitProd/TreeFiller/interface/FillerMetaInfos.h"
10 loizides 1.6 #include "MitProd/TreeFiller/interface/FillerTracks.h"
11     #include "MitProd/TreeFiller/interface/FillerGsfTracks.h"
12 sixie 1.18 #include "MitProd/TreeFiller/interface/FillerBasicClusters.h"
13     #include "MitProd/TreeFiller/interface/FillerSuperClusters.h"
14 loizides 1.6 #include "MitProd/TreeFiller/interface/FillerMuons.h"
15     #include "MitProd/TreeFiller/interface/FillerElectrons.h"
16 loizides 1.11 #include "MitProd/TreeFiller/interface/FillerCaloJets.h"
17     #include "MitProd/TreeFiller/interface/FillerCaloMet.h"
18     #include "MitProd/TreeFiller/interface/FillerConversions.h"
19 bendavid 1.8 #include "MitProd/TreeFiller/interface/FillerConversionElectrons.h"
20     #include "MitProd/TreeFiller/interface/FillerPhotons.h"
21 bendavid 1.12 #include "MitProd/TreeFiller/interface/FillerMCParticles.h"
22 paus 1.13 #include "MitProd/TreeFiller/interface/FillerDecayParts.h"
23     #include "MitProd/TreeFiller/interface/FillerStableParts.h"
24 paus 1.1
25 sixie 1.18 #include "MitProd/TreeFiller/interface/FillerPATMuons.h"
26     #include "MitProd/TreeFiller/interface/FillerPATElectrons.h"
27 paus 1.1 using namespace std;
28     using namespace edm;
29     using namespace mithep;
30    
31 loizides 1.16 mithep::ObjectService *mithep::FillMitTree::os_ = 0;
32    
33 loizides 1.9 //--------------------------------------------------------------------------------------------------
34 loizides 1.7 FillMitTree::FillMitTree(const edm::ParameterSet &cfg) :
35     defactive_(cfg.getUntrackedParameter<bool>("defactive",1))
36 paus 1.1 {
37 loizides 1.6 // Constructor.
38 loizides 1.15
39 loizides 1.3 if (!configure(cfg)) {
40     throw edm::Exception(edm::errors::Configuration, "FillMitTree::FillMitTree()\n")
41     << "Could not configure fillers." << "\n";
42     }
43 paus 1.1 }
44    
45 loizides 1.9 //--------------------------------------------------------------------------------------------------
46 paus 1.1 FillMitTree::~FillMitTree()
47     {
48 loizides 1.2 // Destructor: nothing to be done here.
49 paus 1.1 }
50    
51 loizides 1.9 //--------------------------------------------------------------------------------------------------
52 loizides 1.17 bool FillMitTree::addActiveFiller(BaseFiller *bf)
53     {
54     // Check if filler is active and add it to list of fillers. Otherwise delete it.
55    
56     if (bf->Active()) {
57     fillers_.push_back(bf);
58     return 1;
59     }
60    
61     delete bf;
62     bf = 0;
63     return 0;
64     }
65    
66     //--------------------------------------------------------------------------------------------------
67 loizides 1.3 void FillMitTree::analyze(const edm::Event &event,
68     const edm::EventSetup &setup)
69     {
70     // Access and copy event content.
71    
72     // First step: Loop over the data fillers of the various components
73     for (std::vector<BaseFiller*>::const_iterator iF = fillers_.begin(); iF != fillers_.end(); ++iF) {
74     (*iF)->FillDataBlock(event,setup);
75     }
76    
77     // Second step: Loop over the link resolution of the various components
78     for (std::vector<BaseFiller*>::const_iterator iF = fillers_.begin(); iF != fillers_.end(); ++iF) {
79     (*iF)->ResolveLinks(event,setup);
80     }
81     }
82    
83 loizides 1.9 //--------------------------------------------------------------------------------------------------
84 loizides 1.3 void FillMitTree::beginJob(const edm::EventSetup &event)
85 paus 1.1 {
86 loizides 1.2 // Access the tree and book branches.
87    
88 paus 1.1 Service<TreeService> ts;
89     TreeWriter *tws = ts->get();
90     if (! tws) {
91     throw edm::Exception(edm::errors::Configuration, "FillMitTree::beginJob()\n")
92 loizides 1.17 << "Could not get pointer to tree. "
93     << "Do you have the TreeServie define in your config?" << "\n";
94 paus 1.1 return;
95     }
96 loizides 1.16
97     if (os_==0) {
98     Service<ObjectService> os;
99     if (!os.isAvailable()) {
100     throw edm::Exception(edm::errors::Configuration, "FillMitTree::beginJob()\n")
101 loizides 1.17 << "Could not get object service. "
102     << "Do you have the ObjectService defined in your config?" << "\n";
103 loizides 1.16 return;
104     }
105     os_ = &(*os);
106     }
107    
108 paus 1.1 // Loop over the various components and book the branches
109     for (std::vector<BaseFiller*>::iterator iF = fillers_.begin(); iF != fillers_.end(); ++iF) {
110 loizides 1.16 edm::LogInfo("FillMitTree::beginJob") << "Booking for " << (*iF)->Name() << endl;
111 loizides 1.4 (*iF)->BookDataBlock(*tws);
112 paus 1.1 }
113     }
114    
115 loizides 1.9 //--------------------------------------------------------------------------------------------------
116 loizides 1.3 bool FillMitTree::configure(const edm::ParameterSet &cfg)
117 paus 1.1 {
118 loizides 1.3 // Configure our fillers.
119    
120 loizides 1.17 FillerMetaInfos *fillerMetaInfos = new FillerMetaInfos(cfg,defactive_);
121     addActiveFiller(fillerMetaInfos);
122 loizides 1.2
123 bendavid 1.12 FillerMCParticles *fillerMCParticles = new FillerMCParticles(cfg,"MCParticles",defactive_);
124 loizides 1.17 addActiveFiller(fillerMCParticles);
125 loizides 1.11
126     FillerCaloJets *fillerCaloJets = new FillerCaloJets(cfg,"CaloJets",defactive_);
127 loizides 1.17 addActiveFiller(fillerCaloJets);
128 loizides 1.11
129 sixie 1.19 FillerCaloJets *fillerSisCone5Jets = new FillerCaloJets(cfg,"SisCone5Jets",defactive_);
130     addActiveFiller(fillerSisCone5Jets);
131    
132 loizides 1.11 FillerCaloMet *fillerCaloMet = new FillerCaloMet(cfg,"CaloMet",defactive_);
133 loizides 1.17 addActiveFiller(fillerCaloMet);
134 loizides 1.11
135 loizides 1.17 FillerTracks *fillerGeneralTracks = new FillerTracks(cfg,"GeneralTracks",defactive_);
136     addActiveFiller(fillerGeneralTracks);
137 loizides 1.11
138 loizides 1.9 FillerTracks *fillerStandaloneMuonTracks =
139     new FillerTracks(cfg,"StandaloneMuonTracks",defactive_);
140 loizides 1.17 addActiveFiller(fillerStandaloneMuonTracks);
141 loizides 1.6
142     FillerTracks *fillerStandaloneMuonTracksVtx =
143 loizides 1.7 new FillerTracks(cfg,"StandaloneMuonTracksWVtxConstraint",defactive_);
144 loizides 1.17 addActiveFiller(fillerStandaloneMuonTracksVtx);
145 loizides 1.11
146 loizides 1.7 FillerTracks *fillerGlobalMuonTracks = new FillerTracks(cfg,"GlobalMuonTracks",defactive_);
147 loizides 1.17 addActiveFiller(fillerGlobalMuonTracks);
148 loizides 1.6
149     FillerTracks *fillerConversionInOutTracks =
150 loizides 1.17 new FillerTracks(cfg,"ConversionInOutTracks",defactive_);
151     addActiveFiller(fillerConversionInOutTracks);
152 loizides 1.11
153 loizides 1.6 FillerTracks *fillerConversionOutInTracks =
154 loizides 1.17 new FillerTracks(cfg,"ConversionOutInTracks",defactive_);
155     addActiveFiller(fillerConversionOutInTracks);
156 loizides 1.11
157 loizides 1.17 FillerGsfTracks *fillerGsfTracks = new FillerGsfTracks(cfg,"GsfTracks",defactive_);
158     addActiveFiller(fillerGsfTracks);
159 loizides 1.11
160 sixie 1.18 FillerBasicClusters *fillerBarrelBasicClusters =
161     new FillerBasicClusters(cfg, "BarrelBasicClusters", defactive_);
162     addActiveFiller(fillerBarrelBasicClusters);
163    
164     FillerSuperClusters *fillerBarrelSuperClusters =
165     new FillerSuperClusters(cfg,"BarrelSuperClusters", defactive_);
166     addActiveFiller(fillerBarrelSuperClusters);
167    
168     FillerBasicClusters *fillerEndcapBasicClusters =
169     new FillerBasicClusters(cfg,"EndcapBasicClusters", defactive_);
170     addActiveFiller(fillerEndcapBasicClusters);
171    
172     FillerSuperClusters *fillerEndcapSuperClusters =
173     new FillerSuperClusters(cfg,"EndcapSuperClusters", defactive_);
174     addActiveFiller(fillerEndcapSuperClusters);
175    
176 loizides 1.17 FillerMuons *fillerMuons = new FillerMuons(cfg,defactive_);
177     addActiveFiller(fillerMuons);
178 sixie 1.18
179 loizides 1.17 FillerElectrons *fillerElectrons = new FillerElectrons(cfg,defactive_);
180     addActiveFiller(fillerElectrons);
181 loizides 1.11
182 loizides 1.9 FillerConversionElectrons *fillerConversionElectrons =
183 loizides 1.17 new FillerConversionElectrons(cfg,defactive_);
184     addActiveFiller(fillerConversionElectrons);
185 loizides 1.11
186 loizides 1.17 FillerConversions *fillerConversions = new FillerConversions(cfg,defactive_);
187     addActiveFiller(fillerConversions);
188 loizides 1.11
189 loizides 1.17 FillerPhotons *fillerPhotons = new FillerPhotons(cfg,defactive_);
190     addActiveFiller(fillerPhotons);
191 loizides 1.5
192 loizides 1.17 FillerStableParts *fillerStableParts = new FillerStableParts(cfg,"StableParts",defactive_);
193     addActiveFiller(fillerStableParts);
194 bendavid 1.14
195 loizides 1.17 FillerDecayParts *fillerDecayParts = new FillerDecayParts(cfg,"DecayParts",defactive_);
196     addActiveFiller(fillerDecayParts);
197 paus 1.13
198 loizides 1.3 return 1;
199 paus 1.1 }
200    
201 loizides 1.9 //--------------------------------------------------------------------------------------------------
202 paus 1.1 void FillMitTree::endJob()
203     {
204 loizides 1.2 // Delete fillers.
205    
206     for (std::vector<BaseFiller*>::iterator iF = fillers_.begin(); iF != fillers_.end(); ++iF) {
207     delete *iF;
208     }
209    
210 paus 1.1 edm::LogInfo("FillMitTree::endJob") << "Ending Job" << endl;
211     }