ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/Morgan/interface/TRootMuon.h
Revision: 1.6
Committed: Fri Dec 19 12:26:01 2008 UTC (16 years, 4 months ago) by lethuill
Content type: text/plain
Branch: MAIN
CVS Tags: pat_2_2_5_01, pat_2_1_12_02
Changes since 1.5: +11 -46 lines
Log Message:
Replace MC infos encapsulated in TRootObjects by a TRef pointing to TRootMCParticles stocked in MCParticles branch
pdgId is now signed

File Contents

# Content
1 #ifndef TRootMuon_h
2 #define TRootMuon_h
3
4 #include "../interface/TRootParticle.h"
5
6
7 using namespace std;
8
9 class TRootMuon : public TRootParticle
10 {
11
12 public:
13
14 TRootMuon() :
15 TRootParticle()
16 ,et_em_(-9999.)
17 ,et_emS9_(-9999.)
18 ,et_had_(-9999.)
19 ,et_hadS9_(-9999.)
20 ,et_ho_(-9999.)
21 ,et_hoS9_(-9999.)
22 ,caloCompatibility_(-9999.)
23 ,isoR03_emEt_(-9999.)
24 ,isoR03_hadEt_(-9999.)
25 ,isoR03_hoEt_(-9999.)
26 ,isoR03_sumPt_(-9999.)
27 ,isoR03_nTracks_(-9999)
28 ,isoR03_nJets_(-9999)
29 ,isoR05_emEt_(-9999.)
30 ,isoR05_hadEt_(-9999.)
31 ,isoR05_hoEt_(-9999.)
32 ,isoR05_sumPt_(-9999.)
33 ,isoR05_nTracks_(-9999)
34 ,isoR05_nJets_(-9999)
35 ,energyValid_(false)
36 ,matchesValid_(false)
37 ,isolationValid_(false)
38 ,direction_(-9999)
39 ,algo_(-9999)
40 ,id_(-9999)
41 {;}
42
43 TRootMuon(const TRootMuon& muon) :
44 TRootParticle(muon)
45 ,et_em_(muon.et_em_)
46 ,et_emS9_(muon.et_emS9_)
47 ,et_had_(muon.et_had_)
48 ,et_hadS9_(muon.et_hadS9_)
49 ,et_ho_(muon.et_ho_)
50 ,et_hoS9_(muon.et_hoS9_)
51 ,caloCompatibility_(muon.caloCompatibility_)
52 ,isoR03_emEt_(muon.isoR03_emEt_)
53 ,isoR03_hadEt_(muon.isoR03_hadEt_)
54 ,isoR03_hoEt_(muon.isoR03_hoEt_)
55 ,isoR03_sumPt_(muon.isoR03_sumPt_)
56 ,isoR03_nTracks_(muon.isoR03_nTracks_)
57 ,isoR03_nJets_(muon.isoR03_nJets_)
58 ,isoR05_emEt_(muon.isoR05_emEt_)
59 ,isoR05_hadEt_(muon.isoR05_hadEt_)
60 ,isoR05_hoEt_(muon.isoR05_hoEt_)
61 ,isoR05_sumPt_(muon.isoR05_sumPt_)
62 ,isoR05_nTracks_(muon.isoR05_nTracks_)
63 ,isoR05_nJets_(muon.isoR05_nJets_)
64 ,energyValid_(muon.energyValid_)
65 ,matchesValid_(muon.matchesValid_)
66 ,isolationValid_(muon.isolationValid_)
67 ,direction_(muon.direction_)
68 ,algo_(muon.algo_)
69 ,id_(muon.id_)
70 {;}
71
72 TRootMuon(Double_t px, Double_t py, Double_t pz, Double_t e) :
73 TRootParticle(px,py,pz,e)
74 ,et_em_(-9999.)
75 ,et_emS9_(-9999.)
76 ,et_had_(-9999.)
77 ,et_hadS9_(-9999.)
78 ,et_ho_(-9999.)
79 ,et_hoS9_(-9999.)
80 ,caloCompatibility_(-9999.)
81 ,isoR03_emEt_(-9999.)
82 ,isoR03_hadEt_(-9999.)
83 ,isoR03_hoEt_(-9999.)
84 ,isoR03_sumPt_(-9999.)
85 ,isoR03_nTracks_(-9999)
86 ,isoR03_nJets_(-9999)
87 ,isoR05_emEt_(-9999.)
88 ,isoR05_hadEt_(-9999.)
89 ,isoR05_hoEt_(-9999.)
90 ,isoR05_sumPt_(-9999.)
91 ,isoR05_nTracks_(-9999)
92 ,isoR05_nJets_(-9999)
93 ,energyValid_(false)
94 ,matchesValid_(false)
95 ,isolationValid_(false)
96 ,direction_(-9999)
97 ,algo_(-9999)
98 ,id_(-9999)
99 {;}
100
101 TRootMuon(Double_t px, Double_t py, Double_t pz, Double_t e, Double_t vtx_x, Double_t vtx_y, Double_t vtx_z) :
102 TRootParticle(px,py,pz,e,vtx_x,vtx_y,vtx_z)
103 ,et_em_(-9999.)
104 ,et_emS9_(-9999.)
105 ,et_had_(-9999.)
106 ,et_hadS9_(-9999.)
107 ,et_ho_(-9999.)
108 ,et_hoS9_(-9999.)
109 ,caloCompatibility_(-9999.)
110 ,isoR03_emEt_(-9999.)
111 ,isoR03_hadEt_(-9999.)
112 ,isoR03_hoEt_(-9999.)
113 ,isoR03_sumPt_(-9999.)
114 ,isoR03_nTracks_(-9999)
115 ,isoR03_nJets_(-9999)
116 ,isoR05_emEt_(-9999.)
117 ,isoR05_hadEt_(-9999.)
118 ,isoR05_hoEt_(-9999.)
119 ,isoR05_sumPt_(-9999.)
120 ,isoR05_nTracks_(-9999)
121 ,isoR05_nJets_(-9999)
122 ,energyValid_(false)
123 ,matchesValid_(false)
124 ,isolationValid_(false)
125 ,direction_(-9999)
126 ,algo_(-9999)
127 ,id_(-9999)
128 {;}
129
130 TRootMuon(Double_t px, Double_t py, Double_t pz, Double_t e, Double_t vtx_x, Double_t vtx_y, Double_t vtx_z, Int_t type, Float_t charge) :
131 TRootParticle(px,py,pz,e,vtx_x,vtx_y,vtx_z,type,charge)
132 ,et_em_(-9999.)
133 ,et_emS9_(-9999.)
134 ,et_had_(-9999.)
135 ,et_hadS9_(-9999.)
136 ,et_ho_(-9999.)
137 ,et_hoS9_(-9999.)
138 ,caloCompatibility_(-9999.)
139 ,isoR03_emEt_(-9999.)
140 ,isoR03_hadEt_(-9999.)
141 ,isoR03_hoEt_(-9999.)
142 ,isoR03_sumPt_(-9999.)
143 ,isoR03_nTracks_(-9999)
144 ,isoR03_nJets_(-9999)
145 ,isoR05_emEt_(-9999.)
146 ,isoR05_hadEt_(-9999.)
147 ,isoR05_hoEt_(-9999.)
148 ,isoR05_sumPt_(-9999.)
149 ,isoR05_nTracks_(-9999)
150 ,isoR05_nJets_(-9999)
151 ,energyValid_(false)
152 ,matchesValid_(false)
153 ,isolationValid_(false)
154 ,direction_(-9999)
155 ,algo_(-9999)
156 ,id_(-9999)
157 {;}
158
159 TRootMuon(const TLorentzVector &momentum) :
160 TRootParticle(momentum)
161 ,et_em_(-9999.)
162 ,et_emS9_(-9999.)
163 ,et_had_(-9999.)
164 ,et_hadS9_(-9999.)
165 ,et_ho_(-9999.)
166 ,et_hoS9_(-9999.)
167 ,caloCompatibility_(-9999.)
168 ,isoR03_emEt_(-9999.)
169 ,isoR03_hadEt_(-9999.)
170 ,isoR03_hoEt_(-9999.)
171 ,isoR03_sumPt_(-9999.)
172 ,isoR03_nTracks_(-9999)
173 ,isoR03_nJets_(-9999)
174 ,isoR05_emEt_(-9999.)
175 ,isoR05_hadEt_(-9999.)
176 ,isoR05_hoEt_(-9999.)
177 ,isoR05_sumPt_(-9999.)
178 ,isoR05_nTracks_(-9999)
179 ,isoR05_nJets_(-9999)
180 ,energyValid_(false)
181 ,matchesValid_(false)
182 ,isolationValid_(false)
183 ,direction_(-9999)
184 ,algo_(-9999)
185 ,id_(-9999)
186 {;}
187
188 TRootMuon(const TLorentzVector &momentum, const TVector3 &vertex, Int_t type, Float_t charge) :
189 TRootParticle(momentum, vertex, type, charge)
190 ,et_em_(-9999.)
191 ,et_emS9_(-9999.)
192 ,et_had_(-9999.)
193 ,et_hadS9_(-9999.)
194 ,et_ho_(-9999.)
195 ,et_hoS9_(-9999.)
196 ,caloCompatibility_(-9999.)
197 ,isoR03_emEt_(-9999.)
198 ,isoR03_hadEt_(-9999.)
199 ,isoR03_hoEt_(-9999.)
200 ,isoR03_sumPt_(-9999.)
201 ,isoR03_nTracks_(-9999)
202 ,isoR03_nJets_(-9999)
203 ,isoR05_emEt_(-9999.)
204 ,isoR05_hadEt_(-9999.)
205 ,isoR05_hoEt_(-9999.)
206 ,isoR05_sumPt_(-9999.)
207 ,isoR05_nTracks_(-9999)
208 ,isoR05_nJets_(-9999)
209 ,energyValid_(false)
210 ,matchesValid_(false)
211 ,isolationValid_(false)
212 ,direction_(-9999)
213 ,algo_(-9999)
214 ,id_(-9999)
215 {;}
216
217 ~TRootMuon() {;}
218
219
220 Float_t et_em() const { return et_em_;}
221 Float_t et_emS9() const { return et_emS9_;}
222 Float_t et_had() const { return et_had_;}
223 Float_t et_hadS9() const { return et_hadS9_;}
224 Float_t et_ho() const { return et_ho_;}
225 Float_t et_hoS9() const { return et_hoS9_;}
226 Float_t caloCompatibility() const { return caloCompatibility_;}
227
228 Float_t isoR03_emEt() const { return isoR03_emEt_;}
229 Float_t isoR03_hadEt() const { return isoR03_hadEt_;}
230 Float_t isoR03_hoEt() const { return isoR03_hoEt_;}
231 Float_t isoR03_sumPt() const { return isoR03_sumPt_;}
232 Int_t isoR03_nTracks() const { return isoR03_nTracks_;}
233 Int_t isoR03_nJets() const { return isoR03_nJets_;}
234
235 Float_t isoR05_emEt() const { return isoR05_emEt_;}
236 Float_t isoR05_hadEt() const { return isoR05_hadEt_;}
237 Float_t isoR05_hoEt() const { return isoR05_hoEt_;}
238 Float_t isoR05_sumPt() const { return isoR05_sumPt_;}
239 Int_t isoR05_nTracks() const { return isoR05_nTracks_;}
240 Int_t isoR05_nJets() const { return isoR05_nJets_;}
241
242 Bool_t energyValid() const { return energyValid_;}
243 Bool_t matchesValid() const { return matchesValid_;}
244 Bool_t isolationValid() const { return isolationValid_;}
245
246 Int_t direction() const { return direction_;}
247 Int_t algo() const { return algo_;}
248
249 Bool_t isGlobalMuon() const { return algo_ & 2; }
250 Bool_t isTrackerMuon() const { return algo_ & 4; }
251 Bool_t isStandAloneMuon() const { return algo_ & 8; }
252 Bool_t isCaloMuon() const { return algo_ & 16; }
253
254 Int_t id() const { return id_;}
255 Bool_t idTrackerMuonArbitrated() const { return id_ & 1; }
256 Bool_t idAllArbitrated() const { return id_ & 2; }
257 Bool_t idGlobalMuonPromptTight() const { return id_ & 4; }
258 Bool_t idTMLastStationLoose() const { return id_ & 8; }
259 Bool_t idTMLastStationTight() const { return id_ & 16; }
260 Bool_t idTM2DCompatibilityLoose() const { return id_ & 32; }
261 Bool_t idTM2DCompatibilityTight() const { return id_ & 64; }
262
263 //TObject* genMuon() const { return genMuon_.GetObject() ;}
264 virtual TString typeName() const { return "TRootMuon"; }
265
266
267 void setCaloEnergy(Float_t et_em, Float_t et_emS9, Float_t et_had, Float_t et_hadS9, Float_t et_ho, Float_t et_hoS9, Float_t caloCompatibility)
268 {
269 et_em_ = et_em;
270 et_emS9_ = et_emS9;
271 et_had_ = et_had;
272 et_hadS9_ = et_hadS9;
273 et_ho_ = et_ho;
274 et_hoS9_ = et_hoS9;
275 caloCompatibility_ = caloCompatibility;
276 }
277
278 void setIsoR03(Float_t isoR03_emEt, Float_t isoR03_hadEt, Float_t isoR03_hoEt, Float_t isoR03_sumPt, Int_t isoR03_nTracks, Int_t isoR03_nJets)
279 {
280 isoR03_emEt_ = isoR03_emEt;
281 isoR03_hadEt_ = isoR03_hadEt;
282 isoR03_hoEt_ = isoR03_hoEt;
283 isoR03_sumPt_ = isoR03_sumPt;
284 isoR03_nTracks_ = isoR03_nTracks;
285 isoR03_nJets_ = isoR03_nJets;
286 }
287
288 void setIsoR05(Float_t isoR05_emEt, Float_t isoR05_hadEt, Float_t isoR05_hoEt, Float_t isoR05_sumPt, Int_t isoR05_nTracks, Int_t isoR05_nJets)
289 {
290 isoR05_emEt_ = isoR05_emEt;
291 isoR05_hadEt_ = isoR05_hadEt;
292 isoR05_hoEt_ = isoR05_hoEt;
293 isoR05_sumPt_ = isoR05_sumPt;
294 isoR05_nTracks_ = isoR05_nTracks;
295 isoR05_nJets_ = isoR05_nJets;
296 }
297
298 void setValidity(Bool_t energyValid, Bool_t matchesValid, Bool_t isolationValid)
299 {
300 energyValid_ = energyValid;
301 matchesValid_ = matchesValid;
302 isolationValid_ = isolationValid;
303 }
304
305 void setDirection(Int_t direction) { direction_ = direction; }
306 void setAlgo(Int_t algo) { algo_ = algo; }
307 void setID(Int_t id) { id_ = id; }
308 void setID(
309 Int_t trackerMuonArbitrated
310 ,Int_t allArbitrated
311 ,Int_t globalMuonPromptTight
312 ,Int_t tmLastStationLoose
313 ,Int_t tmLastStationTight
314 ,Int_t tm2DCompatibilityLoose
315 ,Int_t tm2DCompatibilityTight
316 )
317 { id_ = trackerMuonArbitrated*1 + allArbitrated*2 + globalMuonPromptTight*4 + tmLastStationLoose*8 + tmLastStationTight*16 + tm2DCompatibilityLoose*32 + tm2DCompatibilityTight*64; }
318
319
320 friend std::ostream& operator<< (std::ostream& stream, const TRootMuon& muon) {
321 stream << "TRootMuon - Charge=" << muon.charge() << " (Et,eta,phi)=("<< muon.Et() <<","<< muon.Eta() <<","<< muon.Phi() << ") vertex(x,y,z)=("<< muon.vx() <<","<< muon.vy() <<","<< muon.vz() << ")" << endl
322 << " Type(G,T,S,C)=(" << muon.isGlobalMuon() << "," << muon.isTrackerMuon() << "," << muon.isStandAloneMuon() << "," << muon.isCaloMuon() << ") "
323 << " ID=(" << muon.idTrackerMuonArbitrated() << "," << muon.idAllArbitrated() << "," << muon.idGlobalMuonPromptTight() << "," << muon.idTMLastStationLoose()
324 << "," << muon.idTMLastStationTight() << "," << muon.idTM2DCompatibilityLoose() << "," << muon.idTM2DCompatibilityTight() << ")" << " Direction=" << muon.direction_
325 << " caloCompatibility="<< muon.caloCompatibility_ << " validity(energy,matches,isolation)=(" << muon.energyValid_ <<","<< muon.matchesValid_ <<","<< muon.isolationValid_ << ")" << endl
326 << " Et_em=" << muon.et_em_ << " Et_emS9=" << muon.et_emS9_ << " Et_had=" << muon.et_had_ << " Et_hadS9=" << muon.et_hadS9_ << " Et_ho=" << muon.et_ho_ << " Et_hoS9=" << muon.et_hoS9_ << endl
327 << " isolation cone 0.3: Et_em=" << muon.isoR03_emEt_ << " Et_had=" << muon.isoR03_hadEt_ <<" Et_ho=" << muon.isoR03_hoEt_ << " nTracks=" << muon.isoR03_nTracks_ <<" nJets=" << muon.isoR03_nJets_ << endl
328 << " isolation cone 0.5: Et_em=" << muon.isoR05_emEt_ << " Et_had=" << muon.isoR05_hadEt_ <<" Et_ho=" << muon.isoR05_hoEt_ << " nTracks=" << muon.isoR05_nTracks_ <<" nJets=" << muon.isoR05_nJets_;
329 return stream;
330 };
331
332
333 private:
334
335 // Variables from reco::Muon
336 Float_t et_em_;
337 Float_t et_emS9_;
338 Float_t et_had_;
339 Float_t et_hadS9_;
340 Float_t et_ho_;
341 Float_t et_hoS9_;
342 Float_t caloCompatibility_;
343
344 Float_t isoR03_emEt_;
345 Float_t isoR03_hadEt_;
346 Float_t isoR03_hoEt_;
347 Float_t isoR03_sumPt_;
348 Int_t isoR03_nTracks_;
349 Int_t isoR03_nJets_;
350
351 Float_t isoR05_emEt_;
352 Float_t isoR05_hadEt_;
353 Float_t isoR05_hoEt_;
354 Float_t isoR05_sumPt_;
355 Int_t isoR05_nTracks_;
356 Int_t isoR05_nJets_;
357
358 Bool_t energyValid_;
359 Bool_t matchesValid_;
360 Bool_t isolationValid_;
361
362 Int_t direction_; // OutsideIn = -1, Undefined = 0, InsideOut = 1
363 Int_t algo_; // binary => GlobalMuon=00010 , TrackerMuon=00100 , StandAloneMuon=01000 , CaloMuon=10000
364 // MuonId coded in binary word id_ ==> TrackerMuonArbitrated=0000001 , AllArbitrated=0000010 , GlobalMuonPromptTight=0000100 ,
365 // TMLastStationLoose=0001000 , TMLastStationTight=0010000 , TM2DCompatibilityLoose=0100000 , TM2DCompatibilityTight=1000000
366 Int_t id_;
367
368 ClassDef (TRootMuon,1);
369 };
370
371 #endif
372
373