From 2924941cbb31f06181c628ca2a173cc0e4e0f482 Mon Sep 17 00:00:00 2001 From: schutz Date: Mon, 11 Apr 2005 12:36:46 +0000 Subject: [PATCH] Parameters to calculate the particle probability distribution functions have been tuned better --- PHOS/AliPHOSPIDv1.cxx | 355 +++++++++++++++++++++++------------------- PHOS/AliPHOSPIDv1.h | 77 +++++---- 2 files changed, 232 insertions(+), 200 deletions(-) diff --git a/PHOS/AliPHOSPIDv1.cxx b/PHOS/AliPHOSPIDv1.cxx index 1d1ccfc700a..ffe8b275ab5 100644 --- a/PHOS/AliPHOSPIDv1.cxx +++ b/PHOS/AliPHOSPIDv1.cxx @@ -180,54 +180,74 @@ void AliPHOSPIDv1::InitParameters() // initialisation of response function parameters // Tof + +// // Photons +// fTphoton[0] = 0.218 ; +// fTphoton[1] = 1.55E-8 ; +// fTphoton[2] = 5.05E-10 ; +// fTFphoton = new TFormula("ToF response to photons" , "gaus") ; +// fTFphoton->SetParameters( fTphoton[0], fTphoton[1], fTphoton[2]) ; + +// // Pions +// //Gaus (0 to max probability) +// fTpiong[0] = 0.0971 ; +// fTpiong[1] = 1.58E-8 ; +// fTpiong[2] = 5.69E-10 ; +// fTFpiong = new TFormula("ToF response to pions" , "gaus") ; +// fTFpiong->SetParameters( fTpiong[0], fTpiong[1], fTpiong[2]) ; + +// // Kaons +// //Gaus (0 to max probability) +// fTkaong[0] = 0.0542 ; +// fTkaong[1] = 1.64E-8 ; +// fTkaong[2] = 6.07E-10 ; +// fTFkaong = new TFormula("ToF response to kaon" , "gaus") ; +// fTFkaong->SetParameters( fTkaong[0], fTkaong[1], fTkaong[2]) ; +// //Landau (max probability to inf) +// fTkaonl[0] = 0.264 ; +// fTkaonl[1] = 1.68E-8 ; +// fTkaonl[2] = 4.10E-10 ; +// fTFkaonl = new TFormula("ToF response to kaon" , "landau") ; +// fTFkaonl->SetParameters( fTkaonl[0], fTkaonl[1], fTkaonl[2]) ; + +// //Heavy Hadrons +// //Gaus (0 to max probability) +// fThhadrong[0] = 0.0302 ; +// fThhadrong[1] = 1.73E-8 ; +// fThhadrong[2] = 9.52E-10 ; +// fTFhhadrong = new TFormula("ToF response to heavy hadrons" , "gaus") ; +// fTFhhadrong->SetParameters( fThhadrong[0], fThhadrong[1], fThhadrong[2]) ; +// //Landau (max probability to inf) +// fThhadronl[0] = 0.139 ; +// fThhadronl[1] = 1.745E-8 ; +// fThhadronl[2] = 1.00E-9 ; +// fTFhhadronl = new TFormula("ToF response to heavy hadrons" , "landau") ; +// fTFhhadronl->SetParameters( fThhadronl[0], fThhadronl[1], fThhadronl[2]) ; + // Photons - fTphoton[0] = 0.218 ; - //fTphoton[0] = 1. ; + fTphoton[0] = 7.83E8 ; fTphoton[1] = 1.55E-8 ; - fTphoton[2] = 5.05E-10 ; + fTphoton[2] = 5.09E-10 ; fTFphoton = new TFormula("ToF response to photons" , "gaus") ; fTFphoton->SetParameters( fTphoton[0], fTphoton[1], fTphoton[2]) ; -// // Electrons -// fTelectron[0] = 0.2 ; -// fTelectron[1] = 1.55E-8 ; -// fTelectron[2] = 5.35E-10 ; -// fTFelectron = new TFormula("ToF response to electrons" , "gaus") ; -// fTFelectron->SetParameters( fTelectron[0], fTelectron[1], fTelectron[2]) ; -// // Muons -// fTmuon[0] = 0.2 ; -// fTmuon[1] = 1.55E-8 ; -// fTmuon[2] = 5.1E-10 ; -// fTFmuon = new TFormula("ToF response to muons" , "gaus") ; -// fTFmuon->SetParameters( fTmuon[0], fTmuon[1], fTmuon[2]) ; // Pions //Gaus (0 to max probability) - fTpiong[0] = 0.0971 ; - //fTpiong[0] = 1. ; + fTpiong[0] = 6.73E8 ; fTpiong[1] = 1.58E-8 ; - fTpiong[2] = 5.69E-10 ; + fTpiong[2] = 5.87E-10 ; fTFpiong = new TFormula("ToF response to pions" , "gaus") ; fTFpiong->SetParameters( fTpiong[0], fTpiong[1], fTpiong[2]) ; - // Landau (max probability to inf) -// fTpionl[0] = 0.05 ; -// //fTpionl[0] = 5.53 ; -// fTpionl[1] = 1.68E-8 ; -// fTpionl[2] = 5.38E-10 ; -// fTFpionl = new TFormula("ToF response to pions" , "landau") ; -// fTFpionl->SetParameters( fTpionl[0], fTpionl[1], fTpionl[2]) ; - // Kaons //Gaus (0 to max probability) - fTkaong[0] = 0.0542 ; - //fTkaong[0] = 1. ; + fTkaong[0] = 3.93E8 ; fTkaong[1] = 1.64E-8 ; - fTkaong[2] = 6.07-10 ; + fTkaong[2] = 6.07E-10 ; fTFkaong = new TFormula("ToF response to kaon" , "gaus") ; fTFkaong->SetParameters( fTkaong[0], fTkaong[1], fTkaong[2]) ; //Landau (max probability to inf) - fTkaonl[0] = 0.264 ; - //fTkaonl[0] = 5.53 ; + fTkaonl[0] = 2.0E9 ; fTkaonl[1] = 1.68E-8 ; fTkaonl[2] = 4.10E-10 ; fTFkaonl = new TFormula("ToF response to kaon" , "landau") ; @@ -235,65 +255,52 @@ void AliPHOSPIDv1::InitParameters() //Heavy Hadrons //Gaus (0 to max probability) - fThhadrong[0] = 0.0302 ; - //fThhadrong[0] = 1. ; + fThhadrong[0] = 2.02E8 ; fThhadrong[1] = 1.73E-8 ; fThhadrong[2] = 9.52E-10 ; fTFhhadrong = new TFormula("ToF response to heavy hadrons" , "gaus") ; fTFhhadrong->SetParameters( fThhadrong[0], fThhadrong[1], fThhadrong[2]) ; //Landau (max probability to inf) - fThhadronl[0] = 0.139 ; - //fThhadronl[0] = 5.53 ; - fThhadronl[1] = 1.745E-8 ; - fThhadronl[2] = 1.00E-9 ; + fThhadronl[0] = 1.10E9 ; + fThhadronl[1] = 1.74E-8 ; + fThhadronl[2] = 1.00E-9 ; fTFhhadronl = new TFormula("ToF response to heavy hadrons" , "landau") ; fTFhhadronl->SetParameters( fThhadronl[0], fThhadronl[1], fThhadronl[2]) ; -/// /gaussian parametrization for pions -// fTpion[0] = 3.93E-2 ; fTpion[1] = 0.130 ; fTpion[2] =-6.37E-2 ;//constant -// fTpion[3] = 1.65E-8 ; fTpion[4] =-1.40E-9 ; fTpion[5] = 5.96E-10;//mean -// fTpion[6] = 8.09E-10; fTpion[7] =-4.65E-10; fTpion[8] = 1.50E-10;//sigma - -// //landau parametrization for kaons -// fTkaon[0] = 0.107 ; fTkaon[1] = 0.166 ; fTkaon[2] = 0.243 ;//constant -// fTkaon[3] = 1.80E-8 ; fTkaon[4] =-2.96E-9 ; fTkaon[5] = 9.60E-10;//mean -// fTkaon[6] = 1.37E-9 ; fTkaon[7] =-1.80E-9 ; fTkaon[8] = 6.74E-10;//sigma - -// //landau parametrization for nucleons -// fThhadron[0] = 6.33E-2 ; fThhadron[1] = 2.52E-2 ; fThhadron[2] = 2.16E-2 ;//constant -// fThhadron[3] = 1.94E-8 ; fThhadron[4] =-7.06E-10; fThhadron[5] =-4.69E-10;//mean -// fThhadron[6] = 2.55E-9 ; fThhadron[7] =-1.90E-9 ; fThhadron[8] = 5.41E-10;//sigma // Shower shape: dispersion gaussian parameters // Photons - -// fDphoton[0] = 3.84e-2; fDphoton[1] = 4.46e-3 ; fDphoton[2] = -2.36e-2;//constant -// //fDphoton[0] = 1.0 ; fDphoton[1] = 0. ; fDphoton[2] = 0. ;//constant -// fDphoton[3] = 1.55 ; fDphoton[4] =-0.0863 ; fDphoton[5] = 0.287 ;//mean -// fDphoton[6] = 0.0451 ; fDphoton[7] =-0.0803 ; fDphoton[8] = 0.314 ;//sigma - - fDphoton[0] = 4.62e-2; fDphoton[1] = 1.39e-2 ; fDphoton[2] = -3.80e-2;//constant - //fDphoton[0] = 1.0 ; fDphoton[1] = 0. ; fDphoton[2] = 0. ;//constant - fDphoton[3] = 1.53 ; fDphoton[4] =-6.62e-2 ; fDphoton[5] = 0.339 ;//mean - fDphoton[6] = 6.89e-2; fDphoton[7] =-6.59e-2 ; fDphoton[8] = 0.194 ;//sigma - - fDpi0[0] = 0.0586 ; fDpi0[1] = 1.06E-3 ; fDpi0[2] = 0. ;//constant - //fDpi0[0] = 1.0 ; fDpi0[1] = 0.0 ; fDpi0[2] = 0. ;//constant - fDpi0[3] = 2.67 ; fDpi0[4] =-2.00E-2 ; fDpi0[5] = 9.37E-5 ;//mean - fDpi0[6] = 0.153 ; fDpi0[7] = 9.34E-4 ; fDpi0[8] =-1.49E-5 ;//sigma - //landau -// fDhadron[0] = 0.007 ; fDhadron[1] = 0. ; fDhadron[2] = 0. ;//constant -// //fDhadron[0] = 5.53 ; fDhadron[1] = 0. ; fDhadron[2] = 0. ;//constant -// fDhadron[3] = 3.38 ; fDhadron[4] = 0.0833 ; fDhadron[5] =-0.845 ;//mean -// fDhadron[6] = 0.627 ; fDhadron[7] = 0.012 ; fDhadron[8] =-0.170 ;//sigma - - fDhadron[0] = 1.61E-2 ; fDhadron[1] = 3.03E-3 ; fDhadron[2] = 1.01E-2 ;//constant - fDhadron[3] = 3.81 ; fDhadron[4] = 0.232 ; fDhadron[5] =-1.25 ;//mean - fDhadron[6] = 0.897 ; fDhadron[7] = 0.0987 ; fDhadron[8] =-0.534 ;//sigma - // Muons - fDmuon[0] = 0.0631 ; - fDmuon[1] = 1.4 ; + +// fDphoton[0] = 4.62e-2; fDphoton[1] = 1.39e-2 ; fDphoton[2] = -3.80e-2;//constant +// fDphoton[3] = 1.53 ; fDphoton[4] =-6.62e-2 ; fDphoton[5] = 0.339 ;//mean +// fDphoton[6] = 6.89e-2; fDphoton[7] =-6.59e-2 ; fDphoton[8] = 0.194 ;//sigma + +// fDpi0[0] = 0.0586 ; fDpi0[1] = 1.06E-3 ; fDpi0[2] = 0. ;//constant +// fDpi0[3] = 2.67 ; fDpi0[4] =-2.00E-2 ; fDpi0[5] = 9.37E-5 ;//mean +// fDpi0[6] = 0.153 ; fDpi0[7] = 9.34E-4 ; fDpi0[8] =-1.49E-5 ;//sigma + +// fDhadron[0] = 1.61E-2 ; fDhadron[1] = 3.03E-3 ; fDhadron[2] = 1.01E-2 ;//constant +// fDhadron[3] = 3.81 ; fDhadron[4] = 0.232 ; fDhadron[5] =-1.25 ;//mean +// fDhadron[6] = 0.897 ; fDhadron[7] = 0.0987 ; fDhadron[8] =-0.534 ;//sigma + + fDphoton[0] = 1.5 ; fDphoton[1] = 0.49 ; fDphoton[2] =-1.7E-2 ;//constant + fDphoton[3] = 1.5 ; fDphoton[4] = 4.0E-2 ; fDphoton[5] = 0.21 ;//mean + fDphoton[6] = 4.8E-2 ; fDphoton[7] =-0.12 ; fDphoton[8] = 0.27 ;//sigma + fDphoton[9] = 16.; //for E> fDphoton[9] parameters calculated at fDphoton[9] + + fDpi0[0] = 0.25 ; fDpi0[1] = 3.3E-2 ; fDpi0[2] =-1.0e-5 ;//constant + fDpi0[3] = 1.50 ; fDpi0[4] = 398. ; fDpi0[5] = 12. ;//mean + fDpi0[6] =-7.0E-2 ; fDpi0[7] =-524. ; fDpi0[8] = 22. ;//sigma + fDpi0[9] = 110.; //for E> fDpi0[9] parameters calculated at fDpi0[9] + + fDhadron[0] = 6.5 ; fDhadron[1] =-5.3 ; fDhadron[2] = 1.5 ;//constant + fDhadron[3] = 3.8 ; fDhadron[4] = 0.23 ; fDhadron[5] =-1.2 ;//mean + fDhadron[6] = 0.88 ; fDhadron[7] = 9.3E-2 ; fDhadron[8] =-0.51 ;//sigma + fDhadron[9] = 2.; //for E> fDhadron[9] parameters calculated at fDhadron[9] + + fDmuon[0] = 0.0631 ; + fDmuon[1] = 1.4 ; fDmuon[2] = 0.0557 ; fDFmuon = new TFormula("Shower shape response to muons" , "landau") ; fDFmuon->SetParameters( fDmuon[0], fDmuon[1], fDmuon[2]) ; @@ -301,31 +308,58 @@ void AliPHOSPIDv1::InitParameters() // x(CPV-EMC) distance gaussian parameters - fXelectron[0] = 8.06e-2 ; fXelectron[1] = 1.00e-2; fXelectron[2] =-5.14e-2;//constant - //fXelectron[0] = 1.0 ; fXelectron[1] = 0. ; fXelectron[2] = 0. ;//constant - fXelectron[3] = 0.202 ; fXelectron[4] = 8.15e-3; fXelectron[5] = 4.55 ;//mean - fXelectron[6] = 0.334 ; fXelectron[7] = 0.186 ; fXelectron[8] = 4.32e-2;//sigma +// fXelectron[0] = 8.06e-2 ; fXelectron[1] = 1.00e-2; fXelectron[2] =-5.14e-2;//constant +// fXelectron[3] = 0.202 ; fXelectron[4] = 8.15e-3; fXelectron[5] = 4.55 ;//mean +// fXelectron[6] = 0.334 ; fXelectron[7] = 0.186 ; fXelectron[8] = 4.32e-2;//sigma - //charged hadrons gaus - fXcharged[0] = 6.43e-3 ; fXcharged[1] =-4.19e-5; fXcharged[2] = 1.42e-3;//constant - fXcharged[3] = 2.75 ; fXcharged[4] =-0.40 ; fXcharged[5] = 1.68 ;//mean - fXcharged[6] = 3.135 ; fXcharged[7] =-9.41e-2; fXcharged[8] = 1.31e-2;//sigma +// //charged hadrons gaus +// fXcharged[0] = 6.43e-3 ; fXcharged[1] =-4.19e-5; fXcharged[2] = 1.42e-3;//constant +// fXcharged[3] = 2.75 ; fXcharged[4] =-0.40 ; fXcharged[5] = 1.68 ;//mean +// fXcharged[6] = 3.135 ; fXcharged[7] =-9.41e-2; fXcharged[8] = 1.31e-2;//sigma - // z(CPV-EMC) distance gaussian parameters +// // z(CPV-EMC) distance gaussian parameters + +// fZelectron[0] = 8.22e-2 ; fZelectron[1] = 5.11e-3; fZelectron[2] =-3.05e-2;//constant +// fZelectron[3] = 3.09e-2 ; fZelectron[4] = 5.87e-2; fZelectron[5] =-9.49e-2;//mean +// fZelectron[6] = 0.263 ; fZelectron[7] =-9.02e-3; fZelectron[8] = 0.151 ;//sigma - fZelectron[0] = 8.22e-2 ; fZelectron[1] = 5.11e-3; fZelectron[2] =-3.05e-2;//constant - //fZelectron[0] = 1.0 ; fZelectron[1] = 0. ; fZelectron[2] = 0. ;//constant - fZelectron[3] = 3.09e-2 ; fZelectron[4] = 5.87e-2; fZelectron[5] =-9.49e-2;//mean - fZelectron[6] = 0.263 ; fZelectron[7] =-9.02e-3; fZelectron[8] = 0.151 ;//sigma +// //charged hadrons gaus +// fZcharged[0] = 1.00e-2 ; fZcharged[1] = 2.82E-4 ; fZcharged[2] = 2.87E-3 ;//constant +// fZcharged[3] =-4.68e-2 ; fZcharged[4] =-9.21e-3 ; fZcharged[5] = 4.91e-2 ;//mean +// fZcharged[6] = 1.425 ; fZcharged[7] =-5.90e-2 ; fZcharged[8] = 5.07e-2 ;//sigma + + + fXelectron[0] =-1.6E-2 ; fXelectron[1] = 0.77 ; fXelectron[2] =-0.15 ;//constant + fXelectron[3] = 0.35 ; fXelectron[4] = 0.25 ; fXelectron[5] = 4.12 ;//mean + fXelectron[6] = 0.30 ; fXelectron[7] = 0.11 ; fXelectron[8] = 0.16 ;//sigma + fXelectron[9] = 3.; //for E> fXelectron[9] parameters calculated at fXelectron[9] + //charged hadrons gaus + fXcharged[0] = 0.14 ; fXcharged[1] =-3.0E-2 ; fXcharged[2] = 0 ;//constant + fXcharged[3] = 1.4 ; fXcharged[4] =-9.3E-2 ; fXcharged[5] = 1.4 ;//mean + fXcharged[6] = 5.7 ; fXcharged[7] = 0.27 ; fXcharged[8] =-1.8 ;//sigma + fXcharged[9] = 1.2; //for E> fXcharged[9] parameters calculated at fXcharged[9] + + // z(CPV-EMC) distance gaussian parameters - fZcharged[0] = 1.00e-2 ; fZcharged[1] = 2.82E-4 ; fZcharged[2] = 2.87E-3 ;//constant - fZcharged[3] =-4.68e-2 ; fZcharged[4] =-9.21e-3 ; fZcharged[5] = 4.91e-2 ;//mean - fZcharged[6] = 1.425 ; fZcharged[7] =-5.90e-2 ; fZcharged[8] = 5.07e-2 ;//sigma + fZelectron[0] = 0.49 ; fZelectron[1] = 0.53 ; fZelectron[2] =-9.8E-2 ;//constant + fZelectron[3] = 2.8E-2 ; fZelectron[4] = 5.0E-2 ; fZelectron[5] =-8.2E-2 ;//mean + fZelectron[6] = 0.25 ; fZelectron[7] =-1.7E-2 ; fZelectron[8] = 0.17 ;//sigma + fZelectron[9] = 3.; //for E> fZelectron[9] parameters calculated at fZelectron[9] + + //charged hadrons gaus + fZcharged[0] = 0.46 ; fZcharged[1] =-0.65 ; fZcharged[2] = 0.52 ;//constant + fZcharged[3] = 1.1E-2 ; fZcharged[4] = 0. ; fZcharged[5] = 0. ;//mean + fZcharged[6] = 0.60 ; fZcharged[7] =-8.2E-2 ; fZcharged[8] = 0.45 ;//sigma + fZcharged[9] = 1.2; //for E> fXcharged[9] parameters calculated at fXcharged[9] + //Threshold to differentiate between charged and neutral fChargedNeutralThreshold = 1e-5; + fTOFEnThreshold = 2; //Maximum energy to use TOF + fDispEnThreshold = 0.5; //Minimum energy to use shower shape + fDispMultThreshold = 3; //Minimum multiplicity to use shower shape //Weight to hadrons recontructed energy @@ -403,10 +437,18 @@ Double_t AliPHOSPIDv1::GausF(Double_t x, Double_t y, Double_t * par) //Given the energy x and the parameter y (tof, shower dispersion or cpv-emc distance), //this method returns a density probability of this parameter, given by a gaussian //function whose parameters depend with the energy with a function: a/(x*x)+b/x+b - Double_t cnt = par[1] / (x*x) + par[2] / x + par[0] ; + //Float_t xorg = x; + if (x > par[9]) x = par[9]; + + //Double_t cnt = par[1] / (x*x) + par[2] / x + par[0] ; + Double_t cnt = par[0] + par[1] * x + par[2] * x * x ; Double_t mean = par[4] / (x*x) + par[5] / x + par[3] ; Double_t sigma = par[7] / (x*x) + par[8] / x + par[6] ; +// if(xorg > 30) +// cout<<"En_in = "<= kMAXPARTICLES) -// AliError("Change size of MAXPARTICLES") ; -// Double_t stof[kSPECIES][kMAXPARTICLES] ; - - - // make the normalized distribution of pid for this event - // w(pid) in the Bayesian formulation -// for(index = 0 ; index < nparticles ; index ++) { - -// cout<<">>>>>>>>>>>>>>>Bayes Index "<EmcRecPoint(index) ; -// AliPHOSCpvRecPoint * cpv = AliPHOSGetter::Instance()->CpvRecPoint(index) ; - TObjArray * emcRecPoints = gime->EmcRecPoints() ; TObjArray * cpvRecPoints = gime->CpvRecPoints() ; TClonesArray * trackSegments = gime->TrackSegments() ; @@ -904,6 +928,7 @@ void AliPHOSPIDv1::MakePID() AliFatal(Form("-> emc(%d) = %d", ts->GetEmcIndex(), emc )) ; } + // ############Tof############################# // Info("MakePID", "TOF"); @@ -924,11 +949,9 @@ void AliPHOSPIDv1::MakePID() //We assing the same prob to neutral hadrons, sum is 1 stof[AliPID::kNeutron][index] = 1./2.; stof[AliPID::kKaon0][index] = 1./2.; - stof[AliPID::kMuon][index] = 1.; - - - if(en < 2.) { + + if(en < fTOFEnThreshold) { Double_t pTofPion = fTFpiong ->Eval(time) ; //gaus distribution Double_t pTofKaon = 0; @@ -981,7 +1004,7 @@ void AliPHOSPIDv1::MakePID() sdp[AliPID::kKaon0][index] = 1. ; sdp[AliPID::kMuon][index] = 1. ; - if(en > 0.5 && emc->GetMultiplicity() > 3){ + if(en > fDispEnThreshold && emc->GetMultiplicity() > fDispMultThreshold){ sdp[AliPID::kPhoton][index] = GausF(en , dispersion, fDphoton) ; sdp[AliPID::kElectron][index] = sdp[AliPID::kPhoton][index] ; sdp[AliPID::kPion][index] = LandauF(en , dispersion, fDhadron ) ; @@ -1020,7 +1043,7 @@ void AliPHOSPIDv1::MakePID() // cout<<">>>>hadron : x "<>>>electron : px*pz "<= pcpvcharged) pcpv = pcpvelectron ; else @@ -1057,14 +1080,20 @@ void AliPHOSPIDv1::MakePID() if(en > 30.){ // pi0 are detected via decay photon - stof[AliPID::kPi0][index] = fTFphoton ->Eval(time) ; + stof[AliPID::kPi0][index] = stof[AliPID::kPhoton][index]; scpv[AliPID::kPi0][index] = pcpvneutral ; - sdp [AliPID::kPi0][index] = 1. ; - if(emc->GetMultiplicity() > 3) - sdp [AliPID::kPi0][index] = GausPol2(en , dispersion, fDpi0) ; + if(emc->GetMultiplicity() > fDispMultThreshold) + sdp [AliPID::kPi0][index] = GausF(en , dispersion, fDpi0) ; + //sdp [AliPID::kPi0][index] = GausPol2(en , dispersion, fDpi0) ; +// cout<<"E = "<>>>hadron : xprob "<>>>electron : px*pz "<RecParticle(index) ; + + //Conversion electron? + + if(recpar->IsEleCon()){ + fInitPID[AliPID::kEleCon] = 1. ; + fInitPID[AliPID::kPhoton] = 0. ; + fInitPID[AliPID::kElectron] = 0. ; + } + else{ + fInitPID[AliPID::kEleCon] = 0. ; + fInitPID[AliPID::kPhoton] = 1. ; + fInitPID[AliPID::kElectron] = 1. ; + } + // fInitPID[AliPID::kEleCon] = 0. ; + + // calculates the Bayesian weight Int_t jndex ; Double_t wn = 0.0 ; for (jndex = 0 ; jndex < kSPECIES ; jndex++) - wn += stof[jndex][index] * sdp[jndex][index] * scpv[jndex][index] * sw[jndex][index] * fInitPID[jndex] ; - + wn += stof[jndex][index] * sdp[jndex][index] * scpv[jndex][index] * + sw[jndex][index] * fInitPID[jndex] ; + // cout<<"*************wn "<RecParticle(index) ; if (TMath::Abs(wn)>0) for (jndex = 0 ; jndex < kSPECIES ; jndex++) { - -// if(recpar->IsEleCon()){ -// fInitPID[AliPID::kEleCon] = 1. ; -// fInitPID[AliPID::kPhoton] = 0. ; -// } -// else{ -// fInitPID[AliPID::kEleCon] = 0. ; -// fInitPID[AliPID::kPhoton] = 1. ; -// } - fInitPID[AliPID::kEleCon] = 0. ; //cout<<"jndex "<SetPID(jndex, stof[jndex][index] * sdp[jndex][index] * sw[jndex][index] * - scpv[jndex][index] * fInitPID[jndex] / wn) ; -// cout<<"final prob "<SetPID(jndex, stof[jndex][index] * fInitPID[jndex] / wn) ; - //cout<<"After SetPID"<Print(); + // if(jndex == AliPID::kPi0 || jndex == AliPID::kPhoton){ + // cout<<"Particle "<SetPID(jndex, stof[jndex][index] * sdp[jndex][index] * + sw[jndex][index] * scpv[jndex][index] * + fInitPID[jndex] / wn) ; } } // Info("MakePID", "Delete"); - for (Int_t i =0; i< kSPECIES; i++){ - delete [] stof[i]; - delete [] sdp [i]; - delete [] scpv[i]; - delete [] sw [i]; - } + for (Int_t i =0; i< kSPECIES; i++){ + delete [] stof[i]; + delete [] sdp [i]; + delete [] scpv[i]; + delete [] sw [i]; + } // Info("MakePID","End MakePID"); } diff --git a/PHOS/AliPHOSPIDv1.h b/PHOS/AliPHOSPIDv1.h index 9122db69a7d..284b6984951 100644 --- a/PHOS/AliPHOSPIDv1.h +++ b/PHOS/AliPHOSPIDv1.h @@ -67,7 +67,9 @@ public: Float_t GetEllipseParameter (TString particle, TString param, Float_t e) const; Double_t GetThresholdChargedNeutral () const {return fChargedNeutralThreshold;} - + Float_t GetTOFEnergyThreshold () const {return fTOFEnThreshold;} + Float_t GetDispersionEnergyThreshold () const {return fDispEnThreshold;} + Int_t GetDispersionMultiplicityThreshold () const {return fDispMultThreshold;} //Do bayesian PID void SetBayesianPID(Bool_t set){ fBayesian = set ;} @@ -81,7 +83,9 @@ public: void SetParameterPi0Boundary (Int_t i, Float_t param); void SetThresholdChargedNeutral (Double_t th) {fChargedNeutralThreshold = th;} - + void SetTOFEnergyThreshold (Float_t th) {fTOFEnThreshold = th;} + void SetDispersionEnergyThreshold (Float_t th) {fDispEnThreshold = th;} + void SetDispersionMultiplicityThreshold (Int_t th) {fDispMultThreshold = th;} //Switch to "on flyght" mode, without writing to TreeR and file void SetWriting(Bool_t toWrite = kFALSE){fWrite = toWrite;} @@ -141,51 +145,40 @@ private: Double_t fInitPID[AliPID::kSPECIESN] ; // Initial population to do bayesian PID // pid probability function parameters // ToF - Double_t fTphoton[3] ; // gaussian tof response for photon - TFormula * fTFphoton ; // the formula -/* Double_t fTelectron[3] ; // gaussian tof response for electrons */ -/* TFormula * fTFelectron ; // the formula */ -/* Double_t fTmuon[3] ; // gaussian tof response for muon */ -/* TFormula * fTFmuon ; // the formula */ - Double_t fTpiong[3] ; // gaussian tof response for pions - TFormula * fTFpiong ; // the formula -/* Double_t fTpionl[3] ; // gaussian tof response for pions */ -/* TFormula * fTFpionl ; // the formula */ - Double_t fTkaong[3] ; // landau tof response for kaons - TFormula * fTFkaong ; // the formula - Double_t fTkaonl[3] ; // landau tof response for kaons - TFormula * fTFkaonl ; // the formula - Double_t fThhadrong[3] ; // gaus tof response for heavy hadrons - TFormula * fTFhhadrong ; // the formula - Double_t fThhadronl[3] ; // landau tof response for heavy hadrons - TFormula * fTFhhadronl ; // the formula - /* Double_t fTpion[9] ; // gaussian tof response for pions */ -/* Double_t fTkaon[9] ; // landau tof response for kaons */ -/* Double_t fThhadron[9] ; // landau tof response for nucleons */ + Double_t fTphoton[3] ; // gaussian tof response for photon + TFormula * fTFphoton ; // the formula + Double_t fTpiong[3] ; // gaussian tof response for pions + TFormula * fTFpiong ; // the formula + Double_t fTkaong[3] ; // landau tof response for kaons + TFormula * fTFkaong ; // the formula + Double_t fTkaonl[3] ; // landau tof response for kaons + TFormula * fTFkaonl ; // the formula + Double_t fThhadrong[3] ; // gaus tof response for heavy hadrons + TFormula * fTFhhadrong ; // the formula + Double_t fThhadronl[3] ; // landau tof response for heavy hadrons + TFormula * fTFhhadronl ; // the formula //Shower dispersion - Double_t fDmuon[3] ; // gaussian ss response for muon - TFormula * fDFmuon ; // the formula - Double_t fDphoton[9] ; // gaussian ss response for EM - Double_t fDpi0[9] ; // gaussian ss response for pi0 - Double_t fDhadron[9] ; // gaussian ss response for hadrons - - // gaussian ss response for muons - //CPV-EMCAL distance -/* Double_t fCPVelectron[9] ; // gaussian emc-cpv distance response for electron */ -/* Double_t fCPVcharged[9] ; // landau emc-cpv distance response for charged part (no elect) */ - Double_t fXelectron[9] ; // gaussian emc-cpv distance response for electron - Double_t fXcharged[9] ; // landau emc-cpv distance response for charged part (no elect) */ - Double_t fZelectron[9] ; // gaussian emc-cpv distance response for electron - Double_t fZcharged[9] ; // landau emc-cpv distance response for charged part (no elect) */ - -/* Double_t fCPVchargedg[9] ; // gaussian emc-cpv distance response for charged part (no elect) */ -/* Double_t fCPVchargedl[9] ; // landau emc-cpv distance response for charged part (no elect) */ + Double_t fDmuon[3] ; // gaussian ss response for muon + TFormula * fDFmuon ; // the formula + Double_t fDphoton[10] ; // gaussian ss response for EM + Double_t fDpi0[10] ; // gaussian ss response for pi0 + Double_t fDhadron[10] ; // gaussian ss response for hadrons + + Double_t fXelectron[10] ; // gaussian emc-cpv distance response for electron + Double_t fXcharged[10] ; // landau emc-cpv distance response for charged part (no elect) */ + Double_t fZelectron[10] ; // gaussian emc-cpv distance response for electron + Double_t fZcharged[10] ; // landau emc-cpv distance response for charged part (no elect) */ + Double_t fERecWeightPar[4] ; // gaussian tof response for photon TFormula * fERecWeight ; // the formula - Double_t fChargedNeutralThreshold ; //Threshold to differentiate between charged and neutral - ClassDef( AliPHOSPIDv1,11) // Particle identifier implementation version 1 + Double_t fChargedNeutralThreshold ; //Threshold to differentiate between charged and neutral + Float_t fTOFEnThreshold; //Maximum energy to use TOF + Float_t fDispEnThreshold; //Minimum energy to use shower shape + Int_t fDispMultThreshold ; //Minimum multiplicity to use shower shape + + ClassDef( AliPHOSPIDv1,12) // Particle identifier implementation version 1 }; -- 2.43.0