ROOT logo
#ifndef ALIFUNCTIONSDIHADRONPID_H
#define ALIFUNCTIONSDIHADRONPID_H
/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * 
* See cxx source for full Copyright notice */ 
/* $Id$ */

#include "TCanvas.h"
#include "TMath.h"

//class TCanvas;

class AliFunctionsDiHadronPID {

public:
	AliFunctionsDiHadronPID();

protected:
	~AliFunctionsDiHadronPID();

public:
	// Math.
	static Int_t Power(Int_t base, Int_t power);

	// Natural constants.
	static Double_t Charge() {return 1.60217646e-19;}	// (C)
	static Double_t C() {return 2.99792458e+8;}			// (m/s)
	static Double_t Mpion() {return 0.13957018;}		// (GeV/c^2)
	static Double_t Mkaon() {return 0.493667;}			// (GeV/c^2)
	static Double_t Mproton() {return 0.938272046;}		// (GeV/c^2)
	static Double_t Mdeuteron() {return 2.01410178*GeVperu();}	// (GeV/c^2)
	static Double_t M(Int_t species) {
		switch(species) {
			case 0:return Mpion();
			case 1:return Mkaon();
			case 2:return Mproton();
			case 3:return Mdeuteron();
			default:return -999.; 
		}
	}

	// Conversions.
	static Double_t GeVperu() {return 0.931494061;}		// (GeV/c^2) per u
	static Double_t GeVperkg() {return 5.608524e+26;} 	// (GeV/c^2) per kg

	// Detector paramters.
	static Double_t RTOF() {return 385.;}				// Radius of TOF (cm).
	static Double_t BTPC() {return 0.5;}				// Magnetic field in TPC (T = kg C^-1 s^-1).

	// Fit Functions.
	static Double_t Gaussian1D(Double_t xx, Double_t integral, Double_t mu, Double_t sigma, Double_t binwidth = 1.);
	static Double_t Gaussian1DTail(Double_t xx, Double_t integral, Double_t mu, Double_t sigma, Double_t tail, Double_t binwidth = 1.);

	static Double_t 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 = 1., Double_t binwidthy = 1.);

	static Double_t 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 = 1., Double_t binwidthy = 1.);

	static Double_t 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 = 1., Double_t binwidthy = 1.);

	static Double_t 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 = 1., Double_t binwidthy = 1.);

	// Penalty Functions.
	static Double_t PolyPenalty(Double_t xx, Double_t center, Double_t flatwidth, Int_t polyorder);
	static TCanvas* TestPolyPenalty(Double_t range = 3., Double_t center = 1., Double_t flatwidth = 1., Int_t polyorder = 3);

	// PID Expected signal functions.
	static Double_t TOFExpTime(Double_t pT, Double_t eta, Double_t mass);
	static Double_t TPCExpdEdX(Double_t pT, Double_t eta, Double_t mass);

	// Standard Functions.
	static Double_t Exponent(Double_t xx, Int_t sign, Double_t p0, Double_t p1) {return (sign*TMath::Exp(p0 + xx*p1));}
	static Double_t Poly1(Double_t xx, Double_t p0, Double_t p1) {return (p0 + p1*xx);}
	static Double_t Poly2(Double_t xx, Double_t p0, Double_t p1, Double_t p2) {return (p0 + p1*xx + p2*xx*xx);}
	static Double_t Poly3(Double_t xx, Double_t p0, Double_t p1, Double_t p2, Double_t p3) {return (p0 + p1*xx + p2*xx*xx + p3*xx*xx*xx);}
	static Double_t Poly4(Double_t xx, Double_t p0, Double_t p1, Double_t p2, Double_t p3, Double_t p4) {return (p0 + p1*xx + p2*xx*xx + p3*xx*xx*xx + p4*xx*xx*xx*xx);}
	static Double_t Poly5(Double_t xx, Double_t p0, Double_t p1, Double_t p2, Double_t p3, Double_t p4, Double_t p5) {return (p0 + p1*xx + p2*xx*xx + p3*xx*xx*xx + p4*xx*xx*xx*xx + p5*xx*xx*xx*xx*xx);}				

};

