]>
Commit | Line | Data |
---|---|---|
fd1d0cb9 | 1 | #ifndef ALIMUONINFOSTORERD_H |
2 | #define ALIMUONINFOSTORERD_H | |
3 | ||
4 | /* Copyright(c) 1998-2006, ALICE Experiment at CERN, All rights reserved. * | |
5 | * See cxx source for full Copyright notice */ | |
6 | ||
7 | //*********************************************************** | |
8 | // Class AliMuonInfoStoreRD | |
9 | // class used to extract and store reco info of muon track | |
10 | // Author: X-M. Zhang, zhang@clermont.in2p3.fr | |
11 | // zhangxm@iopp.ccnu.edu.cn | |
12 | //*********************************************************** | |
13 | ||
14 | #include <TObject.h> | |
15 | #include <TVector3.h> | |
16 | #include <TString.h> | |
17 | ||
18 | class AliAODTrack; | |
19 | class AliESDMuonTrack; | |
20 | ||
21 | class AliMuonInfoStoreRD : public TObject { | |
22 | public: | |
23 | ||
24 | AliMuonInfoStoreRD(); | |
25 | AliMuonInfoStoreRD(AliAODTrack *trk); | |
26 | AliMuonInfoStoreRD(AliESDMuonTrack *trk); | |
27 | AliMuonInfoStoreRD(const AliMuonInfoStoreRD &src); | |
28 | AliMuonInfoStoreRD& operator=(const AliMuonInfoStoreRD &src); | |
29 | virtual ~AliMuonInfoStoreRD(); | |
30 | ||
31 | TVector3 Momentum() const { return fMomentum; } | |
32 | TVector3 MomentumAtDCA() const { return fMomentumAtDCA; } | |
33 | ||
34 | void XYZAtDCA(Double_t dca[3]) const { for (Int_t i=3; i--;) dca[i]=fDCA[i]; } | |
35 | Double_t DCA() const { return TMath::Sqrt(fDCA[0]*fDCA[0]+fDCA[1]*fDCA[1]); } | |
36 | ||
37 | Short_t Charge() const { return fCharge; } | |
38 | Int_t MatchTrigger() const { return fMatchTrigger; } | |
39 | Int_t NClusters() const { return fNClusters; } | |
40 | UInt_t MUONClusterMap() const { return fMUONClusterMap; } | |
41 | Double_t Chi2FitMomentum() const { return fChi2FitMomentum; } | |
42 | Double_t Chi2MatchTrigger() const { return fChi2MatchTrigger; } | |
43 | ||
44 | Bool_t MuonSelection(); | |
45 | ||
46 | static const char* StdBranchName() { return fgkStdBranchName.Data(); } | |
47 | static const void SelectionCust(Double_t cuts[10]) { for (Int_t i=10; i--;) cuts[i]=fgCuts[i]; } | |
48 | static void SetSelectionCuts(Double_t cuts[10]) { for (Int_t i=10; i--;) fgCuts[i]=cuts[i]; } | |
49 | ||
50 | private: | |
51 | ||
52 | void FillMuonInfo(AliAODTrack *trk); | |
53 | void FillMuonInfo(AliESDMuonTrack *trk); | |
54 | ||
55 | void SetMomentum(Double_t p[3]) { fMomentum.SetXYZ(p[0],p[1],p[2]); } | |
56 | void SetMomentumAtDCA(Double_t p[3]) { fMomentumAtDCA.SetXYZ(p[0],p[1],p[2]); } | |
57 | ||
58 | void SetDCA(Double_t dca[3]) { for (Int_t i=3; i--;) fDCA[i]=dca[i]; } | |
59 | void SetCharge(Short_t charge) { fCharge = charge; } | |
60 | void SetNClusters(Int_t ncls) { fNClusters = ncls; } | |
61 | void SetMatchTrigger(Int_t trigger) { fMatchTrigger = trigger; } | |
62 | void SetMUONClusterMap(UInt_t clMap) { fMUONClusterMap = clMap; } | |
63 | void SetChi2FitMomentum(Double_t chi2) { fChi2FitMomentum = chi2; } | |
64 | void SetChi2MatchTrigger(Double_t chi2) { fChi2MatchTrigger = chi2; } | |
65 | ||
66 | static const TString fgkStdBranchName; // Standard branch name | |
67 | static Double_t fgCuts[10]; // 0, min of 3-momentum | |
68 | // 1, max of 3-momentum | |
69 | // 2, pt_Min | |
70 | // 3, pt_Max | |
71 | // 4, eta_Min | |
72 | // 5, eta_Max | |
73 | // 6, dca_Min | |
74 | // 7, dca_Max | |
75 | // 8, about trigger matching | |
76 | // 9, about trigger matching | |
77 | ||
78 | TVector3 fMomentum; // momentum corrected w vtx | |
79 | TVector3 fMomentumAtDCA; // momentum at DCA in vtx plane | |
80 | ||
81 | Double_t fDCA[3]; // distance of closet approach | |
82 | Short_t fCharge; // track charge | |
83 | Int_t fMatchTrigger; // type of match trigger | |
84 | Int_t fNClusters; // number of clusters in the track | |
85 | UInt_t fMUONClusterMap; // map of MUON clusters | |
86 | Double_t fChi2FitMomentum; // chi2/NDF of momentum fit | |
87 | Double_t fChi2MatchTrigger; // chi2 of trigger matching | |
88 | ||
89 | ClassDef(AliMuonInfoStoreRD, 4); | |
90 | }; | |
91 | ||
92 | #endif |