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