Bug in storage manager making possible to delete permanent event fixed
[u/mrichter/AliRoot.git] / MFT / AliMuonForwardTrackPair.h
1 #ifndef AliMuonForwardTrackPair_H
2 #define AliMuonForwardTrackPair_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 //      Description of an ALICE muon forward track pair, i.e. a pair of AliMuonForwardTrack objects
10 //
11 //      Contact author: antonio.uras@cern.ch
12 //
13 //====================================================================================================================================================
14
15 #include "AliLog.h"
16 #include "AliMUONTrackParam.h"
17 #include "TParticle.h"
18 #include "AliMuonForwardTrack.h"
19 #include "TClonesArray.h"
20 #include "TDatabasePDG.h"
21 #include "AliMUONTrackExtrap.h"
22 #include "TLorentzVector.h"
23
24 //====================================================================================================================================================
25
26 class AliMuonForwardTrackPair : public TObject {
27
28 public:
29
30   AliMuonForwardTrackPair();
31   AliMuonForwardTrackPair(AliMuonForwardTrack *track0, AliMuonForwardTrack *track1);
32
33   AliMuonForwardTrackPair(const AliMuonForwardTrackPair&);
34   AliMuonForwardTrackPair &operator=(const AliMuonForwardTrackPair&);
35   virtual void  Clear(const Option_t* /*opt*/) { fMuonForwardTracks->Delete(); delete fMuonForwardTracks; fMuonForwardTracks = 0x0; }
36
37   virtual ~AliMuonForwardTrackPair() { fMuonForwardTracks->Delete(); delete fMuonForwardTracks; }
38
39   AliMuonForwardTrack* GetTrack(Int_t iTrack) { 
40     if (iTrack==0 || iTrack==1) return (AliMuonForwardTrack*) fMuonForwardTracks->At(iTrack); 
41     else return NULL; 
42   }
43
44   Int_t GetCharge() { return GetTrack(0)->GetCharge() + GetTrack(1)->GetCharge(); }
45
46   void SetKinemMC();
47   void SetKinem(Double_t z, Int_t nClusters=-1);
48   Bool_t IsKinemSet() { return fIsKinemSet; }
49
50   void SetPointOfClosestApproach();
51   void GetPointOfClosestApproach(Double_t *xyz) { 
52     xyz[0] = fXPointOfClosestApproach; 
53     xyz[1] = fYPointOfClosestApproach; 
54     xyz[2] = fZPointOfClosestApproach; 
55   }
56
57   Double_t GetWeightedOffset(Double_t x, Double_t y, Double_t z);
58   Double_t GetWeightedOffsetAtPCA();
59   Double_t GetPCAQuality();
60   Double_t GetMassWithoutMFT(Double_t x, Double_t y, Double_t z, Int_t nClusters=-1);
61   Double_t GetMassMC()     { return fKinemMC.M(); }
62   Double_t GetRapidityMC() { return fKinemMC.Rapidity(); }
63   Double_t GetPtMC()       { return fKinemMC.Pt(); }
64   Double_t GetMass()     { return fKinem.M(); }
65   Double_t GetRapidity() { return fKinem.Rapidity(); }
66   Double_t GetPx()       { return fKinem.Px(); }
67   Double_t GetPy()       { return fKinem.Py(); }
68   Double_t GetPz()       { return fKinem.Pz(); }
69   Double_t GetPt()       { return fKinem.Pt(); }
70
71   Bool_t IsResonance();
72
73 protected:
74
75   TClonesArray *fMuonForwardTracks;
76   TLorentzVector fKinemMC, fKinem;
77   Bool_t fIsKinemSet;
78
79   Double_t fXPointOfClosestApproach, fYPointOfClosestApproach, fZPointOfClosestApproach;
80
81   ClassDef(AliMuonForwardTrackPair,1)
82     
83 };
84
85 //====================================================================================================================================================
86
87 #endif
88
89
90