74c0f4c70d82168f05c08e419ee64e61348941c7
[u/mrichter/AliRoot.git] / MFT / AliMFTAnalysisTools.h
1 #ifndef AliMFTAnalysisTools_H
2 #define AliMFTAnalysisTools_H
3
4 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5  * See cxx source for full Copyright notice                               */
6
7 //====================================================================================================================================================
8 //
9 //      Support class for various common operation on MFT objects
10 //
11 //      Contact author: antonio.uras@cern.ch
12 //
13 //====================================================================================================================================================
14
15 #include "TObject.h"
16 #include "AliAODTrack.h"
17 #include "AliAODDimuon.h"
18 #include "TLorentzVector.h"
19 #include "AliMFTConstants.h"
20 #include "TDatabasePDG.h"
21 #include "TMath.h"
22 #include "AliLog.h"
23 #include "TMatrixD.h"
24 #include "TClonesArray.h"
25
26 //====================================================================================================================================================
27
28 class AliMFTAnalysisTools : public TObject {
29
30 public:
31
32   AliMFTAnalysisTools() : TObject() {;}
33   virtual ~AliMFTAnalysisTools() {;}
34   
35   static Bool_t ExtrapAODMuonToZ(AliAODTrack *muon, Double_t z, Double_t xy[2]);
36   static Bool_t ExtrapAODMuonToZ(AliAODTrack *muon, Double_t z, Double_t xy[2], TLorentzVector &kinem);
37   static Bool_t ExtrapAODMuonToZ(AliAODTrack *muon, Double_t z, Double_t xy[2], TLorentzVector &kinem, TMatrixD &cov);
38
39   static Double_t GetAODMuonOffset(AliAODTrack *muon, Double_t xv, Double_t yv, Double_t zv);
40   static Double_t GetAODMuonWeightedOffset(AliAODTrack *muon, Double_t xv, Double_t yv, Double_t zv);
41
42   static Bool_t CalculatePCA(AliAODDimuon *dimuon, Double_t *pca, Double_t &pcaQuality, TLorentzVector &kinem);
43   static Bool_t CalculatePCA(TObjArray *muons, Double_t *pca, Double_t &pcaQuality, TLorentzVector &kinem);
44   static Double_t GetDistanceBetweenPoints(TVector3 **points, Int_t nPoints);
45
46   static Double_t GetPseudoProperDecayTimeXY(Double_t xVtx, Double_t yVtx, Double_t xDimu, Double_t yDimu, Double_t mDimu, Double_t ptDimu);
47   static Double_t GetPseudoProperDecayTimeZ(Double_t zVtx, Double_t zDimu, Double_t mDimu, Double_t pzDimu);
48
49   static Bool_t PlaneExists(AliAODTrack *muon, Int_t iPlane) { return muon->GetMFTClusterPattern() & (1<<iPlane); }
50
51   static Bool_t IsWrongCluster(AliAODTrack *muon, Int_t iPlane) { 
52     if (!PlaneExists(muon, iPlane)) return kFALSE;
53     else return !(muon->GetMFTClusterPattern() & (1<<(iPlane+AliMFTConstants::fNMaxPlanes)));
54   }
55
56   static void ConvertCovMatrixMUON2AOD(const TMatrixD& covMUON, Double_t covAOD[21]);
57   static const TMatrixD ConvertCovMatrixAOD2MUON(AliAODTrack *muon);
58   
59   ClassDef(AliMFTAnalysisTools,1)
60     
61 };
62
63 //====================================================================================================================================================
64
65 #endif