#endif
 AliFunctionsDiHadronPID.h:1
 AliFunctionsDiHadronPID.h:2
 AliFunctionsDiHadronPID.h:3
 AliFunctionsDiHadronPID.h:4
 AliFunctionsDiHadronPID.h:5
 AliFunctionsDiHadronPID.h:6
 AliFunctionsDiHadronPID.h:7
 AliFunctionsDiHadronPID.h:8
 AliFunctionsDiHadronPID.h:9
 AliFunctionsDiHadronPID.h:10
 AliFunctionsDiHadronPID.h:11
 AliFunctionsDiHadronPID.h:12
 AliFunctionsDiHadronPID.h:13
 AliFunctionsDiHadronPID.h:14
 AliFunctionsDiHadronPID.h:15
 AliFunctionsDiHadronPID.h:16
 AliFunctionsDiHadronPID.h:17
 AliFunctionsDiHadronPID.h:18
 AliFunctionsDiHadronPID.h:19
 AliFunctionsDiHadronPID.h:20
 AliFunctionsDiHadronPID.h:21
 AliFunctionsDiHadronPID.h:22
 AliFunctionsDiHadronPID.h:23
 AliFunctionsDiHadronPID.h:24
 AliFunctionsDiHadronPID.h:25
 AliFunctionsDiHadronPID.h:26
 AliFunctionsDiHadronPID.h:27
 AliFunctionsDiHadronPID.h:28
 AliFunctionsDiHadronPID.h:29
 AliFunctionsDiHadronPID.h:30
 AliFunctionsDiHadronPID.h:31
 AliFunctionsDiHadronPID.h:32
 AliFunctionsDiHadronPID.h:33
 AliFunctionsDiHadronPID.h:34
 AliFunctionsDiHadronPID.h:35
 AliFunctionsDiHadronPID.h:36
 AliFunctionsDiHadronPID.h:37
 AliFunctionsDiHadronPID.h:38
 AliFunctionsDiHadronPID.h:39
 AliFunctionsDiHadronPID.h:40
 AliFunctionsDiHadronPID.h:41
 AliFunctionsDiHadronPID.h:42
 AliFunctionsDiHadronPID.h:43
 AliFunctionsDiHadronPID.h:44
 AliFunctionsDiHadronPID.h:45
 AliFunctionsDiHadronPID.h:46
 AliFunctionsDiHadronPID.h:47
 AliFunctionsDiHadronPID.h:48
 AliFunctionsDiHadronPID.h:49
 AliFunctionsDiHadronPID.h:50
 AliFunctionsDiHadronPID.h:51
 AliFunctionsDiHadronPID.h:52
 AliFunctionsDiHadronPID.h:53
 AliFunctionsDiHadronPID.h:54
 AliFunctionsDiHadronPID.h:55
 AliFunctionsDiHadronPID.h:56
 AliFunctionsDiHadronPID.h:57
 AliFunctionsDiHadronPID.h:58
 AliFunctionsDiHadronPID.h:59
 AliFunctionsDiHadronPID.h:60
 AliFunctionsDiHadronPID.h:61
 AliFunctionsDiHadronPID.h:62
 AliFunctionsDiHadronPID.h:63
 AliFunctionsDiHadronPID.h:64
 AliFunctionsDiHadronPID.h:65
 AliFunctionsDiHadronPID.h:66
 AliFunctionsDiHadronPID.h:67
 AliFunctionsDiHadronPID.h:68
 AliFunctionsDiHadronPID.h:69
 AliFunctionsDiHadronPID.h:70
 AliFunctionsDiHadronPID.h:71
 AliFunctionsDiHadronPID.h:72
 AliFunctionsDiHadronPID.h:73
 AliFunctionsDiHadronPID.h:74
 AliFunctionsDiHadronPID.h:75
 AliFunctionsDiHadronPID.h:76
 AliFunctionsDiHadronPID.h:77
 AliFunctionsDiHadronPID.h:78
 AliFunctionsDiHadronPID.h:79
 AliFunctionsDiHadronPID.h:80
 AliFunctionsDiHadronPID.h:81
 AliFunctionsDiHadronPID.h:82
 AliFunctionsDiHadronPID.h:83
 AliFunctionsDiHadronPID.h:84
 AliFunctionsDiHadronPID.h:85
 AliFunctionsDiHadronPID.h:86
 AliFunctionsDiHadronPID.h:87