#include "AliFunctionsDiHadronPID.h"
#include <iostream>
using namespace std;
#include "AliExternalTrackParam.h"
#include "TF1.h"
AliFunctionsDiHadronPID::AliFunctionsDiHadronPID()
{
}
AliFunctionsDiHadronPID::~AliFunctionsDiHadronPID()
{
}
Int_t AliFunctionsDiHadronPID::Power(Int_t base, Int_t power) {
if (power > 0) {
Int_t result = 1;
for (Int_t ii = 0; ii < power; ++ii) {result *= base;}
return result;
} else {
if (power == 0) {return 1;}
else {
cout << Form("%s::%s -> WARNING: Method doesn't work for negative powers.",__FILE__,__func__) << endl;
return -999;
}
}
}
Double_t AliFunctionsDiHadronPID::Gaussian1D(Double_t xx, Double_t integral, Double_t mu, Double_t sigma, Double_t binwidth) {
Double_t norm = (binwidth*integral)/(TMath::Sqrt(2.*TMath::Pi())*sigma);
Double_t gaussian = TMath::Exp(-(xx-mu)*(xx-mu)/(2.*sigma*sigma));
return (norm*gaussian);
}
Double_t AliFunctionsDiHadronPID::Gaussian1DTail(Double_t xx, Double_t integral, Double_t mu, Double_t sigma, Double_t tail, Double_t binwidth) {
Double_t kappa = mu + tail;
if (mu >= kappa) return 0.;
Double_t beta = sigma*sigma/(kappa-mu);
Double_t BB = TMath::Exp( (kappa*kappa-mu*mu)/(2.*sigma*sigma) );
Double_t norm1 = beta*TMath::Exp( -(mu-kappa)*(mu-kappa)/(2.*sigma*sigma) );
Double_t norm2 = TMath::Sqrt(TMath::Pi()/2.)*sigma*TMath::Erfc( (mu-kappa)/(TMath::Sqrt2()*sigma) );
Double_t norm = norm1 + norm2;
Double_t funcleft = binwidth * (integral/norm)*TMath::Exp(-(xx-mu)*(xx-mu)/(2.*sigma*sigma));
Double_t funcright = binwidth * (integral/norm)*BB*TMath::Exp(-xx/beta);
if (xx <= kappa) return funcleft;
else return funcright;
}
Double_t AliFunctionsDiHadronPID::Gaussian2D(Double_t xx, Double_t yy, Double_t integral,
Double_t mux, Double_t muy, Double_t sigmax, Double_t sigmay,
Double_t binwidthx, Double_t binwidthy) {
Double_t GaussianX = Gaussian1D(xx, 1., mux, sigmax, binwidthx);
Double_t GaussianY = Gaussian1D(yy, 1., muy, sigmay, binwidthy);
return integral * GaussianX * GaussianY;
}
Double_t AliFunctionsDiHadronPID::Gaussian2DTailX(Double_t xx, Double_t yy, Double_t integral,
Double_t mux, Double_t muy, Double_t sigmax, Double_t sigmay,
Double_t tailx, Double_t binwidthx, Double_t binwidthy) {
Double_t GaussianTailX = Gaussian1DTail(xx, 1., mux, sigmax, tailx, binwidthx);
Double_t GaussianY = Gaussian1D(yy, 1., muy, sigmay, binwidthy);
return integral * GaussianTailX * GaussianY;
}
Double_t AliFunctionsDiHadronPID::Gaussian2DTailY(Double_t xx, Double_t yy, Double_t integral,
Double_t mux, Double_t muy, Double_t sigmax, Double_t sigmay,
Double_t taily, Double_t binwidthx, Double_t binwidthy) {
Double_t GaussianX = Gaussian1D(xx, 1., mux, sigmax, binwidthx);
Double_t GaussianTailY = Gaussian1DTail(yy, 1., muy, sigmay, taily, binwidthy);
return integral * GaussianX * GaussianTailY;
}
Double_t AliFunctionsDiHadronPID::Gaussian2DTailXY(Double_t xx, Double_t yy, Double_t integral,
Double_t mux, Double_t muy, Double_t sigmax, Double_t sigmay,
Double_t tailx, Double_t taily, Double_t binwidthx, Double_t binwidthy) {
Double_t GaussianTailX = Gaussian1DTail(xx, 1., mux, sigmax, tailx, binwidthx);
Double_t GaussianTailY = Gaussian1DTail(yy, 1., muy, sigmay, taily, binwidthy);
return integral * GaussianTailX * GaussianTailY;
}
Double_t AliFunctionsDiHadronPID::PolyPenalty(Double_t xx, Double_t center, Double_t flatwidth, const Int_t polyorder) {
Double_t fx = 1.;
if (TMath::Abs(xx - center) > flatwidth) {
fx = TMath::Power( (TMath::Abs(xx - center) - flatwidth), polyorder ) + 1.;
}
return fx;
}
TCanvas* AliFunctionsDiHadronPID::TestPolyPenalty(Double_t range, Double_t center, Double_t flatwidth, const Int_t polyorder) {
TF1* tf = new TF1("tf",Form("AliFunctionsDiHadronPID::PolyPenalty(x,[0],[1],%i)",polyorder),-range,range);
tf->SetParameters(center,flatwidth);
TCanvas* cvs = TCanvas::MakeDefCanvas();
tf->Draw();
return cvs;
}
Double_t AliFunctionsDiHadronPID::TOFExpTime(Double_t pT, Double_t eta, Double_t mass) {
Double_t AA = (2. * pT) / ( Charge() * BTPC() * GeVperkg() );
Double_t BB = TMath::ASin( (Charge() * BTPC() * 0.01 * RTOF() * GeVperkg() ) / (2. * pT * C()) );
Double_t CC = TMath::Sqrt( mass*mass/(pT*pT) + TMath::CosH(eta)*TMath::CosH(eta) );
return (1.e12*AA*BB*CC);
}
Double_t AliFunctionsDiHadronPID::TPCExpdEdX(Double_t pT, Double_t eta, Double_t mass) {
Double_t MIP = 50.;
Double_t Kp[5] = {0.0283086, 2.63394e+01, 5.04114e-11, 2.12543, 4.88663};
Double_t betaGamma = TMath::Abs( (pT * TMath::CosH(eta)) / mass );
return MIP * AliExternalTrackParam::BetheBlochAleph(betaGamma,Kp[0],Kp[1],Kp[2],Kp[3],Kp[4]);
}
AliFunctionsDiHadronPID.cxx:1 AliFunctionsDiHadronPID.cxx:2 AliFunctionsDiHadronPID.cxx:3 AliFunctionsDiHadronPID.cxx:4 AliFunctionsDiHadronPID.cxx:5 AliFunctionsDiHadronPID.cxx:6 AliFunctionsDiHadronPID.cxx:7 AliFunctionsDiHadronPID.cxx:8 AliFunctionsDiHadronPID.cxx:9 AliFunctionsDiHadronPID.cxx:10 AliFunctionsDiHadronPID.cxx:11 AliFunctionsDiHadronPID.cxx:12 AliFunctionsDiHadronPID.cxx:13 AliFunctionsDiHadronPID.cxx:14 AliFunctionsDiHadronPID.cxx:15 AliFunctionsDiHadronPID.cxx:16 AliFunctionsDiHadronPID.cxx:17 AliFunctionsDiHadronPID.cxx:18 AliFunctionsDiHadronPID.cxx:19 AliFunctionsDiHadronPID.cxx:20 AliFunctionsDiHadronPID.cxx:21 AliFunctionsDiHadronPID.cxx:22 AliFunctionsDiHadronPID.cxx:23 AliFunctionsDiHadronPID.cxx:24 AliFunctionsDiHadronPID.cxx:25 AliFunctionsDiHadronPID.cxx:26 AliFunctionsDiHadronPID.cxx:27 AliFunctionsDiHadronPID.cxx:28 AliFunctionsDiHadronPID.cxx:29 AliFunctionsDiHadronPID.cxx:30 AliFunctionsDiHadronPID.cxx:31 AliFunctionsDiHadronPID.cxx:32 AliFunctionsDiHadronPID.cxx:33 AliFunctionsDiHadronPID.cxx:34 AliFunctionsDiHadronPID.cxx:35 AliFunctionsDiHadronPID.cxx:36 AliFunctionsDiHadronPID.cxx:37 AliFunctionsDiHadronPID.cxx:38 AliFunctionsDiHadronPID.cxx:39 AliFunctionsDiHadronPID.cxx:40 AliFunctionsDiHadronPID.cxx:41 AliFunctionsDiHadronPID.cxx:42 AliFunctionsDiHadronPID.cxx:43 AliFunctionsDiHadronPID.cxx:44 AliFunctionsDiHadronPID.cxx:45 AliFunctionsDiHadronPID.cxx:46 AliFunctionsDiHadronPID.cxx:47 AliFunctionsDiHadronPID.cxx:48 AliFunctionsDiHadronPID.cxx:49 AliFunctionsDiHadronPID.cxx:50 AliFunctionsDiHadronPID.cxx:51 AliFunctionsDiHadronPID.cxx:52 AliFunctionsDiHadronPID.cxx:53 AliFunctionsDiHadronPID.cxx:54 AliFunctionsDiHadronPID.cxx:55 AliFunctionsDiHadronPID.cxx:56 AliFunctionsDiHadronPID.cxx:57 AliFunctionsDiHadronPID.cxx:58 AliFunctionsDiHadronPID.cxx:59 AliFunctionsDiHadronPID.cxx:60 AliFunctionsDiHadronPID.cxx:61 AliFunctionsDiHadronPID.cxx:62 AliFunctionsDiHadronPID.cxx:63 AliFunctionsDiHadronPID.cxx:64 AliFunctionsDiHadronPID.cxx:65 AliFunctionsDiHadronPID.cxx:66 AliFunctionsDiHadronPID.cxx:67 AliFunctionsDiHadronPID.cxx:68 AliFunctionsDiHadronPID.cxx:69 AliFunctionsDiHadronPID.cxx:70 AliFunctionsDiHadronPID.cxx:71 AliFunctionsDiHadronPID.cxx:72 AliFunctionsDiHadronPID.cxx:73 AliFunctionsDiHadronPID.cxx:74 AliFunctionsDiHadronPID.cxx:75 AliFunctionsDiHadronPID.cxx:76 AliFunctionsDiHadronPID.cxx:77 AliFunctionsDiHadronPID.cxx:78 AliFunctionsDiHadronPID.cxx:79 AliFunctionsDiHadronPID.cxx:80 AliFunctionsDiHadronPID.cxx:81 AliFunctionsDiHadronPID.cxx:82 AliFunctionsDiHadronPID.cxx:83 AliFunctionsDiHadronPID.cxx:84 AliFunctionsDiHadronPID.cxx:85 AliFunctionsDiHadronPID.cxx:86 AliFunctionsDiHadronPID.cxx:87 AliFunctionsDiHadronPID.cxx:88 AliFunctionsDiHadronPID.cxx:89 AliFunctionsDiHadronPID.cxx:90 AliFunctionsDiHadronPID.cxx:91 AliFunctionsDiHadronPID.cxx:92 AliFunctionsDiHadronPID.cxx:93 AliFunctionsDiHadronPID.cxx:94 AliFunctionsDiHadronPID.cxx:95 AliFunctionsDiHadronPID.cxx:96 AliFunctionsDiHadronPID.cxx:97 AliFunctionsDiHadronPID.cxx:98 AliFunctionsDiHadronPID.cxx:99 AliFunctionsDiHadronPID.cxx:100 AliFunctionsDiHadronPID.cxx:101 AliFunctionsDiHadronPID.cxx:102 AliFunctionsDiHadronPID.cxx:103 AliFunctionsDiHadronPID.cxx:104 AliFunctionsDiHadronPID.cxx:105 AliFunctionsDiHadronPID.cxx:106 AliFunctionsDiHadronPID.cxx:107 AliFunctionsDiHadronPID.cxx:108 AliFunctionsDiHadronPID.cxx:109 AliFunctionsDiHadronPID.cxx:110 AliFunctionsDiHadronPID.cxx:111 AliFunctionsDiHadronPID.cxx:112 AliFunctionsDiHadronPID.cxx:113 AliFunctionsDiHadronPID.cxx:114 AliFunctionsDiHadronPID.cxx:115 AliFunctionsDiHadronPID.cxx:116 AliFunctionsDiHadronPID.cxx:117 AliFunctionsDiHadronPID.cxx:118 AliFunctionsDiHadronPID.cxx:119 AliFunctionsDiHadronPID.cxx:120 AliFunctionsDiHadronPID.cxx:121 AliFunctionsDiHadronPID.cxx:122 AliFunctionsDiHadronPID.cxx:123 AliFunctionsDiHadronPID.cxx:124 AliFunctionsDiHadronPID.cxx:125 AliFunctionsDiHadronPID.cxx:126 AliFunctionsDiHadronPID.cxx:127 AliFunctionsDiHadronPID.cxx:128 AliFunctionsDiHadronPID.cxx:129 AliFunctionsDiHadronPID.cxx:130 AliFunctionsDiHadronPID.cxx:131 AliFunctionsDiHadronPID.cxx:132 AliFunctionsDiHadronPID.cxx:133 AliFunctionsDiHadronPID.cxx:134 AliFunctionsDiHadronPID.cxx:135 AliFunctionsDiHadronPID.cxx:136 AliFunctionsDiHadronPID.cxx:137 AliFunctionsDiHadronPID.cxx:138 AliFunctionsDiHadronPID.cxx:139 AliFunctionsDiHadronPID.cxx:140 AliFunctionsDiHadronPID.cxx:141 AliFunctionsDiHadronPID.cxx:142 AliFunctionsDiHadronPID.cxx:143 AliFunctionsDiHadronPID.cxx:144 AliFunctionsDiHadronPID.cxx:145 AliFunctionsDiHadronPID.cxx:146 AliFunctionsDiHadronPID.cxx:147 AliFunctionsDiHadronPID.cxx:148 AliFunctionsDiHadronPID.cxx:149 AliFunctionsDiHadronPID.cxx:150 AliFunctionsDiHadronPID.cxx:151 AliFunctionsDiHadronPID.cxx:152 AliFunctionsDiHadronPID.cxx:153 AliFunctionsDiHadronPID.cxx:154 AliFunctionsDiHadronPID.cxx:155 AliFunctionsDiHadronPID.cxx:156 AliFunctionsDiHadronPID.cxx:157 AliFunctionsDiHadronPID.cxx:158 AliFunctionsDiHadronPID.cxx:159 AliFunctionsDiHadronPID.cxx:160 AliFunctionsDiHadronPID.cxx:161 AliFunctionsDiHadronPID.cxx:162 AliFunctionsDiHadronPID.cxx:163 AliFunctionsDiHadronPID.cxx:164 AliFunctionsDiHadronPID.cxx:165 AliFunctionsDiHadronPID.cxx:166 AliFunctionsDiHadronPID.cxx:167 AliFunctionsDiHadronPID.cxx:168 AliFunctionsDiHadronPID.cxx:169 AliFunctionsDiHadronPID.cxx:170 AliFunctionsDiHadronPID.cxx:171 AliFunctionsDiHadronPID.cxx:172 AliFunctionsDiHadronPID.cxx:173 AliFunctionsDiHadronPID.cxx:174 AliFunctionsDiHadronPID.cxx:175 AliFunctionsDiHadronPID.cxx:176 AliFunctionsDiHadronPID.cxx:177 AliFunctionsDiHadronPID.cxx:178 AliFunctionsDiHadronPID.cxx:179 AliFunctionsDiHadronPID.cxx:180 AliFunctionsDiHadronPID.cxx:181 AliFunctionsDiHadronPID.cxx:182 AliFunctionsDiHadronPID.cxx:183 AliFunctionsDiHadronPID.cxx:184 AliFunctionsDiHadronPID.cxx:185 AliFunctionsDiHadronPID.cxx:186 AliFunctionsDiHadronPID.cxx:187 AliFunctionsDiHadronPID.cxx:188 AliFunctionsDiHadronPID.cxx:189 AliFunctionsDiHadronPID.cxx:190 AliFunctionsDiHadronPID.cxx:191 AliFunctionsDiHadronPID.cxx:192 AliFunctionsDiHadronPID.cxx:193 AliFunctionsDiHadronPID.cxx:194 AliFunctionsDiHadronPID.cxx:195 AliFunctionsDiHadronPID.cxx:196 AliFunctionsDiHadronPID.cxx:197 AliFunctionsDiHadronPID.cxx:198 AliFunctionsDiHadronPID.cxx:199 AliFunctionsDiHadronPID.cxx:200 AliFunctionsDiHadronPID.cxx:201 AliFunctionsDiHadronPID.cxx:202 AliFunctionsDiHadronPID.cxx:203 AliFunctionsDiHadronPID.cxx:204 AliFunctionsDiHadronPID.cxx:205 AliFunctionsDiHadronPID.cxx:206 AliFunctionsDiHadronPID.cxx:207 AliFunctionsDiHadronPID.cxx:208 AliFunctionsDiHadronPID.cxx:209 AliFunctionsDiHadronPID.cxx:210