#include "AliMUONTrackParam.h"
#include "AliMUONTrackExtrap.h"
#include "AliAODTrack.h"
#include "AliAODDimuon.h"
#include "TLorentzVector.h"
#include "AliMFTConstants.h"
#include "TDatabasePDG.h"
#include "TMath.h"
#include "AliLog.h"
#include "TObjArray.h"
#include "TDecompLU.h"
#include "AliMFTAnalysisTools.h"
ClassImp(AliMFTAnalysisTools)
Bool_t AliMFTAnalysisTools::ExtrapAODMuonToZ(AliAODTrack *muon, Double_t z, Double_t xy[2]) {
if (!(muon->PzAtDCA()!=0)) return kFALSE;
AliMUONTrackParam *param = new AliMUONTrackParam();
param -> SetNonBendingCoor(muon->XAtDCA());
param -> SetBendingCoor(muon->YAtDCA());
param -> SetZ(AliMFTConstants::fZEvalKinem);
param -> SetNonBendingSlope(muon->PxAtDCA()/muon->PzAtDCA());
param -> SetBendingSlope(muon->PyAtDCA()/muon->PzAtDCA());
param -> SetInverseBendingMomentum( muon->Charge() * (1./muon->PzAtDCA()) / (TMath::Sqrt(1+TMath::Power(muon->PyAtDCA()/muon->PzAtDCA(),2))) );
AliMUONTrackExtrap::ExtrapToZ(param, z);
xy[0] = param->GetNonBendingCoor();
xy[1] = param->GetBendingCoor();
delete param;
return kTRUE;
}
Bool_t AliMFTAnalysisTools::ExtrapAODMuonToZ(AliAODTrack *muon, Double_t z, Double_t xy[2], TLorentzVector &kinem) {
if (!(muon->PzAtDCA()!=0)) return kFALSE;
AliMUONTrackParam *param = new AliMUONTrackParam();
param -> SetNonBendingCoor(muon->XAtDCA());
param -> SetBendingCoor(muon->YAtDCA());
param -> SetZ(AliMFTConstants::fZEvalKinem);
param -> SetNonBendingSlope(muon->PxAtDCA()/muon->PzAtDCA());
param -> SetBendingSlope(muon->PyAtDCA()/muon->PzAtDCA());
param -> SetInverseBendingMomentum( muon->Charge() * (1./muon->PzAtDCA()) / (TMath::Sqrt(1+TMath::Power(muon->PyAtDCA()/muon->PzAtDCA(),2))) );
AliMUONTrackExtrap::ExtrapToZ(param, z);
xy[0] = param->GetNonBendingCoor();
xy[1] = param->GetBendingCoor();
Double_t massMu = TDatabasePDG::Instance()->GetParticle("mu-")->Mass();
Double_t energy = TMath::Sqrt(massMu*massMu + param->Px()*param->Px() + param->Py()*param->Py() + param->Pz()*param->Pz());
kinem.SetPxPyPzE(param->Px(), param->Py(), param->Pz(), energy);
delete param;
return kTRUE;
}
Bool_t AliMFTAnalysisTools::ExtrapAODMuonToZ(AliAODTrack *muon, Double_t z, Double_t xy[2], TLorentzVector &kinem, TMatrixD &cov) {
if (!(muon->PzAtDCA()!=0)) return kFALSE;
AliMUONTrackParam *param = new AliMUONTrackParam();
param -> SetNonBendingCoor(muon->XAtDCA());
param -> SetBendingCoor(muon->YAtDCA());
param -> SetZ(AliMFTConstants::fZEvalKinem);
param -> SetNonBendingSlope(muon->PxAtDCA()/muon->PzAtDCA());
param -> SetBendingSlope(muon->PyAtDCA()/muon->PzAtDCA());
param -> SetInverseBendingMomentum( muon->Charge() * (1./muon->PzAtDCA()) / (TMath::Sqrt(1+TMath::Power(muon->PyAtDCA()/muon->PzAtDCA(),2))) );
param -> SetCovariances(ConvertCovMatrixAOD2MUON(muon));
AliMUONTrackExtrap::ExtrapToZCov(param, z);
xy[0] = param->GetNonBendingCoor();
xy[1] = param->GetBendingCoor();
Double_t massMu = TDatabasePDG::Instance()->GetParticle("mu-")->Mass();
Double_t energy = TMath::Sqrt(massMu*massMu + param->Px()*param->Px() + param->Py()*param->Py() + param->Pz()*param->Pz());
kinem.SetPxPyPzE(param->Px(), param->Py(), param->Pz(), energy);
cov = param->GetCovariances();
delete param;
return kTRUE;
}
Bool_t AliMFTAnalysisTools::ExtrapAODMuonToXY(AliAODTrack *muon, Double_t xy[2], Double_t &zFinal, TLorentzVector &kinem, TMatrixD &cov) {
AliMUONTrackParam *param = new AliMUONTrackParam();
param -> SetNonBendingCoor(muon->XAtDCA());
param -> SetBendingCoor(muon->YAtDCA());
param -> SetZ(AliMFTConstants::fZEvalKinem);
param -> SetNonBendingSlope(muon->PxAtDCA()/muon->PzAtDCA());
param -> SetBendingSlope(muon->PyAtDCA()/muon->PzAtDCA());
param -> SetInverseBendingMomentum( muon->Charge() * (1./muon->PzAtDCA()) / (TMath::Sqrt(1+TMath::Power(muon->PyAtDCA()/muon->PzAtDCA(),2))) );
Double_t step = 1.;
Double_t startPoint = 0.;
Double_t r[3]={0}, z[3]={startPoint-step, startPoint, startPoint+step};
TVector3 **points = new TVector3*[2];
for (Int_t i=0; i<3; i++) {
AliMUONTrackExtrap::ExtrapToZ(param, z[i]);
points[0] = new TVector3(param->GetNonBendingCoor(),param->GetBendingCoor(),z[i]);
points[1] = new TVector3(xy[0],xy[1],z[i]);
r[i] = GetDistanceBetweenPoints(points,2);
for (Int_t iMu=0; iMu<2; iMu++) delete points[iMu];
}
Int_t researchDirection = 0;
if (r[0]>r[1] && r[1]>r[2]) researchDirection = +1;
else if (r[0]<r[1] && r[1]<r[2]) researchDirection = -1;
else if (r[0]<r[1] && r[1]>r[2]) {
printf("E-AliMFTAnalysisTools::ExtrapAODMuonToXY: Point of closest approach cannot be found (no minima)\n");
delete param;
delete points;
return kFALSE;
}
while (TMath::Abs(researchDirection)>0.5) {
if (researchDirection>0) {
z[0] = z[1];
z[1] = z[2];
z[2] = z[1]+researchDirection*step;
}
else {
z[2] = z[1];
z[1] = z[0];
z[0] = z[1]+researchDirection*step;
}
if (TMath::Abs(z[0])>900.) {
printf("E-AliMFTAnalysisTools::ExtrapAODMuonToXY: Point of closest approach cannot be found (no minima in the fiducial region)\n");
delete param;
delete points;
return kFALSE;
}
for (Int_t i=0; i<3; i++) {
AliMUONTrackExtrap::ExtrapToZ(param, z[i]);
points[0] = new TVector3(param->GetNonBendingCoor(),param->GetBendingCoor(),z[i]);
points[1] = new TVector3(xy[0],xy[1],z[i]);
r[i] = GetDistanceBetweenPoints(points,2);
for (Int_t iMu=0; iMu<2; iMu++) delete points[iMu];
}
researchDirection=0;
if (r[0]>r[1] && r[1]>r[2]) researchDirection = +1;
else if (r[0]<r[1] && r[1]<r[2]) researchDirection = -1;
}
step *= 0.5;
while (step>AliMFTConstants::fPrecisionPointOfClosestApproach) {
z[0] = z[1]-step;
z[2] = z[1]+step;
for (Int_t i=0; i<3; i++) {
AliMUONTrackExtrap::ExtrapToZ(param, z[i]);
points[0] = new TVector3(param->GetNonBendingCoor(),param->GetBendingCoor(),z[i]);
points[1] = new TVector3(xy[0],xy[1],z[i]);
r[i] = GetDistanceBetweenPoints(points,2);
for (Int_t iMu=0; iMu<2; iMu++) delete points[iMu];
}
if (r[0]<r[1]) z[1] = z[0];
else if (r[2]<r[1]) z[1] = z[2];
else step *= 0.5;
}
zFinal = z[1];
Double_t xyMuon[2] = {0};
ExtrapAODMuonToZ(muon, zFinal, xyMuon, kinem, cov);
return kTRUE;
}
Bool_t AliMFTAnalysisTools::GetAODMuonOffset(AliAODTrack *muon, Double_t xv, Double_t yv, Double_t zv, Double_t &offset) {
Double_t xy[2] = {0};
ExtrapAODMuonToZ(muon, zv, xy);
offset = TMath::Sqrt((xv-xy[0])*(xv-xy[0]) + (yv-xy[1])*(yv-xy[1]));
return kTRUE;
}
Bool_t AliMFTAnalysisTools::GetAODMuonOffsetZ(AliAODTrack *muon, Double_t xv, Double_t yv, Double_t zv, Double_t &offset) {
Double_t xy[2] = {xv, yv};
Double_t zFinal = 0;
TLorentzVector kinem(0,0,0,0);
TMatrixD cov(5,5);
ExtrapAODMuonToXY(muon, xy, zFinal, kinem, cov);
offset = TMath::Abs(zFinal - zv);
return kTRUE;
}
Bool_t AliMFTAnalysisTools::GetAODMuonWeightedOffset(AliAODTrack *muon, Double_t xv, Double_t yv, Double_t zv, Double_t &offset) {
Double_t xy[2] = {0};
TLorentzVector kinem(0,0,0,0);
TMatrixD cov(5,5);
ExtrapAODMuonToZ(muon, zv, xy, kinem, cov);
TMatrixD covCoordinates(2,2);
covCoordinates(0,0) = cov(0,0);
covCoordinates(0,1) = cov(0,2);
covCoordinates(1,0) = cov(2,0);
covCoordinates(1,1) = cov(2,2);
if (covCoordinates.Determinant() < covCoordinates.GetTol()) return kFALSE;
if (TDecompLU::InvertLU(covCoordinates,covCoordinates.GetTol(),0)) {
TMatrixD covCoordinatesInverse = covCoordinates;
Double_t dX = xy[0] - xv;
Double_t dY = xy[1] - yv;
offset = TMath::Sqrt(0.5*(dX*dX*covCoordinatesInverse(0,0) +
dY*dY*covCoordinatesInverse(1,1) +
2.*dX*dY*covCoordinatesInverse(0,1)));
return kTRUE;
}
return kFALSE;
}
Double_t AliMFTAnalysisTools::GetPseudoProperDecayTimeXY(Double_t xVtx, Double_t yVtx,
Double_t xDimu, Double_t yDimu,
Double_t mDimu, Double_t ptDimu) {
if (ptDimu != 0) {
Double_t decayLengthXY = TMath::Sqrt((xVtx-xDimu)*(xVtx-xDimu)+(yVtx-yDimu)*(yVtx-yDimu));
return (decayLengthXY * mDimu/ptDimu)/TMath::Ccgs()*1E12;
}
return -99999999;
}
Double_t AliMFTAnalysisTools::GetPseudoProperDecayTimeZ(Double_t zVtx,
Double_t zDimu,
Double_t mDimu, Double_t pzDimu) {
if (pzDimu != 0) {
Double_t decayLengthZ = zDimu - zVtx;
return (decayLengthZ * mDimu/pzDimu)/TMath::Ccgs()*1E12;
}
return -99999999;
}
Bool_t AliMFTAnalysisTools::CalculatePCA(AliAODDimuon *dimuon, Double_t *pca, Double_t &pcaQuality, TLorentzVector &kinem) {
TObjArray *muons = new TObjArray();
muons -> Add(dimuon->GetMu(0));
muons -> Add(dimuon->GetMu(1));
Bool_t result = CalculatePCA(muons, pca, pcaQuality, kinem);
delete muons;
return result;
}
Bool_t AliMFTAnalysisTools::CalculatePCA(TObjArray *muons, Double_t *pca, Double_t &pcaQuality, TLorentzVector &kinem) {
const Int_t nMuons = muons->GetEntriesFast();
if (nMuons<2 || nMuons>AliMFTConstants::fNMaxMuonsForPCA) {
printf("W-AliMFTAnalysisTools::CalculatePCA: number of muons not valid\n");
return kFALSE;
}
Double_t fXPointOfClosestApproach=0, fYPointOfClosestApproach=0, fZPointOfClosestApproach=0;
AliAODTrack *muon[AliMFTConstants::fNMaxMuonsForPCA] = {0};
AliMUONTrackParam *param[AliMFTConstants::fNMaxMuonsForPCA] = {0};
for (Int_t iMu=0; iMu<nMuons; iMu++) {
muon[iMu] = (AliAODTrack*) muons->At(iMu);
if (TMath::Abs(muon[iMu]->PzAtDCA())<1.e-6) {
for(Int_t i=0;i<iMu;i++) delete param[i];
return kFALSE;
}
param[iMu] = new AliMUONTrackParam();
param[iMu] -> SetNonBendingCoor(muon[iMu]->XAtDCA());
param[iMu] -> SetBendingCoor(muon[iMu]->YAtDCA());
param[iMu] -> SetZ(AliMFTConstants::fZEvalKinem);
param[iMu] -> SetNonBendingSlope(muon[iMu]->PxAtDCA()/muon[iMu]->PzAtDCA());
param[iMu] -> SetBendingSlope(muon[iMu]->PyAtDCA()/muon[iMu]->PzAtDCA());
param[iMu] -> SetInverseBendingMomentum( muon[iMu]->Charge() * (1./muon[iMu]->PzAtDCA()) / (TMath::Sqrt(1+TMath::Power(muon[iMu]->PyAtDCA()/muon[iMu]->PzAtDCA(),2))) );
}
Double_t step = 1.;
Double_t startPoint = 0.;
Double_t r[3]={0}, z[3]={startPoint-step, startPoint, startPoint+step};
TVector3 **points = new TVector3*[AliMFTConstants::fNMaxMuonsForPCA];
for (Int_t i=0; i<3; i++) {
for (Int_t iMu=0; iMu<nMuons; iMu++) {
AliMUONTrackExtrap::ExtrapToZ(param[iMu], z[i]);
points[iMu] = new TVector3(param[iMu]->GetNonBendingCoor(),param[iMu]->GetBendingCoor(),z[i]);
}
r[i] = GetDistanceBetweenPoints(points,nMuons);
for (Int_t iMu=0; iMu<nMuons; iMu++) delete points[iMu];
}
Int_t researchDirection = 0;
if (r[0]>r[1] && r[1]>r[2]) researchDirection = +1;
else if (r[0]<r[1] && r[1]<r[2]) researchDirection = -1;
else if (r[0]<r[1] && r[1]>r[2]) {
printf("E-AliMFTAnalysisTools::CalculatePCA: Point of closest approach cannot be found for dimuon (no minima)\n");
for (Int_t iMu=0;iMu<nMuons;iMu++) delete param[iMu];
delete points;
return kFALSE;
}
while (TMath::Abs(researchDirection)>0.5) {
if (researchDirection>0) {
z[0] = z[1];
z[1] = z[2];
z[2] = z[1]+researchDirection*step;
}
else {
z[2] = z[1];
z[1] = z[0];
z[0] = z[1]+researchDirection*step;
}
if (TMath::Abs(z[0])>900.) {
printf("E-AliMFTAnalysisTools::CalculatePCA: Point of closest approach cannot be found for dimuon (no minima in the fiducial region)\n");
for (Int_t iMu=0;iMu<nMuons;iMu++) delete param[iMu];
delete points;
return kFALSE;
}
for (Int_t i=0; i<3; i++) {
for (Int_t iMu=0; iMu<nMuons; iMu++) {
AliMUONTrackExtrap::ExtrapToZ(param[iMu], z[i]);
points[iMu] = new TVector3(param[iMu]->GetNonBendingCoor(),param[iMu]->GetBendingCoor(),z[i]);
}
r[i] = GetDistanceBetweenPoints(points,nMuons);
for (Int_t iMu=0;iMu<nMuons;iMu++) delete points[iMu];
}
researchDirection=0;
if (r[0]>r[1] && r[1]>r[2]) researchDirection = +1;
else if (r[0]<r[1] && r[1]<r[2]) researchDirection = -1;
}
Int_t nSteps = 0;
step *= 0.5;
while (step>AliMFTConstants::fPrecisionPointOfClosestApproach) {
z[0] = z[1]-step;
z[2] = z[1]+step;
for (Int_t i=0; i<3; i++) {
for (Int_t iMu=0; iMu<nMuons; iMu++) {
AliMUONTrackExtrap::ExtrapToZ(param[iMu], z[i]);
points[iMu] = new TVector3(param[iMu]->GetNonBendingCoor(),param[iMu]->GetBendingCoor(),z[i]);
}
r[i] = GetDistanceBetweenPoints(points,nMuons);
for (Int_t iMu=0;iMu<nMuons;iMu++) delete points[iMu];
}
if (r[0]<r[1]) z[1] = z[0];
else if (r[2]<r[1]) z[1] = z[2];
else step *= 0.5;
nSteps++;
}
fZPointOfClosestApproach = z[1];
fXPointOfClosestApproach = 0.;
fYPointOfClosestApproach = 0.;
for (Int_t iMu=0; iMu<nMuons; iMu++) {
AliMUONTrackExtrap::ExtrapToZ(param[iMu], fZPointOfClosestApproach);
fXPointOfClosestApproach += param[iMu]->GetNonBendingCoor();
fYPointOfClosestApproach += param[iMu]->GetBendingCoor();
}
fXPointOfClosestApproach /= Double_t(nMuons);
fYPointOfClosestApproach /= Double_t(nMuons);
pca[0] = fXPointOfClosestApproach;
pca[1] = fYPointOfClosestApproach;
pca[2] = fZPointOfClosestApproach;
Double_t pTot[3] = {0};
Double_t ene = 0.;
Double_t massMu = TDatabasePDG::Instance()->GetParticle("mu-")->Mass();
for (Int_t iMu=0; iMu<nMuons; iMu++) {
pTot[0] += param[iMu]->Px();
pTot[1] += param[iMu]->Py();
pTot[2] += param[iMu]->Pz();
ene += TMath::Sqrt(massMu*massMu + param[iMu]->Px()*param[iMu]->Px() + param[iMu]->Py()*param[iMu]->Py() + param[iMu]->Pz()*param[iMu]->Pz());
}
kinem.SetPxPyPzE(pTot[0], pTot[1], pTot[2], ene);
Double_t sum=0.,squareSum=0.;
for (Int_t iMu=0; iMu<nMuons; iMu++) {
Double_t wOffset = 0;
if (!GetAODMuonWeightedOffset(muon[iMu],fXPointOfClosestApproach, fYPointOfClosestApproach, fZPointOfClosestApproach, wOffset)) {
for(Int_t jMu=0;jMu<nMuons;jMu++) delete param[jMu];
delete points;
return kFALSE;
}
Double_t f = TMath::Exp(-0.5 * wOffset);
sum += f;
squareSum += f*f;
}
if (sum > 0.) pcaQuality = (sum-squareSum/sum) / (nMuons-1);
else pcaQuality = 0.;
for(Int_t iMu=0;iMu<nMuons;iMu++) delete param[iMu];
delete points;
return kTRUE;
}
Double_t AliMFTAnalysisTools::GetDistanceBetweenPoints(TVector3 **points, Int_t nPoints) {
if (nPoints>AliMFTConstants::fNMaxMuonsForPCA) {
printf("W-AliMFTAnalysisTools::GetDistanceBetweenPoints: number of points not valid\n");
return 1.e9;
}
if (nPoints<2) return 0.;
if (nPoints<3) return TMath::Sqrt( (points[0]->X()-points[1]->X()) * (points[0]->X()-points[1]->X()) +
(points[0]->Y()-points[1]->Y()) * (points[0]->Y()-points[1]->Y()) );
const Int_t nEdgesMax = ((AliMFTConstants::fNMaxMuonsForPCA) * (AliMFTConstants::fNMaxMuonsForPCA - 1)) / 2;
Int_t startID[nEdgesMax] = {0};
Int_t stopID[nEdgesMax] = {0};
Double_t edgeLength[nEdgesMax] = {0};
Bool_t pointStatus[AliMFTConstants::fNMaxMuonsForPCA] = {0};
Int_t nEdges=0;
for (Int_t i=0; i<nPoints-1; i++) {
for (Int_t j=i+1; j<nPoints; j++) {
edgeLength[nEdges] = TMath::Sqrt( (points[i]->X()-points[j]->X()) * (points[i]->X()-points[j]->X()) +
(points[i]->Y()-points[j]->Y()) * (points[i]->Y()-points[j]->Y()) +
(points[i]->Z()-points[j]->Z()) * (points[i]->Z()-points[j]->Z()) );
stopID[nEdges] = i;
startID[nEdges] = j;
nEdges++;
}
}
Double_t min = 0;
Int_t iMin = 0;
for (Int_t iEdge=0; iEdge<nEdges-1; iEdge++) {
min = edgeLength[iEdge];
iMin = iEdge;
for (Int_t j=iEdge+1; j<nEdges; j++) {
if (edgeLength[j]<min) {
min = edgeLength[j];
iMin = j;
}
}
if (iMin != iEdge) {
Double_t edgeLengthMin = edgeLength[iMin];
Int_t startIDmin = startID[iMin];
Int_t stopIDmin = stopID[iMin];
edgeLength[iMin] = edgeLength[iEdge];
startID[iMin] = startID[iEdge];
stopID[iMin] = stopID[iEdge];
edgeLength[iEdge] = edgeLengthMin;
startID[iEdge] = startIDmin;
stopID[iEdge] = stopIDmin;
}
}
Double_t length = 0.;
for (Int_t i=0; i<nEdges; i++) {
if (!(pointStatus[startID[i]] && pointStatus[stopID[i]])) {
pointStatus[startID[i]] = kTRUE;
pointStatus[stopID[i]] = kTRUE;
length += edgeLength[i];
}
}
return length;
}
void AliMFTAnalysisTools::ConvertCovMatrixMUON2AOD(const TMatrixD& covMUON, Double_t covAOD[21]) {
covAOD[0] = covMUON(0,0);
covAOD[1] = covMUON(1,0);
covAOD[2] = covMUON(1,1);
covAOD[3] = covMUON(2,0);
covAOD[4] = covMUON(2,1);
covAOD[5] = covMUON(2,2);
covAOD[6] = covMUON(3,0);
covAOD[7] = covMUON(3,1);
covAOD[8] = covMUON(3,2);
covAOD[9] = covMUON(3,3);
covAOD[10] = covMUON(4,0);
covAOD[11] = covMUON(4,1);
covAOD[12] = covMUON(4,2);
covAOD[13] = covMUON(4,3);
covAOD[14] = covMUON(4,4);
covAOD[15] = 0;
covAOD[16] = 0;
covAOD[17] = 0;
covAOD[18] = 0;
covAOD[19] = 0;
covAOD[20] = 0;
}
const TMatrixD AliMFTAnalysisTools::ConvertCovMatrixAOD2MUON(AliAODTrack *muon) {
Double_t covAOD[21] = {0};
muon -> GetCovarianceXYZPxPyPz(covAOD);
TMatrixD covMUON(5,5);
covMUON(0,0) = covAOD[0];
covMUON(1,0) = covAOD[1];
covMUON(1,1) = covAOD[2];
covMUON(2,0) = covAOD[3];
covMUON(2,1) = covAOD[4];
covMUON(2,2) = covAOD[5];
covMUON(3,0) = covAOD[6];
covMUON(3,1) = covAOD[7];
covMUON(3,2) = covAOD[8];
covMUON(3,3) = covAOD[9];
covMUON(4,0) = covAOD[10];
covMUON(4,1) = covAOD[11];
covMUON(4,2) = covAOD[12];
covMUON(4,3) = covAOD[13];
covMUON(4,4) = covAOD[14];
return covMUON;
}
Bool_t AliMFTAnalysisTools::IsCorrectMatch(AliAODTrack *muon) {
for (Int_t iPlane=0; iPlane<AliMFTConstants::fNMaxPlanes; iPlane++) if (IsWrongCluster(muon, iPlane)) return kFALSE;
return kTRUE;
}
TString AliMFTAnalysisTools::GetGenerator(Int_t label, AliAODMCHeader* header) {
Int_t partCounter = 0;
TList *genHeaders = header->GetCocktailHeaders();
Int_t nGenHeaders = genHeaders->GetEntries();
for (Int_t i=0; i<nGenHeaders; i++){
AliGenEventHeader *gh = (AliGenEventHeader*) genHeaders->At(i);
TString genName = gh->GetName();
Int_t nPart = gh->NProduced();
if (label>=partCounter && label<(partCounter+nPart)) return genName;
partCounter += nPart;
}
TString empty="";
return empty;
}
void AliMFTAnalysisTools::GetTrackPrimaryGenerator(AliAODTrack *track, AliAODMCHeader *header, TClonesArray *arrayMC, TString &nameGen) {
Int_t label = TMath::Abs(track->GetLabel());
nameGen = GetGenerator(label,header);
while (nameGen.IsWhitespace()) {
AliAODMCParticle *mcPart = (AliAODMCParticle*) arrayMC->At(label);
if (!mcPart) {
printf("AliMFTAnalysisTools::GetTrackPrimaryGenerator - BREAK: No valid AliAODMCParticle at label %i\n",label);
break;
}
Int_t motherLabel = mcPart->GetMother();
if (motherLabel < 0) {
printf("AliMFTAnalysisTools::GetTrackPrimaryGenerator - BREAK: Reached primary particle without valid mother\n");
break;
}
label = motherLabel;
nameGen = GetGenerator(label,header);
}
return;
}
Bool_t AliMFTAnalysisTools::IsTrackInjected(AliAODTrack *track, AliAODMCHeader *header, TClonesArray *arrayMC) {
TString nameGen;
GetTrackPrimaryGenerator(track,header,arrayMC,nameGen);
if (nameGen.IsWhitespace() || nameGen.Contains("ijing")) return kFALSE;
return kTRUE;
}
Bool_t AliMFTAnalysisTools::TranslateMuon(AliAODTrack *muon, Double_t vtxInitial[3], Double_t vtxFinal[3]) {
if (!(muon->PzAtDCA()!=0)) return kFALSE;
AliMUONTrackParam *param = new AliMUONTrackParam();
Double_t deltaVtx[3] = {0};
for (Int_t i=0; i<3; i++) deltaVtx[i] = vtxInitial[i] - vtxFinal[i];
param -> SetNonBendingCoor(muon->XAtDCA());
param -> SetBendingCoor(muon->YAtDCA());
param -> SetZ(AliMFTConstants::fZEvalKinem);
param -> SetNonBendingSlope(muon->PxAtDCA()/muon->PzAtDCA());
param -> SetBendingSlope(muon->PyAtDCA()/muon->PzAtDCA());
param -> SetInverseBendingMomentum( muon->Charge() * (1./muon->PzAtDCA()) / (TMath::Sqrt(1+TMath::Power(muon->PyAtDCA()/muon->PzAtDCA(),2))) );
AliMUONTrackExtrap::ExtrapToZ(param, deltaVtx[2]);
muon->SetXYAtDCA(param->GetNonBendingCoor() - deltaVtx[0], param->GetBendingCoor() - deltaVtx[1]);
muon->SetPxPyPzAtDCA(param->Px(), param->Py(), param->Pz());
delete param;
return kTRUE;
}
Bool_t AliMFTAnalysisTools::TranslateMuonToOrigin(AliAODTrack *muon, Double_t vtx[3]) {
Double_t origin[3] = {0,0,0};
return TranslateMuon(muon, vtx, origin);
}
Bool_t AliMFTAnalysisTools::IsPDGCharm(Int_t pdgCode) {
pdgCode = TMath::Abs(pdgCode/100);
if (pdgCode>9) pdgCode /= 10;
if (pdgCode == 4 ) return kTRUE;
else return kFALSE;
}
Bool_t AliMFTAnalysisTools::IsPDGBeauty(Int_t pdgCode) {
pdgCode = TMath::Abs(pdgCode/100);
if (pdgCode>9) pdgCode /= 10;
if (pdgCode == 5) return kTRUE;
else return kFALSE;
}
Bool_t AliMFTAnalysisTools::IsPDGResonance(Int_t pdgCode) {
Int_t id = pdgCode%100000;
return (!((id-id%10)%110));
}
AliMFTAnalysisTools.cxx:1 AliMFTAnalysisTools.cxx:2 AliMFTAnalysisTools.cxx:3 AliMFTAnalysisTools.cxx:4 AliMFTAnalysisTools.cxx:5 AliMFTAnalysisTools.cxx:6 AliMFTAnalysisTools.cxx:7 AliMFTAnalysisTools.cxx:8 AliMFTAnalysisTools.cxx:9 AliMFTAnalysisTools.cxx:10 AliMFTAnalysisTools.cxx:11 AliMFTAnalysisTools.cxx:12 AliMFTAnalysisTools.cxx:13 AliMFTAnalysisTools.cxx:14 AliMFTAnalysisTools.cxx:15 AliMFTAnalysisTools.cxx:16 AliMFTAnalysisTools.cxx:17 AliMFTAnalysisTools.cxx:18 AliMFTAnalysisTools.cxx:19 AliMFTAnalysisTools.cxx:20 AliMFTAnalysisTools.cxx:21 AliMFTAnalysisTools.cxx:22 AliMFTAnalysisTools.cxx:23 AliMFTAnalysisTools.cxx:24 AliMFTAnalysisTools.cxx:25 AliMFTAnalysisTools.cxx:26 AliMFTAnalysisTools.cxx:27 AliMFTAnalysisTools.cxx:28 AliMFTAnalysisTools.cxx:29 AliMFTAnalysisTools.cxx:30 AliMFTAnalysisTools.cxx:31 AliMFTAnalysisTools.cxx:32 AliMFTAnalysisTools.cxx:33 AliMFTAnalysisTools.cxx:34 AliMFTAnalysisTools.cxx:35 AliMFTAnalysisTools.cxx:36 AliMFTAnalysisTools.cxx:37 AliMFTAnalysisTools.cxx:38 AliMFTAnalysisTools.cxx:39 AliMFTAnalysisTools.cxx:40 AliMFTAnalysisTools.cxx:41 AliMFTAnalysisTools.cxx:42 AliMFTAnalysisTools.cxx:43 AliMFTAnalysisTools.cxx:44 AliMFTAnalysisTools.cxx:45 AliMFTAnalysisTools.cxx:46 AliMFTAnalysisTools.cxx:47 AliMFTAnalysisTools.cxx:48 AliMFTAnalysisTools.cxx:49 AliMFTAnalysisTools.cxx:50 AliMFTAnalysisTools.cxx:51 AliMFTAnalysisTools.cxx:52 AliMFTAnalysisTools.cxx:53 AliMFTAnalysisTools.cxx:54 AliMFTAnalysisTools.cxx:55 AliMFTAnalysisTools.cxx:56 AliMFTAnalysisTools.cxx:57 AliMFTAnalysisTools.cxx:58 AliMFTAnalysisTools.cxx:59 AliMFTAnalysisTools.cxx:60 AliMFTAnalysisTools.cxx:61 AliMFTAnalysisTools.cxx:62 AliMFTAnalysisTools.cxx:63 AliMFTAnalysisTools.cxx:64 AliMFTAnalysisTools.cxx:65 AliMFTAnalysisTools.cxx:66 AliMFTAnalysisTools.cxx:67 AliMFTAnalysisTools.cxx:68 AliMFTAnalysisTools.cxx:69 AliMFTAnalysisTools.cxx:70 AliMFTAnalysisTools.cxx:71 AliMFTAnalysisTools.cxx:72 AliMFTAnalysisTools.cxx:73 AliMFTAnalysisTools.cxx:74 AliMFTAnalysisTools.cxx:75 AliMFTAnalysisTools.cxx:76 AliMFTAnalysisTools.cxx:77 AliMFTAnalysisTools.cxx:78 AliMFTAnalysisTools.cxx:79 AliMFTAnalysisTools.cxx:80 AliMFTAnalysisTools.cxx:81 AliMFTAnalysisTools.cxx:82 AliMFTAnalysisTools.cxx:83 AliMFTAnalysisTools.cxx:84 AliMFTAnalysisTools.cxx:85 AliMFTAnalysisTools.cxx:86 AliMFTAnalysisTools.cxx:87 AliMFTAnalysisTools.cxx:88 AliMFTAnalysisTools.cxx:89 AliMFTAnalysisTools.cxx:90 AliMFTAnalysisTools.cxx:91 AliMFTAnalysisTools.cxx:92 AliMFTAnalysisTools.cxx:93 AliMFTAnalysisTools.cxx:94 AliMFTAnalysisTools.cxx:95 AliMFTAnalysisTools.cxx:96 AliMFTAnalysisTools.cxx:97 AliMFTAnalysisTools.cxx:98 AliMFTAnalysisTools.cxx:99 AliMFTAnalysisTools.cxx:100 AliMFTAnalysisTools.cxx:101 AliMFTAnalysisTools.cxx:102 AliMFTAnalysisTools.cxx:103 AliMFTAnalysisTools.cxx:104 AliMFTAnalysisTools.cxx:105 AliMFTAnalysisTools.cxx:106 AliMFTAnalysisTools.cxx:107 AliMFTAnalysisTools.cxx:108 AliMFTAnalysisTools.cxx:109 AliMFTAnalysisTools.cxx:110 AliMFTAnalysisTools.cxx:111 AliMFTAnalysisTools.cxx:112 AliMFTAnalysisTools.cxx:113 AliMFTAnalysisTools.cxx:114 AliMFTAnalysisTools.cxx:115 AliMFTAnalysisTools.cxx:116 AliMFTAnalysisTools.cxx:117 AliMFTAnalysisTools.cxx:118 AliMFTAnalysisTools.cxx:119 AliMFTAnalysisTools.cxx:120 AliMFTAnalysisTools.cxx:121 AliMFTAnalysisTools.cxx:122 AliMFTAnalysisTools.cxx:123 AliMFTAnalysisTools.cxx:124 AliMFTAnalysisTools.cxx:125 AliMFTAnalysisTools.cxx:126 AliMFTAnalysisTools.cxx:127 AliMFTAnalysisTools.cxx:128 AliMFTAnalysisTools.cxx:129 AliMFTAnalysisTools.cxx:130 AliMFTAnalysisTools.cxx:131 AliMFTAnalysisTools.cxx:132 AliMFTAnalysisTools.cxx:133 AliMFTAnalysisTools.cxx:134 AliMFTAnalysisTools.cxx:135 AliMFTAnalysisTools.cxx:136 AliMFTAnalysisTools.cxx:137 AliMFTAnalysisTools.cxx:138 AliMFTAnalysisTools.cxx:139 AliMFTAnalysisTools.cxx:140 AliMFTAnalysisTools.cxx:141 AliMFTAnalysisTools.cxx:142 AliMFTAnalysisTools.cxx:143 AliMFTAnalysisTools.cxx:144 AliMFTAnalysisTools.cxx:145 AliMFTAnalysisTools.cxx:146 AliMFTAnalysisTools.cxx:147 AliMFTAnalysisTools.cxx:148 AliMFTAnalysisTools.cxx:149 AliMFTAnalysisTools.cxx:150 AliMFTAnalysisTools.cxx:151 AliMFTAnalysisTools.cxx:152 AliMFTAnalysisTools.cxx:153 AliMFTAnalysisTools.cxx:154 AliMFTAnalysisTools.cxx:155 AliMFTAnalysisTools.cxx:156 AliMFTAnalysisTools.cxx:157 AliMFTAnalysisTools.cxx:158 AliMFTAnalysisTools.cxx:159 AliMFTAnalysisTools.cxx:160 AliMFTAnalysisTools.cxx:161 AliMFTAnalysisTools.cxx:162 AliMFTAnalysisTools.cxx:163 AliMFTAnalysisTools.cxx:164 AliMFTAnalysisTools.cxx:165 AliMFTAnalysisTools.cxx:166 AliMFTAnalysisTools.cxx:167 AliMFTAnalysisTools.cxx:168 AliMFTAnalysisTools.cxx:169 AliMFTAnalysisTools.cxx:170 AliMFTAnalysisTools.cxx:171 AliMFTAnalysisTools.cxx:172 AliMFTAnalysisTools.cxx:173 AliMFTAnalysisTools.cxx:174 AliMFTAnalysisTools.cxx:175 AliMFTAnalysisTools.cxx:176 AliMFTAnalysisTools.cxx:177 AliMFTAnalysisTools.cxx:178 AliMFTAnalysisTools.cxx:179 AliMFTAnalysisTools.cxx:180 AliMFTAnalysisTools.cxx:181 AliMFTAnalysisTools.cxx:182 AliMFTAnalysisTools.cxx:183 AliMFTAnalysisTools.cxx:184 AliMFTAnalysisTools.cxx:185 AliMFTAnalysisTools.cxx:186 AliMFTAnalysisTools.cxx:187 AliMFTAnalysisTools.cxx:188 AliMFTAnalysisTools.cxx:189 AliMFTAnalysisTools.cxx:190 AliMFTAnalysisTools.cxx:191 AliMFTAnalysisTools.cxx:192 AliMFTAnalysisTools.cxx:193 AliMFTAnalysisTools.cxx:194 AliMFTAnalysisTools.cxx:195 AliMFTAnalysisTools.cxx:196 AliMFTAnalysisTools.cxx:197 AliMFTAnalysisTools.cxx:198 AliMFTAnalysisTools.cxx:199 AliMFTAnalysisTools.cxx:200 AliMFTAnalysisTools.cxx:201 AliMFTAnalysisTools.cxx:202 AliMFTAnalysisTools.cxx:203 AliMFTAnalysisTools.cxx:204 AliMFTAnalysisTools.cxx:205 AliMFTAnalysisTools.cxx:206 AliMFTAnalysisTools.cxx:207 AliMFTAnalysisTools.cxx:208 AliMFTAnalysisTools.cxx:209 AliMFTAnalysisTools.cxx:210 AliMFTAnalysisTools.cxx:211 AliMFTAnalysisTools.cxx:212 AliMFTAnalysisTools.cxx:213 AliMFTAnalysisTools.cxx:214 AliMFTAnalysisTools.cxx:215 AliMFTAnalysisTools.cxx:216 AliMFTAnalysisTools.cxx:217 AliMFTAnalysisTools.cxx:218 AliMFTAnalysisTools.cxx:219 AliMFTAnalysisTools.cxx:220 AliMFTAnalysisTools.cxx:221 AliMFTAnalysisTools.cxx:222 AliMFTAnalysisTools.cxx:223 AliMFTAnalysisTools.cxx:224 AliMFTAnalysisTools.cxx:225 AliMFTAnalysisTools.cxx:226 AliMFTAnalysisTools.cxx:227 AliMFTAnalysisTools.cxx:228 AliMFTAnalysisTools.cxx:229 AliMFTAnalysisTools.cxx:230 AliMFTAnalysisTools.cxx:231 AliMFTAnalysisTools.cxx:232 AliMFTAnalysisTools.cxx:233 AliMFTAnalysisTools.cxx:234 AliMFTAnalysisTools.cxx:235 AliMFTAnalysisTools.cxx:236 AliMFTAnalysisTools.cxx:237 AliMFTAnalysisTools.cxx:238 AliMFTAnalysisTools.cxx:239 AliMFTAnalysisTools.cxx:240 AliMFTAnalysisTools.cxx:241 AliMFTAnalysisTools.cxx:242 AliMFTAnalysisTools.cxx:243 AliMFTAnalysisTools.cxx:244 AliMFTAnalysisTools.cxx:245 AliMFTAnalysisTools.cxx:246 AliMFTAnalysisTools.cxx:247 AliMFTAnalysisTools.cxx:248 AliMFTAnalysisTools.cxx:249 AliMFTAnalysisTools.cxx:250 AliMFTAnalysisTools.cxx:251 AliMFTAnalysisTools.cxx:252 AliMFTAnalysisTools.cxx:253 AliMFTAnalysisTools.cxx:254 AliMFTAnalysisTools.cxx:255 AliMFTAnalysisTools.cxx:256 AliMFTAnalysisTools.cxx:257 AliMFTAnalysisTools.cxx:258 AliMFTAnalysisTools.cxx:259 AliMFTAnalysisTools.cxx:260 AliMFTAnalysisTools.cxx:261 AliMFTAnalysisTools.cxx:262 AliMFTAnalysisTools.cxx:263 AliMFTAnalysisTools.cxx:264 AliMFTAnalysisTools.cxx:265 AliMFTAnalysisTools.cxx:266 AliMFTAnalysisTools.cxx:267 AliMFTAnalysisTools.cxx:268 AliMFTAnalysisTools.cxx:269 AliMFTAnalysisTools.cxx:270 AliMFTAnalysisTools.cxx:271 AliMFTAnalysisTools.cxx:272 AliMFTAnalysisTools.cxx:273 AliMFTAnalysisTools.cxx:274 AliMFTAnalysisTools.cxx:275 AliMFTAnalysisTools.cxx:276 AliMFTAnalysisTools.cxx:277 AliMFTAnalysisTools.cxx:278 AliMFTAnalysisTools.cxx:279 AliMFTAnalysisTools.cxx:280 AliMFTAnalysisTools.cxx:281 AliMFTAnalysisTools.cxx:282 AliMFTAnalysisTools.cxx:283 AliMFTAnalysisTools.cxx:284 AliMFTAnalysisTools.cxx:285 AliMFTAnalysisTools.cxx:286 AliMFTAnalysisTools.cxx:287 AliMFTAnalysisTools.cxx:288 AliMFTAnalysisTools.cxx:289 AliMFTAnalysisTools.cxx:290 AliMFTAnalysisTools.cxx:291 AliMFTAnalysisTools.cxx:292 AliMFTAnalysisTools.cxx:293 AliMFTAnalysisTools.cxx:294 AliMFTAnalysisTools.cxx:295 AliMFTAnalysisTools.cxx:296 AliMFTAnalysisTools.cxx:297 AliMFTAnalysisTools.cxx:298 AliMFTAnalysisTools.cxx:299 AliMFTAnalysisTools.cxx:300 AliMFTAnalysisTools.cxx:301 AliMFTAnalysisTools.cxx:302 AliMFTAnalysisTools.cxx:303 AliMFTAnalysisTools.cxx:304 AliMFTAnalysisTools.cxx:305 AliMFTAnalysisTools.cxx:306 AliMFTAnalysisTools.cxx:307 AliMFTAnalysisTools.cxx:308 AliMFTAnalysisTools.cxx:309 AliMFTAnalysisTools.cxx:310 AliMFTAnalysisTools.cxx:311 AliMFTAnalysisTools.cxx:312 AliMFTAnalysisTools.cxx:313 AliMFTAnalysisTools.cxx:314 AliMFTAnalysisTools.cxx:315 AliMFTAnalysisTools.cxx:316 AliMFTAnalysisTools.cxx:317 AliMFTAnalysisTools.cxx:318 AliMFTAnalysisTools.cxx:319 AliMFTAnalysisTools.cxx:320 AliMFTAnalysisTools.cxx:321 AliMFTAnalysisTools.cxx:322 AliMFTAnalysisTools.cxx:323 AliMFTAnalysisTools.cxx:324 AliMFTAnalysisTools.cxx:325 AliMFTAnalysisTools.cxx:326 AliMFTAnalysisTools.cxx:327 AliMFTAnalysisTools.cxx:328 AliMFTAnalysisTools.cxx:329 AliMFTAnalysisTools.cxx:330 AliMFTAnalysisTools.cxx:331 AliMFTAnalysisTools.cxx:332 AliMFTAnalysisTools.cxx:333 AliMFTAnalysisTools.cxx:334 AliMFTAnalysisTools.cxx:335 AliMFTAnalysisTools.cxx:336 AliMFTAnalysisTools.cxx:337 AliMFTAnalysisTools.cxx:338 AliMFTAnalysisTools.cxx:339 AliMFTAnalysisTools.cxx:340 AliMFTAnalysisTools.cxx:341 AliMFTAnalysisTools.cxx:342 AliMFTAnalysisTools.cxx:343 AliMFTAnalysisTools.cxx:344 AliMFTAnalysisTools.cxx:345 AliMFTAnalysisTools.cxx:346 AliMFTAnalysisTools.cxx:347 AliMFTAnalysisTools.cxx:348 AliMFTAnalysisTools.cxx:349 AliMFTAnalysisTools.cxx:350 AliMFTAnalysisTools.cxx:351 AliMFTAnalysisTools.cxx:352 AliMFTAnalysisTools.cxx:353 AliMFTAnalysisTools.cxx:354 AliMFTAnalysisTools.cxx:355 AliMFTAnalysisTools.cxx:356 AliMFTAnalysisTools.cxx:357 AliMFTAnalysisTools.cxx:358 AliMFTAnalysisTools.cxx:359 AliMFTAnalysisTools.cxx:360 AliMFTAnalysisTools.cxx:361 AliMFTAnalysisTools.cxx:362 AliMFTAnalysisTools.cxx:363 AliMFTAnalysisTools.cxx:364 AliMFTAnalysisTools.cxx:365 AliMFTAnalysisTools.cxx:366 AliMFTAnalysisTools.cxx:367 AliMFTAnalysisTools.cxx:368 AliMFTAnalysisTools.cxx:369 AliMFTAnalysisTools.cxx:370 AliMFTAnalysisTools.cxx:371 AliMFTAnalysisTools.cxx:372 AliMFTAnalysisTools.cxx:373 AliMFTAnalysisTools.cxx:374 AliMFTAnalysisTools.cxx:375 AliMFTAnalysisTools.cxx:376 AliMFTAnalysisTools.cxx:377 AliMFTAnalysisTools.cxx:378 AliMFTAnalysisTools.cxx:379 AliMFTAnalysisTools.cxx:380 AliMFTAnalysisTools.cxx:381 AliMFTAnalysisTools.cxx:382 AliMFTAnalysisTools.cxx:383 AliMFTAnalysisTools.cxx:384 AliMFTAnalysisTools.cxx:385 AliMFTAnalysisTools.cxx:386 AliMFTAnalysisTools.cxx:387 AliMFTAnalysisTools.cxx:388 AliMFTAnalysisTools.cxx:389 AliMFTAnalysisTools.cxx:390 AliMFTAnalysisTools.cxx:391 AliMFTAnalysisTools.cxx:392 AliMFTAnalysisTools.cxx:393 AliMFTAnalysisTools.cxx:394 AliMFTAnalysisTools.cxx:395 AliMFTAnalysisTools.cxx:396 AliMFTAnalysisTools.cxx:397 AliMFTAnalysisTools.cxx:398 AliMFTAnalysisTools.cxx:399 AliMFTAnalysisTools.cxx:400 AliMFTAnalysisTools.cxx:401 AliMFTAnalysisTools.cxx:402 AliMFTAnalysisTools.cxx:403 AliMFTAnalysisTools.cxx:404 AliMFTAnalysisTools.cxx:405 AliMFTAnalysisTools.cxx:406 AliMFTAnalysisTools.cxx:407 AliMFTAnalysisTools.cxx:408 AliMFTAnalysisTools.cxx:409 AliMFTAnalysisTools.cxx:410 AliMFTAnalysisTools.cxx:411 AliMFTAnalysisTools.cxx:412 AliMFTAnalysisTools.cxx:413 AliMFTAnalysisTools.cxx:414 AliMFTAnalysisTools.cxx:415 AliMFTAnalysisTools.cxx:416 AliMFTAnalysisTools.cxx:417 AliMFTAnalysisTools.cxx:418 AliMFTAnalysisTools.cxx:419 AliMFTAnalysisTools.cxx:420 AliMFTAnalysisTools.cxx:421 AliMFTAnalysisTools.cxx:422 AliMFTAnalysisTools.cxx:423 AliMFTAnalysisTools.cxx:424 AliMFTAnalysisTools.cxx:425 AliMFTAnalysisTools.cxx:426 AliMFTAnalysisTools.cxx:427 AliMFTAnalysisTools.cxx:428 AliMFTAnalysisTools.cxx:429 AliMFTAnalysisTools.cxx:430 AliMFTAnalysisTools.cxx:431 AliMFTAnalysisTools.cxx:432 AliMFTAnalysisTools.cxx:433 AliMFTAnalysisTools.cxx:434 AliMFTAnalysisTools.cxx:435 AliMFTAnalysisTools.cxx:436 AliMFTAnalysisTools.cxx:437 AliMFTAnalysisTools.cxx:438 AliMFTAnalysisTools.cxx:439 AliMFTAnalysisTools.cxx:440 AliMFTAnalysisTools.cxx:441 AliMFTAnalysisTools.cxx:442 AliMFTAnalysisTools.cxx:443 AliMFTAnalysisTools.cxx:444 AliMFTAnalysisTools.cxx:445 AliMFTAnalysisTools.cxx:446 AliMFTAnalysisTools.cxx:447 AliMFTAnalysisTools.cxx:448 AliMFTAnalysisTools.cxx:449 AliMFTAnalysisTools.cxx:450 AliMFTAnalysisTools.cxx:451 AliMFTAnalysisTools.cxx:452 AliMFTAnalysisTools.cxx:453 AliMFTAnalysisTools.cxx:454 AliMFTAnalysisTools.cxx:455 AliMFTAnalysisTools.cxx:456 AliMFTAnalysisTools.cxx:457 AliMFTAnalysisTools.cxx:458 AliMFTAnalysisTools.cxx:459 AliMFTAnalysisTools.cxx:460 AliMFTAnalysisTools.cxx:461 AliMFTAnalysisTools.cxx:462 AliMFTAnalysisTools.cxx:463 AliMFTAnalysisTools.cxx:464 AliMFTAnalysisTools.cxx:465 AliMFTAnalysisTools.cxx:466 AliMFTAnalysisTools.cxx:467 AliMFTAnalysisTools.cxx:468 AliMFTAnalysisTools.cxx:469 AliMFTAnalysisTools.cxx:470 AliMFTAnalysisTools.cxx:471 AliMFTAnalysisTools.cxx:472 AliMFTAnalysisTools.cxx:473 AliMFTAnalysisTools.cxx:474 AliMFTAnalysisTools.cxx:475 AliMFTAnalysisTools.cxx:476 AliMFTAnalysisTools.cxx:477 AliMFTAnalysisTools.cxx:478 AliMFTAnalysisTools.cxx:479 AliMFTAnalysisTools.cxx:480 AliMFTAnalysisTools.cxx:481 AliMFTAnalysisTools.cxx:482 AliMFTAnalysisTools.cxx:483 AliMFTAnalysisTools.cxx:484 AliMFTAnalysisTools.cxx:485 AliMFTAnalysisTools.cxx:486 AliMFTAnalysisTools.cxx:487 AliMFTAnalysisTools.cxx:488 AliMFTAnalysisTools.cxx:489 AliMFTAnalysisTools.cxx:490 AliMFTAnalysisTools.cxx:491 AliMFTAnalysisTools.cxx:492 AliMFTAnalysisTools.cxx:493 AliMFTAnalysisTools.cxx:494 AliMFTAnalysisTools.cxx:495 AliMFTAnalysisTools.cxx:496 AliMFTAnalysisTools.cxx:497 AliMFTAnalysisTools.cxx:498 AliMFTAnalysisTools.cxx:499 AliMFTAnalysisTools.cxx:500 AliMFTAnalysisTools.cxx:501 AliMFTAnalysisTools.cxx:502 AliMFTAnalysisTools.cxx:503 AliMFTAnalysisTools.cxx:504 AliMFTAnalysisTools.cxx:505 AliMFTAnalysisTools.cxx:506 AliMFTAnalysisTools.cxx:507 AliMFTAnalysisTools.cxx:508 AliMFTAnalysisTools.cxx:509 AliMFTAnalysisTools.cxx:510 AliMFTAnalysisTools.cxx:511 AliMFTAnalysisTools.cxx:512 AliMFTAnalysisTools.cxx:513 AliMFTAnalysisTools.cxx:514 AliMFTAnalysisTools.cxx:515 AliMFTAnalysisTools.cxx:516 AliMFTAnalysisTools.cxx:517 AliMFTAnalysisTools.cxx:518 AliMFTAnalysisTools.cxx:519 AliMFTAnalysisTools.cxx:520 AliMFTAnalysisTools.cxx:521 AliMFTAnalysisTools.cxx:522 AliMFTAnalysisTools.cxx:523 AliMFTAnalysisTools.cxx:524 AliMFTAnalysisTools.cxx:525 AliMFTAnalysisTools.cxx:526 AliMFTAnalysisTools.cxx:527 AliMFTAnalysisTools.cxx:528 AliMFTAnalysisTools.cxx:529 AliMFTAnalysisTools.cxx:530 AliMFTAnalysisTools.cxx:531 AliMFTAnalysisTools.cxx:532 AliMFTAnalysisTools.cxx:533 AliMFTAnalysisTools.cxx:534 AliMFTAnalysisTools.cxx:535 AliMFTAnalysisTools.cxx:536 AliMFTAnalysisTools.cxx:537 AliMFTAnalysisTools.cxx:538 AliMFTAnalysisTools.cxx:539 AliMFTAnalysisTools.cxx:540 AliMFTAnalysisTools.cxx:541 AliMFTAnalysisTools.cxx:542 AliMFTAnalysisTools.cxx:543 AliMFTAnalysisTools.cxx:544 AliMFTAnalysisTools.cxx:545 AliMFTAnalysisTools.cxx:546 AliMFTAnalysisTools.cxx:547 AliMFTAnalysisTools.cxx:548 AliMFTAnalysisTools.cxx:549 AliMFTAnalysisTools.cxx:550 AliMFTAnalysisTools.cxx:551 AliMFTAnalysisTools.cxx:552 AliMFTAnalysisTools.cxx:553 AliMFTAnalysisTools.cxx:554 AliMFTAnalysisTools.cxx:555 AliMFTAnalysisTools.cxx:556 AliMFTAnalysisTools.cxx:557 AliMFTAnalysisTools.cxx:558 AliMFTAnalysisTools.cxx:559 AliMFTAnalysisTools.cxx:560 AliMFTAnalysisTools.cxx:561 AliMFTAnalysisTools.cxx:562 AliMFTAnalysisTools.cxx:563 AliMFTAnalysisTools.cxx:564 AliMFTAnalysisTools.cxx:565 AliMFTAnalysisTools.cxx:566 AliMFTAnalysisTools.cxx:567 AliMFTAnalysisTools.cxx:568 AliMFTAnalysisTools.cxx:569 AliMFTAnalysisTools.cxx:570 AliMFTAnalysisTools.cxx:571 AliMFTAnalysisTools.cxx:572 AliMFTAnalysisTools.cxx:573 AliMFTAnalysisTools.cxx:574 AliMFTAnalysisTools.cxx:575 AliMFTAnalysisTools.cxx:576 AliMFTAnalysisTools.cxx:577 AliMFTAnalysisTools.cxx:578 AliMFTAnalysisTools.cxx:579 AliMFTAnalysisTools.cxx:580 AliMFTAnalysisTools.cxx:581 AliMFTAnalysisTools.cxx:582 AliMFTAnalysisTools.cxx:583 AliMFTAnalysisTools.cxx:584 AliMFTAnalysisTools.cxx:585 AliMFTAnalysisTools.cxx:586 AliMFTAnalysisTools.cxx:587 AliMFTAnalysisTools.cxx:588 AliMFTAnalysisTools.cxx:589 AliMFTAnalysisTools.cxx:590 AliMFTAnalysisTools.cxx:591 AliMFTAnalysisTools.cxx:592 AliMFTAnalysisTools.cxx:593 AliMFTAnalysisTools.cxx:594 AliMFTAnalysisTools.cxx:595 AliMFTAnalysisTools.cxx:596 AliMFTAnalysisTools.cxx:597 AliMFTAnalysisTools.cxx:598 AliMFTAnalysisTools.cxx:599 AliMFTAnalysisTools.cxx:600 AliMFTAnalysisTools.cxx:601 AliMFTAnalysisTools.cxx:602 AliMFTAnalysisTools.cxx:603 AliMFTAnalysisTools.cxx:604 AliMFTAnalysisTools.cxx:605 AliMFTAnalysisTools.cxx:606 AliMFTAnalysisTools.cxx:607 AliMFTAnalysisTools.cxx:608 AliMFTAnalysisTools.cxx:609 AliMFTAnalysisTools.cxx:610 AliMFTAnalysisTools.cxx:611 AliMFTAnalysisTools.cxx:612 AliMFTAnalysisTools.cxx:613 AliMFTAnalysisTools.cxx:614 AliMFTAnalysisTools.cxx:615 AliMFTAnalysisTools.cxx:616 AliMFTAnalysisTools.cxx:617 AliMFTAnalysisTools.cxx:618 AliMFTAnalysisTools.cxx:619 AliMFTAnalysisTools.cxx:620 AliMFTAnalysisTools.cxx:621 AliMFTAnalysisTools.cxx:622 AliMFTAnalysisTools.cxx:623 AliMFTAnalysisTools.cxx:624 AliMFTAnalysisTools.cxx:625 AliMFTAnalysisTools.cxx:626 AliMFTAnalysisTools.cxx:627 AliMFTAnalysisTools.cxx:628 AliMFTAnalysisTools.cxx:629 AliMFTAnalysisTools.cxx:630 AliMFTAnalysisTools.cxx:631 AliMFTAnalysisTools.cxx:632 AliMFTAnalysisTools.cxx:633 AliMFTAnalysisTools.cxx:634 AliMFTAnalysisTools.cxx:635 AliMFTAnalysisTools.cxx:636 AliMFTAnalysisTools.cxx:637 AliMFTAnalysisTools.cxx:638 AliMFTAnalysisTools.cxx:639 AliMFTAnalysisTools.cxx:640 AliMFTAnalysisTools.cxx:641 AliMFTAnalysisTools.cxx:642 AliMFTAnalysisTools.cxx:643 AliMFTAnalysisTools.cxx:644 AliMFTAnalysisTools.cxx:645 AliMFTAnalysisTools.cxx:646 AliMFTAnalysisTools.cxx:647 AliMFTAnalysisTools.cxx:648 AliMFTAnalysisTools.cxx:649 AliMFTAnalysisTools.cxx:650 AliMFTAnalysisTools.cxx:651 AliMFTAnalysisTools.cxx:652 AliMFTAnalysisTools.cxx:653 AliMFTAnalysisTools.cxx:654 AliMFTAnalysisTools.cxx:655 AliMFTAnalysisTools.cxx:656 AliMFTAnalysisTools.cxx:657 AliMFTAnalysisTools.cxx:658 AliMFTAnalysisTools.cxx:659 AliMFTAnalysisTools.cxx:660 AliMFTAnalysisTools.cxx:661 AliMFTAnalysisTools.cxx:662 AliMFTAnalysisTools.cxx:663 AliMFTAnalysisTools.cxx:664 AliMFTAnalysisTools.cxx:665 AliMFTAnalysisTools.cxx:666 AliMFTAnalysisTools.cxx:667 AliMFTAnalysisTools.cxx:668 AliMFTAnalysisTools.cxx:669 AliMFTAnalysisTools.cxx:670 AliMFTAnalysisTools.cxx:671 AliMFTAnalysisTools.cxx:672 AliMFTAnalysisTools.cxx:673 AliMFTAnalysisTools.cxx:674 AliMFTAnalysisTools.cxx:675 AliMFTAnalysisTools.cxx:676 AliMFTAnalysisTools.cxx:677 AliMFTAnalysisTools.cxx:678 AliMFTAnalysisTools.cxx:679 AliMFTAnalysisTools.cxx:680 AliMFTAnalysisTools.cxx:681 AliMFTAnalysisTools.cxx:682 AliMFTAnalysisTools.cxx:683 AliMFTAnalysisTools.cxx:684 AliMFTAnalysisTools.cxx:685 AliMFTAnalysisTools.cxx:686 AliMFTAnalysisTools.cxx:687 AliMFTAnalysisTools.cxx:688 AliMFTAnalysisTools.cxx:689 AliMFTAnalysisTools.cxx:690 AliMFTAnalysisTools.cxx:691 AliMFTAnalysisTools.cxx:692 AliMFTAnalysisTools.cxx:693 AliMFTAnalysisTools.cxx:694 AliMFTAnalysisTools.cxx:695 AliMFTAnalysisTools.cxx:696 AliMFTAnalysisTools.cxx:697 AliMFTAnalysisTools.cxx:698 AliMFTAnalysisTools.cxx:699 AliMFTAnalysisTools.cxx:700 AliMFTAnalysisTools.cxx:701 AliMFTAnalysisTools.cxx:702 AliMFTAnalysisTools.cxx:703 AliMFTAnalysisTools.cxx:704 AliMFTAnalysisTools.cxx:705 AliMFTAnalysisTools.cxx:706 AliMFTAnalysisTools.cxx:707 AliMFTAnalysisTools.cxx:708 AliMFTAnalysisTools.cxx:709 AliMFTAnalysisTools.cxx:710 AliMFTAnalysisTools.cxx:711 AliMFTAnalysisTools.cxx:712 AliMFTAnalysisTools.cxx:713 AliMFTAnalysisTools.cxx:714 AliMFTAnalysisTools.cxx:715 AliMFTAnalysisTools.cxx:716 AliMFTAnalysisTools.cxx:717 AliMFTAnalysisTools.cxx:718 AliMFTAnalysisTools.cxx:719 AliMFTAnalysisTools.cxx:720 AliMFTAnalysisTools.cxx:721 AliMFTAnalysisTools.cxx:722 AliMFTAnalysisTools.cxx:723 AliMFTAnalysisTools.cxx:724 AliMFTAnalysisTools.cxx:725 AliMFTAnalysisTools.cxx:726 AliMFTAnalysisTools.cxx:727 AliMFTAnalysisTools.cxx:728 AliMFTAnalysisTools.cxx:729 AliMFTAnalysisTools.cxx:730 AliMFTAnalysisTools.cxx:731 AliMFTAnalysisTools.cxx:732 AliMFTAnalysisTools.cxx:733 AliMFTAnalysisTools.cxx:734 AliMFTAnalysisTools.cxx:735 AliMFTAnalysisTools.cxx:736 AliMFTAnalysisTools.cxx:737 AliMFTAnalysisTools.cxx:738 AliMFTAnalysisTools.cxx:739 AliMFTAnalysisTools.cxx:740 AliMFTAnalysisTools.cxx:741 AliMFTAnalysisTools.cxx:742 AliMFTAnalysisTools.cxx:743 AliMFTAnalysisTools.cxx:744 AliMFTAnalysisTools.cxx:745 AliMFTAnalysisTools.cxx:746 AliMFTAnalysisTools.cxx:747 AliMFTAnalysisTools.cxx:748 AliMFTAnalysisTools.cxx:749 AliMFTAnalysisTools.cxx:750 AliMFTAnalysisTools.cxx:751 AliMFTAnalysisTools.cxx:752 AliMFTAnalysisTools.cxx:753 AliMFTAnalysisTools.cxx:754 AliMFTAnalysisTools.cxx:755 AliMFTAnalysisTools.cxx:756 AliMFTAnalysisTools.cxx:757 AliMFTAnalysisTools.cxx:758 AliMFTAnalysisTools.cxx:759 AliMFTAnalysisTools.cxx:760 AliMFTAnalysisTools.cxx:761 AliMFTAnalysisTools.cxx:762 AliMFTAnalysisTools.cxx:763 AliMFTAnalysisTools.cxx:764 AliMFTAnalysisTools.cxx:765 AliMFTAnalysisTools.cxx:766 AliMFTAnalysisTools.cxx:767 AliMFTAnalysisTools.cxx:768 AliMFTAnalysisTools.cxx:769 AliMFTAnalysisTools.cxx:770 AliMFTAnalysisTools.cxx:771 AliMFTAnalysisTools.cxx:772 AliMFTAnalysisTools.cxx:773 AliMFTAnalysisTools.cxx:774 AliMFTAnalysisTools.cxx:775 AliMFTAnalysisTools.cxx:776 AliMFTAnalysisTools.cxx:777 AliMFTAnalysisTools.cxx:778 AliMFTAnalysisTools.cxx:779 AliMFTAnalysisTools.cxx:780 AliMFTAnalysisTools.cxx:781 AliMFTAnalysisTools.cxx:782 AliMFTAnalysisTools.cxx:783 AliMFTAnalysisTools.cxx:784 AliMFTAnalysisTools.cxx:785 AliMFTAnalysisTools.cxx:786 AliMFTAnalysisTools.cxx:787 AliMFTAnalysisTools.cxx:788 AliMFTAnalysisTools.cxx:789 AliMFTAnalysisTools.cxx:790 AliMFTAnalysisTools.cxx:791 AliMFTAnalysisTools.cxx:792 AliMFTAnalysisTools.cxx:793 AliMFTAnalysisTools.cxx:794 AliMFTAnalysisTools.cxx:795 AliMFTAnalysisTools.cxx:796 AliMFTAnalysisTools.cxx:797 AliMFTAnalysisTools.cxx:798 AliMFTAnalysisTools.cxx:799 AliMFTAnalysisTools.cxx:800 AliMFTAnalysisTools.cxx:801 AliMFTAnalysisTools.cxx:802 AliMFTAnalysisTools.cxx:803 AliMFTAnalysisTools.cxx:804 AliMFTAnalysisTools.cxx:805 AliMFTAnalysisTools.cxx:806 AliMFTAnalysisTools.cxx:807 AliMFTAnalysisTools.cxx:808 AliMFTAnalysisTools.cxx:809 AliMFTAnalysisTools.cxx:810 AliMFTAnalysisTools.cxx:811 AliMFTAnalysisTools.cxx:812 AliMFTAnalysisTools.cxx:813 AliMFTAnalysisTools.cxx:814 AliMFTAnalysisTools.cxx:815 AliMFTAnalysisTools.cxx:816 AliMFTAnalysisTools.cxx:817 AliMFTAnalysisTools.cxx:818 AliMFTAnalysisTools.cxx:819 AliMFTAnalysisTools.cxx:820 AliMFTAnalysisTools.cxx:821 AliMFTAnalysisTools.cxx:822 AliMFTAnalysisTools.cxx:823 AliMFTAnalysisTools.cxx:824 AliMFTAnalysisTools.cxx:825 AliMFTAnalysisTools.cxx:826 AliMFTAnalysisTools.cxx:827 AliMFTAnalysisTools.cxx:828 AliMFTAnalysisTools.cxx:829 AliMFTAnalysisTools.cxx:830 AliMFTAnalysisTools.cxx:831 AliMFTAnalysisTools.cxx:832 AliMFTAnalysisTools.cxx:833 AliMFTAnalysisTools.cxx:834 AliMFTAnalysisTools.cxx:835 AliMFTAnalysisTools.cxx:836 AliMFTAnalysisTools.cxx:837 AliMFTAnalysisTools.cxx:838 AliMFTAnalysisTools.cxx:839 AliMFTAnalysisTools.cxx:840 AliMFTAnalysisTools.cxx:841