Update of the Xiaoming code for pp900 first muon analysis. Fixing wanirngs and violti...
[u/mrichter/AliRoot.git] / PWG3 / muon / AliMuonInfoStoreRD.h
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