Coding convetion violations fixed.
[u/mrichter/AliRoot.git] / RALICE / AliVertex.h
1 #ifndef ALIVERTEX_H
2 #define ALIVERTEX_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 "TObject.h"
11 #include "TObjArray.h"
12 #include "TPolyLine3D.h"
13  
14 #include "AliJet.h"
15 #include "AliPosition.h"
16  
17 class AliVertex : public AliJet,public AliPosition
18 {
19  public:
20   AliVertex();                             // Default constructor
21   AliVertex(Int_t n);                      // Create a vertex to hold initially n tracks
22   virtual ~AliVertex();                    // Default destructor
23   AliVertex(const AliVertex& v);           // Copy constructor
24   virtual TObject* Clone(const char* name="") const; // Make a deep copy and provide its pointer
25   virtual void SetOwner(Bool_t own=kTRUE); // Set ownership of all added objects
26   virtual void Reset();                    // Reset all values and stored vertex and jet lists
27   void ResetVertices();                    // Reset stored vertex list
28   void AddJet(AliJet& j,Int_t tracks=1);   // Add a jet (and its tracks) to the vertex
29   void AddVertex(AliVertex& v,Int_t connect=1); // Add (and connect) a (sec.) vertex to the current vertex
30   void AddJet(AliJet* j,Int_t tracks=1)    { AddJet(*j,tracks); }
31   void AddVertex(AliVertex* v,Int_t connect=1) { AddVertex(*v,connect); }
32   using AliPosition::Data;
33   virtual void Data(TString f="car",TString u="rad"); // Print the vertex info within frame f and ang units u
34   virtual void List(TString f="car",TString u="rad"); // Vertex prim. track info for frame f and ang units u
35   virtual void ListAll(TString f="car",TString u="rad");// Prim.+sec. vtx full track info for frame f and ang units u
36   Int_t GetNvertices() const;              // Return the number of (secondary) vertices
37   AliVertex* GetVertex(Int_t i) const;     // Provide i-th (secondary) vertex
38   AliVertex* GetIdVertex(Int_t id) const;  // Provide the vertex with user identifier "id"
39   void SetNvmax(Int_t n=2);                // Set the initial max. number of (secondary) vertices
40   void SetVertexCopy(Int_t j);             // (De)activate creation of private copies in fVertices
41   Int_t GetVertexCopy() const;             // Provide VertexCopy flag value      
42   Int_t GetNjets() const;                  // Return the number of jets
43   AliJet* GetJet(Int_t i) const;           // Provide i-th jet
44   AliJet* GetIdJet(Int_t id) const;        // Provide the jet with user identifier "id"
45   void SetNjmax(Int_t n=2);                // Set the initial max. number of jets
46   void SetJetCopy(Int_t j);                // (De)activate creation of private copies in fJets
47   Int_t GetJetCopy() const;                // Provide JetCopy flag value      
48   Int_t IsConnectTrack(AliTrack* t) const; // Indicate if track is created by vertex connection
49   Int_t IsJetTrack(AliTrack* t) const;     // Indicate if track is resulting from jet addition
50   virtual void Draw(Option_t*) { Draw(1,1,0); } // Override TObject::Draw for default event display
51   virtual void Draw(Int_t secs,Int_t cons=1,Int_t jets=0); // Draw the vertex in an event display
52   TObjArray* SortJets(Int_t mode=-1,TObjArray* jets=0); // Sort jets by a certain observable
53
54  protected:
55   void Init();          // Initialisation of pointers etc... 
56   Int_t fNvmax;         // The maximum number of (secondary) vertices
57   Int_t fNvtx;          // The number of (secondary) vertices
58   TObjArray* fVertices; // Array to hold the pointers to the (secondary) vertices
59   TObjArray* fConnects; // Array to hold the pointers to the auto-generated connecting tracks
60   Int_t fVertexCopy;    // Flag to denote creation of private copies in fVertices
61   Int_t fNjmax;         // The maximum number of jets
62   Int_t fNjets;         // The number of jets
63   TObjArray* fJets;     // Array to hold the pointers to the jets
64   TObjArray* fJetTracks;// Array to hold the pointers to tracks introduced by jet addition
65   Int_t fJetCopy;       // Flag to denote creation of private copies in fJets
66   TObjArray* fLines;    //! Array to (temporarily) store the 3D lines for the event display 
67
68  private:
69   void Dumps(AliVertex* v,Int_t n,TString f,TString u); // Recursively print all sec. vertices
70  
71  ClassDef(AliVertex,12) // Creation and investigation of an AliVertex.
72 };
73 #endif