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

# User Rev Content
1 mlethuil 1.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 lethuill 1.6
12 mlethuil 1.1 public:
13 lethuill 1.6
14 lethuill 1.2 TRootMuon() :
15 lethuill 1.5 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 lethuill 1.6
43 lethuill 1.2 TRootMuon(const TRootMuon& muon) :
44 lethuill 1.5 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 lethuill 1.6
72 lethuill 1.2 TRootMuon(Double_t px, Double_t py, Double_t pz, Double_t e) :
73 lethuill 1.5 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 lethuill 1.6
101 lethuill 1.2 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 lethuill 1.5 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 lethuill 1.6
130 lethuill 1.2 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 lethuill 1.5 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 lethuill 1.6
159 lethuill 1.2 TRootMuon(const TLorentzVector &momentum) :
160 lethuill 1.5 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 lethuill 1.6
188 lethuill 1.2 TRootMuon(const TLorentzVector &momentum, const TVector3 &vertex, Int_t type, Float_t charge) :
189 lethuill 1.5 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 lethuill 1.6
217 mlethuil 1.1 ~TRootMuon() {;}
218 lethuill 1.6
219    
220 lethuill 1.2 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 mlethuil 1.1
246 lethuill 1.3 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 lethuill 1.5 //TObject* genMuon() const { return genMuon_.GetObject() ;}
264     virtual TString typeName() const { return "TRootMuon"; }
265    
266 lethuill 1.4
267 mlethuil 1.1 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 lethuill 1.3 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 mlethuil 1.1 friend std::ostream& operator<< (std::ostream& stream, const TRootMuon& muon) {
321 lethuill 1.3 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 mlethuil 1.1 << " 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 lethuill 1.4 // Variables from reco::Muon
336 mlethuil 1.1 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 lethuill 1.3
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 mlethuil 1.1 ClassDef (TRootMuon,1);
369     };
370    
371     #endif
372    
373