Use root-config to check for existence of XML extension library, and
[u/mrichter/AliRoot.git] / TPC / AliTPCPid.cxx
CommitLineData
733304f0 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
88cb7938 16/* $Id$ */
733304f0 17
b8def77a 18#include "AliTPCPid.h"
19#include "TMath.h"
ad350af6 20//#include <TVector.h>
21#include <TF1.h>
22#include <TClonesArray.h>
b8def77a 23//#include "AliITSIOTrack.h"
c300c64c 24#include "AliKalmanTrack.h"
16a5b018 25#include "Riostream.h"
b8def77a 26ClassImp(AliTPCPid)
27// Correction 13.01.2003 Z.S.,Dubna
28// 22.01.2003
29//------------------------------------------------------------
ad350af6 30// pid class by B. Batyunya
31// stupid corrections by M.K.
32//
179c6296 33//_______________________________________________________
ad350af6 34//________________________________________________________
179c6296 35AliTPCPid::AliTPCPid( const AliTPCPid& r):TObject(r),
36 fCutKa(0),
37 fCutPr(0),
38 fCutKaTune(0.),
39 fCutPrTune(0.),
40 fSigmin(0.),
41 fSilent(0),
42 fmxtrs(0),
43 trs(0),
44 fqtot(0.),
45 fWpi(0.),
46 fWk(0.),
47 fWp(0.),
48 fRpik(0.),
49 fRppi(0.),
50 fRpka(0.),
51 fRp(0.),
52 fPcode(0)
b8def77a 53{
ad350af6 54 // dummy copy constructor
55}
56Float_t AliTPCPid::Qcorr(Float_t xc)
57{
58 //
59 // charge correction
60 //
b8def77a 61 assert(0);
62 Float_t fcorr;
63 fcorr=( 0.766 +0.9692*xc -1.267*xc*xc )*( 1.-TMath::Exp(-xc*64.75) );
64 if(fcorr<=0.1)fcorr=0.1;
ad350af6 65return fqtot/fcorr;
b8def77a 66}
179c6296 67//__________________________________________________________
68AliTPCPid & AliTPCPid::operator =(const AliTPCPid & param)
69{
70 //
71 // assignment operator - dummy
72 //
73 fSigmin=param.fSigmin;
74 return (*this);
75}
b8def77a 76//-----------------------------------------------------------
ad350af6 77Float_t AliTPCPid::Qtrm(Int_t track) const
b8def77a 78{
ad350af6 79 //
80 // dummy comment (Boris!!!)
81 //
b8def77a 82 TVector q(*( this->GetVec(track) ));
83 Int_t ml=(Int_t)q(0);
84 if(ml<1)return 0.;
85 if(ml>6)ml=6;
86 float vf[6];
87 Int_t nl=0; for(Int_t i=0;i<ml;i++){if(q(i)>fSigmin){vf[nl]=q(i+1);nl++;}}
88 if(nl==0)return 0.;
89 switch(nl){
90 case 1:q(6)=q(1); break;
91 case 2:q(6)=(q(1)+q(2))/2.; break;
92 default:
93 for(int fi=0;fi<2;fi++){
94 Int_t swap;
95 do{ swap=0; float qmin=vf[fi];
96 for(int j=fi+1;j<nl;j++)
97 if(qmin>vf[j]){qmin=vf[j];vf[j]=vf[fi];vf[fi]=qmin;swap=1;};
98 }while(swap==1);
99 }
100 q(6)= (vf[0]+vf[1])/2.;
101 break;
102 }
103 for(Int_t i=0;i<nl;i++){q(i+1)=vf[i];} this->SetVec(track,q);
104 return (q(6));
ad350af6 105}// --- End AliTPCPid::Qtrm ---
b8def77a 106
ad350af6 107Float_t AliTPCPid::Qtrm(Float_t qarr[6],Int_t narr)
b8def77a 108{
109 //..................
110 Float_t q[6],qm,qmin;
111 Int_t nl,ml;
112 if(narr>0&&narr<7){ml=narr;}else{return 0;};
113 nl=0; for(Int_t i=0;i<ml;i++){if(qarr[i]>fSigmin){q[nl]=qarr[i];nl++;}}
114 if(nl==0)return 0.;
115 switch(nl){
116 case 1:qm=q[0]; break;
117 case 2:qm=(q[0]+q[1])/2.; break;
118 default:
119 Int_t swap;
120 for(int fi=0;fi<2;fi++){
121 do{ swap=0; qmin=q[fi];
122 for(int j=fi+1;j<nl;j++)
123 if(qmin>q[j]){qmin=q[j];q[j]=q[fi];q[fi]=qmin;swap=1;};
124 }while(swap==1);
125 }
126 qm= (q[0]+q[1])/2.;
127 break;
128 }
129 return qm;
ad350af6 130}// --- End AliTPCPid::Qtrm ---
b8def77a 131
ad350af6 132Int_t AliTPCPid::Wpik(Int_t nc,Float_t q)
b8def77a 133{
ad350af6 134 //
135 // pi-k
136 //
b8def77a 137 Float_t qmpi,qmk,sigpi,sigk,dpi,dk,ppi,pk;
138 Float_t appi,apk;
ad350af6 139 qmpi =fcut[nc][1];
140 sigpi=fcut[nc][2];
141 qmk =fcut[nc][3];
142 sigk =fcut[nc][4];
143 appi = faprob[0][nc-5];
144 apk = faprob[1][nc-5];
b8def77a 145 if( !fSilent ){
146 cout<<"qmpi,sigpi,qmk,sigk="<<qmpi<<" "<<sigpi<<" "<<qmk<<" "<<sigk<<endl;
147 cout<<"appi,apk="<<appi<<","<<apk<<endl;
148 }
149 Float_t dqpi=(q-qmpi)/sigpi;
150 Float_t dqk =(q-qmk )/sigk;
9dec0e81 151 dpi =TMath::Abs(dqpi);
152 dk =TMath::Abs(dqk);
b8def77a 153 Double_t dn=appi*TMath::Gaus(q,qmpi,sigpi)+apk*TMath::Gaus(q,qmk,sigk);
154 if(dn>0.){
155 ppi=appi*TMath::Gaus(q,qmpi,sigpi)/dn;
156 pk = apk*TMath::Gaus(q,qmk, sigk )/dn;
ad350af6 157 }else{fWpi=1;return Pion();}
b8def77a 158 Float_t rpik=ppi/(pk+0.0000001);
159 if( !fSilent )
ad350af6 160 cout<<"q,dqpi,dqk, Wpik: ppi,pk,rpik="
b8def77a 161 <<q<<" "<<dqpi<<" "<<dqk<<" "<<ppi<<" "<<pk<<" "<<rpik<<endl;
162
163 fWp=0.; fWpi=ppi; fWk=pk;
ad350af6 164 if( pk>ppi){return Kaon();}else{return Pion();}
b8def77a 165}
166//-----------------------------------------------------------
ad350af6 167Int_t AliTPCPid::Wpikp(Int_t nc,Float_t q)
b8def77a 168{
ad350af6 169 //
170 // pi-k-p
171 //
b8def77a 172 Float_t qmpi,qmk,qmp,sigpi,sigk,sigp,ppi,pk,pp;
173 Float_t appi,apk,app;
174
ad350af6 175 qmpi =fcut[nc][1];
176 sigpi=fcut[nc][2];
177 qmk =fcut[nc][3];
178 sigk =fcut[nc][4];
179 qmp =fcut[nc][5];
180 sigp =fcut[nc][6];
b8def77a 181
182 //appi = apk = app = 1.;
ad350af6 183 appi = faprob[0][nc-5];
184 apk = faprob[1][nc-5];
185 app = faprob[2][nc-5];
b8def77a 186
187 Double_t dn= appi*TMath::Gaus(q,qmpi,sigpi)
188 +apk*TMath::Gaus(q,qmk,sigk)+app*TMath::Gaus(q,qmp,sigp);
189 if(dn>0.){
190 ppi=appi*TMath::Gaus(q,qmpi,sigpi)/dn;
191 pk = apk*TMath::Gaus(q,qmk, sigk )/dn;
192 pp = app*TMath::Gaus(q,qmp, sigp )/dn;
193 }
ad350af6 194 else{fWpi=1;return Pion();}
b8def77a 195 fWp=pp; fWpi=ppi; fWk=pk;
196 if( !fSilent ){
ad350af6 197cout<<" Wpikp: mid,sig pi,k,p="<<qmpi<<" "<<sigpi<<"; "<<qmk<<" "<<sigk<<"; "
b8def77a 198 <<qmp<<" "<<sigp<<"; "<<endl;
ad350af6 199cout<<" faprob: "<<appi<<" "<<apk<<" "<<app<<endl;
b8def77a 200cout<<" ppi,pk,pp="<<ppi<<" "<<pk<<" "<<pp<<endl;
201 }
ad350af6 202 if( ppi>pk&&ppi>pp ) { return Pion(); }
203 if(pk>pp){return Kaon();}else{return Proton();}
b8def77a 204}
205//-----------------------------------------------------------
ad350af6 206Int_t AliTPCPid::GetPcode(TClonesArray* /*rps*/,Float_t /*pm*/) const
b8def77a 207{
ad350af6 208 //
209 // dummy ???
210 //
b8def77a 211 return 0;
212}
213//-----------------------------------------------------------
214Int_t AliTPCPid::GetPcode(AliTPCtrack *track)
215{
ad350af6 216 //
217 // get particle code
218 //
b8def77a 219 Double_t xk,par[5]; track->GetExternalParameters(xk,par);
220 Float_t phi=TMath::ASin(par[2]) + track->GetAlpha();
221 if (phi<-TMath::Pi()) phi+=2*TMath::Pi();
222 if (phi>=TMath::Pi()) phi-=2*TMath::Pi();
223 Float_t lam=TMath::ATan(par[3]);
ad350af6 224 Float_t pt1=TMath::Abs(par[4]);
225 Float_t mom=1./(pt1*TMath::Cos(lam));
b8def77a 226 Float_t dedx=track->GetdEdx();
227 Int_t pcode=GetPcode(dedx/40.,mom);
228 cout<<"TPCtrack dedx,mom,pcode="<<dedx<<","<<mom<<","<<pcode<<endl;
229 return pcode?pcode:211;
230 }
c84a5e9e 231/*
b8def77a 232//-----------------------------------------------------------
c300c64c 233Int_t AliTPCPid::GetPcode(AliKalmanTrack *track)
b8def77a 234{
ad350af6 235 //
236 // get particle code
237 //
b8def77a 238 if(track==0)return 0;
239 // track->Propagate(track->GetAlpha(),3.,0.1/65.19*1.848,0.1*1.848);
240 track->PropagateTo(3.,0.0028,65.19);
241 track->PropagateToVertex();
242 Double_t xk,par[5]; track->GetExternalParameters(xk,par);
243 Float_t lam=TMath::ATan(par[3]);
ad350af6 244 Float_t pt1=TMath::Abs(par[4]);
b8def77a 245 Float_t mom=0.;
ad350af6 246 if( (pt1*TMath::Cos(lam))!=0. ){ mom=1./(pt1*TMath::Cos(lam)); }else{mom=0.;};
bbc6cd2c 247 Float_t dedx=track->GetPIDsignal();
ad350af6 248 cout<<"lam,pt1,mom,dedx="<<lam<<","<<pt1<<","<<mom<<","<<dedx<<endl;
b8def77a 249 Int_t pcode=GetPcode(dedx,mom);
250 cout<<"ITS V2 dedx,mom,pcode="<<dedx<<","<<mom<<","<<pcode<<endl;
251return pcode?pcode:211;
252}
c84a5e9e 253*/
b8def77a 254//-----------------------------------------------------------
255Int_t AliTPCPid::GetPcode(Float_t q,Float_t pm)
256{
ad350af6 257 //
258 // get particle code
259 //
b8def77a 260 fWpi=fWk=fWp=0.; fPcode=0;
261//1)---------------------- 0-120 MeV/c --------------
ad350af6 262 if ( pm<=fcut[1][0] )
263 { fWpi=1.; return Pion(); }
b8def77a 264//2)----------------------120-200 Mev/c ( 29.7.2002 ) -------------
ad350af6 265 if ( pm<=fcut[2][0] )
266 { if( q<fCutKa->Eval(pm) ){fWpi=1.; return Pion(); }
267 else {fWk =1.; return Kaon();} }
b8def77a 268//3)----------------------200-400 Mev/c -------------
ad350af6 269 if ( pm<=fcut[3][0] )
b8def77a 270 if( q<fCutKa->Eval(pm) )
ad350af6 271 { fWpi=1.;return Pion(); }
b8def77a 272 else
273 { if ( q<=fCutPr->Eval(pm) )
ad350af6 274 {fWk=1.;return Kaon();}
275 else {fWp=1.;return Proton();}
b8def77a 276 }
277//4)----------------------400-450 Mev/c -------------
ad350af6 278 if ( pm<=fcut[4][0] )
b8def77a 279 if( q<fCutKaTune*fCutKa->Eval(pm) )
ad350af6 280 { fWpi=1.;return Pion(); }
b8def77a 281 else
282 { if( q<fCutPr->Eval(pm) )
ad350af6 283 {fWk=1.;return Kaon();} else {fWp=1.;return Proton(); }
b8def77a 284 }
285//5)----------------------450-500 Mev/c -------------
ad350af6 286 if ( pm<=fcut[5][0] )
b8def77a 287 if ( q>fCutPr->Eval(pm) )
ad350af6 288 {fWp=1.;return Proton();} else {return Wpik(5,q);};
b8def77a 289//6)----------------------500-550 Mev/c -------------
ad350af6 290 if ( pm<=fcut[6][0] )
b8def77a 291 if ( q>fCutPr->Eval(pm) )
ad350af6 292 {fWp=1.;return Proton();} else {return Wpik(6,q);};
b8def77a 293//7)----------------------550-600 Mev/c -------------
ad350af6 294 if ( pm<=fcut[7][0] )
b8def77a 295 if ( q>fCutPr->Eval(pm) )
ad350af6 296 {fWp=1.;return Proton();} else {return Wpik(7,q);};
b8def77a 297//8)----------------------600-650 Mev/c -------------
ad350af6 298 if ( pm<=fcut[8][0] )
299 if ( q>fCutPrTune*fCutPr->Eval(pm) ){fWp=1.;return Proton();}
300 else {return Wpik(8,q);};
b8def77a 301//9)----------------------650-730 Mev/c -------------
ad350af6 302 if ( pm<=fcut[9][0] )
303 if ( q>fCutPrTune*fCutPr->Eval(pm) ){fWp=1.;return Proton();}
304 else {return Wpik(9,q);};
b8def77a 305//10)----------------------730-830 Mev/c -------------
ad350af6 306 if( pm<=fcut[10][0] )
307 if ( q>fCutPrTune*fCutPr->Eval(pm) ){fWp=1.;return Proton();}
308 else {return Wpik(10,q);};
b8def77a 309//11)----------------------830-930 Mev/c -------------
ad350af6 310 if( pm<=fcut[11][0] ){ return Wpikp(11,q); }
b8def77a 311//12)----------------------930-1030 Mev/c -------------
ad350af6 312 if( pm<=fcut[12][0] )
313 { return Wpikp(12,q); };
b8def77a 314
315 return fPcode;
316}
317//-----------------------------------------------------------
318void AliTPCPid::SetCut(Int_t n,Float_t pm,Float_t pilo,Float_t pihi,
319 Float_t klo,Float_t khi,Float_t plo,Float_t phi)
320{
ad350af6 321 //
322 // set cuts
323 //
324 fcut[n][0]=pm;
325 fcut[n][1]=pilo;
326 fcut[n][2]=pihi;
327 fcut[n][3]=klo;
328 fcut[n][4]=khi;
329 fcut[n][5]=plo;
330 fcut[n][6]=phi;
b8def77a 331 return ;
332}
333//------------------------------------------------------------
ad350af6 334void AliTPCPid::SetVec(Int_t ntrack,TVector info) const
b8def77a 335{
ad350af6 336 //
337 // new track vector
338 //
b8def77a 339TClonesArray& arr=*trs;
340 new( arr[ntrack] ) TVector(info);
341}
342//-----------------------------------------------------------
ad350af6 343TVector* AliTPCPid::GetVec(Int_t ntrack) const
b8def77a 344{
ad350af6 345 //
346 // get track vector
347 //
b8def77a 348TClonesArray& arr=*trs;
349 return (TVector*)arr[ntrack];
350}
351//-----------------------------------------------------------
352void AliTPCPid::SetEdep(Int_t track,Float_t Edep)
353{
ad350af6 354 //
355 // energy deposit
356 //
b8def77a 357 TVector xx(0,11);
358 if( ((TVector*)trs->At(track))->IsValid() )
359 {TVector yy( *((TVector*)trs->At(track)) );xx=yy; }
360 Int_t j=(Int_t)xx(0); if(j>4)return;
361 xx(++j)=Edep;xx(0)=j;
362 TClonesArray &arr=*trs;
363 new(arr[track])TVector(xx);
364}
365//-----------------------------------------------------------
366void AliTPCPid::SetPmom(Int_t track,Float_t Pmom)
367{
ad350af6 368 //
369 // set part. momentum
370 //
b8def77a 371 TVector xx(0,11);
372 if( ((TVector*)trs->At(track))->IsValid() )
373 {TVector yy( *((TVector*)trs->At(track)) );xx=yy; }
374 xx(10)=Pmom;
375 TClonesArray &arr=*trs;
376 new(arr[track])TVector(xx);
377}
378//-----------------------------------------------------------
379void AliTPCPid::SetPcod(Int_t track,Int_t partcode)
380{
ad350af6 381 //
382 // set part. code
383 //
b8def77a 384 TVector xx(0,11);
385 if( ((TVector*)trs->At(track))->IsValid() )
386 {TVector yy( *((TVector*)trs->At(track)) );xx=yy; }
387 if(xx(11)==0)
ad350af6 388 {xx(11)=partcode; fmxtrs++;
b8def77a 389 TClonesArray &arr=*trs;
390 new(arr[track])TVector(xx);
391 }
392}
393//-----------------------------------------------------------
7360a026 394void AliTPCPid::PrintPID(Int_t track)
ad350af6 395{
396 //
397 // control print
398 //
399cout<<fmxtrs<<" tracks in AliITSPid obj."<<endl;
b8def77a 400 if( ((TVector*)trs->At(track))->IsValid() )
401 {TVector xx( *((TVector*)trs->At(track)) );
402 xx.Print();
403 }
404 else
405 {cout<<"No data for track "<<track<<endl;return;}
406}
407//-----------------------------------------------------------
408void AliTPCPid::Tab(void)
409{
ad350af6 410 //
411 // fill table
412 //
b8def77a 413if(trs->GetEntries()==0){cout<<"No entries in TAB"<<endl;return;}
414cout<<"------------------------------------------------------------------------"<<endl;
415cout<<"Nq"<<" q1 "<<" q2 "<<" q3 "<<" q4 "<<" q5 "<<
416 " Qtrm " <<" Wpi "<<" Wk "<<" Wp "<<"Pmom "<<endl;
417cout<<"------------------------------------------------------------------------"<<endl;
418for(Int_t i=0;i<trs->GetEntries();i++)
419{
420 TVector xx( *((TVector*)trs->At(i)) );
421 if( xx.IsValid() && xx(0)>0 )
422 {
423 TVector xx( *((TVector*)trs->At(i)) );
424 if(xx(0)>=2)
425 {
426// 1)Calculate Qtrm
ad350af6 427 xx(6)=(this->Qtrm(i));
b8def77a 428
429 }else{
430 xx(6)=xx(1);
431 }
432// 2)Calculate Wpi,Wk,Wp
433 this->GetPcode(xx(6),xx(10)/1000.);
434 xx(7)=GetWpi();
435 xx(8)=GetWk();
436 xx(9)=GetWp();
437// 3)Print table
438 if(xx(0)>0){
439 cout<<xx(0)<<" ";
440 for(Int_t j=1;j<11;j++){
441 cout.width(7);cout.precision(5);cout<<xx(j);
442 }
443 cout<<endl;
444 }
445// 4)Update data in TVector
446 TClonesArray &arr=*trs;
447 new(arr[i])TVector(xx);
448 }
449 else
450 {/*cout<<"No data for track "<<i<<endl;*/}
451}// End loop for tracks
452}
453void AliTPCPid::Reset(void)
454{
ad350af6 455 //
456 // reset
457 //
b8def77a 458 for(Int_t i=0;i<trs->GetEntries();i++){
459 TVector xx(0,11);
460 TClonesArray &arr=*trs;
461 new(arr[i])TVector(xx);
462 }
463}
464//-----------------------------------------------------------
179c6296 465AliTPCPid::AliTPCPid(Int_t ntrack):TObject(),
466 fCutKa(0),
467 fCutPr(0),
468 fCutKaTune(0.),
469 fCutPrTune(0.),
470 fSigmin(0.),
471 fSilent(0),
472 fmxtrs(0),
473 trs(0),
474 fqtot(0.),
475 fWpi(0.),
476 fWk(0.),
477 fWp(0.),
478 fRpik(0.),
479 fRppi(0.),
480 fRpka(0.),
481 fRp(0.),
482 fPcode(0)
b8def77a 483{
484 trs = new TClonesArray("TVector",ntrack);
485 TClonesArray &arr=*trs;
486 for(Int_t i=0;i<ntrack;i++)new(arr[i])TVector(0,11);
179c6296 487
b8def77a 488
489 //fCutKa = new TF1("fkaons","[0]/x/x+[1]",0.1,1.2);
490 //fCutPr = new TF1("fprotons","[0]/x/x +[1]",0.2,1.2);
ad350af6 491 TF1 *frmska=0;
176aff27 492
ad350af6 493 frmska = new TF1("x_frmska","1.46-7.82*x+16.78*x^2-15.53*x^3+5.24*x^4 ",
b8def77a 494 0.1,1.2);
495 fCutKa = new TF1("fkaons",
496 "1.25+0.044/x/x+1.25+0.044*x-13.87*x^2+22.37*x^3-10.05*x^4-2.5*x_frmska",
497 0.1,1.2);
498 fCutPr = new TF1("fprotons",
499 "0.83*(15.32-56.094*x+89.962*x^2-66.1856*x^3+18.4052*x^4)",
500 0.2,1.2);
501 fCutKaTune=1.1; // 0.92;
502 fCutPrTune=1.0; //0.80;
503
ad350af6 504const int kinf=10;
b8def77a 505// Ncut Pmom pilo pihi klo khi plo phi
ad350af6 506// fcut[j] [0] [1] [2] [3] [4] [5] [6]
b8def77a 507//----------------------------------------------------------------
ad350af6 508 SetCut( 1, 0.120, 0. , 0. , kinf , kinf , kinf , kinf );
509 SetCut( 2, 0.200, 0. , 6.0 , 6.0 , kinf , kinf , kinf ); //120-200
510 SetCut( 3, 0.400, 0. , 3.5 , 3.5 , 9.0 , 9.0 , kinf ); //200-400
511 SetCut( 4, 0.450, 0. , 1.9 , 1.9 , 4.0 , 4.0 , kinf ); //400-450
b8def77a 512//----------------------------------------------------------------
ad350af6 513 SetCut( 5, 0.500, 0.976, 0.108, 1.484 , 0.159 , 3.5 , kinf ); //450-500
514 SetCut( 6, 0.550, 0.979, 0.108, 1.376 , 0.145 , 3.0 , kinf ); //500-550
b8def77a 515//----------------------------------------------------------------
ad350af6 516 SetCut( 7, 0.600, 0.984, 0.111, 1.295 , 0.146 , 2.7 , kinf ); //550-600
517 SetCut( 8, 0.650, 0.989, 0.113, 1.239 , 0.141 , 2.5 , kinf ); //600-650
518 SetCut( 9, 0.730, 0.995, 0.109, 1.172 , 0.132 , 2.0 , kinf ); //650-730
b8def77a 519//----------------------------------------------------------------
520 SetCut( 10, 0.830, 1.008, 0.116, 1.117 , 0.134 , 1.703, 0.209 ); //730-830
521 SetCut( 11, 0.930, 1.019, 0.115, 1.072 , 0.121 , 1.535, 0.215 ); //830-930
522 SetCut( 12, 1.230, 1.035, 0.117, 1.053 , 0.140 ,1.426, 0.270); //930-1030
523 //------------------------ pi,K ---------------------
ad350af6 524 faprob[0][0]=33219.; faprob[1][0]=1971.; // faprob[0][i] - pions
525 faprob[0][1]=28828.; faprob[1][1]=1973.; // faprob[1][i] - kaons
b8def77a 526 //---------------------------------------------------
ad350af6 527 faprob[0][2]=24532.; faprob[1][2]=1932.; faprob[2][2]=1948.;
528 faprob[0][3]=20797.; faprob[1][3]=1823.; faprob[2][3]=1970.;
529 faprob[0][4]=27017.; faprob[1][4]=2681.; faprob[2][4]=2905.;
b8def77a 530 //------------------------ pi,K,p -------------------
ad350af6 531 faprob[0][5]= 24563.; faprob[1][5]=2816.; faprob[2][5]=3219.;
532 faprob[0][6]= 16877.; faprob[1][6]=2231.; faprob[2][6]=2746.;
533 faprob[0][7]= 11557.; faprob[1][7]=1681; faprob[2][7]=2190.;
b8def77a 534
535 fSilent=kTRUE;
536}
537//-----------------------------------------------------------
538
539
540