ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/MitProd/TreeFiller/src/FillMitTree.cc
Revision: 1.18
Committed: Fri Aug 8 11:21:08 2008 UTC (16 years, 8 months ago) by sixie
Content type: text/plain
Branch: MAIN
CVS Tags: MITHEP_2_0_x
Changes since 1.17: +22 -3 lines
Log Message:
Add SuperCluster links to electron Filler. Add basic cluster and supercluster association maps. Add new electron and Muon ID variables. Add correct default names to the config file. BuildFile had to be modified to include Egamma objects for the electron Fillers.

File Contents

# User Rev Content
1 sixie 1.18 // $Id: FillMitTree.cc,v 1.17 2008/07/31 12:34:04 loizides 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     FillerCaloMet *fillerCaloMet = new FillerCaloMet(cfg,"CaloMet",defactive_);
130 loizides 1.17 addActiveFiller(fillerCaloMet);
131 loizides 1.11
132 loizides 1.17 FillerTracks *fillerGeneralTracks = new FillerTracks(cfg,"GeneralTracks",defactive_);
133     addActiveFiller(fillerGeneralTracks);
134 loizides 1.11
135 loizides 1.9 FillerTracks *fillerStandaloneMuonTracks =
136     new FillerTracks(cfg,"StandaloneMuonTracks",defactive_);
137 loizides 1.17 addActiveFiller(fillerStandaloneMuonTracks);
138 loizides 1.6
139     FillerTracks *fillerStandaloneMuonTracksVtx =
140 loizides 1.7 new FillerTracks(cfg,"StandaloneMuonTracksWVtxConstraint",defactive_);
141 loizides 1.17 addActiveFiller(fillerStandaloneMuonTracksVtx);
142 loizides 1.11
143 loizides 1.7 FillerTracks *fillerGlobalMuonTracks = new FillerTracks(cfg,"GlobalMuonTracks",defactive_);
144 loizides 1.17 addActiveFiller(fillerGlobalMuonTracks);
145 loizides 1.6
146     FillerTracks *fillerConversionInOutTracks =
147 loizides 1.17 new FillerTracks(cfg,"ConversionInOutTracks",defactive_);
148     addActiveFiller(fillerConversionInOutTracks);
149 loizides 1.11
150 loizides 1.6 FillerTracks *fillerConversionOutInTracks =
151 loizides 1.17 new FillerTracks(cfg,"ConversionOutInTracks",defactive_);
152     addActiveFiller(fillerConversionOutInTracks);
153 loizides 1.11
154 loizides 1.17 FillerGsfTracks *fillerGsfTracks = new FillerGsfTracks(cfg,"GsfTracks",defactive_);
155     addActiveFiller(fillerGsfTracks);
156 loizides 1.11
157 sixie 1.18 FillerBasicClusters *fillerBarrelBasicClusters =
158     new FillerBasicClusters(cfg, "BarrelBasicClusters", defactive_);
159     addActiveFiller(fillerBarrelBasicClusters);
160    
161     FillerSuperClusters *fillerBarrelSuperClusters =
162     new FillerSuperClusters(cfg,"BarrelSuperClusters", defactive_);
163     addActiveFiller(fillerBarrelSuperClusters);
164    
165     FillerBasicClusters *fillerEndcapBasicClusters =
166     new FillerBasicClusters(cfg,"EndcapBasicClusters", defactive_);
167     addActiveFiller(fillerEndcapBasicClusters);
168    
169     FillerSuperClusters *fillerEndcapSuperClusters =
170     new FillerSuperClusters(cfg,"EndcapSuperClusters", defactive_);
171     addActiveFiller(fillerEndcapSuperClusters);
172    
173 loizides 1.17 FillerMuons *fillerMuons = new FillerMuons(cfg,defactive_);
174     addActiveFiller(fillerMuons);
175 sixie 1.18
176 loizides 1.17 FillerElectrons *fillerElectrons = new FillerElectrons(cfg,defactive_);
177     addActiveFiller(fillerElectrons);
178 loizides 1.11
179 loizides 1.9 FillerConversionElectrons *fillerConversionElectrons =
180 loizides 1.17 new FillerConversionElectrons(cfg,defactive_);
181     addActiveFiller(fillerConversionElectrons);
182 loizides 1.11
183 loizides 1.17 FillerConversions *fillerConversions = new FillerConversions(cfg,defactive_);
184     addActiveFiller(fillerConversions);
185 loizides 1.11
186 loizides 1.17 FillerPhotons *fillerPhotons = new FillerPhotons(cfg,defactive_);
187     addActiveFiller(fillerPhotons);
188 loizides 1.5
189 loizides 1.17 FillerStableParts *fillerStableParts = new FillerStableParts(cfg,"StableParts",defactive_);
190     addActiveFiller(fillerStableParts);
191 bendavid 1.14
192 loizides 1.17 FillerDecayParts *fillerDecayParts = new FillerDecayParts(cfg,"DecayParts",defactive_);
193     addActiveFiller(fillerDecayParts);
194 paus 1.13
195 loizides 1.3 return 1;
196 paus 1.1 }
197    
198 loizides 1.9 //--------------------------------------------------------------------------------------------------
199 paus 1.1 void FillMitTree::endJob()
200     {
201 loizides 1.2 // Delete fillers.
202    
203     for (std::vector<BaseFiller*>::iterator iF = fillers_.begin(); iF != fillers_.end(); ++iF) {
204     delete *iF;
205     }
206    
207 paus 1.1 edm::LogInfo("FillMitTree::endJob") << "Ending Job" << endl;
208     }