ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/Vuko/WZAnalysis/src/MuonProperties.cc
Revision: 1.7
Committed: Fri Nov 30 17:24:50 2007 UTC (17 years, 5 months ago) by vuko
Content type: text/plain
Branch: MAIN
CVS Tags: vuko_3dec07
Changes since 1.6: +14 -15 lines
Log Message:
modifying MC truth information

File Contents

# User Rev Content
1 vuko 1.1 #include "Vuko/WZAnalysis/interface/MuonProperties.h"
2    
3     // user include files
4     #include "FWCore/Framework/interface/Event.h"
5     #include "FWCore/Framework/interface/ESHandle.h"
6    
7     #include "DataFormats/Candidate/interface/CandidateFwd.h"
8    
9     //--- muon AOD:
10     #include "DataFormats/JetReco/interface/CaloJetCollection.h"
11     #include "DataFormats/EgammaCandidates/interface/Electron.h"
12     #include "DataFormats/EgammaCandidates/interface/ElectronFwd.h"
13     #include "DataFormats/EgammaReco/interface/BasicCluster.h"
14     #include "DataFormats/EgammaReco/interface/BasicClusterFwd.h"
15     #include "DataFormats/EgammaCandidates/interface/PixelMatchGsfElectron.h"
16    
17     #include "DataFormats/EgammaReco/interface/BasicClusterShapeAssociation.h"
18     #include "DataFormats/EcalDetId/interface/EcalSubdetector.h"
19     #include "DataFormats/EcalDetId/interface/EBDetId.h"
20     #include "DataFormats/EcalDetId/interface/EEDetId.h"
21     #include "Geometry/CaloGeometry/interface/CaloGeometry.h"
22     #include "Geometry/Records/interface/IdealGeometryRecord.h"
23    
24     #include "DataFormats/HcalRecHit/interface/HcalRecHitCollections.h"
25    
26 senka 1.3 // muon data formats
27     #include "DataFormats/MuonReco/interface/MuIsoDeposit.h"
28     #include "DataFormats/MuonReco/interface/MuonFwd.h"
29     #include "DataFormats/MuonReco/interface/Muon.h"
30    
31 senka 1.5 #include "Vuko/WZAnalysis/interface/WZAnalyzer.h"
32 vuko 1.1
33     #include "TTree.h"
34     #include "TVector3.h"
35     #include <iostream>
36     #include <sstream>
37    
38     using namespace wzana;
39     using namespace edm;
40     using namespace std;
41    
42    
43     MuonProperties::MuonProperties() { }
44    
45    
46     void MuonProperties::ResetValues() {
47    
48     Charge = -10;
49     Pt = -10;
50     Energy = -10;
51     Eta = -10;
52     Phi = -10;
53    
54     GenCharge = -10;
55     GenPt = -10;
56     GenEnergy = -10;
57     GenEta = -10;
58     GenPhi = -10;
59     MatchDRGen = -10;
60    
61     MatchedGen = false;
62     MatchedGenFromB = false;
63     MatchedGenFromWZ = false;
64    
65 senka 1.3 //Data
66     //muon isolation info:
67     Et_ecal_tree=-2.;
68     Et_ecal_dr2_tree=-2.;
69     Et_ecal_dr3_tree=-2.;
70     Et_ecal_dr4_tree=-2.;
71     Et_ecal_dr7_tree=-2.;
72    
73     Et_hcal_tree=-2.;
74     Et_hcal_dr2_tree=-2.;
75     Et_hcal_dr3_tree=-2.;
76     Et_hcal_dr4_tree=-2.;
77     Et_hcal_dr7_tree=-2.;
78    
79     Et_ho_tree=-2.;
80     Et_ho_dr2_tree=-2.;
81     Et_ho_dr3_tree=-2.;
82     Et_ho_dr4_tree=-2.;
83     Et_ho_dr7_tree=-2.;
84    
85     Pt_tr_tree=-2.;
86     Pt_tr_dr2_tree=-2.;
87     Pt_tr_dr3_tree=-2.;
88     Pt_tr_dr4_tree=-2.;
89     Pt_tr_dr7_tree=-2.;
90    
91     N_tr_dr2_tree=-2;
92     N_tr_dr3_tree=-2;
93     N_tr_dr4_tree=-2;
94     N_tr_dr7_tree=-2;
95    
96     d0_tree=-200.;
97     d0_error_tree=-200.;
98     dz_tree=-200.;
99     dz_error_tree=-200.;
100    
101 vuko 1.1 }
102    
103    
104     void MuonProperties::CreateFlavourSpecificBranches(TTree * tree,std::string prefix, std::string suffix)
105     {
106    
107     // Create your branches
108    
109     // Examples:
110     /*
111     createFloatBranch(tree,"dca", prefix,suffix, &EoP);
112     createIntBranch(tree,"nhits", prefix,suffix, &nhits);
113     createBoolBranch(tree,"matched", prefix,suffix, &matched);
114     */
115 senka 1.3 createFloatBranch(tree,"Et_ecal_tree", prefix,suffix, &Et_ecal_tree);
116     createFloatBranch(tree,"Et_ecal_dr2_tree", prefix,suffix, &Et_ecal_dr2_tree);
117     createFloatBranch(tree,"Et_ecal_dr3_tree", prefix,suffix, &Et_ecal_dr3_tree);
118     createFloatBranch(tree,"Et_ecal_dr4_tree", prefix,suffix, &Et_ecal_dr4_tree);
119     createFloatBranch(tree,"Et_ecal_dr7_tree", prefix,suffix, &Et_ecal_dr7_tree);
120    
121     createFloatBranch(tree,"Et_hcal_tree", prefix,suffix, &Et_hcal_tree);
122     createFloatBranch(tree,"Et_hcal_dr2_tree", prefix,suffix, &Et_hcal_dr2_tree);
123     createFloatBranch(tree,"Et_hcal_dr3_tree", prefix,suffix, &Et_hcal_dr3_tree);
124     createFloatBranch(tree,"Et_hcal_dr4_tree", prefix,suffix, &Et_hcal_dr4_tree);
125     createFloatBranch(tree,"Et_hcal_dr7_tree", prefix,suffix, &Et_hcal_dr7_tree);
126    
127     createFloatBranch(tree,"Et_ho_tree", prefix,suffix, &Et_ho_tree);
128     createFloatBranch(tree,"Et_ho_dr2_tree", prefix,suffix, &Et_ho_dr2_tree);
129     createFloatBranch(tree,"Et_ho_dr3_tree", prefix,suffix, &Et_ho_dr3_tree);
130     createFloatBranch(tree,"Et_ho_dr4_tree", prefix,suffix, &Et_ho_dr4_tree);
131     createFloatBranch(tree,"Et_ho_dr7_tree", prefix,suffix, &Et_ho_dr7_tree);
132    
133     createFloatBranch(tree,"Pt_tr_tree", prefix,suffix, &Pt_tr_tree);
134     createFloatBranch(tree,"Pt_tr_dr2_tree", prefix,suffix, &Pt_tr_dr2_tree);
135     createFloatBranch(tree,"Pt_tr_dr3_tree", prefix,suffix, &Pt_tr_dr3_tree);
136     createFloatBranch(tree,"Pt_tr_dr4_tree", prefix,suffix, &Pt_tr_dr4_tree);
137     createFloatBranch(tree,"Pt_tr_dr7_tree", prefix,suffix, &Pt_tr_dr7_tree);
138    
139     createIntBranch(tree,"N_tr_dr2_tree", prefix,suffix, &N_tr_dr2_tree);
140     createIntBranch(tree,"N_tr_dr3_tree", prefix,suffix, &N_tr_dr3_tree);
141     createIntBranch(tree,"N_tr_dr4_tree", prefix,suffix, &N_tr_dr4_tree);
142     createIntBranch(tree,"N_tr_dr7_tree", prefix,suffix, &N_tr_dr7_tree);
143    
144     createFloatBranch(tree,"d0_tree", prefix,suffix, &d0_tree);
145     createFloatBranch(tree,"d0_error_tree", prefix,suffix, &d0_error_tree);
146     createFloatBranch(tree,"dz_tree", prefix,suffix, &dz_tree);
147     createFloatBranch(tree,"dz_error_tree", prefix,suffix, &dz_error_tree);
148    
149 vuko 1.1 }
150    
151     void MuonProperties::FillProperties(const reco::Candidate * lepton,
152 vuko 1.2 const edm::Event& iEvent,
153 vuko 1.4 const edm::EventSetup& iSetup,
154 senka 1.6 const reco::Candidate * genParticle, float dr)
155 vuko 1.1
156     {
157    
158     using namespace reco;
159    
160 senka 1.3 // ovdje ide racunanje deklariranih varijabli
161     // const PixelMatchGsfElectron * electron = dynamic_cast<const reco::PixelMatchGsfElectron *>(lepton);
162 vuko 1.1
163 vuko 1.7 const reco::Muon * muon = 0;
164    
165     if ( lepton->hasMasterClone() ) {
166     CandidateBaseRef master = lepton->masterClone();
167     muon = dynamic_cast<const reco::Muon *>(&(*master));
168     } else {
169     muon = dynamic_cast<const reco::Muon *>(lepton);
170     }
171    
172    
173     // const reco::Muon * muon = dynamic_cast<const reco::Muon *>(lepton);
174 vuko 1.1
175 senka 1.3 if (muon == 0) {
176 vuko 1.1
177 senka 1.5 cout << "ElectronProperties::FillProperties: ,THIS IS NOT AN MUON!!! \n";
178 senka 1.3 return;
179     }
180    
181 vuko 1.7
182     // Fills MC truth information
183 senka 1.5 if (genParticle) {
184 vuko 1.7 FillMCTruthInfo(lepton, genParticle);
185 senka 1.5 }
186    
187 senka 1.3 Charge = muon->charge();
188     Pt = muon->pt();
189     Energy = muon->energy();
190     Eta = muon->eta();
191     Phi = muon->phi();
192    
193    
194     ///////////////////////////////////////////////////////////
195     //
196     // ISOLATION VARIABLES
197     //
198     //
199    
200     edm::Handle<reco::MuIsoDepositAssociationMap> ecalIso;
201     // iEvent.getByLabel(theECALIsoDepositLabel, ecalIso);
202     iEvent.getByLabel("muGlobalIsoDepositCalByAssociatorTowers","ecal", ecalIso);
203     // muGlobalIsoDepositCalByAssociatorTowers:ecal
204    
205     edm::Handle<reco::MuIsoDepositAssociationMap> hcalIso;
206     // iEvent.getByLabel(theHCALIsoDepositLabel, hcalIso);
207     iEvent.getByLabel("muGlobalIsoDepositCalByAssociatorTowers","hcal", hcalIso);
208     // muGlobalIsoDepositCalByAssociatorTowers:hcal
209    
210     edm::Handle<reco::MuIsoDepositAssociationMap> hocalIso;
211     // iEvent.getByLabel(theHOCALIsoDepositLabel, hocalIso);
212     iEvent.getByLabel("muGlobalIsoDepositCalByAssociatorTowers","ho", hocalIso);
213     // muGlobalIsoDepositCalByAssociatorTowers:ho
214    
215     edm::Handle<reco::MuIsoDepositAssociationMap> trackerIso;
216     // iEvent.getByLabel(theTrackerIsoDepositLabel, trackerIso);
217     iEvent.getByLabel("muGlobalIsoDepositCtfTk", trackerIso);
218     // muGlobalIsoDepositCtfTk
219    
220     const reco::MuIsoDeposit& depEcal = (*ecalIso)[muon->combinedMuon()];
221     const reco::MuIsoDeposit& depHcal = (*hcalIso)[muon->combinedMuon()];
222     const reco::MuIsoDeposit& depHOcal = (*hocalIso)[muon->combinedMuon()];
223     const reco::MuIsoDeposit& depTracker = (*trackerIso)[muon->combinedMuon()];
224    
225     Et_ecal_tree=depEcal.muonEnergy();
226     Et_ecal_dr2_tree=depEcal.depositWithin(0.2);
227     Et_ecal_dr3_tree=depEcal.depositWithin(0.3);
228     Et_ecal_dr4_tree=depEcal.depositWithin(0.4);
229     Et_ecal_dr7_tree=depEcal.depositWithin(0.7);
230    
231     Et_hcal_tree=depHcal.muonEnergy();
232     Et_hcal_dr2_tree=depHcal.depositWithin(0.2);
233     Et_hcal_dr3_tree=depHcal.depositWithin(0.3);
234     Et_hcal_dr4_tree=depHcal.depositWithin(0.4);
235     Et_hcal_dr7_tree=depHcal.depositWithin(0.7);
236    
237     Et_ho_tree=depHOcal.muonEnergy();
238     Et_ho_dr2_tree=depHOcal.depositWithin(0.2);
239     Et_ho_dr3_tree=depHOcal.depositWithin(0.3);
240     Et_ho_dr4_tree=depHOcal.depositWithin(0.4);
241     Et_ho_dr7_tree=depHOcal.depositWithin(0.7);
242    
243     Pt_tr_tree=depTracker.muonEnergy();
244     Pt_tr_dr2_tree=depTracker.depositAndCountWithin(0.2).first;
245     Pt_tr_dr3_tree=depTracker.depositAndCountWithin(0.3).first;
246     Pt_tr_dr4_tree=depTracker.depositAndCountWithin(0.4).first;
247     Pt_tr_dr7_tree=depTracker.depositAndCountWithin(0.7).first;
248    
249     N_tr_dr2_tree=depTracker.depositAndCountWithin(0.2).second;
250     N_tr_dr3_tree=depTracker.depositAndCountWithin(0.3).second;
251     N_tr_dr4_tree=depTracker.depositAndCountWithin(0.4).second;
252     N_tr_dr7_tree=depTracker.depositAndCountWithin(0.7).second;
253    
254     d0_tree=muon->combinedMuon()->d0();
255     d0_error_tree=muon->combinedMuon()->d0Error();
256     dz_tree=muon->combinedMuon()->dz();
257     dz_error_tree=muon->combinedMuon()->dzError();
258    
259 vuko 1.1
260     }