15 |
|
// is subsequently returned. To consult more see: |
16 |
|
// http://cmsdoc.cern.ch/cms/Physics/muon/MPOG/Notes/MuonReco.pdf |
17 |
|
// |
18 |
< |
// Quality Varaibles for Selection |
18 |
> |
// Quality Variables for Selection |
19 |
|
// Isolation : decomposed to IsoRNNXXXXX |
20 |
|
// NN = 03,05 to denote R =0.3,0.5 in Isolation Cone |
21 |
|
// XXXXX = SumPt - Sum of Pt of Tracks in Cone (using all Pt Tracks) |
94 |
|
Double_t Ip3dPVBS() const { return fIp3dPVBS; } |
95 |
|
Double_t Ip3dPVBSErr() const { return fIp3dPVBSErr; } |
96 |
|
Double_t Ip3dPVBSSignificance() const { return fIp3dPVBS/fIp3dPVBSErr; } |
97 |
< |
Double_t D0PVUB() const { return fD0PVUB; } |
98 |
< |
Double_t D0PVUBErr() const { return fD0PVUBErr; } |
99 |
< |
Double_t D0PVUBSignificance() const { return fD0PVUB/fD0PVUBErr; } |
100 |
< |
Double_t Ip3dPVUB() const { return fIp3dPVUB; } |
101 |
< |
Double_t Ip3dPVUBErr() const { return fIp3dPVUBErr; } |
102 |
< |
Double_t Ip3dPVUBSignificance() const { return fIp3dPVUB/fIp3dPVUBErr; } |
103 |
< |
Double_t D0PVUBBS() const { return fD0PVUBBS; } |
104 |
< |
Double_t D0PVUBBSErr() const { return fD0PVUBBSErr; } |
105 |
< |
Double_t D0PVUBBSSignificance() const { return fD0PVUBBS/fD0PVUBBSErr; } |
106 |
< |
Double_t Ip3dPVUBBS() const { return fIp3dPVUBBS; } |
107 |
< |
Double_t Ip3dPVUBBSErr() const { return fIp3dPVUBBSErr; } |
108 |
< |
Double_t Ip3dPVUBBSSignificance() const { return fIp3dPVUBBS/fIp3dPVUBBSErr; } |
97 |
> |
Double_t D0PVUB() const { return fD0PVUB; } |
98 |
> |
Double_t D0PVUBErr() const { return fD0PVUBErr; } |
99 |
> |
Double_t D0PVUBSignificance() const { return fD0PVUB/fD0PVUBErr; } |
100 |
> |
Double_t Ip3dPVUB() const { return fIp3dPVUB; } |
101 |
> |
Double_t Ip3dPVUBErr() const { return fIp3dPVUBErr; } |
102 |
> |
Double_t Ip3dPVUBSignificance() const { return fIp3dPVUB/fIp3dPVUBErr; } |
103 |
> |
Double_t D0PVUBBS() const { return fD0PVUBBS; } |
104 |
> |
Double_t D0PVUBBSErr() const { return fD0PVUBBSErr; } |
105 |
> |
Double_t D0PVUBBSSignificance() const { return fD0PVUBBS/fD0PVUBBSErr; } |
106 |
> |
Double_t Ip3dPVUBBS() const { return fIp3dPVUBBS; } |
107 |
> |
Double_t Ip3dPVUBBSErr() const { return fIp3dPVUBBSErr; } |
108 |
> |
Double_t Ip3dPVUBBSSignificance() const { return fIp3dPVUBBS/fIp3dPVUBBSErr;} |
109 |
|
Double_t PVCompatibility() const { return fPVCompatibility; } |
110 |
|
Double_t PVBSCompatibility() const { return fPVBSCompatibility; } |
111 |
|
Double_t TrkKink() const { return fTrkKink; } |
180 |
|
void SetD0PVBSErr(Double_t x) { fD0PVBSErr = x; } |
181 |
|
void SetIp3dPVBS(Double_t x) { fIp3dPVBS = x; } |
182 |
|
void SetIp3dPVBSErr(Double_t x) { fIp3dPVBSErr = x; } |
183 |
< |
void SetD0PVUB(Double_t x) { fD0PVUB = x; } |
184 |
< |
void SetD0PVUBErr(Double_t x) { fD0PVUBErr = x; } |
185 |
< |
void SetIp3dPVUB(Double_t x) { fIp3dPVUB = x; } |
186 |
< |
void SetIp3dPVUBErr(Double_t x) { fIp3dPVUBErr = x; } |
187 |
< |
void SetD0PVUBBS(Double_t x) { fD0PVUBBS = x; } |
188 |
< |
void SetD0PVUBBSErr(Double_t x) { fD0PVUBBSErr = x; } |
189 |
< |
void SetIp3dPVUBBS(Double_t x) { fIp3dPVUBBS = x; } |
190 |
< |
void SetIp3dPVUBBSErr(Double_t x) { fIp3dPVUBBSErr = x; } |
183 |
> |
void SetD0PVUB(Double_t x) { fD0PVUB = x; } |
184 |
> |
void SetD0PVUBErr(Double_t x) { fD0PVUBErr = x; } |
185 |
> |
void SetIp3dPVUB(Double_t x) { fIp3dPVUB = x; } |
186 |
> |
void SetIp3dPVUBErr(Double_t x) { fIp3dPVUBErr = x; } |
187 |
> |
void SetD0PVUBBS(Double_t x) { fD0PVUBBS = x; } |
188 |
> |
void SetD0PVUBBSErr(Double_t x) { fD0PVUBBSErr = x; } |
189 |
> |
void SetIp3dPVUBBS(Double_t x) { fIp3dPVUBBS = x; } |
190 |
> |
void SetIp3dPVUBBSErr(Double_t x) { fIp3dPVUBBSErr = x; } |
191 |
|
void SetPVCompatibility(Double_t x) { fPVCompatibility = x; } |
192 |
|
void SetPVBSCompatibility(Double_t x) { fPVBSCompatibility = x; } |
193 |
|
void SetTrkKink(Double_t x) { fTrkKink = x; } |
194 |
|
void SetGlbKink(Double_t x) { fGlbKink = x; } |
195 |
< |
void SetEmEnergy(Double_t EmEnergy) { fEmEnergy = EmEnergy; } |
196 |
< |
void SetEmS9Energy(Double_t EmS9Energy) { fEmS9Energy = EmS9Energy; } |
197 |
< |
void SetHadEnergy(Double_t HadEnergy) { fHadEnergy = HadEnergy; } |
198 |
< |
void SetHadS9Energy(Double_t HadS9Energy) { fHadS9Energy = HadS9Energy; } |
199 |
< |
void SetHoEnergy(Double_t HoEnergy) { fHoEnergy = HoEnergy; } |
200 |
< |
void SetHoS9Energy(Double_t HoS9Energy) { fHoS9Energy = HoS9Energy; } |
195 |
> |
void SetEmEnergy(Double_t emEnergy) { fEmEnergy = emEnergy; } |
196 |
> |
void SetEmS9Energy(Double_t emS9Energy) { fEmS9Energy = emS9Energy; } |
197 |
> |
void SetHadEnergy(Double_t hadEnergy) { fHadEnergy = hadEnergy; } |
198 |
> |
void SetHadS9Energy(Double_t hadS9Energy) { fHadS9Energy = hadS9Energy; } |
199 |
> |
void SetHoEnergy(Double_t hoEnergy) { fHoEnergy = hoEnergy; } |
200 |
> |
void SetHoS9Energy(Double_t hoS9Energy) { fHoS9Energy = hoS9Energy; } |
201 |
|
void SetIsGlobalMuon(Bool_t b) { fIsGlobalMuon = b; } |
202 |
|
void SetIsTrackerMuon(Bool_t b) { fIsTrackerMuon = b; } |
203 |
|
void SetIsStandaloneMuon(Bool_t b) { fIsStandaloneMuon = b; } |
216 |
|
void SetIsoR05NJets(UShort_t isoR05NJets) { fIsoR05NJets = isoR05NJets; } |
217 |
|
void SetNValidHits(UShort_t iNValidHits) { fNValidHits = iNValidHits; } |
218 |
|
void SetNChambers(UShort_t iNTraCh) { fNTraversedChambers = iNTraCh; } |
219 |
< |
void SetNSegments(Int_t iStation, Int_t NSegments); |
219 |
> |
void SetNSegments(Int_t iStation, Int_t nSegments); |
220 |
|
void SetNMatches(UShort_t iNMatCh) { fNMatches = iNMatCh; } |
221 |
|
void SetPtEtaPhi(Double_t pt, Double_t eta, Double_t phi); |
222 |
|
void SetPullX(Int_t iStation, Double_t iPullX); |
225 |
|
void SetTrackDist(Int_t iStation, Double_t iDist); |
226 |
|
void SetTrackDistErr(Int_t iStation, Double_t iDistErr); |
227 |
|
|
228 |
+ |
// Some structural tools |
229 |
+ |
void Mark(UInt_t i=1) const; |
230 |
+ |
|
231 |
|
protected: |
232 |
|
Double_t GetCharge() const; |
233 |
|
Double_t GetMass() const { return 105.658369e-3; } |
264 |
|
Double32_t fD0PVBSErr; //[0,0,14]transverse impact parameter uncertainty to signal PV w/ bs constraint |
265 |
|
Double32_t fIp3dPVBS; //[0,0,14]3d impact parameter to signal PV w/ bs constraint |
266 |
|
Double32_t fIp3dPVBSErr; //[0,0,14]3d impact parameter uncertainty to signal PV w/ bs constraint |
264 |
– |
Double32_t fD0PVUB; //[0,0,14]transverse impact parameter to signal PVUB (unbiased primary vertex - refit removing lepton track) |
265 |
– |
Double32_t fD0PVUBErr; //[0,0,14]transverse impact parameter uncertainty to signal PVUB |
266 |
– |
Double32_t fIp3dPVUB; //[0,0,14]3d impact parameter to signal PVUB |
267 |
– |
Double32_t fIp3dPVUBErr; //[0,0,14]3d impact parameter uncertainty to signal PVUB |
268 |
– |
Double32_t fD0PVUBBS; //[0,0,14]transverse impact parameter to signal PVUB w/ bs constraint |
269 |
– |
Double32_t fD0PVUBBSErr; //[0,0,14]transverse impact parameter uncertainty to signal PVUB w/ bs constraint |
270 |
– |
Double32_t fIp3dPVUBBS; //[0,0,14]3d impact parameter to signal PVUB w/ bs constraint |
271 |
– |
Double32_t fIp3dPVUBBSErr; //[0,0,14]3d impact parameter uncertainty to signal PVUB w/ bs constraint |
267 |
|
Double32_t fPVCompatibility; //[0,0,14]chi^2 compatibility with signal PV (ndof=2) |
268 |
< |
Double32_t fPVBSCompatibility; //[0,0,14]chi^2 compatibility with signal PV w/ bs constraint (ndof=2) |
268 |
> |
Double32_t fPVBSCompatibility; //[0,0,14]chi^2 compatibility with signal PV w/ bs constraint (ndof=2) |
269 |
> |
Double32_t fD0PVUB; //[0,0,14]transverse impact parameter to signal PVUB (unbiased primary vertex - refit removing lepton track) |
270 |
> |
Double32_t fD0PVUBErr; //[0,0,14]transverse impact parameter uncertainty to signal PVUB |
271 |
> |
Double32_t fIp3dPVUB; //[0,0,14]3d impact parameter to signal PVUB |
272 |
> |
Double32_t fIp3dPVUBErr; //[0,0,14]3d impact parameter uncertainty to signal PVUB |
273 |
> |
Double32_t fD0PVUBBS; //[0,0,14]transverse impact parameter to signal PVUB w/ bs constraint |
274 |
> |
Double32_t fD0PVUBBSErr; //[0,0,14]transverse impact parameter uncertainty to signal PVUB w/ bs constraint |
275 |
> |
Double32_t fIp3dPVUBBS; //[0,0,14]3d impact parameter to signal PVUB w/ bs constraint |
276 |
> |
Double32_t fIp3dPVUBBSErr; //[0,0,14]3d impact parameter uncertainty to signal PVUB w/ bs constraint |
277 |
|
Double32_t fTrkKink; //[0,0,14]kink algorithm output (tracker track) |
278 |
|
Double32_t fGlbKink; //[0,0,14]kink algorithm output (global track) |
279 |
|
UShort_t fNValidHits; //number of Valid hits in global fit |
298 |
|
} |
299 |
|
|
300 |
|
//-------------------------------------------------------------------------------------------------- |
301 |
+ |
inline void mithep::Muon::Mark(UInt_t ib) const |
302 |
+ |
{ |
303 |
+ |
// mark myself |
304 |
+ |
mithep::DataObject::Mark(ib); |
305 |
+ |
// mark my dependencies if they are there |
306 |
+ |
if (fGlobalTrkRef.IsValid()) |
307 |
+ |
fGlobalTrkRef.Obj()->Mark(ib); |
308 |
+ |
if (fStaTrkRef.IsValid()) |
309 |
+ |
fStaTrkRef.Obj()->Mark(ib); |
310 |
+ |
if (fTrkTrkRef.IsValid()) |
311 |
+ |
fTrkTrkRef.Obj()->Mark(ib); |
312 |
+ |
} |
313 |
+ |
|
314 |
+ |
//-------------------------------------------------------------------------------------------------- |
315 |
|
inline const mithep::Track *mithep::Muon::BestTrk() const |
316 |
|
{ |
317 |
|
// Return "best" track. |
337 |
|
return mithep::ChargedParticle::GetCharge(); |
338 |
|
else |
339 |
|
return fCharge; |
323 |
– |
|
340 |
|
} |
341 |
|
|
342 |
|
//-------------------------------------------------------------------------------------------------- |
348 |
|
// If momentum is unfilled, fall back to old method of getting momentum from best track |
349 |
|
// (for backwards compatibility.) |
350 |
|
|
351 |
< |
if (fMom.Rho()>0.0) { |
351 |
> |
if (fMom.Rho()>0.0) |
352 |
|
fCachedMom.SetCoordinates(fMom.Rho(),fMom.Eta(),fMom.Phi(),GetMass()); |
353 |
< |
} |
338 |
< |
else { |
353 |
> |
else |
354 |
|
mithep::ChargedParticle::GetMom(); |
340 |
– |
} |
341 |
– |
|
355 |
|
} |
356 |
|
|
357 |
|
//-------------------------------------------------------------------------------------------------- |
666 |
|
} |
667 |
|
|
668 |
|
//-------------------------------------------------------------------------------------------------- |
669 |
< |
inline void mithep::Muon::SetNSegments(Int_t iStation, Int_t NSegments) |
669 |
> |
inline void mithep::Muon::SetNSegments(Int_t iStation, Int_t nSegments) |
670 |
|
{ |
671 |
|
// Set number of segments in chamber. |
672 |
|
|
673 |
|
assert(iStation >= 0 && iStation < 8); |
674 |
< |
fNSegments[iStation] = NSegments; |
674 |
> |
fNSegments[iStation] = nSegments; |
675 |
|
} |
676 |
|
|
677 |
|
//------------------------------------------------------------------------------------------------- |
683 |
|
ClearMom(); |
684 |
|
} |
685 |
|
#endif |
673 |
– |
|
674 |
– |
|
675 |
– |
|
676 |
– |
|
677 |
– |
|