#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <Riostream.h>
#include <TF1.h>
#include <TFile.h>
#include <TH3.h>
#include <TMath.h>
#include <TRandom.h>
#include <TSpline.h>
#include "AliMUONFastTracking.h"
#include "AliMUONFastTrackingEntry.h"
using std::cout;
using std::endl;
ClassImp(AliMUONFastTracking)
AliMUONFastTracking* AliMUONFastTracking::fgMUONFastTracking=NULL;
static Double_t FitP(Double_t *x, Double_t *par){
Double_t dx = x[0] - par[0];
Double_t dx2 = x[0] - par[4];
Double_t sigma = par[1] * ( 1 + par[2] * dx);
if (sigma == 0) {
return 0.;
}
Double_t fasymm = TMath::Exp(-0.5 * dx * dx / (sigma * sigma));
Double_t sigma2 = par[1] * par[5];
Double_t fgauss = TMath::Exp(-0.5 * dx2 * dx2 / (sigma2 * sigma2));
Double_t value = fasymm + par[3] * fgauss;
return TMath::Abs(value);
}
AliMUONFastTracking::AliMUONFastTracking(const AliMUONFastTracking & ft):
TObject(),
fNbinp(10),
fPmin(0.),
fPmax(200.),
fDeltaP((fPmax-fPmin)/fNbinp),
fNbintheta(10),
fThetamin(2.),
fThetamax(9.),
fDeltaTheta((fThetamax-fThetamin)/fNbintheta),
fNbinphi(10),
fPhimin(-180.),
fPhimax(180.),
fDeltaPhi((fPhimax-fPhimin)/fNbinphi),
fPrintLevel(1),
fBkg(0.),
fSpline(0),
fClusterFinder(kOld)
{
ft.Copy(*this);
}
AliMUONFastTracking* AliMUONFastTracking::Instance()
{
if (fgMUONFastTracking) {
return fgMUONFastTracking;
} else {
fgMUONFastTracking = new AliMUONFastTracking();
return fgMUONFastTracking;
}
}
AliMUONFastTracking::AliMUONFastTracking():
fNbinp(10),
fPmin(0.),
fPmax(200.),
fDeltaP((fPmax-fPmin)/fNbinp),
fNbintheta(10),
fThetamin(2.),
fThetamax(9.),
fDeltaTheta((fThetamax-fThetamin)/fNbintheta),
fNbinphi(10),
fPhimin(-180.),
fPhimax(180.),
fDeltaPhi((fPhimax-fPhimin)/fNbinphi),
fPrintLevel(1),
fBkg(0.),
fSpline(0),
fClusterFinder(kOld)
{
for (Int_t i = 0; i<20;i++) {
for (Int_t j = 0; j<20; j++) {
for (Int_t k = 0; k<20; k++) {
fFitp[i][j][k] = 0x0;
}
}
}
}
void AliMUONFastTracking::Init(Float_t bkg)
{
for (Int_t ip=0; ip< fNbinp; ip++){
for (Int_t itheta=0; itheta< fNbintheta; itheta++){
for (Int_t iphi=0; iphi< fNbinphi; iphi++){
fCurrentEntry[ip][itheta][iphi] = new AliMUONFastTrackingEntry;
for (Int_t ibkg=0; ibkg<4; ibkg++){
fEntry[ip][itheta][iphi][ibkg] = new AliMUONFastTrackingEntry;
}
}
}
}
char filename [100];
if (fClusterFinder==kOld) snprintf (filename, 100, "$(ALICE_ROOT)/FASTSIM/data/MUONtrackLUT.root");
else snprintf (filename, 100, "$(ALICE_ROOT)/FASTSIM/data/MUONtrackLUT-AZ.root");
TFile *file = new TFile(filename);
ReadLUT(file);
SetBackground(bkg);
UseSpline(0);
}
void AliMUONFastTracking::ReadLUT(TFile* file)
{
TH3F *heff[5][3], *hacc[5][3], *hmeanp, *hsigmap, *hsigma1p, *hchi2p;
TH3F *hnormg2, *hmeang2, *hsigmag2, *hmeantheta, *hsigmatheta, *hchi2theta;
TH3F *hmeanphi, *hsigmaphi, *hchi2phi;
char tag[40], tag2[40];
printf ("Reading parameters from LUT file %s...\n",file->GetName());
const Float_t kBkg[4] = {0, 0.5, 1, 2};
for (Int_t ibkg=0; ibkg<4; ibkg++) {
snprintf (tag, 40, "BKG%g",kBkg[ibkg]);
file->cd(tag);
for (Int_t isplp = 0; isplp<kSplitP; isplp++) {
for (Int_t ispltheta = 0; ispltheta<kSplitTheta; ispltheta++) {
snprintf (tag2, 40, "heff[%d][%d]",isplp,ispltheta);
heff[isplp][ispltheta] = (TH3F*)gDirectory->Get(tag2);
snprintf (tag2, 40, "hacc[%d][%d]",isplp,ispltheta);
hacc[isplp][ispltheta] = (TH3F*)gDirectory->Get(tag2);
}
}
hmeanp = (TH3F*)gDirectory->Get("hmeanp");
hsigmap = (TH3F*)gDirectory->Get("hsigmap");
hsigma1p = (TH3F*)gDirectory->Get("hsigma1p");
hchi2p = (TH3F*)gDirectory->Get("hchi2p");
hnormg2 = (TH3F*)gDirectory->Get("hnormg2");
hmeang2 = (TH3F*)gDirectory->Get("hmeang2");
hsigmag2 = (TH3F*)gDirectory->Get("hsigmag2");
hmeantheta = (TH3F*)gDirectory->Get("hmeantheta");
hsigmatheta = (TH3F*)gDirectory->Get("hsigmatheta");
hchi2theta = (TH3F*)gDirectory->Get("hchi2theta");
hmeanphi = (TH3F*)gDirectory->Get("hmeanphi");
hsigmaphi = (TH3F*)gDirectory->Get("hsigmaphi");
hchi2phi = (TH3F*)gDirectory->Get("hchi2phi");
for (Int_t ip=0; ip<fNbinp ;ip++) {
for (Int_t itheta=0; itheta<fNbintheta ;itheta++) {
for (Int_t iphi=0; iphi<fNbinphi ;iphi++) {
Float_t p = fPmin + fDeltaP * (ip + 0.5);
Float_t theta = fThetamin + fDeltaTheta * (itheta + 0.5);
Float_t phi = fPhimin + fDeltaPhi * (iphi + 0.5);
fEntry[ip][itheta][iphi][ibkg]->SetP(p);
fEntry[ip][itheta][iphi][ibkg]->SetMeanp(hmeanp->GetBinContent(ip+1,itheta+1,iphi+1));
fEntry[ip][itheta][iphi][ibkg]->SetSigmap(TMath::Abs(hsigmap->GetBinContent(ip+1,itheta+1,iphi+1)));
fEntry[ip][itheta][iphi][ibkg]->SetSigma1p(hsigma1p->GetBinContent(ip+1,itheta+1,iphi+1));
fEntry[ip][itheta][iphi][ibkg]->SetChi2p(hchi2p->GetBinContent(ip+1,itheta+1,iphi+1));
fEntry[ip][itheta][iphi][ibkg]->SetNormG2(hnormg2->GetBinContent(ip+1,itheta+1,iphi+1));
fEntry[ip][itheta][iphi][ibkg]->SetMeanG2(hmeang2->GetBinContent(ip+1,itheta+1,iphi+1));
if (ibkg == 0) fEntry[ip][itheta][iphi][ibkg]->SetSigmaG2(9999);
else fEntry[ip][itheta][iphi][ibkg]->SetSigmaG2(hsigmag2->GetBinContent(ip+1,itheta+1,iphi+1));
fEntry[ip][itheta][iphi][ibkg]->SetTheta(theta);
fEntry[ip][itheta][iphi][ibkg]->SetMeantheta(hmeantheta->GetBinContent(ip+1,itheta+1,iphi+1));
fEntry[ip][itheta][iphi][ibkg]->SetSigmatheta(TMath::Abs(hsigmatheta->GetBinContent(ip+1,itheta+1,iphi+1)));
fEntry[ip][itheta][iphi][ibkg]->SetChi2theta(hchi2theta->GetBinContent(ip+1,itheta+1,iphi+1));
fEntry[ip][itheta][iphi][ibkg]->SetPhi(phi);
fEntry[ip][itheta][iphi][ibkg]->SetMeanphi(hmeanphi->GetBinContent(ip+1,itheta+1,iphi+1));
fEntry[ip][itheta][iphi][ibkg]->SetSigmaphi(TMath::Abs(hsigmaphi->GetBinContent(ip+1,itheta+1,iphi+1)));
fEntry[ip][itheta][iphi][ibkg]->SetChi2phi(hchi2phi->GetBinContent(ip+1,itheta+1,iphi+1));
for (Int_t i=0; i<kSplitP; i++) {
for (Int_t j=0; j<kSplitTheta; j++) {
fEntry[ip][itheta][iphi][ibkg]->SetAcc(i,j,hacc[i][j]->GetBinContent(ip+1,itheta+1,iphi+1));
fEntry[ip][itheta][iphi][ibkg]->SetEff(i,j,heff[i][j]->GetBinContent(ip+1,itheta+1,iphi+1));
}
}
}
}
}
}
TGraph *graph = new TGraph(3);
TF1 *f = new TF1("f","[0]+[1]*x");
for (Int_t ip=0; ip< fNbinp; ip++){
for (Int_t itheta=0; itheta< fNbintheta; itheta++){
for (Int_t iphi=0; iphi< fNbinphi; iphi++){
graph->SetPoint(0,0.5,fEntry[ip][itheta][iphi][1]->GetSigmaG2());
graph->SetPoint(1,1,fEntry[ip][itheta][iphi][2]->GetSigmaG2());
graph->SetPoint(2,2,fEntry[ip][itheta][iphi][3]->GetSigmaG2());
graph->Fit("f","q");
fEntry[ip][itheta][iphi][0]->SetSigmaG2(f->Eval(0));
}
}
}
f->Delete();
graph->Delete();
printf ("parameters read. \n");
}
void AliMUONFastTracking::GetBinning(Int_t &nbinp, Float_t &pmin, Float_t &pmax,
Int_t &nbintheta, Float_t &thetamin,
Float_t &thetamax,
Int_t &nbinphi, Float_t &phimin, Float_t &phimax) const
{
nbinp = fNbinp;
pmin = fPmin;
pmax = fPmax;
nbintheta = fNbintheta;
thetamin = fThetamin;
thetamax = fThetamax;
nbinphi = fNbinphi;
phimin = fPhimin;
phimax = fPhimax;
}
void AliMUONFastTracking::GetIpIthetaIphi(Float_t p, Float_t theta, Float_t phi,
Int_t charge, Int_t &ip, Int_t &itheta,
Int_t &iphi) const
{
if (charge < 0) phi = -phi;
ip = Int_t (( p - fPmin ) / fDeltaP);
itheta = Int_t (( theta - fThetamin ) / fDeltaTheta);
iphi = Int_t (( phi - fPhimin ) / fDeltaPhi);
if (ip< 0) ip = 0;
if (ip>= fNbinp) ip = fNbinp-1;
if (itheta< 0) itheta = 0;
if (itheta>= fNbintheta) itheta = fNbintheta-1;
if (iphi< 0) iphi = 0;
if (iphi>= fNbinphi) iphi = fNbinphi-1;
}
void AliMUONFastTracking::GetSplit(Int_t ip, Int_t itheta,
Int_t &nSplitP, Int_t &nSplitTheta) const
{
if (ip==0) nSplitP = 5;
else nSplitP = 2;
if (itheta==0) nSplitTheta = 3;
else nSplitTheta = 1;
}
Float_t AliMUONFastTracking::Efficiency(Float_t p, Float_t theta,
Float_t phi, Int_t charge){
Int_t ip=0, itheta=0, iphi=0;
GetIpIthetaIphi(p,theta,phi,charge,ip,itheta,iphi);
Int_t nSplitP, nSplitTheta;
GetSplit(ip,itheta,nSplitP,nSplitTheta);
Float_t dp = p - fPmin;
Int_t ibinp = Int_t(nSplitP*(dp - fDeltaP * Int_t(dp / fDeltaP))/fDeltaP);
Float_t dtheta = theta - fThetamin;
Int_t ibintheta = Int_t(nSplitTheta*(dtheta - fDeltaTheta * Int_t(dtheta / fDeltaTheta))/fDeltaTheta);
Float_t eff = fCurrentEntry[ip][itheta][iphi]->GetEff(ibinp,ibintheta);
return eff;
}
Float_t AliMUONFastTracking::Acceptance(Float_t p, Float_t theta,
Float_t phi, Int_t charge){
if (theta<fThetamin || theta>fThetamax) return 0;
Int_t ip=0, itheta=0, iphi=0;
GetIpIthetaIphi(p,theta,phi,charge,ip,itheta,iphi);
Int_t nSplitP, nSplitTheta;
GetSplit(ip,itheta,nSplitP,nSplitTheta);
Float_t dp = p - fPmin;
Int_t ibinp = Int_t(nSplitP*(dp - fDeltaP * Int_t(dp / fDeltaP))/fDeltaP);
Float_t dtheta = theta - fThetamin;
Int_t ibintheta = Int_t(nSplitTheta*(dtheta - fDeltaTheta * Int_t(dtheta / fDeltaTheta))/fDeltaTheta);
Float_t acc = fCurrentEntry[ip][itheta][iphi]->GetAcc(ibinp,ibintheta);
return acc;
}
Float_t AliMUONFastTracking::MeanP(Float_t p, Float_t theta,
Float_t phi, Int_t charge) const
{
Int_t ip=0, itheta=0, iphi=0;
GetIpIthetaIphi(p,theta,phi,charge,ip,itheta,iphi);
return fCurrentEntry[ip][itheta][iphi]->GetMeanp();
}
Float_t AliMUONFastTracking::SigmaP(Float_t p, Float_t theta,
Float_t phi, Int_t charge) const
{
Int_t ip=0, itheta=0, iphi=0;
Int_t index;
GetIpIthetaIphi(p,theta,phi,charge,ip,itheta,iphi);
Float_t sigmap = fCurrentEntry[ip][itheta][iphi]->GetSigmap();
if (!fSpline) return sigmap;
index = iphi + fNbinphi * itheta;
Double_t xmin,ymin,xmax,ymax;
Float_t frac1 = fSplineSigmap[index][0]->Eval(p)/sigmap;
if (p>fPmax-fDeltaP/2.) {
Float_t s1 = fCurrentEntry[fNbinp-1][itheta][iphi]->GetSigmap();
Float_t s2 = fCurrentEntry[fNbinp-2][itheta][iphi]->GetSigmap();
Float_t s3 = fCurrentEntry[fNbinp-3][itheta][iphi]->GetSigmap();
Float_t p1 = fDeltaP * (fNbinp - 1 + 0.5) + fPmin;
Float_t p2 = fDeltaP * (fNbinp - 2 + 0.5) + fPmin;
Float_t p3 = fDeltaP * (fNbinp - 3 + 0.5) + fPmin;
Float_t p12 = p1 * p1, p22 = p2 * p2, p32 = p3 * p3;
Float_t d = p12*p2 + p1*p32 + p22*p3 - p32*p2 - p3*p12 - p22*p1;
Float_t a = (s1*p2 + p1*s3 + s2*p3 - s3*p2 - p3*s1 - s2*p1) / d;
Float_t b = (p12*s2 + s1*p32 + p22*s3 - p32*s2 - s3*p12 - p22*s1)/d;
Float_t c = (p12*p2*s3 + p1*p32*s2 + p22*p3*s1
- p32*p2*s1 - p3*p12*s2 - p22*p1*s3) / d;
Float_t sigma = a * p * p + b * p + c;
frac1 = sigma/sigmap;
}
index = iphi + fNbinphi * ip;
fSplineEff[index][1]->GetKnot(0,xmin,ymin);
fSplineEff[index][1]->GetKnot(9,xmax,ymax);
if (theta>xmax) theta = xmax;
Float_t frac2 = fSplineSigmap[index][1]->Eval(theta)/sigmap;
index = itheta + fNbintheta * ip;
fSplineEff[index][2]->GetKnot(0,xmin,ymin);
fSplineEff[index][2]->GetKnot(9,xmax,ymax);
if (phi>xmax) phi = xmax;
Float_t frac3 = fSplineSigmap[index][2]->Eval(phi)/sigmap;
Float_t sigmatot = sigmap * frac1 * frac2 * frac3;
if (sigmatot<0) sigmatot = sigmap;
return sigmatot;
}
Float_t AliMUONFastTracking::Sigma1P(Float_t p, Float_t theta,
Float_t phi, Int_t charge) const
{
Int_t ip=0, itheta=0, iphi=0;
GetIpIthetaIphi(p,theta,phi,charge,ip,itheta,iphi);
if (p>fPmax) {
Float_t s1 = fCurrentEntry[fNbinp-1][itheta][iphi]->GetSigma1p();
Float_t s2 = fCurrentEntry[fNbinp-2][itheta][iphi]->GetSigma1p();
Float_t p1 = fDeltaP * (fNbinp - 1 + 0.5) + fPmin;
Float_t p2 = fDeltaP * (fNbinp - 2 + 0.5) + fPmin;
Float_t sigma = 1./(p1-p2) * ( (s1-s2)*p + (s2-s1)*p1 + s1*(p1-p2) );
return sigma;
}
else return fCurrentEntry[ip][itheta][iphi]->GetSigma1p();
}
Float_t AliMUONFastTracking::NormG2(Float_t p, Float_t theta,
Float_t phi, Int_t charge) const
{
Int_t ip=0, itheta=0, iphi=0;
GetIpIthetaIphi(p,theta,phi,charge,ip,itheta,iphi);
if (p>fPmax) {
Float_t s1 = fCurrentEntry[fNbinp-1][itheta][iphi]->GetNormG2();
Float_t s2 = fCurrentEntry[fNbinp-2][itheta][iphi]->GetNormG2();
Float_t p1 = fDeltaP * (fNbinp - 1 + 0.5) + fPmin;
Float_t p2 = fDeltaP * (fNbinp - 2 + 0.5) + fPmin;
Float_t norm = 1./(p1-p2) * ( (s1-s2)*p + (s2-s1)*p1 + s1*(p1-p2) );
return norm;
}
else return fCurrentEntry[ip][itheta][iphi]->GetNormG2();
}
Float_t AliMUONFastTracking::MeanG2(Float_t p, Float_t theta,
Float_t phi, Int_t charge) const
{
Int_t ip=0, itheta=0, iphi=0;
GetIpIthetaIphi(p,theta,phi,charge,ip,itheta,iphi);
if (p>fPmax) {
Float_t s1 = fCurrentEntry[fNbinp-1][itheta][iphi]->GetMeanG2();
Float_t s2 = fCurrentEntry[fNbinp-2][itheta][iphi]->GetMeanG2();
Float_t p1 = fDeltaP * (fNbinp - 1 + 0.5) + fPmin;
Float_t p2 = fDeltaP * (fNbinp - 2 + 0.5) + fPmin;
Float_t norm = 1./(p1-p2) * ( (s1-s2)*p + (s2-s1)*p1 + s1*(p1-p2) );
return norm;
}
else return fCurrentEntry[ip][itheta][iphi]->GetMeanG2();
}
Float_t AliMUONFastTracking::SigmaG2(Float_t p, Float_t theta,
Float_t phi, Int_t charge) const
{
Int_t ip=0, itheta=0, iphi=0;
GetIpIthetaIphi(p,theta,phi,charge,ip,itheta,iphi);
if (p>fPmax) {
Float_t s1 = fCurrentEntry[fNbinp-1][itheta][iphi]->GetSigmaG2();
Float_t s2 = fCurrentEntry[fNbinp-2][itheta][iphi]->GetSigmaG2();
Float_t p1 = fDeltaP * (fNbinp - 1 + 0.5) + fPmin;
Float_t p2 = fDeltaP * (fNbinp - 2 + 0.5) + fPmin;
Float_t sigma = 1./(p1-p2) * ( (s1-s2)*p + (s2-s1)*p1 + s1*(p1-p2) );
return sigma;
}
else return fCurrentEntry[ip][itheta][iphi]->GetSigmaG2();
}
Float_t AliMUONFastTracking::MeanTheta(Float_t p, Float_t theta,
Float_t phi, Int_t charge) const
{
Int_t ip=0, itheta=0, iphi=0;
GetIpIthetaIphi(p,theta,phi,charge,ip,itheta,iphi);
return fCurrentEntry[ip][itheta][iphi]->GetMeantheta();
}
Float_t AliMUONFastTracking::SigmaTheta(Float_t p, Float_t theta,
Float_t phi, Int_t charge) const
{
Int_t ip=0, itheta=0, iphi=0;
Int_t index;
GetIpIthetaIphi(p,theta,phi,charge,ip,itheta,iphi);
Float_t sigmatheta = fCurrentEntry[ip][itheta][iphi]->GetSigmatheta();
if (!fSpline) return sigmatheta;
index = iphi + fNbinphi * itheta;
Double_t xmin,ymin,xmax,ymax;
Float_t frac1 = fSplineSigmatheta[index][0]->Eval(p)/sigmatheta;
if (p>fPmax-fDeltaP/2.) {
Float_t s1 = fCurrentEntry[fNbinp-1][itheta][iphi]->GetSigmatheta();
Float_t s2 = fCurrentEntry[fNbinp-2][itheta][iphi]->GetSigmatheta();
Float_t p1 = fDeltaP * (fNbinp - 1 + 0.5) + fPmin;
Float_t p2 = fDeltaP * (fNbinp - 2 + 0.5) + fPmin;
Float_t sigma = 1./(p1-p2) * ( (s1-s2)*p + (s2-s1)*p1 + s1*(p1-p2) );
frac1=sigma/sigmatheta;
}
index = iphi + fNbinphi * ip;
fSplineEff[index][1]->GetKnot(0,xmin,ymin);
fSplineEff[index][1]->GetKnot(9,xmax,ymax);
if (theta>xmax) theta = xmax;
Float_t frac2 = fSplineSigmatheta[index][1]->Eval(theta)/sigmatheta;
index = itheta + fNbintheta * ip;
fSplineEff[index][2]->GetKnot(0,xmin,ymin);
fSplineEff[index][2]->GetKnot(9,xmax,ymax);
if (phi>xmax) phi = xmax;
Float_t frac3 = fSplineSigmatheta[index][2]->Eval(phi)/sigmatheta;
return sigmatheta * frac1 * frac2 * frac3;
}
Float_t AliMUONFastTracking::MeanPhi(Float_t p, Float_t theta,
Float_t phi, Int_t charge) const
{
Int_t ip=0, itheta=0, iphi=0;
GetIpIthetaIphi(p,theta,phi,charge,ip,itheta,iphi);
return fCurrentEntry[ip][itheta][iphi]->GetMeanphi();
}
Float_t AliMUONFastTracking::SigmaPhi(Float_t p, Float_t theta,
Float_t phi, Int_t charge){
Int_t ip=0, itheta=0, iphi=0;
Int_t index;
GetIpIthetaIphi(p,theta,phi,charge,ip,itheta,iphi);
Float_t sigmaphi = fCurrentEntry[ip][itheta][iphi]->GetSigmaphi();
if (!fSpline) return sigmaphi;
index = iphi + fNbinphi * itheta;
Float_t frac1 = fSplineSigmaphi[index][0]->Eval(p)/sigmaphi;
Double_t xmin,ymin,xmax,ymax;
if (p>fPmax-fDeltaP/2.) {
Float_t s1 = fCurrentEntry[fNbinp-1][itheta][iphi]->GetSigmaphi();
Float_t s2 = fCurrentEntry[fNbinp-2][itheta][iphi]->GetSigmaphi();
Float_t p1 = fDeltaP * (fNbinp - 1 + 0.5) + fPmin;
Float_t p2 = fDeltaP * (fNbinp - 2 + 0.5) + fPmin;
Float_t sigma = 1./(p1-p2) * ( (s1-s2)*p + (s2-s1)*p1 + s1*(p1-p2) );
frac1 = sigma/sigmaphi;
}
index = iphi + fNbinphi * ip;
fSplineEff[index][1]->GetKnot(0,xmin,ymin);
fSplineEff[index][1]->GetKnot(9,xmax,ymax);
if (theta>xmax) theta = xmax;
Float_t frac2 = fSplineSigmaphi[index][1]->Eval(theta)/sigmaphi;
index = itheta + fNbintheta * ip;
fSplineEff[index][2]->GetKnot(0,xmin,ymin);
fSplineEff[index][2]->GetKnot(9,xmax,ymax);
if (phi>xmax) phi = xmax;
Float_t frac3 = fSplineSigmaphi[index][2]->Eval(phi)/sigmaphi;
return sigmaphi * frac1 * frac2 * frac3;
}
void AliMUONFastTracking::SetSpline(){
printf ("Setting spline functions...");
char splname[40];
Double_t x[20][3];
Double_t x2[50][3];
Int_t nbins[3] = {fNbinp, fNbintheta, fNbinphi};
Double_t xspl[20],yeff[50],ysigmap[20],ysigma1p[20];
Double_t yacc[50], ysigmatheta[20],ysigmaphi[20];
Double_t xsp2[50];
Int_t i, ispline, ivar;
for (i=0; i< fNbinp; i++) x[i][0] = fPmin + fDeltaP * (i + 0.5);
for (i=0; i< fNbintheta; i++) x[i][1] = fThetamin + fDeltaTheta * (i + 0.5);
for (i=0; i< fNbinphi; i++) x[i][2] = fPhimin + fDeltaPhi * (i + 0.5);
for (i=0; i< 5 * fNbinp; i++) x2[i][0] = fPmin + fDeltaP * (i + 0.5)/5.;
for (i=0; i< 5 * fNbintheta; i++) x2[i][1] = fThetamin + fDeltaTheta * (i + 0.5)/5.;
for (i=0; i< 5 * fNbinphi; i++) x2[i][2] = fPhimin + fDeltaPhi * (i + 0.5)/5.;
ivar = 0;
for (i=0; i<nbins[ivar]; i++) xspl[i] = x[i][ivar];
for (i=0; i<5 * nbins[ivar]; i++) xsp2[i] = x2[i][ivar];
ispline=0;
for (Int_t itheta=0; itheta< fNbintheta; itheta++){
for (Int_t iphi=0; iphi< fNbinphi; iphi++){
for (Int_t ip=0; ip<fNbinp; ip++) {
ysigmap[ip] = fCurrentEntry[ip][itheta][iphi]->GetSigmap();
ysigma1p[ip] = fCurrentEntry[ip][itheta][iphi]->GetSigma1p();
ysigmatheta[ip] = fCurrentEntry[ip][itheta][iphi]->GetSigmatheta();
ysigmaphi[ip] = fCurrentEntry[ip][itheta][iphi]->GetSigmaphi();
}
if (fPrintLevel>3) cout << " creating new spline " << splname << endl;
snprintf (splname, 40, "fSplineEff[%d][%d]",ispline,ivar);
fSplineEff[ispline][ivar] = new TSpline3(splname,xsp2,yeff,5 * nbins[ivar]);
snprintf (splname, 40, "fSplineAcc[%d][%d]",ispline,ivar);
fSplineAcc[ispline][ivar] = new TSpline3(splname,xsp2,yacc,5 * nbins[ivar]);
snprintf (splname, 40, "fSplineSigmap[%d][%d]",ispline,ivar);
fSplineSigmap[ispline][ivar] = new TSpline3(splname,xspl,ysigmap,nbins[ivar]);
snprintf (splname, 40, "fSplineSigma1p[%d][%d]",ispline,ivar);
fSplineSigma1p[ispline][ivar] = new TSpline3(splname,xspl,ysigma1p,nbins[ivar]);
snprintf (splname, 40, "fSplineSigmatheta[%d][%d]",ispline,ivar);
fSplineSigmatheta[ispline][ivar] = new TSpline3(splname,xspl,ysigmatheta,nbins[ivar]);
snprintf (splname, 40, "fSplineSigmaphi[%d][%d]",ispline,ivar);
fSplineSigmaphi[ispline][ivar] = new TSpline3(splname,xspl,ysigmaphi,nbins[ivar]);
ispline++;
}
}
ivar = 1;
for (i=0; i<nbins[ivar]; i++) xspl[i] = x[i][ivar];
ispline=0;
for (Int_t ip=0; ip<fNbinp; ip++) {
for (Int_t iphi=0; iphi< fNbinphi; iphi++){
for (Int_t itheta=0; itheta< fNbintheta; itheta++){
ysigmap[itheta] = fCurrentEntry[ip][itheta][iphi]->GetSigmap();
ysigma1p[itheta] = fCurrentEntry[ip][itheta][iphi]->GetSigma1p();
ysigmatheta[itheta] = fCurrentEntry[ip][itheta][iphi]->GetSigmatheta();
ysigmaphi[itheta] = fCurrentEntry[ip][itheta][iphi]->GetSigmaphi();
}
if (fPrintLevel>3) cout << " creating new spline " << splname << endl;
snprintf (splname, 40, "fSplineEff[%d][%d]",ispline,ivar);
fSplineEff[ispline][ivar] = new TSpline3(splname,xspl,yeff, nbins[ivar]);
snprintf (splname, 40, "fSplineAcc[%d][%d]",ispline,ivar);
fSplineAcc[ispline][ivar] = new TSpline3(splname,xspl,yacc, nbins[ivar]);
snprintf (splname, 40, "fSplineSigmap[%d][%d]",ispline,ivar);
fSplineSigmap[ispline][ivar] = new TSpline3(splname,xspl,ysigmap,nbins[ivar]);
snprintf (splname, 40, "fSplineSigma1p[%d][%d]",ispline,ivar);
fSplineSigma1p[ispline][ivar] = new TSpline3(splname,xspl,ysigma1p,nbins[ivar]);
snprintf (splname, 40, "fSplineSigmatheta[%d][%d]",ispline,ivar);
fSplineSigmatheta[ispline][ivar] = new TSpline3(splname,xspl,ysigmatheta,nbins[ivar]);
snprintf (splname, 40, "fSplineSigmaphi[%d][%d]",ispline,ivar);
fSplineSigmaphi[ispline][ivar] = new TSpline3(splname,xspl,ysigmaphi,nbins[ivar]);
ispline++;
}
}
ivar = 2;
for (i=0; i<nbins[ivar]; i++) xspl[i] = x[i][ivar];
ispline=0;
for (Int_t ip=0; ip<fNbinp; ip++) {
for (Int_t itheta=0; itheta< fNbintheta; itheta++){
for (Int_t iphi=0; iphi< fNbinphi; iphi++){
ysigmap[iphi] = fCurrentEntry[ip][itheta][iphi]->GetSigmap();
ysigma1p[iphi] = fCurrentEntry[ip][itheta][iphi]->GetSigma1p();
ysigmatheta[iphi] = fCurrentEntry[ip][itheta][iphi]->GetSigmatheta();
ysigmaphi[iphi] = fCurrentEntry[ip][itheta][iphi]->GetSigmaphi();
}
if (fPrintLevel>3) cout << " creating new spline " << splname << endl;
snprintf (splname, 40, "fSplineEff[%d][%d]",ispline,ivar);
fSplineEff[ispline][ivar] = new TSpline3(splname,xspl,yeff, nbins[ivar]);
snprintf (splname, 40, "fSplineAcc[%d][%d]",ispline,ivar);
fSplineAcc[ispline][ivar] = new TSpline3(splname,xspl,yacc, nbins[ivar]);
snprintf (splname, 40, "fSplineSigmap[%d][%d]",ispline,ivar);
fSplineSigmap[ispline][ivar] = new TSpline3(splname,xspl,ysigmap,nbins[ivar]);
snprintf (splname, 40, "fSplineSigma1p[%d][%d]",ispline,ivar);
fSplineSigma1p[ispline][ivar] = new TSpline3(splname,xspl,ysigma1p,nbins[ivar]);
snprintf (splname, 40, "fSplineSigmatheta[%d][%d]",ispline,ivar);
fSplineSigmatheta[ispline][ivar] = new TSpline3(splname,xspl,ysigmatheta,nbins[ivar]);
snprintf (splname, 40, "fSplineSigmaphi[%d][%d]",ispline,ivar);
fSplineSigmaphi[ispline][ivar] = new TSpline3(splname,xspl,ysigmaphi,nbins[ivar]);
ispline++;
}
}
printf ("...done\n");
}
void AliMUONFastTracking::SetBackground(Float_t bkg){
if (bkg>2) printf ("WARNING: unsafe extrapolation!\n");
fBkg = bkg;
Float_t bkgLevel[4] = {0, 0.5, 1, 2};
Int_t ibkg;
for (ibkg=0; ibkg<4; ibkg++) if ( bkg < bkgLevel[ibkg]) break;
if (ibkg == 4) ibkg--;
if (ibkg == 0) ibkg++;
Float_t x0 = bkgLevel[ibkg-1];
Float_t x1 = bkgLevel[ibkg];
Float_t x = (bkg - x0) / (x1 - x0);
Float_t y0, y1;
for (Int_t ip=0; ip< fNbinp; ip++){
for (Int_t itheta=0; itheta< fNbintheta; itheta++){
for (Int_t iphi=0; iphi< fNbinphi; iphi++){
fCurrentEntry[ip][itheta][iphi]->SetP(fEntry[ip][itheta][iphi][ibkg]->GetP());
fCurrentEntry[ip][itheta][iphi]->SetTheta(fEntry[ip][itheta][iphi][ibkg]->GetTheta());
fCurrentEntry[ip][itheta][iphi]->SetPhi(fEntry[ip][itheta][iphi][ibkg]->GetPhi());
fCurrentEntry[ip][itheta][iphi]->SetChi2p(-1);
fCurrentEntry[ip][itheta][iphi]->SetChi2theta(-1);
fCurrentEntry[ip][itheta][iphi]->SetChi2phi(-1);
y0 = fEntry[ip][itheta][iphi][ibkg-1]->GetMeanp();
y1 = fEntry[ip][itheta][iphi][ibkg]->GetMeanp();
fCurrentEntry[ip][itheta][iphi] ->SetMeanp((y1 - y0) * x + y0);
y0 = fEntry[ip][itheta][iphi][ibkg-1]->GetMeantheta();
y1 = fEntry[ip][itheta][iphi][ibkg]->GetMeantheta();
fCurrentEntry[ip][itheta][iphi] ->SetMeantheta((y1 - y0) * x +y0);
y0 = fEntry[ip][itheta][iphi][ibkg-1]->GetMeanphi();
y1 = fEntry[ip][itheta][iphi][ibkg]->GetMeanphi();
fCurrentEntry[ip][itheta][iphi] ->SetMeanphi((y1 - y0) * x + y0);
y0 = fEntry[ip][itheta][iphi][ibkg-1]->GetSigmap();
y1 = fEntry[ip][itheta][iphi][ibkg]->GetSigmap();
fCurrentEntry[ip][itheta][iphi] ->SetSigmap((y1 - y0) * x + y0);
y0 = fEntry[ip][itheta][iphi][ibkg-1]->GetSigmatheta();
y1 = fEntry[ip][itheta][iphi][ibkg]->GetSigmatheta();
fCurrentEntry[ip][itheta][iphi] ->SetSigmatheta((y1 - y0) * x+y0);
y0 = fEntry[ip][itheta][iphi][ibkg-1]->GetSigmaphi();
y1 = fEntry[ip][itheta][iphi][ibkg]->GetSigmaphi();
fCurrentEntry[ip][itheta][iphi] ->SetSigmaphi((y1 - y0) * x + y0);
y0 = fEntry[ip][itheta][iphi][ibkg-1]->GetSigma1p();
y1 = fEntry[ip][itheta][iphi][ibkg]->GetSigma1p();
fCurrentEntry[ip][itheta][iphi] ->SetSigma1p((y1 - y0) * x + y0);
y0 = fEntry[ip][itheta][iphi][ibkg-1]->GetNormG2();
y1 = fEntry[ip][itheta][iphi][ibkg]->GetNormG2();
fCurrentEntry[ip][itheta][iphi] ->SetNormG2((y1 - y0) * x + y0);
y0 = fEntry[ip][itheta][iphi][ibkg-1]->GetMeanG2();
y1 = fEntry[ip][itheta][iphi][ibkg]->GetMeanG2();
fCurrentEntry[ip][itheta][iphi] ->SetMeanG2((y1 - y0) * x + y0);
y0 = fEntry[ip][itheta][iphi][ibkg-1]->GetSigmaG2();
y1 = fEntry[ip][itheta][iphi][ibkg]->GetSigmaG2();
fCurrentEntry[ip][itheta][iphi] ->SetSigmaG2((y1 - y0) * x + y0);
for (Int_t i=0; i<kSplitP; i++) {
for (Int_t j=0; j<kSplitTheta; j++) {
fCurrentEntry[ip][itheta][iphi]->SetAcc(i,j,fEntry[ip][itheta][iphi][ibkg]->GetAcc(i,j));
y0 = fEntry[ip][itheta][iphi][ibkg-1]->GetEff(i,j);
y1 = fEntry[ip][itheta][iphi][ibkg]->GetEff(i,j);
fCurrentEntry[ip][itheta][iphi]->SetEff(i,j, (y1 - y0) * x + y0);
}
}
}
}
}
SetSpline();
}
TF1* AliMUONFastTracking::GetFitP(Int_t ip,Int_t itheta,Int_t iphi) {
if (!fFitp[ip][itheta][iphi]) {
char name[256];
snprintf(name, 256, "fit_%d_%d_%d", ip, itheta, iphi);
fFitp[ip][itheta][iphi] = new TF1(name ,FitP,-20.,20.,6);
fFitp[ip][itheta][iphi]->SetNpx(500);
fFitp[ip][itheta][iphi]->SetParameters(0.,0.,0.,0.,0.,0.);
}
return fFitp[ip][itheta][iphi];
}
AliMUONFastTracking& AliMUONFastTracking::operator=(const AliMUONFastTracking& rhs)
{
rhs.Copy(*this);
return *this;
}
void AliMUONFastTracking::Copy(TObject&) const
{
Fatal("Copy","Not implemented!\n");
}
AliMUONFastTracking.cxx:1 AliMUONFastTracking.cxx:2 AliMUONFastTracking.cxx:3 AliMUONFastTracking.cxx:4 AliMUONFastTracking.cxx:5 AliMUONFastTracking.cxx:6 AliMUONFastTracking.cxx:7 AliMUONFastTracking.cxx:8 AliMUONFastTracking.cxx:9 AliMUONFastTracking.cxx:10 AliMUONFastTracking.cxx:11 AliMUONFastTracking.cxx:12 AliMUONFastTracking.cxx:13 AliMUONFastTracking.cxx:14 AliMUONFastTracking.cxx:15 AliMUONFastTracking.cxx:16 AliMUONFastTracking.cxx:17 AliMUONFastTracking.cxx:18 AliMUONFastTracking.cxx:19 AliMUONFastTracking.cxx:20 AliMUONFastTracking.cxx:21 AliMUONFastTracking.cxx:22 AliMUONFastTracking.cxx:23 AliMUONFastTracking.cxx:24 AliMUONFastTracking.cxx:25 AliMUONFastTracking.cxx:26 AliMUONFastTracking.cxx:27 AliMUONFastTracking.cxx:28 AliMUONFastTracking.cxx:29 AliMUONFastTracking.cxx:30 AliMUONFastTracking.cxx:31 AliMUONFastTracking.cxx:32 AliMUONFastTracking.cxx:33 AliMUONFastTracking.cxx:34 AliMUONFastTracking.cxx:35 AliMUONFastTracking.cxx:36 AliMUONFastTracking.cxx:37 AliMUONFastTracking.cxx:38 AliMUONFastTracking.cxx:39 AliMUONFastTracking.cxx:40 AliMUONFastTracking.cxx:41 AliMUONFastTracking.cxx:42 AliMUONFastTracking.cxx:43 AliMUONFastTracking.cxx:44 AliMUONFastTracking.cxx:45 AliMUONFastTracking.cxx:46 AliMUONFastTracking.cxx:47 AliMUONFastTracking.cxx:48 AliMUONFastTracking.cxx:49 AliMUONFastTracking.cxx:50 AliMUONFastTracking.cxx:51 AliMUONFastTracking.cxx:52 AliMUONFastTracking.cxx:53 AliMUONFastTracking.cxx:54 AliMUONFastTracking.cxx:55 AliMUONFastTracking.cxx:56 AliMUONFastTracking.cxx:57 AliMUONFastTracking.cxx:58 AliMUONFastTracking.cxx:59 AliMUONFastTracking.cxx:60 AliMUONFastTracking.cxx:61 AliMUONFastTracking.cxx:62 AliMUONFastTracking.cxx:63 AliMUONFastTracking.cxx:64 AliMUONFastTracking.cxx:65 AliMUONFastTracking.cxx:66 AliMUONFastTracking.cxx:67 AliMUONFastTracking.cxx:68 AliMUONFastTracking.cxx:69 AliMUONFastTracking.cxx:70 AliMUONFastTracking.cxx:71 AliMUONFastTracking.cxx:72 AliMUONFastTracking.cxx:73 AliMUONFastTracking.cxx:74 AliMUONFastTracking.cxx:75 AliMUONFastTracking.cxx:76 AliMUONFastTracking.cxx:77 AliMUONFastTracking.cxx:78 AliMUONFastTracking.cxx:79 AliMUONFastTracking.cxx:80 AliMUONFastTracking.cxx:81 AliMUONFastTracking.cxx:82 AliMUONFastTracking.cxx:83 AliMUONFastTracking.cxx:84 AliMUONFastTracking.cxx:85 AliMUONFastTracking.cxx:86 AliMUONFastTracking.cxx:87 AliMUONFastTracking.cxx:88 AliMUONFastTracking.cxx:89 AliMUONFastTracking.cxx:90 AliMUONFastTracking.cxx:91 AliMUONFastTracking.cxx:92 AliMUONFastTracking.cxx:93 AliMUONFastTracking.cxx:94 AliMUONFastTracking.cxx:95 AliMUONFastTracking.cxx:96 AliMUONFastTracking.cxx:97 AliMUONFastTracking.cxx:98 AliMUONFastTracking.cxx:99 AliMUONFastTracking.cxx:100 AliMUONFastTracking.cxx:101 AliMUONFastTracking.cxx:102 AliMUONFastTracking.cxx:103 AliMUONFastTracking.cxx:104 AliMUONFastTracking.cxx:105 AliMUONFastTracking.cxx:106 AliMUONFastTracking.cxx:107 AliMUONFastTracking.cxx:108 AliMUONFastTracking.cxx:109 AliMUONFastTracking.cxx:110 AliMUONFastTracking.cxx:111 AliMUONFastTracking.cxx:112 AliMUONFastTracking.cxx:113 AliMUONFastTracking.cxx:114 AliMUONFastTracking.cxx:115 AliMUONFastTracking.cxx:116 AliMUONFastTracking.cxx:117 AliMUONFastTracking.cxx:118 AliMUONFastTracking.cxx:119 AliMUONFastTracking.cxx:120 AliMUONFastTracking.cxx:121 AliMUONFastTracking.cxx:122 AliMUONFastTracking.cxx:123 AliMUONFastTracking.cxx:124 AliMUONFastTracking.cxx:125 AliMUONFastTracking.cxx:126 AliMUONFastTracking.cxx:127 AliMUONFastTracking.cxx:128 AliMUONFastTracking.cxx:129 AliMUONFastTracking.cxx:130 AliMUONFastTracking.cxx:131 AliMUONFastTracking.cxx:132 AliMUONFastTracking.cxx:133 AliMUONFastTracking.cxx:134 AliMUONFastTracking.cxx:135 AliMUONFastTracking.cxx:136 AliMUONFastTracking.cxx:137 AliMUONFastTracking.cxx:138 AliMUONFastTracking.cxx:139 AliMUONFastTracking.cxx:140 AliMUONFastTracking.cxx:141 AliMUONFastTracking.cxx:142 AliMUONFastTracking.cxx:143 AliMUONFastTracking.cxx:144 AliMUONFastTracking.cxx:145 AliMUONFastTracking.cxx:146 AliMUONFastTracking.cxx:147 AliMUONFastTracking.cxx:148 AliMUONFastTracking.cxx:149 AliMUONFastTracking.cxx:150 AliMUONFastTracking.cxx:151 AliMUONFastTracking.cxx:152 AliMUONFastTracking.cxx:153 AliMUONFastTracking.cxx:154 AliMUONFastTracking.cxx:155 AliMUONFastTracking.cxx:156 AliMUONFastTracking.cxx:157 AliMUONFastTracking.cxx:158 AliMUONFastTracking.cxx:159 AliMUONFastTracking.cxx:160 AliMUONFastTracking.cxx:161 AliMUONFastTracking.cxx:162 AliMUONFastTracking.cxx:163 AliMUONFastTracking.cxx:164 AliMUONFastTracking.cxx:165 AliMUONFastTracking.cxx:166 AliMUONFastTracking.cxx:167 AliMUONFastTracking.cxx:168 AliMUONFastTracking.cxx:169 AliMUONFastTracking.cxx:170 AliMUONFastTracking.cxx:171 AliMUONFastTracking.cxx:172 AliMUONFastTracking.cxx:173 AliMUONFastTracking.cxx:174 AliMUONFastTracking.cxx:175 AliMUONFastTracking.cxx:176 AliMUONFastTracking.cxx:177 AliMUONFastTracking.cxx:178 AliMUONFastTracking.cxx:179 AliMUONFastTracking.cxx:180 AliMUONFastTracking.cxx:181 AliMUONFastTracking.cxx:182 AliMUONFastTracking.cxx:183 AliMUONFastTracking.cxx:184 AliMUONFastTracking.cxx:185 AliMUONFastTracking.cxx:186 AliMUONFastTracking.cxx:187 AliMUONFastTracking.cxx:188 AliMUONFastTracking.cxx:189 AliMUONFastTracking.cxx:190 AliMUONFastTracking.cxx:191 AliMUONFastTracking.cxx:192 AliMUONFastTracking.cxx:193 AliMUONFastTracking.cxx:194 AliMUONFastTracking.cxx:195 AliMUONFastTracking.cxx:196 AliMUONFastTracking.cxx:197 AliMUONFastTracking.cxx:198 AliMUONFastTracking.cxx:199 AliMUONFastTracking.cxx:200 AliMUONFastTracking.cxx:201 AliMUONFastTracking.cxx:202 AliMUONFastTracking.cxx:203 AliMUONFastTracking.cxx:204 AliMUONFastTracking.cxx:205 AliMUONFastTracking.cxx:206 AliMUONFastTracking.cxx:207 AliMUONFastTracking.cxx:208 AliMUONFastTracking.cxx:209 AliMUONFastTracking.cxx:210 AliMUONFastTracking.cxx:211 AliMUONFastTracking.cxx:212 AliMUONFastTracking.cxx:213 AliMUONFastTracking.cxx:214 AliMUONFastTracking.cxx:215 AliMUONFastTracking.cxx:216 AliMUONFastTracking.cxx:217 AliMUONFastTracking.cxx:218 AliMUONFastTracking.cxx:219 AliMUONFastTracking.cxx:220 AliMUONFastTracking.cxx:221 AliMUONFastTracking.cxx:222 AliMUONFastTracking.cxx:223 AliMUONFastTracking.cxx:224 AliMUONFastTracking.cxx:225 AliMUONFastTracking.cxx:226 AliMUONFastTracking.cxx:227 AliMUONFastTracking.cxx:228 AliMUONFastTracking.cxx:229 AliMUONFastTracking.cxx:230 AliMUONFastTracking.cxx:231 AliMUONFastTracking.cxx:232 AliMUONFastTracking.cxx:233 AliMUONFastTracking.cxx:234 AliMUONFastTracking.cxx:235 AliMUONFastTracking.cxx:236 AliMUONFastTracking.cxx:237 AliMUONFastTracking.cxx:238 AliMUONFastTracking.cxx:239 AliMUONFastTracking.cxx:240 AliMUONFastTracking.cxx:241 AliMUONFastTracking.cxx:242 AliMUONFastTracking.cxx:243 AliMUONFastTracking.cxx:244 AliMUONFastTracking.cxx:245 AliMUONFastTracking.cxx:246 AliMUONFastTracking.cxx:247 AliMUONFastTracking.cxx:248 AliMUONFastTracking.cxx:249 AliMUONFastTracking.cxx:250 AliMUONFastTracking.cxx:251 AliMUONFastTracking.cxx:252 AliMUONFastTracking.cxx:253 AliMUONFastTracking.cxx:254 AliMUONFastTracking.cxx:255 AliMUONFastTracking.cxx:256 AliMUONFastTracking.cxx:257 AliMUONFastTracking.cxx:258 AliMUONFastTracking.cxx:259 AliMUONFastTracking.cxx:260 AliMUONFastTracking.cxx:261 AliMUONFastTracking.cxx:262 AliMUONFastTracking.cxx:263 AliMUONFastTracking.cxx:264 AliMUONFastTracking.cxx:265 AliMUONFastTracking.cxx:266 AliMUONFastTracking.cxx:267 AliMUONFastTracking.cxx:268 AliMUONFastTracking.cxx:269 AliMUONFastTracking.cxx:270 AliMUONFastTracking.cxx:271 AliMUONFastTracking.cxx:272 AliMUONFastTracking.cxx:273 AliMUONFastTracking.cxx:274 AliMUONFastTracking.cxx:275 AliMUONFastTracking.cxx:276 AliMUONFastTracking.cxx:277 AliMUONFastTracking.cxx:278 AliMUONFastTracking.cxx:279 AliMUONFastTracking.cxx:280 AliMUONFastTracking.cxx:281 AliMUONFastTracking.cxx:282 AliMUONFastTracking.cxx:283 AliMUONFastTracking.cxx:284 AliMUONFastTracking.cxx:285 AliMUONFastTracking.cxx:286 AliMUONFastTracking.cxx:287 AliMUONFastTracking.cxx:288 AliMUONFastTracking.cxx:289 AliMUONFastTracking.cxx:290 AliMUONFastTracking.cxx:291 AliMUONFastTracking.cxx:292 AliMUONFastTracking.cxx:293 AliMUONFastTracking.cxx:294 AliMUONFastTracking.cxx:295 AliMUONFastTracking.cxx:296 AliMUONFastTracking.cxx:297 AliMUONFastTracking.cxx:298 AliMUONFastTracking.cxx:299 AliMUONFastTracking.cxx:300 AliMUONFastTracking.cxx:301 AliMUONFastTracking.cxx:302 AliMUONFastTracking.cxx:303 AliMUONFastTracking.cxx:304 AliMUONFastTracking.cxx:305 AliMUONFastTracking.cxx:306 AliMUONFastTracking.cxx:307 AliMUONFastTracking.cxx:308 AliMUONFastTracking.cxx:309 AliMUONFastTracking.cxx:310 AliMUONFastTracking.cxx:311 AliMUONFastTracking.cxx:312 AliMUONFastTracking.cxx:313 AliMUONFastTracking.cxx:314 AliMUONFastTracking.cxx:315 AliMUONFastTracking.cxx:316 AliMUONFastTracking.cxx:317 AliMUONFastTracking.cxx:318 AliMUONFastTracking.cxx:319 AliMUONFastTracking.cxx:320 AliMUONFastTracking.cxx:321 AliMUONFastTracking.cxx:322 AliMUONFastTracking.cxx:323 AliMUONFastTracking.cxx:324 AliMUONFastTracking.cxx:325 AliMUONFastTracking.cxx:326 AliMUONFastTracking.cxx:327 AliMUONFastTracking.cxx:328 AliMUONFastTracking.cxx:329 AliMUONFastTracking.cxx:330 AliMUONFastTracking.cxx:331 AliMUONFastTracking.cxx:332 AliMUONFastTracking.cxx:333 AliMUONFastTracking.cxx:334 AliMUONFastTracking.cxx:335 AliMUONFastTracking.cxx:336 AliMUONFastTracking.cxx:337 AliMUONFastTracking.cxx:338 AliMUONFastTracking.cxx:339 AliMUONFastTracking.cxx:340 AliMUONFastTracking.cxx:341 AliMUONFastTracking.cxx:342 AliMUONFastTracking.cxx:343 AliMUONFastTracking.cxx:344 AliMUONFastTracking.cxx:345 AliMUONFastTracking.cxx:346 AliMUONFastTracking.cxx:347 AliMUONFastTracking.cxx:348 AliMUONFastTracking.cxx:349 AliMUONFastTracking.cxx:350 AliMUONFastTracking.cxx:351 AliMUONFastTracking.cxx:352 AliMUONFastTracking.cxx:353 AliMUONFastTracking.cxx:354 AliMUONFastTracking.cxx:355 AliMUONFastTracking.cxx:356 AliMUONFastTracking.cxx:357 AliMUONFastTracking.cxx:358 AliMUONFastTracking.cxx:359 AliMUONFastTracking.cxx:360 AliMUONFastTracking.cxx:361 AliMUONFastTracking.cxx:362 AliMUONFastTracking.cxx:363 AliMUONFastTracking.cxx:364 AliMUONFastTracking.cxx:365 AliMUONFastTracking.cxx:366 AliMUONFastTracking.cxx:367 AliMUONFastTracking.cxx:368 AliMUONFastTracking.cxx:369 AliMUONFastTracking.cxx:370 AliMUONFastTracking.cxx:371 AliMUONFastTracking.cxx:372 AliMUONFastTracking.cxx:373 AliMUONFastTracking.cxx:374 AliMUONFastTracking.cxx:375 AliMUONFastTracking.cxx:376 AliMUONFastTracking.cxx:377 AliMUONFastTracking.cxx:378 AliMUONFastTracking.cxx:379 AliMUONFastTracking.cxx:380 AliMUONFastTracking.cxx:381 AliMUONFastTracking.cxx:382 AliMUONFastTracking.cxx:383 AliMUONFastTracking.cxx:384 AliMUONFastTracking.cxx:385 AliMUONFastTracking.cxx:386 AliMUONFastTracking.cxx:387 AliMUONFastTracking.cxx:388 AliMUONFastTracking.cxx:389 AliMUONFastTracking.cxx:390 AliMUONFastTracking.cxx:391 AliMUONFastTracking.cxx:392 AliMUONFastTracking.cxx:393 AliMUONFastTracking.cxx:394 AliMUONFastTracking.cxx:395 AliMUONFastTracking.cxx:396 AliMUONFastTracking.cxx:397 AliMUONFastTracking.cxx:398 AliMUONFastTracking.cxx:399 AliMUONFastTracking.cxx:400 AliMUONFastTracking.cxx:401 AliMUONFastTracking.cxx:402 AliMUONFastTracking.cxx:403 AliMUONFastTracking.cxx:404 AliMUONFastTracking.cxx:405 AliMUONFastTracking.cxx:406 AliMUONFastTracking.cxx:407 AliMUONFastTracking.cxx:408 AliMUONFastTracking.cxx:409 AliMUONFastTracking.cxx:410 AliMUONFastTracking.cxx:411 AliMUONFastTracking.cxx:412 AliMUONFastTracking.cxx:413 AliMUONFastTracking.cxx:414 AliMUONFastTracking.cxx:415 AliMUONFastTracking.cxx:416 AliMUONFastTracking.cxx:417 AliMUONFastTracking.cxx:418 AliMUONFastTracking.cxx:419 AliMUONFastTracking.cxx:420 AliMUONFastTracking.cxx:421 AliMUONFastTracking.cxx:422 AliMUONFastTracking.cxx:423 AliMUONFastTracking.cxx:424 AliMUONFastTracking.cxx:425 AliMUONFastTracking.cxx:426 AliMUONFastTracking.cxx:427 AliMUONFastTracking.cxx:428 AliMUONFastTracking.cxx:429 AliMUONFastTracking.cxx:430 AliMUONFastTracking.cxx:431 AliMUONFastTracking.cxx:432 AliMUONFastTracking.cxx:433 AliMUONFastTracking.cxx:434 AliMUONFastTracking.cxx:435 AliMUONFastTracking.cxx:436 AliMUONFastTracking.cxx:437 AliMUONFastTracking.cxx:438 AliMUONFastTracking.cxx:439 AliMUONFastTracking.cxx:440 AliMUONFastTracking.cxx:441 AliMUONFastTracking.cxx:442 AliMUONFastTracking.cxx:443 AliMUONFastTracking.cxx:444 AliMUONFastTracking.cxx:445 AliMUONFastTracking.cxx:446 AliMUONFastTracking.cxx:447 AliMUONFastTracking.cxx:448 AliMUONFastTracking.cxx:449 AliMUONFastTracking.cxx:450 AliMUONFastTracking.cxx:451 AliMUONFastTracking.cxx:452 AliMUONFastTracking.cxx:453 AliMUONFastTracking.cxx:454 AliMUONFastTracking.cxx:455 AliMUONFastTracking.cxx:456 AliMUONFastTracking.cxx:457 AliMUONFastTracking.cxx:458 AliMUONFastTracking.cxx:459 AliMUONFastTracking.cxx:460 AliMUONFastTracking.cxx:461 AliMUONFastTracking.cxx:462 AliMUONFastTracking.cxx:463 AliMUONFastTracking.cxx:464 AliMUONFastTracking.cxx:465 AliMUONFastTracking.cxx:466 AliMUONFastTracking.cxx:467 AliMUONFastTracking.cxx:468 AliMUONFastTracking.cxx:469 AliMUONFastTracking.cxx:470 AliMUONFastTracking.cxx:471 AliMUONFastTracking.cxx:472 AliMUONFastTracking.cxx:473 AliMUONFastTracking.cxx:474 AliMUONFastTracking.cxx:475 AliMUONFastTracking.cxx:476 AliMUONFastTracking.cxx:477 AliMUONFastTracking.cxx:478 AliMUONFastTracking.cxx:479 AliMUONFastTracking.cxx:480 AliMUONFastTracking.cxx:481 AliMUONFastTracking.cxx:482 AliMUONFastTracking.cxx:483 AliMUONFastTracking.cxx:484 AliMUONFastTracking.cxx:485 AliMUONFastTracking.cxx:486 AliMUONFastTracking.cxx:487 AliMUONFastTracking.cxx:488 AliMUONFastTracking.cxx:489 AliMUONFastTracking.cxx:490 AliMUONFastTracking.cxx:491 AliMUONFastTracking.cxx:492 AliMUONFastTracking.cxx:493 AliMUONFastTracking.cxx:494 AliMUONFastTracking.cxx:495 AliMUONFastTracking.cxx:496 AliMUONFastTracking.cxx:497 AliMUONFastTracking.cxx:498 AliMUONFastTracking.cxx:499 AliMUONFastTracking.cxx:500 AliMUONFastTracking.cxx:501 AliMUONFastTracking.cxx:502 AliMUONFastTracking.cxx:503 AliMUONFastTracking.cxx:504 AliMUONFastTracking.cxx:505 AliMUONFastTracking.cxx:506 AliMUONFastTracking.cxx:507 AliMUONFastTracking.cxx:508 AliMUONFastTracking.cxx:509 AliMUONFastTracking.cxx:510 AliMUONFastTracking.cxx:511 AliMUONFastTracking.cxx:512 AliMUONFastTracking.cxx:513 AliMUONFastTracking.cxx:514 AliMUONFastTracking.cxx:515 AliMUONFastTracking.cxx:516 AliMUONFastTracking.cxx:517 AliMUONFastTracking.cxx:518 AliMUONFastTracking.cxx:519 AliMUONFastTracking.cxx:520 AliMUONFastTracking.cxx:521 AliMUONFastTracking.cxx:522 AliMUONFastTracking.cxx:523 AliMUONFastTracking.cxx:524 AliMUONFastTracking.cxx:525 AliMUONFastTracking.cxx:526 AliMUONFastTracking.cxx:527 AliMUONFastTracking.cxx:528 AliMUONFastTracking.cxx:529 AliMUONFastTracking.cxx:530 AliMUONFastTracking.cxx:531 AliMUONFastTracking.cxx:532 AliMUONFastTracking.cxx:533 AliMUONFastTracking.cxx:534 AliMUONFastTracking.cxx:535 AliMUONFastTracking.cxx:536 AliMUONFastTracking.cxx:537 AliMUONFastTracking.cxx:538 AliMUONFastTracking.cxx:539 AliMUONFastTracking.cxx:540 AliMUONFastTracking.cxx:541 AliMUONFastTracking.cxx:542 AliMUONFastTracking.cxx:543 AliMUONFastTracking.cxx:544 AliMUONFastTracking.cxx:545 AliMUONFastTracking.cxx:546 AliMUONFastTracking.cxx:547 AliMUONFastTracking.cxx:548 AliMUONFastTracking.cxx:549 AliMUONFastTracking.cxx:550 AliMUONFastTracking.cxx:551 AliMUONFastTracking.cxx:552 AliMUONFastTracking.cxx:553 AliMUONFastTracking.cxx:554 AliMUONFastTracking.cxx:555 AliMUONFastTracking.cxx:556 AliMUONFastTracking.cxx:557 AliMUONFastTracking.cxx:558 AliMUONFastTracking.cxx:559 AliMUONFastTracking.cxx:560 AliMUONFastTracking.cxx:561 AliMUONFastTracking.cxx:562 AliMUONFastTracking.cxx:563 AliMUONFastTracking.cxx:564 AliMUONFastTracking.cxx:565 AliMUONFastTracking.cxx:566 AliMUONFastTracking.cxx:567 AliMUONFastTracking.cxx:568 AliMUONFastTracking.cxx:569 AliMUONFastTracking.cxx:570 AliMUONFastTracking.cxx:571 AliMUONFastTracking.cxx:572 AliMUONFastTracking.cxx:573 AliMUONFastTracking.cxx:574 AliMUONFastTracking.cxx:575 AliMUONFastTracking.cxx:576 AliMUONFastTracking.cxx:577 AliMUONFastTracking.cxx:578 AliMUONFastTracking.cxx:579 AliMUONFastTracking.cxx:580 AliMUONFastTracking.cxx:581 AliMUONFastTracking.cxx:582 AliMUONFastTracking.cxx:583 AliMUONFastTracking.cxx:584 AliMUONFastTracking.cxx:585 AliMUONFastTracking.cxx:586 AliMUONFastTracking.cxx:587 AliMUONFastTracking.cxx:588 AliMUONFastTracking.cxx:589 AliMUONFastTracking.cxx:590 AliMUONFastTracking.cxx:591 AliMUONFastTracking.cxx:592 AliMUONFastTracking.cxx:593 AliMUONFastTracking.cxx:594 AliMUONFastTracking.cxx:595 AliMUONFastTracking.cxx:596 AliMUONFastTracking.cxx:597 AliMUONFastTracking.cxx:598 AliMUONFastTracking.cxx:599 AliMUONFastTracking.cxx:600 AliMUONFastTracking.cxx:601 AliMUONFastTracking.cxx:602 AliMUONFastTracking.cxx:603 AliMUONFastTracking.cxx:604 AliMUONFastTracking.cxx:605 AliMUONFastTracking.cxx:606 AliMUONFastTracking.cxx:607 AliMUONFastTracking.cxx:608 AliMUONFastTracking.cxx:609 AliMUONFastTracking.cxx:610 AliMUONFastTracking.cxx:611 AliMUONFastTracking.cxx:612 AliMUONFastTracking.cxx:613 AliMUONFastTracking.cxx:614 AliMUONFastTracking.cxx:615 AliMUONFastTracking.cxx:616 AliMUONFastTracking.cxx:617 AliMUONFastTracking.cxx:618 AliMUONFastTracking.cxx:619 AliMUONFastTracking.cxx:620 AliMUONFastTracking.cxx:621 AliMUONFastTracking.cxx:622 AliMUONFastTracking.cxx:623 AliMUONFastTracking.cxx:624 AliMUONFastTracking.cxx:625 AliMUONFastTracking.cxx:626 AliMUONFastTracking.cxx:627 AliMUONFastTracking.cxx:628 AliMUONFastTracking.cxx:629 AliMUONFastTracking.cxx:630 AliMUONFastTracking.cxx:631 AliMUONFastTracking.cxx:632 AliMUONFastTracking.cxx:633 AliMUONFastTracking.cxx:634 AliMUONFastTracking.cxx:635 AliMUONFastTracking.cxx:636 AliMUONFastTracking.cxx:637 AliMUONFastTracking.cxx:638 AliMUONFastTracking.cxx:639 AliMUONFastTracking.cxx:640 AliMUONFastTracking.cxx:641 AliMUONFastTracking.cxx:642 AliMUONFastTracking.cxx:643 AliMUONFastTracking.cxx:644 AliMUONFastTracking.cxx:645 AliMUONFastTracking.cxx:646 AliMUONFastTracking.cxx:647 AliMUONFastTracking.cxx:648 AliMUONFastTracking.cxx:649 AliMUONFastTracking.cxx:650 AliMUONFastTracking.cxx:651 AliMUONFastTracking.cxx:652 AliMUONFastTracking.cxx:653 AliMUONFastTracking.cxx:654 AliMUONFastTracking.cxx:655 AliMUONFastTracking.cxx:656 AliMUONFastTracking.cxx:657 AliMUONFastTracking.cxx:658 AliMUONFastTracking.cxx:659 AliMUONFastTracking.cxx:660 AliMUONFastTracking.cxx:661 AliMUONFastTracking.cxx:662 AliMUONFastTracking.cxx:663 AliMUONFastTracking.cxx:664 AliMUONFastTracking.cxx:665 AliMUONFastTracking.cxx:666 AliMUONFastTracking.cxx:667 AliMUONFastTracking.cxx:668 AliMUONFastTracking.cxx:669 AliMUONFastTracking.cxx:670 AliMUONFastTracking.cxx:671 AliMUONFastTracking.cxx:672 AliMUONFastTracking.cxx:673 AliMUONFastTracking.cxx:674 AliMUONFastTracking.cxx:675 AliMUONFastTracking.cxx:676 AliMUONFastTracking.cxx:677 AliMUONFastTracking.cxx:678 AliMUONFastTracking.cxx:679 AliMUONFastTracking.cxx:680 AliMUONFastTracking.cxx:681 AliMUONFastTracking.cxx:682 AliMUONFastTracking.cxx:683 AliMUONFastTracking.cxx:684 AliMUONFastTracking.cxx:685 AliMUONFastTracking.cxx:686 AliMUONFastTracking.cxx:687 AliMUONFastTracking.cxx:688 AliMUONFastTracking.cxx:689 AliMUONFastTracking.cxx:690 AliMUONFastTracking.cxx:691 AliMUONFastTracking.cxx:692 AliMUONFastTracking.cxx:693 AliMUONFastTracking.cxx:694 AliMUONFastTracking.cxx:695 AliMUONFastTracking.cxx:696 AliMUONFastTracking.cxx:697 AliMUONFastTracking.cxx:698 AliMUONFastTracking.cxx:699 AliMUONFastTracking.cxx:700 AliMUONFastTracking.cxx:701 AliMUONFastTracking.cxx:702 AliMUONFastTracking.cxx:703 AliMUONFastTracking.cxx:704 AliMUONFastTracking.cxx:705 AliMUONFastTracking.cxx:706 AliMUONFastTracking.cxx:707 AliMUONFastTracking.cxx:708 AliMUONFastTracking.cxx:709 AliMUONFastTracking.cxx:710 AliMUONFastTracking.cxx:711 AliMUONFastTracking.cxx:712 AliMUONFastTracking.cxx:713 AliMUONFastTracking.cxx:714 AliMUONFastTracking.cxx:715 AliMUONFastTracking.cxx:716 AliMUONFastTracking.cxx:717 AliMUONFastTracking.cxx:718 AliMUONFastTracking.cxx:719 AliMUONFastTracking.cxx:720 AliMUONFastTracking.cxx:721 AliMUONFastTracking.cxx:722 AliMUONFastTracking.cxx:723 AliMUONFastTracking.cxx:724 AliMUONFastTracking.cxx:725 AliMUONFastTracking.cxx:726 AliMUONFastTracking.cxx:727 AliMUONFastTracking.cxx:728 AliMUONFastTracking.cxx:729 AliMUONFastTracking.cxx:730 AliMUONFastTracking.cxx:731 AliMUONFastTracking.cxx:732 AliMUONFastTracking.cxx:733 AliMUONFastTracking.cxx:734 AliMUONFastTracking.cxx:735 AliMUONFastTracking.cxx:736 AliMUONFastTracking.cxx:737 AliMUONFastTracking.cxx:738 AliMUONFastTracking.cxx:739 AliMUONFastTracking.cxx:740 AliMUONFastTracking.cxx:741 AliMUONFastTracking.cxx:742 AliMUONFastTracking.cxx:743 AliMUONFastTracking.cxx:744 AliMUONFastTracking.cxx:745 AliMUONFastTracking.cxx:746 AliMUONFastTracking.cxx:747 AliMUONFastTracking.cxx:748 AliMUONFastTracking.cxx:749 AliMUONFastTracking.cxx:750 AliMUONFastTracking.cxx:751 AliMUONFastTracking.cxx:752 AliMUONFastTracking.cxx:753 AliMUONFastTracking.cxx:754 AliMUONFastTracking.cxx:755 AliMUONFastTracking.cxx:756 AliMUONFastTracking.cxx:757 AliMUONFastTracking.cxx:758 AliMUONFastTracking.cxx:759 AliMUONFastTracking.cxx:760 AliMUONFastTracking.cxx:761 AliMUONFastTracking.cxx:762 AliMUONFastTracking.cxx:763 AliMUONFastTracking.cxx:764 AliMUONFastTracking.cxx:765 AliMUONFastTracking.cxx:766 AliMUONFastTracking.cxx:767 AliMUONFastTracking.cxx:768 AliMUONFastTracking.cxx:769 AliMUONFastTracking.cxx:770 AliMUONFastTracking.cxx:771 AliMUONFastTracking.cxx:772 AliMUONFastTracking.cxx:773 AliMUONFastTracking.cxx:774 AliMUONFastTracking.cxx:775 AliMUONFastTracking.cxx:776 AliMUONFastTracking.cxx:777 AliMUONFastTracking.cxx:778 AliMUONFastTracking.cxx:779 AliMUONFastTracking.cxx:780 AliMUONFastTracking.cxx:781 AliMUONFastTracking.cxx:782 AliMUONFastTracking.cxx:783 AliMUONFastTracking.cxx:784 AliMUONFastTracking.cxx:785 AliMUONFastTracking.cxx:786 AliMUONFastTracking.cxx:787 AliMUONFastTracking.cxx:788 AliMUONFastTracking.cxx:789 AliMUONFastTracking.cxx:790 AliMUONFastTracking.cxx:791 AliMUONFastTracking.cxx:792 AliMUONFastTracking.cxx:793 AliMUONFastTracking.cxx:794 AliMUONFastTracking.cxx:795 AliMUONFastTracking.cxx:796 AliMUONFastTracking.cxx:797 AliMUONFastTracking.cxx:798 AliMUONFastTracking.cxx:799 AliMUONFastTracking.cxx:800 AliMUONFastTracking.cxx:801 AliMUONFastTracking.cxx:802 AliMUONFastTracking.cxx:803 AliMUONFastTracking.cxx:804 AliMUONFastTracking.cxx:805 AliMUONFastTracking.cxx:806 AliMUONFastTracking.cxx:807 AliMUONFastTracking.cxx:808