ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/MitAna/DataTree/interface/Muon.h
Revision: 1.22
Committed: Thu Dec 4 15:34:24 2008 UTC (16 years, 5 months ago) by pharris
Content type: text/plain
Branch: MAIN
Changes since 1.21: +47 -2 lines
Log Message:
   Added Description to Muon Class

File Contents

# User Rev Content
1 loizides 1.1 //--------------------------------------------------------------------------------------------------
2 pharris 1.22 // $Id: Muon.h,v 1.21 2008/12/03 16:58:17 bendavid Exp $
3 loizides 1.1 //
4     // Muon
5 pharris 1.22 // Classified into 3 Types
6     // Standalone : Muon Fit from hits in the Muon Chambers
7     // Tracker : Tracker Matched Track to Muon Chambers with segments
8     // Global : Combined Track and Muon Chambers Fit
9 loizides 1.1 //
10 pharris 1.22 // In the Muon class all three Muons exist and can be determined by checking
11     // whether a fit track exists for such a Muon (eg TrackerTrk() == 0). When
12     // BestTrk function is called the Global Fit is returned, if that does not
13     // exist the Tracker Fit is returned upon that failure the Standalone Muon
14     // is subsequently returned. To consult More see:
15     // http://cmsdoc.cern.ch/cms/Physics/muon/MPOG/Notes/MuonReco.pdf
16     //
17     // Quality Varaibles for Selection
18     // Isolation : decomposed to IsoRNNXXXXX
19     // NN = 03,05 to denote R =0.3,0.5 in Isolation Cone
20     // XXXXX = SumPt -Sum of Pt of Tracks in Cone (using all Pt Tracks)
21     // XXXXX = EmEt -Sum of Et of Em component of Calo Towers (Veto=0.08)
22     // XXXXX = HadEt -Sum of Et of Had component of Calo Towers (Veto=0.1)
23     // XXXXX = HoEt -Sum of Pt of Ho component of Calo Towers (Veto=0.1)
24     // XXXXX = NTrk -Number of Tracks within Cone (using all Pt Tracks)
25     // XXXXX = NJet -Sum of Jets inside Cone
26     // Muon Quality Variables
27     // Extracted from the Muon Tracking Associator
28     // For more se https://twiki.cern.ch/twiki/bin/view/CMS/TrackAssociator
29     // Energy Variables : Energy within (5x5 Ecal Crystal/Hcal/Ho) along Track
30     // Using Calo Towers
31     // S9 Energy Variables : Energy using RecHits CaloTowers Default
32     // Segment Variables :
33     // Segment variables are stored in array of 8:
34     // 0-3 Correspond to segments in 4 DT chambers in->outward(3 has no Y Res)
35     // 4-7 Correspnod to segments in 4 CSC chambers in->out
36     // If value undetermined 999999 is returned.
37     // Variables:
38     // DX,DY,PullX,PullY: Uncertainties/Pulls of Propagated Track
39     // with respect to local Muon Segment
40     // TrackDist,TrackDistErr: Summed Dist/Err (in X,Y) of Segment with respect
41     // to propagated Track
42     // NSegments : Number of Segements in Muon using Segment + Track Arbitration
43     // NChambers : Number of Muon Chambers Traverresed in Propagated Track
44     // LastHit : Returns farthest (from Center) station with a recorded Segment
45     // LastStation : Returns farhtest station using Segment+Track Arbitration
46     // Muon Id Methods: Please see Muon Id Note(as of now unpublished):
47     // https://www.cmsaf.mit.edu/twiki/pub/CmsHep/HepWAnalysis/MuonID-ingo.pdf
48     // TMOneStation : Returns bool whether Muon passes Tracker Muon One StationId
49     // -Matching criteria for One of all Segements Matched to Muon
50     // TMLastStation : Returns bool whether Muon pass LastStation Id criteria
51     // -Matching criteria for Last most Segement
52 loizides 1.1 //
53 loizides 1.16 // Authors: J.Bendavid, C.Loizides, C.Paus, P.Harris
54 loizides 1.1 //--------------------------------------------------------------------------------------------------
55 loizides 1.6
56 loizides 1.16 #ifndef MITANA_DATATREE_MUON_H
57     #define MITANA_DATATREE_MUON_H
58 loizides 1.8
59     #include <TRef.h>
60 loizides 1.16 #include "MitAna/DataTree/interface/Track.h"
61 bendavid 1.11 #include "MitAna/DataTree/interface/ChargedParticle.h"
62 pharris 1.15
63     namespace mithep {
64     class Muon : public ChargedParticle {
65 loizides 1.1 public:
66 loizides 1.20 Muon();
67 loizides 1.1 ~Muon() {}
68 loizides 1.18
69     enum EClassType {
70     kNone, //no track assigned
71     kGlobal, //"Global"
72     kTrackerOnly, //"TrackerOnly"
73     kSta, //"Standalone"
74     kAny //any "best" of the above
75     };
76 bendavid 1.2
77 loizides 1.16 const Track *BestTrk() const;
78     const Track *GlobalTrk() const;
79     const Track *StandaloneTrk() const;
80     const Track *TrackerTrk() const;
81     const Track *Trk() const { return BestTrk(); }
82 pharris 1.15 Double_t IsoR03SumPt() const { return fIsoR03SumPt; }
83     Double_t IsoR03EmEt() const { return fIsoR03EmEt; }
84     Double_t IsoR03HadEt() const { return fIsoR03HadEt; }
85     Double_t IsoR03HoEt() const { return fIsoR03HoEt; }
86     Int_t IsoR03NTracks() const { return fIsoR03NTracks; }
87     Int_t IsoR03NJets() const { return fIsoR03NJets; }
88     Double_t IsoR05SumPt() const { return fIsoR05SumPt; }
89     Double_t IsoR05EmEt() const { return fIsoR05EmEt; }
90     Double_t IsoR05HadEt() const { return fIsoR05HadEt; }
91     Double_t IsoR05HoEt() const { return fIsoR05HoEt; }
92     Int_t IsoR05NTracks() const { return fIsoR05NTracks; }
93     Int_t IsoR05NJets() const { return fIsoR05NJets; }
94     Double_t EmEnergy() const { return fEmEnergy; }
95     Double_t HadEnergy() const { return fHadEnergy; }
96     Double_t HoEnergy() const { return fHoEnergy; }
97     Double_t EmS9Energy() const { return fEmS9Energy; }
98     Double_t HadS9Energy() const { return fHadS9Energy; }
99     Double_t HoS9Energy() const { return fHoS9Energy; }
100 loizides 1.16 Double_t Mass() const { return 105.658369e-3; }
101     Int_t NChambers() const { return fNTraversedChambers; }
102     Int_t NSegments() const { return fStationMask.NBitsSet(); }
103     Bool_t StationBit(Int_t bit) const { return fStationMask.TestBit(bit); }
104 loizides 1.20 Double_t GetDX(Int_t iStation) const;
105     Double_t GetDY(Int_t iStation) const;
106     Double_t GetPullX(Int_t iStation) const;
107     Double_t GetPullY(Int_t iStation) const;
108     Double_t GetTrackDist(Int_t iStation) const;
109     Double_t GetTrackDistErr(Int_t iStation) const;
110     Int_t GetNSegments(Int_t iStation) const;
111     Bool_t HasGlobalTrk() const { return fGlobalTrackRef.IsValid(); }
112     Bool_t HasStandaloneTrk() const { return fStandaloneTrackRef.IsValid(); }
113     Bool_t HasTrackerTrk() const { return fTrackerTrackRef.IsValid(); }
114     Bool_t Has(EClassType type) const;
115     EClassType Is() const;
116     Int_t LastHit() const;
117 loizides 1.18 Int_t LastStation(Double_t iMaxD, Double_t iMaxP) const;
118     Int_t LastStation(Int_t iMax=8) const;
119     Bool_t PromptTight(EClassType type) const;
120     Bool_t TMLastStation(Double_t iDYMin = 3., Double_t iPYMin = 3.,
121     Double_t iDXMin = 3., Double_t iPXMin = 3.,Int_t iN = 2) const;
122     Bool_t TMOneStation(Double_t iDYMin = 3., Double_t iPYMin = 3.,
123     Double_t iDXMin = 3., Double_t iPXMin = 3.,Int_t iN = 1) const;
124 bendavid 1.21 void SetGlobalTrk(const Track *t) { fGlobalTrackRef = const_cast<Track*>(t); }
125     void SetStandaloneTrk(const Track *t) { fStandaloneTrackRef = const_cast<Track*>(t); }
126     void SetTrackerTrk(const Track *t) { fTrackerTrackRef = const_cast<Track*>(t); }
127 sixie 1.13 void SetIsoR03SumPt(Double_t isoR03SumPt) { fIsoR03SumPt = isoR03SumPt; }
128     void SetIsoR03EmEt(Double_t isoR03EmEt) { fIsoR03EmEt = isoR03EmEt; }
129     void SetIsoR03HadEt(Double_t isoR03HadEt) { fIsoR03HadEt = isoR03HadEt; }
130     void SetIsoR03HoEt(Double_t isoR03HoEt) { fIsoR03HoEt = isoR03HoEt; }
131     void SetIsoR03NTracks(Int_t isoR03NTracks) { fIsoR03NTracks = isoR03NTracks; }
132     void SetIsoR03NJets(Int_t isoR03NJets) { fIsoR03NJets = isoR03NJets; }
133     void SetIsoR05SumPt(Double_t isoR05SumPt) { fIsoR05SumPt = isoR05SumPt; }
134     void SetIsoR05EmEt(Double_t isoR05EmEt) { fIsoR05EmEt = isoR05EmEt; }
135     void SetIsoR05HadEt(Double_t isoR05HadEt) { fIsoR05HadEt = isoR05HadEt; }
136     void SetIsoR05HoEt(Double_t isoR05HoEt) { fIsoR05HoEt = isoR05HoEt; }
137     void SetIsoR05NTracks(Int_t isoR05NTracks) { fIsoR05NTracks = isoR05NTracks; }
138     void SetIsoR05NJets(Int_t isoR05NJets) { fIsoR05NJets = isoR05NJets; }
139     void SetEmEnergy(Double_t EmEnergy) { fEmEnergy = EmEnergy; }
140     void SetHadEnergy(Double_t HadEnergy) { fHadEnergy = HadEnergy; }
141     void SetHoEnergy(Double_t HoEnergy) { fHoEnergy = HoEnergy; }
142     void SetEmS9Energy(Double_t EmS9Energy) { fEmS9Energy = EmS9Energy; }
143     void SetHadS9Energy(Double_t HadS9Energy) { fHadS9Energy = HadS9Energy; }
144     void SetHoS9Energy(Double_t HoS9Energy) { fHoS9Energy = HoS9Energy; }
145 loizides 1.16 void SetNChambers(Int_t iNTraCh) { fNTraversedChambers = iNTraCh; }
146     void SetStationMask(UInt_t iStMask) { fStationMask.SetBits(iStMask); }
147     void SetDX(Int_t iStation, Double_t iDX);
148     void SetDY(Int_t iStation, Double_t iDY);
149     void SetPullX(Int_t iStation, Double_t iPullX);
150     void SetPullY(Int_t iStation, Double_t iPullY);
151     void SetTrackDist(Int_t iStation, Double_t iDist);
152     void SetTrackDistErr(Int_t iStation, Double_t iDistErr);
153     void SetNSegments(Int_t iStation, Int_t NSegments);
154 pharris 1.15
155 loizides 1.8 protected:
156 loizides 1.9 TRef fGlobalTrackRef; //global combined track reference
157     TRef fStandaloneTrackRef; //standalone muon track reference
158     TRef fTrackerTrackRef; //tracker track reference
159 loizides 1.16 Double32_t fIsoR03SumPt; //isolation size R=0.3 sum pt
160     Double32_t fIsoR03EmEt; //isolation size R=0.3 em trans energy
161     Double32_t fIsoR03HadEt; //isolation size R=0.3 had trans energy
162     Double32_t fIsoR03HoEt; //isolation size R=0.3 ho trans energy
163     Int_t fIsoR03NTracks; //isolation size R=0.3 number of tracks
164     Int_t fIsoR03NJets; //isolation size R=0.3 number of jets
165     Double32_t fIsoR05SumPt; //isolation size R=0.5 sum pt
166     Double32_t fIsoR05EmEt; //isolation size R=0.5 em trans energy
167     Double32_t fIsoR05HadEt; //isolation size R=0.5 had trans energy
168     Double32_t fIsoR05HoEt; //isolation size R=0.5 ho trans energy
169     Int_t fIsoR05NTracks; //isolation size R=0.5 number of tracks
170     Int_t fIsoR05NJets; //isolation size R=0.5 number of jets
171 loizides 1.18 Double32_t fEmEnergy; //energy deposit in ecal
172     Double32_t fHadEnergy; //energy deposit in hcal
173     Double32_t fHoEnergy; //energy deposit in outer hcal
174 loizides 1.16 Double32_t fEmS9Energy; //?
175     Double32_t fHadS9Energy; //?
176     Double32_t fHoS9Energy; //?
177     Int_t fNTraversedChambers; //number of tranversed chambers
178 loizides 1.18 BitMask8 fStationMask; //bitmap of station with tracks, 0-3 DT, 4-7 CSCs
179 loizides 1.16 Double32_t fDX[8]; //uncertainty in x in given muon chamber
180     Double32_t fDY[8]; //uncertainty in y in given muon chamber
181     Double32_t fPullX[8]; //pull in x in given muon chamber
182     Double32_t fPullY[8]; //pull in y in given muon chamber
183 loizides 1.18 Double32_t fTrackDist[8]; //dist. to track in trans. plane in given muon chamber
184     Double32_t fTrackDistErr[8]; //error of dist. to track in trans. plane in chamber
185     Int_t fNSegments[8]; //number of segments in given muon chamber
186 loizides 1.16
187 loizides 1.7 ClassDef(Muon, 1) // Muon class
188 loizides 1.1 };
189 loizides 1.4 }
190 loizides 1.8
191 loizides 1.9 //--------------------------------------------------------------------------------------------------
192 loizides 1.10 inline const mithep::Track *mithep::Muon::BestTrk() const
193     {
194     // Return "best" track.
195    
196     if (GlobalTrk())
197     return GlobalTrk();
198 bendavid 1.17 else if (TrackerTrk())
199     return TrackerTrk();
200 loizides 1.10 else if (StandaloneTrk())
201     return StandaloneTrk();
202    
203 loizides 1.20 Error("BestTrk", "No track reference found, returning NULL pointer.");
204 loizides 1.10 return 0;
205     }
206    
207     //--------------------------------------------------------------------------------------------------
208     inline const mithep::Track *mithep::Muon::GlobalTrk() const
209 loizides 1.9 {
210     // Return global combined track.
211    
212     return static_cast<const Track*>(fGlobalTrackRef.GetObject());
213     }
214    
215     //--------------------------------------------------------------------------------------------------
216 loizides 1.10 inline const mithep::Track *mithep::Muon::StandaloneTrk() const
217 loizides 1.9 {
218     // Return standalone track.
219    
220     return static_cast<const Track*>(fStandaloneTrackRef.GetObject());
221     }
222    
223     //--------------------------------------------------------------------------------------------------
224 loizides 1.10 inline const mithep::Track *mithep::Muon::TrackerTrk() const
225 loizides 1.9 {
226     // Return tracker track.
227    
228     return static_cast<const Track*>(fTrackerTrackRef.GetObject());
229     }
230 pharris 1.15
231 loizides 1.16 //--------------------------------------------------------------------------------------------------
232     inline Double_t mithep::Muon::GetDX(Int_t iStation) const
233     {
234     // Return uncertainty in x in given chamber.
235    
236     assert(iStation >= 0 && iStation < 8);
237     return fDX[iStation];
238     }
239    
240     //--------------------------------------------------------------------------------------------------
241     inline Double_t mithep::Muon::GetDY(Int_t iStation) const
242     {
243     // Return uncertainty in y in given chamber.
244    
245     assert(iStation >= 0 && iStation < 8);
246     return fDY[iStation];
247     }
248    
249     //--------------------------------------------------------------------------------------------------
250     inline Double_t mithep::Muon::GetPullX(Int_t iStation) const
251     {
252     // Return pull in x in given chamber.
253    
254     assert(iStation >= 0 && iStation < 8);
255     return fPullX[iStation];
256     }
257    
258     //--------------------------------------------------------------------------------------------------
259     inline Double_t mithep::Muon::GetPullY(Int_t iStation) const
260     {
261     // Return pull in y in given chamber.
262    
263     assert(iStation >= 0 && iStation < 8);
264     return fPullY[iStation];
265     }
266    
267     //--------------------------------------------------------------------------------------------------
268     inline Double_t mithep::Muon::GetTrackDist(Int_t iStation) const
269     {
270     // Return track distance in given chamber.
271    
272     assert(iStation >= 0 && iStation < 8);
273     return fTrackDist[iStation];
274     }
275    
276     //--------------------------------------------------------------------------------------------------
277     inline Double_t mithep::Muon::GetTrackDistErr(Int_t iStation) const
278     {
279     // Return error of track distance in given chamber.
280    
281     assert(iStation >= 0 && iStation < 8);
282     return fTrackDistErr[iStation];
283     }
284    
285     //--------------------------------------------------------------------------------------------------
286     inline Int_t mithep::Muon::GetNSegments(Int_t iStation) const
287     {
288     // Return number of segments in chamber.
289    
290     assert(iStation >= 0 && iStation < 8);
291     return fNSegments[iStation];
292     }
293    
294     //--------------------------------------------------------------------------------------------------
295 loizides 1.18 inline Bool_t mithep::Muon::Has(EClassType type) const
296     {
297     // Return true if the muon has a track of given class.
298    
299     switch (type) {
300     case kAny:
301     if (BestTrk())
302     return kTRUE;
303     break;
304     case kGlobal:
305     if (GlobalTrk())
306     return kTRUE;
307     break;
308     case kTrackerOnly:
309     if (TrackerTrk())
310     return kTRUE;
311     break;
312     case kSta:
313     if (StandaloneTrk())
314     return kTRUE;
315     break;
316     case kNone:
317     if (!BestTrk())
318     return kTRUE;
319     break;
320     default:
321     break;
322     }
323    
324     return kFALSE;
325     }
326    
327     //--------------------------------------------------------------------------------------------------
328     inline mithep::Muon::EClassType mithep::Muon::Is() const
329     {
330     // Return the "best" classification of the muon according to the assigned tracks.
331    
332     if (GlobalTrk())
333     return kGlobal;
334     else if (TrackerTrk())
335     return kTrackerOnly;
336     else if (StandaloneTrk())
337     return kSta;
338    
339     return kNone;
340     }
341    
342     //--------------------------------------------------------------------------------------------------
343     inline Int_t mithep::Muon::LastHit() const
344     {
345     // Return the last hit, or -1 if no one found.
346    
347     Int_t lId = -1;
348     for (Int_t i0 = 0; i0 < 8; ++i0) {
349     if (GetDX(i0) < 99999 || GetDY(i0) < 99999)
350     lId = i0;
351     }
352     return lId;
353     }
354    
355     //--------------------------------------------------------------------------------------------------
356     inline Int_t mithep::Muon::LastStation(Int_t iMax) const
357     {
358     // Return the last station, or -1 of no one found.
359    
360     Int_t lId = -1;
361     if(TMath::Abs(iMax) > 8)
362     iMax = 8;
363     for (Int_t i0 = 0; i0 < iMax; ++i0) {
364     if (StationBit(i0) && ((lId % 4) < (i0 % 4)))
365     lId = i0;
366     }
367     return lId;
368     }
369    
370     //--------------------------------------------------------------------------------------------------
371     inline Int_t mithep::Muon::LastStation(Double_t iMaxD, Double_t iMaxP) const
372     {
373     // Return the last station for given deviation and relative error, or -1 if no one found.
374    
375     Int_t lId = -1;
376     for (Int_t i0 = 0; i0 < 8; ++i0) {
377     if ((lId % 4) > (i0 % 4))
378     continue;
379     if (GetTrackDist(i0) < iMaxD &&
380     GetTrackDist(i0)/GetTrackDistErr(i0) < iMaxP)
381     lId = i0;
382     }
383     return lId;
384     }
385    
386     //--------------------------------------------------------------------------------------------------
387     inline Bool_t mithep::Muon::PromptTight(EClassType type) const
388     {
389     // Return whether track for given class matches tight quality criteria.
390    
391     const mithep::Track *lTrack = 0;
392     switch (type) {
393     case kAny:
394     lTrack = BestTrk();
395     break;
396     case kGlobal:
397     lTrack = GlobalTrk();
398     break;
399     case kTrackerOnly:
400     lTrack = TrackerTrk();
401     break;
402     case kSta:
403     lTrack = StandaloneTrk();
404     break;
405     default:
406     break;
407     }
408    
409     if (lTrack == 0)
410     return kFALSE;
411     if (lTrack->NHits() < 11)
412     return kFALSE;
413     if (lTrack->Chi2()/lTrack->Ndof() > 10.)
414     return kFALSE;
415     if (lTrack->D0() > 0.2)
416     return kFALSE;
417     if ((LastHit() % 4) == 0)
418     return kFALSE;
419     return kTRUE;
420     }
421    
422     //--------------------------------------------------------------------------------------------------
423     inline Bool_t mithep::Muon::TMOneStation(Double_t iDYMin, Double_t iPYMin,
424     Double_t iDXMin, Double_t iPXMin, Int_t iN) const
425     {
426     // Check if the muon is matched to at least one station (chamber).
427    
428     if (NSegments() < iN)
429     return kFALSE; //second last one
430    
431     Bool_t pGoodX = kFALSE;
432 ceballos 1.19 Bool_t pBadY = kFALSE;
433 loizides 1.18 for (Int_t i0 = 0; i0 < 8; ++i0) {
434     if ((TMath::Abs(GetDX(i0)) < iDXMin ||
435     TMath::Abs(GetPullX(i0)) < iPXMin))
436     pGoodX = kTRUE;
437     if (pGoodX &&
438     (TMath::Abs(GetDY(i0)) < iDYMin ||
439     TMath::Abs(GetPullY(i0)) < iPYMin))
440     return kTRUE;
441     if (TMath::Abs(GetDY(i0)) < 999999)
442     pBadY = kTRUE;
443     if (i0 == 3 && pGoodX && !pBadY)
444     return kTRUE;
445     }
446     return kFALSE;
447     }
448    
449     //--------------------------------------------------------------------------------------------------
450     inline Bool_t mithep::Muon::TMLastStation(Double_t iDYMin, Double_t iPYMin,
451     Double_t iDXMin, Double_t iPXMin, Int_t iN) const
452     {
453     // Check if the muon is matched to its last station (chamber).
454    
455     if (NSegments() < iN)
456     return kFALSE; //second last one
457    
458     Int_t lLast = LastStation(-3.,-3.); // last required station
459     if (lLast < 0)
460     return kFALSE;
461     if (GetDX(lLast) > 9999.)
462     return kFALSE;
463     lLast = LastStation(); //no requirements
464     if (lLast < 0)
465     return kFALSE;
466     if (!(TMath::Abs(GetDX(lLast)) < iDXMin ||
467     TMath::Abs(GetPullX(lLast)) < iPXMin))
468     return kFALSE;
469     if (lLast == 3)
470     lLast = LastStation(3);
471     if (lLast < 0)
472     return kFALSE;
473     if (!(TMath::Abs(GetDY(lLast)) < iDYMin ||
474     TMath::Abs(GetPullY(lLast)) < iPYMin))
475     return kFALSE;
476     return kTRUE;
477     }
478    
479     //--------------------------------------------------------------------------------------------------
480 loizides 1.16 inline void mithep::Muon::SetDX(Int_t iStation, Double_t iDX)
481     {
482     // Return uncertainty in x in given chamber.
483    
484     assert(iStation >= 0 && iStation < 8);
485     fDX[iStation] = iDX;
486     }
487    
488     //--------------------------------------------------------------------------------------------------
489     inline void mithep::Muon::SetDY(Int_t iStation, Double_t iDY)
490     {
491     // Return uncertainty in y in given chamber.
492    
493     assert(iStation >= 0 && iStation < 8);
494     fDY[iStation] = iDY;
495     }
496    
497     //--------------------------------------------------------------------------------------------------
498     inline void mithep::Muon::SetPullX(Int_t iStation, Double_t iPullX)
499     {
500     // Set pull in x in given chamber.
501    
502     assert(iStation >= 0 && iStation < 8);
503     fPullX[iStation] = iPullX;
504     }
505    
506     //--------------------------------------------------------------------------------------------------
507     inline void mithep::Muon::SetPullY(Int_t iStation, Double_t iPullY)
508     {
509     // Set pull in y in given chamber.
510    
511     assert(iStation >= 0 && iStation < 8);
512     fPullY[iStation] = iPullY;
513     }
514    
515     //--------------------------------------------------------------------------------------------------
516     inline void mithep::Muon::SetTrackDist(Int_t iStation, Double_t iDist)
517     {
518     // Set track distance in given chamber.
519    
520     assert(iStation >= 0 && iStation < 8);
521     fTrackDist[iStation] = iDist;
522     }
523    
524     //--------------------------------------------------------------------------------------------------
525     inline void mithep::Muon::SetTrackDistErr(Int_t iStation, Double_t iDistErr)
526     {
527     // Set error of track distance in given chamber.
528 pharris 1.15
529 loizides 1.16 assert(iStation >= 0 && iStation < 8);
530     fTrackDistErr[iStation] = iDistErr;
531     }
532 pharris 1.15
533 loizides 1.16 //--------------------------------------------------------------------------------------------------
534     inline void mithep::Muon::SetNSegments(Int_t iStation, Int_t NSegments)
535     {
536     // Set number of segments in chamber.
537 pharris 1.15
538 loizides 1.16 assert(iStation >= 0 && iStation < 8);
539     fNSegments[iStation] = NSegments;
540     }
541     #endif
542 loizides 1.18
543    
544    
545    
546