]>
Commit | Line | Data |
---|---|---|
67427ff7 | 1 | #include "AliFemtoV0.h" |
2 | #include "phys_constants.h" | |
3 | ||
4 | // ----------------------------------------------------------------------- | |
0215f606 | 5 | AliFemtoV0::AliFemtoV0(): |
6 | fDecayLengthV0(0), fDecayVertexV0(0), fPrimaryVertex(0), | |
7 | fDcaV0Daughters(0), fDcaV0ToPrimVertex(0), | |
8 | fDcaPosToPrimVertex(0), fDcaNegToPrimVertex(0), | |
9 | fMomPos(0), fMomNeg(0), | |
10 | fTpcHitsPos(0), fTpcHitsNeg(0), | |
11 | fChi2V0(0), fClV0(0), fChi2Pos(0), fClPos(0), fChi2Neg(0), fClNeg(0), | |
12 | fDedxPos(0), fErrDedxPos(0), fLenDedxPos(0), | |
13 | fDedxNeg(0), fErrDedxNeg(0), fLenDedxNeg(0), | |
14 | fNufDedxPos(0), fNufDedxNeg(0), | |
15 | fHelixPos(), fHelixNeg(), | |
16 | fMomV0(0), | |
17 | fAlphaV0(0), fPtArmV0(0), | |
18 | fELambda(0), fEK0Short(0), | |
19 | fEPosProton(0), fEPosPion(0), | |
20 | fENegProton(0), fENegPion(0), | |
21 | fMassLambda(0), fMassAntiLambda(0), | |
22 | fMassK0Short(0), fRapLambda(0), | |
23 | fRapK0Short(0), fCTauLambda(0), | |
24 | fCTauK0Short(0), fPtV0(0), fPtotV0(0), | |
25 | fPtPos(0), fPtotPos(0), | |
26 | fPtNeg(0), fPtotNeg(0), | |
27 | fKeyNeg(0), fKeyPos(0), | |
28 | fHiddenInfo(0) /***/ | |
29 | { /* no-op */} | |
30 | // ----------------------------------------------------------------------- | |
31 | AliFemtoV0::AliFemtoV0(const AliFemtoV0& v) : | |
32 | fDecayLengthV0(0), fDecayVertexV0(0), fPrimaryVertex(0), | |
33 | fDcaV0Daughters(0), fDcaV0ToPrimVertex(0), | |
34 | fDcaPosToPrimVertex(0), fDcaNegToPrimVertex(0), | |
35 | fMomPos(0), fMomNeg(0), | |
36 | fTpcHitsPos(0), fTpcHitsNeg(0), | |
37 | fChi2V0(0), fClV0(0), fChi2Pos(0), fClPos(0), fChi2Neg(0), fClNeg(0), | |
38 | fDedxPos(0), fErrDedxPos(0), fLenDedxPos(0), | |
39 | fDedxNeg(0), fErrDedxNeg(0), fLenDedxNeg(0), | |
40 | fNufDedxPos(0), fNufDedxNeg(0), | |
41 | fHelixPos(), fHelixNeg(), | |
42 | fMomV0(0), | |
43 | fAlphaV0(0), fPtArmV0(0), | |
44 | fELambda(0), fEK0Short(0), | |
45 | fEPosProton(0), fEPosPion(0), | |
46 | fENegProton(0), fENegPion(0), | |
47 | fMassLambda(0), fMassAntiLambda(0), | |
48 | fMassK0Short(0), fRapLambda(0), | |
49 | fRapK0Short(0), fCTauLambda(0), | |
50 | fCTauK0Short(0), fPtV0(0), fPtotV0(0), | |
51 | fPtPos(0), fPtotPos(0), | |
52 | fPtNeg(0), fPtotNeg(0), | |
53 | fKeyNeg(0), fKeyPos(0), | |
54 | fHiddenInfo(0) /***/ | |
55 | { // copy constructor | |
67427ff7 | 56 | fDecayLengthV0 = v.fDecayLengthV0; |
57 | fDecayVertexV0 = v.fDecayVertexV0; | |
58 | fDcaV0Daughters = v.fDcaV0Daughters; | |
59 | fDcaV0ToPrimVertex = v.fDcaV0ToPrimVertex; | |
60 | fDcaPosToPrimVertex = v.fDcaPosToPrimVertex; | |
61 | fDcaNegToPrimVertex = v.fDcaNegToPrimVertex; | |
62 | fMomPos = v.fMomPos; | |
63 | fMomNeg = v.fMomNeg; | |
64 | ||
65 | fTrackTopologyMapPos[0] = v.fTrackTopologyMapPos[0]; | |
66 | fTrackTopologyMapPos[1] = v.fTrackTopologyMapPos[1]; | |
67 | fTrackTopologyMapNeg[0] = v.fTrackTopologyMapNeg[0]; | |
68 | fTrackTopologyMapNeg[1] = v.fTrackTopologyMapNeg[1]; | |
69 | ||
70 | fKeyPos = v.fKeyPos; | |
71 | fKeyNeg = v.fKeyNeg; | |
72 | ||
73 | fTpcHitsPos = v.fTpcHitsPos; | |
74 | fTpcHitsNeg = v.fTpcHitsNeg; | |
75 | ||
76 | fChi2V0 = v.fChi2V0; | |
77 | fClV0 = v.fClV0; | |
78 | fChi2Pos = v.fChi2Pos; | |
79 | fClPos = v.fClPos; | |
80 | fChi2Neg = v.fChi2Neg; | |
81 | fClNeg = v.fClNeg; | |
82 | fDedxPos = v.fDedxPos; | |
83 | fErrDedxPos = v.fErrDedxPos;//Gael 04Fev2002 | |
84 | fLenDedxPos = v.fLenDedxPos;//Gael 04Fev2002 | |
85 | fDedxNeg = v.fDedxNeg; | |
86 | fErrDedxNeg = v.fErrDedxNeg;//Gael 04Fev2002 | |
87 | fLenDedxNeg = v.fLenDedxNeg;//Gael 04Fev2002 | |
88 | ||
89 | fNufDedxPos = v.fNufDedxPos; | |
90 | fNufDedxNeg = v.fNufDedxNeg; | |
91 | ||
92 | fHelixPos = v.fHelixPos;// Gael 12 Sept | |
93 | fHelixNeg = v.fHelixNeg;// Gael 12 Sept | |
94 | fHiddenInfo = v.fHiddenInfo? v.fHiddenInfo->clone() : 0;// GR 11 DEC 02 | |
95 | UpdateV0(); | |
96 | } | |
0215f606 | 97 | AliFemtoV0& AliFemtoV0::operator=(const AliFemtoV0& aV0) |
98 | { | |
99 | if (this == &aV0) | |
100 | return *this; | |
101 | fDecayLengthV0 = aV0.fDecayLengthV0; | |
102 | fDecayVertexV0 = aV0.fDecayVertexV0; | |
103 | fDcaV0Daughters = aV0.fDcaV0Daughters; | |
104 | fDcaV0ToPrimVertex = aV0.fDcaV0ToPrimVertex; | |
105 | fDcaPosToPrimVertex = aV0.fDcaPosToPrimVertex; | |
106 | fDcaNegToPrimVertex = aV0.fDcaNegToPrimVertex; | |
107 | fMomPos = aV0.fMomPos; | |
108 | fMomNeg = aV0.fMomNeg; | |
109 | ||
110 | fTrackTopologyMapPos[0] = aV0.fTrackTopologyMapPos[0]; | |
111 | fTrackTopologyMapPos[1] = aV0.fTrackTopologyMapPos[1]; | |
112 | fTrackTopologyMapNeg[0] = aV0.fTrackTopologyMapNeg[0]; | |
113 | fTrackTopologyMapNeg[1] = aV0.fTrackTopologyMapNeg[1]; | |
114 | ||
115 | fKeyPos = aV0.fKeyPos; | |
116 | fKeyNeg = aV0.fKeyNeg; | |
117 | ||
118 | fTpcHitsPos = aV0.fTpcHitsPos; | |
119 | fTpcHitsNeg = aV0.fTpcHitsNeg; | |
120 | ||
121 | fChi2V0 = aV0.fChi2V0; | |
122 | fClV0 = aV0.fClV0; | |
123 | fChi2Pos = aV0.fChi2Pos; | |
124 | fClPos = aV0.fClPos; | |
125 | fChi2Neg = aV0.fChi2Neg; | |
126 | fClNeg = aV0.fClNeg; | |
127 | fDedxPos = aV0.fDedxPos; | |
128 | fErrDedxPos = aV0.fErrDedxPos;//Gael 04Fev2002 | |
129 | fLenDedxPos = aV0.fLenDedxPos;//Gael 04Fev2002 | |
130 | fDedxNeg = aV0.fDedxNeg; | |
131 | fErrDedxNeg = aV0.fErrDedxNeg;//Gael 04Fev2002 | |
132 | fLenDedxNeg = aV0.fLenDedxNeg;//Gael 04Fev2002 | |
133 | ||
134 | fNufDedxPos = aV0.fNufDedxPos; | |
135 | fNufDedxNeg = aV0.fNufDedxNeg; | |
136 | ||
137 | fHelixPos = aV0.fHelixPos;// Gael 12 Sept | |
138 | fHelixNeg = aV0.fHelixNeg;// Gael 12 Sept | |
139 | if (fHiddenInfo) delete fHiddenInfo; | |
140 | fHiddenInfo = aV0.fHiddenInfo? aV0.fHiddenInfo->clone() : 0;// GR 11 DEC 02 | |
141 | UpdateV0(); | |
142 | ||
143 | return *this; | |
144 | } | |
145 | ||
67427ff7 | 146 | // ----------------------------------------------------------------------- |
147 | void AliFemtoV0::UpdateV0(){ | |
148 | //Calc. derived memebers of the v0 class | |
149 | float MomNegAlongV0, MomPosAlongV0; | |
150 | ||
151 | fMomV0 = fMomPos + fMomNeg; | |
152 | fPtV0 = fMomV0.perp(); | |
153 | fPtotV0 = fMomV0.mag(); | |
154 | fPtPos = fMomPos.perp(); | |
155 | fPtotPos= fMomPos.mag(); | |
156 | fPtNeg = fMomNeg.perp(); | |
157 | fPtotNeg= fMomNeg.mag(); | |
158 | fELambda= ::sqrt(fPtotV0*fPtotV0+M_LAMBDA*M_LAMBDA); | |
159 | fEK0Short= ::sqrt(fPtotV0*fPtotV0+M_KAON_0_SHORT*M_KAON_0_SHORT); | |
160 | fEPosProton = ::sqrt(fPtotPos*fPtotPos+M_PROTON*M_PROTON); | |
161 | fENegProton = ::sqrt(fPtotNeg*fPtotNeg+M_PROTON*M_PROTON); | |
162 | fEPosPion = ::sqrt(fPtotPos*fPtotPos+M_PION_PLUS*M_PION_PLUS); | |
163 | fENegPion = ::sqrt(fPtotNeg*fPtotNeg+M_PION_MINUS*M_PION_MINUS); | |
164 | ||
165 | MomNegAlongV0 = fMomNeg*fMomV0 / ::sqrt(::pow(fPtotV0,2)); | |
166 | MomPosAlongV0 = fMomPos*fMomV0 / ::sqrt(::pow(fPtotV0,2)); | |
167 | ||
168 | fAlphaV0 = (MomPosAlongV0-MomNegAlongV0)/(MomPosAlongV0+MomNegAlongV0); | |
169 | fPtArmV0 = ::sqrt(fPtotPos*fPtotPos - MomPosAlongV0*MomPosAlongV0); | |
170 | fMassLambda = ::sqrt(::pow(fEPosProton+fENegPion,2)-::pow(fPtotV0,2)); | |
171 | fMassAntiLambda = ::sqrt(::pow(fENegProton+fEPosPion,2)-::pow(fPtotV0,2)); | |
172 | fMassK0Short = ::sqrt(::pow(fENegPion+fEPosPion,2)-::pow(fPtotV0,2)); | |
173 | ||
174 | fRapLambda = 0.5*::log( (fELambda+fMomV0.z()) / (fELambda-fMomV0.z()) ); | |
175 | fCTauLambda = M_LAMBDA*(fDecayLengthV0) / ::sqrt( ::pow((double)fMomV0.mag(),2.) ); | |
176 | ||
177 | fRapK0Short = 0.5*::log( (fEK0Short+fMomV0.z()) / (fEK0Short-fMomV0.z()) ); | |
178 | fCTauK0Short = M_KAON_0_SHORT*(fDecayLengthV0) / ::sqrt( ::pow((double)fMomV0.mag(),2.) ); | |
179 | ||
180 | } | |
181 | // ----------------------------------------------------------------------- | |
182 | #ifndef __NO_STAR_DEPENDENCE_ALLOWED__ | |
183 | #ifdef __ROOT__ | |
184 | #include "StStrangeMuDstMaker/StV0MuDst.h" | |
185 | AliFemtoV0::AliFemtoV0( StV0MuDst& v){ // from strangess micro dst structure | |
186 | fDecayLengthV0 = v.decayLengthV0(); | |
187 | fDecayVertexV0 = AliFemtoThreeVector( v.decayVertexV0X(), v.decayVertexV0Y(), v.decayVertexV0Z() ); | |
188 | fDcaV0Daughters = v.dcaV0Daughters(); | |
189 | fDcaV0ToPrimVertex = v.dcaV0ToPrimVertex(); | |
190 | fDcaPosToPrimVertex = v.dcaPosToPrimVertex(); | |
191 | fDcaNegToPrimVertex = v.dcaNegToPrimVertex(); | |
192 | fMomPos = AliFemtoThreeVector( v.momPosX(), v.momPosY(), v.momPosZ() ); | |
193 | fMomNeg = AliFemtoThreeVector( v.momNegX(), v.momNegY(), v.momNegZ() ); | |
194 | #ifdef STHBTDEBUG | |
195 | cout << " hist pos "; | |
196 | cout << v.topologyMapPos().numberOfHits(kTpcId); | |
197 | cout << " hist neg "; | |
198 | cout << v.topologyMapNeg().numberOfHits(kTpcId) << endl; | |
199 | #endif | |
200 | fTpcHitsPos = ( v.topologyMapPos().numberOfHits(kTpcId) ); | |
201 | fTpcHitsNeg = ( v.topologyMapNeg().numberOfHits(kTpcId) ); | |
202 | fTrackTopologyMapPos[0] = ( v.topologyMapPos().data(0) ); | |
203 | fTrackTopologyMapPos[1] = ( v.topologyMapPos().data(1) ); | |
204 | fTrackTopologyMapNeg[0] = ( v.topologyMapNeg().data(0) ); | |
205 | fTrackTopologyMapNeg[1] = ( v.topologyMapNeg().data(1) ); | |
206 | fKeyPos = v.keyPos(); | |
207 | fKeyNeg = v.keyNeg(); | |
208 | fChi2V0 = v.chi2V0(); | |
209 | fClV0 = v.clV0(); | |
210 | fChi2Pos = v.chi2Pos(); | |
211 | fClPos = v.clPos(); | |
212 | fChi2Neg = v.chi2Neg(); | |
213 | fClNeg = v.clNeg(); | |
214 | fDedxPos = v.dedxPos(); | |
215 | fErrDedxPos = v.errDedxPos();//Gael 04Fev2002 | |
216 | fLenDedxPos = v.lenDedxPos();//Gael 04Fev2002 | |
217 | fDedxNeg = v.dedxNeg(); | |
218 | fErrDedxNeg = v.errDedxNeg();//Gael 04Fev2002 | |
219 | fLenDedxNeg = v.lenDedxNeg();//Gael 04Fev2002 | |
220 | fNufDedxPos = v.nufDedxPos(); | |
221 | fNufDedxNeg = v.nufDedxNeg(); | |
222 | fHiddenInfo = 0;//GR 11 DEC 02 | |
223 | ||
224 | #ifdef STHBTDEBUG | |
225 | cout << " keyPos " << v.keyPos() << endl; | |
226 | cout << " keyNeg " << v.keyNeg() << endl; | |
227 | #endif | |
228 | fMomV0 = AliFemtoThreeVector( v.momV0X(), v.momV0Y(), v.momV0Z() ); | |
229 | #ifdef STHBTDEBUG | |
230 | cout << " alpha "; | |
231 | cout << v.alphaV0(); | |
232 | cout << " ptArm "; | |
233 | cout << v.ptArmV0() << endl; | |
234 | #endif | |
235 | fAlphaV0 = v.alphaV0(); | |
236 | fPtArmV0 = v.ptArmV0(); | |
237 | fELambda = v.eLambda(); | |
238 | fEK0Short = v.eK0Short(); | |
239 | fEPosProton = v.ePosProton(); | |
240 | fEPosPion = v.ePosPion(); | |
241 | fENegPion = v.eNegPion(); | |
242 | fENegProton = v.eNegProton(); | |
243 | fMassLambda = v.massLambda(); | |
244 | fMassAntiLambda = v.massAntiLambda(); | |
245 | fMassK0Short = v.massK0Short(); | |
246 | fRapLambda = v.rapLambda(); | |
247 | fRapK0Short = v.rapK0Short(); | |
248 | fCTauLambda = v.cTauLambda(); | |
249 | fCTauK0Short = v.cTauK0Short(); | |
250 | fPtV0 = v.ptV0(); | |
251 | fPtotV0 = v.ptotV0(); | |
252 | fPtPos = v.ptPos(); | |
253 | fPtotPos = v.ptotPos(); | |
254 | fDedxPos = v.dedxPos(); | |
255 | fPtNeg = v.ptNeg(); | |
256 | fPtotNeg = v.ptotNeg(); | |
257 | fDedxNeg = v.dedxNeg(); | |
258 | } | |
259 | #endif // __ROOT__ | |
260 | #endif // __NO_STAR_DEPENDENCE_ALLOWED__ | |
261 | ||
262 | ||
263 | ||
264 | void AliFemtoV0::SetHelixPos(const AliFmPhysicalHelixD& h){fHelixPos = h;}// Gael 12 Sept 02 | |
265 | const AliFmPhysicalHelixD& AliFemtoV0::HelixPos() const {return fHelixPos;}// Gael 12 Sept 02 | |
266 | void AliFemtoV0::SetHelixNeg(const AliFmPhysicalHelixD& h){fHelixNeg = h;}// Gael 12 Sept 02 | |
267 | const AliFmPhysicalHelixD& AliFemtoV0::HelixNeg() const {return fHelixNeg;}// Gael 12 Sept 02 | |
268 | ||
269 | void AliFemtoV0::SetHiddenInfo(AliFemtoHiddenInfo* aHiddenInfo) {fHiddenInfo=aHiddenInfo;} | |
270 | bool AliFemtoV0::ValidHiddenInfo() const { if (fHiddenInfo) return true; else return false; } | |
271 | AliFemtoHiddenInfo* AliFemtoV0::getHiddenInfo() const {return fHiddenInfo;} | |
272 |