1 #ifndef AliMFTAnalysisTools_H
2 #define AliMFTAnalysisTools_H
4 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5 * See cxx source for full Copyright notice */
7 //====================================================================================================================================================
9 // Support class for various common operation on MFT objects
11 // Contact author: antonio.uras@cern.ch
13 //====================================================================================================================================================
16 #include "AliAODTrack.h"
17 #include "AliAODDimuon.h"
18 #include "TLorentzVector.h"
19 #include "AliMFTConstants.h"
20 #include "TDatabasePDG.h"
24 #include "TClonesArray.h"
25 #include "AliAODMCHeader.h"
26 #include "AliGenEventHeader.h"
27 #include "AliAODMCParticle.h"
29 //====================================================================================================================================================
31 class AliMFTAnalysisTools : public TObject {
35 AliMFTAnalysisTools() : TObject() {;}
36 virtual ~AliMFTAnalysisTools() {;}
38 // In principle, the first two methods should be replaced by the third one
39 static Bool_t ExtrapAODMuonToZ(AliAODTrack *muon, Double_t z, Double_t xy[2]);
40 static Bool_t ExtrapAODMuonToZ(AliAODTrack *muon, Double_t z, Double_t xy[2], TLorentzVector &kinem);
41 static Bool_t ExtrapAODMuonToZ(AliAODTrack *muon, Double_t z, Double_t xy[2], TLorentzVector &kinem, TMatrixD &cov);
43 static Bool_t ExtrapAODMuonToXY(AliAODTrack *muon, Double_t xy[2], Double_t &zFinal, TLorentzVector &kinem, TMatrixD &cov);
45 static Bool_t GetAODMuonOffset(AliAODTrack *muon, Double_t xv, Double_t yv, Double_t zv, Double_t &offset);
46 static Bool_t GetAODMuonWeightedOffset(AliAODTrack *muon, Double_t xv, Double_t yv, Double_t zv, Double_t &offset);
48 static Bool_t GetAODMuonOffsetZ(AliAODTrack *muon, Double_t xv, Double_t yv, Double_t zv, Double_t &offset);
50 static Bool_t CalculatePCA(AliAODDimuon *dimuon, Double_t *pca, Double_t &pcaQuality, TLorentzVector &kinem);
51 static Bool_t CalculatePCA(TObjArray *muons, Double_t *pca, Double_t &pcaQuality, TLorentzVector &kinem);
52 static Double_t GetDistanceBetweenPoints(TVector3 **points, Int_t nPoints);
54 static Double_t GetPseudoProperDecayTimeXY(Double_t xVtx, Double_t yVtx, Double_t xDimu, Double_t yDimu, Double_t mDimu, Double_t ptDimu);
55 static Double_t GetPseudoProperDecayTimeZ(Double_t zVtx, Double_t zDimu, Double_t mDimu, Double_t pzDimu);
57 static Bool_t PlaneExists(AliAODTrack *muon, Int_t iPlane) { return muon->GetMFTClusterPattern() & (1<<iPlane); }
59 static Bool_t IsWrongCluster(AliAODTrack *muon, Int_t iPlane) {
60 if (!PlaneExists(muon, iPlane)) return kFALSE;
61 else return !(muon->GetMFTClusterPattern() & (1<<(iPlane+AliMFTConstants::fNMaxPlanes)));
64 static Bool_t IsCorrectMatch(AliAODTrack *muon);
66 static TString GetGenerator(Int_t label, AliAODMCHeader* header);
67 static void GetTrackPrimaryGenerator(AliAODTrack *track, AliAODMCHeader *header, TClonesArray *arrayMC, TString &nameGen);
68 static Bool_t IsTrackInjected(AliAODTrack *track, AliAODMCHeader *header, TClonesArray *arrayMC);
70 static void ConvertCovMatrixMUON2AOD(const TMatrixD& covMUON, Double_t covAOD[21]);
71 static const TMatrixD ConvertCovMatrixAOD2MUON(AliAODTrack *muon);
73 ClassDef(AliMFTAnalysisTools,1)
77 //====================================================================================================================================================