]> git.uio.no Git - u/mrichter/AliRoot.git/blame - STEER/ESD/AliESDMuonGlobalTrack.cxx
Add protection for wrong Ntrk profile correction settings
[u/mrichter/AliRoot.git] / STEER / ESD / AliESDMuonGlobalTrack.cxx
CommitLineData
d3eabe96 1/**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
3 * *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
6 * *
7 * Permission to use, copy, modify and distribute this software and its *
8 * documentation strictly for non-commercial purposes is hereby granted *
9 * without fee, provided that the above copyright notice appears in all *
10 * copies and that both the copyright notice and this permission notice *
11 * appear in the supporting documentation. The authors make no claims *
12 * about the suitability of this software for any purpose. It is *
13 * provided "as is" without express or implied warranty. *
14 **************************************************************************/
15
16//====================================================================================================================================================
17//
18// ESD description of an ALICE muon forward track, combining the information of the Muon Spectrometer and the Muon Forward Tracker
19//
20// Contact author: antonio.uras@cern.ch
21//
22//====================================================================================================================================================
23
24#include "AliESDMuonGlobalTrack.h"
25#include "AliESDEvent.h"
26
27#include "TClonesArray.h"
28#include "TLorentzVector.h"
29#include "TMath.h"
30#include "TDatabasePDG.h"
31
32ClassImp(AliESDMuonGlobalTrack)
33
34//====================================================================================================================================================
35
36AliESDMuonGlobalTrack::AliESDMuonGlobalTrack():
37 AliVParticle(),
38 fCharge(0),
39 fMatchTrigger(0),
f7cc8591 40 fNMFTClusters(0),
41 fNWrongMFTClustersMC(-1),
42 fMFTClusterPattern(0),
d3eabe96 43 fPx(0),
44 fPy(0),
45 fPz(0),
46 fPt(0),
47 fP(0),
48 fEta(0),
49 fRapidity(0),
f7cc8591 50 fFirstTrackingPointX(0),
51 fFirstTrackingPointY(0),
52 fFirstTrackingPointZ(0),
53 fXAtVertex(0),
54 fYAtVertex(0),
55 fRAtAbsorberEnd(0),
56 fChi2OverNdf(0),
d3eabe96 57 fChi2MatchTrigger(0),
58 fLabel(-1),
f7cc8591 59 fMuonClusterMap(0),
60 fHitsPatternInTrigCh(0),
61 fHitsPatternInTrigChTrk(0),
62 fLoCircuit(0),
63 fIsConnected(kFALSE),
d3eabe96 64 fESDEvent(0)
65{
66
67 // Default constructor
68
69}
70
71//====================================================================================================================================================
72
73AliESDMuonGlobalTrack::AliESDMuonGlobalTrack(Double_t px, Double_t py, Double_t pz):
74 AliVParticle(),
75 fCharge(0),
76 fMatchTrigger(0),
f7cc8591 77 fNMFTClusters(0),
78 fNWrongMFTClustersMC(-1),
79 fMFTClusterPattern(0),
d3eabe96 80 fPx(0),
81 fPy(0),
82 fPz(0),
83 fPt(0),
84 fP(0),
85 fEta(0),
86 fRapidity(0),
f7cc8591 87 fFirstTrackingPointX(0),
88 fFirstTrackingPointY(0),
89 fFirstTrackingPointZ(0),
90 fXAtVertex(0),
91 fYAtVertex(0),
92 fRAtAbsorberEnd(0),
93 fChi2OverNdf(0),
d3eabe96 94 fChi2MatchTrigger(0),
95 fLabel(-1),
f7cc8591 96 fMuonClusterMap(0),
97 fHitsPatternInTrigCh(0),
98 fHitsPatternInTrigChTrk(0),
99 fLoCircuit(0),
100 fIsConnected(kFALSE),
d3eabe96 101 fESDEvent(0)
102{
103
104 // Constructor with kinematics
105
106 SetPxPyPz(px, py, pz);
107
108}
109
110//====================================================================================================================================================
111
112AliESDMuonGlobalTrack::AliESDMuonGlobalTrack(const AliESDMuonGlobalTrack& muonTrack):
113 AliVParticle(muonTrack),
114 fCharge(muonTrack.fCharge),
115 fMatchTrigger(muonTrack.fMatchTrigger),
f7cc8591 116 fNMFTClusters(muonTrack.fNMFTClusters),
117 fNWrongMFTClustersMC(muonTrack.fNWrongMFTClustersMC),
118 fMFTClusterPattern(muonTrack.fMFTClusterPattern),
d3eabe96 119 fPx(muonTrack.fPx),
120 fPy(muonTrack.fPy),
121 fPz(muonTrack.fPz),
122 fPt(muonTrack.fPt),
123 fP(muonTrack.fP),
124 fEta(muonTrack.fEta),
125 fRapidity(muonTrack.fRapidity),
f7cc8591 126 fFirstTrackingPointX(muonTrack.fFirstTrackingPointX),
127 fFirstTrackingPointY(muonTrack.fFirstTrackingPointY),
128 fFirstTrackingPointZ(muonTrack.fFirstTrackingPointZ),
129 fXAtVertex(muonTrack.fXAtVertex),
130 fYAtVertex(muonTrack.fYAtVertex),
131 fRAtAbsorberEnd(muonTrack.fRAtAbsorberEnd),
132 fChi2OverNdf(muonTrack.fChi2OverNdf),
d3eabe96 133 fChi2MatchTrigger(muonTrack.fChi2MatchTrigger),
134 fLabel(muonTrack.fLabel),
f7cc8591 135 fMuonClusterMap(muonTrack.fMuonClusterMap),
136 fHitsPatternInTrigCh(muonTrack.fHitsPatternInTrigCh),
137 fHitsPatternInTrigChTrk(muonTrack.fHitsPatternInTrigChTrk),
138 fLoCircuit(muonTrack.fLoCircuit),
139 fIsConnected(muonTrack.fIsConnected),
d3eabe96 140 fESDEvent(muonTrack.fESDEvent)
141{
142
143 // Copy constructor
144
145}
146
147//====================================================================================================================================================
148
149AliESDMuonGlobalTrack& AliESDMuonGlobalTrack::operator=(const AliESDMuonGlobalTrack& muonTrack) {
150
151 // Assignment operator
152
153 if (this == &muonTrack) return *this;
154
155 // Base class assignement
156 AliVParticle::operator=(muonTrack);
157
f7cc8591 158 fCharge = muonTrack.fCharge;
159 fMatchTrigger = muonTrack.fMatchTrigger;
160 fNMFTClusters = muonTrack.fNMFTClusters;
161 fNWrongMFTClustersMC = muonTrack.fNWrongMFTClustersMC;
162 fMFTClusterPattern = muonTrack.fMFTClusterPattern;
163 fPx = muonTrack.fPx;
164 fPy = muonTrack.fPy;
165 fPz = muonTrack.fPz;
166 fPt = muonTrack.fPt;
167 fP = muonTrack.fP;
168 fEta = muonTrack.fEta;
169 fRapidity = muonTrack.fRapidity;
170 fFirstTrackingPointX = muonTrack.fFirstTrackingPointX;
171 fFirstTrackingPointY = muonTrack.fFirstTrackingPointY;
172 fFirstTrackingPointZ = muonTrack.fFirstTrackingPointZ;
173 fXAtVertex = muonTrack.fXAtVertex;
174 fYAtVertex = muonTrack.fYAtVertex;
175 fRAtAbsorberEnd = muonTrack.fRAtAbsorberEnd;
176 fChi2OverNdf = muonTrack.fChi2OverNdf;
177 fChi2MatchTrigger = muonTrack.fChi2MatchTrigger;
178 fLabel = muonTrack.fLabel;
179 fMuonClusterMap = muonTrack.fMuonClusterMap;
180 fHitsPatternInTrigCh = muonTrack.fHitsPatternInTrigCh;
181 fHitsPatternInTrigChTrk = muonTrack.fHitsPatternInTrigChTrk;
182 fLoCircuit = muonTrack.fLoCircuit;
183 fIsConnected = muonTrack.fIsConnected;
184 fESDEvent = muonTrack.fESDEvent;
d3eabe96 185
186 return *this;
187
188}
189
190//====================================================================================================================================================
191
192void AliESDMuonGlobalTrack::Copy(TObject &obj) const {
193
194 // This overwrites the virtual TObject::Copy()
195 // to allow run time copying without casting
196 // in AliESDEvent
197
198 if (this==&obj) return;
199 AliESDMuonGlobalTrack *robj = dynamic_cast<AliESDMuonGlobalTrack*>(&obj);
200 if (!robj) return; // not an AliESDMuonGlobalTrack
201 *robj = *this;
202
203}
204
205//====================================================================================================================================================
206
207void AliESDMuonGlobalTrack::SetPxPyPz(Double_t px, Double_t py, Double_t pz) {
208
209 Double_t mMu = TDatabasePDG::Instance()->GetParticle("mu-")->Mass();
210 Double_t eMu = TMath::Sqrt(mMu*mMu + px*px + py*py + pz*pz);
211
212 TLorentzVector kinem(px, py, pz, eMu);
213
214 fPx = kinem.Px();
215 fPy = kinem.Py();
216 fPz = kinem.Pz();
217 fP = kinem.P();
218 fPt = kinem.Pt();
219 fEta = kinem.Eta();
220 fRapidity = kinem.Rapidity();
221
222}
223
224//====================================================================================================================================================