]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG2/FEMTOSCOPY/AliFemto/Infrastructure/AliFemtoV0.cxx
Fixing Effective C++ warnings
[u/mrichter/AliRoot.git] / PWG2 / FEMTOSCOPY / AliFemto / Infrastructure / AliFemtoV0.cxx
1 #include "AliFemtoV0.h"
2 #include "phys_constants.h"
3
4 // -----------------------------------------------------------------------
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
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 }
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
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