warning fixed
[u/mrichter/AliRoot.git] / RALICE / AliJet.h
1 #ifndef ALIJET_H
2 #define ALIJET_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice                               */
5
6 // $Id$
7  
8 #include <math.h>
9  
10 #include "TNamed.h"
11 #include "TObjArray.h"
12
13 #include "Ali4Vector.h"
14 #include "AliTrack.h"
15  
16 class AliJet : public TNamed,public Ali4Vector
17 {
18  public:
19   AliJet();                                // Default constructor
20   AliJet(Int_t n);                         // Create a Jet to hold initially n Tracks
21   virtual ~AliJet();                       // Default destructor
22   AliJet(const AliJet& j);                 // Copy constructor
23   virtual TObject* Clone(const char* name="") const; // Make a deep copy and provide its pointer
24   virtual void SetOwner(Bool_t own=kTRUE); // Set ownership of all added objects
25   virtual void Reset();                    // Reset all values
26   void AddTrack(AliTrack& t);              // Add a track to the jet
27   void AddTrack(AliTrack* t) { AddTrack(*t); }
28   virtual void Data(TString f="car",TString u="rad"); // Print jet information in frame f and ang units u 
29   virtual void List(TString f="car",TString u="rad"); // Jet prim. track info for frame f and ang units u
30   virtual void ListAll(TString f="car",TString u="rad");// Jet prim. and decay track info for frame f and ang units u
31   Double_t GetEnergy(Float_t scale=-1);    // Provide the total jet energy
32   Double_t GetMomentum(Float_t scale=-1);  // Provide the value of the total jet 3-momentum
33   Ali3Vector Get3Momentum(Float_t scale=-1) const; // Provide the total jet 3-momentum
34   Double_t GetInvmass(Float_t scale=-1);   // Provide the invariant mass  
35   Float_t GetCharge() const;               // Provide the total charge of the jet
36   Int_t GetNtracks(Int_t idmode=0,Int_t chmode=2,Int_t pcode=0); // Provide the number of selected tracks in the jet
37   Int_t GetNtracks(TString name);          // Provide the number of tracks with a certain name
38   AliTrack* GetTrack(Int_t i) const;       // Provide i-th track of the jet (1=first track)
39   AliTrack* GetIdTrack(Int_t id) const;    // Provide the track with user identifier "id"
40   TObjArray* GetTracks(Int_t idmode=0,Int_t chmode=2,Int_t pcode=0); // Provide references to selected tracks
41   TObjArray* GetTracks(TString name);      // Provide references to all tracks with a certain name
42   void RemoveTracks(Int_t idmode=0,Int_t chmode=2,Int_t pcode=0); // Remove selected tracks
43   void RemoveTracks(TString name);         // Remove all tracks with a certain name
44   void ShowTracks(Int_t mode=1);           // Provide on overview of the available tracks
45   Double_t GetPt(Float_t scale=-1);        // Provide trans. momentum w.r.t. z-axis
46   Double_t GetPl(Float_t scale=-1);        // Provide long. momentum w.r.t. z-axis
47   Double_t GetEt(Float_t scale=-1);        // Provide trans. energy w.r.t. z-axis
48   Double_t GetEl(Float_t scale=-1);        // Provide long. energy w.r.t. z-axis
49   Double_t GetMt(Float_t scale=-1);        // Provide trans. mass w.r.t. z-axis
50   Double_t GetRapidity();                  // Provide rapidity value w.r.t. z-axis
51   void SetTrackCopy(Int_t j);              // (De)activate creation of private copies in fTracks
52   Int_t GetTrackCopy() const;              // Provide TrackCopy flag value      
53   void SetId(Int_t id);                    // Set the user defined identifier
54   Int_t GetId() const;                     // Provide the user defined identifier
55   void SetReferencePoint(AliPosition& p);  // Set the jet reference-point
56   AliPosition* GetReferencePoint();        // Provide the jet reference-point
57   TObjArray* SortTracks(Int_t mode=-1,TObjArray* tracks=0); // Sort tracks by a certain observable
58   Double_t GetDistance(AliPosition* p,Float_t scale=-1);    // Provide distance to position p
59   Double_t GetDistance(AliPosition& p,Float_t scale=-1) { return GetDistance(&p,scale); }
60   Double_t GetDistance(AliTrack* t,Float_t scale=-1);       // Provide distance to track t
61   Double_t GetDistance(AliTrack& t,Float_t scale=-1) { return GetDistance(&t,scale); }
62   Double_t GetDistance(AliJet* j,Float_t scale=-1);         // Provide distance to jet j
63   Double_t GetDistance(AliJet& j,Float_t scale=-1) { return GetDistance(&j,scale); }
64   Int_t GetNsignals() const;               // Provide the number of signals associated to the jet tracks
65   void SetEscale(Float_t scale);           // Set the scale of the energy/momentum units of the jet
66   Float_t GetEscale() const;               // Provide the scale of the energy/momentum units of the jet
67
68  protected:
69   void Init();                           // Initialisation of pointers etc...
70   void SetNtinit(Int_t n=2);             // Set the initial max. number of tracks for this Jet
71   void AddTrack(AliTrack& t,Int_t copy); // Internal memberfunction to add a track to the jet
72   void AddTrack(AliTrack* t,Int_t copy) { AddTrack(*t,copy); }
73   Int_t fNtinit;                         // The initial max. number of tracks for this jet
74   Int_t fNtmax;                          // The maximum number of tracks for this Jet
75   Float_t fQ;                            // The total charge of the jet 
76   Int_t fNtrk;                           // The number of tracks in the jet
77   TObjArray* fTracks;                    // Array to hold the pointers to the tracks of the jet
78   Int_t fTrackCopy;                      // Flag to denote creation of private copies in fTracks
79   Int_t fUserId;                         // The user defined identifier
80   AliPositionObj* fRef;                  // The reference-point of the jet
81   TObjArray* fSelected;                  //! Temp. array to hold user selected or ordered objects
82   Float_t fEscale;                       // The scale of the energy/momentum units of the jet
83  
84  ClassDef(AliJet,20) // Creation and investigation of a jet of particle tracks.
85 };
86 #endif